diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:44:05 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:44:05 +0000 |
commit | d318611dd6f23fcfedd50e9b9e24620b102ba96a (patch) | |
tree | 8b9eef82ca40fdd5a8deeabf07572074c236095d /ChangeLog | |
parent | Initial commit. (diff) | |
download | groff-d318611dd6f23fcfedd50e9b9e24620b102ba96a.tar.xz groff-d318611dd6f23fcfedd50e9b9e24620b102ba96a.zip |
Adding upstream version 1.23.0.upstream/1.23.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | ChangeLog | 18665 | ||||
-rw-r--r-- | ChangeLog.115 | 6156 | ||||
-rw-r--r-- | ChangeLog.116 | 1397 | ||||
-rw-r--r-- | ChangeLog.117 | 2199 | ||||
-rw-r--r-- | ChangeLog.118 | 3803 | ||||
-rw-r--r-- | ChangeLog.119 | 5240 | ||||
-rw-r--r-- | ChangeLog.120 | 3053 | ||||
-rw-r--r-- | ChangeLog.121 | 788 | ||||
-rw-r--r-- | ChangeLog.122 | 5331 |
9 files changed, 46632 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..bfcc345 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,18665 @@ +2023-06-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Offer advice to users of PDF who want a table of contents + at the front of the document. + + * doc/groff.texi (ms Document Structure): Move mention of + pdfjam(1) from here... + (ms TOC): ...to here, and identify alternatives, including + gropdf(1)'s `pdfswitchtopage` macro. + + * doc/ms.ms (General structure of an ms document): + (Creating a table of contents): Similar. + + Fixes <https://savannah.gnu.org/bugs/?64278>. Thanks to Michał + Kruszewski for the report. + +2023-06-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + [docs]: Migrate terminology to "scaling unit". + + ...from "scaling indicator". + + Fixes <https://savannah.gnu.org/bugs/?60957>. Thanks to Ingo + Schwarze for the discussion. + +2023-05-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + [docs]: Revise discussion of fonts. + + * doc/groff.texi: + - Rename node/section "Fonts and Symbols" to "Using Fonts". Add + giant new introduction, properly establishing terminology. + - Rename node/section "Changing Fonts" to "Selecting Fonts". + Shift location of `.fn` and `.sty` register documentation. + Rewrite presentation of `ft` and `\f`. Discuss typeface + selection by mounting position and font (or style) name + together; since arguments to these formatter instructions are + always interpreted as mounting positions first, it doesn't + make much sense to me to present them separately, and the new + introduction provides the necessary background. Tighten + example. Document that current and previous font selections + are environment properties. + - Add several concept index entries. + - Do more migration from "symbol" and "glyph" names to "special + character" names. + + * man/groff.7 (Using fonts): Introduce new section, synced with + the renamed node from our Texinfo manual above. + + Fixes <https://savannah.gnu.org/bugs/?62973>. + +2023-05-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + [docs]: Revise "Page Layout" material. + + * doc/groff.texi: + - Recast generally. + - Describe behavior of `pl` in more detail. + - Migrate terminology from "scaling indicator" to "scaling + unit". + - Stop discussing page margins in the context of the `pl` + request. + - Move concept index entries regarding margins from here to + "Traps". + - Move discussion of `pn` request to precede `tl` request. + - Add concept index entries. + - Recast description of `tl` request. Migrate terminology from + "justification" to "alignment". + - Recast description of `lt` request. Describe behavior in more + detail. + - Recast description of `pc` request. + - Add example of `lt` and `tl` usage. Add forward reference to + "Traps", mentioning page header and footer traps. + + Fixes <https://savannah.gnu.org/bugs/?55124>. Thanks to Dave + Kemper for the report. + +2023-05-22 Dave Kemper <saint.snit@gmail.com> + + [docs]: Correct minor punctuation, grammar, and spelling issues. + + Also remove a couple instances of unnecessarily telling the + reader to note something. + + * doc/groff.texi: + * man/groff.7.man: + * man/groff_char.7.man: + * man/groff_diff.7.man: + * man/roff.7.man: + * src/roff/nroff/nroff.1.man: Do it. + + Fixes <https://savannah.gnu.org/bugs/?64230>. [I threw in a few + more fixes. --GBR] + +2023-04-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + [docs]: Attempt to further clarify end-of-sentence detection. + + * doc/groff.texi (Sentences): + * man/roff.7 (Concepts): Do it. + + Fixes <https://savannah.gnu.org/bugs/?64091>. Thanks to Ingo + Schwarze and Dave Kemper for the report. + +2023-04-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + [docs]: Minimally document `tag`, `taga` requests. + + * doc/groff.texi (Postprocessor Access): + * man/groff.7 (Request short reference): Do it. + + Fixes <https://savannah.gnu.org/bugs/?62695>. + +2023-04-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + [docs]: Fix typos. + + * doc/groff.texi (ms basic information): + * doc/ms.ms (Basic information): Do it. + + Fixes <https://savannah.gnu.org/bugs/?64032>. Thanks to an + anonymous reporter. + +2023-03-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Operators in Conditionals): + * man/groff.7.in (Conditional expressions): Clarify how the + output comparison operator is recognized. + + Fixes <https://savannah.gnu.org/bugs/?63812>. Thanks to John + Gardner for the report. + +2023-03-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + Use a better type for symbol hashes. + + * bootstrap.conf: Add "stdint" module to ensure that the + `uintptr_t` type is available. + * src/include/symbol.h: Include <stdint.h> for `uintptr_t`. + (class symbol): + (symbol::hash): Change return type from `unsigned long`, which + causes build failures on 64-bit MinGW, to `uintptr_t`. + (symbol::hash): Use a C++ type cast, not a C-style one. + + Thanks to Bruno Haible for reporting the build failure in the + 64-bit MinGW environment, and for suggesting a remedy. + +2023-03-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [groff]: Revise a test to be more revealing. + + * src/roff/groff/tests/initialization_is_quiet.sh: Stop using + "set -e". Instead use `fail` variable and `wail` function (and + lowercase names for our internal variables) like many of our + other tests. If the "unset" shell built-in fails, skip the + test (prompted by /usr/xpg4/bin/sh on Solaris). Attempt every + groff locale, with and without compatibility mode initially + enabled, instead of stopping at the first failure. Report + standard error and standard output content separately. Use + groff's `-a` flag to prepare the standard output, for + readability. + * PROBLEMS: Document that this test might be skipped rather than + failing on Solaris. (What actually happens depends on which + shell you run it with, and we advise a variety of approaches.) + + Thanks to Bruno Haible for feedback regarding mysterious + failures of this test on GNU/Hurd and NetBSD systems. + +2023-03-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * bootstrap.conf (gnulib_modules): Add "stdbool-c99" per + recommendation from Bruno Haible. + + Fixes build problem on Solaris using Sun compiler. + +2023-03-06 Bruno Haible <bruno@clisp.org> + + * Makefile.am (AR): Remove hardcoded value. Let Automake use the + value from config.status. + + {Fixes build problem on 64-bit AIX. Problem appears to date + back to commit 5fec19d453, 2014-08-15. --GBR} + +2023-03-06 Bruno Haible <bruno@clisp.org> + + * arch/misc/misc.am (shdeps.sed): Rename target from this... + ($(SH_DEPS_SED_SCRIPT)): ...to this, to work better with make(1) + on FreeBSD, NetBSD, and AIX. + +2023-03-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + [build]: Discard now-unneeded Autoconf macro and variables. + + * configure.ac: Stop calling `GROFF_POPPLER`. Stop populating + the Automake conditional `HAVE_PDFTOOLS`. Eliminate chatter + about their availability in the configuration report. + * m4/groff.m4 (GROFF_POPPLER): Delete. + +2023-03-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_URW_FONTS_NOTICE): Adapt wording of notice + to presence and identity of Ghostscript interpreter command. + Clarify that it is gropdf(1) specifically that traverses the + Ghostscript search path reported by its "-h" option. + + Continues <https://savannah.gnu.org/bugs/?63808>. Thanks to + Deri James for the ongoing discussion. + +2023-02-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + [devpdf]: Revise tests. + + * font/devpdf/tests/check-default-foundry.sh.in: Test only the + base 14 fonts of the PDF standard unconditionally. Test the + remainder from the set of 35 commonly distributed only if a + Ghostscript interpreter was detected at configuration time, + because the latter fonts _must_ be embedded in PDF documents. + If they're not present, skip the test rather than failing it. + * font/devpdf/tests/check-urw-foundry.sh.in: Skip test if no URW + fonts detected at configuration time, rather than failing it. + * m4/groff.m4 (GROFF_GROPDF_PROGRAM_NOTICE) + (GROFF_URW_FONTS_NOTICE): Drop warnings of expected test + failures. The tests no longer fail in the anticipated + circumstances. + +2023-02-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + [devpdf]: Generate tests from template files, so we can populate + the test scripts with information determined at configuration. + The default foundry test depends on $GHOSTSCRIPT, and the URW + foundry test on $urwfontsdir. + + * font/devpdf/tests/check-default-foundry.sh: + * font/devpdf/tests/check-urw-foundry.sh: Rename these... + * font/devpdf/tests/check-default-foundry.sh.in: + * font/devpdf/tests/check-urw-foundry.sh.in: ...to these. + + * font/devpdf/devpdf.am (font_devpdf_default_test) + (font_devpdf_urw_test): New variables store names of generated + test scripts. + (font/devpdf/tests/check-default-foundry.sh): + (font/devpdf/tests/check-urw-foundry.sh): New targets produce + test scripts from corresponding .in files. + +2023-02-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + [devpdf]: Trivially refactor. Rename sed-substitutum [Lat.] + from "@GROFF_GHOSTSCRIPT_INTERPRETERS@" to "@GHOSTSCRIPT@" for + clarity and brevity; this is a scalar value containing the + Autoconf-determined name of the Ghostscript interpreter. It is + not the same as the replacement that occurs in contrib/pdfmark. + + * font/devpdf/devpdf.am: + * font/devpdf/util/BuildFoundries.pl: Do it. + +2023-02-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + [build]: Stop scraping output of Ghostscript executable with + "-h" option to attempt to find URW fonts. Fonts that ship with + Ghostscript are regarded as the "default" foundry, not the URW + foundry (though they often ultimately originate with URW fonts). + They are often missing Adobe Font Metric (AFM) files, so it is + impossible for groff to generate font description files for them + at build time. + + * m4/groff.m4 (GROFF_URW_FONTS_CHECK): Drop `AC_REQUIRE` on + `GROFF_AWK_PATH`. Drop awk-based scraping of Ghostscript "-h" + output. Annotate need for sync between this list of + characteristic font file names and the one in BuildFoundries. + + Thanks to Deri James for the ongoing discussions. + +2023-02-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * configure.ac: Drop now-redundant explicit + `GROFF_URW_FONTS_CHECK`. `GROFF_GROPDF_DEPENDENCIES_CHECK` + `AC_REQUIRE`s it as of commit ec001d2a23, 18 February. + +2023-02-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_URW_FONTS_CHECK): When looking for a + characteristic URW font by its file name, also check for + "URWGothic-Book" with no file extension. Avoids false negatives + in URW Type 1 font detection when using Ghostscript 9.53.3. + Thanks to Deri James for suggesting the test procedure that + uncovered this flaw. + +2023-02-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + * Makefile.am (uninstall_groffdirs): Remove "html.mono" and + "html.node" directories corresponding to HTML version of our + Texinfo manual. + * doc/doc.am (uninstall-html): Uninstall HTML version of our + Texinfo manual more reliably. + + Fixes a regression introduced by me in commit c2698aade, 6 April + {my claim "we're only deleting files with this command, not + directories" was not correct}. + +2023-02-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + [doc]: Handle output formats of our Texinfo manual more + consistently. + + * doc/doc.am (install-doc): Add dependency on (Automake + standard) target 'install-dvi'. + (maintainer-clean-local): Remove our Texinfo manual in plain + text format. + (install-data-local): Add dependency on new target + 'install-txt'. + (install-txt): Install our Texinfo manual in plain text format. + (uninstall-local): Add dependency on new target 'uninstall-txt'. + (uninstall-txt): Uninstall our Texinfo manual in plain text + format. + + Thanks to T. Kurt Bond for noticing the discrepancy. + +2023-02-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am (install-pdf-local, install-html-local): Enable + rules to work in out-of-tree builds. + +2023-02-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am (uninstall-hook): Drop dependency on + "uninstall_mom"; this is not the appropriate place to declare + it, and "uninstall_groffdirs" already depends on it in mom's + Automake file. + +2023-02-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tests]: Have more tests report output. + + * src/roff/groff/tests/ab_works.sh: + * src/roff/groff/tests/handle_special_input_code_points.sh: + * src/roff/groff/tests/initialization_is_quiet.sh: + * src/roff/groff/tests/msoquiet_works.sh: + * src/roff/groff/tests/soquiet_works.sh: + * tmac/tests/an-ext_MR-works.sh: + * tmac/tests/an_MR-works.sh: Do it. + +2023-02-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tests]: Prevent failures when $GROFF_ENCODING is set. + + * src/roff/groff/tests/ab_works.sh: + * src/roff/groff/tests/handle_special_input_code_points.sh: + * src/roff/groff/tests/initialization_is_quiet.sh: + * src/roff/groff/tests/msoquiet_works.sh: + * src/roff/groff/tests/soquiet_works.sh: + * tmac/tests/an-ext_MR-works.sh: + * tmac/tests/an_MR-works.sh: + * tmac/tests/an_font-remapping-does-not-affect-titles.sh: Unset + $GROFF_ENCODING before running test because preconv(1) confounds + these tests. + + Thanks to Alexis for reporting this problem. + +2023-02-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Rename test. + + * tmac/tests/s_no-excess-space-around-displays.tmac: Rename... + * tmac/tests/s_no-excess-space-around-displays.sh: ...to this. + * tmac/tmac.am (tmac_TESTS): Update. + +2023-02-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + [gropdf]: Revise tests to run unconditionally, rather than + configuring them away at build time, which can cause a + distribution archive to be incorrectly structured. Update + configuration notices when optional dependencies are absent. + + * font/devpdf/devpdf.am (font_devpdf_TESTS): Remove `USE_GROPDF` + and `HAVE_URW_FONTS` conditionals. + * m4/groff.m4 (GROFF_GROPDF_PROGRAM_NOTICE): + (GROFF_URW_FONTS_NOTICE): Warn reader that a gropdf test failure + is to be expected. + + Fixes <https://savannah.gnu.org/bugs/?63824> (2/2). + +2023-02-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grohtml]: Revise tests to check for requisite programs at test + time and skip if not found, rather than configuring them away at + build time, which can cause a distribution archive to be + incorrectly structured. + + * m4/groff.m4: Annotate requisite program list since we're + violating the DRY principle. + * src/roff/groff/groff.am (groff_TESTS): Populate + unconditionally. + + * src/roff/groff/tests/html_works_with_grn_and_eqn.sh: + * src/roff/groff/tests/smoke-test_html_device.sh: Check for + requisite programs and skip test if any are not found. + + Fixes <https://savannah.gnu.org/bugs/?63824> (1/2). + +2023-02-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man pages]: Define page-local `MR` fallback. + + [man pages]: Provide page-local fallback definition of new `MR` + macro. I didn't think I was going to have to do this, but the + premier site on the web for viewing Linux man pages, Michael + Kerrisk's man7.org, has been pulling snapshots of the pages + themselves without upgrading the underlying macros, and so man + page cross references set with `MR` are getting lost in its + presentations. (I acknowledge: Ingo Schwarze warned me + something like this could happen.) This definition is intended + as a stopgap measure only. I want to revert this after groff + 1.23 is released and has spread to some reasonable degree. + + * contrib/chem/chem.1.man: + * contrib/eqn2graph/eqn2graph.1.man: + * contrib/gdiffmk/gdiffmk.1.man: + * contrib/glilypond/glilypond.1.man: + * contrib/gperl/gperl.1.man: + * contrib/gpinyin/gpinyin.1.man: + * contrib/grap2graph/grap2graph.1.man: + * contrib/hdtbl/groff_hdtbl.7.man: + * contrib/mm/groff_mm.7.man: + * contrib/mm/groff_mmse.7.man: + * contrib/mm/mmroff.1.man: + * contrib/mom/groff_mom.7.man: + * contrib/pdfmark/pdfroff.1.man: + * contrib/pic2graph/pic2graph.1.man: + * contrib/rfc1345/groff_rfc1345.7.man: + * man/groff.7.man: + * man/groff_char.7.man: + * man/groff_diff.7.man: + * man/groff_font.5.man: + * man/groff_out.5.man: + * man/groff_tmac.5.man: + * man/roff.7.man: + * 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/gropdf/gropdf.1.man: + * src/devices/gropdf/pdfmom.1.man: + * src/devices/grops/grops.1.man: + * src/devices/grotty/grotty.1.man: + * src/devices/xditview/gxditview.1.man: + * src/preproc/eqn/eqn.1.man: + * src/preproc/eqn/neqn.1.man: + * src/preproc/grn/grn.1.man: + * src/preproc/pic/pic.1.man: + * src/preproc/preconv/preconv.1.man: + * src/preproc/refer/refer.1.man: + * src/preproc/soelim/soelim.1.man: + * src/preproc/tbl/tbl.1.man: + * src/roff/groff/groff.1.man: + * src/roff/nroff/nroff.1.man: + * src/roff/troff/troff.1.man: + * src/utils/addftinfo/addftinfo.1.man: + * src/utils/afmtodit/afmtodit.1.man: + * src/utils/grog/grog.1.man: + * src/utils/hpftodit/hpftodit.1.man: + * src/utils/indxbib/indxbib.1.man: + * 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/groff_man.7.man.in: + * tmac/groff_me.7.man: + * tmac/groff_ms.7.man: + * tmac/groff_trace.7.man: + * tmac/groff_www.7.man: Do it. + + Fixes <https://savannah.gnu.org/bugs/?63825>. Thanks greatly to + Alexis for identifying an issue with mandoc(1)'s handling of an + earlier iteration of this fallback, and to John Gardner for + identifying a method of detecting mandoc as the renderer at + formatting time. + +2023-02-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tests/an_TS-do-not-keep-tables-when-cR-set.sh: Improve + portability of script by using shell constructs instead of the + nonstandard GNU coreutils 'seq' utility. Resolves test failure + on Solaris 10. + * HACKING: Document this problem. + +2023-02-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_MAKE_DEFINES_RM): Test the make(1) in the + environment variable $MAKE if defined, not a literal "make". + Required on (some) Solaris 10 configurations where traditional + make(1) is not installed but GNU make is installed as "gmake". + +2023-02-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tests/latin2_works.sh: Fix missing backslash in printf. + Solaris printf(1) was sensitive to this error; macOS and GNU + printf were not. Fixes a test failure on Solaris 11. + +2023-02-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/tests/regression_savannah_58153.sh: Improve + portability. Avoid the unpredictability of implementations when + putting backslashes inside a groff-piped printf shell command + inside a here document inside a command substitution by changing + the groff escape character to something meaningless to the shell + and to printf ('@'). Fixes a test failure on Solaris 11. + +2023-02-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devpdf/Foundry.in: Recognize URW foundry replacements for + Helvetica Bold-Oblique and Helvetica Oblique under the file + names "NimbusSans-BoldItalic.t1" and "NimbusSans-Italic.t1", + respectively. + +2023-02-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am (uninstall-pdf): Clean more fastidiously; try to + remove the configured `pdfdocdir` in the event it is empty, but + do not fail if it isn't. (It can be a directory shared with + other groff components; we don't know in what order the + uninstall targets will serialize, but the last one run should + succeed.) + +2023-02-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + [build]: Detangle "pdfroff" and "gropdf" configuration (2/2). + + * m4/groff.m4: Give pdfroff its own Autoconf macros to handle + dependency checking, build objectives, and user notice. + (GROFF_PDFROFF_DEPENDENCIES_CHECK): New macro requires + `GROFF_AWK_PATH` and `GROFF_GHOSTSCRIPT_PATH`, determines + whether pdfroff can be used at build time, and (if not) + constructs part of message to be shown to user explaining why. + (GROFF_PDFROFF_PROGRAM_NOTICE): New macro requires + `GROFF_PDFROFF_DEPENDENCIES_CHECK` and emits message if needed. + (GROFF_GHOSTSCRIPT_AVAILABILITY_NOTICE): Drop mention of impact + on pdfroff since its dedicated notice covers this now. + * configure.ac: Call the new macros at appropriate times. + Produce a new Automake macro, `USE_PDFROFF`, to replace + inapposite use of `USE_GROPDF` in pdfmark.am. + * contrib/pdfmark/pdfmark.am: Use `USE_PDFROFF` instead of + `USE_GROPDF`. + +2023-02-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + [build]: Detangle "pdfroff" and "gropdf" configuration (1/2). + + * m4/groff.m4 (GROFF_GROPDF_DEPENDENCIES_CHECK): Add + `AC_REQUIRE`ment on `GROFF_URW_FONTS_CHECK`. Per discussion + with Deri James, if _either_ Ghostscript or the URW fonts are + avilable, gropdf will be fully functional, consequent to commit + d5515, 22 June. Drop dependency on awk; it is used only at + configuration time (in an Autoconf macro) and since Savannah + #62775 was resolved (19 September), it has not been strictly + necessary. (It is useful for searching more locations for URW + fonts, but several others are searched even if it is absent.) + Stop populating notice text here, instead moving it... + (GROFF_GROPDF_PROGRAM_NOTICE): ...here, since it no longer needs + to be dynamically constructed. + + Continues <https://savannah.gnu.org/bugs/?63808>. Thanks to + Deri James for the continued discussion. + +2023-02-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + [build]: Rename `GROFF_CHECK_GROPDF_PROGRAMS` macro to + `GROFF_GROPDF_DEPENDENCIES_CHECK` to generalize for greater + accuracy in forthcoming change. + + * configure.ac: + * m4/groff.m4: Do it. + +2023-02-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + [gropdf]: Don't run automated tests if 'gropdf' will be + operating with reduced function. If neither Ghostscript nor the + URW fonts are available at configuration time, there is no point + testing for successful build-time population of the font + descriptions for the default and URW foundries. + + * font/devpdf/devpdf.am (font_devpdf_TESTS) [USE_GROPDF]: Run + "check-default-foundry" only if gropdf is fully functional. + (font_devpdf_TESTS) [USE_GROPDF && HAVE_URW_FONTS]: Run + "check-urw-foundry" only if the URW fonts were found. + + Continues <https://savannah.gnu.org/bugs/?63808>. Thanks to + Deri James for the continued discussion. + +2023-02-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + [gropdf]: Rename tests to more accurately characterize their + purpose. + + * font/devpdf/tests/basic-fonts-present.sh: + * font/devpdf/tests/urw-fonts-present.sh: Rename these... + * font/devpdf/tests/check-default-foundry.sh: + * font/devpdf/tests/check-urw-foundry.sh: ...to these. + * font/devpdf/devpdf.am (font_devpdf_TESTS): Reflect rename. + +2023-02-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + [gropdf]: Revise tests to be foundry-focussed. + + * font/devpdf/tests/basic-fonts-present.sh: Stop trying to match + font descriptions in the "devps" directory with ones in + "devpdf"; instead, test whether "BuildFoundries" did its job. + Test for font descriptions corresponding to the full 35 + PostScript Level 2 font repertoire, plus groff's "EURO". + * font/devpdf/tests/urw-fonts-present.sh: Drop stale comment and + rename variable for better parallelism with the other test + above. + + Continues <https://savannah.gnu.org/bugs/?63808>. Thanks to + Deri James for the continued discussion. + +2023-02-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Tweak fix to Savannah #63768. + + * tmac/an.tmac (MR): Ensure `an*url` always has a value, + defaulting to "format 1" (man:page(section)). Resequence the + macOS URL formats to sort the contemporary one before the + others. + * tmac/man.local: Reflect resequencing of integer assignments to + formats. Clarify historicity of annotations. + + Continues <https://savannah.gnu.org/bugs/?63768>. Thanks to + John Gardner for further discussion. + +2023-02-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Port a test to Solaris 11 sed. + + * tmac/tests/s_TC-works-with-percent-in-custom-titles.sh: Put + newlines after opening braces in sed scripts. macOS and GNU sed + tolerate their absence, but this sed does not. + * HACKING: Document this problem. + +2023-02-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/groff.am (groff_TESTS) [!USE_GROHTML]: Don't + test the 'grohtml' driver if we know it won't work. + +2023-02-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/tests/\ + device_control_escapes_express_basic_latin.sh: Use printf(1), + which is often a shell built-in command, more consistently. + Double backslashes intended as literals in the format string, + and single-quote format strings using them. Fixes test failure + seen on Solaris 11 with GNU Bash 4.4 and ksh 93u+ (2012-08-01). + +2023-02-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tests/an_use-input-traps-correctly.sh: Explicitly test + `SM` and `SB` with 'ps' output device. If one set + GROFF_TYPESETTER=utf8 in the test environment, these test cases + would fail. Thanks to John Gardner for the report. + +2023-02-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * configure.ac: Add Automake conditional, `HAVE_GHOSTSCRIPT`, so + that we can populate the list of PDF device font tests + dynamically. Call new macro + `GROFF_GHOSTSCRIPT_AVAILABILITY_NOTICE`. Call + `GROFF_GHOSTSCRIPT_VERSION_NOTICE` after it, but before + `GROFF_URW_FONTS_NOTICE`. + * m4/groff.m4 (GROFF_AWK_NOTICE): New macro produces warning if + no awk could be found. This reduces gropdf functionality, but + so do missing URW fonts, so we report this problem separately. + Report the names under which we sought it, since there's a + configure script option for that. + (GROFF_GHOSTSCRIPT_AVAILABILITY_NOTICE): New macro explains + consequences of missing optional dependency on Ghostscript + program: reduced grohtml functionality, nonfunctional pdfroff. + Report the names under which we sought it, since there's a + configure script option for that. + (GROFF_CHECK_GROPDF_PROGRAMS): Better characterize gropdf's + reduced function, pointing out the ways in which it would be + more useful if the dependencies were met. Also simplify the + computational grammar. + (GROFF_URW_FONTS_NOTICE): Identify 'U' as the foundry name + gropdf uses for the URW fonts. Confirm continuing availability + of most recent URW fonts release; bump date. + * font/devpdf/devpdf.am: Test availability of "basic" (PDF base + 14) fonts (plus groff's "EURO") if either Ghostscript or URW + fonts are available. Test availability of URW fonts (35) only + if Ghostscript _and_ the URW fonts were found at configuration + time. + + Fixes <https://savannah.gnu.org/bugs/?63808>. Thanks to Deri + James for the report and extremely helpful pseudocode. + +2023-02-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_GHOSTSCRIPT_VERSION_CHECK, + GROFF_URW_FONTS_NOTICE): Add macro dependency on + `GROFF_GHOSTSCRIPT_PATH`, which should have been there already. + (GROFF_GROHTML_PROGRAM_NOTICE): Add macro dependency on + `GROFF_CHECK_GROHTML_PROGRAMS`, which should have been there + already. + + (GROFF_CHECK_GROHTML_PROGRAMS, GROFF_PNMTOOLS_CAN_BE_QUIET): + Move `AC_REQUIRE` expansions to precede shell variable + assignments (after checking that the required macros don't + clobber the assignments we're making). + +2023-02-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devpdf/tests/basic-fonts-present.sh: Revise test again, + per feedback from Deri James. Even without Ghostscript or URW + fonts available, gropdf can generate valid PDF documents; it + simply can't embed fonts in general (without further + arrangements made on the host system), which means it is + restricted to the PDF base 14 fonts. That's enough for many + purposes, including generating our compiled man pages document + {with minor degradations to the typeface lists in gropdf(1) and + grops(1)}. Drop the 'gs' command check, which also didn't check + for the name of the Ghostscript interpreter determined by the + "configure" script. Replace dynamically generated font list + with a static one (the base 14 fonts plus groff's EURO). + +2023-02-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devpdf/tests/basic-fonts-present.sh: Revise test. + Improve explanation of why we're looking for the gs(1) command + in a font availability test. Prefix diagnostic output with name + of test script. Perform a search for the 'ps' device font + descriptions that will work in more build scenarios (i.e., don't + assume an out-of-tree build taking place in an immediate + subdirectory of the source). Distinguish failure to find the + font descriptions from a failure to locate the 'gs' command, + skipping the test in both scenarios. Reduce noise in output. + * m4/groff.m4 (GROFF_CHECK_GROPDF_PROGRAMS): Revise warning + issued when awk and Ghostscript are unavailable; gropdf will not + be completely inoperative. Characterize its reduced function. + + Thanks to Deri James in <https://lists.gnu.org/archive/html/\ + groff-commit/2023-02/msg00089.html> for prompting me to take a + another look at this. + +2023-02-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tests/latin2_works.sh: + * tmac/tests/latin5_works.sh: + * tmac/tests/latin9_works.sh: Port to work around macOS's + apparently POSIX non-conforming 'od' command. Use single-byte + octal output format instead of "character", and update test + expectations accordingly. Apparently gratuitously, macOS also + puts more spaces after the octal address field when using this + output format. + * HACKING: Document, and elaborate upon, this problem. + +2023-02-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Port a test to work with macOS sed. + + * tmac/tests/doc_heading-font-remapping-works.sh: Put semicolons + between commands and closing braces in sed script. Put each of + multiple closing braces on a separate input line, because macOS + doesn't accept them otherwise. Resolves test failure observed + on macOS. + * HACKING: Document the closing brace sequence problem. + +2023-02-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Port a test to work with macOS sed. + + * tmac/tests/an_TS-adds-no-vertical-space.sh: Put semicolons + between commands and closing braces in sed script. Separate + command stream into multiple '-e' expressions, breaking them + after branch and label commands. Resolves test failure observed + on macOS. + * HACKING: Document the above problems. + +2023-02-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/tests/\ + some_escapes_accept_newline_delimiters.sh: Weaken regexes in two + test cases to accommodate excessive output from macOS's 'od' + command. Resolves test failure seen on macOS. + * HACKING: Add section "Writing Tests" and document the above + since this is the second time I've cracked my shin on this. + +2023-02-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devpdf/tests/basic-fonts-present.sh: Skip test if 'gs' + command not available. The test is to ensure that gropdf will + produce sound documents using the base fonts from PostScript, + but since gropdf requires Ghostscript to do this (as noted in + our "./configure" messages), it makes no sense to validate font + availability if the program is absent. Resolves test failure + seen on macOS with minimal dependencies installed. + +2023-02-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Manipulating Filling and Adjustment): Say more + about the consequences of a break. + + Fixes <https://savannah.gnu.org/bugs/?63777>. Thanks to Dave + Kemper for the report. + +2023-02-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + [docs]: Re-re-christen 'ESCAPE_AMPERSAND' ('\&'). Now call it a + {non-transparent} "dummy character". Also rechristen + 'ESCAPE_RIGHT_PARENTHESIS', ('\)') as the "transparent dummy + character"; it has no impact on sentence-ending detection. + + * doc/groff.texi: + * doc/meref.me.in: + * man/groff.7.man: + * man/groff_diff.7.man: + * man/roff.7.man: + * src/preproc/refer/refer.1.man: + * tmac/groff_man.7.man.in: Do it. + + Fixes <https://savannah.gnu.org/bugs/?62816>. Thanks to Dave + Kemper for the report and to the groff mailing list for the + vigorous discussion. I don't expect my solution to please + everyone. + +2023-02-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac: Add internal register `an*MR-URL-format` to + select from a few known formats of man page hyperlink. There + are three known on macOS, and one used everywhere else. + * tmac/man.local: Document this feature so macOS users can enjoy + the OSC 8 hyperlink feature if their terminal application + supports it. + + I hope that this feature will be a temporary measure while macOS + implements support for the man page URL format used everywhere + else in the world. + + Fixes <https://savannah.gnu.org/bugs/?63768>. Thanks to John + Gardner for the report, research, consultation, and testing. + +2023-02-11 Deri James <deri@chuzzlewit.myzen.co.uk> + + [BuildFoundries]: Fails if neither ghostcript nor URW fonts + are installed. + + * font/devpdf/util/BuildFoundries.pl: When the change to hold + paths in an array, rather than a delimited string (see commit + 4ae4aeb6555f4f16c28fcb03eb1f56577826054c), the FindGSpath + subroutine should return a pointer to an empty array when the + call to ghostscript fails, rather than return an empty string, + as was done previously. + + See <https://lists.gnu.org/archive/html/groff/2023-02/\ + msg00042.html>; thanks to Bruno Haible for the report. + +2023-02-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + Switch to using system's assert.h header file. It is futile to + attempt to preserve compatibility with ISO C90 systems by + providing a bespoke predicate-reporting assert() (a C99 feature) + when gnulib, which we require, itself demands C99. This ensures + that `static_assert` remains defined so that gnulib can use it. + Thanks to Bruno Haible for the consultation. + <https://lists.gnu.org/archive/html/groff/2023-02/msg00034.html> + + * src/include/assert.h: Delete. + + * src/devices/grodvi/dvi.cpp: + * src/devices/grolbp/lbp.cpp: + * src/devices/grolj4/lj4.cpp: + * src/include/itable.h: + * src/include/stringclass.h: + * src/libs/libbib/linear.cpp: + * src/libs/libbib/search.cpp: + * src/libs/libdriver/printer.cpp: + * src/libs/libgroff/assert.cpp: + * src/libs/libgroff/color.cpp: + * src/libs/libgroff/errarg.cpp: + * src/libs/libgroff/font.cpp: + * src/libs/libgroff/nametoindex.cpp: + * src/libs/libgroff/prime.cpp: + * src/libs/libgroff/relocate.cpp: + * src/libs/libgroff/searchpath.cpp: + * src/preproc/eqn/box.cpp: + * src/preproc/eqn/delim.cpp: + * src/preproc/eqn/pile.cpp: + * src/preproc/eqn/script.cpp: + * src/preproc/html/pre-html.cpp: + * src/preproc/pic/pic.h: + * src/preproc/preconv/preconv.cpp: + * src/preproc/soelim/soelim.cpp: + * src/roff/groff/groff.cpp: + * src/roff/troff/troff.h: + * src/utils/hpftodit/hpftodit.cpp: + * src/utils/indxbib/indxbib.cpp: + * src/utils/lkbib/lkbib.cpp: + * src/utils/lookbib/lookbib.cpp: + * src/utils/tfmtodit/tfmtodit.cpp: Respell "assert.h" inclusion + with angle brackets instead of quotation marks. + + Fixes <https://savannah.gnu.org/bugs/?63078>. + +2023-02-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (token::next): Use correct kind of + null object in comparison. Fixes latent bug that would be + exposed if we were to migrate from zero literals to `nullptr`. + +2023-02-09 Deri James <deri@chuzzlewit.myzen.co.uk> + + [gropdf] Parse multiple entries in 'papersize' as specified in + the groff_font man page. Reported by Ben Wong and fix based on + his patch, thanks. + + * src/devices/gropdf/gropdf.pl: Parse papersize string for + possible multiple (space separated) entries. First valid entry + wins. + + Fixes https://savannah.gnu.org/bugs/?63757 + +2023-02-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + Correct numerous typos and solecisms throughout the source tree. + + * ChangeLog: + * ChangeLog.115: + * ChangeLog.116: + * ChangeLog.117: + * ChangeLog.118: + * ChangeLog.119: + * ChangeLog.121: + * ChangeLog.122: + * Makefile.am: + * NEWS: + * PROBLEMS: + * README: + * contrib/chem/chem.am: + * contrib/chem/chem.pl: + * contrib/glilypond/README.txt: + * contrib/glilypond/glilypond.pl: + * contrib/hdtbl/groff_hdtbl.7.man: + * contrib/mm/ChangeLog: + * contrib/mm/m.tmac: + * contrib/pdfmark/pdfmark.ms: + * doc/automake.mom: + * doc/groff.texi: + * doc/me-revisions: + * doc/webpage.ms: + * m4/lib-link.m4: + * man/groff.7.man: + * man/groff_diff.7.man: + * man/roff.7.man: + * src/devices/grohtml/post-html.cpp: + * src/devices/grolbp/lbp.h: + * src/devices/gropdf/TODO: + * src/devices/gropdf/gropdf.1.man: + * src/devices/gropdf/gropdf.pl: + * src/devices/xditview/ChangeLog: + * src/devices/xditview/xditview.c: + * src/libs/libdriver/input.cpp: + * src/libs/libgroff/glyphuni.cpp: + * src/preproc/eqn/eqn.1.man: + * src/preproc/grn/gprint.h: + * src/preproc/grn/main.cpp: + * src/preproc/html/pre-html.cpp: + * src/preproc/preconv/preconv.cpp: + * src/preproc/tbl/table.cpp: + * src/roff/groff/pipeline.c: + * src/roff/groff/tests/substring_works.sh: + * src/roff/groff/tests/ + use_point_size_escape_with_single_digit_arg.sh: + * src/roff/troff/div.cpp: + * src/roff/troff/input.cpp: + * src/roff/troff/troff.1.man: + * src/utils/grog/grog.pl: + * src/utils/indxbib/indxbib.cpp: + * src/utils/tfmtodit/tfmtodit.1.man: + * tmac/doc-old.tmac: + * tmac/doc.tmac: + * tmac/groff_man.7.man.in: + * tmac/hyphen.fr: Do it. + + Fixes <https://savannah.gnu.org/bugs/?63589>. Thanks to Bjarni + Ingi Gislason for the report. + +2023-02-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Drop XFAIL test. It was written with an unclear + understanding of how DWB (AT&T) and Heirloom Doctools troff + behaved. The individual checks might come back, modified. + + * src/preproc/tbl/tests/table-lacks-spurious-top-border.sh: + Delete. + + * src/preproc/tbl/tbl.am (tbl_TESTS): Drop it. + (tbl_XFAIL_TESTS, XFAIL_TESTS): Drop now empty assignment and + unnecessary update, respectively. + +2023-02-04 Bertrand Garrigues <bertrand.garrigues@laposte.net> + + Update gnulib submodule + + gnulib now points on sha1 4e9fcc7b84fcac07a3e5a3cd5f66d1ff320dc8e8 + +2023-02-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Fix bugs using boxes or vertical rules at table edges on + nroff devices, particularly when combined with region or column + expansion. + + * src/preproc/tbl/table.h (class table): Add `GAP_EXPAND` + enumeration constant. James Clark seems to have designed GNU + tbl carefully to avoid distinguishing region expansion from + column expansion in a categorical way, but I needed a way for + formatting-time logic to know which was in use. (Column + expansion, the "x" modifier, expands columns--i.e., text. + Region expansion expands [or compresses] the _gaps_ between + columns.) + * src/preproc/tbl/main.cpp (process_options): Set `GAP_EXPAND` + flag in table if "expand" region option seen. + * src/preproc/tbl/table.cpp: Add new macro `LEFTOVER_FACTOR_REG` + to name a new roff register for the remainder of gap-expansion + space when the amount of space available for expansion is + divided by the number of gaps. + (table::compute_overall_width): If _not_ expanding a table in + either respect and in nroff mode, reduce line length by 1n for + each of any left and right border (because the vertical lines + eat character cells). This prevents bordered or boxed tables + from being overset even when they use neither expansion feature. + (table::compute_separation_factor): If gap-expanding a table, + store any remainder from the division used to compute the + separation factor into the new `LEFTOVER_FACTOR_REG`. + (table::compute_column_positions): Insert that remainder into + the gap before the last (rightmost) column of the table. This + _could_ be done more elegantly by spreading each en in a + symmetric way across a subset of the gaps. (It is necessarily a + subset by the pigeonhole principle.) But it didn't seem worth + the effort for a feature (region expansion) that few users + employ. (Usually what you want is the "x" column modifier.) + Alternatively, "forget it, Jake--it's a terminal emulator". + + * src/preproc/tbl/tbl.am (tbl_XFAIL_TESTS): Remove now-passing + tests. + + Fixes <https://savannah.gnu.org/bugs/?63640> and + <https://savannah.gnu.org/bugs/?63749>. + +2023-02-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/table.cpp (table::compute_column_positions): + Stop multiplying the gaps at the left and right edges of a table + {which occur when it is boxed or has a leading and/or trailing + vertical line} by the column separation factor. Only interior + column gaps should be spread. This change prevents tables using + the "expand" region option from being overset (exceeding the + line length), but might not (yet) fully expand to that length on + low-resolution devices due to integer roundoff. + +2023-02-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/table.cpp (table::compute_total_separation) + (table::compute_separation_factor, table::compute_widths): Add + comments to generated roff output to assist the mystified user. + +2023-02-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Refactor. + + * src/preproc/tbl/table.cpp: + * src/preproc/tbl/table.h: Rename `compute_expand_width` to + `compute_overall_width`, since this member function is used on + _all_ tables, not just those undergoing column or gap expansion. + For instance, in a post-groff 1.22.4 development, it throws a + diagnostic if an unexpanded table overruns the line length. + * src/preproc/tbl/table.cpp (table::compute_widths): Update call + site of `compute_overall_width`. + * src/preproc/tbl/table.cpp: Split the roff register behind the + `EXPAND_REG` C++ preprocessor macro into two, adding + `AVAILABLE_WIDTH_REG`. Annotate the distinction. + (compute_overall_width): Annotate. Move and conditionalize + logic so as not to produce as much unnecessary roff output. + +2023-02-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/main.cpp (main): Avoid reading from invalid + memory upon failure to open an input file. + + Fixes <https://savannah.gnu.org/bugs/?63751>. + +2023-02-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/eqn/lex.cpp (get_delimited_text): Avoid reading + from invalid memory when throwing diagnostic. Duplicate + `filename` string, then free it on all paths out of function. + + Fixes <https://savannah.gnu.org/bugs/?63214>. + +2023-02-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Add more tests. + + * src/preproc/tbl/tests/boxes-and-vertical-rules.sh: + * src/preproc/tbl/tests/expand-region-option-works.sh: + * src/preproc/tbl/tests/x-column-modifier-works.sh: Do it. + + * src/preproc/tbl/tbl.am (tbl_TESTS): Run tests. + (tbl_XFAIL_TESTS): Add; future changes will resolve these. + +2023-02-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/table.cpp (table::compute_column_positions): + If a table has "left separation" (it is boxed, or has a vertical + rule on the left-hand side), increase the first column's start + register value by 1n, for symmetry with the right-hand size. + + * src/preproc/tbl/tests/check-horizontal-line-length.sh: + * src/preproc/tbl/tests/check-line-intersections.sh: + * src/preproc/tbl/tests/check-vertical-line-length.sh: Update + output expectations. + + * src/preproc/tbl/tbl.am (tbl_XFAIL_TESTS): Remove now-passing + test. + + See <https://savannah.gnu.org/bugs/?61597> for background. + +2023-02-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/table.cpp (table::compute_total_separation): + Trivially refactor; rename loop indices so it's obvious which + dimension of a matrix they're referring to. + +2023-02-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/table.cpp (table::determine_row_type) + (table::compute_widths, table::do_row): Boolify some local ints. + +2023-02-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Refactor handling of vertical lines in format. Validate + input more strictly. Add diagnostics when vertical lines are + redundant with box borders. + + * src/preproc/tbl/main.cpp (process_format): Shift diagnostic + about excess vertical lines in a sequence at the beginning of a + row description to later, after the first proper column + descriptor has been interpreted. Normalize a sequence of more + than two consecutive vertical lines to 2 when they occur at the + beginning of a row description. Unconditionally update + `list->vline` and reset `vline_count` once we start looking for + modifiers, since we know we've finished any sequence of vertical + lines, and at the end of a row definition. Rename and retype + loop variable int `success` to Boolean + `is_valid_modifier_sequence`. Drop now-invalid assertion. + * src/preproc/tbl/table.cpp (table::add_vlines): Throw new + diagnostics when vertical lines are redundant with box borders. + Add assertion to ensure we got a valid vertical line value (0, + 1, or 2) from `process_format`. Throw these only once per table + format, not for every row. + +2023-01-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/main.cpp (process_table): Trivially refactor. + Rename `form` to `fmt` to imply "format", not "form". + +2023-01-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/main.cpp (process_format): Throw error + diagnostic if more than 2 vertical lines are specified at the + beginning of a row definition. + + Fixes <https://savannah.gnu.org/bugs/?63731>. + +2023-01-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/main.cpp (process_format): Recast diagnostic + message to refer to character by its Unicode name and generalize + to accurately cover additional circumstance of excess '|' + symbols at end of row definition. + +2023-01-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/ms.ms: Remove redundant initializations. + +2023-01-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/ms.ms: Define appropriate hyphen-minus mapping on 'cp1047' + output device. + +2023-01-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac (TE): Enable no-space mode after outputting the + display distance vertically, replacing any inter-paragraph + distance that might follow. + +2023-01-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grohtml]: Fix misleading diagnostic message. + + * src/preproc/html/pre-html.cpp (main): The suggestion should be + to re-run the formatter (groff, troff), not "pre-grohtml", with + a different output driver since the document may be malformed. + +2023-01-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/main.cpp (process_format): Fix code hygiene + nit: nullify `list` pointer after freeing its target. + +2023-01-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Really fix Savannah #63449. + + * src/preproc/tbl/main.cpp (process_format): "Or" on the + `HAS_TOP_VLINE` flag if the format specification begins with a + "|"; the beginning is a separate state in the FSM used to parse + the description. I missed it in commit 0e93ab4102, 1 December. + + Fixes <https://savannah.gnu.org/bugs/?63449>. + +2023-01-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/tests/\ + do-not-overdraw-page-top-in-nroff-mode.sh: Correct erroneous + check of test output, and add two more test cases. + +2023-01-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-ext.tmac: Move the saving of the hyphenation mode from + the "top level" to... + (mY): ...this new macro. + (SY, mQ, MR): Call `mY` before disabling hyphenation. + + Problem introduced by me in commit 096c2f0567, 16 February. + "an-ext.tmac" gets sourced by "an.tmac" before any + command-line setting of the `HY` register is handled, so (for + groff) the stored hyphenation mode was the default for the + language, not reflecting user disablement. The synopsis macros, + which do not have an alternate implementation in "an.tmac" for + leverage of groff features, were causing hyphenation to be + resurrected (after `YS`) even if the user had disabled it. + Saving the hyphenation mode anew upon entry to these macros is + arguably inefficient, but it is more correct since a man page + could conceivably manipulate the automatic hyphenation mode + {even if that's not recommended outside of tbl(1) text blocks}. + +2023-01-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Add regression test for hyphenation getting wrongly + restored by `YS`, `ME`, `UE`, and `MR` macros. + + * tmac/tests/an_HY-register-works.sh: Do it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2023-01-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-common (Sh, Ss): Narrow scope of font remappings + lexically and restrict remapping to the heading font family (if + any) to avoid undesired remapping of fonts in page headers if, + say, a (sub)section heading begins just prior to a page + break--which is ugly anyway and should be avoided, but the + package has no keep macros and solving that problem in an + automatic way promises to be complex. + +2023-01-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac (MT, UR): Throw style warning if macro called + without (exactly one) argument. + +2022-12-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am (doc/groff-man-pages.pdf): Set (sub)section + headings in Helvetica bold in compiled man pages, as a test and + demonstration of the `HF` feature's application to both man(7) + and mdoc(7) documents. + +2022-12-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Support `HF` string. + + * tmac/doc.tmac (initialization): Add logic supporting `HF` + string just as our man(7) implementation does. If the font name + ends with `B` (as the default does), set + `doc-remap-I-style-in-headings` register and extract font + family, which can be empty (as is the default). + * tmac/mdoc/doc-common (Sh, Ss): If + `doc-remap-I-style-in-headings` register set, perform (and + unwind) font remapping of italic to bold-italic face. + * tmac/mdoc/doc-ditroff: + * tmac/mdoc/doc-nroff: Define `doc-Sh-font` in terms of `HF`. + + * tmac/tests/doc_heading-font-remapping-works.sh: Test it. + * tmac/tmac.am (tmac_TESTS): Run test. + + * tmac/groff_mdoc.7.man (Options): Document it. + * NEWS: Update item. + + Fixes last part of <https://savannah.gnu.org/bugs/?63046>. + +2022-12-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tmac]: Revise "fallback" character definitions in several + respects for Unicode characters from General Punctuation block. + + * tmac/fallbacks.tmac: Comment out fallbacks for U+200B, U+2010, + U+2011, and U+201[89CD], due to ineffectuality or apparent groff + bugs. Redefine U+2012 fallback to include hair space (\^) + around synthetic figure dash. Redefine U+2016 to use `\[ba]` + special characters instead of ordinary `|` characters to dodge + possible character translations by user. + + Fixes part of <https://savannah.gnu.org/bugs/?63354>. Thanks to + Dave Kemper for the (multifarious) discussion. + +2022-12-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Invoking groff, Built-in Registers): + * man/groff.7.man (Writable predefined registers): + * src/roff/groff/groff.1.man (Environment): + * src/roff/troff/troff.1.man (Environment): Replace erroneous + reference to ctime(3) with localtime(3). + + Fixes <https://savannah.gnu.org/bugs/?63509>. Thanks to Bjarni + Ingi Gislason for the report. + +2022-12-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tests]: Fix potential problem(s) in trap handler. + + * src/roff/groff/tests/smoke-test_html_device.sh: Move call of + `cleanup` function from end of script to after the tests that + generate temporary files have been run, and before script + possibly exits with status 77 to skip some checks. Within trap + handler, mask trapped signals while running handler. + (cleanup): Reset trap dispositions to default after removing + files; once the temporary files are gone, we no longer need a + trap handler. One might already be running however, and this + ensures that its "suicide" ("kill -s INT $$") will succeed. + +2022-12-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Support `FT` register. + + * tmac/doc.tmac (initialization): Add logic supporting `FT` + register just as our man(7) implementation does. + * tmac/mdoc/doc-common (doc-set-up-titles): Plant footer trap in + validated user-requested location. + * tmac/groff_mdoc.7.man (Options): Document it. + * NEWS: Update item. + + Fixes part of <https://savannah.gnu.org/bugs/?63046>. + +2022-12-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac: Fix code style nit: use `as` requests to + avoid overlong input lines. + +2022-12-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/doc.tmac: Inform user we're ignoring their "-rD1" setting + if also formatting HTML; parallels groff man(7) behavior. + +2022-12-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/doc.tmac: Trivially refactor. Relocate handling of `D` + command-line register to prepare for greater synchronization + with groff man(7). + +2022-12-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/table.cpp: Trivially refactor. Rename + {portion of} internal register to include an interword hyphen + for readability. + +2022-12-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Change default line length to 6.5 inches. + + * tmac/s.tmac (par@load-init): Do it. + + * doc/groff.texi (ms Document Control Settings): + * doc/ms.ms (Document control settings): + * tmac/groff_ms.7.man (Document control settings): Document it. + + * tmac/tests/s_honor-MINGW-when-two-columns.sh: + * tmac/tests/s_mark-column-start-correctly.sh: Update test + expectations. + + * NEWS: Add item. + +2022-12-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac (TH): Relocate `an-break-body-text` trap to be + one half-inch above footer (instead of twice the footer + distance). I reason that anyone who customizes `FT` is doing so + to overprint some kind of material at the bottoms of pages, or + simply to make the margin larger. (One then wonders why we + don't have an `HD` register for the top.) Also remove register + when done with it. + * tmac/groff_man.7.man.in (Options) <FT>: Document this. + +2022-12-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac (TH): Trivially refactor. Rename + `an-footer-location` to `an*footer-location` and set page traps + in order descending the page. + +2022-12-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Support `X` register. + + * tmac/doc.tmac (initialization): Add logic supporting `X` + register just as our man(7) implementation does. + * tmac/groff_mdoc.7.man (Options): Document it. + * NEWS: Update item. + + Fixes part of <https://savannah.gnu.org/bugs/?63046>. + +2022-12-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Add unit test for `X` register. + + * tmac/tests/doc_X-register-works.sh: Do it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2022-12-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/doc.tmac (Nm): Fix `if` -> `ie` typo/thinko. + + Fixes <https://savannah.gnu.org/bugs/?63527>. Thanks to John + Gardner for the report. + +2022-12-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tests/doc_Nm-works.sh: Add more checks. + +2022-12-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/tests/smoke-test_html_device.sh: Add checks for + inlining of images when tbl(1) or eqn(1) used. + +2022-12-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/andoc.tmac (reload-man): Unplant `doc-break-body-text` + trap, added in commit 892703b17e, 6 September. Its survival + into man(7) pages didn't seem to cause any problems but I have + no confidence that will remain true forever. + +2022-12-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac (initialization): Fix problem with `FT` register + validation. Small but valid values were being rejected due to + inappropriate use of scaling operator. Also throw user a bone + by expressing what size '1v' is for the output device, in basic + units. + +2022-12-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man, mdoc]: Fix Savannah #63500. Support use of `P` (initial + page number) register when batch rendering, regardless of + switching macro packages between man(7) and mdoc(7) or setting + of `C` (continuous numbering) register. (`P` without `C` means + "start numbering each rendered document at \n[P]".) + + * tmac/an.tmac (an-end): Call `an*break-page-with-new-number` + instead of invoking `bp`. + (an*break-page-with-new-number): If `P` is set and `C` is not, + use value of `P` as the next page number. + (TH): If `C` register is set, remove `P` register after ending a + previous document. + (initialization): If `P` is set, assign the page number using + the `pn` request if the transition to the first formatted page + has not yet occurred; otherwise update page number register `%` + directly. Also ignore it with diagnostic if `ps4html` register + {for grohtml's internal use} is set. Add explanatory comment. + + * tmac/mdoc/doc-common (Dd): If `C` register is set, remove `P` + register after ending a previous document. + (doc-end-macro): Call `doc-break-page-with-new-number` instead + of invoking `bp`. + (doc-break-page-with-new-number): If `P` is set and `C` is not, + use value of `P` as the next page number. + * tmac/doc.tmac (initialization): If `P` is set, assign the page + number using the `pn` request if the transition to the first + formatted page has not yet occurred; otherwise update page + number register `%` directly. Also ignore it with diagnostic if + `ps4html` register (for grohtml's internal use) is set. Add + explanatory comment. + + Fixes <https://savannah.gnu.org/bugs/?63500>. + +2022-12-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Support `P` register. + + * tmac/doc.tmac (initialization): Add logic supporting `P` + register just as our man(7) implementation does. + * tmac/groff_mdoc.7.man (Formatting with groff, troff, and + nroff): Document it. + * NEWS: Update item. + + Fixes part of <https://savannah.gnu.org/bugs/?63046>. + +2022-12-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tests]: Add unit tests for man/mdoc `P` register. + + * tmac/tests/an_P-register-works.sh: + * tmac/tests/andoc_P-register-works.sh: + * tmac/tests/doc_P-register-works.sh: Do it. + * tmac/tmac.am (tmac_TESTS): Run tests. + +2022-12-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man, mdoc]: Refactor. Rename a Boolean register to more + clearly communicate its purpose. This also reverses its sense. + + * tmac/an.tmac (TH): Rename `an-is-first-page-of-document` to + `an*need-titles-reset`. Drop redundant store. Reverse sense of + test. + (initialization): Initialize it to zero. + + * tmac/mdoc/doc-common (Dd): Rename + `doc-is-first-page-of-document` to `doc-need-titles-reset`. + Drop redundant store. Reverse sense of test. + (initialization): Initialize it to zero. + +2022-12-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tests]: Add future regression test for header/footer + mishandling that wasn't already covered (not a live bug; was + exposed by attempted refactoring). + + * tmac/tests/andoc_check-an-to-doc-transition.sh: Do it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2022-12-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man, mdoc]: Trivially refactor. + + * tmac/an.tmac (an-start-new-document): Rename this... + (an*break-page-with-new-number): ...to reflect its reduced + responsibility. + + * tmac/mdoc/doc-common (doc-start-new-document): Rename this... + (doc-break-page-with-new-number): ...to reflect its reduced + responsibility. + +2022-12-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man, mdoc]: Refactor to separate page number management from + header trap management. + + * tmac/an.tmac (an-start-new-document): Stop removing + `an-header` trap. + (TH): Clear the trap here even if not continuously rendering, + and call `an-start-new-document`. + + * tmac/mdoc/doc-common (doc-start-new-document): Stop removing + `doc-header` trap. + (Dd): Clear the trap here even if not continuously rendering, + and call `doc-start-new-document`. + +2022-12-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-common: Refactor for better parallelism with our + man(7) implementation and to prepare for a synchronized change + to both. + (Dd): Move open-coded (inlined) operations from here... + (doc-start-new-document): ...to this new macro. + (doc-end-macro): Drop unnecessary register assignment. `Dd` + takes care of it if there is a subsequent mdoc(7) document. + +2022-12-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Fix off-by-one error in generated diagnostic message. + + * src/preproc/tbl/table.cpp: Define new preprocessor macro, + `PREVIOUS_PAGE_REG`. + (table::init_output): Compute value for register named using + `PREVIOUS_PAGE_REG`, use it in diagnostic, and then remove it. + Also fix verb tense in message. + +2022-12-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Expose the fact of a table's boxedness via a troff + register so that macro packages can make more intelligent + decisions about space requirements (since box borders occupy + significant space on nroff devices). + + * src/preproc/tbl/table.cpp: Define new preprocessor macro, + `IS_BOXED_REG`. + (table::do_top): Initialize "boxedness" register. + +2022-12-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac (TH): Clarify computation and diagnostic message. + +2022-12-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Fix Savannah #61878. + + * src/preproc/tbl/table.cpp: Define new preprocessor macro, + `STARTING_PAGE_REG`. + (table::define_bottom_macro): Have the formatter issue a warning + if an unkept, boxed table ends on a different page than it + began. + (table::do_top): Save current page number when table begins. + + Fixes <https://savannah.gnu.org/bugs/?61878>. + +2022-12-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Regression-test Savannah #61878. + + * src/preproc/tbl/tests/\ + warn-on-long-boxed-unkept-table.sh: Do it. + * src/preproc/tbl/tbl.am (tbl_TESTS): Run test. + +2022-12-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/table.cpp: Write comments to generated output; + these correspond to functions in this file and to major + operations of table construction. + (init_output, compute_widths, define_bottom_macro, do_row) + (do_top, do_bottom): Do it. + +2022-12-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Trivially refactor. Rename class `constant_int_reg` to + `readonly_register`. Say "readonly" instead of "const" to + try to avoid confusion with C++ constness. Drop "int" because + integer-valued registers are the norm, not the exception. + + * src/roff/troff/column.cpp (init_column_requests): + * src/roff/troff/div.cpp (init_div_requests): + * src/roff/troff/input.cpp (top level, init_input_requests): + * src/roff/troff/node.cpp (init_node_requests): + * src/roff/troff/reg.h: Do it. + +2022-12-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Trivially refactor. Rename class `constant_reg` to + `readonly_text_register`. Say "readonly" instead of "const" to + try to avoid confusion with C++ constness. Say "text" because + this class is _mostly_ used for interpolation of string-valued + registers like the version registers `.x`, `.y` and `.Y`. + Nevertheless there are some abuses (apparently because the + constructors for register classes don't accept integer + parameters for initialization--why?). + + * src/roff/troff/input.cpp (top level) + (readonly_text_register::readonly_text_register) + (readonly_text_register::get_string) + (main, init_registers, init_requests): Do it. + +2022-12-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Trivially refactor. Rename `number_reg_dictionary` to + `register_dictionary`. It's shorter _and_ non-abbreviated _and_ + matches our documentation. + + * src/roff/troff/column.cpp (init_column_requests): + * src/roff/troff/div.cpp (page_number, init_div_requests): + * src/roff/troff/env.cpp (print_env, init_env_requests) + (init_hyphen_requests): + * src/roff/troff/input.cpp (length_request) + (interpolate_number_format, do_register, do_if_request, main) + (init_registers, init_input_requests): + * src/roff/troff/node.cpp (get_register, init_node_requests): + * src/roff/troff/reg.cpp (top level, define_number_reg) + (inline_define_reg, alter_format, remove_reg, alias_reg) + (rename_reg, print_number_regs): + * src/roff/troff/reg.h: Do it. + +2022-12-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Add regression test. + + * tmac/tests/an_link-trailing-text-hugs-previous.sh: Do it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2022-12-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/fallbacks.tmac: Really use troff-mode fallbacks only on + typesetting devices; because this macro file is loaded so early, + we cannot rely on ".if t". Thanks to Dave Kemper for the + discussion in Savannah #63354. + +2022-12-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-ext.tmac: Use more mnemonic register names, thanks to + the recent freeing up of some name space. + - mJ -> mH: saved automatic hyphenation mode + - mX -> mE: formatting in EX/EE context (Boolean) + +2022-12-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/pdf.tmac: Drop deletion of unused string `PDFHREF.TEXT`. + +2022-12-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac (an-end, AT, UC, DT, PD, SH, IP, BI, BR, IB, IR) + (RB, RI, OP, an*end-hyperlink, MR): Refactor; "nop"ify macros + that produce formatted output or call other macros using string + interpolations--except where we can't: see Savannah #63470. + +2022-12-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac (R): Drop macro definition, which implements a + hack for people who try to use "R" as a font style macro. This + doesn't seem to happen much in actual practice (though perhaps + the diagnostic this hack produces is responsible for suppression + of the mistake). Retaining it interferes with the + "nop"-ification of this macro file. + * NEWS: Add item. + +2022-12-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-ext.tmac: Use truly traditional hyphenation mode on + non-groff-compatible formatters. + +2022-12-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Update test coverage and expectations. + + * tmac/tests/an_ME-punct-hyphenates.sh: Test both "an.tmac" and + "an-ext.tmac" implementations of `ME`. + * tmac/tests/an_UE-punct-hyphenates.sh: Test both "an.tmac" and + "an-ext.tmac" implementations of `UE`. + * tmac/tests/an_UE-breaks-before-long-URIs.sh: Update test + expectations. I appear to have inadvertently fixed some + inelegant rendering. + +2022-12-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tests]: Rename to reflect code reorganization. + + * tmac/tests/an-ext_ME-punct-hyphenates.sh: + * tmac/tests/an-ext_MT-body-hyphenates.sh: + * tmac/tests/an-ext_UE-breaks-before-long-URIs.sh: + * tmac/tests/an-ext_UE-punct-hyphenates.sh: + * tmac/tests/an-ext_UR-body-hyphenates.sh: Rename these... + * tmac/tests/an_ME-punct-hyphenates.sh: + * tmac/tests/an_MT-body-hyphenates.sh: + * tmac/tests/an_UE-breaks-before-long-URIs.sh: + * tmac/tests/an_UE-punct-hyphenates.sh: + * tmac/tests/an_UR-body-hyphenates.sh: ...to these. + + * tmac/tmac.am (tmac_TESTS): Reflect renames. + +2022-12-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-ext.tmac: Remove groff-feature-dependent code for + hyperlink management, greatly reducing the size of the file, + which we permissively license and encourage people to copy + around. Drop register definitions corresponding to + groff-specific output device names. Drop definition and use of + `mL` and `mR` strings for angle brackets; no observable change + on non-groff formatters. Recognize `mG` register to enable + testing of these macros even if the formatter is groff. + (mV): Radically simplify. This internal "back-end" for `MT` and + `UR` now just stores its argument in a string, `m1`. + (mQ): Radically simplify. This internal "back-end" for `ME` and + `UE` now just disables automatic hyphenation, formats the saved + `m1` string between angle brackets, suffixes it with the + optional argument, and restores automatic hyphenation. + (UR, MT): Call `mV` with one argument, not nine. + (UE, ME): Call `mQ` with one argument, not nine. + + * tmac/tests/an-ext_MR-works.sh: Add test of this file's + simplified `MR` implementation. + * tmac/tests/an-ext_MT-works.sh: + * tmac/tests/an-ext_UR-works.sh: Move tests of groff-specific + hyperlink output from here... + * tmac/tests/an_MT-works.sh: + * tmac/tests/an_UR-works.sh: ...to these new files. + * tmac/tests/an_MR-works.sh: + * tmac/tests/an_MT-works.sh: + * tmac/tests/an_UR-works.sh: Add tests for valid HTML formatting + of hyperlinks, which experience shows is a bit fragile in the + face of diversion manipulation and output line continuation. + + * tmac/tmac.am (tmac_TESTS): Run new tests. + +2022-12-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-ext.tmac: Support `mG` register: clear it to force the + loading of this file's macros even if they have an + implementation in tmac/an.tmac and the formatter claims groff + compatibility. This is to ease these macros' testing under + groff and keep the implementations here simple. + * tmac/an.tmac: Initialize `mG` register to 1 if not set on + command line. + +2022-12-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-ext.tmac: Initialize `mX` register. + +2022-12-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-ext.tmac: Define `mC` string (constant-width typeface + used by `EX`/`EE` macros) as `R` in nroff mode. Thanks to + Russ Allbery for prompting me to think more about the + limitations of Solaris troff. Implementations do varying + things with the "previous" font restored by `\fP` or an + unargumented `.ft` if a requested font is not found. + +2022-11-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Fix Savannah #63449. + + * src/preproc/tbl/table.h (class table): Add new enumeration + constants for use with `flags` member variable: `HAS_TOP_VLINE` + and `HAS_TOP_HLINE`, which track properties of the table. + Unlike others, these have no correspondence to table region + options. + * src/preproc/tbl/main.cpp (process_format): Add new local + Boolean to track whether we're interpreting a format for the + first row. Use this to "or" on the `HAS_TOP_VLINE` or + `HAS_TOP_HLINE` flags if "|" or [_-] are encountered in the + first row's format, as appropriate. + (process_data): "Or" on `HAS_TOP_HLINE` if a single or double + horizontal line is used as the first row's data. + * src/preproc/tbl/table.cpp (do_top): On nroff mode devices, add + one vee of space above the table if we're going to be drawing an + unintersected vertical rule above the table's top. + + Fixes <https://savannah.gnu.org/bugs/?63449>. + +2022-11-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Regression-test Savannah #63449. + + * src/preproc/tbl/tests/\ + do-not-overdraw-page-top-in-nroff-mode.sh: Do it. + * src/preproc/tbl/tbl.am (tbl_TESTS): Run test. + +2022-11-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/main.cpp (struct input_entry_format) + (input_entry_format::input_entry_format) + free_input_entry_format_list, process_format): Trivially + refactor. Rename `pre_vline` to `vline_count`. + +2022-11-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/table.cpp + (vertical_rule::contribute_to_bottom_macro, table::print) + (table::init_output, table::divide_span) + (table::compute_expand_width, table::define_bottom_macro) + (table::do_bottom): Produce roff output that is more readable, + for maintainability. Indent control lines inside macro + definitions. Standardize form of `if`, `ie`, and `el` requests. + Some output will not be indented because it is produced within + narrowly-scoped C++ functions (set_troff_location, + table::print_single_hline, table::print_double_hline, + table::do_row), I haven't verified that each one is called from + a consistent troff indentation level, and I'm not sure it's a + win to parameterize those functions in the indentation level. + +2022-11-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Fix Savannah #61909. + + * src/preproc/tbl/table.cpp (SAVED_INTER_WORD_SPACE_SIZE) + (SAVED_INTER_SENTENCE_SPACE_SIZE): Add new preprocessor macros. + (block_entry::do_divert): Restore saved inter-word and + inter-sentence space when formatting a text entry. + (table::init_output): When a table region begions, save the + values of inter-word and inter-sentence space. Add request to + the reset macro to restore saved inter-word and inter-sentence + space when leaving table region. + (table::do_top): Set inter-sentence space to be equal to + inter-word space. This way spaces are "literal" in ordinary + table extries (but not text blocks). + + Fixes <https://savannah.gnu.org/bugs/?61909>. + +2022-11-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Regression-test Savannah #61909. + + * src/preproc/tbl/tests/\ + save-and-restore-inter-sentence-space.sh: Do it. + * src/preproc/tbl/tbl.am (tbl_TESTS): Run test. + +2022-11-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Suppress line numbering when formatting tables, and + restore it afterward. + + * src/preproc/tbl/table.cpp: Revert much of commit b69062693's + {2011-07-20} changes to this file. They were too complex for me + to understand, and permitted Savannah #60140 to persist (or + caused it). + (ROW_START_LINE_REG, ROW_SAVE_LINE_REG, ROW_MAX_LINE_REG) + (REPEATED_NM_SET_MACRO, REPEATED_NM_SUS_MACRO): Drop + preprocessor macros. + (SAVED_NUMBERING_LINENO, SAVED_NUMBERING_SUPPRESSION_COUNT): Add + new preprocessor macros. + (table::init_output, table::print_single_hline) + (table::print_double_hline, table::define_bottom_macro) + (table::do_row, table::do_top, table::do_bottom): Drop old + logic. + + (table::init_output): When the table begins, save the current + line number register `ln` and the count of remaining lines to be + suppressed (the new `.nn` register). Then suppress numbering + for the next 2 billion+ lines of output, with a groveling + apology to the elegance police. + (table::do_bottom): Restore saved value of `.nn`. If numbering + was active (even if suppressed), restore it with `nm` request. + If it wasn't, disable it, in case it was turned on inside the + table region. + + Fixes <https://savannah.gnu.org/bugs/?60140>. Thanks to Hans + Bezemer for noting the practical significance of this bug. + +2022-11-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Regression-test Savannah #60140. + + * src/preproc/tbl/tests/save-and-restore-line-numbering.sh: Do + it. + * src/preproc/tbl/tbl.am (tbl_TESTS): Run test. + +2022-11-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Implement new `.nn` register to report the remaining + count of lines to have their numbering suppressed. + + * src/roff/troff/env.h (class environment): Declare new member + function `get_no_number_count()`. + * src/roff/troff/env.cpp (get_no_number_count): Define new + member function, returning value of member variable + `no_number_count`. + (init_env_requests): Define new ".nn" register and attach it to + `get_no_number_count()`. + + * doc/groff.texi (Miscellaneous): Document it. Include example + of use to determine whether current output line will be + numbered. Also clarify meaning of register; `.nn` is not + decremented except when output line numbering is enabled. + * man/groff.7.man (Read-only registers): Document it. + + * src/roff/groff/tests/dot-nn_register_works.sh: Test it. + * src/roff/groff/groff.am (groff_TESTS): Run test. + + * NEWS: Add item. + + See <https://lists.gnu.org/archive/html/groff/2022-11/\ + msg00153.html>. + +2022-11-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/fallbacks.tmac: Comment out four of the fallback + character definitions for (preconv'd) Unicode character input + added to address Savannah #58930 (corresponding to \[dg], \[dd], + \[%0], and \[rn]; they are failing for not yet understood + reasons involving "macros" attached to groff character info + structs, and the semantics of what it means for a character to + "exist" per the 'c' conditional operator. Fixes regression when + using "tty-char.tmac" (which nroff loads by default). Problem + introduced by me in commit 132182bd71, 23 October. The hope is + to resolve this issue post-groff 1.23.0. Thanks to Dave Kemper + for the report and discussion in Savannah #63332. + +2022-11-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-ext.tmac (SY, YS, mV): Remove `mA`, `mI`, and `mT` + registers when done with them. + +2022-11-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/node.h (character_exists): + * src/roff/troff/node.cpp (character_exists): Boolify. + +2022-11-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + [doc]: Add make(1) dependency. + + * doc/doc.am (doc/groff-man-pages.pdf): Add dependency on our + FreeEuro font since we embed it. + +2022-11-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + [build]: Refactor generation of "freeeuro.pfa" to make more + economical use of existing infrastructure, per a suggestion from + Deri James. This also puts the file where gropdf's "download" + file can find it when running it in a separate build directory. + We use it to generate "groff-man-pages.pdf". + + * font/devps/freeeuro.pfa: Rename this... + * font/devps/freeeuro.ps: ...to this. We can now use the suffix + rule that also applies to "symbolsl.ps" and "zapfdr.ps". + + * font/devps/devps.am (DEVPSFONTFILES): Move "freeeuro.pfa" from + here... + (DEVPSFONTFILES_GENERATED): ...to here. + (EXTRA_DIST): Ship the "new" "freeeuro.ps" file. + +2022-11-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devps/psstrip.sed: Stop stripping comment lines in + general instead of preserving only ones that use the form in the + Document Structuring Conventions. This way we won't strip + copyright notices, like Werner Lemberg's in the FreeEuro font. + Thanks to Deri James for pointing this out. + +2022-11-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + tmac/an-ext.tmac: Refactor to reduce code size. + + * tmac/an-ext.tmac: Refactor to reduce code size. `UE` and `ME` + have nearly identical implementations so... + + (mQ): Define new macro to perform the requisite actions, and... + + (UE, ME): Make these into wrappers calling mQ. + +2022-11-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Add unit tests for `MT/ME` and `UR/UE`. + + * tmac/tests/an-ext_MT-works.sh: + * tmac/tests/an-ext_UR-works.sh: Do it. + + * tmac/tmac.am (tmac_TESTS): Run tests. + +2022-11-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/gropdf/gropdf.pl: Throw warning if paper format is + unrecognized. + +2022-11-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/gropdf/gropdf.pl (Msg): Align more closely with + diagnostic message format prescribed by GNU Coding Standards: + emit space (only) prior to message severity. + +2022-11-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/meref.me.in: Drop unnecessary initialization parameters + from document. The line and title length do not need to be set + in troff mode; the document lays out fine for a variety of paper + formats if these are not forced to 6.5 inches. Also drop + redundant initialization of `pp` register. + +2022-11-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Fix Savannah #63377. + + * tmac/doc.tmac (Nm): Properly leverage new + `doc-in-name-section` variable. Set page topic `doc-topic-name` + to the first encountered argumentful `Nm` call in the "Name" + section while handling other "Name" section concerns, instead of + later after deciding we're not in the "Synopsis" section. + Problem caused by me when fixing antediluvian mdoc bug in commit + 0d85615c62, 5 November. + + Fixes <https://savannah.gnu.org/bugs/?63377>. Thanks to John + Gardner for the report. + +2022-11-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Add tests for `Nm` macro. + + * tmac/tests/doc_Nm-works.sh: Do it. Test regression reported + in Savannah #63377. Also ensure that we handle the case where + multiple `Nm` items are declared in the "Name" section (as might + happen in library man pages). + * tmac/tmac.am (tmac_TESTS): Run test. + +2022-11-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/papersize.tmac: Improve integration with mm(7) macro + package. If a paper format has been selected, set `W` register + to new line length (if not already set on command line). + Similarly, set `O` register to 1 inch for the symmetric + horizontal margins otherwise assumed by this macro file. This + means that "groff -mm" and "groff -dpaper=letter -mm" are _not_ + synonymous (when groff is configured to use U.S. letter as the + default paper format), because groff mm(7) uses a page offset of + 0.963 inches on typesetters for compatibility with DWB mm. + * NEWS: Add item. + + See discussion in <https://lists.gnu.org/archive/html/\ + groff/2022-11/msg00081.html> and (some) follow-ups. + +2022-11-16 Deri James <deri@chuzzlewit.myzen.co.uk> + + * src/devices/gropdf/gropdf.pl: If the argument to the paper + format option '-p' matches a recognized format but includes a + trailing 'L' or 'l' ("legalL" or "a4l", for example), rotate the + document's MediaBox. + +2022-11-16 Deri James <deri@chuzzlewit.myzen.co.uk> + + * src/devices/gropdf/gropdf.pl: Fix incorrect hotspot placement + if page is in landscape orientation. + (FixRect): Perform coordinate transform if page is rotated. + (Rotate): New function performs relevant trigonometry. + + Fixes <https://savannah.gnu.org/bugs/?63380>. Thanks to Blake + McBride for the report. + +2022-11-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac: Integrate better with papersize.tmac by no longer + forcing line (and title) length to 6 inches for typesetters on + initialization. Gather default line length from output device + description, possibly modified later (by other macro file or + input). No change to terminal ("nroff mode") output. + * NEWS: Add item. + +2022-11-16 Peter Schaffter <peter@schaffter.ca> + + * tmac/papersize.tmac: If a paper format has been selected, + smuggle right margin setting to mom(7) if not overridden by the + user. See discussion in <https://lists.gnu.org/archive/html/\ + groff/2022-11/msg00081.html> and (some) follow-ups. + +2022-11-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am (doc/groff-man-pages.pdf) + (doc/groff-man-pages.utf8.txt): Add dependencies on new + `TMAC_PACKAGE_MAN` and `TMAC_PACKAGE_MDOC` convenience macros. + +2022-11-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tmac.am (TMAC_PACKAGE_MAN, TMAC_PACKAGE_MDOC): Define + convenience macros for in-tree documents to depend on. + +2022-11-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac: Trivially refactor. Rename `an-section` to + `an*section`. + +2022-11-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grolbp/lbp.cpp (usage): Tweak usage message. The + output driver should be perfectly capable of handling output + from non-GNU (but device-independent) troffs. + +2022-11-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grops/ps.cpp (usage): Employ more informative + metasyntactic variable names in usage message. Also summarize + program's function and direct reader to man page if help + explicitly requested (inferred from identity of output stream). + +2022-11-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac: Trivially refactor for congruence with + documentary terminology. Rename strings and macros. + - an-title -> an*topic + - an-abbreviate-page-title -> an*abbreviate-page-topic + - an-title-abbv -> an*topic-abbv + - an-title-string -> an*topic-string + - an-title-length -> an*topic-length + - an-title-length-prev -> an*topic-length-prev + - an-title-new-length -> an*topic-new-length + - an-page-title-style -> an*topic-style + (TH): Recast diagnostic message to refer to "section", not + "volume" title. + +2022-11-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-ext.tmac: Refactor to reduce code size. `UR` and `MT` + have identical implementations so... + (mV): Define new macro to perform the requisite actions, and... + (UR, MT): Make these into wrappers calling mV. + +2022-11-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-ext.tmac (UR, MT): Fix problem with incorrect line + lengths and occasional "can't adjust" warnings when using + hyperlinks. Reduce the line length within the diversion by the + amount of indentation used in the context. Without this, lines + were getting set too short. (You might think they'd be too + long, but when creating a new environment, the _formatter's_ + default line length is used; that's 65n on terminal devices.) + +2022-11-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Add test to ensure that link text (when the hyperlink + itself is not formatted because the device supports + hyperlinking) uses the correct line length and is adjusted. + + * tmac/tests/an_adjust-link-text-correctly.sh: Do it. + * tmac/tmac.am (tmac_TESTS): Run tests. + +2022-11-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devpdf/devpdf.am: Refactor. + (MOSTLYCLEANFILES): Populate macro incrementally, adjacent to + the targets that build the files to be cleaned. This will + enable cleaner refactoring in the future. + (DEFAULT_BASE35_FONTS): Add new macro storing the targets of the + PostScript Level 2 standard base 35 font descriptions. + (devpdffont_DATA): Populate using `DEFAULT_BASE35_FONTS`. + (URW_BASE35_FONTS): Add new macro, empty if [!HAVE_URW_FONTS]; + and [HAVE_URW_FONTS] otherwise naming the `U` foundry font + description counterparts of the `DEFAULT_BASE35_FONTS`. + (devpdffont_DATA): Append `URW_BASE35_FONTS`. + ($(DEFAULT_BASE35_FONTS) $(URW_BASE35_FONTS)): Assert dependency + on "font/devpdf/download". This isn't literally true, but + BuildFoundries generates all of these together, so if the + "font/devpdf/download" target rule runs successfully, the font + description files named in these macro expansions will be + generated too. + +2022-11-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/afmtodit/afmtodit.pl: Add new command-line option to + specify the generated font description's "spacewidth" parameter; + in commit bf7f6862c3, 2021-09-24, I made libgroff complain if + this directive is missing (since any font, even a "special" one, + can be selected as current and the formatter's behavior when + encountering an input space should be well-defined under that + circumstance). Adding this option enables a well-formed font + description to be produced. + * src/utils/afmtodit/afmtodit.pl (usage): + * src/utils/afmtodit/afmtodit.1.man (Synopsis, Options): + Document it. + * NEWS: Add item. + +2022-11-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/afmtodit/afmtodit.pl: Use our own fatal exit + function instead of Perl's "die". + (croak): New subroutine emits argument as part of diagnostic + message and exits with status 1. + (usage): Exit with status 2, not 1, on usage errors. + + * NEWS: Document new exit behavior. + +2022-11-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devpdf/devpdf.am (font/devpdf/download): Improve + comprehensibility of comments in generated "download" file. + Stop bracketing path element separator with spaces. + +2022-11-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devpdf/util/BuildFoundries.pl (LoadFoundry): Stop + capitalizing beginning of diagnostic message (per GNU Coding + Standards). Drop ellipsis from end since no further diagnostics + relevant to that message are expected. Trim trailing slashes + from font path elements. + +2022-11-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devps/devps.am: Refactor. Turn two identical target + rules into a (BSD-make-style, old-fashioned) pattern rule. + +2022-11-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * configure.ac: Rechristen self "GNU roff". + +2022-11-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/pic/pic.ypp: Slightly refactor. Rename parameter + `form` (format) to `fmt` to make its nature as an abbreviation + clear. + (format_number, do_sprintf): Reorder null pointer equality + comparisons to avoid inadvertent lvalue assignment. + (do_sprintf): Declare lists of valid format conversion + specifiers and modifiers explicitly instead of as happenstance + literals. Recast diagnostic messages to refer to "invalid", not + "bad" input; refer to input keyword correctly as "sprintf" (not + "snprintf"); and report the identity of the invalid conversion + specifier we reject. + +2022-11-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/doc.tmac (Fl, doc-flag-recursion, doc-print-recursive) + (doc-print-prefixes, Ar, Nm, Pa, Xr, doc-do-func, Fn) + (doc-do-func-args, Fo): Remove now-relic resets of type size to + previous value. Since commit 5125754cdf, 23 February, no mdoc + macro ever changes the type size. + +2022-11-08 Deri James <deri@chuzzlewit.myzen.co.uk> + + [gropdf]: Cater for invalid entries in download file. + + * src/devices/gropdf/gropdf.pl: Test if path in the "download" + file points to a readable file. Also change order so that the + first valid entry is used as the font to embed. This replaces + previous order where last found entry is used. + + Fixes <https://savannah.gnu.org/bugs/?62950>. + +2022-11-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Set page topic in roman in "Name" section. + + * tmac/doc.tmac (Nm): If in the "Name" section of the page, set + argument(s) with the `No` (normal formatting) macro instead of + handling them...normally. Since `Nm`'s usual behavior is to set + the next argument in boldface, in this circumstance it is set in + roman. Aligns page rendering with man(7) and fixes a bug + documented in the 4.3BSD-Reno mdoc.samples(7) page (1990-06-22), + upon which the groff_mdoc(7) page is based. + * tmac/groff_mdoc.7.man (Bugs): De-document bug. + + Fixes part of <https://savannah.gnu.org/bugs/?62926>. + +2022-11-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-common: Add internal register + `doc-in-name-section` to keep track of whether a macro is called + within the "Name" section of the document, to prepare a means of + fixing a long-standing bug with `Nm`. + (Sh): Canonicalize capitalization of section heading sooner. + Set or clear `doc-in-name-section` based on result. + (Rd): Add new register to dump. + * tmac/doc.tmac (doc-save-global-vars, doc-restore-global-vars): + Handle new register. + +2022-11-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Use font CR, not CB, for `Cm` ("command modifier") and + `Fl` ("flag") macros on typesetters. + + * tmac/mdoc/doc-ditroff (doc-Cm-font, doc-Fl-Font): Switch to + Courier roman from Courier bold. This congrues better with + other `Li` literals, which were not in boldface. + +2022-11-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-nroff (doc-Li-Font): Switch from roman to bold. + On typesetters, the use of Courier (roman) plainly distinguishes + unquoted literals from their context. On terminals there was no + such visible distinction. Fortunately, in groff_mdoc(7) itself, + this does not result in a blinding blitz of boldface because the + `Ql` (quoted literal) macro is so often used, and it maintains + the roman style. This change further aligns groff mdoc(7) with + groff man(7) style conventions. (Also see how we handle + literals for typesetters and terminals in the "ms.ms" document.) + +2022-11-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Make `Sx` macro perform quotation, not italicization. + It's thorougly inconsistent with English composition practices + to refer to (sub)section headings within a document as if they + were major works. + + * tmac/doc.tmac (Sx): Implement. + * tmac/mdoc/doc-ditroff (doc-Sx-font): + * tmac/mdoc/doc-nroff (doc-Sx-font): Delete. + * tmac/groff_mdoc.7.man (Section Cross References): Rename... + ((Sub)section cross references): ...to this. Recognize + existence of `Ss` macro, curiously overlooked before. + * NEWS: Add item. + +2022-11-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Drop now-unused `doc-pageref` string. It was nowhere + interpolated outside of state management macros. + + * tmac/doc.tmac (doc-save-global-vars, doc-restore-global-vars): + * tmac/mdoc/doc-common: Do it. + +2022-11-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-common (doc-header, doc-footer): Revise for + clarity and to use correct typefaces for titles. + (doc-header): Add new strings to ease title construction. + `doc-xref` stores the fully formatted page topic and section + number, e.g., "troff(1)"; `doc-abbv` stores the its potentially + abbreviated form when it is too long to fit. + (doc-footer): Use `doc-xref` as above. Stop setting the `Os` + and `Dd` parameters in the ("semantic"?) font used for the + page's section number (probably unnoticed all these years + because the font used to render that was (Times) roman). + +2022-11-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/doc.tmac: + * tmac/mdoc/doc-common: Rename strings for clarity. + - doc-document-title -> doc-page-topic + - doc-document-title-saved -> doc-page-topic-saved + * tmac/mdoc/doc-common: Use new name. + +2022-11-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-ditroff (doc-page-topic-font): + * tmac/mdoc/doc-nroff (doc-page-topic-font): Set man page topic + names in italics. + +2022-11-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-ditroff: + * tmac/mdoc/doc-nroff: Rename strings for clarity. + - doc-caption-font -> doc-page-topic-font + - doc-caption-font2 -> doc-page-section-font + * tmac/mdoc/doc-common (doc-header, doc-footer): Use new names. + +2022-11-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/doc.tmac: Delete suppression of `Pa` font selection in a + "Files" section. This special handling was not documented. + +2022-11-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-ditroff (doc-Pa-font): Set file specifications + in italics on typesetters. (Terminals already use italics.) + +2022-11-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-ditroff (doc-Xr-font): + * tmac/mdoc/doc-nroff (doc-Xr-font): Set man page topic cross + references in italics. + +2022-11-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-ditroff: + * tmac/mdoc/doc-nroff: Rename `doc-Tn-font-shape` to + `doc-Tn-font` for better parallelism with other font selection + strings for mdoc macros, since the `Tn` macro no longer + manipulates the type size. + * tmac/doc.tmac (Tn): Use new name. + +2022-11-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Debugging): Fix misleading claim. The + arguments to the `tm`, `tmc`, and `tm1` requests are not read in + copy mode. For example, you don't need to double backslashes to + get them to interpolate registers or strings. + +2022-11-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac (an-end): + * tmac/mdoc/doc-common (doc-end-macro): Ensure that document + footer appears in continuous rendering mode even when a final + pending output line in the document is 1v from the page bottom. + Replace `fl` call with `br`, which IMO has clearer semantics. + Extend page length by 1v before doing so if the current vertical + position is within 1v of the page bottom. + + Thanks to Alex Colomar for the report. + +2022-11-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man, mdoc]: Regression-test special case of continuous + rendering when the last pending output line in the document is + 1v from the (notional) page bottom. + + * tmac/tests/an_output-footer-when-continuously-rendering.sh: + * tmac/tests/doc_output-footer-when-continuously-rendering.sh: + Do it. + * tmac/tmac.am (tmac_TESTS): Run tests. + +2022-11-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac (TE): Update diagnostic to mention another + failure mode: a man page that is simply a `so` request requires + soelim(1) to be run if the sourced page uses tbl(1). + +2022-11-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/xditview/xditview.am + ($(GXDITVIEW_GROFF_VERSION_H)): Run `$(MKDIR_P)` and `printf` as + separate rule commands in order to use them with `$(AM_V_at)` + and `$(AM_V_GEN)`, respectively. Prevents noise from build. + + Fixes <https://savannah.gnu.org/bugs/?63302>. Thanks to Bjarni + Ingi Gislason for the report. + +2022-10-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + [eqn]: Fix Savannah #63299. + + * src/preproc/eqn/main.cpp: Revise input file line number + handling. + (read_line): Stop dealing with `current_lineno` here; it's now + up to its caller (`do_file()`) to manipulate the line number. + (do_file): When reading new file, initialize `current_lineno` to + 1 instead of 0. Reset it to zero when encountering EOF (so that + diagnostics will not include a line number at all). When + performing nested call to `read_line()` to gather '.EN' from + input, increment the line number. Write correct line number in + output groff `lf` requests; in groff, its first argument assigns + the number of the _next_ input line. Increment line number at + end of outer `read_line()` loop. + + Fixes <https://savannah.gnu.org/bugs/?63299>. Thanks to Alex + Colomar for the report. + +2022-10-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + [eqn]: Regression-test Savannah #63299. + + * src/preproc/eqn/tests/\ + diagnostics-report-correct-line-numbers.sh: Do it. + * src/preproc/eqn/eqn.am (eqn_TESTS, TESTS, EXTRA_DIST): Run + test. + +2022-10-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/grog/grog.pl (fail, warn, construct_command) + (version): Restore trailing newlines to `print`ed output. They + went missing when I removed the assignment of the output record + separator in commit 6f2e367836, 24 October. Thanks to Dave + Kemper for catching this. + +2022-10-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/preconv/preconv.cpp: Trivially refactor. Rename + `default_encoding` to `fallback_encoding` for clarity. Update + comments and debugging diagnostic messages accordingly. + +2022-10-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grolj4]: Absorb lj4_font(5) man page into grolj4(1). + + * src/devices/grolj4/lj4_font.5.man: Delete, moving content... + * src/devices/grolj4/grolj4.1.man (Fonts): ...hither. + + * doc/doc.am (GROFF_MAN_PAGES1): + * src/devices/grolj4/grolj4.am (man5_MANS, EXTRA_DIST): Stop + formatting and shipping removed page. + + * src/roff/groff/groff.1.man: + * src/utils/hpftodit/hpftodit.1.man: Drop references to page. + + Fixes <https://savannah.gnu.org/bugs/?61819>. + +2022-10-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Support `SN` register to configure subsection heading + indentation. + + * tmac/doc.tmac: Recognize `SN` register if set on command line + and use groff man(7)-compatible default if it is not. + * tmac/mdoc/doc-common (Ss): Use this register instead of a + literal. + * tmac/groff_mdoc.7.man (Formatting with groff, troff, and + nroff): Document it. + * NEWS: Update item. + + Fixes part of <https://savannah.gnu.org/bugs/?62926>. + +2022-10-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Support `IN` register to configure paragraph + indentation. + + * tmac/doc.tmac: Recognize `IN` register if set on command line + and use groff man(7)-compatible defaults if it is not. + * tmac/mdoc/doc-common (Sh): Use this register instead of + `doc-paragraph-indentation`. + * tmac/mdoc/doc-ditroff: + * tmac/mdoc/doc-nroff: Stop setting pargraph indentation + defaults here. + * tmac/groff_mdoc.7.man (Formatting with groff, troff, and + nroff): Document it. + * NEWS: Update item. + + * tmac/tests/doc_Mt-works.sh: + * tmac/tests/doc_indents-correctly.sh: Update test expectations. + + Fixes part of <https://savannah.gnu.org/bugs/?62926>. + +2022-10-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-common (Sh): Fix code style nit. Set paragraph + indentation absolutely rather than incrementally. mdoc(7) + doesn't have relative inset macros like man(7)'s `RS`/`RE`, so + the relative measurement could mislead the reader. (The + section heading itself uses an indentation of 0.) + +2022-10-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Fix Debian #1022179. + + * tmac/mdoc/doc-common (Ss): Indent entire subsection heading by + 3 ens, even if it breaks across output lines. (Change and + restore indentation explicitly instead of using a temporary + indent to achieve this. Also indent absolutely by 3n instead of + retreating by one quarter inch.) + + Fixes <https://bugs.debian.org/1022179>. Thanks to наб for the + report. + +2022-10-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tests/doc_indents-correctly.sh: Add regression test for + Debian #1022179. + + * tmac/tmac.am (tmac_TESTS): Run test. + +2022-10-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Fix misleading register name. + + * tmac/mdoc/doc-common (Sh): + * tmac/mdoc/doc-ditroff: + * tmac/mdoc/doc-nroff: Rename `doc-subheader-indent` to + `doc-paragraph-indentation`, because the latter is what it's + used for. + +2022-10-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_POPPLER): Improve shell code portability. + Per the GNU Autoconf manual, "The -a, -o, '(', and ')' operands + are not present in all implementations, and have been marked + obsolete by Posix 2008. ...portable uses of test should never + have more than four arguments, and scripts should use shell + constructs like '&&' and '||' instead." + +2022-10-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/preconv/preconv.cpp: Alter usage message handling. + (usage): Summarize purpose of program and steer reader to man + page (only) if help was explicitly requested, and exit + successfully from here... + (main): ...instead of calling scope. + +2022-10-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/preconv/preconv.cpp (usage): Use more + communicative metasyntactic variable names. + * src/preproc/preconv/preconv.1.man (Synopsis, Options): Align + with updated usage message. + +2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/html/pre-html.cpp: Alter usage message handling. + (usage): Summarize purpose of program and steer reader to man + page (only) if help was explicitly requested, and exit + successfully from here... + (main): ...instead of calling scope. + +2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grolbp/lbp.cpp: Alter usage message handling. + (usage): Summarize purpose of program and steer reader to man + page (only) if help was explicitly requested, and exit + successfully from here... + (main): ...instead of calling scope. + +2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grolbp/lbp.cpp (main): Handle `getopt_long()` + return value more idiomatically. + +2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grolbp/lbp.cpp: Fix code style nits. + (main): Use standard C library symbols `EXIT_SUCCESS` and + `EXIT_FAILURE` instead of integer literals as arguments to + `exit()`. Add assertion. + +2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grotty/tty.cpp: Alter usage message handling. + (usage): Summarize purpose of program and steer reader to man + page (only) if help was explicitly requested, and exit + successfully from here... + (main): ...instead of calling scope. + +2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grotty/tty.cpp: Fix code style nits. + (main): Use standard C library symbols `EXIT_SUCCESS` and + `EXIT_FAILURE` instead of integer literals as arguments to + `exit()`. Replace `assert(0)` call with communicative + predicate. + +2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/groff.cpp: Alter usage message handling. + (synopsis, help): Coalesce these two functions... + (usage): ...into this one. Summarize purpose of program and + steer reader to man page only if help was explicitly requested, + rather than blitzing user with text upon a usage error. Also + drop option summary from usage message, as it duplicates + groff(1). + +2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/grog/grog.pl: Alter usage message handling. + (help): Rename this subroutine... + (usage): ...to this. Summarize purpose of program and steer + reader to man page only if help was explicitly requested, rather + than blitzing user with text upon a usage error. Also drop + option summary from usage message, as it duplicates grog(1). + +2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/grog/grog.pl: Drop relic code and comments. + +2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grog]: Migrate expansion of Perl interpreter in shebang. + Use the same technique as afmtodit, mmroff, gropdf, and pdfmom. + + * src/utils/grog/grog.am (grog): Replace "@PERL@" instead of + '^\(#! \).*perl'. + * src/utils/grog/grog.pl: Use "@PERL@" in shebang. + +2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + [afmtodit]: Give program a usage message. + + * src/utils/afmtodit/afmtodit.pl: Add new scalar `want_help` of + Boolean sense. Recognize new long option `--help`, attached to + `$want_help`. Stop stripping off directory name components from + program name when emitting diagnostics. No other groff program + does this (well, gropdf did until recently), and it might save + users some confusion if they're working with multiple copies of + afmtodit. + (usage): New subroutine reports usage message. If help was + explicitly requested, summarize purpose of program and steer + reader to man page. + +2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + [afmtodit]: Migrate expansion of Perl interpreter in shebang. + Use the same technique as mmroff, gropdf, and pdfmom. + + * src/utils/afmtodit/afmtodit.am (afmtodit): Replace "@PERL@" + instead of "/usr/bin/perl". + * src/utils/afmtodit/afmtodit.pl: Use "@PERL@" in shebang. + +2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + [gropdf] Give program a usage message. + + * src/devices/gropdf/gropdf.pl: Add new scalar `want_help` of + Boolean sense. Recognize new long option `--help`, attached to + `$want_help`. + (usage): New subroutine reports usage message. If help was + explicitly requested, summarize purpose of program and steer + reader to man page. + +2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/xditview/xditview.c (Syntax): "#if 0" out + reference to `-noPolyText` option, whose effect is likewise + bracketed in another file. + +2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (enable_warning, disable_warning): + Recast diagnostic messages for clarity. + +2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + [pfbtops]: Fix code style and diagnostic nits. + + * src/utils/pfbtops/pfbtops.c (error): Exit with `EXIT_FAILURE` + status (from standard C library) instead of status 2. + (main): Exit with `EXIT_SUCCESS` status when writing version or + help information. Exit with status 2 when dying due to usage + error. Use `fprintf()` and `strerror()` to construct error + message when dying due to inability to open input file instead + of using `perror()`, which anonymizes its caller and thus should + never be used in serious work. Avoid it like `gets()`. + * NEWS: Add item for exit status changes. + + Continues the long process of fixing Savannah #52463. + +2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man pages]: Don't document macro package compatibility wrapper + directory if it's not used. + + * Makefile.am (.man): Use sed to replace + '@COMPATIBILITY_WRAPPERS@' in man page text with value of + `compatibility_wrappers` shell variable. Document its purpose. + * src/preproc/eqn/eqn.1.man (Description): + * src/preproc/grn/grn.1.man (Options): + * src/roff/groff/groff.1.man (Installation directories): + * src/roff/troff/troff.1.man (Environment): Mention + `@SYSTEMMACRODIR@` only if `@COMPATIBILITY_WRAPPERS@` expands to + something other than "no" (it could be "yes" or "manual"). + + Thanks to Alexander Kanavin and Jeremy Puhlman for the report. + +2022-10-21 Robert Yang <liezhi.yang@windriver.com> + + * font/devpdf/util/BuildFoundries.pl: + * src/devices/gropdf/gropdf.pl: + * src/devices/gropdf/pdfmom.pl: Replace use of '-w' in shebang + line with "use warnings;". + +2022-10-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/fallbacks.tmac: Define fallback characters for many code + points from the Unicode General Punctuation Block. This is to + ease migration from other documentation formats; in many cases + there are more idiomatic *roff ways of getting results that + typeset better and are amenable to fine tuning. For instance, + Unicode defines spaces and dashes of various discrete widths; + when typesetting with *roff, you can have a space or dash (among + other things) of any length achievable by the output device. + * tmac/ps.tmac: Migrate non-breaking hyphen fallback character + definition from here to the foregoing. + + Fixes <https://savannah.gnu.org/?58930>. Thanks to Dave Kemper + for the report and discussion. + +2022-10-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac: + * tmac/s.tmac: Escape newlines when opening conditional blocks. + + Fixes <https://savannah.gnu.org/?63197>. Thanks to Bjarni Ingi + Gislason for the report and Dave Kemper for the quick fix. + +2022-10-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grodvi/dvi.cpp (usage): + * src/devices/grohtml/post-html.cpp (usage): + * src/devices/grolbp/lbp.cpp (usage): + * src/devices/grolj4/lj4.cpp (usage): + * src/devices/grops/ps.cpp (usage): + * src/devices/grotty/tty.cpp (usage): + * src/devices/xditview/xditview.cpp (usage): + * src/preproc/eqn/main.cpp (usage): + * src/preproc/grn/main.cpp (usage): + * src/preproc/html/pre-html.cpp (usage): + * src/preproc/pic/main.cpp (usage): + * src/preproc/preconv/preconv.cpp (usage): + * src/preproc/refer/refer.cpp (usage): + * src/preproc/soelim/soelim.cpp (usage): + * src/preproc/tbl/main.cpp (usage): + * src/roff/groff/groff.cpp (synopsis, help): + * src/roff/nroff/nroff.sh: + * src/roff/troff/input.cpp (usage): + * src/utils/addftinfo/addftinfo.cpp (usage): + * src/utils/hpftodit/hpftodit.cpp (usage): + * src/utils/indxbib/indxbib.cpp (usage): + * src/utils/lkbib/lkbib.cpp (usage): + * src/utils/lookbib/lookbib.cpp (usage): + * src/utils/pfbtops/pfbtops.c (usage): + * src/utils/tfmtodit/tfmtodit.cpp (usage): + * src/utils/xtotroff/xtotroff.c (usage): Update usage message. + Present different modes of operation on separate output lines. + Sort options in English lexicographic order. Document help + option(s) as last mode of operation. + +2022-10-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/gropdf/gropdf.pl: Revise handling of argument 0. + Rename scalar `progname` to `prog` for brevity (and preparation + for writing a usage message). Also stop stripping off directory + name components from it. No other groff program does this, and + it might save users some confusion if they're working with + multiple copies of gropdf. + +2022-10-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + Migrate terminology from "paper size" to "paper format" or + "paper dimensions" as appropriate in documentation and + diagnostic messages. "Format" implies an orientation (which can + be overridden in many cases) whereas size does not. When only + the magnitudes of measurements are at issue (mainly for internal + purposes), use the term "dimensions". + + * NEWS: + * PROBLEMS: + * doc/groff.texi: + * m4/groff.m4 (GROFF_PAGE): + * man/groff_font.5.man: + * man/groff_tmac.5.man: + * src/devices/grodvi/dvi.cpp (main): + * src/devices/grolbp/grolbp.1.man: + * src/devices/grolbp/lbp.cpp (main): + * src/devices/grolj4/grolj4.1.man: + * src/devices/grolj4/lj4.cpp (lj4_printer::lj4_printer, main): + * src/devices/grolj4/lj4_font.5.man: + * src/devices/gropdf/gropdf.1.man: + * src/devices/grops/grops.1.man: + * src/devices/grops/ps.cpp (main): + * src/roff/groff/groff.1.man: + * tmac/papersize.tmac: Do it. + +2022-10-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-ditroff (doc-left-parenthesis) + (doc-right-parenthesis, doc-left-bracket, doc-right-bracket): + Drop thin and hair space escape sequences from these string + definitions. (Also, doc-right-bracket was inconsistent with + doc-left-bracket, the former inserting horizontal motion only + before the bracket character.) Eliminates excess space when + using Pq, Po, Pc and Bq, Bo, Bc macros and formatting for + typesetters, and aligns output with behavior of `Pq` and `Bq` as + documented in groff_mdoc(7). + + Fixes <https://bugs.debian.org/1021795>. Thanks to наб for the + report. + +2022-10-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-ditroff: Use groff-canonical typeface names in + font selection escape sequences. Migrate 'C' to 'CR' and 'CO' + to 'CI'. (Admittedly, "Courier oblique" is more pedantically + correct than "Courier italic". But the iron ball of Unix troff + history and its style trio [later quartet] of "R", "I", "B" + {then "BI"} will not be ignored.) + +2022-10-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-ditroff: Drop nilpotent type size escape + sequences from string definitions. + +2022-10-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + Document a CSTR #54 erratum regarding \n(st and \n(sb. + + * doc/groff.texi (Page Motions): + * man/groff.7.man (Writable registers): + * man/groff_diff.7.man (New registers): Do it. + + * PROBLEMS: Further clarify. Note DWB and Heirloom behavior. + +2022-10-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/eqn/main.cpp (read_line): Fix switched test + consequents when updating `current_lineno`. + +2022-10-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/xtotroff/xtotroff.c (main): Annotate "xtotroff" as a + GNU program in version information. + +2022-10-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/xditview/xditview.am + ($(GXDITVIEW_GROFF_VERSION_H): Perform correct substitution to + get groff version string into `Version_string` C symbol. + Continues commit c73decb58f, 9 October. + +2022-10-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/afmtodit/afmtodit.1.man (Files): Fix ordering error. + + Fixes <https://savannah.gnu.org/bugs/?63228>. Thanks to Bjarni + Ingi Gislason for the report. + +2022-10-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/eqn/lex.cpp (get_delimited_text): Clear line + number when hitting EOF. + * src/preproc/eqn/main.cpp: Revise end-of-file handling. Clear + line number upon reaching EOF so that we don't report a nonsense + value one greater than the number of lines in the input file. + (read_line): Boolify. Make static (local linkage only), since + it has no external callers. Introduce new Boolean variable + `is_end_of_file`. Clear `current_lineno` if EOF, and increment + it otherwise. + (do_file, main): Clarify diagnostic messages. + +2022-10-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + [eqn]: Improve diagnostics involving unprintable characters. + + * src/preproc/eqn/main.cpp (input_char_description): New + function constructs a human-readable string describing + characters. + (read_line, inline_equation, main): Call new function and adjust + diagnostic message wording to accommodate the phrase it returns. + + Fixes <https://savannah.gnu.org/bugs/?63218>. + +2022-10-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + [eqn]: Improve diagnostics. + + * src/preproc/eqn/lex.cpp (file_input::~file_input): + * src/preproc/eqn/main.cpp (main): Die if `fclose()` fails and + report underlying system error. + (inline_equation): Identify inline equation context. + +2022-10-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac (2c, 1c): Throw diagnostic if changing columnation + with a footnote pending. This isn't necessarily an error per + se, but in many cases it will flag an undesirable page layout + due to the limited flexibility of me(7)'s footnote support at + present. See <https://savannah.gnu.org/bugs/?63176>. + +2022-10-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/eqn/main.cpp: Fix code style nits. + (usage): Align output with man page. Document separate + invocation modes separately. + (main): Use standard C library symbols `EXIT_SUCCESS` and + `EXIT_FAILURE` with `exit()` calls instead of integer literals. + Replace `assert(0)` call with communicative predicate. Check + return value of `fclose()`, and exit with fatal error if it + fails. Distinguish `ferror()` status and `fflush(stdout)` + failures when cleaning up before exit. + +2022-10-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (read_color_draw_node): Clarify + diagnostic. + +2022-10-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/dvi.tmac: Always render \[aq] as a neutral apostrophe. + Thanks to the TC fonts, we can do this even when the default CM + text fonts are in use. + + Fixes <https://savannah.gnu.org/bugs/?63200>. + +2022-10-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/ec.tmac: Remove apparently unnecessary remappings of + styles (and reassertion of style slots in the font mounting + position list, albeit in an unusual order (RBI instead of RIB)). + This code frustrated the rendering of man pages with post-1.22.4 + groff for the 'dvi' output device when using EC fonts. Instead + remap the T and H family typefaces in all four styles + explicitly. (The CW and CWI faces were already handled.) Also + add remappings of groff+PostScriptish font names "CB" and "CBI" + to CW EC faces of normal weight, corresponding to dvi.tmac; see + commits 529e2ca0c4, 2002-03-23 and c9741da6c0, 2021-05-06. + + Fixes <https://savannah.gnu.org/bugs/?63194>. + +2022-10-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tests/an_works-with-ec.sh: Add regression test for + Savannah #63194. + * tmac/tmac.am (tmac_TESTS): Run test. + +2022-10-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tests/ec_works.sh: Add unit test to validate use of EC + fonts when "-mec" option given. + * tmac/tmac.am (tmac_TESTS): Run test. + +2022-10-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/latin2.tmac: + * tmac/latin5.tmac: + * tmac/latin9.tmac: Perform the character remapping shenanigans + of the fix for Savannah #63112 only if the output device is + "latin1" (a terminal using an 8-bit character encoding). Only + then can we be sure that Latin-1 glyphs will be unavailable when + other encodings are used and that `\N` escape sequences will + identify correct glyph indices in a font (because there is no + font per se accessible to groff--simply a terminal implementing + a character encoding). + +2022-10-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/gropdf/gropdf.pl (GetType1): Clarify diagnostic. + When failing to open a font file for embedding in a PDF, mention + this context. + +2022-10-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/afmtodit/afmtodit.tables: Update against Unicode 15. + No substantive changes. + + Fixes <https://savannah.gnu.org/bugs/?63188>. + +2022-10-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * configure.ac: If URW fonts were located, add the directory + where they were found to the configuration report. + + Attempts to fix <https://savannah.gnu.org/bugs/?62860> (2/2). + +2022-10-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4: Try to make gropdf's search for URW font files + more deterministic. To disambiguate cases where multiple--not + necessarily identical--copies may be found on the system, search + _only_ in the directory given to the `--with-urw-fonts-dir` + configure option, if present. This populates the "Foundry" file + generated by the build, causing gropdf to search there first. + (GROFF_URW_FONTS_PATH): Stop `AC_SUBST`ing `urwfontsdir` here. + (GROFF_URW_FONTS_CHECK): `AC_REQUIRE` `GROFF_URW_FONTS_PATH` to + be run first. If `urwfontsdir` is not null, search only there + for URW fonts. Assign `urwfontsdir` the value of the directory + in which the fonts are found. Assign it an empty value if none + are found. Either way, `AC_SUBST` the variable. + + Attempts to fix <https://savannah.gnu.org/bugs/?62860> (1/2). + +2022-10-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/gropdf/gropdf.pl (LoadFont): Clarify diagnostic. + gropdf opens "fonts" in two distinct ways. On the one hand, it + opens groff font description files for essentially all + nontrivial output. On the other, it may open actual Type 1 font + files for embedding in a PDF. Make failure of the former case + less confusable with the latter. + +2022-10-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Document new XN/XH and related macros. + + * doc/groff.texi (Creating a table of contents): + * doc/ms.ms (Creating a table of contents): + * tmac/groff_ms.7.man (Creating a table of contents): Do it. + + Fixes <https://savannah.gnu.org/bugs/?63110>. + +2022-10-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + [gxditview]: Support `-version`, `--version` option. As a C + program, gxditview had no access to the (C++) libgroff + `Version_string` symbol, so construct a header file to store + this datum at build time. If groff gets other user-facing C + programs, we should consider generating this header in + src/include instead. + + * src/devices/xditview/xditview.am: Generate "groff_version.h" + file. + (GXDITVIEW_GROFF_VERSION_H): Define new macro. + ($(GXDITVIEW_GROFF_VERSION_H)): Define target to generate file. + (XDITVIEW_GENHDRS): Add $(GXDITVIEW_GROFF_VERSION_H). + + * src/devices/xditview/xditview.c: Include new header file. + (Syntax): Report newly supported options. + (main): Recognize and handle new options. + + * src/devices/xditview/gxditview.1.man (Synopsis): Document + them. + +2022-10-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + [gxditview]: Update usage message production and contents. + + * src/devices/xditview/xditview.c: Use C99 Boolean type. + (Syntax): Accept additional Boolean argument indicating whether + the usage message is to be issued due to an error. Write + message to stderr if so, and stdout otherwise. Stop presuming + length of output line; guessing where to wrap is unreliable due + to variable terminal width and length of argv[0]. Write one + line per invocation mode of the program. Stop duplicatively + documenting standard X Toolkit options. Exit with standard C + library `EXIT_FAILURE` status if there was an error, and + `EXIT_SUCCESS` otherwise. + (main): Refactor to prepare for `--version` support. + + * src/devices/xditview/gxditview.1.man (Synopsis): Sync list of + options with usage message. + +2022-10-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/afmtodit/afmtodit.pl: Recognize "--version" as + synonym for "-v". To achieve this, use Getopt::Long instead of + Getopt::Std. + * src/utils/afmtodit/afmtodit.1.man (Synopsis, Options): + Document it. + +2022-10-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/gropdf/pdfmom.pl: Recognize "--version" as synonym + for "-v". + * src/devices/gropdf/pdfmom.1.man (Synopsis, Description): + Document it. + +2022-10-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/grog/grog.pl (version): Identify as a GNU program. + +2022-10-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grolj4/grolj4.1.man (Typefaces): Add new + subsection. + + Fixes <https://savannah.gnu.org/bugs/?60929>. Thanks to T. Kurt + Bond for the report. + +2022-10-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/meref.me.in (Columnated Output): Document persistence of + `$s` register value across columnation mode changes. + + Fixes <https://savannah.gnu.org/bugs/?62717>. Thanks to Dave + Kemper for the report. + +2022-10-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/meref.me.in: Annotate empty default arguments more + consistently. + + Fixes <https://savannah.gnu.org/bugs/?62801>. Thanks to Dave + Kemper for the report. + +2022-10-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/meref.me.in: Fix documentation error. + (Summary) <\_>: Describe as "underrule", not "underscore". + These are distinct: the latter is a glyph; the former is drawn + by typesetters and rendered with SGR attributes on terminals. + +2022-10-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + * NEWS: Advise users of changes to "name" directive handling in + font description files. + + Fixes <https://savannah.gnu.org/bugs/?61423>. Thanks to Dave + Kemper for the report. + +2022-10-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/number.cpp: Refactor and fix code style nits. + Boolify and rename static (local) functions. + - parse_expr -> is_valid_expression + - start_number -> is_valid_expression_start + - parse_term -> is_valid_term + Rename preprocessor macro `SCALE_INDICATOR_CHARS` to + `SCALING_UNITS`. + (is_valid_expression, is_valid_term): Rename parameters and + demote them from `int` to `bool`. + - scaling_indicator -> scaling_unit (no demotion) + - parenthesised -> is_parenthesized + - rigid -> is_mandatory + (is_valid_expression_start, is_valid_expression, is_valid_term): + Return Boolean rather than integer literals. + (get_vunits, get_hunits, get_number_rigidly, get_number) + (get_integer): Update call sites of renamed functions. Replace + Boolean-valued integer literals used as Booleans with Boolean + literals and annotate their purposes. (See <https://\ + stackoverflow.com/questions/38076786/\ + why-doesnt-c-support-named-parameters>.) + (get_vunits, get_hunits, get_number, get_integer): Replace `0` + in assertions with a communicative predicate. In all of these + it's an unhandled `switch()` case. + +2022-10-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (do_expr_test, do_zero_width): Use + better terminology in diagnostic messages. + +2022-10-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Fix Savannah #63151. + + * src/roff/troff/input.cpp (read_draw_node): Throw "delim" + warning diagnostic when a drawing escape sequence ends the line + without a closing delimiter. + + Fixes <https://savannah.gnu.org/bugs/?63151>. + +2022-10-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/fallbacks.tmac: Define fallbacks for characters in ISO + Latin-{2,5,9} but not in Latin-1. + + Fixes <https://bugs.debian.org/782903>. Thanks to Rafal Pietrak + for the report. + +2022-10-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Fix Savannah #63149. + + * src/roff/troff/reg.cpp (alter_format): Throw comprehensible + diagnostic when input delete character encountered in register + format. + + Fixes <https://savannah.gnu.org/bugs/?63149>. + +2022-10-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Describe an input delete character comprehensibly. + + * src/roff/troff/input.cpp (token::description): The delete + character (ISO 127 decimal, EBCDIC 7) is a valid `TOKEN_CHAR` + but is not printable. Don't attempt to output it literally in + diagnostics; describe it in a phrase instead. + +2022-10-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Apply consistent terminology. + + * src/roff/troff/input.cpp: Rename functions to better align + with our documentation, and decouple their names from an + assumption of diagnostic severity. Also give them imperative + names since they are called for their side effects, not their + return values. + - empty_name_warning -> diagnose_missing_identifier + - non_empty_name_warning -> diagnose_invalid_identifier + (diagnose_missing_identifier): Refer to absent operand as + "identifier", not "name", in diagnostic messages since the + latter (strictly) refers to the request/macro/string/diversion + name space, and this function is also used to gather register + identifiers. + +2022-10-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tmac]: Fix Savannah #63112 (3/3). + + * tmac/latin2.tmac: Replace characters that ISO Latin-1 has but + Latin-2 doesn't. Map characters that ISO Latin-2 has and + Latin-1 doesn't to their numeric code points. + +2022-10-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tmac]: Regression-test Savannah #63112 (3/3). + + * tmac/tests/latin2_works: Do it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2022-10-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tmac]: Fix Savannah #63112 (2/3). + + * tmac/latin5.tmac: Replace characters that ISO Latin-1 has but + Latin-5 doesn't. Map characters that ISO Latin-5 has and + Latin-1 doesn't to their numeric code points. + +2022-10-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tmac]: Regression-test Savannah #63112 (2/3). + + * tmac/tests/latin5_works: Do it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2022-10-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tmac]: Fix Savannah #63112 (1/3). + + * tmac/latin9.tmac: Replace characters that ISO Latin-1 has but + Latin-9 doesn't. Map characters that ISO Latin-9 has and + Latin-1 doesn't to their numeric code points. + +2022-10-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tmac]: Regression-test Savannah #63112 (1/3). + + * tmac/tests/latin9_works: Do it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2022-10-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp: Refactor to parallelize logic in + similar routines; namely, those handling escape sequences that + accept newlines as argument delimiters. + +2022-10-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp: Fix inconsistencies in handling of + escape sequences that accept newlines as delimiters. Some threw + spurious warnings as in Savannah #63011; others failed to treat + a newline-terminated escape sequence also as the ending of an + input line. + (do_name_test, do_zero_width): Suppress spurious warning. + (do_zero_width, do_width, do_special): Synthesize newline to + terminate input line. + +2022-10-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/tests/\ + some_escapes_accept_newline_delimiters.sh: Add test cases for + `\A` and test formatted output of escape sequences, not just the + absence of diagnostics from permitted use of newlines as + argument delimiters. + +2022-09-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/libs/libdriver/input.cpp (do_file): Make use of + positioning commands before the first page is started fatal + errors; they suggest ill-formed input. The 'p' command + clobbers the vertical position anyway. (See + https://bugs.debian.org/421437 for discussion.) + +2022-09-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/pdf.tmac: Add inclusion guard; if a `pdfmark` macro is + already defined, skip inclusion of this file. Unfortunately + there are multiple name collisions with pdfmark.tmac. + +2022-09-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp: + * src/roff/troff/request.h: Trivially refactor. Boolify + `interpolate_macro` and `request::invoke`. Also rename + parameter `no_next` to `do_not_want_next_token`, exposing + potentially confusing interface design. + +2022-09-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (spring_trap, interpolate_string) + (interpolate_string_with_args): Improve error diagnostics: when + a sprung trap or an interpolation fails because it's being + attempted on a request, say so explicitly and _name_ it. If the + argument to the trap-planting request or to a string + interpolation escape sequence is itself an interpolation, this + name might not be obvious. Consider: + .wh \n[pos] \*[mac] + .em \*[mac] + .itc 1 \*[mac] + \*[\*[mac]] + Supplying this information requires no additional overhead. + +2022-09-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (interpolate_string): Trivially + refactor. Rename function parameter from `s` to `nm` to more + obviously align with `interpolate_string_with_args()`. + +2022-09-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (do_zero_width, token::description) + (interpolate_string, interpolate_string_with_args) + (token::get_char): Revise diagnostic messages to stop presuming + the identity of the escape character. + +2022-09-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (set_escape_char): Recast error + message to describe attempted operation and tell the user what + we're doing about being instructed to use an invalid escape + character. + +2022-09-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (read_size): Be more helpful to + ambiguous type size escape sequence users; offer advice in + terms of the current escape character. + +2022-09-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/groff.cpp (main): Fix SEGV when exiting + gxditview. The `postdriver` pointer always referred to + allocated memory except when the `-X` option was given; it was + then assigned the address of a #defined string literal. It was + thus statically allocated and an error to attempt to `free()` + it. Duplicate the string on the heap instead so that we can + clean up uniformly regardless of postprocessor. Problem caused + by me when introducing `xexit()` in commit 6769e56aab, 20 June. + +2022-09-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac (@o, n2, sk (f, ++): Consistently call `@err` + macro with `do`. + +2022-09-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac: Initialize new register `_f`, the value of `$m` + {column count} of the previous pending footnote, to zero, + meaning there is no previous pending footnote. + (@o): Emit diagnostic when flushing footnotes into a different + column layout than the pending footnote last added. Set `_f` to + zero. + ((f): Emit diagnostic when enqueueing footnote using a different + column layout than the previous pending footnote used. Set `_f` + to `$m`. + + Fixes <https://savannah.gnu.org/bugs/?58736>. Thanks to Dave + Kemper for the report and discussion. + +2022-09-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac: Explicitly initialize and annotate internal + register `?f`. + +2022-09-08 Nikita Ivanov <nikita.vyach.ivanov@gmail.com> + + * tmac/ps.tmac: Fallback definitions for glyphs that usually + come from special fonts should use `schar` instead of `fchar`. + {Define fallback special characters using `schar` instead of + `fchar` for glyphs that we do not expect to find in text fonts; + that is, they don't have bold, italic, and bold-italic stylistic + variants. This means all special character definitions in the + file except for rules, ligatures, and digraphs. Problem dates + back to a series of commits from March 2002 to February 2003, + straddling the introduction of the `schar` request in November + 2002. --GBR} + + Fixes <https://savannah.gnu.org/bugs/?62955>. + +2022-09-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Slightly simplify new `XN` macro feature to align it more + closely with Berkeley TOC macro behavior; don't prepend the + table of contents entry with the section number (`\*[SN]`). If + desired, a document can define `XN-REPLACEMENT`. This does not + regress "pdfmark.ms" because it uses an alternative, older + implementation of these features from "spdf.tmac". + + * tmac/s.tmac (XH-UPDATE-TOC): Update comments. + (XN-REPLACEMENT): Do it. + +2022-09-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/pdf.tmac (pdf*href-I): Call `pdf:error` macro by its + correct name. Both this macro file and + contrib/pdfmark/pdfmark.tmac seem to want to use the 'pdf' + prefix for their macro names, with much confusing overlap. + Problem dates back to commit 87046b2948, 2011-07-26. + +2022-09-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_URW_FONTS_CHECK): If Ghostscript or awk are + unavailable, skip only the prepopulation of the URW font search + path instead of the entire check. This way we still locate the + URW fonts if they are in one of several standard locations. + + Fixes <https://savannah.gnu.org/bugs/?62775>. + +2022-09-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Trivially refactor. + + * src/roff/troff/input.cpp (do_name_test): Boolify and rename + local variables to..."impredicate" their names. + - bad_char -> got_bad_char + - some_char -> got_some_char + +2022-09-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grodvi, ...]: Trivially refactor. + + Tidy up #includes of the "assert.h" header, which we locally + provide to ensure a C99-conformant implementation. Drop + inclusion of header from files that don't directly need it, add + it where they do, and spell the inclusion consistently with + double quotes to cue the reader of its local status. + + * src/devices/grodvi/dvi.cpp: + * src/devices/grolj4/lj4.cpp: + * src/libs/libdriver/printer.cpp: + * src/preproc/eqn/box.cpp: + * src/preproc/eqn/delim.cpp: + * src/preproc/eqn/pile.cpp: + * src/preproc/eqn/script.cpp: Add inclusion. + + * src/include/driver.h: + * src/libs/libgroff/fontfile.cpp: + * src/preproc/eqn/eqn.h: + * src/preproc/html/pushback.cpp: + * src/preproc/refer/refer.h: + * src/preproc/tbl/table.h: + * src/utils/addftinfo/addftinfo.cpp: Drop inclusion. + + * src/include/itable.h: + * src/include/stringclass.h: + * src/libs/libbib/linear.cpp: + * src/libs/libbib/search.cpp: + * src/libs/libgroff/color.cpp: + * src/libs/libgroff/font.cpp: + * src/libs/libgroff/nametoindex.cpp: + * src/libs/libgroff/prime.cpp: + * src/libs/libgroff/searchpath.cpp: + * src/preproc/html/pre-html.cpp: + * src/preproc/preconv/preconv.cpp: + * src/preproc/soelim/soelim.cpp: + * src/utils/indxbib/indxbib.cpp: + * src/utils/lkbib/lkbib.cpp: + * src/utils/lookbib/lookbib.cpp: Respell inclusion. + + Fixes <https://savannah.gnu.org/bugs/?63079>. Thanks to Bjarni + Ingi Gislason for the report. + +2022-09-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff, ...]: Trivially refactor. + + Boolify and rename internal library function from + `invalid_input_char` to `is_invalid_input_char`. + + * src/include/lib.h: Do it. + + * src/libs/libgroff/font.cpp (text_file::next_line): + * src/preproc/eqn/lex.cpp (file_input::read_line): + * src/preproc/eqn/main.cpp (read_line, main): + * src/preproc/pic/lex.cpp (file_input::read_line, + simple_file_input::get, simple_file_input::peek): + * src/preproc/pic/main.cpp (top_input::get, top_input::peek) + (do_file): + * src/preproc/refer/command.cpp (input_stack::push_file): + * src/preproc/refer/refer.cpp (do_file, do_bib): + * src/roff/troff/env.cpp (environment::make_tag): + * src/roff/troff/input.cpp (file_iterator::fill) + (file_iterator::peek, get_char_for_escape_parameter) + (transparent_translate, read_request, asciify) + (input_char_description, read_string, transparent_file, + set_string): Update call sites. + +2022-09-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Tweak diagnostic messages. + + * src/roff/troff/input.cpp (token::description) + (input_char_description): Consistently use articles in + descriptive noun phrases. + +2022-09-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Tweak diagnostic messages. + + * src/roff/troff/input.cpp (non_empty_name_warning): Say + "identifier", not "name", in diagnostic message; it can be + thrown for attempted assignments to invalid register + identifiers, and some of our documentation refers to identifiers + in the name space shared by requests, macros, strings, and + diversions as "names". + + * src/roff/troff/env.cpp (hyphen_trie::read_patterns_file): + * src/roff/troff/input.cpp (get_char_for_escape_parameter) + (token::usable_as_delimiter, non_empty_name_warning) + (pipe_source, psbb_locator::psbb_locator, open_request) + (opena_request, define_class, pipe_output, system_request): + Consistently say "_is_ not allowed". The zero copula poses too + great a risk of incomprehension IMO. + +2022-09-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Add internal string `doc-Lk-font` to manage the typeface + in which to render URIs. + + * tmac/mdoc/doc-ditroff: + * tmac/mdoc/doc-nroff: Add it. Use roman instead of (Courier) + bold. This is more consistent with man(7)'s `UR` and less with + mandoc(1). + + * tmac/doc.tmac (Lk): Use it instead of `doc-Sy-font`. + +2022-09-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Fix Savannah #59738. + + * tmac/doc.tmac (Lk): Process further macro arguments more like + other macros do, calling `doc-print-recursive`. This permits + recognition of end-of-sentence punctuation in the argument list. + + Fixes <https://savannah.gnu.org/bugs/?59738>. + +2022-09-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Regression-test Savannah #59738. + + * tmac/tests/doc_Lk-respect-sentence-ending-punctuation.sh: Do + it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2022-09-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Fix code style nit. Rename `doc-arg-limit` to + `doc-arg-count`. This register doesn't track any sort of limit + on the number of arguments you can give to an mdoc(7) macro, or + anything like that. It is simply a count of the number of + arguments visible to the currently operating macro. + + * tmac/doc.tmac: + * tmac/mdoc/doc-common: + * tmac/mdoc/doc-ditroff: + * tmac/mdoc/doc-nroff: + * tmac/mdoc/doc-syms: Do it. + +2022-09-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + [docs]: Fix errors in documentation regarding which escape + sequences accept newlines as argument delimiters, and other + inaccuracies. + + * doc/groff.texi (Escape Sequences): Cover general cases before + exceptional ones. Leaders can be used as argument delimiters. + Call out letters and numerals as (usually) usable as well. + Correct an almost completely inaccurate list of escape sequences + that accept a newline as an argument delimiter: \A, \b, \o, \w, + \X, and \Z do; \B does not. Correct example of use of newline + as delimiter with \o escape sequence. Stop referring to the + decimal point as an "operator". Drop "newline" from a list of + prohibited delimiters by several escape sequences since it has + already been discussed. + + * man/groff.7.man (Escape sequences): Replace weaksauce cross + reference to our Texinfo manual with a proper discussion of + acceptable delimiters in escape sequences, synced with the + foregoing change. Stop using quotation marks around escape + sequences, except for "\ " which obviously needs it. + + Fixes <https://savannah.gnu.org/bugs/?63002>. Thanks to Dave + Kemper for the report. + +2022-09-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Don't throw a spurious warning when using newline as + delimiter with the few escape sequences that permit this. + + * src/roff/troff/input.cpp (do_overstrike, do_bracket, do_width) + (do_special): Do it. + + Fixes <https://savannah.gnu.org/bugs/?63011>. Thanks to Bjarni + Ingi Gislason for the report and Dave Kemper for the discussion. + +2022-09-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Add regression test for Savannah #63011. + + * src/roff/groff/tests/\ + some_escapes_accept_newline_delimiters.sh: Do it. + * src/roff/groff/groff.am (groff_TESTS): Run it. + +2022-09-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (do_special): Fix code style nit; + align function definition with declaration (internal linkage). + +2022-09-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grops/ps.cpp (ps_printer::special) + (resource_manager::process_file): Fix code style nit. Mark + static structs initialized within functions and never modified + thereafter as `const`. This attempts to work around an apparent + false positive from AddressSanitizer. If it doesn't pacify + ASAN, please explain to me how constant structure members + initialized to string literals and pointers to functions within + the translation unit can ever be null. If that is infeasible, + please report a bug to your compiler vendor. + + Fixes (addresses, at any rate) https://savannah.gnu.org/bugs/\ + ?61643>. Thanks to Bjarni Ingi Gislason for the report. + +2022-09-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Refactor: relocate most rendering option handling to + "doc.tmac" from "doc-ditroff" and "doc-nroff", cutting down on a + lot of duplication. The `S` register retains separate handling. + + * tmac/doc.tmac: + * tmac/mdoc/doc-ditroff: + * tmac/mdoc/doc-nroff: Do it. + +2022-09-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-ditroff (doc-setup-page-layout): In troff mode, + if the user does not define the `LL` register, use the device's + default line length, not 6.5 inches. If the user does not + define the `LT` register, make the default line length for + titles the same as the regular line length, not 6.5 inches + independently of it. This is consistent with man(7)'s handling + of `LL` and `LT`. + +2022-09-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Support `AD` string to set default adjustment mode. + + * tmac/mdoc/doc-common (Sh): Set adjustment mode to + user-specified default, not troff's default (and not only in + troff mode). + + * tmac/mdoc/doc-ditroff: + * tmac/mdoc/doc-nroff: Process `AD` string setting from command + line as man(7) does. + + * tmac/groff_mdoc.7.man (Formatting with groff, troff, and + nroff): Document it. + + * NEWS: Add and update items. + + Fixes part of <https://savannah.gnu.org/bugs/?63046>. + +2022-09-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/doc.tmac (doc-tag-list): Fix code style nit: don't give + `ad` request a numeric argument. Say `l` instead of `0`. + +2022-09-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Align inter-paragraph spacing with man(7). + + * tmac/mdoc/doc-common: Use `doc-paragraph-space` when spacing + prior to section and subsection headings instead of spacing by + the 1v default. + * tmac/mdoc/doc-ditroff: Align inter-paragraph distance amount + in troff mode with man(7), reducing to 0.4v from 0.5v. + +2022-09-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-nroff: Map monospaced fonts (CR, CB, CI, CBI) to + standard styles as man(7) has done for 15 years. This silences + warnings from the formatter when a man page attempts to use + fonts from the Courier family in tbl(1) tables, which is about + the only place a reasonable man page attempts such a thing. + +2022-09-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Stop prefixing center header with name of operating + system. This was hard-coded to "BSD" and stuck on all mdoc(7) + pages using a default manual section number, regardless of host + operating system. Bad idea. Further, the argument to the `Os` + call, if any, or a default, is always disclosed in the left + footer. + + * tmac/mdoc/doc-common: Do it. + (Dt): Initialize `doc-volume` as empty and annotate it; + calling the macro with a numeric second argument overrides the + fallback default of "LOCAL". A slash is no longer needed to + separate a recognized architecture string from the OS name, so + drop it. + + * tmac/tests/doc_smoke-test.sh: Update test expectations. + +2022-09-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Drop dead code. The register + `doc-volume-operating-system-ateol`, introduced in groff 1.18 + {July 2002}, was being tested but never set to a nonzero value. + In fact, it seems never to have been. + + * tmac/mdoc/doc-common: Get rid of it... + (Dt): ...and the dependent block. + +2022-09-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Make `Ux` render "Unix" in mixed case. + + * tmac/mdoc/doc-syms (Ux): Do it. Also remove local string + after we're done with it. + + Continues work begun prior to groff 1.22.4 release. + +2022-09-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Align spacing around headers with man(7). + + * tmac/doc.tmac (doc-save-global-vars, doc-restore-global-vars): + * tmac/mdoc/doc-common (Rd): + * tmac/mdoc/doc-ditroff: + * tmac/mdoc/doc-nroff: Stop defining, saving, and restoring + `doc-header-space`. + + * tmac/mdoc/doc-common (doc-header): When starting new document + and not continuously rendering, space by one half-inch instead + of by the now-defunct `doc-header-space` amount (which, + strictly, should not have applied to this measurement). If + continuously rendering, extend page length by 1v to accommodate + header line. After formatting header, if not continuously + rendering, space to 1 inch below first text baseline. + +2022-09-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Support `C` register for consecutive page numbering. + + * tmac/mdoc/doc-common (Dd): Reset page number to 1 upon new + document only if not consecutively numbering. + + * tmac/mdoc/doc-ditroff: + * tmac/mdoc/doc-nroff: Process `C` register setting from command + line as man(7) does. + + * tmac/groff_mdoc.7.man (Formatting with groff, troff, and + nroff): Document it. + + Fixes part of <https://savannah.gnu.org/bugs/?63046>. + +2022-09-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Align trap management more closely with man(7). + + * tmac/mdoc/doc-common: Call new macro (see below) + `doc-set-up-continuous-rendering` when initializing, if that + mode is configured. + (doc-ne): New macro replaces `ne` request + in continuous rendering mode. It extends the page length by the + amount in the argument or by 1v if none given. + (doc-bp): New macro replaces `bp` request in continuous + rendering mode, setting the page length to the vertical drawing + position. + (doc-set-up-continuous-rendering): New macro renames requests to + emplace the foregoing. + (Dd): Interpret this macro call strictly as starting a new + mdoc(7) document. (andoc.tmac already makes this assumption, + and has for over 20 years. groff_mdoc(7) and mandoc_mdoc(7) + also prescribe the sequence `Dd`, `Dt`, `Os`.) We require this + invariant even more rigidly now because it's the only way we can + be sure that we can process multiple documents while rendering + headers and footers with information corresponding to the + appropriate document. (man(7)'s `TH` has an advantage here in + that calling it is "atomic": from its arguments alone you can + obtain everything you need to know to format the header and + footer. In mdoc(7), permuting the initialization macro order + reliably produces chaos.) Break the page (if necessary) + _before_ processing any arguments (instead of after), to flush + the previous page's footer. Stop calling `doc-set-up-titles` + here; we don't have enough information to do that yet. Also + stop writing the PDF bookmark here, because `doc-document-title` + and `doc-section` will not reflect the new page content yet. + (Os): Once the `doc-operating-system` string content has been + determined, call `doc-set-up-titles`, write the PDF bookmark for + the page, and call `doc-header`, causing the page header to be + formatted. These changes further imply a stronger requirement + on initialization macro ordering being canonical. + + Fixes <https://savannah.gnu.org/bugs/?62774> (7/7). + +2022-09-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Trivially refactor. Relocate string and macro + definition within file. mdoc(7) mandates that the document + setup macros `Dd`, `Dt`, and `Os` be called in that order; + arrange their definitions accordingly, for maintainability. + +2022-09-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Refactor. Rename strings and macro for clarity. These + things don't only affect headers. + - doc-header-string -> doc-pageref + - doc-header-string-saved -> doc-pageref-saved + - doc-setup-header -> doc-set-up-titles + + * tmac/doc.tmac: + * tmac/mdoc/doc-common: Do it. + +2022-09-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Refactor. There is no difference in + `doc-header-string` and `doc-setup-header` between the files + "doc-ditroff" and "doc-nroff", so define them only once, in + "doc-common". + + * tmac/mdoc/doc-common: + * tmac/mdoc/doc-ditroff: + * tmac/mdoc/doc-nroff: Do it. + +2022-09-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Align footer management more closely with man(7). + + * tmac/doc.tmac (doc-save-global-vars, doc-restore-global-vars): + * tmac/mdoc/doc-common (Rd): + * tmac/mdoc/doc-ditroff: + * tmac/mdoc/doc-nroff: Stop defining, saving, and restoring + `doc-footer-space`. + + * tmac/mdoc/doc-common (doc-break-body-text): New macro, called + only when not continuously rendering, schedules a page break. + (doc-footer): Stop vertically spacing by `doc-footer-space`, + instead relying upon a trap to move us here. + + * tmac/mdoc/doc-ditroff (doc-setup-header): + * tmac/mdoc/doc-nroff (doc-setup-header): Set traps at the end + of the page where man(7) does by default; break the body text at + 1 inch from the page bottom, and write the footer at ½ inch. + + * tmac/mdoc/doc-nroff (doc-setup-header): Add 1/6 em "thin + space" between man page name and parenthesized section, for + precise parity with doc-ditroff implementation. (`\|` does not + take up any character cells on nroff devices.) + + Fixes <https://savannah.gnu.org/bugs/?62774> (6/7). + +2022-09-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-common (Dt, Dd): Emit diagnostic warnings if + macros called with no arguments. + + Fixes <https://savannah.gnu.org/bugs/?62774> (5/7). + +2022-09-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Fix code style nit: stop using Control+G as an escape + sequence argument delimiter. This is not necessary in groff and + hasn't been for at least thirty years. See the node/section + "Implementation Differences" of our Texinfo manual. Our mdoc + implementation does not operate in compatibility mode, so using + control characters like this obfuscates input to no advantage. + + * tmac/doc.tmac: + * tmac/mdoc/doc-common: + * tmac/mdoc/doc-ditroff: + * tmac/mdoc/doc-nroff: + * tmac/mdoc/doc-syms: Do it. + +2022-09-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-common (doc-footer): Pull more footer concerns + into this macro. Don't bail out if continuously rendering; + instead, format the appropriate footer text if we are. For now, + break the page only if we are not continuously rendering. + (doc-end-macro): Call `doc-footer` instead of formatting footer + here. + + Fixes <https://savannah.gnu.org/bugs/?62774> (4/7). + +2022-09-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-common (doc-end-macro): When continuously + rendering, set the page reference (e.g., "ls(1)") in the right + footer instead of repeating the left footer. Thanks to Ingo + Schwarze for the discussion. + + * tmac/tests/doc_smoke-test.sh: Update expectations of footer + regression test. + + Fixes part of <https://savannah.gnu.org/bugs/?62926>. + +2022-09-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-common (doc-end-macro): Reset strings to reduce + info leaks from one man page to the next. + + Fixes <https://savannah.gnu.org/bugs/?62774> (3/7). + +2022-09-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-common (Dt): Stop reinitializing `doc-volume` + and `doc-section`. This is the job of package initialization + {and, soon, the end-of-input macro}. + + Fixes <https://savannah.gnu.org/bugs/?62774> (2/7). + +2022-09-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-common: Populate default date string + `doc-date-string` with "UNDATED". + (Dd, Dt, Os): Make more orthogonal: stop touching + `doc-topic-name`. It is "doc.tmac"'s job to initialize it and + the `Nm` macro's job to update it. + (Dd): Do nothing if given no arguments. (You can still blank + out the document date with an explicitly empty argument: + .Dd "" + .) + + Fixes <https://savannah.gnu.org/bugs/?62774> (1/7). + +2022-09-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-common: Change `doc-default-operating-system` + string from "BSD" to "GNU", per discussion with Ingo Schwarze. + See <https://lists.gnu.org/archive/html/groff/2022-07/\ + msg00280.html>. + + * tmac/tests/doc_smoke-test.sh: Update expectations of footer + regression test. + +2022-09-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-common (Dt): Delete lingering and useless + definition of `doc-command-name` string. Thanks to Steffen + Nurpmeso for the report. See commit e9e92ee008, 27 August. + +2022-09-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/pic/pic.ypp (not_lower_than): Emit deprecation + warning for use of 'rand()' with a (non-empty) argument. The + man page has declared it thus for over 30 years, at least since + groff 1.02 (June 1991). + +2022-09-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/pic/pic.ypp (object_spec): Emit deprecation + diagnostic for "plot" command. The man page has declared it + thus for over 30 years, at least since groff 1.02 (June 1991). + +2022-09-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/pic/pic.ypp (placeless_element): Explicitly say + that an unsafe command is being ignored in diagnostic. + +2022-09-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/eqn/main.cpp (main): Drop man page reference from + deprecation diagnostics. The man page might be installed with a + prefix determined at configuration time, and that's too much + trouble to mess with for construction of a message. Trust the + user of these ancient options to try reading the man page with + the same name as the command. + +2022-09-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + [docs]: Revise discussion of measurements. + + * doc/groff.texi: Drop Texinfo @codequote* command brackets + around revised sections; relevant nodes have been reviewed for + correct glyph usage. Move concept index entries for obsolescent + term "machine units" to same location as "basic units". + Bump document date. + (Measurements): Rewrite presentation. We have already + introduced page geometry concepts, including the concept of + basic units. + (Motion Quanta): New subsection node; introduce this concept + much sooner, right after measurement units. Relocate + documentation of `.H` and `.V` registers from a miscellaneous + read-only register list here. Introduce example of rounding to + horizontal motion quantum. + (Default Units): Revise discussion. Stop abusing @result + notation in example. + (Built-In Registers): Relocate `.H` and `.V` as above. + + * man/groff.7.man: Sync with Texinfo content updates. + + Fixes <https://savannah.gnu.org/bugs/?61432>. Thanks to Bjarni + Ingi Gislason for the report. + +2022-09-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + Drop groff_filenames(5) document. It says nothing accurate that + is not covered elsewhere. + + * contrib/groff_filenames: Delete. + * doc/doc.am (GROFF_MAN_PAGES): Drop. + * src/roff/groff/groff.1.man: Drop cross reference to it. + * NEWS: Add item. + + Fixes <https://savannah.gnu.org/bugs/?61818>. + +2022-09-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/tbl.1.man (Table data): Generalize discussion + of roff control line use in tables. + (Examples): Illustrate how to embed a comment in a table. + +2022-08-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * NEWS: man(7)'s `TS` no longer adds vertical space. See commit + 7ec36dc9b9, 30 July. + +2022-08-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/eqn/main.cpp (main): Issue deprecation warning + upon use of '-p' or '-s' options. The eqn(1) man page has + documented these as deprecated since at least groff 1.02 (June + 1991). Don't count on them sticking around another 30 years. + +2022-08-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/eqn/main.cpp (main): Clarify error diagnostics + regarding invalid option arguments. Identify the option being + handled at the time and characterize the argument as "invalid", + not "bad". + +2022-08-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + [eqn]: Drop support for undocumented '-D' option. It has been + undocumented, and issued a warning of its obsolescence upon use, + for 30 years, since groff 1.06 (September 1992). That's plenty + long enough for a deprecation cycle. + + * src/preproc/eqn/main.cpp (main): Do it. + * NEWS: Add item. + +2022-08-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: (EX, EE): Always break line, even if call invalid. + + * tmac/an.tmac (EX, EE): + * tmac/an-ext.tmac (EX, EE): Do it. Ingo Schwarze pointed out + that page authors will expect breaking semantics from these + macros even if using them in an ill-formed way. In a + well-formed document, the breaks are redundant but harmless (the + later `nf` and `fi` requests, respectively, also cause breaks). + +2022-08-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Trivially refactor. + + * tmac/doc.tmac: + * tmac/mdoc/doc-common: Rename string `doc-command-name` to + `doc-topic-name`; the former is misleading for man pages not in + sections 1, 6, or 8. + +2022-08-25 Bjarni Ingi Gislason <bjarniig@vortex.is> + + * man/groff_char.7.man: Fix bad example syntax. + + Fixes <https://savannah.gnu.org/bugs/?62959>. + +2022-08-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Trivially refactor. + + * tmac/mdoc/doc-common: + * tmac/mdoc/doc-ditroff: + * tmac/mdoc/doc-nroff: Stop using "Null" as an empty string + indicator when comparing a string interpolation to an empty + parameter will serve just as well; it is also more idiomatic. + The string in question, `doc-section`, is never formatted if it + is empty anyway; the very tests at issue, which populate + `doc-header-string`, ensure this. + +2022-08-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/env.cpp (environment::set_family): Throw error + if user requests a font family that (when combined with the + current style) can't be resolved to a real font name. Fixes a + regression introduced by me in commit d8cb8cf9d8, 2021-09-15, + arising from a revision of font selection logic in node.cpp to + enable a bunch of _other_ font error diagnostics. + + Fixes <https://savannah.gnu.org/bugs/?62941>. Thanks to Dave + Kemper for the report and two useful end points for a bisection. + +2022-08-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/env.cpp (environment::set_family): Add some + paranoia. Add `assert()`s on the previous font mounting + position still being valid and the font family dictionary lookup + not returning a null pointer. Add an early return for the + latter case (which should be impossible). + +2022-08-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/node.cpp (font_family::make_definite): + Refactor. Rename parameter from inscrutable `i` to + `mounting_position`. Add `assert()` to enforce invariant: we're + passed a mounting position that is nonnegative. Use `pos` as + short alias of parameter once we're into the function body. + Relocate conditional branches to front-load early returns as + well as those requiring little code to handle. This reduces the + average indentation level of the function, a readability win. + +2022-08-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Restore robustness to `EE` misuse. + + * tmac/an.tmac: Add `an*is-in-example` register to track state + of within-exampleness. Not doing so can cause a spurious use of + `EE` to wrongly set the inter-paragraph distance to zero. + (TH): Initialize register. + (EX): Test register; if set, ignore macro call and, if + `CHECKSTYLE` warnings are on, throw diagnostic. Set register. + (EE): Test register; if clear, ignore macro call and, if + `CHECKSTYLE` warnings are on, throw diagnostic. Clear register. + + * tmac/an-ext.tmac (EX, EE): Similar, using `mX` register. + Because AT&T troff had no `return` request, invert the sense of + the tests and put the entire macro bodies inside conditionals. + + This regressed post-1.22.4. Thanks to Ingo Schwarze for the + report and a proposed patch. + +2022-08-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-ext.tmac: Refactor. Rename `mX` to `mZ` so we can use + `mX` for an "in-example" state register in a future commit. + Rename `mE` to `mF` to store the current font's mounting + position. Bizarrely, `mF` was not already used for this + purpose. + +2022-08-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/libs/libgroff/error.cpp (do_error_with_file_and_line): + Trivially refactor. Use separate string constant for invariant + material. (This will make it easier to, for example, store the + diagnostic level strings in an array that can be indexed by + their corresponding `enum` type.) + +2022-08-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (fatal_with_file_and_line) + (error_with_file_and_line, debug_with_file_and_line): Align more + closely with GNU Coding Standards regarding diagnostics: don't + suffix the colon after the program name with a space when + location information follows. + +2022-08-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grohtml/grohtml.1.man: Fix erroneous claim. + Images are not generated when "baseline rules" or "box rules" + are encountered in the input. These are troff special + characters; the former is converted to an underscore and the + latter to U+2502, "box drawings light vertical". This remains + true even if a series of them is drawn with the `\l` escape + sequence. (I also checked vertical line drawing with `\L`. + grohtml's handling of that provoked a rather wet eructation from + my lower esophageal sphincter--the output is assuredly not + correct. But it's still not an image.) + +2022-08-22 Deri James <deri@chuzzlewit.myzen.co.uk> + + Bug #62934 - after glyph remapped mark it as used + + When many glyphs are remapped from code points above 255 + such as writing documents in cyrillic with the U-TR fonts, + gropdf starts reusing code points in the range 128-255. + If subsequently one of those code points is actually required, + such as \(em (code 138), and it has been replaced by a + cyrillic, then it needs to be mapped to another free code. + + To determine if a particular code point is free each glyph + has a USED flag. The bug was caused because after remapping + \(em to the next free glyph the USED flag was not set. So the + next new cyrillic character to be entered was given the same + code point as had been allocated to \(em. + + * src/devices/gropdf/gropdf.pl: Set the USED flag on remapped + glyphs. + + Fixes <https://savannah.gnu.org/bugs/?62934>. + + Thanks to Nikita Ivanov for spotting the problem and testing + the fix. + +2022-08-20 Deri James <deri@chuzzlewit.myzen.co.uk> + + Bug #62923 - problem using aliased glyphs + + With a large font if 2 characters above the 255 code + point limit are aliased, the aliased glyph has incorrect meta + data. + + * src/devices/gropdf/gropdf.pl: Instead of duplicating a pointer + to the font metadata, duplicate the data itself. Then, if the + glyph is remapped to a code point under 256, the metadata is + preserved. + + Fixes <https://savannah.gnu.org/bugs/?62923>. Thanks to Nikita + Ivanov for the report. + +2022-08-18 Deri James <deri@chuzzlewit.myzen.co.uk> + + [gropdf]: Improve parsing of troff font files. + + * src/devices/gropdf/gropdf.pl: Allow the glyph code number + to be octal or hex as well as a decimal number. If entity_name + is missing use name instead. + +2022-08-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Support pic(1) "flyback" feature. + + * tmac/s.tmac (PF): Add macro; it does what `PE` formerly did, + minus vertical spacing. + (PE): Call `PF` and vertically space as before. + + * doc/groff.texi (ms Insertions): + * doc/ms.ms (Tables, figures, equations, and references): + * tmac/groff_ms.7.man (Tables, figures, equations, and + references): Document it. + + * NEWS: Add item. + + Fixes <https://savannah.gnu.org/bugs/?60558>. + +2022-08-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac (@PS): Validate better; check for 2 arguments + exactly. + +2022-08-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + [pic]: Recognize `.PY` as synonym of `.PF`. + + * src/preproc/pic/main.cpp: + * src/preproc/pic/pic.h: Add new Boolean variable, + `want_alternate_flyback` to record `.PY` usage. + + * src/preproc/pic/main.cpp (top_input::get, top_input::peek): + Recognize it. Update diagnostic messages to mention it. + (main): Define `PY` troff macro as empty if not defined. + + * src/preproc/pic/troff.cpp (troff_output::finish_picture): + Don't advance the vertical position if `want_alternate_flyback`. + Write out the `PY` macro call if it was on the input. + + * src/preproc/pic/pic.1.man: Document it. + + * tmac/pic.tmac (PY): Define the same as `PF`. + + * NEWS: Add item. + + Fixes <https://savannah.gnu.org/bugs/?62901>. + +2022-08-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + [pic]: Refactor `flyback_flag`. + + * src/preproc/pic/main.cpp: + * src/preproc/pic/pic.h: + * src/preproc/pic/troff.cpp: Rename to `want_flyback`. + + * src/preproc/pic/main.cpp: + * src/preproc/pic/pic.h: Demote type from `int` to `bool`. + + * src/preproc/pic/main.cpp (top_input::get, top_input::peek): + Use parentheses to clarify operation precedence. + +2022-08-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/eqn/eqn.1.man: Expand to include lists of + recognized primitives and predefined macros. + +2022-08-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + * NEWS: Add item for new groff mm `V` register support. + +2022-08-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/eqn/lex.cpp (do_delim): Recognize "delim on" even + in compatibility mode, enabling tbl to toggle eqn delimiter + recognition when it is run in compatibility mode as well. + * src/preproc/eqn/eqn.1.man (Controlling delimiters): Update. + * NEWS: Add item. + + Fixes <https://savannah.gnu.org/bugs/?62852>. Thanks to Bjarni + Ingi Gislason for the report. + +2022-08-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac (TH): Fix spurious complaint from `CHECKSTYLE` + feature when a custom manual section title is declared for a + standard section number. Thanks to Quentin Monnet for the + report. + +2022-07-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/pdfpic.tmac: Finish incomplete string renames. Continues + 0fd6ab6b4c, 21 January. + pdfpic*file-name -> pdfpic*file-name-base + pspic-args -> pdfpic*pspic-args + +2022-07-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac (TS): Stop inserting space before tables. Unlike + ms(7), man(7) has no concept of "displays" and thus none of + "display distance". It is up to the page author to use + paragraphing macros around tables if vertical space is desired. + And not up to us to impose it. + + Fixes <https://savannah.gnu.org/bugs/?62841>. + +2022-07-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Regression-test Savannah #62841. + + * tmac/tests/an_TS-adds-no-vertical-space.sh: Do it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2022-07-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/table.cpp (table::do_bottom): Avoid + overprinting a double-boxed table's bottom border on nroff + devices. + +2022-07-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Expand regression test for Savannah #49390. Check for + overlap of double box borders, too. + + * src/preproc/tbl/tests/\ + do-not-overlap-bottom-border-in-nroff.sh: Do it. + +2022-07-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Fix Savannah #49390. + + * src/preproc/tbl/table.cpp (table::do_bottom): Avoid + overprinting a boxed table's bottom border on nroff devices. + + Fixes <https://savannah.gnu.org/bugs/?49390>. Thanks to Osamu + Sayama for the report. + +2022-07-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Regression-test Savannah #49390. + + * src/preproc/tbl/tests/\ + do-not-overlap-bottom-border-in-nroff.sh: Do it. + * src/preproc/tbl/tbl.am (tbl_TESTS): Run test. + +2022-07-28 Deri James <deri@chuzzlewit.myzen.co.uk> + + [gropdf]: Improve slant application to lowercase Greek letters. + <https://lists.gnu.org/archive/html/groff/2022-07/msg00210.html> + + * tmac/pdf.tmac: Slant only if the glyph is sourced from a + special font, not a regular (text) font containing Greek glyphs. + +2022-07-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac: Add italic correction support to `I` and `BI` + macros. Call `par*define-font-macro` with newly recognized + third argument indicating that italic corrections should be + applied. + (par*define-font-macro): Apply the corrections if directed. + +2022-07-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (input_char_description): Clear + static buffer on every entry to the function so that calling it + twice in succession where the second call populates the buffer + with less data than the first doesn't leave garbage characters + in a diagnostic message. Problem appears to date back to 1991 + or earlier. + + Fixes <https://savannah.gnu.org/bugs/?62813>. + +2022-07-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (token::usable_as_delimiter): + (do_non_interpreted, interpolate_arg): Recast diagnostic + messages for clarity. + +2022-07-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac: Initialize section number registers. Fixes + warnings when starting section numbering at a depth greater than + 1. + + Fixes <https://savannah.gnu.org/bugs/?62812>. + +2022-07-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_PAGE): Use 'grep -q' instead of redirecting + standard output to null device. The '-q' option was + standardized in POSIX Issue 5 (1997) or earlier. Also drop the + redirection of the standard error stream; we have already + checked the file named in "$descfile" for existence and + readability. grep should thus not emit diagnostic messages. + +2022-07-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_PAGE): Macro used awk(1) without + `AC_REQUIRE`-ing a relevant macro or checking for its existence. + Fortunately, sed is powerful enough for our needs. Remove + dependency on awk. Cope with "search" directive in resolv.conf + having multiple arguments. Match "domain" directive in same + file instead of "dom", which I cannot find attested (this logic + dates to 1991). Rename `dom` shell variable to `domains` for + clarity, since its multiplicity could be greater than 1. + +2022-07-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_PAGE): Refactor: drop AC_DEFINE of + `PAGEA4`. This symbol appears to be a relic; it is nowhere + tested or dereferenced. + +2022-07-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tty-char.tmac: Drop definition of \[sd] special + character. This was superseded by commit 78e666246c, 8 May, + which defined a fallback for the character in tty.tmac instead. + Thanks to Dave Kemper for the catch. + +2022-07-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tests/pdfpic_does-not-choke-on-bad-pdfinfo-output.sh: + Skip test if "pdfinfo" command not available. + +2022-07-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + [build]: Add sanity checks for font description file generation + for PDF output device, prompted by discussion with Ingo + Schwarze. See <https://lists.gnu.org/archive/html/groff/\ + 2022-06/msg00094.html>. + + * font/devpdf/tests/basic-fonts-present.sh: + * font/devpdf/tests/urw-fonts-present.sh: Add files. + + * font/devpdf/devpdf.am (font_devpdf_TESTS): Add the former test + unconditionally, and the latter only if `HAVE_URW_FONTS`. + +2022-07-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devpdf/devpdf.am: Refactor to simplify. Now that + symbol.map lives in the "devpdf/generate" directory along with + the other map files, it doesn't need a dedicated Makefile target + to produce it. + (DEVPDFFONTMAP_1, DEVPDFFONTMAP_2): Coalesce and rename to... + (devpdffontmapdata): ...this. + (font/devpdf/map/symbol.map:): Drop target. + (devpdffontmap_DATA, font/devpdf/download): Update dependencies. + +2022-07-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devpdf/util/BuildFoundries.pl (LoadFoundry): Recast + diagnostic message so that the user understands the consequence + of failure to locate a Type 1 font file (that isn't one of the + base 14 PostScript level 1 fonts): the font will be unavailable + for the "pdf" output device. + +2022-07-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devpdf/util/BuildFoundries.pl (LoadFoundry): Separate + lists of Type 1 font names with spaces as well as commas, for + better diagnostic message readability. Also begin message in + lowercase (per GNU Coding Standards). + +2022-07-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devpdf/util/BuildFoundries.pl (LoadFoundry): Verify that + `$foundrypath->[$j]` is defined before operating on it. + +2022-07-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + [afmtodit]: Clarify diagnostic message. + + * src/utils/afmtodit/afmtodit.pl: When we have excess Adobe + Glyph List mappings for a groff special character identifier + {making the reverse mapping from groff special character to font + glyph name ambiguous}, report that we're ignoring the excess. + Use "print STDERR" instead of Perl "warn" built-in since we want + diagnostic messages to start with the name of the program + emitting them. + +2022-07-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + [build]: Name and place PS->groff glyph name maps consistently. + + * font/devps/symbolmap: Rename from this... + * font/devps/generate/symbol.map: ...to this. + + * font/devpdf/devpdf.am (font/devpdf/map/symbolmap): Rename + target... + (font/devpdf/map/symbol.map): ...to this. + (font/devpdf/map/symbol.map): Copy "devps" version of file from + its new location in the "generate" subdirectory. + + * font/devpdf/Foundry.in: Reflect rename. + + * font/devps/generate/Makefile (symbolmap): Rename target... + ($(srcdir)/symbol.map): ...to this. + + * font/devps/devps.am (DEVPSGENFILES, EXTRA_DIST): + * font/devps/generate/Makefile (S, EURO $(SPECIALFONTS), clean): + * src/utils/afmtodit/afmtodit.1.man: Reflect rename and + relocation. + + * font/devps/generate/dingbats.rmap: Rename from this... + * font/devps/generate/dingbats-reversed.map: ...to this. + + * font/devps/devps.am (DEVPSGENFILES): + * font/devps/generate/Makefile (ZDR): + * src/utils/afmtodit/afmtodit.1.man: Reflect rename. + + * font/devps/generate/lgreekmap: Rename from this... + * font/devps/generate/slanted-symbol.map: ...to this. + + * font/devps/devps.am (DEVPSGENFILES): + * font/devps/generate/Makefile (SS): + * src/utils/afmtodit/afmtodit.1.man: Reflect rename. + + * font/devps/generate/textmap: Rename from this... + * font/devps/generate/text.map: ...to this. + + * font/devpdf/Foundry.in: + * font/devpdf/devpdf.am (DEVPDFFONTMAP_1): + * font/devps/devps.am (DEVPSGENFILES): + * font/devps/generate/Makefile (TEXTMAP): + * src/devices/gropdf/gropdf.1.man: + * src/devices/grops/grops.1.man: + * src/utils/afmtodit/afmtodit.1.man: Reflect rename. + +2022-07-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am (doc/ms.ps): Add dependency on "eqn", and call + groff with "-e" option. + * src/utils/grog/tests/smoke-test.sh: Update expected "grog" + output for the ms.ms document. + +2022-07-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am (doc/ms.ps): Add dependency on "tbl". + +2022-07-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/node.cpp (suppress_node::tprint): Add source + file line number after its name when emitting "grohtml-info", to + aid debugging. + +2022-07-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/node.cpp (get_register, get_string): Reorder + null pointer inequality comparisons; they don't need to be in a + funny order because it's pretty hard to mistype `!=` as an + assignment operator. Annotate them as null pointers to ease any + future migration to ISO C++11. Use primitive type constructor + instead of C-style cast operator; this seems more idiomatic. + +2022-07-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/html/pre-html.cpp (generateImages): Flush the + standard error stream after writing to it in a loop. + +2022-07-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac (RP): Recognize new optional arguments + `no-renumber` and `no-repeat-info`, the latter as a synonym for + the existing `no`. The former suppresses the page number + manipulation that normally occurs. Drop now-unnecessary `pn 0` + request. + (top level, cov*first-page-init, RP, cov*print): Rename + `cov*rp-format` to `cov*use-rp-format` for clarity. + (cov*break-page): New macro breaks the cover page at the end, + resetting next page number to 1 only if desired by user. + (cov*print, cov*rp-print): Call `cov*break-page` instead of + invoking `bp`. + + * doc/groff.texi (Document Description Macros) <RP>: + * doc/ms.ms (Document description macros) <RP>: + * tmac/groff_ms.7.man (Document description macros) <RP>: + Document them. + + * NEWS: Add item. + +2022-07-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac: Rename register `cov*rp-no` to + `cov*rp-no-repeat-info`. + +2022-07-08 Deri James <deri@chuzzlewit.myzen.co.uk> + + * font/devpdf/util/BuildFoundries.pl (LocateFile): Some systems + store .afm files in a parallel directory to the Type 1 files, + restore original path after checking for parallel directory. + +2022-07-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devpdf/devpdf.am (font/devpdf/download): Call + "BuildFoundries" with new `--strict` option so that the build + fails if the AFM files for the URW fonts can't be found. + +2022-07-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devpdf/util/BuildFoundries.pl: Add Boolean-valued scalar + `beStrict` (defaults false) and new command-line option + `--strict` to make it true. + (LoadFoundry): Check return value of subroutine `LocateAF`. + Emit diagnostic if it is null, as a warning if not "strict", and + fatal if so. + +2022-07-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devpdf/devpdf.am (font/devpdf/util/BuildFoundries): Add + dependency on "afmtodit" since "BuildFoundries" calls this + program when generating groff font description files from URW + fonts. + +2022-07-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Fix Savannah #62690. + + * tmac/s.tmac (P1, SC, UC, P2): Drop undocumented support for + document-private macros used by Kernighan & Cherry's + "Typesetting Mathematics -- User's Guide (Second Edition)". + + Fixes <https://savannah.gnu.org/bugs/?62690>. + +2022-07-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Fix Savannah #62688. + + * tmac/s.tmac (DE): Set no-space mode when ending displays. + (@EN): Set no-space mode after outputting the display distance + so that it doesn't combine with inter-paragraph space. + + Fixes <https://savannah.gnu.org/bugs/?62688>. + +2022-07-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Regression-test Savannah #62688. + + * tmac/tests/s_no-excess-space-around-displays.tmac: Do it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2022-07-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Fix Savannah #62687. + + * tmac/s.tmac (@MC): Honor `MINGW` register even when setting + only two columns, as clearly implied by our documentation. + + Fixes <https://savannah.gnu.org/bugs/?62687>. + +2022-07-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Regression-test Savannah #62687. + + * tmac/tests/s_honor-MINGW-when-two-columns.sh: Do it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2022-07-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Fix Savannah #62686. + + * tmac/s.tmac (@MC): Set no-space mode before doing a paragraph + reset, not after: we don't want vertical space at the top of the + first column when entering multi-column mode, because then it + doesn't align with the tops of subsequent columns. + + Fixes <https://savannah.gnu.org/bugs/?62686>. + +2022-07-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Regression-test Savannah #62686. + + * tmac/tests/s_mark-column-start-correctly.sh: Do it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2022-07-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac (IX): Drop. + * NEWS: Add item. + +2022-07-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac: Add "sorry" implementations for documented but + unsupported Unix Version 7 ms macros. This way it's easier to + tell when a historical document needs one and this case is + distinguishable from a document-private macro warned about with + "groff -w mac". + +2022-07-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac (UX): Drop undocumented support for this macro. + This implementation isn't consistent with historical ones, which + identified the trademark holder. But doing that is a problem, + so just stop trying to cope. Also, spelling Unix in full caps + was an imposition by the AT&T legal department on the CSRC. + + "The name Unix is a trademark, originally owned by Bell Labs and + subsequently traded off like a baseball card among a number of + companies." -- Ben Klemens + +2022-07-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Replace incomplete documentation of unimplemented macros. + + * doc/groff.texi (Missing ms Macros): + * doc/ms.ms (AT&T ms macros not appearing in groff ms): Drop, + replacing with... + + * doc/groff.texi (Unix Version 7 ms Macros Not Implemented by + groff ms): + * doc/ms.ms (Unix Version 7 ms macros not implemented by groff + ms): + * tmac/groff_ms.7.man (Unix Version 7 macros not implemented by + groff ms): ...these. + +2022-07-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (do_translate): Throw an error + diagnostic when the user attempts to translate space characters. + {By contrast, translating _to_ [unbreakable, unadjustable] + spaces is an old troff hack often seen as ".tr ~ ", and largely + superseded by groff's "\~" escape sequence, now widely supported + by other troffs.} + + Fixes <https://savannah.gnu.org/bugs/?60803>. Thanks to T. Kurt + Bond and Oliver Corff for the report. + +2022-07-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/pipeline.c: Refactor. Drop function rename via + preprocessor macro usage. Declare and define `c_error` by its + correct name. + (run_pipeline): Update call sites. Stop flushing standard error + stream after calling libgroff's `error` function (which + `c_error` wraps); libgroff already guarantees this operation. + +2022-07-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (abort_request): Flush the standard + error stream before exiting, to improve chances of user seeing + any message as arguments to the `ab` request. + +2022-06-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/html/pre-html.cpp + (char_buffer::run_output_filter): Die if platform supports + neither `fork()` nor `spawn()` for child process creation. + +2022-06-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/html/pre-html.cpp (cleanup): Add function to tidy + memory before exiting. + (main): Register aforementioned function with `atexit()`. Die + if registration fails. + +2022-06-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/html/pre-html.cpp (do_file): Die if `fclose()` + fails; such a situation suggests a pretty hosed environment. + +2022-06-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/html/pre-html.cpp (checkImageDir): If `mkdir()` + fails, use `strerror()` to report the underlying problem. + +2022-06-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/html/pre-html.cpp: Refactor. Drop unnecessary + prototype for static function. Use idiomatic C++98 null pointer + constant. Annotate it as null pointer to ease any future + migration to ISO C++11. Boolify. Use C++98 bool data type + instead of preprocessor macros `TRUE` and `FALSE`. Demote some + global Boolean variables from `int` to `bool` and rename some to + be more clear: `show_progress` -> `want_progress_report`; + `debugging`; `eqn_flag` -> `need_eqn`. + (make_message): Rename this... + (make_string): ...to this. Align more closely with contemporary + version of example from Linux man-pages printf(3) page. Use + `vsnprintf()` to determine size of memory buffer needed prior to + allocation instead of iteratively growing it until it is large + enough. Always die if `vsnprintf()` fails: this function now + always returns a valid pointer if it returns at all. + (makeFileName, setupAntiAlias, imageList::createPage, + imageList::createImage): Update call sites to use + `make_string()`. + (char_buffer::can_see): Demote return type from `int` to `bool`. + (char_buffer::skip_spaces): Drop unused member function. + (char_buffer::read_file, makeTempFiles): Demote return type from + `int` to `void`. Stop returning after calling functions that + don't return. + (char_buffer::read_file): Call `sys_fatal()` if `fread()` + returns an error, similarly to other calls into the standard C + library that this file makes. Improve check for error from + `fread()` by not regarding a return value of zero when the + end-of-file indicator is set as an error condition. + (makeFileName, checkImageDir, char_buffer::run_output_filter, + scanArguments): Call `fatal()` instead of `error()` and then + `exit(1)`. + (makeFileName, scanArguments): Dismiss Shlemiel the Painter: + save return value of `strlen()` and call `strcpy()` multiple + times instead of mixing `strcpy()` and `strcat()`; the latter + approach rescans the string unnecessarily. + (char_buffer::run_output_filter): Stop passing unnecessary null + pointer argument to diagnostic message functions. Stop calling + `fflush()` after libgroff diagnostic function, which always + {ultimately} flushes the standard error stream itself. + (makeTempFiles, do_file, main): Boolify. + (makeTempFiles, do_file): Reorder null pointer equality + comparisons to avoid inadvertent lvalue assignment. + (scanArguments, main): Use `EXIT_SUCCESS` and `EXIT_FAILURE` + constants from C library instead of integer literals for exit + status. + (do_file): Demote return type from `int` to `bool`. Return + Boolean literals. Drop conditional with empty consequent. + (main): Declare local variables closer to the points of use. + Stop trying to be a register allocator: stop reusing loop index + variable `i` as integer storage for another (albeit related) + purpose; introduce `operand_index` instead. Clarify logic by + splitting combined initialization and comparison operations, and + by testing function return value directly instead of storing it + in a pointless temporary. Use `EXIT_SUCCESS` and `EXIT_FAILURE` + constants from C library instead of integer literals for exit + status. + +2022-06-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/groff.cpp (run_commands): Trivially refactor. + Rename variable for clarity; add comment. + +2022-06-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/html/pre-html.cpp + (char_buffer::run_output_filter): Return wait status of child + process. + (char_buffer::run_output_filter, main): Rename local variable + `status` to `wstatus` to recognize distinction between exit + status (a 7-bit quantity) and wait status (a wider type). + (main): Issue fatal diagnostic if child process exited with + nonzero status. Since the child's output to the standard error + stream is lost, advise re-running with different output driver + to see them. This unhappy shortcoming is filed as Savannah + #62673. Explicitly return zero otherwise. + + Fixes <https://savannah.gnu.org/bugs/?60782>. + +2022-06-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/tests/ab_works.sh: Add regression test for + Savannah #60782. + +2022-06-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Trivially refactor. + + * src/roff/troff/input.cpp (token::next): Rename statement label + to use documentary terminology. + * src/roff/troff/node.cpp (make_composite_node) + (make_glyph_node): Make functions static since nothing outside + this translation unit calls them. + * src/roff/troff/node.cpp (make_glyph_node): Refactor optional + argument and its usage. Put it down, flip it, and reverse it. + That is, demote its type from `int` to `bool`, invert its sense, + and rename it since it affects warning, not error, diagnostics. + (character_exists): Update only call site of `make_glyph_node()` + that uses non-default argument value. + +2022-06-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Adjust diagnostic message text to clarify and better + match terminology used in documentation. + + * src/roff/troff/input.cpp (set_escape_char, do_overstrike) + (do_bracket, do_name_test, do_width, do_special): + * src/roff/troff/node.cpp (suppress_node::tprint): Migrate from + "escape" to "escape sequence". + + * src/roff/troff/node.cpp (make_composite_node) + (make_glyph_node): Clarify what went wrong. + + * src/roff/troff/input.cpp (token::get_char) + (check_missing_character): Migrate from "normal character" to + "ordinary character" (see groff_char(7)). + +2022-06-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Rename a function for clarity. + + * src/roff/troff/input.cpp (add_to_node_list): Rename this... + (add_to_zero_width_node_list): ...to this. + (do_zero_width): Update call site. + * src/roff/troff/token.h: Update declaration. + +2022-06-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/groff.cpp (handle_unknown_desc_command): + Refactor to skip unnecessary string comparisons. We explicitly + return in the final case instead of falling off the end of this + void function for consistency if additional cases are added. + +2022-06-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/groff.cpp (handle_unknown_desc_command): + Partially revert commit 64dc40d23a, 19 June. I forgot to save + and restore the previous values of the globals + `current_filename` and `current_lineno`, and, noticing that this + function has 3 return paths, decided that it's cheaper just to + go back to `error_with_file_and_line()`. + +2022-06-21 Deri James <deri@chuzzlewit.myzen.co.uk> + + [gropdf]: Add more search paths to the Foundry file. + + * font/devpdf/Foundry.in: Use the directory specified with the + config flag --with-urw-fonts-dir to populate the default foundry + as well as the U foundry. Important to populate the download + file with font files to embed the fonts not part of the base + pdf fonts or if user wants all fonts embedded. + +2022-06-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-ext.tmac (UR, MT): Fix problem with hyphenation + occurring before the end of the line when the line length was + not the device default (common for man pages at the terminal) + and hyperlinks were enabled. The issue is that the new + environment we created inherits the default environment's line + length (its state at troff initialization, prior to macro + package loading and configuration). This latent issue was + exposed by post-groff 1.22.4 changes to enable the hyphenation + of link text and add the hyperlink feature. Fix it by copying + the line length at the time the macro is called, which is + necessarily after man(7) sets up the line length, to the new + environment. + +2022-06-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grops/psrm.cpp (resource_manager::output_prolog): + (resource_manager::supply_resource): + (resource_manager::read_download_file): Update diagnostic + message language and report underlying problem encountered by + system when failing to open files. This will probably be the + text for ENOENT in most cases, but should help avoid frustration + in those where it isn't. + +2022-06-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grops/psrm.cpp + (resource_manager::read_download_file): Align diagnostic message + wording with gropdf in the same circumstance. + +2022-06-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Throw warning in font category when a font selection + escape sequence is used after the output line continuation + escape sequence on an input line, because it is ignored. + + * src/roff/troff/env.cpp (environment::set_font): Do it. + + * doc/groff.texi (Warnings): + * src/roff/troff/troff.1.man (Warnings): Document it. + +2022-06-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/env.cpp (font_change): Boolify. + +2022-06-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/gropdf/gropdf.pl (LoadFont): Revise error message + when a font can't be found for embedding. User failure to add + an entry for locating the font file seems a more likely scenario + than outright corruption of the file. + +2022-06-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/env.cpp (font_change): Warn upon selection of a + nonexistent font name. + + Fixes <https://savannah.gnu.org/bugs/?62656>. + +2022-06-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Revise `environment::set_font` to return Boolean value + indicating success of font selection operation. + + * src/roff/troff/env.cpp (environment::set_font): + * src/roff/troff/env.h (environment::set_font): Do it. + + This prepares the way for a fix for Savannah #62656. + +2022-06-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/groff.cpp: Use single exit path, freeing + memory allocated for strings. + (xexit): Add `exit()` wrapper; free allocated memory. + (main): Use it in all three exit paths. + +2022-06-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/groff.cpp: Refactor to be more meticulous with + memory. Add globals `saved_path`, `groff_bin_path`, and + `groff_font` to store pointers into the process environment + returned by `putenv()`; once used, they need to remain valid for + the lifetime of the program. + (xstrdup): Add `strdup()` wrapper: dies if `strdup()` fails. + (main): Split nested `strsave()` and `xputenv()` (until recently + `putenv()`) calls. Free duplicate strings prior to exit. + +2022-06-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/groff.cpp (main): Rename temporary variable to + avoid shadowing one in enclosing scope, which can lead to + cut-and-paste errors (ask me how I know). + +2022-06-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/groff.cpp: Slightly refactor to indirect + `putenv` calls through an error-checking wrapper. + (xputenv): Add new function to die if `putenv()` fails. + (main): Update call sites to use it. + +2022-06-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + [groff]: Add information to diagnostic messages. + + * src/roff/groff/groff.cpp (main): Report underlying system + error if `putenv()` fails. + (handle_unknown_desc_command): Set globals `current_filename` + and `current_lineno` from `filename` and `lineno` arguments + passed to us to we can use the simpler interface of `error()` + rather than `error_with_file_and_line()`. + +2022-06-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Update return type of `font::load_desc` function to + enable more informative diagnostics from callers. + + * src/include/font.h (font::load_desc): Change return type from + `bool` to `const char` pointer. + * src/libs/libgroff/font.cpp (font::load_desc): Return null + pointer literal on failed `open()` or validation failures. + Return filespec on success. + + * src/libs/libdriver/input.cpp (do_file): + * src/preproc/grn/main.cpp (getres): + * src/roff/groff/groff.cpp (main): + * src/roff/troff/input.cpp (main): Compare `font::load_desc()` + return value to null pointer literal instead of treating it as a + Boolean. + + * src/roff/groff/groff.cpp (main): Report full filespec of + troublesome "DESC" file when complaining of missing "postpro" + directive. + +2022-06-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/groff.cpp: Add new Boolean global, + `need_postdriver`, and initialize it true. + (main): Make `need_postdriver` false if the `-X` or `-Z` options + are given. Test it later. This prevents groff from exiting + with a fatal error if an output driver is not available, but + also not required. Also reorder null pointer equality + comparison to avoid inadvertent lvalue assignment. + + Fixes <https://savannah.gnu.org/bugs/?62640>. + +2022-06-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/groff.cpp (help): Revise usage message for + expressiveness and clarity. + +2022-06-21 Deri James <deri@chuzzlewit.myzen.co.uk> + + [gropdf]: Correct display of pathnames used. + + * font/devpdf/util/BuildFoundries.pl: Convert array to + string of pathnames. + +2022-06-21 Deri James <deri@chuzzlewit.myzen.co.uk> + + [gropdf]: Fix to gropdf. + + * src/devices/gropdf/gropdf.pl: If pdfbookmark was called + within 5p of top of page (e.g. straight after a .bp when + \n[nl] was zero) the click destination would be off by a + page. + +2022-06-19 Ingo Schwarze <schwarze@openbsd.org> + + * font/devpdf/devpdf.am: Always build PDF font description + files. + + Build font/devpdf/download and the various TR, TB, CR etc. + files in the same directory even when they are not required + by the build because USE_GROPDF is unset, usually because + ghostscript is either unavailable or deliberately disabled + by the person running the build. These files need to be + built and installed anyway, and can be used on the target + system when the required infrastructure is available at run + time. + +2022-06-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + [docs]: Revise introduction of vertical spacing concept to avoid + render inference that the formatter will compute a vertical + spacing appropriate to the type size automagically--it will not. + + Fixes <https://savannah.gnu.org/bugs/?62617>. Thanks to Dave + Kemper for the report. + +2022-06-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + [docs]: Revise discussion of end-of-sentence detection. + + * doc/groff.texi (Filling): + * man/roff.7.man (Concepts): Do it. "Spaces" is a now a term + with a much more restricted usage. Emphasize the input context, + now explicitly identified as plain text files with Unix line + endings. + + Fixes (one hopes) <https://savannah.gnu.org/bugs/?62593>. + Thanks to Ingo Schwarze for the report and Dave Kemper for the + discussion. + +2022-06-10 Deri James <deri@chuzzlewit.myzen.co.uk> + + [gropdf]: Changes to BuildFoundries. + + * font/devpdf/util/BuildFoundries.pl: Collect search paths into + an array rather than a colon delimited string, this allows + the @PATH_SEPARATOR@ character (':' or ';') to be used to + delimit paths yielded by the command 'gs -h' but still use ':' + to delimit paths in the Foundry file. This means the same + Foundry file can be used on all systems. + + * font/devpdf/Foundry.in: Add more likely paths to find the URW + fonts. + +2022-06-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + [build]: Weaken dependency on TeX, instead using it (to generate + the DVI and PDF forms of our Texinfo manual) only if it is + available. + + * m4/groff.m4 (GROFF_USE_TEX_CHECK): Check for presence of 'tex' + executable in path. Set shell variable `groff_use_tex` to "yes" + if present, and "no" otherwise. This check runs only if the + 'makeinfo' and 'texi2dvi' version checks have already passed. + + * configure.ac: Run the new check. Set Automake conditional + `USE_TEX` only if shell variable `groff_use_tex` is "yes". + Report whether "groff.dvi" and "groff.pdf" are (re-)buildable. + + * doc/doc.am: Parameterize names of groff.{dvi,pdf} targets as + Make macros `GROFF_DVI` and `GROFF_PDF`. Define them only if + `USE_TEX`. Do _not_ update `EXTRA_DIST` macro; leave the + literal file names there because we require that distribution + archives contain these files. + (.texi.dvi, .texi.pdf): Update suffix rules to check `USE_TEX` + and fail, complaining of missing 'tex' program, if these targets + are attempted without it being true. Only manually specifying + the file names as targets to 'make' or attempting to generate a + distribution archive without TeX present should cause these + errors. + + * INSTALL.REPO: Update dependency information. + + Fixes <https://savannah.gnu.org/bugs/?62592>. Thanks to Deri + James for the report. + +2022-06-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am (.texi.dvi, .texi.pdf, $(DOC_GNU_EPS)): Quote names + of programs when aborting because they're missing. + +2022-06-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_PROG_MAKEINFO, GROFF_PROG_TEXI2DVI): + Largely revert commit d5013ededc, 21 May: run checks for + 'makeinfo' and 'texi2dvi' programs regardless of presence of + ".tarball-version" file. Their presence is a necessary (but not + sufficient) condition for refresh of formatted forms of our + Texinfo manual if the source is modified. + + Begins addressing <https://savannah.gnu.org/bugs/?62592>. + +2022-06-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + [build]: Rename some groff Autoconf macros to better match + Autoconf's own naming conventions. + + * m4/groff.m4 (GROFF_MAKEINFO): Rename to... + (GROFF_PROG_MAKEINFO): ...this. + (GROFF_TEXI2DVI): Rename to... + (GROFF_PROG_TEXI2DVI): ...this. + + * configure.ac: + * m4/groff.m4 (GROFF_TEXI2DVI): Update call sites. + +2022-06-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac (SH, SS, B, I, SM, SB): Set input trap with `it` + instead of `itc` for better Unix Version 7 man(7) compatibility. + + Fixes <https://savannah.gnu.org/bugs/?51468>. Also see + discussion at + https://lists.gnu.org/archive/html/groff/2022-06/msg00020.html + et sequentia (amid a vigorous bikeshedding of `\&`'s name). + +2022-06-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Regression-test use of input traps. + + * tmac/tests/an_use-input-traps-correctly.sh: Do it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2022-06-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/gropdf/gropdf.pl (LoadDesc): Validate device + description file for essential directives and acceptable values + as grops(1) does. + +2022-06-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff, grohtml, grops, grotty]: Update wording of diagnostic + messages to refer to "motion quantum" rather than "resolution" + where appropriate. + + * src/devices/grohtml/post-html.cpp + (html_printer::html_printer): + * src/devices/grops/ps.cpp (ps_printer::ps_printer): + * src/devices/grotty/tty.cpp (tty_printer::set_char) + (tty_printer::add_char, tty_printer::end_page): + * src/roff/troff/env.cpp (line_length, title_length): Do it. + +2022-06-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/gropdf/gropdf.pl: Do more "DESC" file validation. + (LoadDesc): Bomb out gracefully if any of "unitwidth", "res", or + "sizescale" missing from "DESC" file. This prevents Perl + warnings about use of uninitialized values, and undoubtedly + mangled output. + +2022-06-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/gropdf/gropdf.pl: Revise diagnostic message + handling. + (top level): Add new scalar `progname` to house executable name. + (Msg): Output messages in format recommended by GNU Coding + Standards manual. Identify who's talking (Savannah #52463). + Rename `lev` scalar to `fatal` since it is used only as a + Boolean for immediately exiting with failure status. Report + diagnostic severity as part of message. + (Warn, Die): Add new subroutines through which all diagnostics + are now emitted. + (top level): Migrate a use of Perl `die` builtin to our `Die`. + (top level, ToPoints, LoadDownload, LoadDesc, do_x, GetPoints, + LoadSWF, LoadPDF, LoadStream, BuildStream, ParsePDFHash, + LoadFont, GetType1, GetChunk, RemapChr, do_N): Migrate `Msg(0, + ...)` calls to `Warn` and `Msg(1, ...)` to `Die`. Begin + messages in lowercase (GNU Coding Standards). Recast a few + messages for clarity. + + Continues the long process of fixing Savannah #52463. + +2022-06-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/gropdf/gropdf.pl (Load_Config): Drop unused + subroutine and its commented-out call site, which came in that + way in July 2011. + +2022-06-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/gropdf/gropdf.pl (LoadFont): Warn if a font to be + embedded in PDF output cannot be located in the "download" file. + + Fixes <https://savannah.gnu.org/bugs/?62572>. Thanks to Deri + James. + +2022-06-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/a4.tmac: Drop file from distribution. It has been + superseded by papersize.tmac for nearly 20 years. + * tmac/tmac.am (TMACNORMALFILES): Delete reference. + * NEWS: Add item. + + Fixes <https://savannah.gnu.org/bugs/?62569>. + +2022-06-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + [build]: Parameterize X11-related man pages, so they don't get + spuriously generated (and not cleaned) when building with X11 + support disabled. + + * Makefile.am (.man): Fix logic nit: drop unnecessary removal of + target before clobbering it with sed. + * src/devices/xditview/xditview.am (GXDITVIEW_MAN1): Add new + macro, expanding to nothing if `WITHOUT_X11` and to the target + name otherwise. + (man1_MANS): Append `GXDITVIEW_MAN1` expansion, not a literal. + * src/devices/xditview/xditview.am (XTOTROFF_MAN1): Add new + macro, expanding to nothing if `WITHOUT_X11` and to the target + name otherwise. + (man1_MANS): Append `XTOTROFF_MAN1` expansion, not a literal. + * doc/doc.am (GROFF_MAN_PAGES1): Append foregoing expansions + instead of literals. + +2022-06-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * configure.ac: Add `AM_CONDITIONAL`: `HAVE_URW_FONTS`, so our + Automake files can more easily cope with their absence. + * font/devpdf/Foundry.in: Add easily matched phrases to + comments, to clearly delimit the URW foundry portion of the file + so it can be omitted if those fonts are absent. + * font/devpdf/devpdf.am (font/devpdf/Foundry): Generate file + differently depending on `HAVE_URW_FONTS`; keep the existing + procedure if true, and delete the URW section from the generated + file otherwise, avoiding diagnostic messages from afmtodit(1) + and our BuildFoundries script. + + Fixes <https://savannah.gnu.org/bugs/?62570>. + +2022-06-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devpdf/devpdf.am (font/devpdf/util/BuildFoundries): + Generate script using the `PATH_SEPARATOR` Automake macro. + * font/devpdf/util/BuildFoundries.pl: Add `pathsep` scalar to + house the build-time path separator. + (LocateFile): Use it. + (LoadFoundry, CheckFoundry): Stop using spaces as part of the + path separation delimiter. It is not idiomatic. + +2022-06-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * configure.ac: Explicitly identify poppler tools in report. + +2022-06-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devpdf/util/BuildFoundries.pl: Trivially refactor. Drop + unused hash `foundry`. Drop scalar `warn` that was set and + updated but never tested. + +2022-06-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devpdf/util/BuildFoundries.pl: Alter script to write to + the standard output stream instead of (re)writing a file named + "download" in the current working directory. This recovers from + a problem I introduced in commit 6e62be835d, 2 May, as an + unforeseen side effect of improving build parallelism so that + the "download" file wouldn't be read until it was fully + populated. As a side benefit, this approach is more Unixy, and + less dependent on $PWD. + (top level): Stop calling `WriteDownload` with an argument. + (LoadFoundry): Close only the file handle of interest when done, + not all of them (including `STDOUT`, which we now need). + (CheckFoundry): Same--just for cleanliness, since at present + running the script in 'check' mode doesn't write to any streams. + (WriteDownload): Stop taking an argument and manipulating file + handles. Write download file to standard output. + (LoadDownload, WriteDownload): Drop `top` scalar, used as a + mutex to serialize read and write access to "download" file; it + is no longer needed since the "download" file is now only read. + +2022-06-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + [build]: Rename shell variables and Autoconf/Automake macros of + Boolean sense to have names more like logical predicates and + avoid doofy "DONT" nomenclature. + + * m4/groff.m4 (GROFF_MAKE_RM): Rename shell variable + `groff_is_rm_defined` to `groff_make_defines_rm` (purely for + clarity; it already had a good name). + (GROFF_MAKE_RM): Rename this... + (GROFF_MAKE_DEFINES_RM): to this, to make parallelism obvious, + and enabling... + * configure.ac: ...rename of `MAKE_DONT_HAVE_RM` to + `MAKE_DEFINES_RM` with sense of test reversed. Also interpolate + `GROFF_MAKE_DEFINES_RM` instead of `GROFF_MAKE_RM`. This in + turn enables... + * Makefile.am: ...revision of conditional from + `MAKE_DONT_HAVE_RM` to "!`MAKE_DEFINES_RM`". + +2022-06-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_URW_FONTS_PATH) + (GROFF_WITH_COMPATIBILITY_WRAPPERS, GROFF_APPDEFDIR_OPTION) + (GROFF_UCHARDET): Recast help strings to more closely parallel + structure and style of Autoconf's own help strings. + (GROFF_WITH_COMPATIBILITY_WRAPPERS): Recast to tighten wording. + +2022-06-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * configure.ac: + * m4/groff.m4 (GROFF_APPDEFDIR_OPTION, GROFF_APPDEFDIR_DEFAULT) + (GROFF_APPDEFDIR_CHECK): Rename m4 macros and shell variable + from "*appres*" to "*appdef*. Update interpolation sites. + + * configure.ac: + * m4/groff.m4 (GROFF_APPDEFDIR_CHECK): Further rename this... + (GROFF_APPDEFDIR_NOTICE): ...to this, for consistency with other + post-report output macros. + + * Makefile.am: + * PROBLEMS: + * doc/automake.mom: + * src/devices/xditview/xditview.am: Update interpolation sites + of `appresdir`. + + * Makefile.am: + * src/devices/xditview/gxditview.1.man: + * src/roff/groff/groff.1.man: Update interpolation sites of + `APPRESDIR`. + + * NEWS: Add item. + +2022-06-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_X11, GROFF_UCHARDET): Drop redundant + messages (which are easily overlooked amid the torrent of + "checking" output anyway). Discovery failures of X11 and the + uchardet library are already parts of the configuration report + at or near the end of output. + +2022-06-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_PNMTOPS_NOSETPAGE): Partially revert change + from 21 May and document why in a comment. + +2022-06-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/troffrc: Skip loading of "papersize.tmac" if not in troff + mode. + + Fixes <https://savannah.gnu.org/bugs/?62238>. Thanks to Bjarni + Ingi Gislason for the report. + +2022-05-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * configure.ac: Report use of "g" prefix for commands and macro + package compatibility wrappers. + * m4/groff.m4 (GROFF_G): Fix code style nits. Update + indentation to match recent practice. + +2022-05-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * configure.ac: Fix code style nits and tweak report. Stop + superfluously using braces for shell parameter expansions that + don't require them. The shell is not make(1). Say + "installation _directory_ prefix" since another kind of prefix + can be used by groff (the "g" in front of command and macro + package names shared with AT&T troff). + +2022-05-31 Dave Kemper <saint.snit@gmail.com> + + * doc/groff.texi: Fix content and style nits. + - Remove redundancy ("fixed-width... character that can't be + adjusted"). + - Fix incorrect word ("environment value" -> "environment + variable"). + - Add or change the placement of a couple tie{}s to comport + with style-guide recommendation. + - Grammarify. + - Clarify and tighten wording. + + Fixes <https://savannah.gnu.org/bugs/?62551>. + +2022-05-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/node.cpp (font_position): If mounting a font + fails and a third argument was given (to the `fp` request), + report its value in the diagnostic message. This could reveal a + prohibited attempt at directory traversal. See commit + a891161bc9, 7 November. + +2022-05-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/libs/libgroff/fontfile.cpp (font::open_file): Refactor. + Move more logic, including memory allocation, inside conditional + that accepts only file names without '/' characters, skipping + unnecessary work in the alternative. Annotate use of zero + literals as null pointers to ease any future migration to ISO + C++11. Add 'const' qualifier to variable that doesn't require + modification (and which is used in the LHS of an equality + comparison, so that clumsy operator misuse will provoke a + compiler warning). + + Fixes <https://savannah.gnu.org/bugs/?62532>. Thanks to Bjarni + Ingi Gislason for the report. + +2022-05-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * configure.ac: In configuration report, say that we're + reporting compiler options along with the compiler executable. + Fix leftover test(1) comparison with garbage, overlooked in + commit faa22d89d2, 20 May. + +2022-05-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am (doc/meintro_fr.ps): Build with '-t' option. + + Fixes <https://savannah.gnu.org/bugs/?62542>. Thanks to Bjarni + Ingi Gislason for the report. + +2022-05-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/groff.1.man (Options) <-l>: Handle case where + no default print spooler is configured, and report formatter + behavior correctly if it isn't. + + Fixes <https://savannah.gnu.org/bugs/?62535>. Thanks to Bjarni + Ingi Gislason for the report. + +2022-05-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + * Makefile.am (.man): Process '@PSPRINT@' substitutions with + "makevarescape.sed". + +2022-05-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_PROG_YACC, GROFF_MAKEINFO, GROFF_TEXI2DVI): + Fix logic error in detection of build scenario: the presence of + a ".git" directory is not an indicator that we're not building + from a distribution archive, because we might be building from a + snapshot archive (which also lacks it). Instead, perform checks + required only by builds from Git checkouts and snapshot archives + if the ".tarball-version" file is not present. + +2022-05-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + * Makefile.am (EXTRA_DIST): Ship "HACKING" file. + +2022-05-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + * bootstrap.conf: Add "pkg-config" to `buildreq`. Not having it + causes pretty horrible macro expansion problems and diagnostics + when 'autoreconf' is run; they're still pretty bad even if you + use `AC_REQUIRE` and `m4_pattern_forbid`. So just demand it. + +2022-05-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devps/S: + * font/devps/symbolmap: Drop excess mapping of `*U` special + character. groff maps it to the Adobe Glyph List name + 'Upsilon1'. (The AGL 'Upsilon' is a homoglyph of the Latin + capital 'Y'.) + * PROBLEMS: De-document build-time warning, now resolved. + +2022-05-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/afmtodit/afmtodit.tables: Regenerate using Unicode + 14.0. No substantive changes. + +2022-05-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/afmtodit/make-afmtodit-tables: Refactor. Drop + unused variable `prog`. Use value of `CPP` from environment (if + defined) and use parameter expansion to apply a default if null + or not set. Use for loop to eliminate duplicative if statement. + Test input files for readability, not just existence. Use more + portable test(1) and shell syntax. Swap usage error and fatal + error exit statuses; using "1" for failure and "2" for usage + errors is more common in shell scripts I've seen. Update usage + message to put non-literal parameter in full caps, and clarify + its name. Update comment blocks written to generated files to + further clarify data provenance. + +2022-05-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_PRINT): Refactor. Stop performing checks + for spooler options if none is available. Stop redundantly + reporting command name used for spooling PostScript files. If + an option is required for spooling DVI files, report it alone + instead of repeating the command name as well. + +2022-05-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + Fix insensitivity of groff(1) man page to configured spooler. + + * Makefile.am (.man): Replace `@PSPRINT@` in man page sources + with name of configured print spooler command. + * src/roff/groff/groff.1.man (Options) <-l>: Use configured + print spooler command instead of literal 'lpr'. + +2022-05-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_UCHARDET_CHECK): Fix grammar nit in failure + message when user demands uchardet support but the library + cannot be located. + +2022-05-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_CHECK_GROHTML_PROGRAMS): Fix logic error in + computation of verb to be used in notice message. + +2022-05-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_PROG_YACC, GROFF_URW_FONTS_CHECK) + (GROFF_WITH_COMPATIBILITY_WRAPPERS, GROFF_UCHARDET_NOTICE): + Improve shell code portability. Per the GNU Autoconf manual, + "The -a, -o, '(', and ')' operands are not present in all + implementations, and have been marked obsolete by Posix 2008. + ...portable uses of test should never have more than four + arguments, and scripts should use shell constructs like '&&' and + '||' instead." + +2022-05-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/groff.1.man (Installation directories): Don't + output a tagged paragraph for the X11 application defaults + directory if the build symbol '@APPRESDIR@' is not defined (that + is, we didn't build with X11 support). + +2022-05-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_GHOSTSCRIPT_VERSION_CHECK): Fix code style + nits. Use lowercase for shell variables we define. Don't quote + literal operands to test(1) that don't contain syntactically + shell-significant characters. Update indentation to match + recent practice. + +2022-05-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_URW_FONTS_NOTICE): Don't emit the notice if + Ghostscript isn't available, since it was a prerequisite for + the `GROFF_URW_FONTS_CHECK` macro in the first place. + +2022-05-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + [build]: Add print spooler determination to configuration + report. + + * m4/groff.m4 (GROFF_PRINT): Add shell variable + `groff_have_spooler` to house the name of the print spooler + {"lp" or "lpr"} or the word "no". + * configure.ac: Report determined spooler, or its absence. + +2022-05-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/preconv/tests/do-not-seek-the-unseekable.sh: Skip + seekability check of the standard input stream if there is no + controlling terminal. + + Fixes <https://savannah.gnu.org/bugs/?62506>. Thanks to Bjarni + Ingi Gislason for the report. + +2022-05-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_CHECK_GROHTML_PROGRAMS): Migrate from + `AC_FOREACH` to `m4_foreach` to avoid obsolescence warning from + GNU Autoconf 2.70 or later. + + Fixes <https://savannah.gnu.org/bugs/?61059>. Thanks to Bjarni + Ingi Gislason for the report. + +2022-05-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + * man/groff.7.man: Rename "pilot" list macros for man(7) from + `BL`/`EL` to `LS`/`LE`, per suggestion from Alejandro Colomar. + +2022-05-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_MAKEINFO, GROFF_TEXI2DVI): Check for + makeinfo(1) and texi2dvi(1) programs only if building from Git, + not a distribution archive. + +2022-05-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am (doc/meintro_fr.ps): Call groff with `-K utf8` + instead of `-k`, in case the "configure" script didn't find + uchardet (and preconv(1) thus can't auto-detect an encoding). + + Fixes <https://savannah.gnu.org/bugs/?59463>. + +2022-05-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/preconv/tests/do-not-seek-the-unseekable.sh: Skip + a check if /dev/stdin is not a character special device. + +2022-05-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_PDFTOOLS): Rename this... + (GROFF_POPPLER): ...to this. + * configure.ac: Update call site. + +2022-05-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_UCHARDET_CHECK): Rename this... + (GROFF_UCHARDET_NOTICE): ...to this. + * configure.ac: Update call site. + + * m4/groff.m4 (GROFF_UCHARDET_NOTICE): Tighten wording of + message reported to user. + + Fixes <https://savannah.gnu.org/bugs/?59481>. Thanks to Dave + Kemper for the report. + +2022-05-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_PNMTOOLS_CAN_BE_QUIET) + (GROFF_PNMTOPS_NOSETPAGE): Skip check if prerequisite not met. + +2022-05-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_URW_FONTS_CHECK): Rename this... + (GROFF_URW_FONTS_NOTICE): ...to this. + (GROFF_URW_FONTS): ...and this... + (GROFF_URW_FONTS_CHECK): ...to this. + (GROFF_URW_FONTS_NOTICE): Give lengthy notice message a one-line + summary. + * configure.ac: Update call sites. + +2022-05-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_URW_FONTS): Refactor. If our prerequisites + are not met (availability of 'awk' and 'gs'), don't even run the + check logic or print a "checking" message. + +2022-05-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + Handle missing programs required to construct files needed at + runtime by gropdf more gracefully. Rename and refactor + configuration-time logic to be more understandable. + + * configure.ac: + * m4/groff.m4: Rename `GROFF_PDFDOC_PROGRAMS` macro to + `GROFF_CHECK_GROPDF_PROGRAMS`. Rename shell variable + `make_pdfdoc` to `use_gropdf`. Set it explicitly to "no" or + "yes" instead of null or not null. + + * configure.ac: + * m4/groff.m4: + * doc/doc.am: Rename `BUILD_PDFDOC` to `USE_GROPDF`. + + * configure.ac: Call `GROFF_GROPDF_PROGRAM_NOTICE`. + + * doc/doc.am: Bracket definition of `PROCESSEDDOCFILES_PDF` + macro and `$(PROCESSEDDOCFILES_PDF)` dependency declaration in + Automake `if USE_GROPDF` conditional. This prevents attempts + to build PDF documents using groff that are doomed to fail. + + * m4/groff.m4: Refactor gropdf runtime-dependency program check. + Split into two macros: one (`GROFF_CHECK_GROPDF_PROGRAMS`) + performs the check, the other (`GROFF_GROPDF_PROGRAM_NOTICE`) + issues a notice at the end of the configuration process if at + least one program was not found. Rename `docnote` shell + variable to `gropdf_notice`. Tighten wording of notice. Drop + unused `make_install_pdfdoc` and `make_uninstall_pdfdoc` shell + variables. + +2022-05-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + Handle missing programs required at runtime by grohtml more + gracefully. Rename and refactor configuration-time logic to be + more understandable. + + * configure.ac: + * m4/groff.m4: Rename `GROFF_HTML_PROGRAMS` macro to + `GROFF_CHECK_GROHTML_PROGRAMS`. Rename shell variable + `make_htmldoc` to `use_grohtml`. Set it explicitly to "no" or + "yes" instead of null or not null. + + * configure.ac: + * m4/groff.m4: + * doc/doc.am: Rename `BUILD_HTML` to `USE_GROHTML`. + + * configure.ac: Call `GROFF_GROHTML_PROGRAM_NOTICE`. + + * doc/doc.am: Bracket definition of `PROCESSEDDOCFILES_HTML` + macro and `$(PROCESSEDDOCFILES_HTML)` dependency declaration + in Automake `if USE_GROHTML` conditional. This prevents an + attempt to build an HTML version of the "pic.ms" document that + is doomed to fail (noisily). + + * m4/groff.m4: Refactor grohtml runtime-dependency program + check. Split into two macros: one + {`GROFF_CHECK_GROHTML_PROGRAMS`} performs the check, the other + {`GROFF_GROHTML_PROGRAM_NOTICE`} issues a notice at the end of + the configuration process if at least one program was not found. + Rename `html_docnote` shell variable to `grohtml_notice`. + Tighten wording of notice. Drop unused `make_install_htmldoc` + and `make_uninstall_htmldoc` shell variables. + +2022-05-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_GHOSTSCRIPT_VERSION_NOTICE): Add newline at + end of buggy Ghostscript notification, so that the multiple + possible lengthy notices after the configuration report have + blank lines separating them. + +2022-05-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + Check for m4 program at configuration time. + + * m4/groff.m4 (GROFF_PROG_M4): Define new macro to perform the + check and error out if the program is missing. + * configure.ac: Call the new macro. + * tmac/tmac.am (tmac/groff_man.7.man) + (tmac/groff_man_style.7.man): Use the new implicitly AC_SUBST-ed + variable `M4` to run the program. + +2022-05-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_PROG_YACC): Update wording of error + message: we search for "yacc", so report it as missing if it is + not found (along with "byacc" and "bison"). + +2022-05-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * configure.ac: Fix shell style nits. Get rid of string + {non-}nullity tests and comparisons involving concatenation with + garbage (usually "x"). See 13 November entry regarding m4. Use + idiomatic shell "brace style" for control structures. + +2022-05-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + Trivially refactor libgroff allocator configuration. + + * m4/groff.m4 (GROFF_USE_GROFF_ALLOCATOR): Update description of + configuration flag to clarify that it's implemented in a + library. Rename shell variable to prefix it with "groff_", + putting it in an ad hoc name space as with other variables. If + feature disabled, set variable to literal "no". + * configure.ac: Use renamed variable and interpolate it directly + into configuration report, simplifying shell logic. + +2022-05-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * configure.ac: Revise configuration report for intelligibility. + Add report of C++ compiler and flags used: we compile much more + C++ than C code so this seems appropriate. Report Perl + interpreter version so that we can collect build reports and + turn the ratchet past Perl 5.6.1 at some point. Fix X11 + "resources" misnomer (application defaults are what is meant). + Rephrase generally. + +2022-05-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * Makefile.am (EXTRA_DIST): Ship "ChangeLog.122" in distribution + archive. Overlooked in commit c11995df16, 19 February 2021. + +2022-05-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grotty/tests/basic_latin_glyphs_map_correctly.sh: + Fix portability problem: POSIX says that "od -c" (and "od -t c") + are supposed to emit printing characters as defined by the + underlying locale, but GNU coreutils od doesn't do this and + macOS od does. Set `LC_ALL` to "C" when running it to force + 3-digit octal reporting of characters with their eighth bit set. + + Fixes <https://savannah.gnu.org/bugs/?62357>. Thanks to John + Gardner for the report. Also see <https://pubs.opengroup.org/\ + onlinepubs/9699919799/utilities/od.html>. + +2022-05-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * INSTALL.extra (In Case of Trouble): Add advice on using the + test suite, particularly if it fails. + + Fixes <https://savannah.gnu.org/bugs/?62478> (one hopes). + +2022-05-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Input Line Traps): Expand discussion. The + `it` and `itc` requests count neither input lines (strictly) nor + text lines. Instead, they count input lines that _directly + produce formatted output_ (and, in the case of `itc`, are not + "interrupted" or continued with the `\c` escape sequence). This + is useful--empty requests and requests that don't put nodes on + the output don't break things--but does demand some explanation. + Clarify and provide example. + * man/groff.7.man (Escape sequence short reference) <it>: Sync. + +2022-05-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/env.cpp (environment::choose_breakpoint): Tweak + diagnostic message ("can't" -> "cannot"). + * doc/groff.texi (Breaking): Update example. + +2022-05-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Copy Mode): + * man/groff.7.man (Copy mode): Fix omission; `\?` is interpreted + in copy mode. + +2022-05-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac (PT): Unclutter name space; remove + `pg*saved-page-number-format` string when we're done with it. + +2022-05-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Add unit tests, including one XFAIL for bad behavior. + + * src/preproc/tbl/tests/check-horizontal-line-length.sh: + * src/preproc/tbl/tests/check-line-intersections.sh: + * src/preproc/tbl/tests/check-vertical-line-length.sh: + * src/preproc/tbl/tests/table-lacks-spurious-top-border.sh: Do + it. + * src/preproc/tbl/tbl.am (tbl_TESTS): Run tests. + (tbl_XFAIL_TESTS, XFAIL_TESTS): Expect one test failure. + +2022-05-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grotty/tty.cpp (tty_printer::add_char): Modify + diagnostic message: what gets written "above [the] first line" + might not be a character (glyph) per se, but a line (rule) from + a drawing command, and in fact the occurrence of these from + boxed tables is the most common cause of this message I've seen. + +2022-05-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grotty]: Do more input validation. + + * src/devices/grotty/tty.cpp (tty_printer::draw): Throw warning + if an unsupported geometric primitive is encountered. + (tty_printer::line): Throw warning if a line is diagonal. Die + if length of a horizontal or vertical line is not a multiple of + the appropriate motion quantum of the device (troff should never + emit such nonsense, and currently doesn't appear to). + +2022-05-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/tbl.1.man (Miscellaneous): Document GNU tbl's + use of `#T` and `T.` registers. + +2022-05-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (read_color_draw_node): Tweak + diagnostic message to better distinguish drawing commands and + device control commands. + +2022-05-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grohtml]: Mitigate double-free problem exposed by malformed + input. + + * src/roff/troff/mtsm.h (struct statem): Place member variable + `issue_no` behind `DEBUGGING` preprocessor symbol, omitting it + from production and ordinary development builds. + * src/roff/troff/mtsm.cpp (no_of_statems): Place global variable + behind `DEBUGGING` preprocessor symbol, omitting it from + production and ordinary development builds. + (statem::statem): Make constructor trivial if `DEBUGGING` not + defined in preprocessor; it manipulates only `issue_no` and + `no_of_statems`, which are synchronized. + (statem::statem {copy}): Gate assignment of `issue_no` member + variable from copy constructor behind `DEBUGGING` preprocessor + symbol. + (statem::flush, mtsm::inherit): Gate debugging output, already + runtime-gated on `debug_state` symbol, of `issue_no` member + variable, so that we don't reference it when it is not declared. + + See <https://savannah.gnu.org/bugs/?62040>. + +2022-05-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + [refer]: Rename a test artifact; it's a bibliographic database + file, not a refer(1) command file. + + * src/preproc/refer/tests/artifacts/62124.ref: Rename this... + * src/preproc/refer/tests/artifacts/62124.bib: ...to this. + * src/preproc/refer/refer.am (EXTRA_DIST): + * src/preproc/refer/tests/report-correct-line-numbers.sh: Use + new name. + +2022-05-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/refer/command.cpp (process_commands): Begin + migration to use existing global variables for location reports + in diagnostic messages. Save current file name and line number + before calling `command_loop()` and restore them afterward. + Also decrement line counter before entering that loop because it + would be too far advanced by one due to the final newline on a + parsed input line. + +2022-05-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/refer/refer.cpp (main): Report system error on + `fflush()` failure. POSIX Issue 5 a.k.a. SUSv2 (1997) specifies + several possible `errno` values this C standard library function + can set; see + <https://pubs.opengroup.org/onlinepubs/007908799/xsh/fflush.html>. + +2022-05-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + [refer]: Refactor: drop unused version of function (taking only + a `const char *` parameter). + + * src/preproc/refer/command.cpp (process_commands): Drop + definition. + * src/preproc/refer/command.h (process_commands): Drop + declaration. + +2022-05-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/refer/refer.cpp (do_file): Fix another off-by-one + line number reporting bug exposed by fix for Savannah #62391. + +2022-05-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/refer/tests/report-correct-line-numbers.sh: Add + more regression tests. + +2022-05-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + [refer]: Trivially refactor: boolify. + + * src/preproc/refer/command.cpp (input_stack::push_file): Demote + and rename local variable from `int` to `bool`. + (bol): Renamed from this... + (is_at_beginning_of_line): ...to this. + +2022-05-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + [refer]: Trivially refactor. + + * src/preproc/refer/command.cpp (input_stack::push_file): + * src/preproc/refer/refer.cpp (do_file): Drop unnecessary + construction of integer from integer (return type of `getc()`) + in argument to error diagnostic functions; parallelizes with + other diagnostic function calls. + +2022-05-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/refer/command.cpp: Refactor to simplify. + (get_location): Demote return type from `int` to `void`. The + function only ever returned a `1` literal. + (input_stack::error): Update call site to stop uselessly testing + return value of `get_location()`. + +2022-05-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am (dist-info-bits, install_infodoc, dist-gnueps): Fix + logic error. When checking both source and build trees for + files to copy, break after successfully copying the files, not + after the first iteration of the loop unconditionally. This + caused the Info documents not to be installed from out-of-tree + builds, and potentially would prevent them and doc/gnu.eps from + being included in the distribution archive if for some reason + they didn't build and that build failure were not treated as an + error. Problems introduced by me in commits e78bd20d54, 27 + March, and d79c3f3a4a, 11 November. + +2022-05-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_APPRESDIR_OPTION): Update comments and + human-readable output to (1) stop claiming that existing + gxditview application defaults in the installation directory + will be backed up; this is no longer true as of commit + c66cb7725f, 3 April; and (2) refer to these files as + "application defaults", not "resources". (X11 application + defaults are client-side and mandatory [for Xt-based programs]; + X resources are stored server-side and need not be configured to + determine an X client's geometry and rendering.) + +2022-05-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devX100-12/devX100-12.am (devX100_12_fontdir): + * font/devX100/devX100.am (devX100_fontdir): + * font/devX75-12/devX75-12.am (devX75_12_fontdir): + * font/devX75/devX75.am (devX75_fontdir): Define macros without + an extra "font/" layer in the directory hierarchy. + + Fixes problem introduced by me in commit 3c82cbbfe5, 27 + February. + +2022-05-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devpdf/devpdf.am (font/devpdf/util/BuildFoundries): Spell + dependency on `$(SH_DEPS_SED_SCRIPT)` using that macro expansion + instead of a literal file name. See doc/automake.mom. + +2022-05-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/eqn/eqn.am (MAINTAINERCLEANFILES): + * src/preproc/pic/pic.am (MAINTAINERCLEANFILES): + * src/preproc/refer/refer.am (MAINTAINERCLEANFILES): Preserve + byacc/bison output artifacts unless "maintainer-clean"ing. Per + the GNU Automake manual, "The intermediate files generated by + yacc (or lex) will be included in any distribution that is made. + That way the user doesn’t need to have yacc or lex." + +2022-05-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * Makefile.am: Stop manually handling "test-groff". Per the + GNU Automake manual, "If configure built it, then distclean + should delete it." This is taken care of automatically if we + don't interfere. + (BUILT_SOURCES, MOSTLYCLEANFILES): Drop "test-groff". + +2022-05-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/eqn/eqn.am (neqn): Produce temporary file first + and set its permissions before moving it into place. If + anything in the future ever has a dependency on it, this avoids + a race where the file exists, satisfying a dependency, but + execution is attempted before its `x` permission bit is set. + +2022-05-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + [build]: Ensure that we install *.me source files, but don't + include them in the distribution archive. + + * doc/doc.am (dist_otherdoc_DATA): Move `$(GENERATEDDOCFILES)` + from here... + (nodist_otherdoc_DATA): ...to here. + (.PRECIOUS): Add `$(GENERATEDDOCFILES)` so that make(1) doesn't + automatically remove "intermediate" objects in the .me.in -> .me + -> .ps chain. + +2022-05-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + [build]: Handle "gnu.eps" file better. + + * doc/doc.am (GENERATEDDOCFILES): Remove `$(DOC_GNU_EPS)`. + (EXTRA_DIST): Ship `$(DOC_GNU_EPS)` in distribution archive. + ($(DOC_GNU_EPS)): Simplify rule commands; stop trying to copy + the file around since it will either be (1) in the distribution + archive from which a build is performed; or (2) missing because + a build is being done from Git, in which case we expect the PNM + tools to be available. + +2022-05-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am (clean_otherdoc): Drop target: it doesn't seem to + accomplish anything. + (clean_infodoc): Drop target, moving its rules into... + (maintainer-clean-local): ...this. Drop deps, both gone now. + +2022-05-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am (distclean-local): Drop target: stop cleaning + generated forms of our Texinfo manual with the "distclean" + target. They ship with the distribution archive and should + remain in the tree even if the user needs to re-./configure. + +2022-05-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + [build]: Fix problems exposed by high build parallelism. + + * font/devpdf/devpdf.am (font/devpdf/util/BuildFoundries) + (font/devpdf/DESC, font/devpdf/Foundry): Drop + unnecessary removal of target prior to creating it. + (font/devpdf/Foundry): Add creation of destination build + directory as other targets do. + (font/devpdf/download): Create dedicated target instead of + lumping its generation under the stamp file. Add missing + dependencies on `$(DEVPDFFONTMAP_1)`, `$(DEVPDFFONTMAP_2)`, + `font/devpdf/Foundry` and `font/devpdf/enc/text.enc`. Remove + now-unnecessarily complicated "forgery" of "GEN" line in quiet + builds. Tweak format of comment written to "download" file to + make field identities clearer. Construct output (with multiple + shell commands) in temporary file so it is not read prematurely + by the "BuildFoundries" script. Move target into place as the + last step. + (font/devpdf/stamp): Relocate target to follow its dependencies. + Add dependency on "font/devpdf/download". + +2022-05-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + [build]: Tweak diagnostic messages in BuildFoundries script. + + * font/devpdf/util/BuildFoundries.pl (LoadFoundry) + (WriteDownload, CheckFoundry): Recast for specificity and + consistent style. + (Die): Stop reporting line number with fatal errors; none of the + call sites are parsing input. + +2022-05-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + [refer]: Fix off-by-one error in line number for some + diagnostics. + + * src/preproc/refer/command.cpp (input_item::get_location): + Decrement reported line number by one after looping over input + so that we report the line number as it was before the last + newline character seen. This off-by-one error was partially + masked by... + * src/preproc/refer/refer.cpp (do_file): ...initialization of + `current_lineno` to zero. However, for syntax problems (as + opposed to the semantic problems of refer(1) command + processing), this could result in complaints about the line + number before they occurred, even on "line zero". Initialize + the variable to 1. + + Fixes <https://savannah.gnu.org/bugs/?62391>. + +2022-05-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/refer/tests/report-correct-line-numbers.sh: Add + regression test for Savannah #62391. + +2022-05-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/tfmtodit/tfmtodit.cpp (usage): Tweak usage message. + Condense `-v` and `--version` into a single output line with + brace and pipe notation, which we do not use in our man pages, + but consistently do in our usage messages. Use lowercase for + option arguments since they are separated from option flag + letters by space. Call `fprintf()` once instead of 3 times. + +2022-05-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/refer/refer.cpp (main): Tweak wording of + diagnostic messages to refer to options consistently and to + characterize input as "invalid" rather than "bad". + (usage): Document --version option. Use more informative + metasyntactic variable names. Organize usage message + consistently with our others, and stop wrapping the output + lines: we know neither the width of the terminal nor the length + of the `program_name` string we're interpolating. See commit + b4de44f0, 19 July 2021. + +2022-05-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (string_iterator::backtrace): Fix + spurious output when `mac.filename` is empty. Provoked by: + $ printf '\\(' | troff -b + +2022-05-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/refer/refer.cpp: Trivially refactor. Demote + global variable `recognize_R1_R2` from integer to Boolean. + (main, do_bib): Give expressions to `assert()` meaningful + content. + (is_list): Demote return type from `int` to `bool`. + (do_file): Demote and rename integer local variables + `start_of_line` to Boolean `at_start_of_line`. + (is_list, do_file): Reorder equality comparisons to avoid + inadvertent lvalue assignment. + +2022-05-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + [build]: Reduce and rationalize in-tree document dependencies. + This eliminates spurious rebuilds of numerous documents + {including the 380+-page groff-man-pages collections}. It also + fixes missing dependencies when using the build's groff to + generate PostScript documents. + + * .gitignore: Drop old name of devpdf stamp file. + * doc/.gitignore: Drop now-unused "example.stamp" file. + * doc/doc.am (PROCESSEDDOCFILES_HTML, PROCESSEDDOCFILES_PDF) + (PROCESSEDDOCFILES_TXT): Add new macros grouping targets by the + format/output driver used to produce them, to better organize + dependencies for their generation. + (PROCESSEDDOCFILES): Redefine as simply the expansions of the + foregeoing. + (PROCESSEDFILES_DEPS_HTML, PROCESSEDFILES_DEPS_HTML, + PROCESSEDFILES_DEPS_PDF, PROCESSEDFILES_DEPS_TXT): Add new + macros defining prerequisites for production of the + corresponding output document formats. + ($(PROCESSEDDOCFILES_HTML), $(PROCESSEDDOCFILES_PDF), + $(PROCESSEDDOCFILES_PS), $(PROCESSEDDOCFILES_TXT)): Declare the + dependencies using expansions of the foregoing macros. + (MOSTLYCLEANFILES): Drop "doc/automake.pdf", now part of + `PROCESSEDDOCFILES_PDF`. + (doc/automake.pdf): Drop dependencies already supplied by + `PROCESSEDFILES_DEPS_PDF`. + (HTMLDOCFILES): Drop macro. "doc/pic.html" is now in the + expansion of `PROCESSEDDOCFILES_HTML`. + (htmlpic_DATA): Redefine as expansion of + `PROCESSEDDOCFILES_HTML` instead of `HTMLDOCFILES`. + (PROCESSEDEXAMPLEFILES_HTML) [BUILD_HTML]: Define as + "doc/webpage.html", otherwise as empty. + (PROCESSEDEXAMPLEFILES_PS): Contain "doc/webpage.ps" and + "doc/grnexampl.ps". + (PROCESSEDEXAMPLEFILES): Redefine as expansions of + `PROCESSEDEXAMPLEFILES_HTML` and `PROCESSEDEXAMPLEFILES_PS`. + ($(PROCESSEDEXAMPLEFILES_HTML), $(PROCESSEDEXAMPLEFILES_PS)): + Declare dependencies using `PROCESSEDFILES_DEPS_HTML` and + `PROCESSEDFILES_DEPS_PS`, respectively. + (HTMLEXAMPLEFILES): Drop macro. "doc/webpage.html" is now in + the expansion of `PROCESSEDDOCFILES_HTML`. + (nodist_htmlexamples_DATA): Drop macro, no longer needed. + ($(PROCESSEDDOCFILES_PS)): Relocated and redefined above. + ($(PROCESSEDEXAMPLEFILES) $(PROCESSEDDOCFILES)): Drop overbroad + dependency declarations in favor of the above. + (MOSTLYCLEANFILES, doc/examples.stamp): Drop generation and + removal of unnecessary stamp file. + (doc/pic.html, doc/webpage.html): Add explicit dependency on + required preprocessors. Drop redundant and spurious + dependencies. + * font/devhtml/devhtml.am (MOSTLYCLEANFILES) + (font/devhtml/stamp): Generate and remove stamp file to enable + reliable target dependencies for build-time generation of HTML + documents by groff. + * font/devpdf/devpdf.am (MOSTLYCLEANFILES, font/devpdf/stamp): + Rename stamp file from "font/devpdf/build_font_files". + (font/devpdf/stamp): Drop unnecessary dependency on "afmtodit". + * font/devps/devps.am (MOSTLYCLEANFILES, font/devps/stamp): + Generate and remove stamp file to enable reliable target + dependencies for build-time generation of PostScript documents + by groff. + * font/devutf8/devutf8.am (MOSTLYCLEANFILES) + (font/devutf8/stamp): Generate and remove stamp file to enable + reliable target dependencies for build-time generation of + UTF-8-encoded text documents by groff. + + Fixes <https://savannah.gnu.org/bugs/?62084>; thanks to + Sergei Trofimovich for the report. Also fixes + <https://savannah.gnu.org/bugs/?62297>; thanks to Bjarni Ingi + Gislason for the report. + +2022-04-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + [build]: Fix code style nits in Automake files. + + * doc/doc.am: Put spaces around (Auto)make variable assignments, + for consistency with the rest of this .am file, and our others. + * font/devpdf/devpdf.am (font/devpdf/build_font_files): Use + shell '>' operator instead of touch(1). + * font/devhtml/devhtml.am (font/devhtml/DESC): + * font/devps/devps.am (font/devps/DESC): Construct target in + temporary file, since doing so is a multi-step process, moving + it to the target name when it is complete and usable by + dependencies. + +2022-04-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/refer/refer.cpp (main): When complaining of + unrecognized option, report the entire option string (after + the leading dash), not just its first character. + +2022-04-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/libs/libgroff/error.cpp: Trivially refactor. Explicitly + compare pointer lvalues to null pointers instead of punningly + treating them as Booleans. Annotate use of zero literals as + null pointers to ease any future migration to ISO C++11. + +2022-04-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac (an*abbreviate-inner-footer): Clean up better + before early returns. Remove temporary registers. + +2022-04-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/fallbacks.tmac: Add fallbacks for U+02C6 MODIFIER LETTER + CIRCUMFLEX ACCENT and U+02DC SMALL TILDE to Basic Latin + characters. + +2022-04-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tests]: Fix portability problem. Don't pass echo(1) arguments + containing backslashes because implementations handle them + differently. Use printf(1) instead. Thanks to Bertrand + Garrigues for reporting the problem and confirming the fix on + his build host. + + * tmac/tests/e_chapter-titles-work.sh: + * tmac/tests/e_ld-works.sh: + * tmac/tests/localization-works.sh: Do it. + +2022-04-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/gropdf/gropdf.pl (ppsz): Recognize "com10" (U.S. + commercial envelope) paper format. + + Addresses the original issue reported in + <https://bugs.debian.org/1009248>. We have however broadened + its scope; see <https://savannah.gnu.org/bugs/?62344>. + +2022-04-27 Dave Kemper <saint.snit@gmail.com> + + * src/devices/gropdf/gropdf.pl (ppsz): Recognize ISO B-series + paper formats using strings of the form "b0-b6", not "isob0-b6", + for consistency with libgroff and papersize.tmac. + + Fixes <http://savannah.gnu.org/bugs/?62346>. + +2022-04-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am: Refactor to simplify. Ingo's removal of the + "--with-doc" "configure" option, among other changes, clears the + way to remove many phony targets and simplify dependencies + involving generation of the 5 formats of our Texinfo manual. + (build_infodoc, doc, doc_all, doc_txt, dvi, doc_dvi, pdf, + doc_pdf, html, doc_html): Drop phony targets. + (all): Depend directly on doc/groff.{info,txt,html,dvi,pdf}. + * NEWS: Add item since "make doc" is no longer necessary and + will do nothing. + +2022-04-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Handle `\R` sequences in text blocks robustly. + + * src/preproc/tbl/table.cpp (table::add_entry): Fix SEGV when + repeating glyph table entry syntax (`\Rx`) used in a text block. + Lift extraction of entry string to be done unconditionally, + rather than in 5 different special cases. This frees us up to + rewrite the entry if necessary, changing '\R' to '\&' inside a + text block. Recast diagnostic to describe the problem + clearly--"bad repeated character" suggests that something is + wrong with the "argument" to `\R`, when really the problem is + the _context_. + + Fixes <http://savannah.gnu.org/bugs/?62366>. + +2022-04-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Regression-test Savannah #62366. + + * src/preproc/tbl/tests/\ + do-not-segv-when-backslash-R-in-text-block.sh: Do it. + * src/preproc/tbl/tbl.am (tbl_TESTS): Run test. + +2022-04-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/libs/libgroff/string.cpp (string::extract): Check return + value of `malloc()` for nullity, and only poke into the buffer + returned if it is valid. Discovered while troubleshooting + Savannah #62366. + +2022-04-23 Bertrand Garrigues <bertrand.garrigues@laposte.net> + + gnulib: replace non-recursive-gnulib-prefix-hack with + automake-subdir option + + 'non-recursive-gnulib-prefix-hack' is deprecated by gnulib's + commit f8eed11b15e9141d061900e4068ea1f3ba9b63f6 and replaced by + '--automake-subdir'. + + * bootstrap.conf: + (gnulib_modules): Remove option + 'non-recursive-gnulib-prefix-hack'. + (gnulib_tool_option_extras): Add option '--automake-subdir'. + (bootstrap_post_import_hook): Remove the invocation of + 'build-aux/prefix-gnulib-mk'. + + * doc/automake.mom: update documentation accordingly. + + Fixes <http://savannah.gnu.org/bugs/?61708> and + <https://savannah.gnu.org/bugs/?62205> , issues reported and fix + suggested by Bjarni Ingi Gislason <bjarniig@rhi.hi.is>. Fix + also suggested by Werner LEMBERG <wl@gnu.org> (see + <https://repo.or.cz/ttfautohint.git/commit/a938fc63cb55ef48393a924d7083b13c1352d294>). + +2022-04-23 Bertrand Garrigues <bertrand.garrigues@laposte.net> + + Update gnulib submodule + + * gnulib now points on c8b8f3bbcde37a53cd226f4c9cebd0dde6aca37f + + * bootstrap: merge the latest version from gnulib/build-aux + {groff's bootstrap has a patch for OS X}. + + * bootstrap.conf: update copyright date. + +2022-04-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac (XH-UPDATE-TOC): Modify Keith Marshall's new XN/XH + feature to indent TOC entries by section heading depth. The + increment is 2 ens per depth level. + +2022-04-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac (XA): Drop apparently useless `ll` request. It + doesn't do anything according to my tests. + +2022-04-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/refer/label.ypp: Drop redundant declaration of + `yyparse`. Both byacc 20140715 and GNU Bison 3.3.2 supply the + the function prototype themselves. Addresses + "-Wredundant-decls" warning from GCC. + + Fixes <https://savannah.gnu.org/bugs/?43569>. + +2022-04-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/grn/hdb.cpp (DBGetType): Lower fatal diagnostics + to errors when encounting invalid element type characters. + Return a value interpreted by our caller as an error indication + instead. Helps compilers determine that we're not implicitly + falling through our cases. Addresses "-Wimplicit-fallthrough" + warnings from GCC. + + Fixes https://savannah.gnu.org/bugs/?54702>. + +2022-04-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/grn/hdb.cpp (DBRead): Add more validity checking. + Verify that the number of conversions returned by fscanf() is as + expected instead of throwing this information away--abort + processing ("giving up" like pic(1) does) if it does not. + Consistently report this abandonment in diagnostic messages. + Similarly validate pointer returned by fgets(). Soften handling + of invalid text condition from fatal error, introduced in + commit eb4f0675e, 16 August, to a normal one with abandonment of + Gremlin file. Addresses "-Wunused-result" warnings from GCC. + +2022-04-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/grn/main.cpp (conv): Throw an error diagnostic + when failing to open a Gremlin picture file. + +2022-04-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Fix extraneous space in output after `ME` or `UE` when + mandoc wrapper is used. + + * tmac/an-ext.tmac (UE, ME): Double backslashes in macro + definitions when interpolating `.$` register (just like we tell + everyone else to do). This one was interesting to track down. + When using just `-man`, the problem never manifested; only with + `-mandoc`. The difference is that with the former, the `.$` + register is initialized to zero; with the latter, because `TH` + is aliased to another macro (then unaliased), `.$` has the + argument count to the `TH` macro, not to the macros actually + being called. This caused the wrong branch of a conditional to + be taken and put an extra space node on the output. + + Fixes <https://savannah.gnu.org/bugs/?62044>. + +2022-04-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/cp1047.tmac: + * tmac/latin1.tmac: + * tmac/latin2.tmac: + * tmac/latin5.tmac: + * tmac/latin9.tmac: Stop remapping input soft hyphen characters + with `tr` requests in character encoding macro files. The + formatter does this for us now. + +2022-04-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Translate 8-bit NBSP and SHY on input. + + * src/roff/troff/input.h: Define constant integers for "input" + no-break spaces and soft hyphens for EBCDIC and non-EBCDIC + (presumably ASCII/ISO 8859/Unicode) systems. + + * src/roff/troff/input.cpp (token::next): Translate the input + character codes for NBSP to \~ and SHY to \%. + + Fixes <https://savannah.gnu.org/bugs/?58962>. Thanks to Dave + Kemper for the report, code review, and his suggestion to push + more work to compile time. + +2022-04-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + [groff]: Regression-test Savannah #58962. + + * src/roff/groff/handle_special_input_code_points.diff: Do it. + * src/roff/groff/groff.am (groff_TESTS): Run test. + +2022-04-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (do_if_request): Clarify diagnostic; + at the point it is thrown, we know not merely that we're in a + conditional expression, but processing an output comparison + operator. + +2022-04-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi: + * doc/ms.ms: + * man/groff.7.man: Characterize "roff language" in the singular, + not the plural, emphasizing the similarity of extant specimens. + + * doc/groff.texi (Conventions Used in This Manual): Add + paragraph discussing denotations of "groff" and "roff". + + Fixes <https://savannah.gnu.org/bugs/?62233>. Thanks to John + Gardner and Dave Kemper for the discussion. + +2022-04-12 Ingo Schwarze <schwarze@openbsd.org> + + Delete the harmful, ill-designed, buggy, and essentially + unmaintained and untested --with-doc option of the configure + script. + + * configure.ac: Delete five AM_CONDITIONAL variables, one + autoconf(1) macro call, and some related diagnostic output. + * doc/doc.am: Delete two BUILD_EXAMPLES and one BUILD_OTHERDOC + conditional and use BUILD_HTML instead of BUILD_HTMLEXAMPLES. + * m4/groff.m4: Delete the GROFF_DOC_CHECK macro and simplify the + macros GROFF_HTML_PROGRAMS, GROFF_INSTALL_INFO, GROFF_MAKEINFO, + and GROFF_PDFDOC_PROGRAMS. This also deletes more than thirty + configuration variables. + * Makefile.am: Delete comments about 16 variables that are no + longer set. + * NEWS: Add details regarding the rationale. + +2022-04-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/preconv/preconv.cpp (unicode_entity): Convert + input U+00A0 to \~ as troff would, not to \[u00A0]. + + Fixes <https://savannah.gnu.org/bugs/?62300>. + +2022-04-11 Deri James <deri@chuzzlewit.myzen.co.uk> + + [gropdf] fails to deal with 255th glyph in font. + + * src/devices/gropdf/gropdf.pl: a pdf font can only contain 255 + glyphs. The array which holds the glyph names also holds the + start position (zero) as first element, it is legal for it to + contain 256 elements, so truncate to 256 (not 255). + + Fixes <https://savannah.gnu.org/bugs/?62294>. + +2022-04-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + [localization]: Define hyphenation mode registers for Japanese + and Chinese. They are set to zero but must be defined so that + macro packages can rely on their existence without causing 'reg' + warnings. + + * tmac/ja.tmac: + * tmac/zh.tmac: Do it. + +2022-04-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tests]: Add test for multi-lingual man(7) scenario. + + * tmac/tests/localization-works.sh: Test two more cases. Ensure + that the 'trap bit' (hyphenation value 2, which has nothing to + do with any language) is preserved when switching locales back + from a CJK language, since those languages' modes + unconditionally clear it. We test Japanese and Chinese; we have + no localization macro file for Korean at this time. + +2022-04-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Slightly refactor `an*abbreviate-inner-footer`. + + * tmac/an.tmac (an*abbreviate-inner-footer): Discard + unnecessary string. + +2022-04-09 Ingo Schwarze <schwarze@openbsd.org> + + Fix the configuration of texi2dvi. + + * m4/groff.m4: Set groff_have_texi2dvi if texi2dvi(1) is + available and usable, even if the availability was specified by + the user by manually providing the configure variable + PROG_TEXI2DVI, and not only if it was autodetected. + Also, set the PROG_TEXI2DVI Makefile variable to the name of + the texi2dvi program specified by the user or autodetected, + and not to the string "found", such that this Makefile variable + can be used for invoking the program. + * doc/doc.am: Call the texi2dvi program specified by the user + or autodetected rather than hardcoding "texi2dvi". This lets + the groff build succeed on systems where the first texi2dvi + in the $PATH is an old version unfit for groff's purposes. + +2022-04-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Abbreviate long `TH` arguments more carefully. + + * tmac/an.tmac: Do it. + (an*scan-string-for-backslash): Add new helper macro. + (an*abbreviate-inner-footer): Rewrite. Use the foregoing and a + different technique to compute available space and shorten the + string. + + Fixes <https://savannah.gnu.org/bugs/?62257>. + +2022-04-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Add regression test for Savannah #62257. + + * tmac/tests/an_do-not-abbreviate-escape-using-TH-arguments.sh: + Do it. + * tmac/tmac.am (tmac_TESTS): Run it. + +2022-04-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac: Trivially refactor. Rename strings `an-ifoot` + to `an*ifoot` and `an-outer-footer-text` to `an*ofoot`. + +2022-04-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac: Refactor. Abbreviate page title and inner + footer only once per document instead of once per page. + Exception: the legacy macros `AT` and `UC` change the inner + footer, so re-abbreviate it if they are called. + (TH, AT, UC): Call abbreviation macros from here... + (an-header, an-footer): ...instead of here. + +2022-04-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac: Refactor: initialize header/footer environment + only once. Also rename it to `an*env-header-and-footer`. + (TH): Do it here... + (an-header, an-footer): ...instead of here. + +2022-04-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac: Trivially refactor. + (an*prepare-page-title): Rename this... + (an*abbreviate-page-title): ...to this. + (an-prepare-inner-footer): And this... + (an*abbreviate-inner-footer): ...to this. + (an-header, an-footer): Update call sites. + +2022-04-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/eqn/other.cpp (hmotion_box::output): Fix typo in + generated MathML diagnostic message. + +2022-04-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am (EXTRA_DIST): Add "groff.dvi" and "groff.pdf" to + ensure that the GNU-released groff distribution archive contains + our Texinfo manual in these formats. (This doesn't increase the + build-dependency requirements unless you want to "make dist", in + which case it _should_.) + +2022-04-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Add nroff mode fallback for `UL` macro. + + * tmac/s.tmac (UL): On nroff devices, bracket the first argument + with \(ul (underline rule) special character escape sequences. + {In plain language, '.UL "like this"' renders "_like this_".} + See corresponding 12 February change to "tmac/e.tmac". + +2022-04-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am: Drop unnecessary `-I` options to groff. + (DOC_GROFF): There is no need to look at the top of the build + directory for any file inclusions. + (doc/webpage.html): There is no need to look in `doc_builddir` + for file inclusions, since that is the current working directory + when "webpage.ms" is processed. + +2022-04-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am: Trivially refactor. Use `RM` macro idiomatically. + Automake ensures that it is defined to call an `rm` command with + the `-f` option, and this in turn ignores failures to delete + nonexistent files, so... + (uninstall_doc_examples, uninstall-pdf): Stop adding superfluous + `-f` flag. + (clean_infodoc uninstall-pdf, uninstall-html): Stop prefixing + command with `-` to ignore error exit status. + (uninstall-html): Drop superfluous `-r` flag; we're only + deleting files with this command, not directories. + +2022-04-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am: Trivially refactor shell style in rule commands. + The placement of `&&` was inconsistent. Always begin a + continued rule line with it, and don't give it its own + indentation level. In general, operators adjacent to line + continuations should _follow_ the continuations because they are + easier for humans to spot at the (possibly indented) beginning + of a physical line. + +2022-04-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * Makefile.am: Rename `TFLAG` macro, which means "tmac flag", to + `MFLAG`, because it expands to `-M` options to groff, not the + `-T` option, which can be bewildering. + * doc/doc.am (DOC_GROFF): Update expansion site. + +2022-03-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am: Rename `DOC_GROFF_ONLY` to `DOC_GROFF`. + +2022-03-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am: Refactor. Drop ghastly hack used to get file + names into troff diagnostics when reading from standard input. + We've refactored so that it no longer does, making the hack + unnecessary. For the same reason, no users of the `DOC_GROFF` + macro remain, so delete it. Add comments to explain what + `DOC_SED` and `DOC_GROFF_ONLY` are for. + +2022-03-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am: Refactor. + (doc/pic.html, doc/webpage.html): Drop indirection of source + document through `DOC_SED` macro. It was not necessary since + neither of these documents are parameterized in configuration + options (that is, they don't contain @VERSION@ or @g@). + +2022-04-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am: Trivially refactor. + (doc/webpage.html): Tidy up dependency list. Create directory + using the same macro interpolation we use to change into it. + +2022-04-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am: Refactor and fix error in builds in remote + out-of-source-tree builds exposed by pending commit and `make + distcheck`. The images generated for the pic.html and + webpage.html files were being built in the wrong directory, and + subsequently not found by an install rule. + (imagedir): Add comment explaining purpose of macro. It should + _not_ be used with any file specifications relative to the + source or build trees--it is for installation directories only. + (htmldocimagedir, exampleimagedir): Drop macros. + + (doc/pic.html, doc/webpage.html): Replace interpolations of + `imagedir` with literal "img", since these files are being + generated within the build tree: the directory name is known. + + (mostlyclean_doc, install_doc_htmldoc, install_doc_examples): + Replace interpolations of `htmldocimagedir` relative to + `doc_builddir` with "img" literals. + + (install_doc_htmldoc, uninstall_doc_htmldoc): Interpolate + concatenation of `htmldocdir` and `imagedir` instead of + `htmldocimagedir` (relative to `DESTDIR`). + (install_doc_examples, uninstall_doc_examples): Interpolate + concatenation of `exampledir` and `imagedir` instead of + `exampleimagedir` (relative to `DESTDIR`). + +2022-04-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am: Refactor. Relocate "doc/grnexampl.ps" target to + group it with other me(7) documents. Put addition of + "doc/examples.stamp" to `MOSTLYCLEANFILES` adjacent to its + target rule. Relocate same rule so that it precedes the target + depending on it (make(1) might not benefit from this, but human + readers can). + +2022-03-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am: Refactor. + (DOC_GROFF_ONLY): Drop preprocessor options from groff command. + This macro is now, simply, a way to run the in-tree groff: no + assumptions about preprocessors, macro packages, or output + device are made. + (doc/pic.html, doc/webpage.html): Add only necessary + preprocessor options after expansion of `DOC_GROFF_ONLY`. + +2022-03-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am: Refactor. Add explicit dependencies of compiled + man page documents on preprocessors needed to generate them. In + their target rules, explicitly use groff's preprocessor options, + freeing us up to simplify the `DOC_GROFF_ONLY` macro. + +2022-03-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am: Rationalize dependencies. Drop dependency of + `PROCESSEDEXAMPLEFILES` and `PROCESSEDDOCFILES` on expansion of + `hdtbltmac_DATA`, because nothing in this directory uses the + hdtbl package. Move dep of same expansions on "gnu.eps" to + "doc/webpage.html", which actually uses it. Put the numerous + dependencies of "doc/pic.html" and "doc/webpage.html" in a + parallel ordering so that they are easier for humans to + evaluate. These targets' dependencies on `bin_PROGRAMS` and + `prefixexecbin_PROGRAMS` are overkill and should be reviewed at + a later date. + +2022-04-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am: Refactor use of target and suffix rules. + (doc/meintro.me, doc/meintro_fr.me, doc/meref.me): Add target + rules, with lengthy, exasperated comment about lack of feature + parity in various make(1) implementations. + (doc/meintro_fr.ps): Add target rule, as this seems to be the + only way to keep GNU Make from ignoring a '_fr.me._fr.ps' suffix + rule in favor of '.me.ps', which doesn't call preconv (and + doesn't need to--and moreover we don't want to build English + me(7) documents with the `-mfr` option). Depend on `preconv`. + (doc/webpage.ps): Convert from suffix rule to target rule. + (doc/ms.ps, doc/pic.ps, doc/webpage.ps): Add target rules and + dependencies. + (.ms.ps): Add commented-out suffix rule (since nothing uses it, + but might in the future). + (doc/meintro_fr.ps, .me.ps, doc/pic.ps, doc/webpage.ps): Migrate + expansions of `DOC_GROFF` to `DOC_GROFF_ONLY` to prepare for a + forthcoming simplification. + +2022-04-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am: Clean generated doc files better. doc/me*.me were + getting left behind in the build tree. + (MOSTLYCLEANFILES): Add `GENERATEDDOCFILES`. This includes + `DOC_GNU_EPS`, so... + (clean_maintdoc): Drop phony target that manually removes it. + (maintainer-clean-local): Drop dependency on foregoing. + +2022-04-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/xditview/xditview.am (install_xditview) + [!WITHOUT_X11]: Stop backing up existing "GXditview" and + "GXditview-color" application defaults files. There is no + symmetric restoration of them in the uninstall target, and it + seems like unjustifiable complexity to add such. These are + groff-specific file names, installed (by default) to /usr, + not /etc, so they are not going to be "configuration files" in + Debian-based systems, for example (and likely not elsewhere). + There are other ways to supersede application defaults for + programs using the X Toolkit Intrinsics. + +2022-04-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am: Stop treating "gnu.eps" as an "example" file; it + is also used by pdfmark's cover.ms, which is ordinary + documentation. We therefore must not omit it when building. + (install-data-hook): Add dependency on new phony target, + "install_doc_gnu_eps". + (install_doc_examples): Move installation of "gnu.eps" from + here... + (install_doc_gnu_eps): ...to here. Also refactor the loop we + use to locate the file to follow a more idiomatic pattern. + +2022-04-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am (dist-info-bits, install_infodoc, dist-gnueps): Fix + code style nit: use consistent "brace style" in conditionals and + loops. + +2022-04-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am (mostlyclean_doc): When cleaning, try harder to + remove the image directory created by the "pic.html" and + "webpage.html" targets. + +2022-04-02 Ingo Schwarze <schwarze@openbsd.org> + + * doc/doc.am: Stop installing doc/meintro.me.in, + doc/meintro_fr.me.in, and doc/meref.me.in. + +2022-03-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/webpage.ms: Die horribly if `PSPIC` call fails. + +2022-03-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/pspic.tmac (pspic*error-hook): Define (as empty). + * man/groff_tmac.5.man (Auxiliary packages) <pspic>: Document. + * NEWS: Add item. + +2022-03-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am (doc/webpage.ps): Relocate target rule. + +2022-03-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tests/pdfpic_does-not-choke-on-bad-pdfinfo-output.sh: + * tmac/tests/pdfpic_falls-back-to-PSPIC.sh: Remove output file + even when skipping test. Quote `fail` variable when checking it + with `test -z`. + +2022-03-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * man/groff_tmac.7.man (Auxiliary packages): Tweak sboxes + documentation to imply ms dependency. + + Fixes <https://savannah.gnu.org/bugs/?62062>. + +2022-03-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac (an*bookmark): Trivially refactor. Now that + we're no longer doing arithmetic on our first argument, simplify + our definition. Made possible by commit 3baf0e2f3, 23 February. + +2022-03-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/preconv/preconv.cpp (detect_file_encoding): Demote + an error diagnostic to a debugging message. libuchardet has no + man page, and inspecting the source of the + `uchardet_handle_data` function we find that it effectively + returns a Boolean value (if the result of a + `reinterpret_cast`(!) is not `NS_OK`). This is useless + information for a user-facing tool. We're designed to muddle on + regardless (see preconv(1)). + +2022-03-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grodvi/dvi.cpp (dvi_printer::set_color) + (draw_dvi_printer::fill_next): + * src/devices/grops/ps.cpp (output::put_color): + * src/libs/libgroff/color.cpp (color::print_color): Construct + doubles instead of casting to them. + +2022-03-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + [doc]: Refactor handling of "gnu.eps" file. + + * doc/doc.am: Put "gnu.eps" in a Make macro, `DOC_GNU_EPS`. + ($(PROCESSEDEXAMPLEFILES) $(PROCESSEDDOCFILES), + doc/webpage.html, install_doc_examples): Migrate dependency to + `DOC_GNU_EPS`. + (doc/webpage.ps): Add (missing) dependency on `DOC_GNU_EPS`. + (DOC_GROFF_ONLY): Drop `-I` flag; it's not necessary given the + following. + (.ms.ps): Drop `-mwww` argument from suffix rule. A truly + generic ms document won't need it. + (doc/webpage.ps): Add target rule. Include `-mwww` argument. + (doc/webpage.ps, doc/webpage.html): Pass `-I` option to + `DOC_GROFF` and `DOC_GROFF_ONLY` (respectively) to enable + location of "gnu.eps" file. Search the build and source trees' + "doc" directories because the file can be generated as part of + the build or can come with the distribution archive. + (EXTRA_DIST): Drop redundant inclusion of "doc/gnu.xpm". + (clean_maintdoc): Add phony target to dispose of `DOC_GNU_EPS`. + (maintainer-clean-local): Depend on "clean_maintdoc". + + * tmac/tests/pdfpic_does-not-choke-on-bad-pdfinfo-output.sh: + * tmac/tests/pdfpic_falls-back-to-PSPIC.sh: Update tests to look + for "gnu.eps" in "doc" directory of build tree. Give generated + files distinguishable names so their tests can run concurrently. + +2022-03-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am: Add new macro `PROCESSEDDOCFILES_PS` to isolate + names of targets in PostScript format. Expand this macro in + definition of `PROCESSEDDOCFILES` and use it to move PostScript + font description file dependencies of the latter and + `PROCESSEDEXAMPLEFILES` to the former. (At present, the + dependency might seem superfluous, since those files are in the + source distribution, but it's conceivable that in the near + future, they will be produced at build time from Adobe font + metric files; see font/devps/generate/Makefile). The "pic.html" + and "webpage.html" targets already had such a dependency because + of the way grohtml (pre-grohtml) works. + +2022-03-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + * INSTALL.extra: Add a section on uninstalling. + +2022-03-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am: Create target rule for "doc/grnexampl.ps" instead + of relying on a suffix rule. Explicitly depend on grn and eqn + executables. Produce output using their groff flags, "-ge". + +2022-03-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/pdfpic.tmac (PDFPIC): Fix breakage when no temporary + directory environment variables are defined: actually use string + interpolation syntax in comparand to output comparison + operator. Problem introduced by me in commits adc1999af and + 24900cf6d, 15 February. + +2022-03-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devX100-12/devX100-12.am: + * font/devX100/devX100.am: + * font/devX75-12/devX75-12.am: + * font/devX75/devX75.am: Fix in-tree build; expand `fontdir` + instead of `abs_top_builddir` Make macro when defining Automake + variable for generated artifacts. Problem introduced by me in + commit 3c82cbbfe, 27 February. Thanks to Robert Goulding for + the report. + +2022-03-22 Ingo Schwarze <schwarze@openbsd.org> + + * doc/doc.am: delete redundant "SUFFIXES +=" line + +2022-03-22 Ingo Schwarze <schwarze@openbsd.org> + + * doc/doc.am: fix non-portable syntax in the meintro_fr.ps + target: This rule requires DOC_GROFF and hence $<, so turn it + into a suffix rule. + +2022-03-22 Ingo Schwarze <schwarze@openbsd.org> + + * doc/doc.am: fix non-portable syntax in the doc/me*.me targets: + POSIX does not define the meaning of $< in non-suffix rules, so + use the portable $? instead. This is adequate here because each + of these three rules has exactly one prerequisite. + +2022-03-22 Ingo Schwarze <schwarze@openbsd.org> + + * doc/doc.am: fix non-portable syntax in the groff-man-pages.* + targets by using DOC_GROFF_ONLY rather than DOC_GROFF in order + to not use $< outside a suffix rule; DOC_GROFF functionality is + not needed here in the first place. + +2022-03-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac: + * tmac/doc.tmac: Stop remapping input hyphens on `utf8` device. + +2022-03-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/doc.tmac: Stop remapping ` and ' on `utf8` output device. + Aligns mdoc(7) with commit 697e6db7f, 19 October 2020 (for + man(7)). + +2022-03-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/afmtodit/afmtodit.pl: Fix bug introduced in commit + 0d451902c, 10 March. Don't store a newline in the version + string. Put `\n` in its interpolation context as necessary. + +2022-03-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + Install ptx.tmac. + + * tmac/tmac.am (TMACNORMALFILES): Add it. + * NEWS: Report availability. + + Fixes <https://savannah.gnu.org/bugs/?62201>. Thanks to Ralph + Corderoy for the report. + +2022-03-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + Drop ditroff(7) document. It says nothing that is not covered + elsewhere. + + * man/ditroff.7.man: Delete. + * doc/doc.am (GROFF_MAN_PAGES): + * man/man.am (man7_MANS, EXTRA_DIST): Stop processing, shipping. + * src/roff/groff/groff.1.man: Drop cross reference to it. + * NEWS: Add item. + + Fixes <https://savannah.gnu.org/bugs/?61817>. + +2022-03-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + [preconv]: Trivially refactor. + + * src/preproc/preconv/preconv.cpp: Use diagnostic message + functions from libgroff where possible. Explain in a comment + why we don't use `debug()`. Boolify and rename some variables, + and use Boolean literals to assign to them. + debug_flag -> is_debugging + invalid_warning -> emit_invalid_utf8_warning + incomplete_warning -> emit_incomplete_utf8_warning + Rename `expected_bytes` to `expected_byte_count`. Except for + the debugging flag, these are all members of `struct + conversion`. + (get_tag_lines): Migrate to `warning()`. + (detect_file_encoding): Migrate to `error()` and `fatal()`, as + appropriate. + (utf8::invalid, utf8::incomplete, get_tag_lines): Don't break a + line in the middle of a diagnostic; doing so frustrates grepping + and necessarily makes an assumption about the terminal width. + +2022-03-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Trivially refactor. + + * src/roff/troff/input.cpp: Rename global variable + `have_string_arg` to `have_multiple_params` and demote it from + an integer to a Boolean. Assign Boolean literals to it. + (read_long_escape_parameters, get_copy, token::next): Do it. + +2022-03-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Fix Savannah #62191. + + * src/preproc/tbl/main.cpp (table_input::get): Increment input + line counter when encountering an escaped newline; this fixes + inaccurate diagnostics from the formatter at any point in a + document after a line-continued row of table data. Also drop a + "perhaps" comment. I tested the surmise (setting the FSM state + to "START"), and it results in bad formatting. + + Fixes <https://savannah.gnu.org/bugs/?62191>. Problem appears + to date back to groff 1.02 (June 1991) at the latest. + +2022-03-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Regression-test Savannah #62191. + + * src/preproc/tbl/tests/count-continued-input-lines.sh: Do it. + * src/preproc/tbl/tbl.am (tbl_TESTS): Run test. + +2022-03-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Environments): Clarify environment handling. + * man/groff.7.man (Environments): Add new section. + + Fixes <https://savannah.gnu.org/bugs/?62036>. Thanks to Dave + Kemper for the report and a suggested patch. + +2022-03-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac (initialization): Define `@b` as empty if + formatting for HTML, because no page breaks occur in that + format. + + Fixes <https://savannah.gnu.org/bugs/?62039>. + +2022-03-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grodvi/dvi.cpp (usage): Align usage message with + man page; disclose `-l` option. + +2022-03-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grodvi/dvi.cpp (main): + * src/devices/grops/ps.cpp (main): Update diagnostic: + characterize bad `-w` argument as "invalid", not "bad", and + explicitly report it as ignored. + + * src/devices/grodvi/dvi.cpp (main): Report invalid parameter + in `-w` diagnostic. + +2022-03-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grodvi/dvi.cpp (dvi_printer::set_color) + (draw_dvi_printer::fill_next): + * src/devices/grops/ps.cpp (output::put_color): + * src/libs/libgroff/color.cpp (color::print_color): Explicitly + cast `enum` divisors to `double`; quietens + `-Wdeprecated-enum-float-conversion` warnings. + + Fixes <https://savannah.gnu.org/bugs/?61964>. Thanks to Bjarni + Ingi Gislason for the report. + +2022-03-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac: Recover more quickly from missing `EE` calls. + (initialization): Define new strings, `an*body-family` and + `an*example-family` to house the font families used in these + rendering contexts. + (TH, SH, SS): Restore the font family to `an*body-family`. + (TH): Set font style to roman as well. + (EX): Change to `an*example-family` instead of literal "C". + + Fixes <https://savannah.gnu.org/bugs/?62187>. + +2022-03-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac: Test register for existence before using it to + set hyphenation mode. A site troffrc or other local + customization might remove the register (which is guaranteed to + be set under the stock configuration) and, perversely, Heirloom + Doctools troff interprets a `do` request, instead of ignoring it + as a historical troff implementation would, so if they borrow + our me(7) changes, the register would be unset, interpolate + zero, and hyphenation would wind up disabled. + + Fixes <https://savannah.gnu.org/bugs/?62181>. Thanks to Dave + Kemper for the report. + +2022-03-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tests]: Rename test to apply naming scheme. + + * tmac/tests/pdfpic_falls_back_to_PSPIC.sh: Rename this... + * tmac/tests/pdfpic_falls-back-to-PSPIC.sh: ...to this. + * tmac/tmac.am (tmac_TESTS): Use new name. + +2022-03-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grops/ps.cpp (usage): Align usage message with man + page synopsis. + +2022-03-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Input Line Traps): Fix error; input traps do + _not_ ignore control lines. Error appears to have crept in with + the first version of our Texinfo manual, shipped with groff 1.14 + {December 1999}. + +2022-03-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devps/devps.am: Rename targets. + (fonts): + (devps_fonts): Rename these... + (maintainer-font-descriptions): + (devps_font-descriptions): ...to these. Add comments explaining + what they're for and why they aren't used in a build. + + * font/devps/generate/Makefile: Add `outdir` variable to store + destination directory of font description files, and update all + targets that write artifacts to use this directory. This makes + the targets "phony", which I don't regard as a problem since the + generated artifacts are kept under source control, and this + isn't really a user-facing script (even though it gets + installed). I think there is a good chance that this will + become a shell script, because to avoid regressions we need to + generate the font descriptions using both the 229-glyph and + 314-glyph versions of the Adobe fonts' AFM files (so that we get + wider glyph coverage _and_ more kerning pair data) and we need + to add kerning information for the ellipsis (Savannah #58897). + (symbolsl.afm): Revise generation process to be sensitive to + failure. + +2022-03-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devps/symbolsl.afm: New file. + * font/devps/devps.am (EXTRA_DIST): We have long shipped + "symbol.afm" with the distribution archive--I don't see why we + don't ship "symbolsl.afm" and "zapfdr.afm" as well (metrics for + `SS`, the slanted symbol font, and ZDR, reversed Zapf Dingbats). + Like the Type 1 font descriptions themselves, this file is + updated only in "maintainer mode", not as part of the build. + Moreover, these fonts are not part of the PostScript level 2 + base 35 fonts so their AFM files are unlikely to be readily + available elsewhere. + +2022-03-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/afmtodit/afmtodit.pl: Trivially refactor. Store the + program's version string in scalar `afmtodit_version` and use + that in the usage message and comment embedded in the output. + +2022-03-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/afmtodit/afmtodit.pl: Fix code style nits. Migrate + to the shebang line style we use in more recently modified Perl + scripts. Replace `-w` with `use warnings;`. Shorten an output + comment since the groff version string can grow long (see commit + 1264531310, 14 January 2018). + +2022-03-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/afmtodit/afmtodit.pl: Stop writing full file name to + the generated font description file as the "name" (i.e., don't + include directory components). + + Fixes <https://savannah.gnu.org/bugs/?62150>. Thanks to Dave + Kemper for the discussion and code review. + +2022-03-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/afmtodit/afmtodit.1.man: + * src/utils/afmtodit/afmtodit.pl: Update and align man page + synopsis, option descriptions, and command usage output. + +2022-03-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/X.tmac: Redirect `fchar` requests for \[lq] and \[rq] to + \[dq] since the X11 Type 1-based text fonts encode ISO 8859-1 + {Latin-1} and don't have typopgrapher's quotes. Drop `fchar` + request for \[aq], which _is_ represented, per recent changes. + +2022-03-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + * /font/devX100-12/CB: + * /font/devX100-12/CBI: + * /font/devX100-12/CI: + * /font/devX100-12/CR: + * /font/devX100-12/HB: + * /font/devX100-12/HBI: + * /font/devX100-12/HI: + * /font/devX100-12/HR: + * /font/devX100-12/NB: + * /font/devX100-12/NBI: + * /font/devX100-12/NI: + * /font/devX100-12/NR: + * /font/devX100-12/TB: + * /font/devX100-12/TBI: + * /font/devX100-12/TI: + * /font/devX100-12/TR: + * /font/devX100/CB: + * /font/devX100/CBI: + * /font/devX100/CI: + * /font/devX100/CR: + * /font/devX100/HB: + * /font/devX100/HBI: + * /font/devX100/HI: + * /font/devX100/HR: + * /font/devX100/NB: + * /font/devX100/NBI: + * /font/devX100/NI: + * /font/devX100/NR: + * /font/devX100/TB: + * /font/devX100/TBI: + * /font/devX100/TI: + * /font/devX100/TR: + * /font/devX75-12/CB: + * /font/devX75-12/CBI: + * /font/devX75-12/CI: + * /font/devX75-12/CR: + * /font/devX75-12/HB: + * /font/devX75-12/HBI: + * /font/devX75-12/HI: + * /font/devX75-12/HR: + * /font/devX75-12/NB: + * /font/devX75-12/NBI: + * /font/devX75-12/NI: + * /font/devX75-12/NR: + * /font/devX75-12/TB: + * /font/devX75-12/TBI: + * /font/devX75-12/TI: + * /font/devX75-12/TR: + * /font/devX75/CB: + * /font/devX75/CBI: + * /font/devX75/CI: + * /font/devX75/CR: + * /font/devX75/HB: + * /font/devX75/HBI: + * /font/devX75/HI: + * /font/devX75/HR: + * /font/devX75/NB: + * /font/devX75/NBI: + * /font/devX75/NI: + * /font/devX75/NR: + * /font/devX75/TB: + * /font/devX75/TBI: + * /font/devX75/TI: + * /font/devX75/TR: Regenerate font descriptions with xtotroff, + using updated ISO-8859_1 map. \[aq] and \[oq] are now aliases + of "'" and \[ga] is an alias of "`". This change probably + should have been made when the X11 fonts were corrected in + XFree86 4.0 (March 2000). See + <https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html>. + + Fixes <https://bugs.debian.org/243238>. + +2022-03-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/libs/libxutil/DviChar.c (ISO_8859_1_map): Fix incorrect + assignment of Latin-1 grave accent to \[oq] special character; + reassign it to the neutral apostrophe. Map \[aq] to neutral + apostrophe. Map \[ga] to '`'. + +2022-03-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/xtotroff/xtotroff.1.man (Options) <-d>: Document new + option. + * src/utils/xtotroff/xtotroff.c (usage): Align with man page. + +2022-03-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Manipulating Filling and Adjustment): + Explicitly identify the page offset as an output line property + that is not determined until a break occurs. + + (Line Layout) <po>: Correct error; the page offset for terminal + devices is set by "tty.tmac", not "troffrc". (The manual has + been wrong for a long time; we've had it in tty.tmac since James + Clark put it there in 1992.) Recast and tighten wording. Drop + the word "horizontal"; there is no vertical page offset (as + such) in *roff. Replace hand-waving about unexpected results + with a description of the formatter's behavior. Document + request behavior without an argument before getting into the + weeds (and CSTR #54 errata). Migrate terminology from "scaling + indicator" to "scaling unit". + + Fixes <https://savannah.gnu.org/bugs/?58035>. + +2022-03-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Expressions): Expand '|' operator explanation. + Split discussion of its application into horizontal and vertical + contexts. Add example of vertical usage. + + Fixes <https://savannah.gnu.org/bugs/?60820>. + +2022-03-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp: Trivially refactor. Drop `#define` + that was working around a GCC 2.95-era libstdc++ problem. + Shorten long line. + (get_char_for_escape_parameter): Demote parameter from `int` to + `bool` and use Boolean literal for default argument. Annotate a + null pointer constant. + +2022-03-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Rename some internal functions. + + * src/roff/troff/input.cpp: Do it. + (read_escape_name): + (read_long_escape_name): + (read_two_char_escape_name): + (get_char_for_escape_name): + (read_increment_and_escape_name): Rename these... + (read_escape_parameter): + (read_long_escape_parameters): + (get_char_for_escape_parameter): + (read_two_char_escape_parameter): + (read_increment_and_escape_parameter): ...to these. + (read_two_char_escape_parameter, read_long_escape_parameters, + read_escape_parameter, read_increment_and_escape_parameter, + get_copy, token::next): Update call sites. + +2022-03-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (get_char_for_escape_name): Recast + diagnostic messages to more accurately refer to escape + "sequence" rather than "name". "Name" is a confusing term here, + given that it also applies to a group of objects sharing a name + space (natch): requests, macros, strings, and diversions. + Further, the "escape name" cited by these diagnostics is not the + escape function selector; that is, the character after the + escape character which determines how the escape sequence is to + be interpreted. These diagnostics are only thrown after that + function is known, however, when parsing of an escape sequence + parameter is attempted. + (input_char_description): Drop leading articles ("a") from + input character descriptions, to economize in diagnostic + messages this function helps produce. + (non_empty_name_warning): Use zero copula for economy. + + * src/roff/troff/input.cpp (empty_name_warning, read_size) + (token::get_char, check_missing_character): + * src/roff/troff/number.cpp (start_number, parse_term): Recast + messages to more consistently use the form "expected X, got Y" + where feasible. + + * src/roff/troff/number.cpp (start_number): Say "numeric + expression missing" instead of "missing number"; we don't + require a terminal symbol in the expression grammar here. Also + use `tok.description()` where we can, and remove assumption that + the escape character is the default. + +2022-03-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac (AT, UC, HP): Add deprecation warnings. For the + last, only do so if we're not inside a synopsis (SY/YS), since + our definition of `SY` calls `HP` internally. (This does seem + hypocritical. Perhaps if we knew the correct CSS incantation + to speak in grohtml, we could un-deprecate `HP`.) + +2022-03-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tmac.an (M4CHECK): Rename stamp file to make its purpose + clearer. + +2022-03-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Tweak customization management. + + * tmac/an.tmac: Load "man.local" with `msoquiet` request, so + people can get rid of the file if they don't need it. + (PT, BT): Define these macros only if not already defined. This + is slightly less paranoid but far more ergonomic, given + interactions with the andoc wrapper. Now user-defined page + header traps (PT) defined in man.local can take effect on the + first page rendered. + + * tmac/groff_man.7.man.in (Hooks): Document how to remove page + headers and/or footers entirely. + + Fixes <https://savannah.gnu.org/bugs/?61954>. + +2022-03-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [refer,mm]: Add and use `ref*reset` macro to clean up between + bibilography entries. + + * tmac/refer.tmac (]-): Move string clean up logic from here... + (ref*reset): ...to this new macro. Now we can also use it... + + * contrib/mm/refer-mm.tmac (ref*][-first-pass): ...here. + + Problem appears to date back to refer-mm.tmac's introduction in + January 2011. Thanks to Bjarni Ingi Gislason for the root-cause + analysis and proposed fix, to which I applied the DRY principle + and added a reset of `ref*string` as well. + + Fixes <https://savannah.gnu.org/bugs/?60657>. + +2022-03-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mm]: Regression-test Savannah #60657. + + * contrib/mm/tests/remove-stale-bib-entry-data.sh: Do it. + * contrib/mm/tests/artifacts/60657.ref: Add new file. + * contrib/mm/mm.am (mm_TESTS): Run test. + (EXTRA_DIST): Ship test artifact in distribution archive. + + Thanks to Bjarni Ingi Gislason for the straightforward + bug reproducer. + +2022-03-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [refer]: Report correct line number in bibliography file + diagnostics. + + * src/preproc/refer/refer.cpp (do_bib): Set line number to 1 + upon successfully opening a bibliography file. + + Problem appears to date back to groff 1.02 (June 1991) at the + latest. + + Fixes <https://savannah.gnu.org/bugs/?62142>. + +2022-03-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [refer]: Regression-test Savannah #62124. + + * src/preproc/refer/tests/report-correct-line-numbers.sh: Do it. + * src/preproc/refer/tests/artifacts/62124.ref: Add new file. + * src/preproc/refer/refer.am (refer_TESTS): Run test. + (EXTRA_DIST): Ship test artifact in distribution archive. + +2022-03-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/div.cpp + (top_level_diversion::transparent_output): + * src/roff/troff/input.cpp (transparent_translate): Suppress two + troublesome (i.e., more or less spurious) error diagnostics + about transparent output/throughput unless the environment + variable `GROFF_ENABLE_TRANSPARENCY_WARNINGS` is present. This + is a bit of a bodge until we get diversion sanitization worked + out. See Savannah #61407. + +2022-03-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + [preconv]: Stop assuming that the default input stream, or an + explicit '-' operand, is the only unseekable stream. Check + instead. + + * src/preproc/preconv/preconv.cpp (do_file): Add new Boolean + `is_seekable`. Test the input stream with `fseek()` per a + suggestion from Ingo Schwarze. Report unseekability in debug + output and skip coding tag and uchardet tests altogether + {precisely paralleling our description in the preconv(1) man + page}. Also update debugging output to say "<standard input>" + instead of "-". + + Fixes <https://savannah.gnu.org/bugs/?62131>. + +2022-03-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + [preconv]: Regression-test Savannah #62131. + + * src/preproc/preconv/tests/do-not-seek-the-unseekable.sh: Do + it. + * src/preproc/preconv/preconv.am (preconv_TESTS): Run test. + +2022-03-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/main.cpp (process_format): Update diagnostic + to recognize that a font mounting position is also an acceptable + argument to the 'f' column modifier. + +2022-02-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + Refactor X11 font description generation. Integrate it with our + "new" (post-2014) Automake-based build system. + + * src/utils/xtotroff/Makefile.in: Delete relic of old build + system. Also, it had a bug: it generated X11 output device + 'DESC' files with a "unitwidth 10" directive even for the "-12" + devices, which is not correct (the in-tree DESC files we've been + shipping for years were nevertheless correct, apparently fixed + by hand by James Clark in groff 1.07 [March 1993]). + + * src/utils/xtotroff/xtotroff.am: Define `xtotroff` variable for + use by X11 font description generation targets below. + + * font/devX100-12/devX100-12.am: + * font/devX100/devX100.am: + * font/devX75-12/devX75-12.am: + * font/devX75/devX75.am: Add new (phony) targets, variously + named "devX{100,100_12,75,75_12}", to generate the corresponding + output device's DESC file and run xtotroff(1) to generate its + font description files. Be sure to set the correct "unitwidth" + for the "-12" devices. Add new dependency-only rule + "maintainer-font-descriptions" depending on these new targets + for convenience (and future expansion to devps and devlj4). + + * FOR-RELEASE: Document existence of + "maintainer-font-descriptions" Make target and when to run it. + + Running this target with the aforementioned bug fix, overwriting + the in-tree DESC and font description files using data gathered + from a running X server, results in no changes whatsoever. Say + what you will about X11 core font technology--it's stable. + +2022-02-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + Rename and ship "FontMap-X11". xtotroff(1) is not very useful + without a font name mapping file to read. To date it has been + available only in the source distribution. Remedy that. The + file is placed directly in the groff font directory alongside + the device directories because it applies to four different + devices, and four copies of this data are not required. + + * src/devices/xditview/FontMap: Rename to... + * src/devices/xditview/FontMap-X11: ...this. + + * LICENSES: + * src/devices/xditview/xditview.am (EXTRA_DIST): Reflect rename. + + * src/devices/xditview/xditview.am (install_xditview + [!WITHOUT_X11], uninstall_xtdiview): (Un-)install it. + + * src/utils/xtotroff/xtotroff.1.man (Files): Add section + documenting the presence and purpose of this file. + +2022-02-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + [xtotroff]: Add `-d` option to produce font description files in + specified directory. + + * src/utils/xtotroff/xtotroff.c: Do it. Add global `destdir` + pointer. + (xtotroff_exit): Add new function to clean up storage allocated + by `strdup()` (below) for destination directory. + (MapFont): Introduce new variable `file_name`, into which we + assemble a destination file name from `destdir` (if not null) + and the troff font name. Handle memory allocation failure (by + carefully dying). Free allocated storage on success and failure + paths out of the function. + (usage): Document new `-d` option. + (main): Instruct `getopt_long` to expect a `-d` flag with an + argument. Use `strdup()` to make a copy of any such option + argument. Call `xtotroff_exit()` instead of `exit()`. + + * src/utils/xtotroff/xtotroff.1.man: Document new `-d` option. + +2022-02-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + [xtotroff]: Trivially refactor. + + * src/utils/xtotroff/xtotroff.c: Boolify. Include `stdbool.h` + and `errno.h` headers. + (charExists, CanonicalizeFontName, FontNamesAmbiguous, MapFont): + Boolify. Demote return type from `int` to `bool` and return + Boolean instead of integer literals. + (FontNamesAmbiguous, main): Reorder equality comparisons with + simple left-hand sides to avoid inadvertent lvalue assignments. + (FontNamesAmbiguous, MapFont): Refer to font name as "invalid", + not "bad", in diagnostic messages. + (MapFont, main): Use `strerror()` instead of `perror()` so that + diagnostics include the program name and an indication of + problem severity. + (MapFont): Compare `FILE` stream pointer to `NULL` instead of + treating it as a Boolean. + (main): Use `EXIT_SUCCESS` and `EXIT_FAILURE` constants from C + library instead of integer literals for exit status. + +2022-02-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + [pic]: Fix "unused result" compiler warning. + + * src/preproc/pic/pic.ypp (placeless_element) <SH>: Check return + value of `system()` to quieten `-Wunused-result` warning; if it + is less than zero, report it to the standard error stream. + +2022-02-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/safer.tmac: Drop file from distribution. It contained + only comments. + * tmac/tmac.am (TMACNORMALFILES): Delete reference. + * NEWS: Add item. Suggest two workarounds for its absence. + + Fixes <https://savannah.gnu.org/bugs/?61831>. + +2022-02-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/doc.tmac (initialization): Drop definition of + `doc-curr-size` register. It is no longer needed since nothing + internal to the package now changes the type size. + + * tmac/doc.tmac (Fl, doc-print-recursive, doc-print-prefixes) + (doc-generic-macro, Ar, Cd, doc-do-func-decl, Fd, In, Nm, Pa) + (Tn, doc-enclose-string, Ef, Bd, doc-save-global-vars) + (doc-restore-global-vars, doc-diag-list, Xr, Dl, Vt, Ft, Fa) + (doc-do-func, Fn, doc-do-func-args, Fo, Fc, %A, %B, %C, %D, %I) + (%J, %N, %O, %P, %Q, %R, %T, %U, %V, doc-do-reference, Hf, An) + Lk): + * tmac/mdoc/doc-common (Sh, Ss, Rd): + * tmac/mdoc/doc-syms (Ux, Bx, At, Dx, Fx, Nx, Ox, Bsx, St, Lb): + Drop interpolations of the string and comments documenting that + each macro has a side effect on the type size. + +2022-02-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/doc.tmac (Tn): + * tmac/mdoc/doc-syms (Ux, Bx): Stop interpolating string + `doc-Tn-font-size` to set macro arguments at a smaller type + size. This leaves the string without a purpose, so... + + * tmac/mdoc/doc-ditroff: + * tmac/mdoc/doc-nroff: Drop definitions of `doc-Tn-font-size`. + + * tmac/mdoc/doc-syms: Drop interpolations of that string from + numerous other string definitions. + + Fixes <https://savannah.gnu.org/bugs/?60616>. + +2022-02-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + Revert addition of man(7) `BD` register. This feature, which I + introduced in commit ea3b27102f (31 January) doesn't work + because pdf.tmac normalizes the bookmark depth. Embedding a man + page in a larger PDF document with appropriately nested + bookmarks is a project that will have to await another day (or + perhaps already has tools to implement it). + + * tmac/an.tmac: Do it. + * tmac/groff_man.7.man.in: De-document it. + +2022-02-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/pdf.tmac: Add string containing the name of the macro + package for use in diagnostic messages. + (pdf:warn, pdf:error): Use it. + + Continues the long process of fixing Savannah #52463. + +2022-02-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man,mdoc,me]: Revise hyphenation localization. + + * tmac/an.tmac (an*reset-hyphenation-mode): New macro sets the + hyphenation mode appropriate to the locale depending on the + values of `cR` (continuous rendering mode) and `HY` (hyphenation + enablement); the latter is now interpreted as a Boolean. Define + new register `an*hyphenation-mode` reflecting these conditions. + (TH): Call the foregoing instead of invoking `hy` request. + (MR): Restore hyphenation mode to `an*hyphenation-mode`. + (initialization): Simplify; if not defined, set `HY` to 1. + + * tmac/e.tmac (ld): Set the hyphenation mode here instead of in + initialization (which already calls this macro). Set the mode + to 6 for the benefit of anyone borrowing our me(7) changes, but + then immediately change to the mode determined by the + localization file. + + * tmac/mdoc/doc-common (doc-hyphen-flags): Set a hyphenation + mode appropriate to the locale, depending on the values of `cR` + and `HY`. + * tmac/mdoc/doc-ditroff: + * tmac/mdoc/doc-nroff: Simplify initialization; if not defined, + set `HY` to 1. + + * tmac/cs.tmac: + * tmac/de.tmac: + * tmac/en.tmac: + * tmac/fr.tmac: + * tmac/it.tmac: + * tmac/sv.tmac: Before switching locales, set a flag if + troublesome value 2 of the hyphenation mode is set so that we + can preserve it. Shift man(7) and me(7) logic to follow setup + of the new hyphenation mode; for the former, call the new + `an*reset-hyphenation-mode`. + + * tmac/groff_man.7.man.in: + * tmac/groff_mdoc.7.man: Document updated meaning of `HY` + register. + + * NEWS: Add item noting change of man(7) `HY`'s meaning. Update + existing item regarding mdoc(7)'s support for it (groff 1.22.4 + mdoc(7) didn't recognize the register at all). + + Fixes <https://savannah.gnu.org/bugs/?61734> (for real this + time?). + +2022-02-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Regression-test Savannah #61734. + + * tmac/tests/an_reset-hyphenation-correctly.sh: Do it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2022-02-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * man/groff_char.7.man (History): Add new section. + (See also): Add cross reference to 1976 edition of CSTR #54. + +2022-02-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/groff_man.7.man.in (Document structure macros) <EX, EE> + [style]: Add material cautioning writers against asoociating + the disablement of filling with some sort of "literal mode". + Document still-operational status of inter-sentence space + supplementation. + (Notes) [style]: Describe an alternative (and macro + call-symmetrical) means of using `RS` and `RE` with `TP`. + +2022-02-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am: Add phony targets "man-all" and "man-clean" to + {re-}generate and delete all man pages, respectively. + + Arguably fixes <https://savannah.gnu.org/bugs/?61167>. + +2022-02-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * Makefile.am (.man): Prefix hyphenation control escape + sequences to more configuration-time interpolations to prevent + their hyphenation: @DEVICE@, @g@, @INDEX_SUFFIX@, @PAGE@, + @TMAC_{AN,M,S}_PREFIX@, @TMAC_MDIR@. + +2022-02-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Refactor `EX` and `EE` macros. + + * tmac/an-ext.tmac: Add new `mC` string to store the font name + to be used for example regions. In AT&T device-independent + troff, "CW" was a common name, so use that. It is however a + terrible fit for groff's font family and style-combination + functionality, and is inflexible in the face of font selection + requests and escape sequences within the example region. (One + either needs to know the names of the fonts available on the + output device, or suffer the indignity of mixed constant-width + and proportional typefaces.) Relatedly, drop groff-specific + font remapping requests. + (EX, EE): Ignore definition if GNU troff is the formatter. Drop + font family manipulation. Drop specialized logic for groff's + DVI output device. + + * tmac/an.tmac (initialization): Resurrect font remapping + requests here. + (EX, EE): Add new definitions, saving and restoring more state + and remapping DVI output device fonts to reflect the absence of + CWB and CWBI faces. + +2022-02-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-ext.tmac: Slightly refactor. Stop using groff's `HY` + register to restore the hyphenation mode, since I plan to change + its semantics to a Boolean value (see Savannah #61734). + Introduce new register `mJ` to store "1" (if not groff) and the + current hyphenation mode otherwise. Explain why in a comment. + (YS, UE, ME, MR): Restore hyphenation mode using `mJ` instead of + `HY`. + +2022-02-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-ext.tmac: Trivially refactor. Use a better idiom + {seen in James Clark's changes to BSD me(7)} for conditionally + defining a (simple) macro. + +2022-02-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grotty/tty.cpp (tty_printer::special): Warn upon + encountering unrecognized device control commands using the + 'tty:' tag. + +2022-02-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grotty]: Remove 'sgr' device control command. + + * src/devices/grotty/tty.cpp (tty_printer::special): Do it. + * src/devices/grotty/grotty.1.man (Device control commands): + {De-}document it. + * NEWS: Add item. + + Fixes <https://savannah.gnu.org/bugs/?61561>. + +2022-02-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/pdfpic.tmac: Add support for Cygwin/MinGW temporary + directory conventions. + +2022-02-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/pdfpic.tmac: Search for temporary directories as groff(1) + does, instead of going straight to /tmp. + (pdfpic@get-temporary-directory): New function checks each of + its arguments for validity as a temporary directory; if one is + found, its name is left in `pdfpic*temporary-directory`. + (pdfpic@cleanup): Remove strings `pdfpic*temporary-directory` + and `pdfpic*temporary-file`. + (PDFPIC): Call `pdfpic@get-temporary-directory`, using the + contents of the environment variables $GROFF_TMPDIR and $TMPDIR, + and then /tmp, in that order. Store the temporary file name in + string `pdfpic*temporary-file`. Use this string in subsequent + `sy` and `so` requests. + + Fixes <https://savannah.gnu.org/bugs/?62055> for Unix systems. + +2022-02-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tests]: Add test for PDFPIC fallback to PSPIC. + + * tmac/tests/pdfpic_falls_back_to_PSPIC.sh: Do it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2022-02-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tests]: Tweak PDFPIC test input. + + * tmac/tests/pdfpic_does-not-choke-on-bad-pdfinfo-output.sh: + Eliminate unnecessary blank lines from input. Also call gs(1) + with '-q' in addition to '-o'. (Why does the latter not imply + the former?!) Thanks to Deri James for the advice. + +2022-02-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/pdfpic.tmac: Slightly refactor. + (pdfpic@cleanup, PDFPIC): Rename `pdfpic*file-name` to + `pdfpic*file-name-base` since it is not used as a complete file + name (but rather a basis for an ".eps" extension). + (PDFPIC): When testing PDF file extension, include the "."; a + file name like "mxyzptlkpdf" is too dubious to accept. Also + explicitly compare `systat` register as equal or not equal to + zero, since its truth value is inverted from the expectations of + *roff expressions. + +2022-02-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/pdfpic.tmac (PDFPIC): Refactor PDFPIC_NOSPACE handling. + Stop shelling out to create, and then sourcing, a temporary file + just to obtain the value of an environment variable. groff + already has the `\V` escape sequence for that purpose (it's even + safe!). Check that the value of $GROFF_PDFPIC_NOSPACE is a + valid numeric expression before assigning it to a register. + Trivially, use '=' instead of '==' as an equality operator. + *roff languages do not use '=' as an assignment operator, and I + believe the '==' synonym to be a sop to C programmers. + +2022-02-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Stop attempting to adjust pargraph tag lines. + + * tmac/an.tmac (TP): Disable adjustment inside the diversion. + (an-write-paragraph-tag): Restore adjustment outside of it. + + Fixes <https://savannah.gnu.org/bugs/?62051>. + +2022-02-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac (@z): Conceal bare tab after request name (exposed + by no longer stripping the macro file). See commit ad0575f20, 9 + December. + +2022-02-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grops,troff]: Migrate to term "scaling unit" in diagnostics. + + * src/devices/grops/ps.cpp (ps_printer::do_import): + * src/roff/troff/input.cpp (warnscale_request): + * src/roff/troff/number.cpp (parse_term): Do it. + +2022-02-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + [me]: Add nroff mode fallback for `u` macro. + + * tmac/e.tmac (u): On nroff devices, bracket the first argument + with \(ul (underline rule) special character escape sequences. + {In plain language, '.u "like this"' renders "_like this_".} + + I regard this as a cosmetic and semantic improvement; since the + quarter-em vertical motions used in troff mode were ignored in + nroff mode, the effect was not underlining but a sort of + strike-through, visible only at spaces in the argument. The use + of this macro was thus invisible in nroff output if no spaces + were present in the argument. This is probably the best we can + do without a fatter interface to terminal device capabilities. + +2022-02-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + [me]: Simulate boxed text support on nroff devices with ISO 6429 + color escape sequences. + + * tmac/e.tmac (bx): Do it. Add further fallback for non-groff + formatters in nroff mode, bracketing the boxed argument with '|' + glyphs. + * doc/meref.me.in: Document it. + + Fixes <https://savannah.gnu.org/bugs/?62038>. + +2022-02-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + [me]: Rename registers `$v` -> `tv`, `$V` -> `dv`. + + * tmac/e.tmac: Do it. Also include much commentary (including + some from James Clark in 1992) attempting to illuminate the + confusing history (and naming) of `$[rRvV]`. + + * doc/meref.me.in: Document it. Introduce new terms + "text vertical spacing" and "display vertical spacing" earlier + and use them to condense and clarify discussions of their use. + + * NEWS: Add item. + + Fixes <https://savannah.gnu.org/bugs/?61710>. + +2022-02-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Deferring Output): Add new node introducing + and motivating environments, diversions, and traps. + +2022-02-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tmac]: Add more compatibility mode guards. + +2022-02-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/pdf.tmac: Add compatibility mode guards so that we can + run even if troff is given the -C option. Resurrect your + vintage 1975 Sixth Edition Unix manuals from '.deth' and format + them in PDF today! + + Fixes <https://savannah.gnu.org/bugs/?61995>. + +2022-02-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/andoc.tmac: Prefix diagnostic with package file name + literally. + +2022-02-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Trivially refactor. + + * tmac/an.tmac (an*localize): Rename to... + (an*localize-strings): ...this. + (TH): Update call site. + +2022-02-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + [docs]: Present several fundamental concepts. + + * doc/groff.texi (Page Geometry): + * man/roff.7.man (Concepts): Add new node/section. + - page geometry + - basic units + - device resolution + - drawing position + - text baseline + - page offset + - vertical spacing + - page break + + Fixes the remainder of <https://savannah.gnu.org/bugs/?58035>. + +2022-02-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + [me]: Add page length insufficiency check. + + * tmac/e.tmac (@h): Port Keith Marshall's page length checker + from ms(7). + + Fixes <https://savannah.gnu.org/bugs/?61034> and + <https://savannah.gnu.org/bugs/?61428>. + +2022-02-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + [me]: Add test for insufficient page length error. + + * tmac/tests/e_rejects-too-short-page-lengths.sh: Do it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2022-02-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + [me]: Slightly refactor. + + * tmac/e.tmac (@h): Use groff default scaling operator in + conditional expression. Add `do` requests so that the logic for + checking the line length works in compatibility mode. Also move + misplaced parenthesis in conditional expression. + +2022-02-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Refactor insufficient page length check. + + * tmac/s.tmac (pg@top): Drop extraneous closing parenthesis from + numeric expression. Change operator from '>' to '>='; a page + length right at the boundary causes a spurious extra page break + when a paragraphing macro is used to initialize the document. + Condense diagnostic emission using the @error macro instead of + duplicating it. Change indentation to fit the style of the rest + of the file (use hard tabs). If aborting, truncate the page + length to the current vertical position so that we don't + uselessly output further vertical space. + +2022-02-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Add test for insufficient page length error. + + * tmac/tests/s_rejects-too-short-page-lengths.sh: Do it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2022-02-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + [me]: Vertically space delayed text like other annotations. + + * tmac/e.tmac ((d): Set vertical spacing using percentage in + `$V` register. + ()d): Restore vertical spacing using percentage in `$v` + register. + + Fixes <https://savannah.gnu.org/bugs/?61973>. + +2022-01-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + [build]: Expand '@PAGE@' when generating man pages. + + * Makefile.am (.man): Substitute the './configure'd paper format + for @PAGE@. + * src/roff/groff/groff.1.man: Use it. + +2022-01-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Trivially refactor an-ext.tmac. + + * tmac/an-ext.tmac (EX, EE): Do a better job of keeping the + name space promise made in comments at the top of the file. + Rename `sP` register to `mP`. Problem introduced by me in + commit 69895ec20, 15 January 2020. Also rename `la` and `ra` + strings to `mL` and `mR`, respectively. These (undocumented) + string names date back to commit 259929625, 15 January 2007. + + * tmac/groff_man.7.man.in (Files) <an-ext.tmac>: Document the + aforementioned promise. + +2022-01-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Refactor PDF bookmark support. + + * tmac/an.tmac (an*bookmark): New internal macro calls + `pdfbookmark` (only if the output device is 'pdf'). + (initialization): Migrate macro appendments to appropriate + definitions. Two cases... + (SH, SS): ...were straightforward. + (initialization): Another (for the man page title) was poorly + placed when appended to the `TH` macro, skipping over the page + header. Move it instead... + (PT): ...here. But to keep this bookmark from being generated + on every page of a document, we need a new variable + `an*was-TH-bookmark-emitted` which is tested here and assigned + once one bookmark corresponding to a `TH` call has been written. + (TH): Initialize `an*was-TH-bookmark-emitted` to zero. + (SS): Write the bookmark _before_ the subsection heading text. + (initialization): Drop short-lived `BM` register. It seems + harmless to unconditionally include bookmarks in PDF output. A + PDF tool can strip them out if they're not desired, and viewers + seem capable of minimizing or reducing the navigation pane (if + they even offer one in the first place). + + * tmac/an.tmac (initialization): Rename new `BN` register to + `BD`... + * tmac/groff_man.7.man.in (Options) <BD>: ...and document it. + Also document `PT`'s new bookmarking responsibility. + + Fixes <https://savannah.gnu.org/bugs/?58949> and + <https://savannah.gnu.org/bugs/?58950>. + +2022-01-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grohtml,groff,nroff,troff]: Tweak usage message. + + * src/devices/grohtml/post-html.cpp (usage): + * src/roff/groff/groff.cpp (synopsis): + * src/roff/nroff/nroff.sh: + * src/roff/troff/input.cpp (usage): Partly revert commit + 06ae7b0b8, 16 January. Move an ellipsis back inside a bracketed + operand (that is, an optional one). On reflection, I think this + notation makes it clearer that the command can be meaningfully + run without operands. + +2022-01-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/papersize.tmac: Slightly refactor. Use new `stringdown` + request instead of a combination of `tr`, `di`, `asciify`, and + `chop`. + +2022-01-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Slightly refactor. + + * tmac/an.tmac (an-prepare-page-title): Rename to... + (an*prepare-page-title): ...this. Also simplify numeric + expression. Add comment regarding necessity of correct + environment. + + (an-header): Update call site of `an*prepare-page-title`. + + (TH): Move planting of `an-header` trap from out of the midst of + footer trap management. Add comments. + + (an-header): Move `pl` and `sp` requests from here... + (PT): ...to here. While it's conceptually nice to have these + macros consist solely of `tl` requests, it doesn't yield enough + power to those who want to redefine them. Add comment. + + (an-footer, BT): ...simile. + +2022-01-27 Dave Kemper <saint.snit@gmail.com> + + [man pages]: Add more references to pic(1)'s .PF. + + * contrib/chem/chem.1.man: + * contrib/pic2graph/pic2graph.1.man: + * src/utils/grog/grog.1.man: Do it. + + Fixes <https://savannah.gnu.org/bugs/?61949>. + +2022-01-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + Implement PDF bookmark support for man pages. Limitation: A + {sub}section can only be bookmarked if it is specified in the + arguments to the `SH` or `SS` requests, not on the next line in + an input trap. Thanks to Deri James for providing the + fundamentals (blame me for any weird bits). + + * tmac/an.tmac (an-prepare-page-title): Define a new string, + `an*page-ref-string`, which is the man page's own reference + {such as "groff(1)"} without any abbreviation, ellipsis, or font + selection or italic correction escape sequences. + (SS): Define a new string, `an*subsection-heading`, storing the + macro arguments (if any). These could contain font selection + escape sequences, for instance, a fact that becomes important + later. + (initialization): + - Recognize `BM` register to enable PDF bookmarks (only on the + 'pdf' output device); defaults on. Recognize `BN` register to + set a base level/depth for the bookmarks; this is to ease + embedding of man pages in other PDF documents that already use + bookmarks. The default is 0. The registers are not yet + documented. + - If the output device is 'pdf' and bookmarks are enabled, set + `PDFOUTLINE.FOLDLEVEL` and `PDFHREF.VIEW.LEADING` registers + {recognized by 'pdf.tmac'}. Append to `TH`, `SH`, `SS` to get + the `an*page-ref-string`, `an-section-heading`, and + `an*subsection-heading` bookmarks in the document at the + applicable levels. + + * tmac/mdoc/doc-common: Add straw-man implementation--it doesn't + support the `BM` and `BN` configuration parameters yet. (This + is enough to get bookmarks for the groff_mdoc(7) page to + correctly appear in the new 'groff-man-pages.pdf' document.) + (Dt, Sh, Ss): If the output device is 'pdf', place bookmarks in + the document at levels 1, 2, and 3. + + Fixes <https://savannah.gnu.org/bugs/?58950>. + +2022-01-26 Deri James <deri@chuzzlewit.myzen.co.uk> + + [gropdf]: Allow multiline text in .pdfinfo + + * src/devices/gropdf/gropdf.pl: Use either '\\\\\\\\n' or + '\[u000a]' as line separators in the string. + +2022-01-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/trans.tmac: Further follow up commit c64fd60dff. If the + `andoc` wrapper is being used, perform man(7) localization (not + just when `an` is loaded). + +2022-01-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man pages]: Fix options used to generate compilations. + + * doc/doc.am (doc/groff-man-pages.pdf): Drop `-rU0` option (it's + unnecessary since we don't yet have PDF hyperlink support in + this document). Add `-rC1` option to enable continuous page + numbering. + (doc/groff-man-pages.utf8.txt): Drop `-rC1 -rU1`. Continuous + page numbering is superfluous since page numbers are not shown + in continuous rendering mode. Stop turning on OSC 8 defaults; + we don't know if the document will be viewed with a supporting + pager+terminal combination, and further we don't yet have a + mechanism for making `MR` man page cross references internal to + the document when they indicate groff man pages. + +2022-01-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man pages]: Ship compilations in UTF-8 text and PDF. + + Localization support and the resolution of Savannah #61266 have + made it practical to batch-render all of groff's man pages as a + single giant document. Provide PDF and UTF-8 text (with ECMA-48 + escape sequences, but not the italic attribute or OSC 8 + sequences). + + Reasons for this addition include: {1} it is now possible, + whereas I don't believe it was in any previous groff release; + {2} many people still don't realize how much more pleasant + reading typeset man pages can be (while a subjective assessment, + I'm not alone[1]); {3} providing these forms permits full-text + searching of groff's entire man page corpus via the PDF viewer + or a pager like "less -R", the latter without sacrificing the + style variations of the text that aid the reader to comprehend + the material; {4} sentimentally, it honors the 50th anniversary + of the first Unix manual (dated 3 November 1971) + <https://www.bell-labs.com/usr/dmr/www/1stEdman.html>. + + * doc/doc.am (PROCESSEDDOCFILES): Add + 'doc/groff-man-pages.{pdf,utf8.txt}'. + (GROFF_MAN_PAGES{1,2,3}): Add new macro storing names of all man + pages generated in the build tree. Motivate the reason for 3 + variables in a comment (it's due to groff locale switching). + (GROFF_MAN_PAGES_ALL): Add convenience macro for use in + dependency lists required by... + ('doc/groff-man-pages.{pdf,utf8.txt}'): ...these targets. + Generate pages with the lint dial turned all the way up. + + Fixes <https://savannah.gnu.org/bugs/?61900>. + + [1] "The manual was intended to be typeset; some detail is + sacrificed on terminals." (man(1), _Unix Time-Sharing System + Programmer's Manual_, Eighth Edition, Volume 1, February 1985) + +2022-01-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Commit c64fd60dff was not quite cooked. The localized + strings (in English) for the manual section titles need to be + set at every document load (i.e., when `TH` is called), but only + if the groff locale is "english". When switching locales, these + strings were getting "stuck" in their non-English translations + even when returning to an English page. + + * tmac/an.tmac (an*localize): New macro initializes strings. + (TH): Call `an*localize` if the locale is "english". + (initialization): Drop initialization of section title strings. + + Continues fixing <https://savannah.gnu.org/bugs/?61734>. + +2022-01-24 Deri James <deri@chuzzlewit.myzen.co.uk> + + [gropdf]: Fix Savannah #61908 + + * src/devices/gropdf/gropdf.pl: Adjust text position when + given landscape media (i.e -P-l). + + Fixes <https://savannah.gnu.org/bugs/?61908>. + + Thanks to KUBO Koichi for finding the problem and supplying a + patch. + +2022-01-24 Deri James <deri@chuzzlewit.myzen.co.uk> + + * src/devices/gropdf/gropdf.pl: A fix to importing pdf + versions > 1.4. + +2022-01-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grotty]: Skip part of test if locale doesn't support UTF-8. + + * src/devices/grotty/tests/basic_latin_glyphs_map_correctly.sh: + Skip test of 'utf8' output device if locale lacks UTF-8 support. + But if the 'ascii' or 'latin1' test cases have already failed, + report that instead. + + Fixes <https://savannah.gnu.org/bugs/?61891>. Thanks to Bjarni + Ingi Gislason for the report. + +2022-01-23 Bjarni Ingi Gislason <bjarniig@rhi.hi.is> + + [man pages]: Fix typos. + + Fixes <https://savannah.gnu.org/bugs/?61430>. + +2022-01-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tmac]: Fix style nits in test. + + * tmac/tests/pdfpic_does-not-choke-on-bad-pdfinfo-output.sh: + - Emit complaints about test environment to standard error. + - Replace lingering literal file name with variable expansion. + - Skip test if gs(1) fails, instead of reporting failure. + - Begin continued lines with operators, for visibility. + +2022-01-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grohtml]: Fix misspelled member variable. + + * src/devices/grohtml/post-html.cpp (class html_printer): + Rename `supress_sub_sup` to `suppress_sub_sup`. + +2022-01-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + [pdfpic]: Fix Savannah #58206. + + * tmac/pdfpic.tmac (PDFPIC): Scrub null bytes out of pdfinfo(1) + output. Thanks to an anonymous contributor for the patch (the + commentary about it is mine, if someone wants an argument). + + Fixes <https://savannah.gnu.org/bugs/?58206>. + +2022-01-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + [pdfpic]: Regression-test Savannah #58206. + + * tmac/tests/pdfpic_does-not-choke-on-bad-pdfinfo-output.sh: Do + it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2022-01-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + [pdfpic]: Refactor. + + Now that the package does not abort upon the first whiff of any + trouble, avoid littering groff's name spaces. Take this + opportunity to rename registers and strings to have obvious + meaning to even the casual reader. + + * tmac/pdfpic.tmac: Do it. + (pdfpic@cleanup): New macro removes temporary strings and + registers. + (PDFPIC): Call the cleanup macro upon entry; this way, if we + errored out from a previous call, we avoid confusion. (We don't + clean up upon an error return because the leftover objects might + be useful for troubleshooting.) Rename registers and strings, + to get them under name space discipline and also to better + suggest their purpose. + - convert-pdf -> pdfpic*do-conversion + - pdf-offset-mode -> pdfpic*offset-mode + - pspic-args -> pdfpic*pspic-args + - pdf-offset -> pdfpic*indentation + - is-pdf -> pdfpic*file-extension + - img-file -> pdfpic*file-name + - pdf-wid -> pdfpic*width + - pdf-ht -> pdfpic*height + - pdf-deswid -> pdfpic*desired-width + - pdf-desht -> pdfpic*desired-height + Call cleanup macro before returning upon successful operation. + +2022-01-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + [pdfpic]: Improve robustness. + + * tmac/pdfpic.tmac (@abort): Rename to `pdfpic@error`. This is + an auxiliary package, and something else could very well step on + the former name (or worse, we break it if we're loaded later). + (pdfpic@error): Stop aborting; simply report an error. It's up + to the user how serious `PDFPIC` macro problems are. As noted + in a comment, the user can easily `am pdfpic@error` to tack an + `ab` request onto the end of its definition. Always report + input file name and line number. Replace "[PDFPIC]" prefix with + the name of the macro file complaining, to make it easier for + groff non-experts to find. + (PDFPIC): Return upon errors. Recast diagnostic messages. Stop + implying that we perform any sort of probing test of file type + {there's no telling what pdfinfo(1) will say}. Apply new + 'stringdown' request so that we accept '.pdf' file name + extension in any lettercase. Test file argument for existence + before proceeding (acknowledge TOCTTOU exposure). Skip file if + pipeline returned a non-zero exit status or the registers into + which we extract the height and width are undefined (indicating + failure of a temporary file to be created or read). Reject + files with non-positive image width or height reported by + pdfinfo. Validate `width` and `height` arguments, if given, + rejecting non-positive values. + + Fixes <https://savannah.gnu.org/bugs/?61892>. + +2022-01-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mdoc]: Make `Pa` macro interpolate basic Latin tilde on all + output devices. + + * tmac/doc.tmac (Pa): Do it. + +2022-01-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Fix incorrect line numbers in diagnostics. Line numbers + for multiple format-time diagnostics emitted by tbl(1)-generated + groff input were off by +5 lines. + + * src/preproc/tbl/table.cpp: Fix it. + (NOP_NAME): Add new preprocessor symbol to construct name of + "nop" macro to be used as end macro for `ig` requests inside + macro definitions. + (table::init_output, table::compute_expand_list, + table::compute_separation_factor): + - Move `entry_list->set_location()` calls to more auspicious + locations. + - Replace "around line X" language in diagnostic messages with a + more idiomatic, and less embarrassing, simple report of an + integer. + (table::init_output): + - Add `entry_list->set_location()` call right before emitting + diagnostic about a table row not fitting on a page. + - Turn off eqn(1) delimiters when emitting diagnostic about a + boxed table not fitting on a page (necessitating `.TS H` + support), using new NOP_NAME-based end macro to achieve this + inside a macro definition. + (table::compute_expand_list): Suppress issue of too-wide table + diagnostic when the `EXPAND` table flag is set (corresponding to + the `expand` region option), because other code already emits + diagnostics in this case. + + Fixes <https://savannah.gnu.org/bugs/?60598>. Problem appears + to date back to commit 3bc4a53a45, 2013-01-07. + +2022-01-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Add unit test for format-time diagnostics. + + Ensure that the various format-time diagnostics that a + tbl-preprocessed document can generate (1) occur when they are + supposed to and (2) are appropriately suppressed by the + "nowarn" and/or "nokeep" region options. One of them is an + error and cannot be suppressed by the former, but _can_ be by + "nokeep", which is arguably a bug (Savannah #61878). + + * src/preproc/tbl/tests/format-time-diagnostics-work.sh: Do it. + * src/preproc/tbl/tbl.am (tbl_TEST): Run test. + +2022-01-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Trivially refactor. + + * src/preproc/tbl/table.cpp (table::compute_expand_width): + Declare and initialize variables closer to use. Also, the width + computed is compared to the line length and indentation, so use + these well-established *roff terms in the diagnostic message. + +2022-01-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Fix Savannah #61854. + + * src/preproc/tbl/table.cpp (compute_expand_width): To properly + warn if a table is too wide to fit between the indentation and + the right margin, we need to compute its column widths including + those eligible for expansion via the 'x' column modifier; we + cannot use the same expression that we do to determine the + amount of space we have to distribute among the expanded + columns. Iterate through columns again (the function was + already doing so twice), once to potentially produce the + warning, and then as before to distribute any available width. + In other words, warnings were only being emitted for too-wide + tables where one or more columns used the 'x' modifier. + + Fixes <https://savannah.gnu.org/bugs/?61854>. + +2022-01-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Don't add leaders that don't lead anywhere. + + * tmac/s.tmac (toc*end-entry): If no page number string + `toc*num` is defined, don't interpolate its emptiness prefixed + with a leader (and tab). This makes "no" as the first argument + to `XS` and `XA` work as documented, suppressing not only the + page number but the leader after the entry. + + Fixes <https://savannah.gnu.org/bugs/?61853>. + +2022-01-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Add regression test for Savannah #61853. + + * tmac/tests/s_XA-literal-no-argument-suppresses-leader.sh: Do + it. + * tmac/tmac.am (tmac_TESTS): Run it. + +2022-01-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + [me]: Fix bad unit test. + + * tmac/tests/e_chapter-titles-work.sh: Fix missing shell test at + end of script, which caused it to exit successfully regardless + of any test failures. Irritating. This is among the fruits of + the "never, ever use 'set -e'" tree. (This religion has a thick + bible: <https://mywiki.wooledge.org/BashFAQ/105>.) Fortunately, + all the tests pass legitimately. + +2022-01-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + [font]: For 'ascii' and 'latin1' devices, consistently define + glyphs for ordinary characters before their special character + aliases. This parallels existing usage for the 'cp1047' device, + and, I think, makes the file contents slightly more accessible. + + * font/devascii/R.proto: + * font/devlatin1/R.proto: Do it. + +2022-01-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grohtml]: Update diagnostic messages. + + * src/devices/grohtml/post-html.cpp (assert_state::add) + (assert_state::compare, replace_negate_str) + (assert_state::check_value_error, make_val): Make format of + internal assertion system messages shorter and more mutually + parallel. + (html_printer::set_char, html_printer::set_numbered_char) + (html_printer::set_char_and_width): Parallelize diagnostic + messages with libdriver; see yesterday's commit. + (main): Put information in argument to `assert()`; see commit + 11b43053, 24 November. + +2022-01-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + [nroff]: Emit usage message on usage errors. + + * src/roff/nroff/nroff.sh: Store the usage message in a shell + variable instead of a here document, and sling it to the + standard output or standard error streams, as appropriate. + +2022-01-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grohtml,groff,nroff,troff]: Tweak usage message. + + * src/devices/grohtml/post-html.cpp (usage): + * src/roff/groff/groff.cpp (synopsis): + * src/roff/nroff/nroff.sh: + * src/roff/troff/input.cpp (usage): Stop putting an ellipsis + inside a bracket expression (for file arguments); that suggests + misleading complexity. + + * src/devices/grohtml/post-html.cpp (usage): Also don't set + metasyntactic variable names in screaming capitals when they are + separated from option letters by space and thus can't be + confused with them. + +2022-01-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libdriver]: Update diagnostic messages. + + * src/libs/libdriver/printer.cpp (printer::find_font): Describe + the problem encountered instead of saying lamely "sorry, I can't + continue". + (printer::set_char_and_width, printer::set_numbered_char): + Characterize input as "invalid", not "bad"; see commit bb7512b5, + 17 September. When referring to font mounting position, say so. + (printer::set_char_and_width): Describe required input character + as "ordinary", not "ascii". Apart from the incorrect casing, + doing so better aligns with our terminology in groff_char(7), + groff_out(5), our Texinfo manual, and other diagnostic messages; + moreover, the use of "ascii" is potentially confusing to those + whose environments use another encoding, like UTF-8 or IBM code + page 1047. + + Fixes <https://savannah.gnu.org/bugs/?61829>. + +2022-01-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grotty]: Check basic Latin ("ASCII") glyph mappings. + + * src/devices/grotty/tests/basic_latin_glyphs_map_correctly.sh: + Do it. + * src/devices/grotty/grotty.am (grotty_TESTS): Run test. + +2022-01-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + [font,tmac]: Simplify Unicode character mapping process. + + * tmac/unicode.tmac: Drop. It was originally added in 2005 to + suppress horizontal spacing of glyphs in the range U+0483..9. + Its purpose has wandered over the years; most recently to map + the Basic Latin ("ASCII") hyphen-minus, apostrophe, and grave + accent to special characters (and thus ultimately to the General + Punctuation block). But this is unnecessary since the font + descriptions for devices with the `unicode` property can provide + this information, and anyone who wants to alter the mappings can + change either font description files, output device macro files, + or troffrc; or add `char` requests to their macro packages or + documents (in decreasing magnitude of ambition). + + * tmac/html.tmac: + * tmac/tty.tmac: Stop sourcing unicode.tmac. + + * tmac/tmac.am (TMACNORMALFILES): Stop shipping it. + + * font/devutf8/NOTES: Drop remarks about mapping of \[a~], + \[a^], and Basic Latin circumflex accent and tilde. Not only do + I disagree with the reasoning (whether these glyphs are "too + small" depends on the font used by the terminal emulator, over + which we have no control), but this mapping happens in a + completely different part of the source tree, + src/libs/libgroff/glyphuni.cpp. + + * font/devhtml/R.proto: + * font/devutf8/R.proto: Add mappings for the five Basic Latin + characters that map surprisingly (see groff_char(7)) and are not + syntactically significant to troff. Three of these are ported + from unicode.tmac. + (html): Don't migrate the hyphen-minus--yet. + +2022-01-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tty-char.tmac: Drop redundant logic. We don't need to + source the `cp1047` or `latin1` files here; `troffrc` will + already have loaded `tty` for us, which loads whichever applies. + +2022-01-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am: Separate concerns better; stop re-generating plain + text and HTML documents when the 'doc' target is updated; these + are already handled by the 'build_infodoc' target. + (build_infodoc): Use existing phony targets for plain text and + HTML output files instead of repeating filename literals. + (doc_all): Remove those same two phony targets from this one's + dependencies. + +2022-01-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp: Rename `eoi_macro_name` to + `end_of_input_macro_name`. It's long, yes, but better parallels + `blank_line_macro_name` and `leading_spaces_macro_name`. It is + not used in lengthy expressions and furthermore clarifies the + meaning of the nearby function name `eoi_macro` in one use. + +2022-01-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/preconv/preconv.1.man (Limitations): Add + subsection. + + Fixes <https://savannah.gnu.org/bugs/?55035>. + +2022-01-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + [docs]: Be more careful with control characters when they are + word-initial in filled text lines. The idea is to prevent + baffling surprises if a sentence is recast in a text editor, and + a word beginning with a dot or neutral apostrophe is reflowed + onto the beginning of the next input line--suddenly it is parsed + as a control character. Based on a patch by Bjarni Ingi + Gislason. + + * contrib/hdtbl/groff_hdtbl.7.man: + * doc/automake.mom: + * doc/meintro.me.in: + * doc/meintro_fr.me.in: + * doc/pic.ms: + * doc/webpage.ms: + * src/devices/gropdf/gropdf.1.man: Do it. + + Fixes <https://savannah.gnu.org/bugs/?51312>. + +2022-01-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Font Description File Format): + * man/groff_font.5.man (Font description file format): Document + restriction of kerning adjustment to glyph pairs from within a + single font (since that is the scope of the font description). + + Fixes <https://savannah.gnu.org/bugs/?44715>. + +2022-01-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + * contrib/groff_filenames/groff_filenames.5.man: Remove + superfluous paragraphing macro. + + Fixes <https://savannah.gnu.org/bugs/?55084>. Thanks to Bjarni + Ingi Gislason for the report and a suggested patch. + +2022-01-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Operators in Conditionals): Update explanation + of output-comparison conditional operator. + + Fixes <https://savannah.gnu.org/bugs/?60836>. + +2022-01-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + [build]: Use pnmtops(1)'s -quiet option if possible, to quieten + build. + + * m4/groff.m4 (GROFF_PNMTOOLS_CAN_BE_QUIET): Add new macro to + test pnmtops for support for (undocumented) '-quiet' option. + + * configure.ac: Perform the check. + + * doc/doc.am: Alter check of shell variable `pnmtops_nosetpage` + {processed by AC_SUBST} to correctly match even if pnmtops + accepts the '-quiet' option. + +2022-01-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tmac]: Manage hyphenation mode more carefully in localization + packages. + + * tmac/{cs,de,it,sv}.tmac: Localize the man(7) package's HY + register. + + * tmac/{cs,de,fr,it,sv}.tmac: When localizing the ms(7) package, + use mode "2" instead of "3": the 'hy' request complains of + contradictory hyphenation modes if "3" is used (the semantics of + the hyphenation mode are complex and non-orthogonal; see + groff(7) or our Texinfo manual). + + * tmac/{cs,de,en,fr,it,sv}.tmac: If the one language-independent + hyphenation bit (don't hyphenate just prior to a page location + trap) is set, preserve it; this way a system's troffrc or a + macro package can set it and it will not get turned off by the + localization package, which for best results should be loaded + after any full-service package (and any auxiliary package + requiring localized strings, though none are yet distributed + with groff). + +2022-01-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tmac]: Add unit test for localization macro files. Right now + this just covers the hyphenation mode. + + * tmac/tests/localization-works.sh: Do it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2022-01-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + [indxbib]: Document --version in usage message. + + * src/utils/indxbib/indxbib.cpp (usage): Document --version + option. Use more informative metasyntactic variable names. + Organize usage message consistently with our others, and stop + wrapping the output lines: we know neither the width of the + terminal nor the length of the `program_name` string we're + interpolating. See commit b4de44f0, 19 July 2021. + +2022-01-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libbib]: Refactor index header checking. + + * src/libs/libbib/index.cpp: Move more header validity checks... + (index_search_item::load): ...from here... + + (index_search_item::check_header): ...to here. Test all size + values in header for negative values (never valid) before + proceeding. (These data could be changed to unsigned integer + types in the file format, but that would require bumping the + file version. That in turn would make indexes generated with + groff 1.23 unusable on systems running older groffs and, perhaps + worse, would make groff 1.23 reject index files produced by + older groffs. On the other hand, the regeneration of index + files should be, for those who use them, a common activity, and + as long as the original database files are kept intact, it seems + likely that most people, given modern machines, won't even + notice a slowdown in document generation when refer(1) and + friends fail to open the indices and fall back to full-text + searches of the originals. So we could still consider revising + the file format before the groff 1.23 release.) + + * src/libs/libbib/index.cpp (index_search_item::load): + Explicitly perform widening conversion from signed `off_t` value + {from a stat(2) buffer} to an unsigned integer; quietens + compiler warning about comparison between integers differing in + signedness. + +2022-01-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * configure.ac (AC_CHECK_HEADERS): Expect stdbool.h, since we + now use it in src/include/lib.h. + +2022-01-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libbib, libgroff, indxbib]: Slightly refactor. + + Also, it's silly to test even numbers > 2 for primality. Stop. + + * src/include/lib.h: Include `stdbool.h` since this header file + is used for both C and C++ code. + + * src/include/lib.h (is_prime): + * src/libs/libgroff/prime.cpp (is_prime): Boolify. Return + Boolean instead of integer literals and demote return type to + `bool`. Include `assert.h` and add assertion to reject + mathematically offensive input. + + * src/libs/libbib/index.cpp + (index_search_item::read_common_words_file): Test only odd + numbers for primality. + * src/utils/indxbib/indxbib.cpp (main): Same. Since the number + comes from user input, make it (a potential hash table size) odd + first. + +2022-01-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Internationalize and localize. + + * tmac/an.tmac (TH): Indirect predefined manual section titles + through new strings `an*section[1-9]` so that they can be + localized. + (initialization): Give these strings English defaults. + (TH): Move `ss` request from here... + + * tmac/en.tmac: ...to here. It's not the man(7) package's + business what the inter-word and inter-sentence spacing values + are. Also, having the correct[disputed] inter-sentence spacing + value for English in its localization file restores it for the + benefit of multi-lingual documents (mainly roff applications + other than man(7)). + + * tmac/{cs,de,fr,it,sv}.tmac: Supply translations for the manual + section titles; these were done by a monoglot American employing + Google Translate, so those scandalized or running into howlingly + wrong locutions are warmly invited to submit corrections. + + * tmac/trans.tmac: Load localized strings. + + Fixes <https://savannah.gnu.org/bugs/?61734>. + +2022-01-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/grog/grog.pl: Handle auxiliary macro package + arguments correctly. + (process_arguments): Don't append the argument to the '-m' + option to the command line; requested macro packages have + dedicated logic. + (construct_command): When iterating through requested package + list, assume each element is an auxiliary package unless it + matches an element in the list of main packages. If the + assumption holds, append the package name to a new list, + `auxiliary_package_argument` (prefixed with '-m'). Push this + list onto the command line after any main package. + + Also rename `$selected_main_package` to `$main_package` for + brevity, and drop unused global lists `m` and + `supplemental_package`. + + Fixes <https://savannah.gnu.org/bugs/?61758>. + +2022-01-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/grog/tests/smoke-test.sh: Add test cases for user + specification of auxiliary macro packages. + +2022-01-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + [me]: Drop unnecessary code. Apart from being superfluous, it + prevented a user-defined value of the `sx` register from being + applied to the first footnote marker interpolated, a subtlety + that escaped my notice because the first footnotes in our + "meref" and "meintro" documents are not numeric, but symbolic, + and their markers occurred on lines with vertical space above + and below. (The bug was further masked by an otherwise + redundant redefinition of the `*` string inside the `)f` macro.) + + * tmac/e.tmac ()f, +c): Stop redefining footnote marker string + `*` after updating the automatic footnote number; its + interpolation is already backslash-protected. + ()d, pd): Stop redefining delayed text marker string `#` for an + analogous reason. + (initialization): Drop unneeded `_*` and `_#` strings. + + Thanks to Robert Goulding for his feedback and patience. See + <https://savannah.gnu.org/bugs/?61025>. + +2022-01-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tests/e_footnote-marks-work.sh: Enhance test. Confirm + that the automatic footnote number is reset to 1 by starting a + new chapter with the `+c` macro. + +2022-01-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + [me]: Revise `n1` and `n2` interface and behavior. + + There were several bugs in the previous implementation. + + * tmac/e.tmac (po): Issue diagnostic if an attempt is made to + set the page offset to a negative value. + + (n1): Accept new optional "C" argument to behave more (but not + exactly) like roff(1), as the formerly-recognized "c" argument + to `n2` did. If present, the line length is reduced by the same + amount (in new interface register `no`) as the line number field + to preserve the overall line length. Save the previous line + length in internal register `_l` and set a flag, stored in `?N`, + indicating this reduction. Otherwise, the macro expects to be + able to reduce the page offset to accommodate the line number. + If it cannot (for example, with the zero page offset default + used by nroff output devices), see above re: the `po` macro. + + (n2): Cache the last line number that may have been output, + instead of the current one, so that we can operate on it + consistently with user expectations. Do this earlier, and + rename this macro-local variable from `_ln` to `_n` so that we + don't need groff's `do` request to operate on it. Drop + recognition of "c" as an optional second argument. If turning + off line numbering: if the line length was shortened (`?N`) + restore the saved value and delete `_l` register; otherwise, + reverse the change to the page offset. Delete `_n` register. + + (initialization): Assign `\w'0000'u` to `no` register; this was + previously hard-coded in `n1` and `n2`. Initialize `?N` with 0. + + * doc/meref.me.in (roff Support): Update to reflect interface + changes and describe behavior more accurately. + + * doc/meref.me.in (Summary): + * tmac/groff_me.7.in (Registers): Document new `no` register and + mark it as a groff extension. + + * NEWS: Add item documenting interface changes. + + Fixes <https://savannah.gnu.org/bugs/?61646>. See the comments + in the report for a lengthy enumeration of rendering problems + exhibited by the previous implementation. + +2022-01-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + [me]: Add unit test for line numbering feature. + + * tmac/tests/e_line-numbering-works.sh: Do it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2021-12-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grohtml/post-html.cpp (style::style): Add + initializer to argumentless constructor to avoid later read from + uninitialized memory in `html_printer::do_font`. + + Fixes <https://savannah.gnu.org/bugs/?61748>. + +2021-12-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + [groff]: Add regression test for Savannah #61748. + + * src/roff/groff/tests/html_works_with_grn_and_eqn.sh: Do it. + * src/roff/groff/groff.am (groff_TESTS): Run it. + +2021-12-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grohtml/post-html.cpp + (html_printer::do_file_components): Emit fatal diagnostic if + we're unable to `freopen()` standard output. Quietens + `-Wunused-result` warning from GCC 8.3. + +2021-12-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grohtml/html.h (INT_HEXDIGITS): Add new constant + to store the maximum possible quantity of digits in the + hexadecimal representation of an `int`. + + * src/devices/grohtml/html-text.cpp (html_text::issue_tag): + * src/devices/grohtml/post-html.cpp (html_printer::do_body): + Guard against format string overflow by large integers in RGB + color channel specifications; in a *printf format string, the + precision (like the field width) is a _minimum_. Quietens + `-Wformat-overflow` warnings from GCC 8.3. + +2021-12-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/html/pre-html.cpp (get_image_generator): Clarify + complex conditional expression. Quietens `-Wparentheses` + warning from GCC 8.3. + +2021-12-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + [me]: Rename new `$x` register to `sx`. Since we expect the + user to set this register directly, it should not be named with + a leading '$' per the "me Reference Manual". + + * tmac/e.tmac (initialization, {, }): Do it. + + * tmac/groff_me.7.man: + * doc/meref.me.in: + * NEWS: Update documentation. + + * doc/meintro.me.in: + * doc/meintro_fr.me.in: + * doc/meref.me.in: Sync with new register name. + + See <https://savannah.gnu.org/bugs/?61025>. Thanks to Dave + Kemper for the discussion in + <https://savannah.gnu.org/bugs/?61710>. + +2021-12-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Slightly refactor. + + * src/roff/troff/div.cpp: + * src/roff/troff/div.h: + * src/roff/troff/input.cpp: Rename variables to reduce confusion + between "end macros" and "end-of-input macros". Call the latter + "eoi" macros for brevity. + +2021-12-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac: Fix code style nits. + - Use new terminology in diagnostic. See commit 66ac1a8db9, + 11 December. + - Drop unused '&&&' annotation for macro definitions. This + was a BSD me(7) implementation detail wherein parts of the + package were broken out into module files, loaded if/when + their macros were called. groff me(7) is monolithic, except + for devtag and refer(1) support. + - Remove '&&' end macro when we're done using it. + +2021-12-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + [me]: (Re-)localize strings. + + * tmac/{cs,de,fr,it,sv}.tmac: Update package localizations to + use new resources. As a happy side effect (and with the new + appendix string), the `+c` macro is now localized for Czech, + German, and Swedish. + + * doc/meintro_fr.me.in (Les Parties du Document): Update example + to reflect mixed-case default string used in chapter headings. + + * tmac/tests/e_ld-works.sh: Add tests for localization. + +2021-12-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + [me]: Internationalize strings. + + * tmac/e.tmac (initialization): Introduce internal + `_mo1`..`_mo12`, `_dw1`..`_dw7`, and `_td_format` strings (with + English defaults). Define them outside of the new `ld` macro so + that they can be overridden by localization packages. + (ld) <dw, mo, td>: Populate via the above new strings. + * tmac/trans.tmac: Stop defining `mo` and `dw`. Instead, make + them aliases of the new strings above. Handle `wa` and `wc` + similarly. + +2021-12-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + [me]: Add `ld` macro to re-init date/l10n stuff. + + * tmac/e.tmac (ld): New macro updates `y2` and `y4` registers + and `wa`, `wc`, `mo`, `dw`, and `td` strings. + + * doc/meref.me.in (Miscellaneous, Predefined Strings): + * tmac/groff_me.7.man (Macros): Document it. + + * tmac/tests/e_ld-works.sh: Add unit test. + * tmac/tmac.am (tmac_TESTS): Run test. + + Fixes <https://savannah.gnu.org/bugs/?61670>. + +2021-12-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tests/e_chapter-titles-work.sh: Add unit test for chapter + heading feature. + * tmac/tmac.am (tmac_TESTS): Run test. + +2021-12-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac: Ease localization and customization by exposing + strings for "Chapter" and "Appendix" instead of hard-coding + these words into the `$c` macro. + (initialization): Define new `wa` and `wc` strings. Separate + these and existing localization strings from `y2` and `y4` + initialization since the latter don't involve natural languages. + ($c): Interpolate these strings in chapter and appendix headings + and in calls to `$C` hook macro. Set "Chapter" and "Appendix" + in mixed case instead of full capitals, and set one + adjustable nonbreaking word space `\~` between them and the + chapter number instead of two unadjustable nonbreaking spaces. + {These changes do slightly alter the default output of the + package when the `+c` macro is used.} + + * doc/meref.me.in (Predefined Strings): + * tmac/groff_me.7.man (Strings): Document new strings. + + * doc/meintro.me.in (Parts of the Basic Paper): Update example + to reflect mixed-case default string. + + Fixes <https://savannah.gnu.org/bugs/?61661>. + +2021-12-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac (@p): Deactivate right alignment (the effect of + groff's `rj` request) when starting a new paragraph. + * doc/meref.me.in (Paragraphing) <lp>: Document this. + +2021-12-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac ()c): Add bounds check to avoid attempting to set + a negative indentation, provoking a troff warning. Problem + exposed by formatting "meintro_fr.me" document with default + nroff mode line length. + +2021-12-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Slightly refactor (boolify). + + * src/roff/troff/div.cpp: + * src/roff/troff/div.h: + * src/roff/troff/env.cpp: + * src/roff/troff/input.cpp: Rename variables and demote from + `int` to `bool`. Initialize and assign them using Boolean + literals. The new names try harder to express a logical + predicate, and start with verbs to resist interpretation as + noun phrases. + - exit_started -> is_exit_underway + - done_end_macro -> is_end_macro_finished + - seen_last_page_ejector (demoted but not renamed) + - began_page_in_end_macro (demoted but not renamed) + +2021-12-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac: Explain presence of undocumented `$r` and `$R` + registers. + + Fixes <https://savannah.gnu.org/bugs/?61683>. + +2021-12-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac (bc): To get to the next column, space by the page + length `.p`, not by the distance to the next trap (or 24 inches, + as hard-coded in me(7) traditionally). It is up to any sprung + traps to issue further space requests or otherwise ensure a + transition to the next column. + + See <https://savannah.gnu.org/bugs/?55081> for discussion. + +2021-12-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac ({): Fix missing scaling unit in arithmetic + expression: broke footnotes in troff mode. Problem introduced + by me in commit 6eafd208, 16 December. Thanks to Robert + Goulding for the (informal) report. + +2021-12-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am (doc/{pic,webpage}.html): Quieten build. Stop + passing `-p` (progress) option to postprocessor, which produces + TeX-like bracketed page numbers when images occur. + +2021-12-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am (.ms.html): Drop unused suffix rule. + +2021-12-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tmac.am (tmac_XFAIL_TESTS): Mark test + "e_footnotes-work-with-columns.sh" as expected to fail (as it + does now, consequent to a reverted commit). + +2021-12-16 Dave Kemper <saint.snit@gmail.com> + + * man/groff_tmac.5.man: Fix minor errors. + + Fixes <https://savannah.gnu.org/bugs/?61633>. + +2021-12-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + Parameterize line height adjustment when super/subscripting. + + * tmac/e.tmac (initialization): Assign 0.2m to register `$x`.2m. + ({, <}: Apply adjustment, multiplied by -1 for superscripts. + + * doc/meref.me.in: + * tmac/groff_me.7.man: Document it. + + * NEWS: Add item. + + * doc/meintro.me.in: + * doc/meintro_fr.me.in: + * doc/meref.me.in: Forego extra line height for more attractive + typesetting. + + Fixes <https://savannah.gnu.org/bugs/?61025>. Thanks to Robert + Goulding for the suggestion. + +2021-12-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac ($c): Draw the footnote separator no wider than + the column width. + + Fixes <https://savannah.gnu.org/bugs/?61675>. + +2021-12-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac (2c): Accept an empty first argument, permitting + the number of columns to be specified but preserving the default + column separation. + + Fixes <https://savannah.gnu.org/bugs/?61671>. + +2021-12-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac (initialization): Initialize `$C` hook, preventing + `mac` warnings from troff(1) if chapter title feature is used. + +2021-12-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac (i, bi): Add italic corrections. + +2021-12-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac: Fix groff warnings and correctness issue. + (n2): Prefix `ie` request with `do` because it uses the groff + `\B` escape sequence. Use braces to group multiple requests + after an `el` request: `ie` and `el` count as two requests, not + one. Add comment regarding the unfortunate choice of brace + style given *roff's syntactical constraints. + (n2, (c): Conceal bare tab in request argument list (exposed by + no longer stripping the macro file). + +2021-12-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + [me]: Revise diagnostic messages to follow GNU Coding Standards, + identifying what is emitting them. + + * tmac/e.tmac (_e): New string holds "e.tmac". + (@err): New macro constructs and issues diagnostics. Add file + name to messages when available. Suppress line number when + unavailable. + (check_page_length, @z, @h, n2, sk, @p, @(, @), (c, )c, EQ, (f, + ++, @U): Call `@err` instead of invoking `tm` request. Revise + wording of messages in an attempt at clarity. + + Continues the long process of fixing Savannah #52463. + +2021-12-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac: Slightly refactor footnote numbering. + ()f): Tighten code style and end string definition with comment. + (+c, initialization): Drop unused auto-incrementation of + footnote number register `$f`. Add new string `_*` to use when + {re-}initializing `*` outside of a footnote diversion, and + interpolate the footnote number register instead of a literal. + +2021-12-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tests/e_footnote-marks-work.sh: Add unit test. + * tmac/tmac.am (tmac_TESTS): Run test. + +2021-12-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac: Fix automatic numbering of delayed text. + (initialization): Add `_#` string for use in multiple + assignments of `#` string. + (initialization, pd): Remove unused auto-incrementation from + `$d` delayed text number register. + ()d): Increment `$d` register unconditionally, no longer + conditionally on whether the delayed text marker string `#` has + been interpolated. + ()d, pd): Update `#` string using new `_#` string. Stop + initializing the string with `\k` mark-setting escape sequence. + + * doc/meref.me (Annotations) <)d>: Document now-unconditional + incrementation of `$d` register. + + Fixes <https://savannah.gnu.org/bugs/?61632>. + +2021-12-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tests/e_delayed-text-marks-work.sh: Add test. + * tmac/tmac.am (tmac_TESTS): Run test. + +2021-12-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac: Rename internal register out of user name space. + (@f): Rename `VL` to `__`; remove it immediately after using it. + +2021-12-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/meref.me: Fix documentation error; the `$s` macro draws a + horizontal line of 2 inches' length, not 1.5 inches. + + Fixes <https://savannah.gnu.org/bugs/?58682>. Thanks to Dave + Kemper for the report. + +2021-12-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + Generate me(7) manual sources as part of the build. We had been + shipping 'me' sources with the string '@VERSION@' in them and + only sed-replacing that to produce generated PostScript, but + this replacement was not occurring for users who processed the + documents themselves. + + * doc/meintro.me: + * doc/meintro_fr.me: + * doc/meref.me: Rename these to... + * doc/meintro.me.in: + * doc/meintro_fr.me.in: + * doc/meref.me.in: ...these. + + * doc/doc.am (DOCFILES): Add the new *.in files. Move the *.me + files from here... + (GENERATEDDOCFILES): ...to this new variable. + (dist_otherdoc_DATA, EXTRA_DIST): Add `$(GENERATEDDOCFILES)`. + (doc/me{intro{,_fr},ref}.me): Add new target rules. + + * src/utils/grog/tests/smoke-test.sh: Update test to look for + the above source tree documents under their new names. + +2021-12-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am (.me.txt, .ms.txt): Drop unused suffix rules. + +2021-12-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am (DOC_SED): Add substitution of command prefix + {"@g@"} so we can make accurate reference to groff commands with + Unix counterparts in our documentation. + +2021-12-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac: Add nroff mode string definitions for 4.4BSD + compatibility. + - Define '{' and '}' (superscripting) strings as '[' and ']'. + - Define '<' and '>' (subscripting) strings as '\(la and + '\(ra' if available on the device, otherwise '<' and '>'. + + * tmac/tests/e_footnote-marks-work.sh: Update expected output. + + * doc/meref.me: Document it. + + Fixes <https://savannah.gnu.org/bugs/?61619>. + +2021-12-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am (doc/meintro_fr.ps): Add target rule (overriding + suffix rule) to generate this file using `-mfr` (load the French + localization macro file). + +2021-11-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Drop redundant `do_divert()` declaration. + + * src/roff/troff/env.h: Do it. + + Fixes <https://savannah.gnu.org/bugs/?61433>. Thanks to Bjarni + Ingi Gislason for the report. + +2021-11-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Remove `DEBUGGING` preprocessor cruft. + + * src/roff/troff/input.cpp: + * src/roff/troff/mtsm.cpp: Stop defining `DEBUGGING` + preprocessor macro (as empty). + + * src/roff/troff/input.cpp: Give `DEBUG_OPTION` an empty string + value if the former is undefined, so the `getopt_long()` call + will compile. + + Fixes <https://savannah.gnu.org/bugs/?61436>. Thanks to Bjarni + Ingi Gislason for the report. + +2021-11-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Slightly refactor table format column modifier `p` and + `v` validation. + + * src/preproc/tbl/main.cpp (process_format): Make code terser by + introducing references to `list->point_size` and + `list->vertical_spacing`. Doing this requires a new scope + {because a switch case isn't one} so add it, without updating + indentation for this commit. When complaining of out-of-range + type size or vertical spacing, report the limit. + +2021-11-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Improve diagnostic messages. + + Revise diagnostic messages generally to use terminology + consistent with the recent rewrite of tbl(1), identify a + contextual token when possible, and communicate more helpfully. + + * src/preproc/tbl/main.cpp (process_options): Tell the user + which region option is missing a closing parenthesis or cannot + accept an empty argument. Refer to region options as such, not + simply "options" (so they can't be confused with command-line + options). Say that input is "invalid" instead of "bad". + (process_format): Say "table format specification" instead of + just "format". Say "column classifier" instead of "format". + When a column modifier is missing an argument or a closing + parenthesis, identify it and refer to it as a "column modifier" + instead of omitting context. Inform user that arguments to `p` + and `v` column modifiers must be "(optionally signed) integer"s, + not "numbers", lower these diagnostics' levels from error to + warning, and indicate that the modifier is ignored. Clarify + diagnostic when extra characters trail `.` at the end of a table + format line. + (process_data): Say "table entry" instead of "data entry" when + discarding an excess one. + (process_table): Say we're giving up on "this table region", not + this "table", particularly since any table continuations (.T&) + are ignored. + +2021-11-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Fix call to `getopt_long()`. + + * src/preproc/tbl/main.cpp (main): Stop telling `getopt_long()` + to look for a `T` option. Continues b4bbf32e, 16 October 2020. + +2021-11-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Tweak usage message. + + * src/preproc/tbl/main.cpp (usage): Document `--version`. Give + version retrieval mode separate synopsis. Use more normative + synopsis syntax. + +2021-11-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Fix code style nits. + + * src/preproc/tbl/main.cpp (process_input_file) + (entry_format::debug_print, process_data, main): Replace + `assert(0)` calls with communicative predicates. + (struct input_entry_format, input_entry_format::debug_print, + process_format): Boolify. Demote and rename `int`s + `last_column` and `equal` to `bool`s named `is_last_column` and + `is_equal_width`. Assign them Boolean literals. + (process_format): Boolify. Demote `have_expand`, `got_format`, + and `got_period` from `int` to `bool`. Use Boolean literals in + assignments thereto. + (process_options): Swap order of null pointer comparison when a + typo or thinko could lead to lvalue assignment. + (process_data): Boolify. Demote `give_up` from `int` to `bool`. + Demote and rename `int` `row_comment` to `bool` + `seen_row_comment`. Use Boolean literals in assignments + thereto. + (main): Use standard C library symbols `EXIT_SUCCESS` and + `EXIT_FAILURE` with `exit()` calls instead of `0` and `1`. + +2021-11-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grog]: Fix Savannah #61520. + + * src/utils/grog/grog.pl: Move hash `preprocessor_for_macro` to + global scope since it is now mutable across `do_line` subroutine + calls. + (do_line): Adjust regex matching an end macro to work better. + Check names of macros being defined by the document; if they + start with '[' or ']', stop attempting to detect refer(1) usage, + by deleting its key from the `preprocessor_for_macro` hash. + + Fixes <https://savannah.gnu.org/bugs/?61520>. + +2021-11-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grog]: Add regression test for Savannah #61520. + + * src/utils/grog/tests/avoid-refer-fakeout.sh: Do it. + * src/utils/grog/grog.am (grog_TESTS): Run test. + +2021-11-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Page Motions): + * man/groff.7.man (Escape short reference): Fix error: the `\r`, + `\u`, and `\d` escape sequences move in ems, not vees, despite + being vertical motions. Add discussion and example. Thanks to + Bjarni Ingi Gislason for pointing out the problem in groff(7) + and Tadziu Hoffman for his lucid explanation. + + Fixes <https://savannah.gnu.org/bugs/?61437>. Thanks to Bjarni + Ingi Gislason for the report and a suggested patch. + +2021-11-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/include/error.h: Drop `extern` storage class from + diagnostic function prototypes. Drop parameter names from + prototypes, in keeping with the Stroustrup-style C++ used in + most of groff. + +2021-11-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/libs/libgroff/font.cpp (font::load): Update diagnostic + messages to say "kerning pair" instead of "kern pair". + +2021-11-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (read_size): Update diagnostic + messages to use more normative language: say "type size" instead + of "point-size", and "escape sequence" instead of "escape". + * src/roff/groff/tests/\ + use_point_size_escape_with_single_digit_arg.sh: Update expected + diagnostic wording in text. + +2021-11-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (read_size): Boolify. Update + prototype. Demote return type from `int` to `bool`. Use + Boolean literals for return values. Similarly demote local + variable, rename it from `bad_digit` to + `contains_invalid_digit`, and use Boolean literals with it. + +2021-11-16 Deri James <deri@chuzzlewit.myzen.co.uk> + + * src/devices/gropdf/gropdf.pl: Fixes to importing pdf versions + > 1.4. + +2021-11-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: If "nowarn", suppress table row warning. + + * src/preproc/tbl/table.cpp (table::init_output): Bracket the + generated groff code that emits a warning if a table row + overruns a page location trap (usually, is too long to + vertically fit on the page) in a test for whether the "nowarn" + region option was given, so that this warning is suppressed as + well when that option is used. + * src/preproc/tbl/tbl.1.man (Region options): Document new + "nowarn" behavior. + + {"nokeep" also suppresses this warning, for a different reason; + no diversion is created to hold the table row, so its vertical + size does not exist to be compared to the distance to the next + page trap.} + + Fixes <https://savannah.gnu.org/bugs/?61477>. + +2021-11-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/table.cpp (table::do_vspan): Fix code style + nits. Swap order of null pointer and zero equality comparisons + when a typo or thinko could lead to lvalue assignment. Break a + series of 6 and-ed assertion predicates into separate `assert()` + calls--sure to be less maddening for anyone who has to debug + such a contingency. Clarify comment since C++98 didn't yet have + `nullptr`. + +2021-11-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + [m4]: Clean up shell variable quoting and bracing. + + * m4/groff.m4 (GROFF_PROG_YACC, GROFF_MAKEINFO) + (GROFF_BROKEN_SPOOLER_FLAGS, GROFF_TARGET_PATH_SEPARATOR): Stop + bracing shell variable expansions that don't require it; the + shell is not make(1). + (GROFF_PROG_YACC, GROFF_MAKEINFO): Double-quote shell variable + expansions that might produce whitespace. + (GROFF_MAKEINFO): Drop unnecessary leading zeroes from version + number component construction. Drop unnecessary escaping of + plus sign in expr(1) input. + +2021-11-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + [m4]: Clean up test(1) usage. + + Get rid of string (non-)nullity tests and comparisons involving + concatenation with garbage (usually "x"). Even the GNU Autoconf + manual's shell portability material doesn't recommend this. It + must be either a bodge cooked up by shell programmers who + couldn't remember to quote variable expansions, or a workaround + for shells of such poor quality that they defied the odds and + decayed out of usage or got fixed. + + Instead, use double quotes (only where necessary). Test for + non-empty strings with "test -n" and empty strings with "test + -z". Stop quoting literal comparands that obviously have no + shell metacharacters in them. + + * m4/groff.m4 (GROFF_PRINT, GROFF_PROG_YACC, GROFF_PERL) + (GROFF_DOC_CHECK, GROFF_MAKEINFO, GROFF_TEXI2DVI) + (GROFF_HTML_PROGRAMS, GROFF_PDFDOC_PROGRAMS, GROFF_PAGE) + (GROFF_TMAC, GROFF_WITH_COMPATIBILITY_WRAPPERS, GROFF_X11) + (GROFF_APPRESDIR_DEFAULT, GROFF_APPRESDIR_CHECK) + (GROFF_HAVE_TEST_EF_OPTION, GROFF_BASH, GROFF_UCHARDET) + (GROFF_UCHARDET_CHECK, GROFF_PDFTOOLS) + (GROFF_USE_GROFF_ALLOCATOR): Do it. + +2021-11-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_TEXI2DVI): Add dependency on + `GROFF_MAKEINFO` macro. Rewrite to also test `MAKEINFO` + variable, which is empty if the `makeinfo` command is not + installed or too old. Consequently ignore `texi2dvi` if is too + old without having to do a version check (since it and + `makeinfo` are distributed together, both being part of GNU + Texinfo). + + * doc/doc.am (.texi.dvi, .texi.pdf): Update error message to + indicate that `texi2dvi` is _either_ missing or too old. + +2021-11-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_MAKEINFO): Stop throwing a warning if the + installed `makeinfo` is old but the distributed Info manual is + up to date. This is not a configure-time problem; the user will + be notified when they run 'make' if they modify doc/groff.texi, + or if they run 'make doc' (which has required a TeX installation + for years). Empty the `MAKEINFO` variable immediately if a + too-old version is detected. Drop needless `AC_SUBST`itution of + the detected `makeinfo` version. + +2021-11-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_HTML_PROGRAMS): Clarify message; it is only + groff-generated HTML that is disabled by the absence of the + programs checked for. (`makeinfo` can still generate our + Texinfo manual in HTML format.) + +2021-11-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + [build]: Drop `BUILD_INFODOC` symbol. Ship manual in GNU Info, + text, and HTML forms in distribution archive. + + * Makefile.am (MAINTAINERCLEANFILES): Initialize. + (MOSTLYCLEANADD): Drop unused variable. + * configure.ac: Drop `AM_CONDITIONAL([BUILD_INFODOC]...`. + * doc/doc.am (EXTRA_DIST): Rearrange shipment of our Texinfo + manual source files to precede all of the generated forms, for + clarity. Drop all `BUILD_INFODOC` conditionals. Make + `build_infodoc` phony target depend on plain text, GNU Info, and + HTML forms of Texinfo manual unconditionally. Also drop unused + variables `groffinfodir`, `groffpdfdir`, and `texi2dvi_missing`. + (EXTRA_DIST, MAINTAINERCLEANFILES): Add Info form of manual. + Drop glob pattern attempting to match the segments that + `makeinfo` breaks it into. It isn't necessary for + MAINTAINERCLEANFILES. + (EXTRA_DIST, MAINTAINERCLEANFILES): Add text form of manual. + (EXTRA_DIST, MAINTAINERCLEANFILES): Add HTML form of manual. + (dist-hook): Depend on new (phony) target `dist-info-bits`. + (dist-info-bits): Look for the info document in the build + directory, then the source directory. (It could be in either + place depending on whether the build from a Git working tree is + being done in or out of a separate build directory.) When + found, copy the segments to the assembly area for the + distribution archive. + (install_infodoc): Refactor. Remove any groff info files from + the destination info directory using a shell glob directly + instead of a partly redundant ls(1) command substitution. + Similarly, use a shell glob to cp(1) the info files (including + any matched segments) to the destination info directory before + running `install-info`. (In this process I learned that + `install-info` doesn't "install" anything; instead, it + {de-}registers info files with their top-level catalog.) + +2021-11-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am (.texi.txt, .texi.html): Reorder pattern rules to + make it clearer which formats require only `makeinfo` and which + require `texi2dvi`. The latter imposes more build dependencies, + including a full TeX installation. + +2021-11-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + [mom]: Build more quietly. + + * contrib/mom/mom.am (penguin.{ps,.pdf}): Make targets quiet by + default; they are simple file copies. + +2021-11-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tests]: Revise a test's setup. + + * src/roff/groff/tests/fp_should_not_traverse_directories.sh: + Revise search for device/font description directory to work in + within-source-tree builds and (for now) with the approach used + by Automake's "distcheck" target. + +2021-11-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Accept `\&` as an empty table entry. + + * src/preproc/tbl/table.cpp (table::add_entry): Suppress + diagnostic about non-empty table entries classified as `_` or + `=` if the entry consists of exactly `\&`. + + * src/preproc/tbl/tbl.1.man (Table data): Document this idiom. + +2021-11-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Update diagnostic messages. + + * src/preproc/tbl/main.cpp (process_options, process_format): + * src/preproc/tbl/table.cpp (table::add_entry): Align diagnostic + text with terminology now used in tbl(1) man page. + - "global option" -> "region option" + - "specifier" -> "column modifier" + - "format" -> "column classifier" + +2021-11-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Fix missing colon in diagnostic messages. + + * src/libs/libgroff/error.cpp (do_error_with_file_and_line): + Restore missing colon to diagnostic text. Problem introduced by + me in commit 9a038161, 8 November. + +2021-11-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff,grops]: Slightly refactor. + + * src/devices/grops/ps.cpp: Explicitly preprocessor-include + "lib.h" since we use the `PI` symbol it defines. + + * src/include/lib.h: Add inclusion guard. Wrap only `extern "C" + and its braces in preprocessor conditionals, so that prototypes + are present in the header even for C language code that + #includes this header. Add `static` storage class to `PI` + symbol to avoid redefinition errors from the linker. + + * src/libs/libgroff/iftoa.c (if_to_a): + * src/libs/libgroff/itoa.c (i_to_a, ui_to_a): Add `const` type + qualifier to function definitions for agreement with prototypes + in "lib.h". Drop local copies of prototypes. + +2021-11-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Centralize definitions of {U,}INT_DIGITS. + + * src/libs/libgroff/iftoa.c: + * src/libs/libgroff/itoa.c: Move definitions of `INT_DIGITS` and + `UINT_DIGITS` from here... + * src/include/lib.h: ...to here. + + * src/libs/libgroff/iftoa.c: + * src/libs/libgroff/itoa.c: Preprocessor-include "lib.h". This + revealed missing guards around `extern "C"` declarations, so... + + * src/include/lib.h: Add them where necessary. + +2021-11-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac (OP): Fix code style nits. Don't quote macro + arguments unnecessarily. Use consistent backslashing. Use + groff font escape sequence syntax. Use adjustable non-breaking + space escape sequence instead of a non-adjustable one. + Parenthesize numeric expression for better readability. + +2021-11-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Make allocator replacement optional. Switch it + off by default, relying on C++ runtime new/delete support. + + * configure.ac: Call new `GROFF_USE_GROFF_ALLOCATOR` m4 macro. + Use `AM_CONDITIONAL` to set Automake variable + `USE_GROFF_ALLOCATOR` if appropriate. Report whether the + allocator is used in configure script output summary. + * m4/groff.m4 (GROFF_USE_GROFF_ALLOCATOR): Define new macro to + collect user preference. The default is off. + * src/libs/libgroff/libgroff.am (libgroff_a_SOURCES): Build and + link new.cpp only if we are to `USE_GROFF_ALLOCATOR`. + + * NEWS: Add item. + +2021-11-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_TMAC): Report a human-readable message if + no system tmac prefix is found, instead of leaving the ellipsis + hanging. + +2021-11-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_TMAC): Use separate shell variable for + `AC_MSG_RESULT()` content since the human-readable string we + populate it with in the empty case is not appropriate for later + `AC_SUBST()`-itution. Problem introduced by me in commit + 19670348, 31 October. + +2021-11-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tmac.am (MOSTLYCLEANFILES): Remove `$(TMACMDOCFILES)`. + This variable, formerly named `TMACMDOCSTRIPFILES`, should not + be used in a clean target because its contents are (no longer) + generated files. Problem introduced by me in commit 24602f42, 4 + July (only noticeable in within-source-tree builds). + +2021-11-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff,pic]: Check `strdup()` return value. + + * src/libs/libgroff/font.cpp (struct text_file): Add `fatal()` + member function. + (text_file::fatal): Implement it. + + * src/libs/libgroff/font.cpp (font::load_desc): + * src/preproc/pic/troff.cpp (troff_output::set_location): Die if + `strdup()` returned a null pointer. + +2021-11-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/libs/libgroff/error.cpp (do_error_with_file_and_line): + Revise to eliminate `fprintf()` calls, which might perform + dynamic memory allocation, rendering this function unsafe to + call after memory allocation failures. Since this function is + near the top of our diagnostic output call stack, that would be + unfortunate. `errprint()` does not use dynamic allocation, nor + do the `i_to_a()` and `ui_to_a()` functions it calls to format + integers. + +2021-11-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * configure.ac: Add `strdup` to AC_CHECK_FUNCS since we are + using it and the whole point of libgroff's `strsave()` was to + get along without it. But `strdup` has been standardized in + POSIX for 20 years (SUSv3, POSIX:2001) and is on its way into + ISO standard C (N2353) and C++ (P2391R0) as well. + +2021-11-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/libs/libgroff/strsave.cpp (strsave): Call `strcpy()` only + if `malloc()` did not return a null pointer. Problem noted by + Ingo Schwarze. + +2021-11-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/libs/libgroff/fontfile.cpp (font::open_file): Don't open + user-specified font file names with slashes in them; i.e., don't + traverse directories outside the configured font path. Also + refuse to open the file if the `sprintf()` used to construct its + file name doesn't write the expected quantity of bytes to the + destination buffer. + + Fixes <https://savannah.gnu.org/bugs/?61424>. Thanks to Ingo + Schwarze for feedback. + +2021-11-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Regression-test Savannah #61424. + + * src/roff/groff/tests/fp_should_not_traverse_directories.sh: Do + it. + * src/roff/groff/tests/artifacts/HONEYPOT: Add test artifact. + * src/roff/groff/tests/artifacts/devascii/README: ...and this; + we need a directory to make the test work but empty ones tend to + look unintentional. + * src/roff/groff/groff.am (groff_TESTS): Run test. + (EXTRA_DIST): Ship artifacts. + +2021-11-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Fix diagnostic error wording. + + * src/libs/libgroff/font.cpp (font::load): Fix diagnostic + message; this is issued when an unrecognized directive is + encountered, so it necessarily occurs _before_ any `charset` or + `kernpairs` directive. Give the user a hint accordingly. + +2021-11-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Fix paragraph tag regressions. + + * tmac/an-ext.mac (UR, MR): Only create an environment and + diversion if we're not already in one of the latter. If we are + {in groff man, this occurs only when collecting a `TP` paragraph + tag}, then typeset the URI as part of the indented paragraph. + (UE, ME): Pop the diversion and environment stacks only if we + pushed them in the first place. Eliminate spurious space in + post-URI arguments by only typesetting excess macro parameters + if there were any. + +2021-11-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Regression-test Savannah #61425. + + * tmac/tests/an-ext_link-macros-work-in-paragraph-tags.sh: Do + it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2021-11-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac (DS): Drop a redundant unconditional break; every + display macro we call in the event of a valid call already + breaks the line, and it's polite to not break if we're given an + invalid argument. Emit a diagnostic error if the argument we're + given is invalid, and immediately end the diversion we just + opened. + +2021-11-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/env.cpp (environment::set_font): Clarify + diagnostic warning. + +2021-11-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/table.cpp (table::add_entry): If we see a '\^' + entry on the first row of a table, it's invalid, but we need to + create an empty entry in its place. Otherwise, someone can put + another '\^' right below the one on the first row, creating a + reference to a nonexistent table entry and provoking a SEGV. + Issue an error diagnostic (distinct from the one in + `do_vspan()`), create the entry, and skip `do_vspan()` (given a + '^' in a first-row definition, it issues an error diagnostic and + returns early, which suffices). Problem appears to date back to + groff 1.02 (June 1991) at the latest. + + Fixes <https://savannah.gnu.org/bugs/?61417>. + +2021-11-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Regression-test Savannah #61417. + + * src/preproc/tbl/tests/\ + do-not-segv-on-invalid-vertical-span-entry.sh: Do it. + * src/preproc/tbl/tbl.am (tbl_TESTS): Run test. + +2021-11-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Fix Savannah #61408. + + * tmac/an.tmac (an-prepare-inner-footer): Don't try to get a + substring of an empty string; the man page author might not have + specified a third argument to `TH` (or supplied an empty one). + + Fixes <https://savannah.gnu.org/bugs/?61408>. Thanks to Bjarni + Ingi Gislason for the report. + +2021-11-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Add regression test for Savannah #61408. + + * tmac/tests/an_inner-footer-abbreviation-works.sh: Do it. + +2021-11-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Tweak computation in URI breaking. + + * tmac/an-ext.tmac (UE, ME): Stop adding the page offset `.o` + when performing the available horizontal space computation for + the typeset URI string. This made no difference on nroff + devices (grotty; even with `.po 15n`), but it caused the + breaking decision to be too conservative on troff devices + {grops}, forcing some URIs that would fit on the current line to + the next one. + + * tmac/tests/an-ext_UE-breaks-before-long-URIs.sh: Add test of + URI with no link text, which also has break points after every + character, so that we detect even slight alterations. + +2021-11-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Do more device and font description file validation, + resolve an assertion failure arising from a negative declared + device resolution, and correct a documentation error. + + * src/libs/libgroff/font.cpp (font::load): Include more + information about invalid input in diagnostic messages. + - When a kern pair's amount is missing or invalid, report the + name of the kern pair. + - When someone tries to declare the first entry in the charset + section as an alias, report the glyph name. + - Identify the token for the unnamed character if an attempt + is made to alias it. + - When an out-of-range character type is applied to a glyph, + name the glyph. + (font::load_desc): Same. + - Drop redundant zero initialization of `res`. + - Check all directives that take basic units for positive + values, adding `res`, `unitwidth`, `paperwidth`, and + `paperlength`. Update this diagnostic to demand positive, + not nonnegative, values. + - When the font count is long in a `fonts` directive, report + how many font names were declared (and thus expected). (If + the count is short, the next line is read for a font name, + like 'tcommand' in our devutf8/DESC.) + - When interpreting a `papersize` directive, throw an error + and return false if `res` has not yet been encountered, + since it is used in subsequent computations. + - When a paper format cannot be determined, report the + original declared value from the DESC file. Use `strdup()` + to save it since it gets clobbered by the resolving process. + `free()` the saved string when we're done, regardless of + error condition. + + * doc/groff.texi (Device and Font Files): + * man/groff_font.5.man (DESC file format): Document additional + exception to order-indifference of directives: (at least one) + `res` must precede `papersize`. + + Fixes <https://savannah.gnu.org/bugs/?61414>. + +2021-11-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grohtml/post-html.cpp + (html_printer::do_file_components): Add assertion. + +2021-11-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grops/ps.cpp (usage): Document -p and --version + options. + +2021-10-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-nroff (doc-setup-page-layout): Set the title + length to the device line length (register `.l`) if register + `LT` is not defined. This keeps the title length from being set + to 78n when the line length is not, preventing the output from + looking silly. + +2021-10-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/main.cpp (main): Emit groff code to define + macro `T&` as empty if it is not already defined. (All of our + full-service macro packages [except mdoc(7)] already do this, so + there's no change in semantics; mom(7) even defines it as an + empty _string_.) + +2021-10-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/tests/string_case_xform_requests.sh: Migrate + test to POSIX shell, dropping use of process substitution (a + Bashism). Also rewrite to stop using a here document within a + command substitution, mainly for paranoia. + + * src/roff/groff/tests/string_case_xform_requests.sh: + * src/roff/groff/tests/on_latin1_device_oq_is_0x27.sh: Update + shebang lines to use /bin/sh as the interpreter. + +2021-10-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grops/ps.cpp (encode_subfont): Update assertion to + check for `sub` parameter being a null pointer rather than + `sub->glyphs`; the latter is a member array of a `subencoding` + struct so it can't be a null pointer. (`glyphs` is an array of + pointers to `const char`; the _elements_ of the array can [and + are initialized to] be null pointers, but the address of the + array itself will never be in a C/C++ implementation.) Detected + by Clang 13's "-Wtautological-pointer-compare". + +2021-10-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/libs/libgroff/new.cpp (delete): Declare `throw()` (no + exceptions thrown); quiets "-Wimplicit-exception-spec-mismatch" + from Clang 13. + +2021-10-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4: Fix messaging nits. + (GROFF_MAKEINFO): Set `missing` to "missing 'makeinfo'" for + consistency with other assignments to `missing`. + (GROFF_TMAC): Utter an intelligible result in the configure + check when no system macro files requiring groff wrapping are + located. + +2021-10-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Handle special character escape sequences that map to + basic Latin glyphs in device control escape sequences + consistently among output devices. + + * src/roff/troff/input.cpp (encode_char): Rearrange + conditionals. This is the logic that puts the "whatever" within + a \X'whatever' escape sequence into GNU troff's intermediate + output. Handle adjustable and nonadjustable space escape + sequences ("\~" and \ ") first. Then, if the token is a special + character escape sequence, retrieve its "contents" (glyph name). + Move the basic Latin mapping for the seven glyph names '-', + 'aq', 'dq', 'ga', 'ha', 'rs', and 'ti' here, before checking + whether the device description issued the + 'use_charnames_in_special' directive. This way, the 'html' and + 'xhtml' output devices can straightforwardly embed these basic + Latin characters in device control escapes (notably, "html:", + for which the present convention is to follow the this tag + immediately with a literal HTML URI, complete with `<a href>` + element syntax). If the special character is none of these and + we should 'use_charnames_in_special', proceed as groff 1.22.4 + and earlier did. This is a behavior change, as was my addition + of this translation mechanism in the first place, so... + + * doc/groff.texi (Postprocessor Access): Document it. + + * src/roff/groff/tests/\ + device_control_escapes_express_basic_latin.sh: Test it. + * src/roff/groff/groff.am (groff_TESTS): Run test. + + Fixes <https://savannah.gnu.org/bugs/?61401>. + +2021-10-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Map \[ti] correctly in device control escape sequences. + + * src/roff/troff/input.cpp (encode_char): Fix copy-and-paste + error. \[ti] should put '~', not '^', into a device control + command. + + Fixes <https://savannah.gnu.org/bugs/?61403>; problem introduced + by me in commit 9d61b3d1, 1 October. + +2021-10-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Handle degenerate input quietly. + + * tmac/an.tmac (TH): Define new register `an-TH-was-called`. + (an-end): Return immediately if that register is not defined; + to format the default page footer we must have the information + declared in a valid `TH` call. (`TH` also initializes the type + size and baseline spacing registers we use to prepare the page + footer environment.) If the register _is_ defined, remove it + just prior to the end of this macro definition, in preparation + for next page to be rendered. + + * tmac/tests/an_handle-degenerate-input-quietly.sh: Test it. + * tmac/tmac.am (tmac_TESTS): Run test. + + Fixes <https://savannah.gnu.org/bugs/61402>, a regression from + groff 1.22.4 (problem introduced by me in the course of many + changes to trap management and header/footer handling to work + nicely in batch rendering with -mandoc and mdoc(7) documents). + +2021-10-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Warn if `TE` table macro called but `TW` register (set by + tbl(1)) undefined. Arrange it so that we warn only once per + man(7) document, not per table region. + + * tmac/an.tmac (TH): Remove `TW` register when processing new + document and clear `an-was-tbl-failure-reported` register. + (TE): Check `TW` and `an-was-tbl-failure-reported` registers; if + the former is undefined and the latter false, emit the message + and set `an-was-tbl-failure-reported`. + + Addresses part of <https://savannah.gnu.org/bugs/?61379>. + Thanks to Bjarni Ingi Gislason for the suggestion. + +2021-10-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tests]: Improve portability. + + * src/devices/grotty/tests/osc8_works.sh: Fix typo in test. + Multiple regex quantifiers after an atom were not flagged with a + diagnostic by GNU grep 3.3, but were by BSD grep 2.5.1-FreeBSD. + + * src/roff/groff/tests/smoke-test_html_device.sh: Stop trying to + set $LC_CTYPE to "C.UTF-8"; some systems don't support this + expediency. Skip the test if the tester hasn't configured the + environment adequately. + + * tmac/tests/s_TC-works-with-percent-in-custom-titles.sh: Fix + portability problems exposed by FreeBSD sed (which version is + unclear). {1} Use POSIX BREs, dropping use of '+' quantifier. + {2} Add semicolons to terminate commands before braces on the + same line. Simplify surrounding test structure. + * tmac/tests/e_footnotes-work-with-columns.sh: Fix same two sed + problems. + * tmac/tests/andoc_flush-between-packages.sh: + * tmac/tests/doc_accept-mixed-case-section-headings.sh: + * tmac/tests/an_TS-do-not-keep-tables-when-cR-set.sh: Fix same + sed semicolon problem. + + * src/roff/groff/tests/on_latin1_device_oq_is_0x27.sh: Rewrite + test to stop using a here document (containing an unpaired + single quote) inside a command substitution, which is broken in + GNU Bash 3.2 and some other versions. Instead construct the + input with printf(1). Also gets rid of a Bashism (process + substitution) that Ingo pointed out years ago. + * src/utils/grog/tests/recognize-perl-pod.sh: Same problem, + different solution. The Perl POD output is far too large to + construct programmatically, so move it into an external file... + * src/utils/grog/tests/foo.man: ...here. + * src/utils/grog/grog.am (EXTRA_DIST): Ship new test artifact. + +2021-10-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am: Make sed-based insertion of `lf` requests more + portable: a dance is required to embed a literal newline inside + a sed expression inside a shell command executed as part of a + Make target rule. We assume that neither the POSIX shell $'' + operator nor a working printf(1) is available. + (DOC_GROFF): Define a shell variable containing a literal + newline, evading make(1) and echo(1)'s valiant attempts to + consume it. + (doc/pic.html, doc/webpage.html): Repeat trick, slightly + modified since the dependency needs to be manually identified. + + Solution adapted from the GNU Autoconf manual, "Newlines in Make + Rules". + + Fixes <https://savannah.gnu.org/bugs/?61265>. Thanks to John + Gardner for the report. + +2021-10-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac (TH): Stop populating `an-extra3` (the default + center header) if the section argument is "3p". "3p" does not + always mean a Perl-related man page; Debian- and Arch + Linux-based systems[1][2] (at least) have long used a "3perl" + suffix, while OpenBSD appears to still use "3p" for Perl[3], + which is also used by the POSIX man page distribution[4]. + Fortunately, Perl and POSIX are reliable at providing a fifth + argument to `TH` anyway, so our fallback is as unnecessary as it + is non-impartial. + * tmac/groff_man.7.man.in (Document structure macros) <TH>: + De-document the above behavior. + + [1] https://manpages.debian.org/bullseye/perl-doc/\ + Pod::Man.3perl.en.html + [2] https://man.archlinux.org/man/Pod::Man.3perl + [3] https://man.openbsd.org/man3p/Pod::Man.3p + [4] https://man7.org/linux/man-pages/man3/system.3p.html + +2021-10-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Abbreviate the inside footer if necessary. + + * tmac/an.tmac (an-prepare-inner-footer): Prevent the inside + footer from overrunning the center footer. + (BT): Use new string `an-ifoot` instead of `an-extra2` in page + footers. + + Fixes <https://savannah.gnu.org/bugs/?61386>. + +2021-10-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + Add regression test for Savannah #61386. + + * tmac/tests/an_inner-footer-abbreviation-works.sh: Do it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2021-10-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + * man/groff_char.7.man (Description, Special character escape + forms): Document the `\C` escape sequence. Fix error: \[a] is + _not_ "translated to \a, the uninterpreted leader escape + sequence," but requests a glyph _named_ '\a' internally--it + appears thus in diagnostic messages and, importantly, in the + font description files defining special character glyph names. + +2021-10-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac: Refactor to reduce repetition. + (an-break-paragraph): New macro handles paragraph-breaking tasks + previously duplicated. + (SH, SS, P, TP, IP, HP): Call it rather than issuing its + constituent requests. + +2021-10-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac (TP): Reset type size, vertical spacing, and font + to defaults before setting the new paragraph. + + Fixes <https://savannah.gnu.org/bugs/?61380>. + +2021-10-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Auto-increment): Fix error; the `\R` escape + sequence does _not_ support an auto-incrementation amount. + * man/groff_out.5.man (Command reference/Simple commands): Fix + erroneous claim: 'N' is not a GNU roff extension; it appears on + page 27 of CSTR#54 (1992). + +2021-10-24 Keith Marshall <keith.d.marshall@ntlworld.com> + + [ms]: Provide global default XH and XN implementations. + + cf. <https://savannah.gnu.org/bugs/?58946#comment13> + + * tmac/s.tmac (XH-INIT, XN-INIT, XH-UPDATE-TOC) + (XH, XN, XH-REPLACEMENT, XN-REPLACEMENT): Implement them, and... + * tmac/groff_ms.7.man: ...document them. + +2021-10-24 Keith Marshall <keith.d.marshall@ntlworld.com> + + [ms]: Fix misleading NH macro indentation. + + * tmac/s.tmac (@NH) [.T is html]: .if statement should exhibit + same indentation as preceding .DEVTAG-NH statement, but is + overindented; fix it. + +2021-10-23 Keith Marshall <keith.d.marshall@ntlworld.com> + + [ms]: Defend against uncontrolled page trap recursion. + + * tmac/s.tmac (pg@top) [HM+FM+.V>.p]: Diagnose insufficient page + length, and abort; cf. <https://savannah.gnu.org/bugs/?61294> + +2021-10-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + [groff]: Fix code style nits. + + * src/roff/groff/groff.cpp (main, help): Use standard C library + preprocessor symbols `EXIT_SUCCESS` and `EXIT_FAILURE` instead + of 0 and 1 literals, respectively. See commit fa4c27e9, 7 + September. + (main): Replace `assert(0)` with a communicative predicate. + +2021-10-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grotty/tty.cpp (tty_printer::special_link): + Eliminate casts by retyping `uri` and `pair` to pointers to + `const char`s. + +2021-10-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tmac.am: Build more quietly. + (tmac/stamp-wrap): Prefix all rule commands with `$(AM_V_at)`; + since this target is a stamp file instead of a useful artifact + to be distributed, make its creation completely silent by + default. + +2021-10-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/troff.am: Build more robustly. + (src/roff/troff/majorminor.cpp): Drop progress-reporting `echo` + in favor of prefixing final rule command with `$(AM_V_GEN)`. + Prefix earlier rule commands with `$(AM_V_at)`. Use `printf` + instead of `echo` to build the file, and create a temporary file + at first so that we don't race with the compiler on parallelized + builds. + +2021-10-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/eqn/eqn.am (neqn): Simplify: drop removal of + target prior to overwriting it; any system we can build groff on + should have a shell that implements the clobbering semantics of + the POSIX shell '>' operator. (If this isn't true, we have + _many_ other target rules in our build to which we must add + prefatory `$(RM)`s, or I miss my guess.) + +2021-10-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/libs/libgroff/libgroff.am: Build more quietly and + robustly. + (src/libs/libgroff/version.cpp): Drop progress-reporting `echo` + in favor of prefixing final rule command with `$(AM_V_GEN)`. + Prefix earlier rule commands with `$(AM_V_at)`. Use `printf` + instead of `echo` to build the file, and create a temporary file + at first so that we don't race with the compiler on parallelized + builds. Drop nilpotent sed transformation; this looks like a + relic of past times when we'd drop a trailing ".0" from the + version number stored in the C symbol `Version_string`. + (charset.alias, ref-del.sed, ref-add.sed): Prefix rule command + with `$(AM_V_GEN)`. + +2021-10-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/xditview/xditview.am: Build more quietly. + (src/devices/xditview/GXditview-ad.h): Drop progress-reporting + `echo` in favor of prefixing rule command with `$(AM_V_GEN)`. + +2021-10-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devpdf/devpdf.am: Build more quietly. + (font/devpdf/enc/text.enc, font/devpdf/map/symbolmap, + $(DEVPDFFONTMAP_1)): Prefix all rule commands with + `$(AM_V_at)`; since these are all `mkdir`s and `cp`s, I reason + that little can go wrong with them that won't be disclosed by + these tools' own diagnostic messages, so they are insignificant + from a perspective of build progress. + +2021-10-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am: Build more quietly. + (doc/examples.stamp): Prefix all rule commands with + `$(AM_V_at)`; since this target is a stamp file instead of + a useful artifact to be distributed, make its creation + completely silent by default. + (doc/groff.info, .texi.txt): Prefix directory creation with + `$(AM_V_at)` and `makeinfo` command with `$(AM_V_GEN)`. + (.texi.dvi, .texi.pdf): Prefix directory creation with + `$(AM_V_at)` and `makeinfo` command with `$(AM_V_GEN)`. Send + diagnostic message to standard error if `texi2dvi` is + unavailable. + (.texi.html): Prefix directory creation with + `$(AM_V_at)`. Two HTML versions are produced, in split and + unsplit versions; prefix one `makeinfo` command with + `$(AM_V_GEN)` and the other with `$(AM_V_at)` so that only one + message is produced. + (gnu.eps): Drop useless/noisy `echo` command. Prefix copy + operation with `$(AM_V_at)`. Send diagnostic messages to + standard error if there are problems with the Netpbm tools. + + (MOSTLYCLEANFILES): The `mostlyclean` target was leaving a file, + `groff.info-3`, behind in the build tree. At some point our + Texinfo manual grew beyond earlier expectations. Use a glob + `[0-9]` instead (giving a hostage to fortune that `makeinfo` + will never split our manual into more than nine chunks). + +2021-10-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * arch/misc/misc.am: + (arch_shdeps_sh): Pull file name into a new variable. + (EXTRA_DIST, shdeps.sed): Use it. + (shdeps.sed): Build more quietly; prefix with `$(AM_GEN_V)`. + +2021-10-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + [nroff]: Support groff's -R flag to run refer(1). + + There's no reason not to support calling `refer` with nroff-mode + documents; typographically, it's less demanding than tbl(1). + GNU troff(1) supports an incompatible `-R` flag to suppress the + reading of troffrc{,-end} files, but this is likely not the `-R` + that users will want--it is most useful for troubleshooting + troff, and nroff already unconditionally loads a macro file + {tty-char.tmac}. + + * src/roff/nroff/nroff.sh: Do it. + + * src/roff/nroff/nroff.1.man: + * NEWS: Document it. + +2021-10-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tmac.am (tmac/groff_man.7.man) + (tmac/groff_man_style.7.man): Be quieter by default; use + $(AM_V_GEN) more consistently with the rest of the build. + +2021-10-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (do_error): Format diagnostic + messages in closer alignment with GNU Coding Standards: don't + introduce a space between the program name and the input file + name. + + * src/roff/groff/tests/string_case_xform_errors.sh: Update + expected output. + +2021-10-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/env.cpp (distribute_space): Revert an + `assert()` I added in commit b93eacd8d7 (5 September); we can + indeed reach this code with a negative amount of desired space, + and in fact the "show hyphenation points" trick + <https://froude.eu/groff/examples/hyphenation-points.html> + relies upon it. Add explanatory comment. + + Fixes <https://savannah.gnu.org/bugs/?61348>. + +2021-10-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * test-groff.in: Add support for sboxes.tmac. + +2021-10-11 Paul Eggert <eggert@cs.ucla.edu> + + Include <config.h> before any standard headers. + + Gnulib requires that files that might use Gnulib features (which + pretty much means every C or C++ source file) must include + <config.h> first. Arrange for that. This will be needed once + Groff updates to the latest Gnulib; see Bjarni Ingi Gislason's + problem report in: + <https://lists.gnu.org/r/bug-gnulib/2021-10/msg00008.html> + + The only exception I can see is src/utils/addftinfo/guess.cpp, + which does not include any standard include file either directly + or indirectly, and so need not include <config.h>. + + * src/devices/xditview/Dvi.c: + * src/devices/xditview/font.c: + * src/devices/xditview/lex.c: + * src/devices/xditview/page.c: + * src/devices/xditview/parse.c: + * src/libs/libbib/map.c: + * src/libs/libgroff/change_lf.cpp: + * src/libs/libgroff/cmap.cpp: + * src/libs/libgroff/cset.cpp: + * src/libs/libgroff/fmod.c: + * src/libs/libgroff/getcwd.c: + * src/libs/libgroff/lf.cpp: + * src/libs/libgroff/ptable.cpp: + * src/libs/libgroff/quotearg.c: + * src/libs/libxutil/DviChar.c: + * src/libs/libxutil/XFontName.c: + * src/libs/libxutil/xmalloc.c: + * src/utils/indxbib/signal.c: Do it. + + [Fixes <https://savannah.gnu.org/bugs/?61315>. --GBR] + +2021-10-10 Deri James <deri@chuzzlewit.myzen.co.uk> + + Handle pdfs > v1.4 loaded by \X'pdf: pdfpic'. + + * src/devices/gropdf/gropdf.pl: Improve loading of pdfs above + version 1.4, i.e. handle compressed nodes in /ObjStm. Also + improve code in \X'pdf: import'. + +2021-10-10 Deri James <deri@chuzzlewit.myzen.co.uk> + + Add new background boxes to gropdf. + + * src/devices/gropdf/gropdf.pl: New \X'pdf: background' command. + * tmac/pdf.tmac: Covenience command .pdfbackground added. + * contrib/sboxes/: Files which demonstrate use of background + boxes using -ms macros. + +2021-10-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tests]: Fix portability problems in 2 tests. + + * src/roff/groff/tests/break_zero-length_output_line_sanely.sh: + * tmac/tests/s_PN-works.sh: Migrate from `echo` to `printf` for + test inputs containing backslashes to be interpreted literally. + + Fixes part of <https://savannah.gnu.org/bugs/?61302>. Thanks to + Deri James for identifying the problem. + +2021-10-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grotty]: Slightly refactor. + + * src/devices/grotty/tty.cpp: Boolify. Demote numerous + variables (and one return type) from `int` to `bool`, use + Boolean instead of integer literals with them, and give the + variables names resembling logical predicates. + - horizontal_tab_flag -> want_horizontal_tabs + - form_feed_flag -> want_form_feeds + - bold_flag_option -> want_emboldening_by_overstriking + - bold_flag -> do_bold + - underline_flag_option -> want_italics_by_underlining + - underline_flag -> do_underline + - overstrike_flag -> want_glyph_composition_by_overstriking + - draw_flag -> allow_drawing_commands + - italic_flag_option -> want_sgr_italics + - italic_flag -> do_sgr_italics + - reverse_flag_option -> want_reverse_video_for_italics + - reverse_flag -> do_reverse_video + - old_drawing_scheme -> use_overstriking_drawing_scheme + (class tty_printer:printer): Similarly. + - is_underline -> is_underlining + - is_bold -> is_boldfacing + - cu_flag -> is_continuously_underlining + (tty_printer::tty_color): Demote return type as above. Invert + its sense; rename `unknown_color` to `is_known_color`. + (tty_printer::color_to_idx): Invert sense of test at + `tty_color()` call site. + +2021-10-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Finish documenting new `TC-MARGIN` register and + `TC-LEADER` special character. + + Fixes <https://savannah.gnu.org/bugs/?61157>. + +2021-10-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grotty]: Slightly refactor. + + * src/devices/grotty/tty.cpp (tty_printer::special_link): Use + consistent loop styles and drop unnecessary arithmetic. + +2021-10-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Fix oversight and improve `MR` test. + + * tmac/an-ext.tmac (initialization): Enable `mY` register to + indicate use of grotty(1) (and therefore OSC 8 support) if the + "ascii", "cp1047", or "latin1" output devices are used, not just + "utf8". + + * tmac/tests/an_MR-works.sh: Drop copy-and-paste cruft from a + different test. Update expected output and check for the + presence of "link" device control subcommands, not just correct + font selections. + +2021-10-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Add `MR` macro for man page cross references. + + * tmac/an.tmac (an-prepare-page-title): After a possibly + abbreviated man page title is determined, redefine `an-pageref` + to set the title portion in the font stored in the `MF` string + and bracket it with italic corrections if that font is thought + to be oblique. + (MR): Add macro to format the text of a man page cross + reference, and hyperlink it on HTML and terminal output devices + if permitted by the `U` register. + (initialization): Define `MF` string as `I` if not already set. + Define `an-lic` and `an-ic` strings as either empty or as + containing italic corrections. + + * tmac/an-ext.tmac (MR): If the formatter is not GNU troff, + define macro to format the text of a man page cross reference. + + * tmac/groff_man.7.man.in: Document it. + (Description): Add macro to summary table. + (Description/Hyperlink macros): Document new feature. Note + origin in Plan 9 troff. [style] Add examples of use. + (Description/Font style macros): Drop man page cross references + from list of items whose typeface conventions are disputed, + since we have a semantic macro now and a configurable means of + resolving the problem. + (History): Add `MR` item. + (Options) <MF>: Document new string. + (Files) <an-ext.tmac>: Revise discussion to accommodate `MR`. + (Authors): Add myself an author of extension macros. + + * tmac/tests/an_MR-works.sh: Test it. + * tmac/tmac.am (tmac_TESTS): Run test. + + * NEWS: Add item. + +2021-10-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac (SH, SS): Invoke `ne` request _before_ performing + font remapping: any page-breaking decision will be taken before + the remapping happens, and so won't be in effect across a page + boundary, undesirably impacting header and footer text. + + Fixes <https://savannah.gnu.org/bugs/?61279>. + +2021-10-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + Regression-test Savannah #61279. + + * tmac/tests/an_font-remapping-does-not-affect-titles.sh: Do it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2021-10-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac (an-abbreviate-title): Rename to... + (an-prepare-page-title): ...this. + +2021-10-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + [docs]: Correct erroneous claim: the ".NH S" extension to ms(7) + comes from 4.2BSD, not GNU. + +2021-10-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/ms.ms (Creating a table of contents): Sync with recent + additions to groff_ms(7), expand, and heavily revise. + +2021-10-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + [andoc,man,mdoc]: Fix Savannah #61266. Resolve problems in + batch rendering of man pages to PDF arising from entanglement + of end-of-input traps, page location traps, continuous rendering + mode, and andoc's reloading of the (m)an and (m)doc packages. + + * tmac/andoc.tmac (reload-doc, reload-man): Remove end-of-input + traps alongside others. + + * tmac/an.tmac (an-end): Only perform flush and "manual" page + footer placement if in continuous rendering mode, since this + macro is not only called by a trap placed only in continuous + rendering mode, but also by andoc when changing macro packages. + Unconditionally remove the `an-header` trap since the next + document might be using a different macro package. + + * tmac/mdoc/doc-common: In initialization, set flag indicating + that manual header placement will be required. + (Dt): Call `doc-setup-header` (which sets up several types of + trap) unconditionally, and break the page if the vertical + drawing position is anywhere but at the top. + (Os): If the package has just been initialized, call + `doc-header` to force the page header to be written. + (doc-end-macro): Remove `doc-header` trap since the next + document might be using a different macro package. Break the + page. Set flag indicating that manual header placement will be + required for the next document. + + * tmac/mdoc/doc-ditroff (doc-setup-header): Only set page + location traps for the header and footer if not continuously + rendering. + * tmac/mdoc/doc-nroff (doc-setup-header): Stop calling + `doc-header` here if continuously rendering. Emit an + unconditional break. Except for the location of the footer + trap, the `doc-setup-header` implementations are now identical. + + Refactoring is needed: some macros and registers have misleading + names, there is some code duplication in mdoc, and some of the + trap management problems are solved in slightly different ways + in man(7) and mdoc(7), perhaps unnecessarily. We also need some + test scripts to protect us from regressions. But this fixes the + rendering problems. + + Fixes <https://savannah.gnu.org/bugs/?61266>. + +2021-10-02 Keith Marshall <keith.d.marshall@ntlworld.com> + + Correct manpage typo/inconsistency. + + * tmac/groff_ms.7.man (TC_LEADER, TC_MARGIN): Correct; should + be... + (TC\-LEADER, TC\-MARGIN): ...respectively, for consistency + with... + * tmac/s.tmac (TC-LEADER, TC-MARGIN): ...these. + +2021-10-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (encode_char): Update diagnostic + messages to not presume the identity of the escape character; + continues 9be3f8e3 (4 June). + +2021-10-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grotty/tty.cpp (tty_printer:special_link): Tighten + code slightly by taking advantage of preprocessor string literal + concatenation. + +2021-10-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Fix `U` enablement override so it actually works the way + I had in mind. + - The package proper enables it by default, but + - the sample site configuration file switches it off, on the + assumption that distributors and users will know better than + we do when they get a capable pager in place, and + - a register setting at the command line (or otherwise prior to + the loading of the macro package) is dispositive. + + * tmac/an-ext.tmac: Rename URI output device capability register + from `U` to `mU`. + (UR, UE, MT, ME): Test both `U` and `mU` before handling + hyperlinks specially. + * tmac/an.tmac: If `man.local` did not initialize `U`, switch it + on. The hope is that we can drop the stuff in `man.local` + completely at some point. + * tman/man.local: Only initialize `U` if it is not already + defined. + +2021-10-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Use OSC 8 hyperlinks. + + * tmac/an-ext.tmac: Add registers `mY` (output driver is + "grotty") and `U` (generate hyperlinks). `U` is intended to + apply to hyperlinking support in general, not just grotty's OSC + 8 feature. If the output driver is either grohtml or grotty, + make `U` true (`man.local` is read subsequently and can override + it). + (UR, MT): Conditionalize diversion production on hyperlink + support, not grohtml use per se. + (UE, ME): Generate device control commands for `tty` device to + emit hyperlinks. + + * tmac/groff_man.7.man.in (Options): Document -rU. + (Files) [style]: Add example of `U` register enablement. + + * tmac/man.local: Disable `U` register by default, except on the + `html` device. + + * NEWS: Add item. + +2021-10-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grotty]: Add OSC 8 hyperlink support. + + * src/devices/grotty/tty.cpp: Do it. Define `OSC` (Operating + System Command) and `ST` (String Terminator) preprocessor + symbols for these ECMA-48 (ISO 6429) character sequences. + (tty_printer::simple_add_char): Add stripped-down alternative to + `add_char()` member function for cases where we want to use many + defaults because we're writing a terminal escape sequence, not + rendering a glyph. (A function like `add_char()` that takes 8 + arguments of varying types is a code smell--phew!) + (tty_printer::special): Call `special_link()` member function if + the device control command is `link`. + (tty_printer::special_link): Add new member function to generate + OSC 8 hyperlinks. + + * src/devices/grotty/grotty.1.man: Document it. Observe in + multiple places that disablement of SGR escape sequences + disables OSC 8 too. + + * src/devices/grotty/tests/osc8_works.sh: Test it. + * src/devices/grotty/grotty.am (TESTS, grotty_TESTS): Run test. + (EXTRA_DIST): Ship test. + + * NEWS: Add item. + + Fixes <https://savannah.gnu.org/bugs/?60666>. Thanks to Steffen + Nurpmeso for supplying a proof-of-concept. (I went with my own + implementation, though, so blame me if it breaks.) + +2021-10-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Convert special character glyphs corresponding to + Unicode Basic Latin ("ASCII") code points to those code points + when they occur in device escapes. (They should be correct for + IBM code page 1047 as well, but this is untested.) This is + necessary for encoding URLs in device control commands. Special + character identifiers are presumed to be the defaults documented + in groff_char(7); this is a design gap that we should consider + addressing. (We don't have a way to ask "is this the special + character corresponding to Unicode basic Latin code point X?") + + * src/roff/troff/input.cpp (encode_char): Do it. + +2021-09-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man, mdoc]: Draw line after each page more consistently in + continuous rendering mode. + + * tmac/an.tmac (an-bp): Move responsibility for line-drawing + after each document from here... + (an-end): ...to here. Refactor; drop + `an-do-draw-line-after-document` register in favor of testing + `\n[.F]` for nullity; if it is not null, then another document + is due to be processed (in fact, `.F` already contains its file + name), and we need to draw a separating line. If it is null, we + have reached the end of input and none is necessary. + + * tmac/mdoc/doc-ditroff.tmac (doc-setup-page-layout): + * tmac/mdoc/doc-nroff.tmac (doc-setup-page-layout): Save + configured line length in new register `doc-line-length`. + * tmac/mdoc/doc-common.tmac (doc-end-macro): Port the above + man(7) feature to mdoc(7); draw a line of this length after each + document if continuously rendering. + +2021-10-01 Keith Marshall <keith.d.marshall@ntlworld.com> + + [ms]: Update footnote handling documentation. + + * tmac/groff_ms.7.man: Make some linguistic style adjustments. + (FP): Document it; see <https://savannah.gnu.org/bugs/?61022>. + (FS-MARK): Likewise, document this recently added feature. + +2021-10-01 Keith Marshall <keith.d.marshall@ntlworld.com> + + [ms]: Support user-defined TOC leader style. + + * tmac/s.tmac (toc*leader-char): Rename it as... + (TC-LEADER): ...this; within PX, leave it unchanged, if + predefined. + (TC-MARGIN): New numeric register; if predefined, leave it + unchanged, otherwise define as \w'000'; use it instead of + hard-wired definition, within PX; see + <https://savannah.gnu.org/bugs/?61157>. + + * tmac/groff_ms.7.man (TC-LEADER, TC-MARGIN): Document them. + +2021-09-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + [pic]: Update input file name correctly. + + * src/preproc/pic/troff.cpp (troff_output::set_location): Copy + the inbound file name argument with `strdup()` and store pointer + to this copy in `last_filename` instead of aliasing argument. + (troff_output::~troff_output): `free()` the memory allocated by + `strdup()` in destructor. + + Fixes <https://savannah.gnu.org/bugs/?61206>. Pointer + assignment instead of a string copy was being performed, which + means that after its initial assignment, `last_filename` always + shared its value ultimately with the `current_filename` pointer + {a libgroff symbol}, so `strcmp()` was always being performed on + identical pointers. Problem appears to date back 30+ years, to + the dawn of our repo history. + +2021-09-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devlj4/S: Make font name consistent with file name. + +2021-09-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/libs/libgroff/font.cpp (font::load): Throw error if a font + description file is missing a `spacewidth` directive, since it + is now re-documented as mandatory. Atypically, we don't return + false in this scenario; instead we proceed with the existing + logic to compute a space width for the font based on typical + practices for Western alphabetic fonts (see, e.g., + <https://type.today/en/journal/spaces>. + + * font/devdvi/EX: + * font/devdvi/MI: + * font/devdvi/S: + * font/devdvi/SA: + * font/devps/EURO: Add `spacewidth` directive to font + description files we ship that were missing it. We use the same + values that libgroff would have computed, so there should be no + visible difference. + +2021-09-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * Makefile.am: Mark `$(TEST_SUITE_LOG)` as `.PRECIOUS`. This + prevents the test suite log from being deleted if there are any + failures. + + Fixes <https://savannah.gnu.org/bugs/?61213>. Thanks to Bjarni + Ingi Gislason for the report. + +2021-09-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/grog/grog.pl (do_line): Move first-macro-call test + for `TH` to a more appropriate location. + +2021-09-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grog]: Refactor to make it easier to generalize a per-package + scoring mechanism. + + * src/utils/grog/grog.pl: Convert `inferred_main_package` from + scalar to list. Add scalar `selected_main_package` to store a + "winner" from the list of main packages inferred. + (push_main_package): Add subroutine to populate + `inferred_main_package`. + (do_line, infer_man_or_ms_package): Update to use + `push_main_package`. + (construct_command): Rewrite to select a main package from the + list `inferred_main_package`, taking user-supplied arguments + into account as an overriding factor. Drop now-unused `msupp` + list. + +2021-09-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/groff.cpp (main): If the `-I` option is given, + run the grn preprocessor and pass it an `-M` option with `-I`'s + argument. + + * NEWS: + * src/roff/groff/groff.1.man (Options): Document it. Also + document that `-I` options are passed to the output driver. + +2021-09-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/grog/grog.pl (do_line): Don't strip groff-style + comments \# if AT&T compatibility mode is enabled. + +2021-09-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Perform more font description file validation. Our + documentation said that the `name` directive was mandatory but + we didn't actually enforce this. Also be more specific in our + complaints of ill-formedness. + + * src/libs/libgroff/font.cpp (font::load): Add local Boolean + variable `saw_name_directive`. Rename `had_charset` to + `saw_charset_directive` for symmetry. Emit distinct diagnostics + for `spacewidth` and `slant` directives having a missing, + non-numeric, or out-of-range argument. Emit diagnostic if the + file lacks a `name` directive. + +2021-09-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Slightly refactor. + + * src/libs/libgroff/font.cpp (struct text_file): Rename member + variable `size` to `linebufsize` for clarity (it's certainly not + the size of the text file). + (text_file::text_file): Initialize `linebufsize` in constructor. + (text_file::next_line): Allocate new `buf` using `linebufsize` + instead of magic number (which was also stored to `size`, making + it only semi-magic, I guess). Rename local variable `i` to + `length` since it is in fact the length (in `char`s) of the + string stored in `buf`. + +2021-09-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Revisit fix for Savannah #61173. + + * src/libs/libgroff/font.cpp (text_file::text_file): Restore + setting of `lineno` member variable to `0` in constructor + initializer list, but... + (text_file::next_line): ...unconditionally increment it every + time through this member function's outer loop. + +2021-09-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Align diagnostic message format with libgroff. + + * src/roff/troff/input.cpp (fatal_with_file_and_line): Report + the program name if one is defined. + (fatal_with_file_and_line, error_with_file_and_line, + debug_with_file_and_line): Report the line number of the input + file only if it is positive, so that other values can be used + for "whole file" complaints. See commit cd0457b6, 17 September. + +2021-09-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Drop redundant diagnostic. + + * src/libs/libgroff/font.cpp (font::load): Drop redundant + diagnostic; a missing `charset` directive is already checked for + later, circa line 998. + +2021-09-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Fix code style nits. + + * src/libs/libgroff/font.cpp (font::font): Use initializer list + as much as possible in constructor. + (font::unit_scale, font::get_width, font::get_height, + font::get_depth, font::get_italic_correction, + font::get_left_italic_correction, + font::get_subscript_correction, font::get_character_type, + font::get_code, font::get_special_device_encoding): These member + functions rely on the font being either indexed or associated + with an output device that uses the `unicode` directive in its + `DESC` file. The compiler doesn't know this, so annotate the + `abort()` calls that conclude them. Add an `assert()` before + each one to more usefully describe the violated invariant in the + event this unreachable code is somehow reached. + (font::get_width): Annotate special meaning of zero zoom factor. + +2021-09-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/include/font.h (UNDEFINED_GLYPH): Use idiomatic C++98 null + pointer constant. + +2021-09-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grohtml]: Fix compiler warning and dead store. + + * src/devices/grohtml/post-html.cpp (html_printer::special): + Update call of `font::load_font()` to stop passing obsolete + parameter (deleted by me in 2dff87d3, 17 September). The value + stored to the parameter by that function was never read anyway, + so also get rid of the variable that contained it. + + Fixes <https://savannah.gnu.org/bugs/?61187>. Thanks to Bjarni + Ingi Gislason for the report. + +2021-09-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Slightly refactor. + + * src/include/font.h (font::scan_papersize): Demote return type + from `int` to `bool`. + * src/libs/libgroff/font.cpp (font::scan_papersize): As above. + Use Boolean instead of integer literals. Also rename `FILE` + stream pointer from `f` to `fp` and perform an explicit + comparison against the idiomatic C++98 null pointer constant. + +2021-09-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff, troff]: Slightly refactor device and font description + file loading. Remove dead code. + + * src/include/font.h (font::load_font): Drop second parameter. + It was never used for its intended purpose. + (load): Drop first parameter; likewise. + * src/libs/libgroff/font.cpp (font::load, load): As above. + + * src/libs/libgroff/font.cpp (struct text_file): Rename + `skip_comments` to `recognize_comments`. Demote that and + `silent` from `int` to `bool`. + (text_file::text_file): Use Boolean rather than integer literals + in constructor. + (text_file::next_line, font::load): Apply above renaming. + + * src/libs/libgroff/font.cpp (font::load): Rename parameter from + `head_only` to `load_header_only` to be more communicative. + Drop test of font description file name being `DESC`; this code + was not being reached. Stop throwing errors from this function + on failure to open the file; the caller will handle this when it + sees our false return value. Rename local variable `command` to + `directive` for alignment with our documentation. Replace "I + dont think this should happen" test and comment with `assert()`. + (struct table): Rename member from `command` to + `numeric_directive` to indicate its specificity, tracking only a + subset of valid `DESC` file directives. + + * src/libs/libgroff/font.cpp (font::load, font::load_desc): + Remove redundant assignments to the member variable formerly + known as `skip_comments`. + + * src/libs/libgroff/font.cpp (font::load_desc): Rename local + variable `directive_found` to `numeric_directive_found` to + clarify logic. + + * src/roff/troff/node.cpp (mount_font_no_translate): Simplify + call of `font::load_font`. The `not_found` in-out parameter + which was so agonizingly passed up through layers of library + calls was never actually read. Drop code that has been `#if + 0`-ed out since 1993. + +2021-09-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/libs/libgroff/font.cpp (font::load_desc): Clear line + number before emitting whole-file validity diagnostics. + +2021-09-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/libs/libgroff/font.cpp (font::load_desc): Emit correct + line numbers when complaining of invalid `sizescale`, `hor`, or + `vert` values in device description files. + + Fixes <https://savannah.gnu.org/bugs/?61174>. + +2021-09-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Increase validation of device and font description + files. + + * src/libs/libgroff/font.cpp (font::load): Validate the syntax + and value of the `name` directive. + (font::load_desc): Issue distinct diagnostics for a `fonts` + directive that is missing arguments and for a first argument + that can't be interpreted as a valid number. + +2021-09-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Make error reporting more flexible. + + * src/libs/libgroff/error.cpp (do_error_with_file_and_line): + Interpret a nonpositive line number specially: treat the + diagnostic as applying to the entire file, and omit the line + number. + +2021-09-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Add information to diagnostics. + + * src/libs/libgroff/font.cpp (font::load): Drop unused argument + from `error()` call. + (font::load_desc): In another, add name of numeric directive + that is given an unparsable number. + +2021-09-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Tweak code style. + + * src/libs/libgroff/font.cpp (trim_args, font::load) + (font::load_desc): Compare pointer explicitly to null pointer + literal `0` instead of using logical complementation. + (font::load, font::load_desc): Swap order of null pointer + equality comparisons when a typo or thinko could lead to lvalue + assignment. + +2021-09-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Use idiomatic C++98 null pointer constant. + + * src/libs/libgroff/font.cpp (text_file::error) + (glyph_to_unicode, font::get_special_device_encoding) + (font::load): + * src/libs/libgroff/fontfile.cpp (font::image_generator): + * src/libs/libgroff/nametoindex.cpp (class charinfo) + (character_indexer::named_char_glyph) + (character_indexer::numbered_char_glyph): + * src/libs/libgroff/string.cpp (string::clear): + * src/libs/libgroff/tmpfile.cpp (temp_init::temp_init): + * src/libs/libgroff/tmpname.cpp (gen_tempname): Use `0` literal + instead of `NULL` to represent a null pointer; this was + idiomatic in C++98 and is mostly the practice elsewhere in + groff. Also swap order of null pointer equality comparisons + when a typo or thinko could lead to lvalue assignment. + + * src/roff/troff/input.cpp (input_stack::diversion_state) + (input_stack::get_diversion_state, charinfo::contains) + (glyph_to_name): Similar. + +2021-09-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Slightly refactor. + + * src/libs/libgroff/font.cpp (font::load): Use same loop style + as `font::load_desc()`. + +2021-09-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Fix off-by-one error in font and device description + file reader diagnostics. + + * src/libs/libgroff/font.cpp (text_file::text_file): All text + files begin with line 1, not line 0. + + Fixes <https://savannah.gnu.org/bugs/?61173>. + +2021-09-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Boolify more interfaces. + + * src/include/font.h (font::unit_scale): + * src/libs/libgroff/font.cpp (font::unit_scale): Demote return + type from `int` to `bool`. Use Boolean literals instead of + integers. + + * src/libs/libgroff/font.cpp (struct text_file): Rename `next` + member function to `next_line`. Demote its return type from + `int` to `bool`. Use Boolean literals instead of integers. + +2021-09-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Boolify local variables. + + * src/libs/libgroff/font.cpp (font::load, font::load_desc): + Demote local variables used as Booleans from `int` to `bool` and + update literals used with them from integer to Boolean. + +2021-09-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grn, groff, troff]: Communicate better when device DESC file + can't be loaded. + + * src/libs/libgroff/font.cpp (font::load_desc): Stop writing + diagnostic to standard error. + * src/preproc/grn/main.cpp (getres): + * src/roff/troff/troff.cpp (main): Replace "sorry, I can't + continue" fatal diagnostic with a more informative message. + Instead say which device's DESC file the program was trying to + open, which might reveal a user's logic error or typo. + * src/roff/groff/groff.cpp (main): Replace "invalid device" text + of fatal diagnostic similarly. I think it is more helpful to + indicate the operation that failed rather than saying the device + was invalid, particularly since there are other ways for a + device description to be invalid even if a DESC file is found + and loaded. + +2021-09-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Throw warning diagnostic if device DESC file attempts + to load unavailable fonts. + + * src/roff/troff/input.cpp (main): Take advantage of new Boolean + return values of `mount_style()` and `mount_font()` to produce + warning diagnostics if mounting a style or font as directed by + the DESC file fails. Explain in a comment why, at present, this + style mount warning will never actually trip. + +2021-09-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Lift font mounting diagnostic messages to be closer to + their user-controlled contexts to provide more information. In + many cases no diagnostic was being thrown at all when an + unavailable font was requested by name, which is the method most + users prefer, and which meant that failures resulting from typos + in font names for many requests (`uf`, `fschar`, `rfschar`, + `special`, `fspecial`, `fzoom`, `bd`, `tkf`, `cs`) were going + unreported. Further, promote these font warnings to errors + because the request will utterly fail to do what was requested + with no reasonable fallback. Possibly, they were formerly + warnings because at the low level they were being emitted, they + could also have originated from unavailable fonts encountered in + device description files, and while that's bad news, it results + in no formatting problems if it doesn't affect fonts that an + input document actually uses. + + * src/roff/troff/node.cpp (struct font_lookup_info): New struct + keeps the font name or position requested, and the position of + successful font lookup. + (font_lookup_info::font_lookup_info): Add constructor. + (font_lookup_error): New function builds error message using a + `font_lookup_info` struct and a message argument. + (get_fontno): Rename to... + (has_font): ...this. Add argument to take a pointer to a + `font_lookup_info` struct. Return a `bool` indicating whether + the lookup succeeded. Place former `int` return value into the + struct instead. Populate the other struct members with the + requested font name or position, as appropriate. + (mount_font_no_translate): Stop throwing warning diagnostic here + if a font cannot be loaded. Instead, throw them... + (font_position): ...here, and... + (underline_font, define_font_special_character, + remove_font_special_character, read_special_fonts, + font_special_request, font_zoom_request, bold_font, track_kern, + constant_space): ...here, using `font_lookup_info` structs and + `has_font()`. + (remove_font_special_character): Stop returning early if font + lookup fails; it's gratuitously inconsistent with other similar + functions (save one, which has a reason to be different). + (define_font_special_character): Return early if font lookup + fails and say why in a comment (we can't `skip_line()`). + + Fixes <https://savannah.gnu.org/bugs/?59522>. + +2021-09-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * [libgroff, troff]: Further boolify. + + * src/include/font.h (load_font, font): Demote parameters from + {pointer to} `int` to `bool` and update default literal from + integer to Boolean (except for the pointer). Update comment. + * src/libs/libgroff/font.cpp (load_font, load): Similarly. + + * src/roff/troff/node.h (mount_font): + * src/roff/troff/node.cpp (mount_font): Demote return type from + `int` to `bool`. + + * src/roff/troff/node.h (mount_style): + * src/roff/troff/node.cpp (mount_style): Promote return type + from `void` to `bool`. + + * src/roff/troff/node.cpp (mount_font_no_translate): Demote + return type and `check_only` parameter from `int` to `bool` and + use Boolean rather than integer literals with them. + (check_font): Update call site of `mount_font_no_translate` to + use Boolean literal. + (font_position): Indicate that "error" is ignored by casting + return value of `mount_font` to void instead of using a comment. + (style): Cast return value of `mount_style` to `void`. + +2021-09-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * Makefile.am: Add `.DELETE_ON_ERROR` special target; both GNU + and FreeBSD make(1)s support it so maybe it will be portable + enough. This avoids, among other problems, a target appearing + falsely up-to-date (often as an empty file) when the troff + process generating it experiences an assertion failure. + +2021-09-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + Since June 1991 if not earlier, groff (technically, the refer, + lookbib, and lkbib programs) has trusted the header contents of + binary bibliographic index files (canonically generated with + indxbib(1)) regarding the sizes of the data structures that + follow in the file, a notorious class of security problem. In + July 2013, the Mayhem Team at Carnegie Mellon University + reported to the Debian Bug Tracking System a problem with + groff's refer(1) implementation dumping core when reading an + index file prepared by a fuzzer. + + * src/libs/libbib/index.cpp (index_search_item::check_header): + Add new member function to validate the header of an indexed + bibliography file, returning a string describing in detail the + first validity problem encountered. + (index_search_item::load): Perform the foregoing check before + using any of the size values taken from the header; they are + relied upon for pointer arithmetic. If in verification mode + {using the undocumented `-V` flag to refer(1), lkbib(1), or + lookbib(1)}, report the details of the problem encountered. + Regardless of that mode, if there is a validity problem, report + corruption of the index file and abandon it, forcing fallback to + the text version of the corresponding bibliography file. + + Fixes <https://bugs.debian.org/716109>. + +2021-09-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/libs/libbib/index.cpp + (index_search_item::get_invalidity_reason): Don't complain about + a last list element being nonnegative if the list size was zero + in the first place, as can happen with an empty index. More + seriously from a language standpoint, avoid reading through a + negative array index (this can escape a compiler's attention + because we're reading from the midst of a heap-allocated or + `mmap()`ed region, but it's still a code smell). + + Fixes <https://savannah.gnu.org/bugs/?61144>. + +2021-09-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/libs/libbib/index.cpp (index_search_item::load) + (index_search_item::get_invalidity_reason) + (index_search_item::add_out_of_date_file): Clarify diagnostic + messages. Make it more obvious when we're complaining of a + problem in an indexed bibliographic database file (rather than a + plain text one). Dial down the amount of Unix jargon a little. + +2021-09-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libbib]: Partially boolify. + + * src/include/search.h: + * src/libs/libbib/index.cpp: + * src/preproc/refer/refer.cpp: + * src/utils/lkbib/lkbib.cpp: + * src/utils/lookbib/lookbib.cpp: Demote `verify_flag` from an + `int` to a `bool`, rename it to `do_verify`, use Boolean + instead of integer literals with it, and update call sites. + + * src/libs/libbib/index.cpp: Rename `do_verify()` member + function to `get_invalidity_reason()` (it returns a string). + Demote `load()` from `int` to `bool`; do the same for `verify()` + and rename it to `is_valid()` as well. Use Boolean instead of + integer literals with them. + (index_search_item::is_valid, make_index_search_item): Update + call sites of renamed member functions. + +2021-09-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/libs/libbib/map.c (mapread): Compare return value of + `mmap()` to `MAP_FAILED` instead of `(char *)-1`. `MAP_FAILED` + is documented in POSIX Issue 5 a.k.a. SUSv2 + <https://pubs.opengroup.org/onlinepubs/007908799/xsh/mmap.html> + {1997} and should be portable enough by now. + +2021-09-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Clamp negative tab stop positions to zero instead of + throwing an assertion failure. + + * src/roff/troff/env.cpp (tab_stops::distance_to_next_tab): + Replace `assert` with clamping logic, ensuring that `lastpos` + can never be negative. While negative tab stop positions don't + make much sense (they result in zero horizontal motion), user + input like `.ta T -5` should never provoke an assertion failure. + + (set_tabs): Throw range warning in additional scenario, viz., if + a repeating tab offset is negative. + + Fixes <https://bugs.debian.org/990406>. Thanks to наб for the + report. + +2021-09-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Boolify `set_tabs` function. + + * src/roff/troff/env.cpp (set_tabs): Demote local variables from + `int` to `bool` and give them predicate-like names. + - `first` -> `is_first_stop` + - `repeated` -> `is_repeating_stop` + Use Boolean instead of integer literals in assignments to them. + +2021-09-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Deprecate `OP` macro. + + * tmac/an-ext.tmac (OP): Move implementation from here... + * tmac/an.tmac (OP): ...to here. Throw deprecation warning. + Throw style warning if wrong number of arguments given. + + * tmac/groff_man.7.man.in (Description): Drop from introductory + macro summary. + (Description/Command synopsis macros): Move discussion from + here... + (Description/Deprecated features): ...to here. Explain why it's + deprecated. + +2021-09-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Make `ab` request quiet if given no arguments. The + `tm`, `tm1`, and `tmc` requests provide ample flexibility for + constructing diagnostic messages prior to an error exit, and + it's convenient to make `ab` itself quiet instead of saying + "User Abort." as Unix Version 7 troff did. Further, there is no + standardization across troffs regarding what `ab` should emit if + arguments are absent. + + * src/roff/troff/input.cpp (abort_request): Do it. + + * src/roff/groff/tests/ab_works.sh: + * src/roff/groff/groff.am (groff_TESTS): Test it. + + * doc/groff.texi (Debugging, Implementation Differences): + * man/groff.7.man (Requests/Request short reference): + * man/groff_diff.7.man (Implementation differences): Document + it. + + Fixes <https://savannah.gnu.org/bugs/?61070>. Thanks to Dave + Kemper for the discussion. + +2021-09-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Update exit status literals. + + * src/roff/troff/div.cpp (top_level_diversion::begin_page): + * src/roff/troff/input.cpp (exit_troff, abort_request, do_error) + (fatal_with_file_and_line): Use standard C library preprocessor + symbols `EXIT_SUCCESS` and `EXIT_FAILURE` instead of 0 and 1 + literals, respectively. + +2021-09-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Drop unused member function. + + * src/roff/troff/token.h (class token): Drop unused `title` + member function. Its implementation was apparently removed in + the prehistory of our Git repository: see James Clark's + ChangeLog entry of 1990-09-06. + +2021-09-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Remove workaround for Cfront 1.2 bug. + + * src/roff/troff/input.cpp (do_define_macro): Move `dot_symbol` + from to file to function local scope as originally intended. + +2021-09-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Rename parameter. + + * src/roff/troff/input.cpp (token::usable_as_delimiter): Rename + parameter from `err` to `report_error` to be more communicative. + +2021-09-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Boolify members of `token` class. + + * src/roff/troff/token.h (class token): Demote return type of + several member functions from `int` to `bool` and rename them. + - `backspace` -> `is_backspace` + - `delimiter` -> `usable_as_delimiter` + - `dummy` -> `is_dummy` + - `eof` -> `is_eof` + - `horizontal_space` -> `is_horizontal_space` + - `hyphen_indicator` -> `is_hyphen_indicator` + - `leader` -> `is_leader` + - `left_brace` -> `is_left_brace` + - `newline` -> `is_newline` + - `page_ejector` -> `is_page_ejector` + - `right_brace` -> `is_right_brace` + - `space` -> `is_space` + - `special` -> `is_special` + - `stretchable_space` -> `is_stretchable_space` + - `tab` -> `is_tab` + - `transparent_dummy` -> `is_transparent_dummy` + - `transparent` -> `is_transparent` + - `unstretchable_space` -> `is_unstretchable_space` + - `white_space` -> `is_white_space` + - `zero_width_break` -> `is_zero_width_break` + (class token): Drop 1991 comment anticipating that member + function `nspaces` could return "2" for a "double space"; this + was apparently never implemented. + (class token): Drop parameter names from declarations; the + prevailing style (familiar from Stroustrup) is not to use them. + (token::is_special): Simplify implementation. + + * src/roff/troff/input.cpp (has_arg) + (token::usable_as_delimiter): Update definitions of above member + functions not defined in token.h. + + * src/roff/troff/div.cpp (begin_page, space_request, need_space) + (output_saved_vertical_space, flush_output): + * src/roff/troff/env.cpp (fill, no_fill, center) + (right_justify, indent, temporary_indent, margin_character) + (number_lines, do_break_request, hyphen_word): + * src/roff/troff/input.cpp (next_file, do_overstrike) + (do_bracket, do_name_test, do_expr_test, do_zero_width) + (token::skip, has_arg, skip_line, empty_name_warning) + (non_empty_name_warning, do_get_long_name, process_input_stack) + (flush_pending_lines, decode_args, read_request) + (do_define_string, do_define_character, remove_character) + (do_define_macro, length_request, get_delim_number) + (get_line_arg, read_size, get_delim_name, do_register, do_width) + (read_title_parts, encode_char, do_special, device_request) + (output_request, skip_alternative, begin_alternative) + (nop_request, do_if_request, do_source, pipe_source) + (ps_bbox_request, tag, taga, do_terminal, do_translate) + (hyphenation_code, hyphenation_patterns_file_code, define_class) + (get_optional_char, check_missing_character, abort_request) + (copy_file, transparent_file, do_macro_source) + (charinfo_to_node_list, read_draw_node, read_color_draw_node): + * src/roff/troff/node.cpp (get_fontno) + (remove_font_special_character, bold_font): + * src/roff/troff/number.cpp (start_number, parse_term): + * src/roff/troff/reg.cpp (define_number_reg, alter_format): + Update call sites to use new names. + + * src/roff/troff/input.cpp (token::usable_as_delimiter) + (read_draw_node): Return Boolean, not integer, literals. + +2021-09-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Clamp line and title lengths to device horizontal + resolution. + + * src/roff/troff/env.cpp (line_length, title_length): Do it. + + Fixes <https://savannah.gnu.org/bugs/?61116>. + +2021-09-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/env.cpp (do_hyphenation_patterns_file): + Refactor slightly. Demote `append` from `int` to `bool`. + (hyphenation_patterns_file, hyphenation_patterns_file_append): + Update call sites to use Boolean, not integer, literals. + +2021-09-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/hvunits.h: + * src/roff/groff/number.cpp: Mark `H0`, `V0` objects as `const`. + +2021-09-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/env.cpp (do_underline_special): Refactor + slightly. + - Rename `underline_spaces` -> `do_underline_spaces`. + - Demote it from an `int` to a `bool`. + - Use ternary operator and explicit character literals when + writing device control command instead of doing arithmetic + on a character literal. + - Update call sites to use Boolean literals. + - Relocate function to avoid forward reference. + - Mark function as static to eliminate external linkage. + Remove now-unnecessary prototype. + +2021-09-04 Keith Marshall <keith.d.marshall@ntlworld.com> + + Add "ms" footnote marker placement hook. + + * tmac/s.tmac (FS-MARK): New macro; define as no-op, by default. + (@FS): Invoke FS-MARK as first action, allowing caller to "hook" it. + +2021-09-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/env.cpp (distribute_space): Refactor slightly. + - Rename `force_reverse` to `force_reverse_node_list`. + - Rename `reverse` to `do_reverse`. + - Demote both of the above from `int` to `bool`. + - Use Boolean literals with them. + - Add assertions to enforce positive values of `nspaces` and + `desired_space`. + - Remove now-redundant test for `nspaces` being positive. + - Add explanatory comments. + (environment::wrap_up_field): Update call sites of + `distribute_space` when non-default value of + `force_reverse_node_list` is supplied. + +2021-09-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Don't adjust nonadjustable lines. This means that the + direction from which an output line in adjustment mode "b" (or + its "n" synonym) is filled with supplemental space is not + changed if that output line does not require adjustment. This + will result in whitespace changes to documents using that + adjustment mode, and these changes will be plainly visible on + low-resolution output devices like terminals. + + To illustrate, in the following "A" means an output line + requiring adjustment; "F" a line that is "full" and does not; + and "L" and "R" indicate distribution of adjustment spaces from + the left and right, respectively. + + groff 1.22.4 groff 1.23.0 + ------------ ------------ + A L A L + A R A R + F L F R + A R A L + + * src/roff/troff/env.cpp (distribute_space): Return early if + either the amount of desired space to be distributed or the + count of space nodes in the output line to distribute it among + is zero. + + * tmac/tests/an_TH-repairs-ad-damage.sh: Update test to expect + space to be distributed differently. + + Fixes <https://savannah.gnu.org/bugs/?61089> and + <https://savannah.gnu.org/bugs/?60673>. + +2021-09-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + Skip core-dump-checking test if a core file already exists. + + * src/roff/groff/tests/regression_savannah_59202.sh: Skip test + if a core dump is already present. + +2021-09-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + Add regression test for Savannah #60189. + + * src/roff/groff/tests/break_zero-length_output_line_sanely.sh: + Do it. + * src/roff/groff/groff.am (groff_TESTS): Run test. + +2021-08-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Tweak diagnostic message. + + * src/roff/troff/env.cpp (environment::environment): Use + terminology more rigorously in diagnostic. + +2021-08-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Fix code style nit. + + * src/libs/libgroff/errarg.cpp (errprint): Replace `assert(0)` + with a meaningful predicate. + +2021-08-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Demote `need_space` to Boolean. + + * src/libs/libgroff/error.cpp (do_error_with_file_and_line): + Demote local integer `need_space` and its assignments to `bool`. + +2021-08-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Boolify `font::load()` and `font::load_desc()` + return values. + + * src/include/font.h (font::load, font::load_desc): + * src/libs/libgroff/font.cpp (font::load, font::load_desc): Do + it. + +2021-08-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (TRADITIONAL_CPP): Update `AC_MSG_CHECKING` + argument to refer to "pre-ISO C90 syntax" instead of a + "traditional" preprocessor. Call `AC_MSG_ERROR` (aborting + configuration) if the check (for pre-C90 transformation) + succeeds. We thus withdraw support for such superannuated + {"Reiser"} C preprocessors. + +2021-08-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Un-indirect token concatenation through macro. + + * src/include/itable.h: + * src/include/ptable.h: Do it. + +2021-08-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Drop support for `TRADITIONAL_CPP`. This means a C + preprocessor that does not support the ANSI C89/ISO C90 + token concatenation operator "##". + + * src/include/itable.h: + * src/include/ptable.h: Do it. + + * Makefile.am: Undocument preprocessor symbol. + +2021-08-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Drop `a_delete` preprocessor wrapper for the + `delete` operator. It has been rendered unnecessary by the + removal of support for ancient C++ compilers. + + * src/include/lib.h (a_delete): Drop symbol definition. + + * src/devices/grohtml/output.cpp (word::~word): + * src/devices/grohtml/post-html.cpp (char_block::char_block) + (assert_state::~assert_state, assert_state::add) + (assert_state::close, replace_negate_str): + * src/devices/grops/ps.cpp (ps_font::ps_font) + (subencoding::subencoding, ps_printer::define_encoding) + (ps_printer::encode_fonts): + * src/devices/grops/psrm.cpp (resource_manager::document_setup) + (resource_manager::supply_resource): + * src/devices/grotty/tty.cpp (tty_printer::tty_color) + (tty_printer::tty_printer, tty_printer::color_to_idx) + (tty_printer::add_char): + * src/include/itable.h (ITABLE(T)::~ITABLE(T)) + (ITABLE(T)::define): + * src/include/ptable.h (PTABLE(T)::~PTABLE(T)) + (PTABLE(T)::define): + * src/libs/libbib/index.cpp + (index_search_item::~index_search_item, make_index_search_item, + index_search_item_iterator::index_search_item_iterator, + index_search_item::get_tag, index_search_item::munge_filename, + index_search_item::search): + * src/libs/libbib/linear.cpp (bmpattern::~bmpattern) + (file_buffer::file_buffer, file_buffer::load) + (linear_searcher::linear_searcher) + (linear_searcher::~linear_searcher): + * src/libs/libbib/search.cpp + (search_list_iterator::search_list_iterator) + (search_item::search_item): + * src/libs/libdriver/input.cpp (IntArray::~IntArray) + (IntArray::append, StringBuf::~StringBuf, StringBuf::append) + (get_integer_arg, parse_x_command, do_file): + * src/libs/libdriver/printer.cpp (printer::printer) + (printer::load_font, text_file::~text_file, text_file::next) + (font::~font, font_widths_cache::~font_widths_cache) + (font:alloc_ch_index, font::extend_ch, font::compact) + (font::load_desc): + * src/libs/libgroff/fontfile.cpp (font::open_file): + * src/libs/libgroff/relocate.cpp (searchpath, searchpathext) + (set_current_prefix): + * src/libs/libgroff/searchpath.cpp (search_path::search_path) + (search_path::command_line_dir, search_path::open_file) + (search_path::open_file_cautious): + * src/libs/libgroff/string.cpp (sfree, srealloc) + (string::remove_spaces): + * src/libs/libgroff/symbol.cpp (symbol::symbol, concat): + * src/libs/libgroff/tmpfile.cpp (temp_init::temp_init) + (xtmpfile_list_init::~xtmpfile_list_init, xtmpfile): + * src/preproc/eqn/box.cpp (set_gfont, set_grfont, set_gbfont) + (box_list::append, box_list::~box_list): + * src/preproc/eqn/delim.cpp (make_delim_box) + (delim_box::~delim_box): + * src/preproc/eqn/eqn.ypp (number): + * src/preproc/eqn/lex.ypp (file_input::~file_input) + (argument_macro_input::~argument_macro_input): + * src/preproc/eqn/pile.ypp (matrix_box::~matrix_box) + (matrix_box::append): + * src/preproc/eqn/special.cpp (special_box::~special_box): + * src/preproc/eqn/text.ypp (set_char_type): + * src/preproc/html/pre-html.cpp (get_line, scanArguments): + * src/preproc/pic/object.cpp (output::~output) + (output::set_args, text_item::~text_item) + (object_spec::~object_spec, command_object::~command_object) + (line_object::~line_object): + * src/preproc/pic/pic.ypp (placeless_element, reset_variables) + (print_args, text_expr, object_spec, text, sprintf_args, path): + * src/preproc/refer/command.cpp (input_item::~input_item) + (input_item::peek_char): + * src/preproc/refer/label.ypp (lookup_label): + * src/preproc/refer/refer.cpp (store_citation, store_reference): + * src/preproc/tbl/main.cpp (format::add_rows, format::~format): + * src/preproc/tbl/table.cpp (block_entry::~block_entry) + (table::~table, table::allocate): + * src/roff/groff/groff.cpp (possible_command::~possible_command) + (possible_command::clear_name): + * src/roff/troff/column.cpp + ((justification_spec::~justification_spec) + (justification_spec::append): + * src/roff/troff/dictionary.cpp (dictionary::lookup): + * src/roff/troff/env.cpp (override_sizes, tab_stops::to_string) + (hyphen_word, hyphen_trie::insert_hyphenation): + * src/roff/troff/input.cpp (read_long_escape_name, token::next) + (do_get_long_name, temp_iterator::~temp_iterator) + (get_delim_name, pipe_source, read_string, pipe_output) + (system_request, open_mac_file, do_macro_source) + (do_register_assignment, do_string_assignment, read_draw_node) + (copy_mode_error): + * src/roff/troff/node.cpp (troff_output_file::set_font) + (troff_output_file::~troff_output_file, draw_node::is_tag) + (grow_font_table, font_family::~font_family) + (font_family::make_definite): + * src/utils/hpftodit/hpftodit.cpp (name_list::~name_list) + (read_map): + * src/utils/indxbib/indxbib.cpp (main, get_cwd): + * src/utils/tfmtodit/tfmtodit.cpp (tfm::~tfm, tfm::load): Port + uses of `a_delete` to `delete[]`. + +2021-08-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Drop `ad_delete` preprocessor wrapper for the + `delete` operator. It has been rendered unnecessary by the + removal of support for ancient C++ compilers. + + * src/include/lib.h (ad_delete): Drop symbol definition. + + * src/preproc/pic/object.cpp (graphic_object::print_text): + * src/preproc/refer/ref.cpp (reference::reference) + (reference::merge, reference::insert_field) + (reference::delete_field): + * src/preproc/tbl/main.cpp (format::add_rows): Port uses of + `ad_delete` to `delete[]`. + +2021-08-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_ARRAY_DELETE): Update `AC_MSG_CHECKING` + argument to refer to "ISO C++98" instead of "ANSI". Call + `AC_MSG_ERROR` (aborting configuration) if the check fails. + +2021-08-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Drop support for `ARRAY_DELETE_NEEDS_SIZE`. + + * src/include/lib.h [ARRAY_DELETE_NEEDS_SIZE]: Drop preprocessor + conditional branch. This abandons support for certain pre-ISO + C++98 compilers. (According to a now-removed comment, unsized + array deletion was documented in "ARM", meaning _The C++ + Annotated Reference Manual_, published in 1989.) + + * Makefile.am: Undocument preprocessor symbol. + +2021-08-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Drop redefinition of `INT_MIN`. + + * src/include/lib.h: Drop redefinition of `INT_MIN`. It was + motivated by a bug in the AT&T C++ compiler (cfront), version + 2.0, released in June 1989. Implementations have had 30 years + to get this right; assume that they have. + + * PROBLEMS: Drop corresponding item. + +2021-08-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Drop long-dead `COOKIE_BUG` logic. + + * src/libs/libgroff/new.cpp (operator new, operator delete): + Drop preprocessor conditional branches on the `COOKIE_BUG` + symbol. This was de-documented, and an autoconf check for its + necessity removed, way back in groff 1.10 (November 1995). It + was relevant only to GCC from versions 2.0 to 2.2.2 (all 1992). + +2021-08-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Refactor `font::scan_papersize()`. + + * src/libs/libgroff/font.cpp (font::scan_papersize): Ensure + successful return value of `fgets()` before attempting to parse + string for paper format. Convert `test_file` to Boolean and + rename to `attempt_file_open`. Quiets GCC `-Wunused-result` + warning. + +2021-08-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tests]: Apply naming convention. + + * tmac/tests/e_footnotes_work_with_columns.sh: Rename from... + * tmac/tests/e_footnotes-work-with-columns.sh: ...to this. + * tmac/tmac.am (tmac_TESTS): Update. + +2021-08-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an.tmac (IP): Make code more accessible by using a + Boolean operator rather than an arithmetic one (assembly + language programmers are comfortable with the interchangeability + of subtraction and comparison, but not everyone is). + +2021-08-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + groff(7): Document more escapes. + + * man/groff.7.man (Escape short reference): Document + `\[charNNN]`, `\[uNNNN]`, `\[uNNNN_NNNN...]` escape sequences. + Revise descriptions of `\O0` and `\O1` escape sequences. + Document `\O2`, `\O3`, `\O4`, and `\O5` escape sequences. + +2021-08-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + groff(7): Fix bug in `\?` escape rendering. + + * man/groff.7.man (ESC?): Fix bug in page-private macro: the + question mark that ends this uniquely-syntaxed escape sequence + was not shown with the mandatory escape character before it. + Problem dates back at least to commit 41b0e794, 19 February + 2007, but possiby to f790bc7a9, 6 January 2002. + +2021-08-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + [docs]: Elaborate macro definition discussion. + + Fixes <https://savannah.gnu.org/bugs/?57944>. Thanks to Dave + Kemper for the report. + +2021-08-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tests]: Make robust against $GROFF_TYPESETTER settings. + + * src/roff/groff/tests/\ + use_point_size_escape_with_single_digit_arg.sh: + * src/roff/nroff/tests/verbose_option_works.sh: + * tmac/tests/s_IP-indents-using-paragraph-type-size.sh: Export + an empty $GROFF_TYPESETTER to the environment. + + Fixes <https://savannah.gnu.org/bugs/?60140>. Thanks to Bjarni + Ingi Gislason for the report. + +2021-08-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Treat an empty $GROFF_TYPESETTER as unset. + + * src/libs/libgroff/device.cpp (device_init::device_init): Test + both returned pointer from `getenv()` and, if that's not null, + the first character of the string for nullity before assigning + it to `device`. + + Fixes <https://savannah.gnu.org/bugs/?61068>. + +2021-08-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff]: Rename font class member variable. + + * src/include/font.h (font class): Rename `unscaled_charwidths` + member variable to `use_unscaled_charwidths`: since it is a + Boolean, make it read more like a logical predicate. + + * src/libs/libgroff/font.cpp (font::get_width, font::load_desc): + * src/libs/libgroff/fontfile.cpp (font class): Update + initialization and assignments. + +2021-08-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (get_copy): Demote integer arguments + to Booleans and use Boolean literals for default values. Rename + `defining` to `is_defining`. + (get_char_for_escape_name, do_define_macro): Update call sites + that use non-default arguments to use Boolean literals and + comments to document what's being requested. + +2021-08-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am (DOC_GROFF_ONLY): Stop running groff in unsafe + mode; no documents (in _this_ directory) appear to require it. + +2021-08-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grn]: Fix code style issues. + + * src/preproc/grn/hgraph.cpp: + * src/preproc/grn/hpoint.cpp: + * src/preproc/grn/main.cpp: + * src/preproc/grn/hdb.cpp: Drop use of `register` storage class. + + Fixes <https://savannah.gnu.org/bugs/?57733>. Thanks to Bjarni + Ingi Gislason for the report and a suggested patch. + + * src/preproc/grn/hgraph.cpp (len, HGPrintElt, picurve): + * src/preproc/grn/hdb.cpp (DBRead): Wrap long lines. + + * src/preproc/grn/hgraph.cpp: Rename function from + `Paramaterize` to `Parameterize`. + (HGCurve): Update call site. + + * src/preproc/grn/main.cpp (add_file): Drop redundant cast in + `realloc()` call. + (conv, interpret): Use standard English in diagnostic messages. + +2021-08-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/grn/hdb.cpp: Perform more input validation. + Improve diagnostics by taking advantage of libgroff + infrastructure and tracking the line number of the input file. + Add global `lineno`. + (DBRead): Increment `lineno` after reading newlines from input. + Call `error_with_file_and_line()` instead of `error()`. If + input reports a negative length for the text (string) to follow + in the file, exit with a fatal diagnostic. Check for EOF while + reading text string. + (DBGetType): Convert `fprintf()` call for warning diagnostic to + `warning_with_file_and_line()`. + (DBRead, DBGetType): Add contextual information to diagnostic + messages. + + Fixes <https://savannah.gnu.org/bugs/?61043>. Thanks to + Savannah user eqkws for the report. + +2021-08-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/grn/main.cpp (usage): Update usage message. + +2021-08-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grn]: Add and use `malloc()` wrapper. + + * /src/preproc/grn/main.cpp (grnmalloc): New function takes + argument of `size_t` type and constant string argument to + describe what is being allocated. Return non-null pointer from + `malloc()`, otherwise call `fatal()`, describing what was being + allocated and the problem reported by the system. + + * src/preproc/grn/hdb.cpp (DBCreateElt): + * src/preproc/grn/hpoint.cpp (PTMakePoint): + * /src/preproc/grn/main.cpp (main, interpret): Migrate + `malloc()` callers to `grnmalloc()`. + +2021-08-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/grn/hdb.cpp (DBRead): Check return value of + `sscanf()` and call `fatal()` if no conversions succeeded. The + blithe discard of a useful return value is bad enough, but this + one took place inside a do-while such that it could loop + forever trying fruitlessly to parse two doubles out of strings + that didn't contain them (the loop never checked the EOF status + of the file stream from which it was reading, and relied on + `fgets()` to keep advancing the stream pointer). Discovered + while root-causing Savannah #61043. + +2021-08-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + Resolve compiler warnings relating to format string security and + ISO C++98 conformance. + + * src/preproc/eqn/delim.cpp (define_extensible_string): + * src/preproc/pic/pic.ypp (do_sprintf): Use #pragma to silence + GCC "format-nonliteral" warning and explain why our usage is + safe in a comment. + + * src/preproc/preconv/preconv.cpp (detect_file_encoding): Use + `l` modifier to `%u` `fprintf()` conversion instead of `z`, and + cast return values of `size_t` to unsigned long; "ISO C++98 + does not support the ‘z’ gnu_printf length modifier" (it doesn't + support `ll` either). N.B. this is debugging output only. + + * src/roff/groff/groff.cpp (synopsis): + * src/roff/troff/input.cpp (usage): Repeat variadic argument for + `%s` conversion in `fprintf()` call because "ISO C++98 does not + support %n$ operand number formats". + + * src/roff/troff/env.cpp: Initialize adjustment and hyphenation + mode enums without commas at the end of the enumeration lists. + +2021-08-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Clean up the interface between `an-footer` and `BT`, and + HTML header and footer suppression generally. Move + responsibility for checking the `ps4html` register from the + latter to the former. This is not something a `BT` redefiner + {see groff_man(7)} should have to worry about. + + * tmac/an.tmac (BT): Drop test of `ps4html` register and early + return. + (an-header, an-footer): Return immediately if + `an-suppress-header-and-footer` is true. Remove conditional on + `an-is-output-html`. + (initialization): Define `an-suppress-header-and-footer` + register; true if `an-is-output-html` is true, or if `ps4html` + is defined. + +2021-08-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/html/pre-html.cpp (get_resolution): Unbrace a + single-statement `while` loop per prevailing coding style. Add + comments noting how we aren't parsing DESC files _precisely_ as + our documentation specifies. + +2021-08-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + Convert font class `int` members to `bool` where appropriate. + + * src/include/font.h (font class): Demote integers to Booleans + and use Boolean literals where possible. Rename some member + variables to look like logical predicates. + - contains() + - is_special() + - has_ligature() + - tcommand -> has_tcommand + - unscaled_charwidths + - pass_filenames + - use_charnames_in_special + - is_unicode + - special (private) + * src/libs/libgroff/font.cpp (font::font): Construct object + using Boolean literal. + (font::contains): + (font::is_special): + (font::has_ligature): Convert return type to `bool`. + (font::load): + (font::load_desc): Assign to member variables using Boolean + literals. + * src/libs/libgroff/fontfile.cpp: Initialize appropriate globals + using `bool` type and Boolean literals. + * src/roff/troff/troff.h: + * src/roff/troff/input.cpp (main): + * src/roff/troff/node.cpp (troff_output_file::put_char_width): + Rename `tcommand_flag` to `device_has_tcommand` to suggest a + logical predicate, and to emphasize the formatter's concern with + what the output device can accept in the intermediate output + language. + * src/roff/troff/input.cpp: Initialize `device_has_tcommand` + global using `bool` type and Boolean literal. + +2021-08-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + [me]: Clarify breadth of application of `ll` macro. + + * doc/meref.me: Document application of .ll macro only to the 3 + environments that me(7) uses, not any the user might create. + * tmac/e.tmac (@C, xl, ll): Update comments. + + Fixes <https://savannah.gnu.org/bugs/?55060>. + +2021-08-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + Add regression test for Savannah #58736. + + * tmac/tests/e_footnotes_work_with_columns.sh: Test it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2021-08-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac (bc): Fix problem with multiple columns on long + pages. Space to the next page location trap, not 24 inches. + Thanks to Dave Kemper and Bjarni Ingi Gislason for help tracking + this bug down. + + Fixes <https://savannah.gnu.org/bugs/?55081>. + +2021-08-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + Add regression test for Savannah #55081. + + * tmac/tests/e_columns-work-on-long-pages.sh: Test it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2021-08-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * man/groff.7.man (Localization): Add section. + +2021-08-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/cs.tmac: + * tmac/de.tmac: + * tmac/fr.tmac: + * tmac/it.tmac: + * tmac/sv.tmac: Update ms package localization to use an + appropriate hyphenation mode for the `HY` register (the + mode for the pattern files, plus 2 as is traditional in ms). + +2021-08-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac (1c): Place comment escape sequence immediately + after macro argument. (When redefining a request, one needs to + remember that request arguments are not parsed exactly as macro + arguments are.) Quiets "-w tab" warning. + +2021-08-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + [me]: Fix misleading documentation claim; gremlin(1) pictures + cannot be included directly; they must be preprocessed with + grn(1). + + * doc/meref.me: + * tmac/groff_me.7.man: Replace "gremlin" with "grn". + +2021-08-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/groff_me.7.man: Document `n1` and `n2` macros. + +2021-08-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + [me]: Fix PS/n1 combination diagnostic spew and apparent logic + error. + + * tmac/e.tmac (@h): Place comment escape sequence immediately + after macro argument. (When redefining a request, one needs to + remember that request arguments are not parsed exactly as macro + arguments are.) + (n2): Prefix with `do` requests using long register names. + (n2): Add macro-local register `|l` to store length of first + argument. Don't attempt to extract a substring beyond the + bounds of its source, which produces a warning diagnostic. + (&&): Define no-op macro for use as end macro in nested macro + definition. + (PS): Fix unbalanced-else diagnostic by changing `if` to `ie`. + (PS): Initialize `PS_nm_cnt` register to 0 instead of relying on + implicit definition. + (PS): Prefix with `do` definition of long macro name. + (PS): Indent call of end macro. + (PS): Add comment after escaped space. + (PS, PF): Prefix with `do` call of long macro name. + + Fixes <https://savannah.gnu.org/bugs/?61019>. + +2021-08-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/grog/grog.pl (do_line): Recognize `n1` and `n2` as + characteristic me(7) macros. + +2021-08-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/groff_me.7.man: Document GF, IE, IF, IS, and PF macros. + +2021-08-08 Dave Kemper <saint.snit@gmail.com> + + * tmac/e.tmac: Rename `PE` to `PF` but remove vertical spacing. + (PE): New `PE` calls `PF` and then spaces as old `PE` did. + + Fixes <https://savannah.gnu.org/bugs/?60479>. + +2021-08-06 Dave Kemper <saint.snit@gmail.com> + + * doc/meref.me: Improve documentation of image-inclusion macros. + + Fixes <https://savannah.gnu.org/bugs/?60478>. + +2021-08-06 Dave Kemper <saint.snit@gmail.com> + + GNU pic recognizes two possible endings of a pic block: .PE or + .PF. This fact was documented in doc/pic.ms but not in the pic + man page. The minimal pic implementation provided by pic.tmac + also did not include a .PF definition. + + * src/preproc/pic/main.cpp (main): Add dummy definition of `PF` + macro. + * tmac/pic.tmac (PF): Add macro that performs indentation only. + (PE): Call PF for indentation. + + * doc/pic.ms (Interface to [gt]roff/How Scaling is Handled): + * src/preproc/pic/pic.1.man (Description, Options): Mention `PF` + in addition to `PS` and `PE`. + + Fixes <https://savannah.gnu.org/bugs/?60504>. + +2021-08-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/refer-ms.tmac: + * tmac/s.tmac (fn@init, @PP): Rename strings + `fn@sup-{start,end}` to `fn@mark-{start,end}`. This makes it + more clear that the strings are brackets for the footnote + marker, and not so much to do with the note text. Further, in + nroff mode, they aren't superscripts at all, but bracket glyphs. + +2021-08-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/refer/refer.1.man (Examples): Add section. + + Addresses part of <https://savannah.gnu.org/bugs/?57667>. + +2021-08-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/refer-ms.tmac: Use `fn@sup-{start,end}` instead of + `par@sup-{start,end}` when setting refer(1) citation labels. + This improves the appearance of the default labels on nroff + devices. Continues commit caeede07, 1 May. + +2021-08-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tman/an-ext.tmac (EX, EE): Stop manipulating hyphenation. + It's redundant since disabling fill mode already prevents + automatic breaking, and therefore automatic hyphenation. + * tmac/groff_man.7.man.in (Description/Document structure + macros) <EX, EE>: Update documentation. + +2021-08-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/grog/grog.pl: Update authorship credits. I appear + to have removed or refactored all of the "device" (recte: macro + package) inference logic adapted from Ralph Corderoy's grog.sh; + see commit 3617f42048f54cc3f0adc282ee3b9e481c75ebd5, 13 June + 2014. + +2021-07-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/grog/grog.pl: Refactor through relocation and + renaming. Move several global objects into subroutines. + - `@request` -> `&do_line` + - `@macro_ms`, `@macro_man`, `@macro_man_or_ms` -> + `&infer_man_or_ms_package` + - `@main_package` -> `&construct_command` + Rename some objects for clarity. + - `%Groff` -> `%score` + - `@filespec` -> `$input_file` + Delete unused object. + - `@standard_macro` + Add comments. + +2021-07-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/grog/grog.pl (do_line): When matching macro/request + names, accept any non-whitespace character (Perl: \S) instead of + just a word-constituent character (Perl: \w), since roff + identifiers can contain unusual characters (refer(1) and + groff_me(7) illustrate some real-world cases). + +2021-07-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/grog/grog.pl: Refactor macro package inference. + - Stop manually populating `Groff` hash. (It's itching for a + rename.) + - Stop calling now-dead subroutine `infer_macro_packages`. + (do_line): Always store the names of all macros called to the + `Groff` hash, incrementing it. Now it's a proper scoreboard. + Populate `inferred_main_package` from here upon encountering + characteristic (i.e., uniquely named) macros of each package. + Bug fix: drop "SP" from list of characteristic mom(7) macros; + it's shared with mm(7). + (infer_man_or_ms_package): Update comment. Return 0 (false) if + document appears to be "raw", using no full-service macro + package. + (infer_macro_packages): Delete; do_line() does this work. + +2021-07-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/grog/grog.pl: Refactor preprocessor inference. + - Add new list, `inferred_preprocessor`. + - Drop preprocessor-related keys from `Groff` hash. + - Drop scalar `inside_tbl_table`. + (do_line): Set up hash `preprocessor_for_macro`. Detect + preprocessor macros the way the preprocessors do, explained in a + comment. Respect AT&T compatibility mode when doing so. Build + list of inferred preprocessors. This replaces the extensive and + gaseous series of `if` statements that manipulated the `Groff` + hash. + (infer_preprocessors): Completely replace. Set up a hash + `option_for_preprocessor` mapping preprocessor names to groff + options (where applicable). Append to `command` and + `preprocessor` lists as appropriate. Sort the preprocessor + options so they don't move around in the argument list depending + on the order of their macros' appearance in the input. + + * src/utils/grog/tests/smoke-test.sh: Update test cases to + expect preprocessor options to show up in sorted order. + +2021-07-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/grog/grog.pl: Drop dead code. Delete global + hash `preprocs_tmacs`, unused since commit b0de53c9, 30 June. + +2021-07-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grohtml]: Fix code nit. + + * src/preproc/html/pre-html.cpp (get_image_generator): + Type-qualify `keyword_len` as `const` to encourage the compiler + to compute this value (the length of a string literal) at build + time. + +2021-07-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Slightly refactor. + + * src/roff/troff/node.cpp: Add static `image_filename_len` to + store length of cached image file name, so we don't wastefully + recompute its length every time one is re-used. + (suppress_node::tprint): Compute image file name length only + when saving a new image file name. Use saved length in later + expressions. + (min): Drop unused inline function. + +2021-07-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Fix regression (breaking important pdfmark/pdfroff + features) caused by my commit + e876d4bfd193abb9a7d1fb6e76519349bded482a, 27 July. An empty + image file name is in fact semantically valid when writing a + bounding box; pdfmark uses such boxes to frame hyperlinks. + Avoid null pointer dereference by initializing `image_filename` + to an empty string literal. Thanks to Tadziu Hoffman and Keith + Marshall for their patient explanations. + +2021-07-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Refactor some internal functions. + + * src/roff/troff/node.cpp: Rename two functions that have only + one caller. + - get_reg_int -> get_register + - get_reg_str -> get_string + We now have: + (get_register, get_string): Use `assert()` aggressively because + these are deeply internal and validation is imperative. Get rid + of diagnostic messages (one of which perpetuated the dubious + "number register" nomenclature) accordingly. + (fetch_register): Also rename `prev_value`, misleadingly + specific and seemingly copy-and-pasted out of a context where an + auto-increment or -decrement might have been applied. It's just + the `value`. + (suppress_node::tprint): Update call site. + +2021-07-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Refactor `get_value` member functions. Given their + names and popular "getter/setter" paradigms from many OO + languages, the return type is misleading. Change it from `int` + to `bool` since it returns only a success/failure status and + modifies an argument (passed by reference) to deliver the + requested data. + + * src/roff/troff/reg.h (reg, variable_reg): + * src/roff/troff/div.cpp (page_offset_reg, page_length_reg) + (vertical_position_reg, high_water_mark_reg) + (distance_to_next_trap_reg, page_number_reg, no_space_mode_reg): + * src/roff/troff/env.cpp (int_env_reg, vunits_env_reg) + (hunits_env_reg, horizontal_place_reg): + * src/roff/troff/input.cpp (writable_lineno_reg): + * src/roff/troff/reg.cpp (reg, number_reg, variable_reg): Update + class and member function definitions to reflect the new type. + Update member function definitions to return appropriate Boolean + literals instead of 0 and 1. + +2021-07-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grohtml]: Fix Savannah #60981. Refactor device description + file handling and make it more robust. Make pre-grohtml's + -F option work as documented and honor device description file + semantics documented in groff_font(5). + + * src/preproc/html/pre-html.cpp: Store partial filespecs of HTML + and PostScript device files in constant strings. + (get_resolution): Initialize `res` to zero. Only `free()` the + pointer `pathp` if `open_file()` succeeded (populating it). + Stop checking for valid `sscanf()` conversions of an integer to + store in `res`, and don't return early. Instead process the + whole DESC file; per our Texinfo manual and groff_font(5), + "Later entries in the file ... override previous values." + (get_image_generator): Add new function, paralleling + `get_resolution()`, replacing open-coded logic in `main()`. + Only the body of the `while` loop significantly differs. + Instead of using `sscanf`, process the input character by + character matching the keyword and {1,} spaces or tabs + after it. Whatever follows in `linebuf` must be the program + name. + (imageList::createPage): Add `assert()` to cause failure if an + empty image generator program gets this far, because it creates + repeated messes if it does. (Something isn't checking exit + statuses.) + (main): Condense `image_gen` collection to a function call, a + null pointer check, and a fatal diagnostic. Add a sanity check + and a fatal diagnostic if the PostScript resolution is garbage. + {It's initialized to -1 and `get_resolution()` will return 0 if + it doesn't find one.} + + Fixes <https://savannah.gnu.org/bugs/?60981>. + +2021-07-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grohtml]: Delete or rename `debug` symbols to avoid clash with + new `debug` function in libgroff. + + * src/preproc/html/pre-html.cpp: Update a comment to refer to + "debugging" mode. Rename static global from `debug` to + `debugging`. + (html_system, imageList::createPage, imageList::createImage, + print_args, char_buffer::do_html, char_buffer::do_image, + scanArguments): Update uses of static global. + + * src/preproc/html/pushback.cpp: + * src/preproc/html/pushback.h: Delete unused `debug` member + variable. + +2021-07-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/nroff/nroff.sh: Fix straggling use of `$1`, which + might not have a clear meaning in some shells after being + shifted (what if we just shifted the last argument?). Also + `continue` after processing a (groff) option argument, as we + should make no attempt to parse it. + +2021-07-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (do_suppress): Recast diagnostic + messages for clarity, to communicate in terms of what the + escape sequence _is_, and to quote literals expected as input. + * src/roff/troff/node.cpp (suppress_node::tprint): Recast + diagnostic to prevent misinterpretation of image "description" + as being HTML IMG tag alt text or something like that. + Unfortunately, the new language speaks in terms of internal + implementation details ("grohtml-info"), but at least that way + it's easier for a user to decide if they care about it. + +2021-07-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Avoid using sprintf() with user-controlled format + string. + + * src/preproc/html/pre-html.cpp (makeFileName): Add comment + noting need for implementation synchrony between this function, + which generates \O5 escape sequences, and troff's + suppress_node::tprint member function, which interprets them. + * src/roff/troff/node.cpp: Rename 2 static globals for clarity. + - `last_image_filename` -> `image_filename` + - `last_image_id` -> `subimage_counter` + (suppress_node::tprint): Set up the buffer for image file name + to be written using a constant rather than an embedded literal. + Unconditionally initialize the buffer with a string terminator, + so there is no chance of a read from uninitialized storage. + Drop unused code involving `tem`. Drop stale comments. Clarify + comment: an `image_filename` doesn't _always_ contain a format + string, only sometimes. Replace use of `sprintf` with manual + construction of a new image filename string. There are two + cases, one where a format string {presently "%d"} is present, + and one where it is not. If it is present, locate it + {`percent`}. This means a limited/bounded image ("subimage") is + being processed; increment the subimage counter. Write a new + image file name preserving the parts before and after "%d" (the + "prefix" and "suffix", and replacing only the middle, using + `sprintf` with the subimage counter and the (string literal) + format. Be mindful of string bounds and memory allocation, + issuing diagnostics or aborting as necessary. If the image file + name does _not_ contain a format string, but needs only to be + copied, do that (`strcpy`), again instead of using `sprintf`. + + Fixes <https://savannah.gnu.org/bugs/?60977>. + +2021-07-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grohtml]: Fix Savannah #60971. + + * src/preproc/html/pre-html.cpp (makeFileName): Consistently put + a dash at the end of `macroset_template` whether the image file + name stem is user-supplied or the default. Stop adding the dash + before the image number in `image_template` instead. This makes + the image file name format reliable whether the image needs to + be subdivided (eqn) or not (tbl). + + Fixes <https://savannah.gnu.org/bugs/?60971>. + +2021-07-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grohtml]: Reduce noise to standard error stream. + + * src/preproc/html/pre-html.cpp (imageList::createImage): Fix + apparent oversight: `EXE_EXT` was not being applied to the + second of three commands being run in a pipeline (did Windows + users notice?). Also issue (undocumented!) `-quiet` option to + `pnmtopng` to shut up its commentary about counting colors. + +2021-07-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grohtml]: Stop discarding standard error output. + + * src/preproc/html/pre-html.cpp (html_system): Stop sending the + standard error stream to /dev/null; this just makes debugging + harder, and doesn't produce much more output for well-formed + input documents. Rename `save_stdout` to `saved_stdout`. + +2021-07-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grohtml]: Fix misspelled variable. + + * src/preproc/html/pre-html.cpp: Rename `IMAGE_BOARDER_PIXELS` + to `IMAGE_BORDER_PIXELS`. + +2021-07-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + [libgroff, troff]: Add debug diagnostic level. + + * src/include/error.h: Declare functions + `debug_with_file_and_line` and `debug`. + * src/libs/libgroff/error.cpp: Add `DEBUG` to enum `error_type`. + (do_error_with_file_and_line): Add case for `DEBUG` in switch. + (debug, debug_with_file_and_line): Add new functions. + + Do the same for troff since it has a private implementation of + the diagnostic functions (thanks to `output_warning()`). + + * src/roff/troff/input.cpp: Add `DEBUG` to enum `error_type`. + (do_error_with_file_and_line): Add case for `DEBUG` in switch. + (debug, debug_with_file_and_line): Add new functions. + +2021-07-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/hpftodit/hpftodit.cpp (hp_msl_to_ucode_name) + (unicode_to_ucode_name): Hush "format nonliteral" compiler + warnings by using a preprocessor-defined string literal as an + sprintf() format string instead of a C++ variable that just + compared identically to the same thing. + +2021-07-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/hpftodit/hpftodit.cpp (show_symset): Prevent + sprintf() from overunning a static buffer. Thanks to Bjarni + Ingi Gislason for the report. Resize buffer to be large enough + to accommodate a 64-bit unsigned int type formatted as decimal. + Also add assert() before the sprintf() to abort if the int type + is even larger than that. Use "%u" conversion instead of "%d" + since the quantity is unsigned. + (hp_msl_to_ucode_name): Similar, but for a signed int. + (unicode_to_ucode_name): Similar, but for a signed int formatted + as (unsigned) hexadecimal. + + Fixes <https://savannah.gnu.org/bugs/?60964>. + +2021-07-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/nroff/nroff.sh: Refactor, mostly by relocation. Move + locale character set inference logic so that we only run it if + we have to (`-T` option was invalid or not given and + `GROFF_TYPESETTER` was not set in the environment or invalid). + Initialize `T` variable as empty. + +2021-07-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/nroff/nroff.sh: Use Version 7 Unix sh-compatible form + of parameter expansion; per the GNU Autoconf manual[1], "[o]ld + BSD shells, including the Ultrix sh, don't accept the colon for + any shell substitution, and complain and die." This is also the + form of such substitutions used elsewhere in the script, so they + should be mutually consistent. + + [1] https://www.gnu.org/software/autoconf/manual/autoconf-2.60/\ + html_node/Shell-Substitutions.html + +2021-07-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/nroff/nroff.sh: Slightly refactor. Rename formerly + unused loop index variable from `i` to `arg` to leverage it in a + later diagnostic message without a separate definition. Inside + the loop, expand `arg` instead of positional parameter 1, the + meaning of which is less obvious after the parameter list is + shifted by the new `is_option_argument_pending` logic (commit + 2b955c57, 20 July). + +2021-07-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/groff.1.man (Options) <-S>: Fix error: `-S` + sets safer mode (redundantly) but is not passed to pic and troff + as was claimed. + +2021-07-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/number.cpp (parse_term): Tweak diagnostic + messages. When a left operand to a binary operator is empty, + report the operator in question (helpful for string + interpolations in complex expressions). When handling input + scaling indicators, drop word "this" from "this context", since + the parser's context might not be clear from a file name and + line number. Say "scaling indicator" instead of "scale + indicator". + (parse_expr, parse_term): Rename function parameter from + `scale_indicator` to `scaling_indicator`. + +2021-07-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (define_color): Tweak warning + diagnostics for clarity. Only one value is expected when + defining a color in the `gray` color space. Quote recognized + color space names when complaining of an unknown one. + +2021-07-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + [nroff]: Pass a supplied `-c` option to groff. While at present + this does little more than `-P-c` already achieves, that might + not be true forever. Further, there is a distinction between + ignoring color-related requests in groff input documents and + ignoring color-related commands in device-independent output. + This distinction would make it unwise to adapt `-c` to any other + purpose in nroff in the future. + + * NEWS: Update item from commit dd725dce, 10 February 2020. + * src/roff/nroff/nroff.sh: Pass `-c` option to groff in addition + to synthesizing a `-P-c` option (for grotty) when it is seen. + * src/roff/nroff/nroff.1.man (Options): Document `-c` as an + option recognized by troff(1). + +2021-07-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + [nroff]: Support space between option flags and their arguments. + + * src/roff/nroff/nroff.sh: Add new `is_option_argument_pending` + flag to add an additional state to the option parser. Set it if + an argument-requiring option is encountered with no abutting + argument. If it is set when a new argument is encountered, + absorb the argument into the groff option list and clear the + flag. Modernize script in a couple of other ways. + - Exit with status 2 upon usage errors so that this condition + is easily distinguished from a groff abort (which exits with + status 1). + - Test shell variables for non-nullity with test(1) -n + operator instead of a string comparison. + * src/roff/nroff/tests/verbose_option_works.sh: Test correct + construction of groff command using this input form. + * src/roff/nroff/nroff.1.man (Options): Add spaces between + option flags and option arguments. Sync metasyntactic variable + names with groff(1) while we're at it. + (Description): Drop sentence warning of whitespace prohibition. + (Exit status): Add new section. + + Fixes <https://savannah.gnu.org/bugs/?60943>. + +2021-07-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (main): Emit error diagnostic if `-d` + or `-r` option is given a malformed argument. This prevents a + string or register with an empty name from being created. + + Fixes <https://savannah.gnu.org/bugs/?60935>. + +2021-07-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/nroff/nroff.sh: + * src/roff/troff/input.cpp (usage): Use "dev" as metasyntactic + variable name for -T option argument to achieve consistency with + our other documentation. + +2021-07-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + [groff]: Comment out vestiges of gideal support. It would be + lovely to have, but no free (and GPL-compatible) implementation + has showed up after decades of waiting. Production of the + original was a Ph.D. thesis. Excited by de Moivre's theorem? + Take a stab at it. + + * src/roff/groff/groff.cpp (main): Comment out effect of `-J` + option. It remains recognized, but silently ignored (instead of + attempting to execute a nonexistent preprocessor). + (synopsis): Add comment reminding us to document the option if + we ever get the support. + (help): Comment out documentation of option. + +2021-07-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + [[gnt]roff]: Make usage messages more accurate. + + * src/roff/groff/groff.cpp (synopsis): Drop `-h` and `-v` from + normal operation synopsis. Sort options in en_US lexicographic + order. Tighten presentation of alternate usage forms. + (help): Document longer forms of `-d` and `-r`. + * src/roff/nroff/nroff.sh: Report `$prog` instead of "nroff" + literal. Refer to `-P` option argument as "arg" instead of + "opt", for consistency with groff usage message. Use opposite + case from option letter for option argument. + * src/roff/troff/input.cpp (usage): Put brackets around options. + Sort options in en_US lexicographic order. Drop `-v` from + normal operation synopsis. Use opposite case from option letter + for option argument. Put operand name in capitals. Set valid + usage forms on one physical line each (see 89648fb4, 5 June). + Add synopsis line for alternate usage forms. + +2021-07-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Refactor environment initialization, switching, and + copying. + + * src/roff/troff/env.cpp: Rename struct `env_list` to + `env_list_node` since it describes a node of a singly-linked + list. Remove constant `NENVIRONMENTS` and array `env_table`. + Add static symbol `default_environment_name` to replace string + literal. + (init_environments): Stop initializing `curenv` through + `env_table`. Use `default_environment_name` for that + initialization and add the default environment to + `env_dictionary`. + (environment_switch): Simplify. Shorten "dummy environment" + diagnostic message. Stop creating an integer-named + environment inside the `env_table` array, only falling through + to use the `env_dictionary` if the named environment is not a + valid integer or if the array is full. Instead use + `env_dictionary` always. Drop no longer needed `pop` + quasi-Boolean integer with extra state to suppress environment + stack underflow errors. Instead report the error if underflow + occurs, regardless of any other circumstance. + (environment_copy): Simplify. Stop searching the `env_table` + array for an environment to copy from, only falling through to + use the `env_dictionary` if the named environment is not a valid + integer or if the array is full. Instead search + `env_dictionary` always. Emit "no environment specified to copy + from" diagnostic only if the `evc` request is given no argument. + If the source environment to copy from is given but not found, + emit a new diagnostic naming the nonexistent environment. Fix + bug: stop returning early if no copying could be done; instead + fall through to the end of the function, which calls + `skip_line()` and prevents anything on the remainder of the + {invalid} control line from being interpreted. Problem dates + back to commit da3b7137, 6 March 2000 (groff 1.16). + + Fixes <https://savannah.gnu.org/bugs/?60913>. + +2021-07-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/tests/evc_produces_no_output_if_invalid.sh: + Regression-test Savannah #60913. + * src/roff/groff/groff.am (groff_TESTS): Run test. + +2021-07-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + Update English hyphenation patterns. + + * NEWS: Add item. + * tmac/hyphen.en: Update file using `hyph-en-us.tex` patterns + file from the TeX hyph-utf8 project. + * tmac/hyphenex.en: Remove explicit hyphenations for words that + no longer require them when using the new patterns. Add one + item scraped from an erratum comment in hyphen.en + {"dem-o-crat"}. + + The new patterns likely _will_ change the automatic hyphenation + break points of your English documents. Here is a sample of + affected words found within groff's own documentary corpus. + + OLD NEW + === === + ar‐range‐ment arrange‐ment + col‐umns columns + con‐struc‐ted con‐structed + cus‐tom‐ized cus‐tomized + def‐i‐ni‐tions de‐f‐i‐n‐i‐tions + der‐i‐va‐tions de‐riva‐tions + hy‐phen‐a‐tion hy‐phen‐ation + ma‐te‐rial ma‐te‐r‐ial + Mi‐cro‐soft Mi‐crosoft + pipe‐lines pipelines + post‐pro‐ces‐sors post‐proces‐sors + pro‐cessed processed + pro‐cesses processes + spa‐ces spaces + Wer‐ner Werner + +2021-07-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Add unit test for `substring` request. + + * src/roff/groff/tests/substring_works.sh: Do it. + * src/roff/groff/groff.am (groff_TESTS): Run test. + +2021-07-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tmac]: Remove compatibility mode save registers after using + them. + + * tmac/an.tmac: + * tmac/andoc.tmac: + * tmac/cp1047.tmac: + * tmac/devtag.tmac: + * tmac/ec.tmac: + * tmac/fallbacks.tmac: + * tmac/latin1.tmac: + * tmac/latin2.tmac: + * tmac/latin5.tmac: + * tmac/latin9.tmac: + * tmac/papersize.tmac: + * tmac/pdfpic.tmac: + * tmac/psold.tmac: + * tmac/pspic.tmac: + * tmac/trace.tmac: + * tmac/unicode.tmac: Do it. + + * doc/groff.texi (Implementation Differences): + * man/groff_diff.7.man (Implementation Differences): Illustrate + doing so in relevant examples. + +2021-07-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/troffrc: Load the English localization file `en.tmac` by + default, instead of dealing with hyphenation language and + patterns directly in this file. (This also replaces a + localization-determination mechanism that was never part of a + groff release.) + + * src/roff/groff/tests/initialization_is_quiet.sh: + * src/roff/groff/tests/localization_works.sh: Rewrite to use + explicit macro file loading localization mechanism. + +2021-07-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + Move core man(7) implementation to an.tmac. + + * tmac/an.tmac: Delete andoc-sourcing wrapper. + + * tmac/an-old.tmac: Rename... + * tmac/an.tmac: ...to this. + + * tmac/tests/an-old_AT-and-UC-footer-saved-and-restored.sh: + * tmac/tests/an-old_CS-register-off.sh: + * tmac/tests/an-old_CS-register-on.sh: + * tmac/tests/an-old_CS-register-unspecified.sh: + * tmac/tests/an-old_CT-register-off.sh: + * tmac/tests/an-old_CT-register-on.sh: + * tmac/tests/an-old_CT-register-unspecified.sh: + * tmac/tests/an-old_FT-bad-value-should-not-trash-titles.sh: + * tmac/tests/an-old_LL-init-sanely.sh: + * tmac/tests/an-old_TH-repairs-ad-damage.sh: + * tmac/tests/an-old_TH-repairs-hy-damage.sh: + * tmac/tests/an-old_TS-do-not-keep-tables-when-cR-set.sh: + * tmac/tests/an-old_X-register-works.sh: + * tmac/tests/an-old_avoid-two-font-denial-of-service.sh: + * tmac/tests/an-old_no-break-after-short-paragraph-tags.sh: + * tmac/tests/an-old_page-footers-present.sh: + * tmac/tests/an-old_page-header-has-current-data.sh: + * tmac/tests/an-old_title-abbreviation-works.sh: Rename... + + * tmac/tests/an_AT-and-UC-footer-saved-and-restored.sh: + * tmac/tests/an_CS-register-off.sh: + * tmac/tests/an_CS-register-on.sh: + * tmac/tests/an_CS-register-unspecified.sh: + * tmac/tests/an_CT-register-off.sh: + * tmac/tests/an_CT-register-on.sh: + * tmac/tests/an_CT-register-unspecified.sh: + * tmac/tests/an_FT-bad-value-should-not-trash-titles.sh: + * tmac/tests/an_LL-init-sanely.sh: + * tmac/tests/an_TH-repairs-ad-damage.sh: + * tmac/tests/an_TH-repairs-hy-damage.sh: + * tmac/tests/an_TS-do-not-keep-tables-when-cR-set.sh: + * tmac/tests/an_X-register-works.sh: + * tmac/tests/an_avoid-two-font-denial-of-service.sh: + * tmac/tests/an_no-break-after-short-paragraph-tags.sh: + * tmac/tests/an_page-footers-present.sh: + * tmac/tests/an_page-header-has-current-data.sh: + * tmac/tests/an_title-abbreviation-works.sh: ...to these. + + * tmac/tmac.am (TMACNORMALFILES): Remove an-old.tmac. + (tmac_TESTS): Reflect renames of test files above. + (tmac/stamp-wrap): Macro-source `an.tmac` in the man wrapper. + + * tmac/andoc.tmac: Refer to (and macro-source) an.tmac. + * tmac/man.tmac: Macro-source `an.tmac`, not `andoc.tmac`. + * tmac/tests/andoc_flush-between-packages.sh: Call groff with + `-mandoc` option instead of `-man`. Henceforth, if you want the + andoc wrapper, you have to ask for it. + + * tmac/an.tmac: Drop "-old" nomenclature. + + * PROBLEMS: + * doc/groff.texi (man): + * tmac/man.local: Update documentation appropriately. + + * NEWS: Add item. + + * man/groff_tmac.5.man (Macro packages/man pages): + * src/roff/groff/groff.1.man (Usage/Macro packages): Update + discussion of an, doc, and andoc. + * tmac/groff_man.7.man.in (Files): Update descriptions of + an.tmac, andoc.tmac, man.tmac, and mandoc.tmac. + + Fixes <https://savannah.gnu.org/bugs/?60789>. + +2021-07-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Slightly refactor. Make the source code slightly more + accessible by using a `bool` type for a function's default + parameter used as a Boolean, and comment it at call sites where + the default is overridden. + + * src/roff/troff/token.h (get_name, get_long_name): Change type + of parameter from `int` to `bool` and default from 0 to `false`. + * src/roff/troff/input.cpp (do_get_long_name) + (empty_name_warning, get_name, get_long_name): Change type of + parameter from `int` to `bool` in declarations and definitions. + * src/roff/troff/column.cpp (column_justify): + * src/roff/troff/div.cpp (diversion_trap): + * src/roff/troff/env.cpp (environment_switch, environment_copy) + (do_input_trap, set_hyphenation_language) + (do_hyphenation_patterns_file): + * src/roff/troff/input.cpp (define_color, composite_request) + (do_define_string, do_define_macro, rename_macro, alias_macro) + (chop_macro, do_string_case_transform, substring_request) + (length_request, asciify_macro, unformat_macro, do_register) + (device_macro_request, do_if_request, do_source) + (ps_bbox_request, do_open, close_request, do_write_request) + (write_macro_request, define_class, copy_file, vjustify) + (transparent_file, do_macro_source): + * src/roff/troff/node.cpp (font_translate, font_position, style) + (get_fontno): + * src/roff/troff/reg.cpp (define_number_reg, inline_define_reg) + (alter_format, alias_reg, rename_reg): Update call sites. Add + (comment indicating meaning of parameter. + + Do similarly for token::delimiter() member function. + + * src/roff/troff/token.h (token::delimiter): Change type of + parameter from `int` to `bool`, name from `warn` to `err` (to + match definition and behavior in input.cpp) and default from 0 + to `false`. + * src/roff/troff/input.cpp (token::delimiter): Change type of + parameter from `int` to `bool` in definition. + * src/roff/troff/input.cpp (do_expr_test, get_delim_number) + (get_line_arg, read_size, do_register, read_draw_node): + * src/roff/troff/reg.cpp (inline_define_reg): Update call sites. + Add comment indicating meaning of parameter. + +2021-07-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (an-footer): Remove string + `an-outer-footer-text` after we're done with it. + +2021-07-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + Remove the stripper script and its vestiges. + + * contrib/hdtbl/hdmisc.tmac: + * contrib/hdtbl/hdtbl.tmac: + * contrib/mom/om.tmac: + * tmac/doc.tmac: + * tmac/e.tmac: + * tmac/mdoc/doc-common: + * tmac/mdoc/doc-ditroff: + * tmac/mdoc/doc-nroff: + * tmac/mdoc/doc-syms: Remove `%beginstrip` comment. + + * tmac/strip.sed: Delete. + + * tmac/tmac.am (EXTRA_DIST): Stop shipping `strip.sed`. + + Fixes <https://savannah.gnu.org/bugs/?55091>. + +2021-07-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + Skip the stripper, part 3/3 (mdoc). + + * tmac/doc-old.tmac-u: + * tmac/doc.tmac-u: + * tmac/mdoc/doc-common-u: + * tmac/mdoc/doc-ditroff-u: + * tmac/mdoc/doc-nroff-u: + * tmac/mdoc/doc-syms-u: Rename these... + + * tmac/doc-old.tmac: + * tmac/doc.tmac: + * tmac/mdoc/doc-common: + * tmac/mdoc/doc-ditroff: + * tmac/mdoc/doc-nroff: + * tmac/mdoc/doc-syms: ...to these. + + * tmac/tmac.am (TMACNORMALFILES): Add `doc-old.tmac` and + `doc.tmac`. + (TMACUNSTRIPFILES, TMACSTRIPFILES): Delete variables. + (dist_tmac_DATA): Drop `$(TMACUNSTRIPFILES)`. + (nodist_tmac_DATA): Drop `$(TMACSTRIPFILES)`. + (TMACMDOCSTRIPFILES): Rename... + (TMACMDOCFILES): ...to this. + (nodist_mdoc_DATA, MOSTLYCLEANFILES): Reflect above rename. + (nodist_mdoc_DATA): Rename... + (dist_mdoc_DATA): ...to this. + (TMACMDOCUNSTRIPFILES): Delete variable. + (EXTRA_DIST): Drop `$(TMACMDOCUNSTRIPFILES)`. + ($(TMACSTRIPFILES), $(TMACMDOCSTRIPFILES)): Drop targets. + + The portions above are based on a patch by Ingo Schwarze. + + * tmac/doc.tmac: + * tmac/mdoc/doc-common: + * tmac/mdoc/doc-ditroff: + * tmac/mdoc/doc-nroff: + * tmac/mdoc/doc-syms: Bracket macro definitions tightly with + `eo` and `ec` requests since they were written under this + assumption. The files in general were also drafted under the + assumption that they'd be stripped, so `eo` was in effect for + broad swaths of the file including portions outside of any macro + definition where comments were used. But comments are expressed + using the escape character! So we got warnings about an + undefined '\"' macro, and that was just the beginning of a + wrecking ball of trouble that smashed through the + implementation. Some--but not all--string definitions (and + appendments) needed to be bracketed with `eo` and `ec` as well, + to delay interpolation of embedded string names that are not + defined until macros interpolate them later. I did what + appeared necessary to pass our tests and keep -Tutf8 and -Tps + renderings of tmac/groff_mdoc.7 from changing from their + strip-influenced output. Subtle bugs might linger, but some + won't be the fault of the unstripping process. (For instance, + try provoking a usage message on the `Hf` macro.) + +2021-07-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man pages]: Remove compatibility save register. + + * **/*.man*: Remove page-local compatibility save register after + using it. + +2021-07-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tmac]: Simplify `mso` requests. + + * tmac/X.tmac: + * tmac/Xps.tmac: + * tmac/dvi.tmac: + * tmac/html.tmac: + * tmac/lbp.tmac: + * tmac/lj4.tmac: + * tmac/ps.tmac: + * tmac/tty-char.tmac: + * tmac/tty.tmac: + * tmac/www.tmac.in: Move `mso` requests to be inside regions + where compatibility mode is turned off. I believe they were + placed where they were because things didn't work when the + compatibility mode register being saved was .C, rather than the + .cp register introduced in commit 6a37bb5f, 17 April 2020. Now + the logic is less mysterious. Also, remove the register used to + save compatibility mode after we're done with it, to reduce name + space clutter. + +2021-07-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/it.tmac: Drop sourcing of `latin1.tmac` and set up of + hyphenation codes; since the `hyphen.it` file is pure ASCII, we + don't need to expect Latin-1-encoded code points in it. + +2021-07-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tmac]: Make localization files work in compatibility mode. + + * tmac/cs.tmac: + * tmac/de.tmac: + * tmac/en.tmac: + * tmac/fr.tmac: + * tmac/it.tmac: + * tmac/ja.tmac: + * tmac/sv.tmac: + * tmac/zh.tmac: Save and restore compatibility mode. + + * tmac/den.tmac: Invoke requests with `do`. + + Fixes <https://savannah.gnu.org/bugs/?60874>. Thanks to Bjarni + Ingi Gislason for the report. + +2021-07-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + Add regression test for Savannah #60874. + + * src/roff/groff/tests/initialization_is_quiet.sh: Test it. + * src/roff/groff/groff.am (groff_TESTS): Run test. + +2021-07-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + Integrate Italian localization. + + * NEWS: Add item. Update an existing list of localization macro + files. + * doc/groff.texi (Manipulating Hyphenation): Update table of + hyphenation pattern left and right minimums and list of + available localization files to include Italian. + * man/groff_tmac.5.man: Update list of available localization + files to include Italian. + * src/roff/groff/tests/localization_works.sh: Test it. + * tmac/tmac.am (TMACNORMALFILES): Add `it.tmac` and `hyphen.it`. + + Fixes <https://savannah.gnu.org/bugs/?60828>. + +2021-07-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tmac]: Flesh out Italian localization. + + * tmac/hyphen.it: Add hyphenation patterns from TeX hyph-utf8 + project. + * tmac/it.tmac: + - Revise copyright date to just this year (it had been copied + from fr.tmac). + - Use grave accents instead of acute ones to indicate stress + on word-final vowels. Per the University of Wikipedia and a + sampling of apparently well-typeset Italian language + documents online, this appears to be correct. Yell at me if + I'm wrong. + - Source latin1.tmac instead of latin9.tmac; Italian doesn't + require any letter code points from Latin-9, unlike the + French file upon which this one was based, and Latin-1 is + less of a pain to work with. + - Set the hyphenation mode to 1 instead of 4 for congruence + with the requirements of the hyphenation patterns. + - Set up hyphenation codes. This (and sourcing latin1.tmac) + might not be necessary as the hyphenation pattern file, of a + more recent vintage than the others we're using, is pure + ASCII. However I don't understand these issues perfectly so + I am making the conservative choice. Again per the + University of Wikipedia, Italian requires only acute and + grave accents, in contrast to the rich French diacritical + bouillabaisse. + - Set the hyphenation language and load the pattern file. + - Add comments in parallel with other localization files and + to supply text editors with hints. + +2021-07-02 Edmond Orignac <edmond.orignac@wanadoo.fr> + + * tmac/it.tmac: Add Italian localization. + +2021-07-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + Skip the stripper, part 1/3 ("me"). + + * tmac/e.tmac-u: Rename to... + * tmac/e.tmac: ...this. + + * tmac/tmac.am (TMACNORMALFILES): Add tmac/e.tmac. + (TMACUNSTRIPFILES): Remove tmac/e.tmac-u. + (TMACSTRIPFILES): Remove tmac/e.tmac. + + Fixes one third of <https://savannah.gnu.org/bugs/?55091>. + +2021-07-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/grog/grog.pl: Simplify parsing. Dave Kemper pointed + out that preprocessors like pic(1) use pretty unsophisticated + *roff parsing to determine where to perform their textual + replacements. My enhancements to support input line + continuation and cope with brace escapes were thus + overengineered. Remove them. + - Drop scalars `is_continued_line` and `logical_line`. + (do_line): Stop performing logical line concatenation and + detecting input line continuation. Perform operations on + `line` instead of `logical_line`. Stop removing brace + escapes. + * src/utils/grog/grog.1.man (Limitations): Update discussion. + + Fixes <https://savannah.gnu.org/bugs/?60862>. Thanks, Dave! + +2021-06-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/reg.cpp (lookup_number_reg, alias_reg): In + diagnostic messages, say simply "register" instead of "number + register" (there is no other kind). + +2021-06-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grog]: Refactor input parsing. + + * src/utils/grog/grog.pl: + - Add scalar `use_compatibility_mode` (see below). + - Add list `request` to store the names of all requests + recognized by groff so that they aren't confused with macro + names. + - Add scalars `have_seen_first_macro_call` (replaces + `before_first_command`, but at global scope), + `is_continued_line` and `logical_line`. The latter two + enable us to handle *roff input line continuation correctly. + (process_arguments): Set `use_compatibility_mode` if `-C` + option specified. + (process_input): Refactor to greatly simplify, to not attempt + to read the first line of an input file as a special case, and + to avoid sending `do_line` an undefined argument (when EOF is + reached). + (do_first_line): Delete. + (do_line): Rewrite the early stages of input parsing. + - Concatenate continued input lines, setting + `is_continued_line` and returning early as each one is seen, + storing the accumulating input in `logical_line`. + - Check the input line for the form of comment deposited by + Perl's Pod::Man, which uses a highly accented dialect of + man(7); if it's present, inflate `man_score` to compensate + for the page-private `IX` macro it defines but which + duplicates the name and function of a 4.2BSD-era ms(7) + extension that would otherwise deceive our scoring + mechanism, because Pod::Man produces `IX` calls to + metastatic excess. (An alternative to this kludge is + documented in comments: if a "standard" macro is redefined, + we could delete it from the relevant lists and hashes.) + - Strip *roff comments from input. + - Normalize control lines; convert the no-break control + character to the regular one and remove unnecessary + white space. + - Remove brace escapes. + - Recognize two-character macro calls when not followed by + white space in compatibility mode. + - Drop logic that erroneously attempted to infer soelim(1) use + from macro calls and request invocations. The grog(1) and + soelim(1) man pages now both explain why such an effort was + misguided. + - Recognize macro definitions created by .am and .am1 requests + {not just .de and .de1}. + - Ignore all other *roff requests. + - What remains must be a ("standard") macro call, so set + `have_seen_first_macro_call`. + + * src/utils/grog/grog.1.man (Limitations): Document a further + restriction: don't change the escape character, either. + + * src/utils/grog/tests/smoke-test.sh: Comment out pic-detection + test on soelim(1). The pic macro calls are guarded by roff + control structures and only worked previously by accident + because grog did not recognize *roff input line continuation, + now it does and the illusion is dispelled. (A reliable way to + fool grog before and after my refactoring is now documented in + its man page.) + + Fixes <https://savannah.gnu.org/bugs/?59622>. + +2021-06-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + Add regression test for Savannah #59622. + + * src/utils/grog/tests/recognize-perl-pod.sh: Test it. + * src/utils/grog/grog.am (grog_TESTS): Run test. + +2021-06-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/grog/grog.1.man (Limitations): Document further + restrictions (no changing of control characters, control + structures not interpreted). + +2021-06-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grog]: Refactor command-line argument handling. + + * src/utils/grog/grog.pl: + - Drop scalars `groff_opts`, `device`, and `with_warnings`. + - Move scalar `pdf_with_ligatures`... + (process_arguments): ...here. Recognize all groff options + that take an optionally whitespace-separated option argument + and apply the existing "delayed option" handling to them. + Push any groff option except `-m` as-is onto the constructed + groff command's argument list (`-m` handling is unchanged). + Match long option names exactly, not sloppily. Stop + recognizing `--warnings` option. Emit error diagnostic if + unrecognized long option encountered. + (infer_device): Delete subroutine and its top-level call site. + (help): Undocument `--warnings`. + + * src/utils/grog/grog.1.man: + (Synopsis): Use font style macros instead of .OP. Undocument + `--warnings`. + (Options): Note that the groff arguments produced by the grog + `--ligatures` option are supported only by the `pdf` device. + Undocument `--warnings`. Undocument groff-incompatible + restriction on whitespace before option arguments; grog is + compatible now. Simplify discussion in light of simplified + grog logic. + (Details): Undocument scenario where grog infers multiple + main/major/full-service macro packages; this no longer + happens. + (Examples): Update to no longer illustrate inclusion of `-T + ps` option; this no longer happens by default. + + * NEWS: Document removal of grog's `--warnings` option. + + Fixes <https://savannah.gnu.org/bugs/?57873>; groff options are + no longer "mangled". + +2021-06-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + Add regression test for Savannah #57873. + + * src/utils/grog/tests/preserve-groff-options.sh: Test it. + * src/utils/grog/grog.am (grog_TESTS): Run test. + +2021-06-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grog]: Refactor device (`-T` option) handling. + + * src/utils/grog/grog.pl: Redeclare `device` as a scalar instead + of a list. + (process_arguments): Generalize handling of `-T` and `-m` + options to permit optional whitespace. Rename scalar `was_T` to + `delayed_option`. + (infer_device): Stop unconditionally adding a `-T ps` argument + to the generated groff command. Remove logic that validates any + given `-T` option argument; instead, let groff fail if a bad one + is supplied (its own diagnostics in this scenario were improved + in commit 5a721a30, 27 May). This makes grog agnostic about any + differently configured default device in groff itself, and about + the GROFF_TYPESETTER environment variable. + + Fixes <https://savannah.gnu.org/bugs/?55301> by getting out of + the way. + + * src/utils/grog/tests/PF-does-not-start-pic-region.sh: + * src/utils/grog/tests/smoke-test.sh: Update expected output. + +2021-06-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/grog/grog.am (grog): Drop sed replacement of unused + configuration variables @g@, @BINDIR@, @libdir@, and @EGREP@. + * src/utils/grog/grog.pl (process_arguments, construct_command): + Tweak warning diagnostics to use a style where an empty argument + will be easy to spot. + (do_first_line): Stop emitting pseudo-diagnostic (to standard + output!) if we see a "groff options line" [it's not] of + incorrect form. The preprocessor encoding hint convention of + concern here is particular to man pages, disregarded by at least + one major implementation thereof (man-db man), and not used by + other types of roff documents; at this point, we don't yet know + if the document we're processing is a man page. + (construct_command): Correct comment and related logic error. + Clear the inferred main macro package if _any_ `-m` argument + matching any main macro package is given. Warn only if what is + specified doesn't match the inference. + +2021-06-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grog]: Heavily refactor. + + * src/utils/grog/grog.pl: + - Drop import of unused module `Data::Dumper`. + - Drop unused scalars `Sp` and `correct_tmac`. + - Simplify determination of version number. Drop hash `at_at` + which only stored one key, `GROFF_VERSION`. Initialize + scalar `groff_version` to "DEVELOPMENT". Rename scalar + `before_make` to `in_source_tree` and initialize to zero. + Update `groff_version` with Automake-determined version + variable if it is defined (i.e., grog is not running outside + of, or in an unbuilt, groff source or binary distribution). + - Drop unused `Mparams` list. Replace it with new list + `requested_package`, which stores the arguments to any grog + `-m` options specified by the user. + - Rename many objects so that I, and others, can better + comprehend their purpose, and for consistent letter casing. + . @Command -> @command + . @devices -> @device + . $Prog -> $program_name + . %macros -> %user_macro + . $have_any_valid_args -> $have_any_valid_arguments + . &handle_args -> &process_arguments + . &handle_whole_files -> &process_input + . @preprograms -> @preprocessor + . &make_groff_device -> &infer_device + . &make_groff_preproc -> &infer_preprocessors + . &make_groff_tmac_others -> &infer_macro_packages + . &make_groff_tmac_man_ms -> &infer_man_or_ms_package + . &make_groff_line_rest -> &construct_command + - Drop many unused keys in `Groff` hash. + - Add new lists, `macro_ms`, `macro_man`, and + `macro_man_or_ms` to support new scoring technique to + disambiguate input documents between these two packages. + - Append the foregoing 3 lists to new list `standard_macro`, + and add these as keys to the `Groff` hash. + - Add new list `main_package` to keep track of full-service + package names. + - Add new scalars `man_score`, `ms_score`, and + `inside_tbl_table` to aid disambiguation of .TH macro calls + and the many macro names shared between man(7) and ms(7). + (process_arguments): Strip '-m' off of argument before storing + the remainder in `@requested_package`. + (do_line): Detect .TH macro call even if white space occurs + between the control character and the macro name. + (do_line): Inflate `$man_score` by 100 if .TH is the first + macro call seen in a document. + (do_line): Fix bug; clear `$before_first_command` in correct + scope--after any macro call, not just if we saw a .TH as the + first macro call. + (do_line): Set `$inside_tbl_table` when we see a .TS call. + (do_line): Clear `$inside_tbl_table` when we see a .TE call. + Also increment `$Groff{'tbl')' again, increasing the "score" + of tbl(1) usage evidence. + (do_line): Drop a lot of code that manually increments %Groff + keys corresponding to man and ms macros. This is now done + differently and elsewhere. + (do_line): Drop "P" from list of characteristic mm(7) macros. + (do_line): Simplify matching of mom(7) macros (match $command, + not $line). Extend list of characteristic mom(7) macros. + (do_line): Increment $Groff{$key} if $key is in + @standard_macro. + (infer_man_or_ms_package): Rewrite. Compute a score for each + package by counting occurrences of their characteristic + macros. If both have a score of zero, assume that the input + is a raw roff document. If the scores are equal + {doc/webpage.ms, startlingly, comes within 1 point of a tied + score}, infer ms(7) if 'TH' was never called, and if it was, + issue a diagnostic advising user to supply a disambiguating + `-m` option. Otherwise, the scores are unequal: infer the + package of the winner. Set scalar `inferred_main_package` + instead of pushing `-m` options onto `@m`. + (infer_macro_packages): Set scalar `inferred_main_package` + instead of pushing `-m` options onto `@m`. Explicitly return + 0 if we fall off the end of the function. + (construct_command): Rewrite handling of -m options. Add new + list `msupp` to store supplementary (non-main) macro package + arguments. If a full-service package was explicitly + requested, it had better not clash with what we inferred. If + it does, explicitly unset `inferred_main_package` so that the + -m arguments are placed in the same order that the user gave + them; caveat dictator. If `--run` option was given, just + print the command; don't preface it with __FILE__ and __LINE__ + noise. + - Remove comments documenting shared variables used by + subroutines. These are far from useless but too tedious to + keep up to date while the code is in flux. + - Note several places for further code review or refactoring + with "XXX" comments. + - Add Vim modeline. + + grog now passes all its tests and correctly infers arguments for + all in-tree groff documents (except for a known, and already + documented in grog(1), false positive detection of soelim in + soelim(1)). This refactor also obviates or resolves several + outstanding Savannah tickets. + + Fixes <https://savannah.gnu.org/bugs/?44707> by obviating it; + grog no longer cares about file name extensions on man pages (or + any other input). + + Fixes <https://savannah.gnu.org/bugs/?55302>; same. The quality + of diagnostic messages has been improved as well. + + Fixes <https://savannah.gnu.org/bugs/?59753>; same. + + Fixes <https://savannah.gnu.org/bugs/?59664>. The attached + patch was a less aggressive refactor of &do_line and %Groff. + Its author made the following claim for it: "With this patch, + all 'man', 'me', 'mom, and 'ms' files in the repository are + correctly identified. The only example of a 'mm'-file is + "letter.mm", which is not recognized correctly." As noted + above, the present refactor achieves correct recognition of all + of the files, including letter.mm. + +2021-06-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/grog/tests/smoke-test.sh: Perform whole-line + matches. Apply DRY principle to expected output. In + anticipation of pending changes to grog.pl, uncomment and add + tests for several in-tree documents. + doc/meref.me + contrib/mom/examples/copyright-chapter.mom + contrib/mom/examples/copyright-default.mom + 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/slide-demo.mom + contrib/mom/examples/typesetting.mom + doc/webpage.ms + +2021-06-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grog]: Refactor. Discard filename extension-based inference. + + * src/utils/grog/grog.pl (do_line): Stop saving the control + character in the matched scalar `command` (the request or macro + name). We don't need it, and it simplifies much later matching. + (handle_file_ext): Delete. + (top level): Drop call site. + + * src/utils/grog/grog.pl: Rename `tmac_ext` scalar to + `inferred_main_package`. + +2021-06-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/grog/grog.pl (handle_args): Complain less noisily + and more comprehensibly when given unrecognized groff options. + +2021-06-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grog]: Handle "--" argument as documented. + + * src/utils/grog/grog.pl (handle_args): Rename scalar + `double_minus` to `no_more_options` so it actually communicates + something. Drop openability check of operand encountered after + "--"; since it's on the operand list, it will be checked later + {in `handle_whole_files`}. Stop pushing "--" itself onto the + `filespec` list. + + Fixes <https://savannah.gnu.org/bugs/?60834>. + +2021-06-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grog]: Revise operand handling, diagnostics, and exit status. + + * src/utils/grog/grog.pl: Track more state so that we can + process the argument list more intelligently and exit with a + meaningful status. Add `had_inference_problem`, + `had_processing_problem`, and `have_any_valid_args` Boolean + scalars. + (fail): Add diagnostic subroutine for serious problems; sets + `had_processing_problem`. + (handle_args, handle_file_ext): Stop complaining here about + unopenable file operands. + (handle_whole_files): Complain only here, with `fail` if a file + operand cannot be opened. + (make_groff_line_rest): Don't exit immediately if there is a + macro package inference clash, because there might be more + operands to process. Instead, set `had_inference_problem`. + Stop exiting from this subroutine. + (top level): Only call the inference subroutines if we had a + valid operand to work with (including an implicit read from + stdin). Exit with a status corresponding to the Booleans + declared above. + + * src/utils/grog/grog.1.man (Exit status): Add section; describe + semantics of exit status values. + + Fixes <https://savannah.gnu.org/bugs/?60833>. + +2021-06-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grog]: Revise diagnostic messages. + + * src/utils/grog/grog.1.man (err): Rename from this... + (warn): ...to this. Prefix diagnostic with command name and + diagnostic severity level. The subroutine didn't change the + exit status and was not used to report serious trouble, so + "warning" seems appropriate. + (make_groff_tmac_man_ms): Update call sites. Modify diagnostic + wording to stop calling macros "requests". + +2021-06-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/grog/grog.1.man (Limitations): Add subsection + covering the problem grog has with soelim inference. Undocument + groff's -s option as one that can be inferred, because at + present it cannot be. + + Prompted by Savannah #60421. + +2021-06-26 Dave Kemper <saint.snit@gmail.com> + + [grog]: Fix erroneous detection of pic(1) usage. + + Fixes <https://savannah.gnu.org/bugs/?60772>. + +2021-06-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/grog/tests/PF-does-not-start-pic-region.sh: + Regression-test Savannah #60772. + * src/utils/grog/grog.am (grog_TESTS): Run test. + +2021-06-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grog]: Add smoke test. + + * src/utils/grog/tests/smoke-test.sh: Add test. + * src/utils/grog/grog.am (grog_TESTS): Run it. + (TESTS): Add `grog_TESTS`. + (EXTRA_DIST): Ship test. + +2021-06-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grog]: Relocate in source tree. + + * src/roff/grog: Move from here... + * src/utils/grog: ...to here. + + * MANIFEST: + * Makefile.am: + * src/utils/grog/grog.am: Reflect move. + + Fixes <https://savannah.gnu.org/bugs/?60788>. + +2021-06-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Assigning Formats): Revise discussion. + Clarify that a format never causes truncation of an interpolated + magnitude. Note that non-Arabic number formats cannot be used + as operands to arithmetic expressions. Add example of how to + work around this. + +2021-06-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Clarify diagnostics. + + * src/roff/troff/reg.cpp (reg::set_increment): Update diagnostic + to unabbreviate "auto". + (reg::alter_format): Update diagnostic to say "assign" instead + of "alter", since the documentation consistently uses the former + term. + +2021-06-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + [troff]: Slightly refactor. Make the source code slightly more + accessible by using a `bool` type for a member function's + default parameter used as a Boolean, and comment it at call + sites where the default is overridden. + + * src/roff/troff/token.h (token::get_char): Change type of + parameter from `int` to `bool` and default from 0 to `false`. + * src/roff/troff/input.cpp (token::get_char): Update definition. + * src/roff/troff/env.cpp (hyphen_word): + * src/roff/troff/node.cpp (remove_font_special_character): + * src/roff/troff/input.cpp (do_overstrike, do_bracket, next) + (do_define_character, remove_character, get_line_arg) + (encode_char, do_if_request, do_translate, char_flags) + (hyphenation_code, define_class): Update call sites. Add + comment indicating meaning of parameter. + +2021-06-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (TH): When outputting HTML, write the + possibly case-transformed (but not yet abbreviated) page title + as the `title` element instead of the unaltered first argument + to `TH`. + +2021-06-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (an-abbreviate-title): Define with `de`, not + `de1`, since it is not intended for call by traps or users. + +2021-06-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Tab Stops): Fix erroneous claim; tab stops are + not set "every half inch across the page". This is only true in + "line tabs mode", which is not enabled by default. The default + behavior, to keep compatibility with AT&T troff, measures tab + stops relative to the current position on the input line. + +2021-06-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-nroff-u: Set the usekeeps register used by tbl + to the logical complement of the cR (continuous rendering) + register. This prevents blank lines from creeping into tables + in that mode. + +2021-06-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (an-blank-line-trap, an-leading-space-trap): + We say in a comment, "Macros ... that are called by traps of any + kind must be defined with `de1` because they might be called + from a context where compatibility mode is enabled." So do it. + +2021-06-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (an-header): Lightly refactor; tighten. + +2021-06-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (an-write-paragraph-tag): Lightly refactor + for clarity and to reduce code duplicated in both branches of an + `ie`/`el` structure. + +2021-06-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac: Rename `an-HF-remap-I-style` register to + `an-remap-I-style-in-headings` for greater clarity. + +2021-06-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-common-u (doc-header, doc-end-macro): Partially + revert bf4b3dde (from 20 May); per Ingo Schwarze, continuous + rendering in mdoc(7) documents has always used only one vee + between headers, footers, and man page body text. + +2021-06-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/en.tmac: Stop using `do` request; it's unnecessary since + the file is already loaded with compatibility mode off. + +2021-06-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Fix doc omission; .ID can take an argument. + + * doc/groff.texi (ms Document Control Settings) <DI>: + Characterize register setting as a _default_. + (ms Displays and Keeps): Add optional variable "indent" argument + to syntax summary of ".DS I" and ".ID". Note that the given + indentation is used if present, and \n[DI] otherwise. + * doc/ms.ms (Displays and keeps): Add optional variable "indent" + argument to syntax summary of ".ID". Switch fonts more + carefully and apply italic corrections. + * tmac/groff_ms.7.man (Displays and keeps): Sync with doc/ms.ms. + +2021-06-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac: Properly situate devtag flag-related register + names in the package name space. Rename `need_eo_h` to + `s@devtag-needs-end-of-heading'. Rename `need_eo_tl` to + `s@devtag-needs-end-of-title`. + ((initialization), par@reset, @SH, par@finish, @NH): Do it. + (par@reset): Test their values more idiomatically. + + Fixes last third of <https://savannah.gnu.org/bugs/?42515>. + +2021-06-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac-u (@h): Migrate SCCS revision 2.37 to be idiomatic + for groff (and not throw warnings of type 'mac'). + +2021-06-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am: Improve diagnostics during documentation + generation; none should occur normally, but when they do, seeing + troff complain about "<standard input>" is disheartening. + (DOC_GROFF_ONLY): Add -b option so we get backtraces (also kill + off trailing whitespace). + (DOC_GROFF): + (doc/pic.html): + (doc/webpage.html): Add sed expression to inject `lf` request + into the stream to identify the file being processed. + +2021-06-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/me-revisions: Supplement history with subsequent BSD work + from versions 2.29 (1988-04-22) to 8.1 (1993-06-05). + +2021-06-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/me-revisions: Add 'me' macro package revision log, scraped + from <https://svnweb.freebsd.org/csrg/share/me/revisions>. + * doc/doc.am (DOCFILES): Ship it. + +2021-06-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac-u: Rename registers for clarity. Unlike other + macro packages supplied by groff, "me" mostly remains within the + AT&T 2-character name space, accessing extended names + selectively through `do` and `de1` requests. The package + therefore has no characteristic name prefix. + need_eo_h -> devtag-needs-end-of-heading + need_eo_tl -> devtag-needs-end-of-title + need_tl -> devtag-needs-title + (@html_check_need_title, sh, EQ): The foregoing registers are + effectively Booleans, so perform Boolean-style tests on their + interpolations. + + Fixes a second third of <https://savannah.gnu.org/bugs/?42515>. + +2021-06-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/e.tmac-u: Work in compatibility mode. It seems this was + the intention (reasonable, since "me" originates in pre-groff + BSD Unix), but there were several problems. + (@R): Prefix register existence test with `do`. + (@html_check_need_title): Define with `do` since the macro name + is long, and also with `de1` so that we can freely use groff + extensions within. Drop many `do` requests from macro + definition. + (@check_need_title): Define with `do`, as above. Add comment + explaining why `de1` is not needed for this macro definition. + (@S): Prefix macro/string existence test with `do`. Remove + spurious space so that the argument string name is truly defined + as empty. + (nm, n1, n2): Prefix handling of long register names `_#p` and + `_#f` with `do` request. + (top level): Prefix `mso` request with `do`. + ((x-html): Define with `do` and `de1` instead of `de`. Drop + now-unnecessary `do` requests from macro body. + ()x-html): Define with `do` and `de1` instead of `de` for + symmetry. + (xp-html): Define with `do` and `de1` instead of `de`. Drop + now-unnecessary `do` requests from macro body. + + Fixes <https://savannah.gnu.org/bugs/?60785>. + +2021-06-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/devtag.tmac: Work in compatibility mode; define macros + with the `de1` instead of the `de` request. + +2021-06-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/refer-me.tmac: + * tmac/refer.tmac: Add include guards. + +2021-06-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/refer-me.tmac: Handle being loaded in compatibility mode. + +2021-06-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac: Properly situate devtag flag-related + register names in the package name space. Rename `need_eo_h` to + `an-devtag-needs-end-of-heading'. Rename `need_col2` to + `an-devtag-needs-second-column`. + (an-input-trap, SH, SS, HP, (initialization)): Do it. + (an-input-trap): Test their values more idiomatically. + + Fixes one third of <https://savannah.gnu.org/bugs/?42515>. + +2021-06-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (do_if_request): Improve diagnostic + message; say "conditional operator", not just "conditional". + +2021-06-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (an-end, an-header): In continuous rendering + mode, use same spacing amount after header and before footer as + mdoc in its own continuous rendering mode. Thanks to Ingo + Schwarze for the suggestion. + + Fixes <https://savannah.gnu.org/bugs/?60653>. + +2021-06-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (P): Define this as the "canonical" + paragraphing macro. + (LP, PP): Make these aliases of P. + +2021-06-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (spring_trap): Tighten lexical + discipline; describe macro as "trap-called" rather than + "trap-invoked". + +2021-06-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Don't spuriously break a page after a paragraph tag when + the tag is short enough to fit within the paragraph's + indentation. + + * tmac/an-old.tmac (an-write-paragraph-tag): Reserve ("need") 2 + vees plus 1 basic unit of vertical space regardless of the width + of the tag. In the short tag case, we reverse space by one vee + after outputting the diversion in which the tag is stored, but + it will always contain a break, and by the time we reverse, we + might have already hit a page location trap + {an-break-body-text}, and by then it's too late to back up. + + * tmac/tests/an-old_no-break-after-short-paragraph-tags.sh: Test + it. + * tmac/tmac.am (tmac_TESTS): Run test. + + Fixes <https://savannah.gnu.org/bugs/?60624>. + +2021-06-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac: Rename environments to be more descriptive. + an-env -> an-env-header-or-footer + an-2 -> an-env-paragraph-tag + (an-header, an-footer, an-write-paragraph-tag): Do it. + +2021-06-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac: Add diagnostic error if .EQ used within .TS/.TE. + Introduce register `tbl@within-table` to track whether we're + inside a table. + (@EQ): Check register and issue error if it is true. + (@TS): Set register. + (@TE): Clear register. + + Prompted by Savannah #55754. + +2021-06-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac: Permit document to start with .PS. + (cov*ab-init): Alias PS to @PS. + (PS): Call LP, then re-execute (aliased) self as TS does. + (TS): Update comment to parallel the one in PS. + +2021-06-11 Tadziu Hoffmann <hoffmann@usm.uni-muenchen.de> + + Indent an IP paragraph based on the type size of the paragraph + text, not a preceding heading. We have to delay evaluating IP's + argument until the font size has been reset, which I've + attempted to do by simply passing the argument unevaluated down + the call hierarchy, instead of saving it in a number register + right away, as appears customary in this ms implementation. + + However, par@reset is called from a great number of places, and + these usually set the indent registers beforehand. I've left + this as it is, so now two ways of setting the indents exist: via + register and optionally via argument. + + * tmac/s.tmac (par@reset): Move font-size setting stuff before + indent-setting stuff; set registers from optional arguments with + default "n" scaling indicator before setting indents. + (par*start, par@finish): Don't set registers, but instead pass + arguments to par@reset. + (@IP): Pass argument unevaluated to par*start. + + Fixes <https://savannah.gnu.org/bugs/?59604>. + +2021-06-11 Tadziu Hoffmann <hoffmann@usm.uni-muenchen.de> + + * tmac/s.tmac (@QP, @XP): Be more scrupulous about using "u" + scaling indicator. + +2021-06-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + Add regression test for Savannah #59604. + + * tmac/tests/s_IP-indents-using-paragraph-type-size.sh: Add it. + * tmac/tmac.am (tmac_TEST): Run it. + +2021-06-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + Refactor grog even more aggressively. Make the tedious search + for subs.pl unnecessary by inlining it into grog.pl directly. + This makes the script stand alone and much more convenient to + work with, and doesn't contribute to bloat, in my + opinion--subs.pl was 10 times the size of grog.pl, and most of + the code in the latter was dedicated to trying to locate + subs.pl. + + * Makefile.am: Delete references to $(grog_dir). + * configure.ac: Delete call of `GROFF_GROGDIR_DEFAULT` macro. + * m4/groff.m4: Delete definition of same. + * src/roff/grog/grog.am (GROG, dist_grog_DATA, grogdir): Drop + variables. + (grog): Remove target's dependency on `$(GROG)`. Remove sed + expression replacing `@grog_dir@` with `$(grog_dir)` in grog.pl. + * src/roff/grog/grog.pl: Inline most of subs.pl (except for + author/license comment banner). Delete sub-hunting logic. + * src/roff/grog/subs.pl: Delete. + +2021-06-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/pic.ms (Basic PIC Concepts, Decorating Objects/Filled + Objects, PIC Reference/Semi-Formal Grammar): Fix error: the + keyword "solid" sets a line style, not a fill for a closed + figure. Thanks to Dave Kemper and Wim Stockman for reporting + and researching this issue. + + Fixes <https://savannah.gnu.org/bugs/?60470>. + +2021-06-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * NEWS: + * doc/webpage.ms: + * man/groff.7.man (Registers/Read-only registers) <.U>: + * man/groff_diff.7.man (Language/New number registers) <.U>: Fix + error; the sense of this Boolean variable was backwardly + documented {perhaps due to an implementation detail from 2004 + that was reversed in commit 7a0e2f15, 26 February 2008}. + +2021-06-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/groff.cpp: Revise usage message. + (synopsis): Set primary synopsis on a single output line, for + convenience of parsing and also because we have no control over + the width of the program name in character cells; it comes from + argv[0] and is under user control. There is thus no point in + trying to get pretty formatting. Also include separate synopsis + lines for short and long help options. Use opposite case from + option flags for option arguments. + (help): Collate option flags in English lexicographic order. + Include space after flag letters for options that take + arguments. Consistently use capitals for option arguments + because they are space-separated here. Illustrate longer forms + of -d and -r options. Update language (some, like "tmac.name", + was very old). Add reference to groff(1) man page at end. + (usage): Drop appendnment of notice regarding -h option; this is + now covered in `synopsis()` unconditionally. + +2021-06-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + Eliminate "groff_opts_no_arg.txt" and "groff_opts_with_arg.txt" + files from distribution. They are not needed by any live code + in the tree; possibly only groffer ever used them. + + * src/roff/groff/groff.am (GROFF_OPTS_OUTPUT, groffoptsdir) + (groffopts_DATA): Delete variables. + (MOSTLYCLEANFILES): Stop adding to target. + (groff_opts.tmp, groff_opts_no_arg.txt, + groff_opts_with_arg.txt): Delete targets. + +2021-06-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/grog/subs.pl (version): Report version information in + a format consistent with our other programs. + +2021-06-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/grog/grog.pl: Refactor initialization so that the + program can be run from a build tree--and tested. Drop much + cruft from before Bertrand Garrigues's 2018 work to adopt + `git-version-gen`. + +2021-06-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tests/an-old_title-abbreviation-works.sh: Log more + accurate messages in test failures. + +2021-06-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (an-abbreviate-title): Add new internal macro + to reduce the length of a man page title (i.e., the "ls" in + "ls(1)", if it is too wide to fit in the page header (and would + overwrite the center header material, usually the title of the + manual section). Since the beginning and end of the title might + be important for disambiguation, truncation at either end would + be unwise; replace the middle of the title with an ellipsis. + Define new an-pageref and an-title-abbv strings for use by other + macros and user-defined PT and BT traps. + (PT, an-footer): Use new an-pageref string for economy. + (an-header): Call an-abbreviate-title after setting the title + length. + + * tmac/tests/an-old_title-abbreviation-works.sh: Test it. + * tmac/tmac.am (tmac_TESTS): Run test. + + Fixes <https://savannah.gnu.org/bugs/?43532>. + +2021-06-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * man/groff.7.man (Copy mode): Add new section. + +2021-06-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (else_request, while_request) + (pipe_source, open_request, opena_request, pipe_output) + (system_request): Update diagnostic messages to not presume the + identities of the control or escape characters. + +2021-06-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Conventions Used in This Manual): Add node. + +2021-05-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/groff.1.man: Expand to aid beginners. + (initialization): Define `TeX` string. + (Usage): Rewrite. + (Usage/Getting started): Add "Hello, world!" example using + multiple output devices (formats). + (Usage/Using groff as a REPL): Add example of likely interest to + programmers. Or so I hope. It illustrates the Turing + fundamentals; we read, store, test, and branch. + +2021-05-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/papersize.tmac: Improve diagnostic message; when + complaining about unrecognized input, report back the input we + actually received, not what it looks like after we transform it. + Also add name of macro package to diagnostic so the user knows + who is speaking, continuing the long process of fixing Savannah + #52463. + +2021-05-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/groff_ms.7.man (Usage/Paragraphs) <QP>: Fix error: .QP + paragraphs are indented by \n[QI], not \n[PI]. + +2021-05-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/libs/libdriver/input.cpp (do_file): Make fatal diagnostic + from output driver when the device description file "DESC" can't + be found more informative by including the name of the device + for which the input was prepared. Also makes malformed input of + intermediate format more obvious. + +2021-05-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/tbl.1.man (Miscellaneous): Add paragraph + cautioning users against making tbl(1) tables conditional + document content. + +2021-05-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Add style warnings for documents with input lines that + are blank or have leading spaces, since they can cause + surprising rendering; enabled if the CHECKSTYLE register is + greater than 2. + + * tmac/an-old.tmac (an-blank-line-trap, an-leading-space-trap): + Issue style warning if enabled (and only if fill mode enabled in + leading space trap); in any event, recreate the default *roff + behavior. + (TH): Install traps. + + * doc/andoc.tmac (reload-doc): Remove man(7) traps before + loading doc.tmac. + +2021-05-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/andoc.tmac (reload-doc): Fix spurious blank line. + +2021-05-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Operators in Conditionals): + * man/groff.7.man (Control structures/Conditional expressions): + Fix omission; the conditional operators "F", "m", and "S" also + accept optional spaces and/or tabs between themselves and their + arguments. + +2021-05-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * man/groff.7.man (Requests/Request short reference) <.ta>: + Describe the request as tersely as possible without omitting its + essential syntax and semantics. (The AT&T troff "+" relative + prefix for normally absolute positions ".ta 1i +1i +1i" and + alignment-specifying suffixes "L", "R", and "C" had both been + omitted.) + +2021-05-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * man/groff.7.man (Registers/Writable registers): Fix error: + \n[nl] interpolates the current vertical position, not the + vertical position of the "last printed text baseline"; the + latter is \n[.h]. + +2021-05-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Manipulating Filling and Adjustment): Update + inter-sentence space example to be more illustrative. Thanks to + Dave Kemper and Doug McIlroy for the discussion. + + Fixes <https://savannah.gnu.org/bugs/?60404>. + +2021-05-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-common-u: Add comment warning source divers that + \n[doc-header-space] is re-used for a purpose for which it is + not documented. + * tmac/mdoc/doc-nroff-u: Initialize doc-{header,footer}-space + registers, which define the vertical spacing between body text + and the relevant titles (not between the titles and the page + margins) to 1v instead of 0.5i. This is what mdoc(7) has always + done in practice, per Ingo Schwarze. + +2021-05-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grohtml/post-html.cpp (assert_state::add): Avoid + potential deallocation of statically-allocated strings. Use + strsave() to duplicate them so that they can be safely handed to + a_delete(). Also update diagnostic message to report name of + complaining program (continuing the long process of fixing + Savannah #52463). + + Fixes <https://savannah.gnu.org/bugs/?55693>. Thanks to + Petru-Florin Mihancea for the report. + +2021-05-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/troffrc-end: Fix transposition error (in commit a248aa33 + on 15 January) that broke most table image generation in HTML + output. + + Fixes <https://savannah.gnu.org/bugs/?60656>. + +2021-05-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-ext.tmac (UE, ME): Replace calls to HTML-NS macro for + emissions of HTML 'A' tags with direct usage of \X device + control escapes. Replace .nop requests with text lines since + this file is supposed to be maximally portable to other *roffs. + +2021-05-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/html/pre-html.cpp (main): Call `scanArguments()` + earlier, before trying to load a font description, so that -v, + --version, and --help work. + +2021-05-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + [grohtml]: Add -C and -G options to postprocessor, to suppress + output of CreationDate and Creator HTML comments, respectively. + These can inject unwanted noise into build artifacts. + + * src/devices/grohtml/post-html.cpp: Add static globals + `do_write_creator_comment` and `do_write_date_comment`. + (html_printer::{do_file_components,~html_printer}): Write + comments per corresponding global variables. + (main): Add to `getopt_long()` call parameter and set as needed. + (usage): Document them. + + * src/preproc/html/pre-html.cpp (scanArguments): Add to + `getopt_long()` parameter, but ignore. + + * src/devices/grohtml/grohtml.1.man (Synopsis, Options): + Document them. + + * src/roff/groff/tests/output_driver_C_and_G_options_work.sh: + Test them. + * tmac/tmac.am (groff_TESTS): Run test. + + Fixes 1/3rd of <https://savannah.gnu.org/bugs/?60655>. + +2021-05-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/html/pre-html.cpp (usage): + * src/devices/grohtml/post-html.cpp (usage): Fix inaccuracies in + supported option summary. + +2021-05-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/html/pre-html.cpp (scanArguments): + * src/devices/grohtml/post-html.cpp (main): Use libgroff's + warning() instead of printf() to emit diagnostic about + unrecognized parameter to `-x` option. This sends the + diagnostic to the standard error stream and continues the long + process of fixing Savannah #52463. + +2021-05-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/groff_www.7.man: Stop using the "www" macro package. The + macros it exposes are not part of the quasi-standardized man(7) + language, and thus should not be used in man(7) documents. See + groff_man_style(7) for portability advice. Besides, the + extension macros in the permissively-licensed an-ext.tmac are + sufficient to support URL and email hyperlinks, and our SH and + SS macro implementations already support anchor placement + without requiring explicit effort from page authors. + (initialization): Stop sourcing www.tmac. Stop calling .LK and + .HR; the page-internal navigation links were being placed after + the apropos line instead of at the beginning of the page, + contradicting the comment that was there (possibly a bug). + (Requests) <URL, LK>: Stop calling .TAG. + <LK>: Drop paragraph advising reader to format page for groff's + HTML output device to observe the navigation links at that point + in the test. + +2021-05-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Comments): Fix error in description of parser + operation; '.\"' is an effective whole-line comment not because + it is a call of an undefined macro named '\"' (no 'mac' warning + is emitted when that warning type is enabled), but because the + comment escape is recognized normally and what remains is + handled as the empty request. Clarify that the optional + argument to the .ig request is the name of a macro (which will + be called normally _and_ end the ignored region; this is + analogous to ".de foo bar"). + +2021-05-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-ext.tmac (UR, UE, MT, ME): Rename environment and + diversion for clarity; they apply to the link text, not the URL + {or email address}. The latter might not visibly appear, + depending on the output driver. + +2021-05-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (TH): Remove extraneous right-brace escape. + + Fixes <https://savannah.gnu.org/bugs/?60651>. Thanks to Bjarni + Ingi Gislason for catching it. + +2021-05-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Copy Mode): Fix omissions from list of escape + sequences interpreted even in copy mode. Add \g, \V, "\.", + '\"', \#, \a, \e and \E (with caveat), and \t. Parallels + groff(7) now. Add cross reference to "Character Translations" + node. + +2021-05-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * man/groff.7.man (Escape Sequences): Fix omission; the escape + character in an unrecognized escape sequence is not merely + ignored; the sequence produces a warning diagnostic, albeit of a + type that is disabled by default. + (Escape Sequences/Escape short reference): Fix omissions; \# and + \V are interpreted even in copy mode. + +2021-05-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (an-header): Fix missing brace escape. + +2021-05-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Slightly refactor footer spacing management when + continuously rendering. + + * tmac/an-old.tmac (an-end): Increase the page length _after_ + flushing a pending output line. Do so only by the amount of + spacing we actually perform next. Make the scaling indicator on + the .sp request explicit. The amount seemed magical because it + was accounting for the one line to be consumed by output of the + footer title line. Instead, move that further increase of the + page length from here... + (an-footer): ...to here (~250 lines away), before calling BT. + +2021-05-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-common-u (doc-end-macro): When continuously + rendering and after flushing the last line of the body text of a + page, vertically space by 3 vees instead of 1, for consistency + with our man(7) implementation. Also increase page length by + same amount _after_ flushing a pending output line, for symmetry + with other spacing requests (and to prevent nasty surprises + analogous to those in Savannah #60611). + (doc-header): Put 3 vees of space after the header in continuous + rendering mode, not 1 (and increase page length accordingly). + +2021-05-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Add warnings for macros deprecated in groff_man(7), + emitted if the CHECKSTYLE register is greater than 1. + + * tmac/an-old.tmac (an-deprecation-warn): New macro emits + diagnostic. + (DT, PD): Call the foregoing, re-using arguments. + +2021-05-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac: Refactor to move bodies of DT and PD into + private macros. + (an-reset-tab-stops, an-reset-paragraph-spacing): New names for + the former DT and PT. + (TH): Call these new macro names. + (DT, PD): Wrap the corresponding private macros. + +2021-05-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (an-bp): In continuous rendering mode, draw + a horizontal line between a page footer of one man page document + and the header of the next, but only if multiple documents are + being rendered. + (initialization): Use variable to ensure we don't draw this line + after finishing the only document we render. + + Fixes other half of <https://savannah.gnu.org/bugs/?60611>. + +2021-05-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Fix stochastic vertical space loss problems in continuous + rendering mode by being more scrupulous about extending the page + length. As noted in Savannah #60611, sometimes the vertical + space between a header line and the first section heading + {"Name"} would be reduced or removed altogether, in a way that + was highly sensitive to circumstances. As far as I can tell, + the problem is that this vertical space disappeared only when we + were in double-secret probation no-space mode; this is the + special non-spacing mode {not apparent with inspection of + \n[.ns]} that happens when the stealth internal page location + trap is sprung. This trap does not appear in .ptr output but + can be disabled with ".vpt 0", which is an alternative fix for + this problem {because continuous rendering mode does not use + vertical position traps at all}. Another fix might have been to + simply call the moral equivalent of ".pl MAXINT" as soon as + continuous rendering mode was decided upon. + + * tmac/an-old.tmac (an-header): In continuous rendering mode, + extend the page length by one line before calling PT to output + the page header, and afterwards, extend the page length by 3 + vees and space by that amount (instead of half an inch). + + Fixes half of <https://savannah.gnu.org/bugs/?60611>. + +2021-05-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (an-header, an-footer): Drop no-op .tl + requests. + +2021-05-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (an-footer): Improve symmetry with an-header. + If rendering to HTML, don't bother setting the + an-outer-footer-text, an-extra1, and an-extra2 strings to empty + values; instead don't call BT, just as we don't call PT in + an-header. + +2021-05-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (an-end): Drop needless .nr % assignment. + Call our (wrapped) bp instead of the .pl request directly. + (an-bp): Drop needless .br and (aliased) real .bp request. + +2021-05-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (an-footer): Refactor complex conditional. + +2021-05-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tests/an-old_X-register-works.sh: Add test for footer + creeping into page content. + +2021-05-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (initialization): Ignore P and X rendering + parameter registers if specified with continuous rendering + enabled (the default in the nroff mode used for terminals), and + emit diagnostic. + +2021-05-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tests/an-old_X-register-works.sh: Rewrite. Increase test + coverage and stop assuming that -rcR=1 and -rX=anything is a + supported combination. (Continuous rendering is supposed to + suppress the printing of page numbers anyway.) + +2021-05-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (initialization): Refactor handling of P and + X rendering parameter register validation in preparation for + disabling them in continuous rendering mode, where they don't + make any sense. + +2021-05-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tests/an-old_TH-repairs-ad-damage.sh: Tweak test + internals to make troubleshooting easier. + +2021-05-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (TH): Relocate some initialization logic to + be adjacent to (most of) the rest of it. + +2021-05-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (TH): Remove useless .if. Its condition is + always true now in the wake of the fix for Savannah #60609. + +2021-05-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac: Rename many package macros, strings, and + registers (and the lone named environment) to be more expressive + of their function. "an-footer" is now the proper complement of + "an-header" (setting up an environment and calling a + user-redefinable trap macro). + an-first -> an-is-first-page-of-document + an-html -> an-is-output-html + an-footer -> an-break-body-text + an-p-footer -> an-footer + an-set-margin -> an-reset-margin-and-inset-level + an-level -> an-inset-level + an-tag-sep -> an-tag-separation + an-no-space-flag -> an-need-no-space-mode + an-break-flag -> an-need-break + an-div? -> an-is-in-diversion + an-page-string -> an-outer-footer-text + an-trap -> an-input-trap + an-do-tag -> an-write-paragraph-tag + an-1 -> an-env + + * tmac/andoc.tmac (reload-doc): ...as above for the exposed + parts of the interface. + an-footer -> an-break-body-text + an-p-footer -> an-footer + +2021-05-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac: Rearrange alternating font macros to be in + alphabetical order (and the order documented in groff_man(7). + +2021-05-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac: Refactor alternating font macros. These + macros are hard enough to understand without adding gratuitous + structural differences to the reader's burden. Make their + implementations rigidly parallel. Update comments. + (RI, IR, IB, BI, RB, BR): Always define the `an-result` string + as empty except for a dummy character '\&' for the sake of + compatibility mode. + (RI, IR, IB, BI): Defer interpolation of the first argument to + the while loop if there are at least two (like the existing RB, + BR). This way the style name arguments to the font selection + escape sequences in the appendment to `an-result` match the + order of the letters in the macro name (useful to make sense of + diffs). + (RI, IR, IB, BI, RB, BR): Always remove the `an-result` string + after interpolating it. + (RB, BR): Only do work if there are any arguments. + +2021-05-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Apply italic corrections more consistently. + + * tmac/an-old.tmac (BI, IB, IR, RI): Apply italic corrections + more consistently. Add lengthy comment rationalizing approach. + (RI, BI): An italic correction is now applied after the last + argument if it is of even parity (i.e., the 2nd, 4th, 6th, ...). + + * tmac/groff_man.7.man.in (Description/Font style macros): Note + that italic corrections are applied. + + Fixes <https://savannah.gnu.org/bugs/?53541>. + + Thanks to Bjarni Ingi Gislason for the report and a suggested + patch. + +2021-05-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Ignore FT register when appropriate. + + * tmac/an-old.tmac (initialization): Validate user-specified + value of \n[FT]. Continuous rendering ignores FT (page location + traps are not used for footers in that mode). Measuring a + footer distance from the page top isn't done. A footer distance + of over half the page length is unlikely. A footer distance of + less than one line height is too. Issue diagnostics in all of + these cases. + + * tmac/tests/tmac/tests/\ + an-old_FT-bad-value-should-not-trash-titles.sh: Test it. + * tmac/tmac.am (tmac_TESTS): Run test. + + Fixes <https://savannah.gnu.org/bugs/?60612>. + +2021-05-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (TH): Plant the an-footer trap (where we + schedule a break in the page text prior to spacing down to the + footer) at twice the value of \n[FT], not a hard-coded -1i. + This way, the user can't make the an-p-footer trap (planted at + \n[FT]) spring before the an-footer trap that should precede it. + + * tmac/groff_man.7.man.in (Options) <-rFT>: Document this. + +2021-05-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_GHOSTSCRIPT_VERSION_CHECK): Add new + autoconf macro to check Ghostscript version. Versions 9.00 <= x + < 9.54 suffer from a rendering glitch that affects the AT&T + troff (and groff) special character \(lh; see + <https://bugs.ghostscript.com/show_bug.cgi?id=703187>. Store + the result of the check. + (GROFF_GHOSTSCRIPT_VERSION_NOTICE): Add new macro to report the + problem detected by GROFF_GHOSTSCRIPT_VERSION_CHECK to the user. + + * configure.ac: Call the macros in appropriate places. + + Fixes <https://savannah.gnu.org/bugs/?59531>. + +2021-05-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/andoc.tmac (reload-man): Remove removal of RI macro, made + unnecessary by commit 551f138 (15 May). + +2021-05-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_HTML_PROGRAMS, GROFF_PDFDOC_PROGRAMS): + Tweak autoconf warning messages when Ghostscript (gs) command + missing to be more mutually congruent. + (GROFF_URW_FONTS_CHECK): Tweak to note that gs is only run to + locate the URW fonts if gs is available. + +2021-05-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tests/an-old_AT-and-UC-footer-saved-and-restored.sh: + Tweak to be more helpful when troubleshooting exasperating + header/footer problems as in Savannah #60609. + +2021-05-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Fix missing page footers when continuously rendering + multiple documents. Resolving this uncovered entangled header + and footer management bugs with batch processing even when _not_ + continuously rendering. + + * tmac/an-old.tmac (an-start-new-document): New macro clears + header trap so it doesn't get called with stale information. + {The TH macro already replants a header trap with every man + page if not continuously rendering.} This macro also absorbs + the break-page and page number incrementation logic from TH. + (TH): Adapt semantics of "an-first" register to mean not "first + page rendered" (apparently) but "first page of new document". + If we are _not_ on the first page of a new document and the TH + macro is called, we must be batch processing: force the previous + man page to end (call an-end if continuously rendering, or + an-start-new-document if not). After all the header and footer + strings have been configured for the man page, call an-header if + we're on the first page of the document, not (just) if we're + continuously rendering. Zero an-first register at end of macro + here unconditionally instead of conditionally in .an-header. + (an-header): Drop conditional on continuous rendering. + + When I batch-render our 62 man pages to the terminal, I do note + one cosmetic regression: the lj4_font(5) page, when continuously + rendered in batch processing, has no space between its header + line and first section heading ("Name"). Another cosmetic issue + in this scenario is that the footers for every rendered page but + the last, which had (wrongly) been absent entirely, are set with + no space after them and the header of the next. + + * tmac/tests/an-old_page-footers-present.sh: + * tmac/tests/an-old_page-header-has-current-data.sh: Add man + page header/footer regression tests. + * tmac/tmac.am (tmac_TESTS): Run the tests. + + Fixes <https://savannah.gnu.org/bugs/?60609>. + +2021-05-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (initialization): Key the reprocessing guard + {like a C language #include guard} on the existence of the TH + macro instead of RI. The latter seemed kind of random and TH + is even more guaranteed to exist; it is the macro name most + characteristic of the man(7) language and the andoc.tmac + superstructure relies on it. (TH may have been avoided because + of its use with tbl(1); however, neither man(7) nor mdoc(7) + support tbl's TH feature, and GNU tbl does not supply its own + empty fallback definition as it does for TS and TE. If we ever + want TH-like functionality in future man pages, I suggest we + pick a new, non-colliding name for it.) + (initialization): Relocate load of devtag package; we don't + need it before entering compatibility mode. Move assignment of + format of an-page-letter register from a "loose declaration" + amid macro definitions to within existence test of X register. + Stop initializing an-extra[123] strings outside of any macro; + they need to be reinitialized at every TH call when batch + rendering. + (TH): Call DT in a less surprising place. + (TH): Initialize all header/footer-related strings before + calling header macros, even those not needed for the default + header configuration. + (TH): Add style warnings for underspecified arguments. + (an-ne): Rename register from "an-need", which is pretty + confusing in context, to "an-amount", since (1) a (vertical) + amount is what it is, and (2) it's only used within this macro. + Also due to factor (2), remove the register after using it. + +2021-05-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * m4/groff.m4 (GROFF_URW_FONTS): Update configure script check + for URW fonts to recognize recent releases of the URW Base 35 + fonts from Artifex Software. Look for the AR (Arial roman + equivalent) font under all of the names recognized by + fonts/devpdf/Foundry.in. + * m4/groff.m4 (GROFF_URW_FONTS_CHECK): Update wording of notice + when URW fonts are not found. Replace dead URL with working + one. Try to hedge against the future, but the Web is an + ephemeral place, as are the file names Artifex gives to its + fonts. Thanks to T. Kurt Bond and Thomas Dupond for reporting + and investigating the problem. + + Fixes <https://savannah.gnu.org/bugs/?60604>. + +2021-05-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (ms Document Control Settings) <DI>: + * doc/ms.ms (Document control settings, Displays and keeps) + <DI>: + * tmac/groff_ms.7.man (Document control settings, Displays and + keeps) <DI>: Document this register; it had been mentioned only + in passing. + +2021-05-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (ms Document Control Settings) <DD>: + * doc/ms.ms (Document control settings) <DD>: + * tmac/groff_ms.7.man (Document control settings) <DD>: Fix + error; changes to \n[DD] take effect at the next display + boundary (including the end of the active one), not the next + "paragraph" (paragraph macros cannot be called inside a display + anyway). + +2021-05-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/andoc.tmac (reload-man): Delete no-op line that attempts + to restore compatibility mode. Individual pages have to do + this, and ".do cp \n(.C" is not effective for the reason + discussed in the 2020-04-16 ChangeLog entry. + +2021-05-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac (@RT): Delete definition; make it an alias for + par@finish. Until commit 021ba0e7 (1 May), they had identical + definitions. I find it difficult to imagine what use it would + be to have an undocumented reset macro that resets everything + _except_ the deeply internal \n[.ev]:ai. + +2021-05-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: Handle HF strings with an embedded font family when + applying italic-to-bold-italic remapping; the feature now works + on troff devices as well. + + * tmac/an-old.tmac (initialization): Do more validity checking. + Store heading family in new string \*[an-heading-family]. Clean + up after self. + (SH, SS): Include the heading family in the remapping target. + + * tmac/groff_man.7.man.in (Description/Document structure + macros) <.SH, .SS>: Document it. + +2021-05-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + * man/groff_char.7.man (Glyph tables/Mathematical symbols): Fix + errors in special character descriptions; \[sqrt] is a "special" + glyph (that is, it uses mathematical metrics on typesetter + devices), and \[radicalex) is not (and is thus a "text" glyph). + See Werner Lemberg's ChangeLog entry of 2003-01-05. Problem + dates to 07a6233ad, 27 May 2014. + + The overloaded use of the word "special" really pinches here. + +2021-05-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tty.tmac: Replace fallback glyphs for radical extension + and square root extension; use \[rn] instead, which works fine. + + Now the only glyph in the page that doesn't render on a UTF-8 + terminal (if one's font has adequate coverage) is the Bell + System logo. + +2021-05-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tty.char: Add fallback characters for \[fm] and \[sd]. + +2021-05-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + [man]: If \*[HF] is a bold style, substitute bold italics for + italics in section and subsection headings, keeping the font + weight consistent. + + * tmac/an-old.tmac (initialization): Set a flag for this based + on the interpolation of \*[HF] matching "B" as its last + character. + (SH, SS): Apply and reverse font remapping based on this flag. + +2021-05-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-ext.tmac (EX): Work around Savannah #59522 by changing + fonts differently on DVI output, avoiding a font warning. + +2021-05-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-ext.tmac: If in nroff mode, remap font CBI to BI. + * tmac/dvi.tmac: Remap font CBI to CWI. (Computer Modern + Constant Width has no bold styles.) + +2021-05-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac (NL, SM, LG): Issue warning diagnostic if macro + called with arguments. + (par*define-font-macro): Construct font macro with diagnostic to + warn if called with excess arguments. + (UL, BX): Issue warning diagnostic if macro called with excess + arguments. + + Fixes <https://savannah.gnu.org/bugs/?60522>. + +2021-05-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi: Delete redefinition of \putwordAppendix + Texinfo macro. This restores the word "Appendix" to the names + of all appendices and fixes two bad internal links to Appendix + E, the Register Index, in the DVI and PDF output formats. Per + consultation with Texinfo maintainer Gavin Smith, it's difficult + to get the behavior we want, so give up trying for now. + +2021-05-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac (@MC): Actually diagnose and recover when user + tries to .MC inside a diversion. + +2021-05-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Differences from AT&T ms): + * doc/ms.ms (Differences from AT&T ms): + * tmac/groff_ms.7.man (Differences from AT&T ms): Document our + different default (empty) for the center footer in nroff mode; + this behavior appears to date back to June 1991 or earlier, + drawing few complaints. + + Fixes <https://savannah.gnu.org/bugs/?59826>. + +2021-05-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tests/*: Rename files to use consistent scheme; one + underscore to separate the package name from the test objective, + dashes to otherwise separate words. + * tmac/tmac.am (tmac_TESTS): Use new names. + +2021-05-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Restore support for AT&T ms PN register. + + * tmac/s.tmac (pg): Make register PN an alias of %. + + * doc/groff.texi (Differences from AT&T ms): + * doc/ms.ms (Differences from AT&T ms): + * tmac/groff_ms.7.man (Differences from troff ms): We don't need + PN, and it was removed in commit 08291b40 (25 October 2020), but + since it is documented in Lesk 1978 we're stuck with it. Advise + users to stick with %. Also warn them of the hoop they must + jump through if they redefine the page trap macro PT, which Lesk + 1978 also encourages. + + * tmac/tests/s_PN-works.sh: Test it. + * tmac/tmac.am (tmac_TESTS): Run test. + + Fixes <https://savannah.gnu.org/bugs/?59823>. + +2021-05-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Restore default IP paragraph indentation after an SH call. + + * tmac/s.tmac (par@finish): Set "ai" register for the current + environment to the paragraph indent (PI) setting for the current + environment. + + * doc/groff.texi (Highlighting in ms) <IP>: + * doc/ms.ms (Highlighting) <IP>: + * tmac/groff_ms.7.man (Usage/Highlighting) <IP>: Update + documentation. + + * tmac/tests/s_SH_resets_IP_indentation_amount: Test it. + * tmac/tmac.am (tmac_TESTS): Run test. + + Fixes <https://savannah.gnu.org/bugs/?60222>. + +2021-05-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac (DS): Issue diagnostic and attempt recovery if + document attempts to start a display within another display. + + Fixes <https://savannah.gnu.org/bugs/?55136>. + +2021-04-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac: Implement alternative rendering for automatic + footnote numbers in nroff mode, inspired by Heirloom Doctools + ms; since superscripting is not universally available on + terminals, surround number with square brackets instead. + (fn@init): New macro finishes initializing footnote module, + setting up aliases to par@sup-{start,end} strings in troff mode + and otherwise defining fn@sup-{start,end} as brackets. Define * + string here, using new strings. + (par): Call fn@init after par@sup-{start,end} are defined, and + prior to other footnote integration material. + (par*fp!0): Migrate from par@sup-{start,end} to + fn@sup-{start,end}. + + * doc/groff.texi (ms Document Control Settings) <FF>: + * doc/ms.ms (Footnotes) <FF>: + * tmac/groff_ms.7.man (Usage/Footnotes) <FF>: Document it. + + Fixes <https://savannah.gnu.org/bugs/?60228>. + +2021-04-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * test-groff.in: Stop passing the built groff executable -b and + -ww options by default. This reverses a change from 2017. Dave + Kemper has convincingly argued that there's no way to override + -b and turn backtraces on warnings/errors back off, and that the + built groff should behave as much like a "normal" one as + possible. The latter factor is of added importance now that we + are using test-groff for generation of documents. + + * src/roff/groff/tests/regression_savannah_58153.sh: Adapt. + +2021-04-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac (BX): Add alternative implementation for terminal + {nroff} devices. Store width of boxed text, adding .4m only on + troff devices (to make room for the vertical box lines). Break + long input line in troff implementation. If not in troff mode, + use ISO 6429 color escapes to render boxed text in black on + white. Use the \Z escape to match breaking semantics of macro + in troff mode. + + * doc/groff.texi (Highlighting in ms) <BX>: + * doc/ms.ms (Highlighting) <BX>: + * tmac/groff_ms.7.man (Usage/Highlighting) <BX>: Document it. + + Fixes <https://savannah.gnu.org/bugs/?60477>. + +2021-04-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am: Make $(PROCESSEDDOCFILES) depend on all the same + targets as $(PROCESSEDEXAMPLEFILES); this way the me, ms, and + pic.ms manuals are all regenerated upon changes to their + underlying macro packages. + +2021-04-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + * INSTALL.extra: Update. + (Evaluation): New section updates material on "test-groff" + script. Also tell people how to preview our Texinfo manual (in + info, text, DVI, PDF, and HTML formats). + (In Case of Trouble): New section updates bug reporting URL. + + Fixes <https://savannah.gnu.org/bugs/?57863>. + +2021-04-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac: Make the FAM string work more sensibly; it now + applies to headers, footers, and footnotes only if set + before the first call of a sectioning, paragraphing, or + {non-date} document description macro. + (PT, BT): Set the font family to that saved for titles. + (fn*do-FS): Set the font family to that saved for footnotes. + (par@init): Copy the document font family to independent strings + for titles and footnotes. + (par@reset): If in a footnote environment, set the font family + to that saved for footnotes; otherwise use \*[FAM]. + + * tmac/groff_ms.7.man (Differences from troff ms/Text settings): + Describe placement-dependent effect of FAM string setting. + + * doc/groff.texi (Highlighting in ms): + * doc/ms.ms (Highlighting): As above, and suggest different + occasions in which ".ds FAM C" and "CW" are convenient. + + Fixes <https://savannah.gnu.org/bugs/?60422>. + +2021-04-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (source, source_quietly) + (macro_source, macro_source_quietly): Use idiomatic Boolean + literals. + +2021-04-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi: Drop workarounds for Texinfo pre-5.0 versions; + our local macros produced many warnings during generation of our + Texinfo manual. + (Langlemacro): + (Ranglemacro): + (Lparenmacro): + (Rparenmacro): + (Lbrackmacro): + (Rbrackmacro): Delete. Replace call sites with literals. + (Lbracemacro): + (Rbracemacro): Delete. Replace call sites with @lbracechar{} + and @rbracechar{}. + (angles): Reimplement in terms of @guilsinglleft{} and + @guilsinglright{}. Flesh out comment. + + Fixes remainder of <https://savannah.gnu.org/bugs/?59524>. + +2021-04-17 Dave Kemper <saint.snit@gmail.com> + + * doc/meintro.me: + * doc/meref.me: Correct and make consistent usage of the term + "point size". + + Fixes <https://savannah.gnu.org/bugs/?60403>. + +2021-04-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (SS): Add devtags support. Set a subsection + title as a second-level heading and add it to a table of + contents, if any. Prompted by a query from Hans Unzner to the + groff mailing list. Thanks, Hans! + +2021-04-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (SH): Fix apparent thinko. Pass the devtags + macro a literal "1" argument. Passing it \n[an-level] wasn't + correct (it stores the relative inset level, not a sectioning + level), and was useless anyway: SH has already called + .an-set-margin by this point, which resets \n[an-level] to 1. + man(7) does not support nesting of SH macros. Also call + .DEVTAG-NH by its alias .DEVTAG-SH since section headings are + not numbered in man(7). + +2021-04-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tmac]: Adjust editor file encoding hints. + + * tmac/cs.tmac: Tell Vim the file is "iso-8859-2" (ISO Latin-2). + * tmac/en.tmac: Stop telling Emacs the file is "latin-1"; it's + ASCII. + * tmac/fr.tmac: Tell Vim file is "iso-8859-15" (ISO Latin-9). + + Vim users may need to use ":e ++enc=iso-8859-2", for instance, + to see correct glyphs. + +2021-04-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + The first-order determinant of hyphenation points is language, + not territory. Use ISO 639 2-letter language codes for + hyphenation and exception patterns instead of ISO 3166 2-letter + territory codes. + + * tmac/*.us: Rename *.us files to *.en. + * tmac/troffrc: Change hyphenation language "us" to "en". + * tmac/en.tmac: Add English localization file. Set hyphenation + mode to 4. + * tmac/troffrc: Derive groff locale from system. + + * doc/groff.texi (Manipulating Hyphenation): + * man/groff.7.man (Hyphenation): + * man/groff_diff.7.man (Implementation differences): Refer to + "U.S. English" hyphenation patterns as simply "English"; they + will be mostly correct for Commonwealth English as well, and no + alternative English hyphenation patterns for other territories + are available. + + * doc/groff.texi (Manipulating Hyphenation): + * man/groff_diff.7.man (New requests): Note that default + hyphenation mode depends on the language used on the system. + Add concept index entry for localization. Add file index + entries for the locale macro files (cs.tmac, etc.). Update to + reflect rename of English hyphenation patterns and .hla + identifier from "us" to "en". + + * src/roff/groff/tests/localization_works.sh: Add 10 test cases. + * src/roff/groff/groff.am (groff_TESTS): Run test. + + * tmac/LOCALIZATION: Rewrite. + + Fixes <https://savannah.gnu.org/bugs/?59814>. + +2021-04-12 Dave Kemper <saint.snit@gmail.com> + + * doc/meref.me: Correct various small issues. + + Fixes <https://savannah.gnu.org/bugs/?60379>. + +2021-04-12 Dave Kemper <saint.snit@gmail.com> + + * man/groff.7.man (Registers/Writable registers) <year, yr>: + Drop discussion of Y2K issues. + + Fixes <https://savannah.gnu.org/bugs/?60372>. + +2021-04-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Setting Registers) <rnn>: Fix error: the + request is not ignored if the second argument (the new name) + does not exist. Problem dates back to 52a6d12a (11 May 2000). + +2021-04-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + Implement new .soquiet and .msoquiet requests. + + Needed for two planned developments: {1} the i18n patch in + Savannah #59814 can use this to quietly attempt to open a + localization file. groff only supports a few locales, so people + with LANG=es_ES, for instance, would ordinarily see warning + diagnostics on every groff startup; and {2} system- or + site-configurable support of per-user {.,}troffrc or man.local + files, gracefully failing if they don't exist. + + * src/roff/troff/input.cpp: + (do_source): Add new function, taking boolean "quietly" + parameter and absorbing function of source(), with added + conditional. + (source): Convert into a wrapper to call do_source() unquietly. + (source_quietly): Wrap do_source(), quietly. + (do_macro_source, macro_source, macro_source_quietly): Analogous + to the foregoing. + (init_requests): Hook "msoquiet" to macro_source_quietly() and + "soquiet" to "source_quietly(). + + * doc/groff.texi (I/O): + * man/groff.7.man (Requests/Request short reference): + * man/groff_diff.7.man (Language/New requests): Document them. + + * src/roff/groff/tests/msoquiet_works.sh: + * src/roff/groff/tests/soquiet_works.sh: Test them. + + * src/roff/groff/groff.am (groff_TESTS): Add tests. + + Fixes <https://savannah.gnu.org/bugs/?59973>. + +2021-04-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (ms Document Control Settings) <FF>: Update + description to cover application of footnote format to footnote + markers in general, not just numbers. Clarify different + behavior of format 1 with respect to automatic numbers and other + markers. + (ms Footnotes) <*>: Describe string operation in more detail. + <FS>: Describe more precisely how the optional argument is + handled. + + * doc/ms.ms (Footnotes): Synchronize with doc/groff.texi. Add + example using document's own text as a model. + + * tmac/groff_ms.7.man (Usage/Footnotes): Resync relevant + portions with doc/ms.ms. + + Fixes <https://savannah.gnu.org/bugs/?60227>. + +2021-04-06 Dave Kemper <saint.snit@gmail.com> + + * src/roff/nroff/nroff.sh: Recognize -k and -K options and pass + them through to troff. Document them in usage message. + * src/roff/nroff/nroff.1.man: Document new -k and -K options. + + Fixes <https://savannah.gnu.org/bugs/?60349>. + +2021-04-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Manipulating Hyphenation): + Recast introductory paragraph to better distinguish the + automatic breaking of words and placement of hyphens at + user-specified hyphenation points (done with the \% escape) and + automatic determination of hyphenation points within words (what + the pattern files and most of the hyphenation mode parameters + are for). Clarify that what our manual calls "automatic + hyphenation" pertains only to the latter. + <hw> Correct over-general claim; hyphenation exceptions defined + with the .hw request _do_ honor .hy value 2 (don't break a word + at the bottom of a page), but none of the others. + <\%> Recast description of escape to emphasize independence of + its two uses (e.g., "\%pseudo\%unununium" is hyphenated only + after "pseudo-", if at all). + <\:> Clarify that escape is an input word boundary. + <shc> Clarify that the soft hyphen glyph is applied to manual as + well as automatically-determined hyphenation points. + <hy> Recharacterize as setting the _automatic_ hyphenation mode. + Note that restrictions apart from value 2 are not applied to + words with manually-assigned hyphenation points. + <nh> Note that request affects only automatic hyphenation. + + * man/groff.7.man (Requests/Request short reference) <.hy,.nh>: + Clarify that requests deal with _automatic_ hyphenation. + (Registers/Read-only registers) <.hy>: + Clarify that register applies to _automatic_ hyphenation. + (Hyphenation): Add new introductory paragraph summarizing manual + hyphenation support and features, including notice that breaking + at explicit hyphens is performed in fill mode, i.e., even if + _automatic_ hyphenation is disabled. + + Thanks to Peter Schaffter for the report. + + Fixes <https://savannah.gnu.org/bugs/?60332>. + +2021-03-27 Deri James <deri@chuzzlewit.myzen.co.uk> + + Changes to the ghostscript fontnames (9.53.3). + + * font/devpdf/Foundry.in: HI and HBI switch to using + Italic rather than Oblique. + +2021-03-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Manipulating Filling and Adjustment): + * man/groff_diff.7.man (Language/Extended requests): Fix + incorrect claim that additional inter-sentence space is applied + only in fill mode. Drop word "parameter" from description of + unit used in .ss request arguments; it is a needlessly specific + reference to the font file format. Tighten wording. + + * man/groff.7.man (Control Characters): Fix incorrect claim that + end-of-sentence detection is attempted only in fill mode. Note + that .ss request also affects inter-word spacing. + + * man/groff_diff.7.man (Language/Extended requests): + - Drop example. + - Move discussion of AT&T vs. GNU troff difference in .ss + handling from here... + (Implementation Differences): ...to here. + + Thanks to Dave Kemper for his continued scrutiny! + +2021-03-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (ms Cover Page Macros): + * doc/ms.ms (Cover page macros): + * tmac/groff_ms.7.man (Usage/Cover page macros): Revise and + rename (sub)sections to "Document description macros". + +2021-03-15 Dave Kemper <saint.snit@gmail.com> + + * Makefile.am: Fix typos. Thanks to Bjarni Ingi Gislason for + the report. + + Fixes <https://savannah.gnu.org/bugs/?59457>. + +2021-03-14 Dave Kemper <saint.snit@gmail.com> + + * man/groff_tmac.5.man: Correct erroneous reference to PSPIC + where PDFPIC was intended. Fix numerous smaller style and + content problems. + + Fixes <https://savannah.gnu.org/bugs/?60229>. + +2021-03-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Optional man extensions) <CW, EX, PN, Pn>: + (Highlighting in ms) <CW>: + (Additional ms macros) <CW>: Use "monospaced" to refer to font + selected, retaining "constant-width" term only where it explains + the macro mnemonic. Thanks to Dave Kemper for pointing out the + issue. Also fix error: .CW in the ms package seems to have + originated with Research Unix, not Berkeley. + + * doc/ms.ms (Highlighting) <CW>: Sync with our Texinfo manual. + * tmac/groff_ms.7.man: Sync with ms.ms, omitting FAM advice. + + Fixes <https://savannah.gnu.org/bugs/?60037>. + +2021-03-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Identifiers, Strings, Writing Macros) + (Diversions): Improve cross-linkage of documentation regarding + shared name space of macros, strings, diversions, and boxes. + + Fixes <https://savannah.gnu.org/bugs/?58995>. + +2021-03-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac: Improve diagnostic messages. + (@diag): New macro wraps .tm request, always prefixing it with + the name of the macro package, as well as file and line + indicators only if these are set to non-empty or non-zero + values, respectively. + (@error, @warning): Call @diag instead of .tm directly. + (@fatal): Retire; it had only one call site and it would have + greatly complicated @diag to support calling .ab instead of .tm. + An ugly alternative would have been to call .ab with a redundant + message after calling @diag. + (@divert): New macro wraps .di request, remembering the name of + the current file (\n[.F]) when a diversion is started. + (@error-recover): Call .ab instead of (deleted) @fatal. + (pg@super-eject): Tell user what the last file name seen was + when recovering from an unfinished diversion when processing + ends. + + Fixes <https://savannah.gnu.org/bugs/?55099>. + +2021-02-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + Fix bug where having line numbering off but the output line + number register \n[ln] set to a positive value would cause + tbl(1) table rows to spontaneously become numbered. Use new + \n[.nm] register to determine whether line numbering is enabled. + + * src/preproc/tbl/table.cpp (table::init_output, table::do_row) + (table::do_bottom): Predicate all conditions on \n[ln] + additionally on \n[.nm]. + + Thanks to Olle Lögdahl for the report. Problem appears to date + back to commit b69062693d3360efce9d4d63fac337be21e07db7, 20 July + 2011. + + Fixes <https://savannah.gnu.org/bugs/?59812>. + +2021-02-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + Add regression test for Savannah #59812. + + * src/preproc/tbl/tests/cooperate-with-nm-request.sh: Do it. + * src/preproc/tbl/tbl.am (tbl_TEST): Run test. + +2021-02-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + Implement new read-only register ".nm". It reports the + enablement status of output line numbering (caused by the .nm + request) irrespective of the temporary suspension of numbering + with the .nn request. Needed because there was no way to + introspect its state, tbl(1) needs to do so, and the writable + line number register \n[ln] is not a reliable proxy for it. + + * src/roff/troff/env.h: Add get_numbering_nodes(), returning + `int`, to public interface of `environment` class. + * src/roff/troff/env.cpp: Implement get_numbering_nodes(). + + * src/roff/groff/tests/dot-nm_register_works.sh: Test it. + * src/roff/groff/groff.am (groff_TESTS): Run test. + + * doc/groff.texi (Miscellaneous): + * man/groff_diff.7.man (Language/New number registers): + * man/groff.7.man (Registers/Read-only registers): Document it. + + * NEWS: Add item. + +2021-02-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac: Emit warning diagnostic when using a multi-page + table with a repeating header (".TS H"). + (KS): Rename diversion from "kp*div" to "kp@div" since the name + is now referenced outside the keep module. + (KF): ...similarly for kp@fdiv. + (generally): Update diversion dereference sites and derived + names. + (@TS): When handling "H" argument, check identity of current + diversion and emit appropriately worded warning. + +2021-02-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + * FOR-RELEASE: Add more procedures and information related to + incrementing groff's version number. + +2021-02-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/libs/libgroff/searchpath.cpp (search_path::open_file) + (search_path::open_file_cautious): Save errno before calling + free() and restore it afterwards. A future version of POSIX + will require that free() not change errno if it succeeds[1]; + some C library implementations, including recent versions of + glibc[2], lack this property. free() is called in these + libgroff functions to clean up after an unsuccessful fopen() of + a heap-allocated file name string, and because the errno from + fopen() may be passed to strerror() in a diagnostic message, it + needs to be accurate. I checked the rest of groff's codebase + and found no other instances of free() being used to clean up + after fopen() failure. + + [1] https://www.austingroupbugs.net/view.php?id=385 + [2] https://sourceware.org/bugzilla/attachment.cgi?id=13073 + +2021-02-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + Address build failure on macOS. + + Follow the advice of the gnulib manual ("Changing your source + for use with gnulib") more scrupulously; include config.h in + more files. + + * src/libs/libgroff/curtime.cpp [HAVE_CONFIG_H]: + * src/libs/libgroff/device.cpp [HAVE_CONFIG_H]: + * src/libs/libgroff/fatal.cpp [HAVE_CONFIG_H]: + * src/libs/libgroff/string.cpp [HAVE_CONFIG_H]: + * src/libs/libgroff/strsave.cpp [HAVE_CONFIG_H]: + * src/preproc/eqn/other.cpp [HAVE_CONFIG_H]: + * src/preproc/eqn/text.cpp [HAVE_CONFIG_H]: + * src/preproc/pic/object.cpp [HAVE_CONFIG_H]: Do it. + + * src/libs/libgroff/assert.cpp [HAVE_CONFIG_H]: + * src/libs/libgroff/errarg.cpp [HAVE_CONFIG_H]: + * src/libs/libgroff/error.cpp [HAVE_CONFIG_H]: #include + config.h using angle brackets instead of quotation marks. + + Fixes <https://savannah.gnu.org/bugs/?60035>. + +2021-02-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + Add regression test for Savannah #60025. + + * tmac/tests/doc_Mt-works.sh: Do it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2021-02-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Demote definition of \[yogh] special character escape from + unconditional availability to be defined only if the output + device defines it or if .AM macro is called to enable support + for Berkeley-style accent marks. + + See + https://lists.gnu.org/archive/html/groff/2021-01/msg00000.html + and follow-ups for discussion. + + * tmac/s.tmac (initialization): Move definition of \[yogh] (only + if the output device doesn't already define it) from here... + (AM): ...to here. + +2021-02-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/ms.ms: Use \[ps] special character instead of local + character definition using numeric code point escape, which is + less portable. + + Fixes <https://savannah.gnu.org/bugs/?59528>. Thanks to Bjarni + Ingi Gislason for the report and a suggested patch. + +2021-02-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac (initialization): Call par*define-font-macro with + arguments "CW" and "R" in nroff mode to silence font warnings + from documents using .CW macro in nroff mode. + +2021-02-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/table.cpp (table::init_output): Save value of + hyphenation maximum consecutive line count register (\n[.hlm]) + more carefully to keep it from being incorrectly parsed as a + decrement, because negative values of \n[.hlm] are valid (in + fact, "-1" is the default). In documents with a large number of + tables, this can lead to a Persian chessboard problem and an + integer overflow (at the groff language level, caught and + handled by src/roff/troff/number.cpp:parse_term()). + + It is wise to wrap a non-literal second argument to the .nr + request in parentheses if assignment is desired and its value + can be negative. See section 5.6.1 ("Setting Registers") of the + groff Texinfo manual. + + Fixes <https://savannah.gnu.org/bugs/?59993>. + +2021-02-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * test-groff.in: Add support for rfc1345.tmac. + +2021-02-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + Integrate rfc1345.tmac into build system. + + * contrib/rfc1345/rfc1345.am: Do it. + * Makefile.am: Include contrib/rfc1345/rfc1345.am. + +2021-02-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (open_mac_file): Report problem when + attempting to open macro files (-m arguments) and the error is + something other than ENOENT. + (process_macro_file): Update diagnostic to be more precise; the + file couldn't be _opened_, not necessarily _found_, and clarify + that the string being reported back to the user is the argument + to the -m option, not a file name. + (macro_source): Update diagnostic to report that the file + couldn't be _opened_, not necessarily _found_, and include the + nature of the problem. + +2021-01-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + [tbl]: Save and restore hyphenation parameters. + + * src/preproc/tbl/table.cpp (table::init_output): When starting + a table, save the hyphenation parameters (\n[.hy], \n[.hla], + \n[.hlm], \n[.hym], \n[.hys]). Restore them in the table reset + macro (confusingly called "3init"), which is called before + performing each diversion and before exiting a table. + + This enables people to, e.g., turn off hyphenation in a table + text block with .nh, just as they can turn off adjustment with + .na, without having to manually reset it. The next text block, + and the material after the table, will not be affected. + + Fixes <https://savannah.gnu.org/bugs/?59971>. + +2021-01-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + Add regression test for Savannah #59971. + + * src/preproc/tbl/tests/\ + save-and-restore-hyphenation-parameters.sh: Do it. + * src/preproc/tbl/tbl.am (tbl_TEST): Run test. + +2021-01-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tmac.am ($(TMACSTRIPFILES)): + ($(TMACMDOCSTRIPFILES)): Remove unidiomatic for loop which + frustrated parallel make operation. + + Thanks to an anonymous contributor for the report and patch. + + Fixes <https://savannah.gnu.org/bugs/?59958>. + +2021-01-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/ms.ms (Document control settings): Document old FAM string + and new FR string. + +2021-01-29 T. Kurt Bond <tkurtbond@gmail.com> + + [ms]: Add new string FR to hold an expression for computing the + footnote length relative to the line length, consistently for + single- and multi-column modes, which \n[FL] has never done. + + * tmac/s.tmac: Initialize FR string to "11/12". + (@MC): Compute footnote column width using \*[FR] instead of a + hard-coded "11/12" expression. + (par@init): Compute default \n[FL] using \*[FR] instead of a + hard-coded "11/12" expression. + + * doc/groff.texi (Macro Packages/ms/Document control settings): + * tmac/groff_ms.7.man (Usage/Document control registers): + Document it. + + Fixes <https://savannah.gnu.org/bugs/?59605>. + +2021-01-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/env.cpp: Add ADJUST_MAX enumeration constant to + record maximum valid numerical adjustment mode. + (adjust): Verify numeric argument against ADJUST_MAX instead of + a numeric literal. Ignore excessively large values instead of + setting adjustment mode to "right". Update warning diagnostic. + +2021-01-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + Add regression test for .ad and .na requests. + + * src/roff/groff/tests/adjustment_works.sh: Do it. + * src/roff/groff/groff.am (groff_TESTS): Run test. + +2021-01-24 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Manipulating Filling and Adjustment): + * man/groff.7 (Requests/Request short reference): Clarify + behavior of ".na" and ".ad l". + + Thanks to Bjarni Ingi Gislason for pointing out the potential + for confusion and for his careful review of the new text. + + Fixes <https://savannah.gnu.org/bugs/?59795>. + +2021-01-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/grog/grog.pl: Report program name in fatal error + diagnostics. Also drop sentence-ending punctuation since Perl + supplies additional information. + + Continues the long process of fixing Savannah #52463. + +2021-01-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (RE): Style-warn if macro arguments are out + of range or redundant. + + Fixes <https://savannah.gnu.org/bugs/?55320>. + +2021-01-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + Improve style of troffrc{,-end} files. Follow established + idioms and make them consistent with each other. + + * tmac/troffrc: + * tmac/troffrc-end: + - Identify files in header comments as part of GNU troff. + + * tmac/troffrc: + - Clarify purpose of .do request. + - Identify .X (set by groff -X) as a register, not a string. + - Remove temporary registers one per line to make + synchronization with foregoing logic easier. Fixes name + space management nits: an undefined string troffrc!Xps was + being removed, and troffrc!{ascii,latin1,utf8,cp1047} were + not being removed despite being defined. + + * tmac/troffrc-end: + - Clarify that file is read after -m file arguments (not "all + macro sets", which can be loaded with .mso after this file + is processed). + - Advise usage of .do for groff extensions. + - Line-break one-off conditionals as troffrc does. + - Add empty string comment to empty string definitions. + +2021-01-14 Dave Kemper <saint.snit@gmail.com> + + Commit 87edb525, from 2003, added character U+2026 (HORIZONTAL + ELLIPSIS) to most base groff fonts, but there has been no + kerning information for this character. To produce consistent + typography, it should be kerned the same way as the period, + which is in 818 kern pairs across all the devps fonts. + + Apply the following shell command to the groff description files + of the PostScript fonts. + + for file in font/devps/*[A-Z] + do sed -Ei\~ 's/(.*)(^| )\. (.*)/&\n\1\2u2026 \3/' $file + done + + * 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/HB: + * font/devps/HBI: + * font/devps/HI: + * font/devps/HNB: + * font/devps/HNBI: + * font/devps/HNI: + * font/devps/HNR: + * font/devps/HR: + * 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/ZCMI: Apply above script. + + Fixes <https://savannah.gnu.org/bugs/?58897>. However, this + will need to be done again if afmtodit is used to regenerate the + above files, or afmtodit will need to be modified to add this + kerning information itself. + +2021-01-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/libs/libgroff/relocate.cpp (set_current_prefix) [_WIN32]: + Move declaration of `pathextstr` to lie within preprocessor + conditional, since it is dereferenced only there. + +2021-01-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + Add support for strsignal(). + + POSIX.1-2008 added strsignal() to the C library and recommended + its use over sys_siglist[], but groff's pipeline management + hadn't been updated in that respect since that time. + + * configure.ac: Check for strsignal(). + * src/roff/groff/pipeline.c (xstrsignal): Return strsignal() if + it is defined. + + Thanks to an anonymous contributor for the report and the patch. + + Fixes <https://savannah.gnu.org/bugs/?59835>. + +2021-01-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/libs/libgroff/relocate.cpp (relocatep): Add assertion to + identify logic error if `curr_prefix` is unexpectedly a null + pointer. + (set_current_prefix) [_WIN32]: Allocate memory from heap for + `curr_prefix` only on Windows; on other systems, this file's + searchpath() is used to populate `curr_prefix`, and that + function (except on Windows) performs its own allocation. Fixes + memory leak noted by Ingo Schwarze. + (set_current_prefix) [!_WIN32]: Move logic attempting to set + `curr_prefix` by calling searchpathext() from here... + [WIN32]: ...to here. The PATHEXT environment variable has + semantics only under Windows, not POSIX systems, so the + placement of this code seemed erroneous. + + See <https://savannah.gnu.org/bugs/?55475>. + +2021-01-06 Colin Watson <cjwatson@debian.org> + + * contrib/glilypond/glilypond.pl: + * contrib/gperl/gperl.pl: + * contrib/gpinyin/gpinyin.pl: + * tmac/hyphenex.pl: Avoid Perl's unsafe "<>" operator. + + The "<>" operator is implemented using the two-argument form of + "open", which interprets magic such as pipe characters, allowing + execution of arbitrary commands which is unlikely to be + expected. Perl >= 5.22 has a "<<>>" operator which avoids this, + but also forbids the use of "-" to mean the standard input, + which is a facility that the affected groff programs document. + + ARGV::readonly would probably also fix this, but I fundamentally + dislike the approach of escaping data in preparation for a + language facility to unescape it, especially when the required + escaping is as non-obvious as it is here. (For the same reason, + I prefer to use subprocess invocation facilities that allow + passing the argument list as a list rather than as a string to + be interpreted by the shell.) So I've abandoned this dubious + convenience and changed the affected programs to iterate over + command-line arguments manually using the three-argument form of + open. + + glilypond doesn't need the initial unshift since that's already + handled in contrib/glilypond/args.pl. + + Fixes <https://savannah.gnu.org/bugs/?55557>. + +2021-01-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac: Set footnote line length in multi-column + environments to 11/12ths of the text line length for consistency + with earlier change to FL register default. + + Thanks to T. Kurt Bond for bringing this issue to my attention. + +2021-01-04 John Gardner <gardnerjohng@gmail.com> + + * tmac/strip.sed: Escape '.' wildcard when matching lines using + .as and .ds requests. + + Fixes <https://savannah.gnu.org/bugs/?59498>. + +2021-01-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + Document use of SOURCE_DATE_EPOCH and TZ. + + The semantics of SOURCE_DATE_EPOCH to groff were not established + with respect to time zone selection, prompting divergent + interpretations; Debian and distributions derived from it have + for several years patched groff to implicitly use UTC as the + time zone when interpreting the current time (or + SOURCE_DATE_EPOCH) as a local time. While a convenient and + defensible choice for reproducible build efforts[1], it runs + against the grain of user expectations. Systems programmers + like monotonically increasing clocks; the broader user base + usually prefers a clock that follows an applicable civil + calendar. To the latter audience, a difference between + $ date "+%Y-%M-%d %H:%m:%S" + and + $ groff <<EOF + .af year 0000 + .af mo 00 + .af dy 00 + .af hours 00 + .af minutes 00 + .af seconds 00 + .tm \n[year]-\n[mo]-\n[dy] \n[hours]:\n[minutes]:\n[seconds] + EOF + is difficult to explain. + + * doc/groff.texi (Environment): + * src/devices/grohtml/grohtml.1.man (Environment): + * src/devices/gropdf/gropdf.1.man (Environment): + * src/devices/grops/grops.1.man (Environment): + * src/roff/groff/groff.1.man (Environment): + * src/roff/troff/troff.1.man (Environment): Expand description + of use of SOURCE_DATE_EPOCH to note that it converts the time + {as seconds since the Epoch} to local time, which motivates + documentation of the TZ environment variable. Explain what the + time stamps are used for: troff merely stores the human-readable + time components in registers; the grohtml, gropdf, and grops + output drivers write the information to the output in comments. + + Fixes <https://savannah.gnu.org/bugs/?57218>. + + [1] https://reproducible-builds.org/docs/source-date-epoch/ + +2020-12-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/doc.am (.texi.dvi): Call texi2dvi with FORCE_SOURCE_DATE=1 + in the environment, avoiding an embedded timestamp in the + generated groff.dvi file, which frustrated reproducible builds. + Thanks to Werner Lemberg for the suggestion. + + * src/roff/groff/tests/string_case_xform_unicode_escape.sh: Fix + test to no longer use Bash process substitution, resulting in + nondeterministic file descriptor numbers appearing in test logs, + frustrating reproducible builds. + + * contrib/pdfmark/pdfmark.am (PDFROFF): Call pdfroff without + `--keep-temporary-files` option. Temporary directories are + created with mktemp(1) and files with an embedded process + identifier, which frustrates reproducible builds. + + See <https://savannah.gnu.org/bugs/?57218>. + +2020-12-21 Dorai Sitaram <ds26gte@yahoo.com> + + * tmac/s.tmac (@IP): Handle inter-sentence space correctly in + paragraph tags by copying \n[.sss] from the enclosing + environment to that used to format the paragraph tag. + + Fixes <https://savannah.gnu.org/bugs/?59742>. + +2020-12-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + Add regression test for Savannah #59742. + + * tmac/tests/s_IP_respects_inter-sentence_space_in_tags.sh: Do + it. + * tmac/tmac.am (tmac_TESTS): Run it. + +2020-12-21 Bjarni Ingi Gislason <bjarniig@rhi.hi.is> + + * src/utils/addftinfo/addftinfo.cpp (usage): Use size_t for loop + index when iterating over a count of size_t items. Quiets + signedness mismatch compiler warning. + + Fixes <https://savannah.gnu.org/bugs/?59583>. + +2020-12-20 Colin Watson <cjwatson@debian.org> + + * src/devices/gropdf/gropdf.pl: + * src/utils/afmtodit/afmtodit.pl: Sort Perl hash keys. Hash + iteration order may differ between runs, which makes builds + harder to reproduce. Sort hash keys in gropdf and afmtodit + output to avoid this. + +2020-12-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/ms.ms (Basic Information): Tweak unit definitions. groff + defines a typesetter's point as precisely 1/72 inches. Also use + the correct symbol for inch units--strictly, it's the same as + that for "seconds" as in subdivisions of the degree, and not a + typographical quote of any sort. + + Fixes <https://savannah.gnu.org/bugs/?59463>. + +2020-12-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + [ms]: Set footnote line length to AT&T default. + + groff ms has since its initial implementation used a default + footnote line length of 5/6ths of the text line length; this may + correspond to an early AT&T ms default (perhaps documented in + the 1974 version of the M. E. Lesk paper, "Typing Documents on + the UNIX System"[1]). However, as early as V6 Unix (1975), AT&T + ms actually used a footnote line length of 11/12ths of the text + line length instead[2]. + + Heirloom Doctools and neatroff ms also use this default. + + * tmac/s.tmac: Set default footnote line length to 11/12ths of + the text line length. + + * doc/groff.texi (ms Document Control Settings): + * doc/ms.ms (Document control registers): Document new default. + + [1] https://www.troff.org/using-ms.pdf + [2] https://minnie.tuhs.org/cgi-bin/utree.pl?file=V6/usr/lib/tmac.s + +2020-12-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + Lower new unplanted trap error to 'mac' warning. + + * src/roff/troff/div.cpp (top_level_diversion::change_trap): + Change error upon invalid attempt to move an unplanted trap into + a warning of type 'mac'. + + * doc/groff.texi (Warnings): + * src/roff/troff/troff.1.man (Warnings): Recast description of + 'mac' warning type to include the above scenario. + + Thanks to Bjarni Ingi Gislason for reporting the diagnostic + arising in real life, and to Peter Schaffter for the discussion + and recommendation. Some bike sheds get painted quickly! + + Fixes <https://savannah.gnu.org/bugs/?59573>. + +2020-12-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/groff_mdoc.7.man: Tweak mandatory macro explanations. + + Update descriptions and template of .Dd, .Dt, .Os usage to + reflect recent changes and recommended conventions. + + Thanks to Ingo Schwarze, Colin Watson, and Alan D. Salewski for + the discussion, and Florent Rougon and Robert Bihlmeyer (many + years ago) for the original report. + + Fixes <https://bugs.debian.org/284002>. + +2020-12-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/xtotroff/xtotroff.c (MapFont): Avoid writing past + the end of a static buffer. Problem found and patch supplied by + Bjarni Ingi Gislason. I tweaked it to comment it differently + {in case the buffer ever needs to grow, but the prospects of + future X11 server-side font rendering development seem dim} and + use snprintf() instead of retaining the existing sprintf(). + + Fixes <https://savannah.gnu.org/bugs/?55257>. + +2020-12-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/xtotroff/xtotroff.c (CanonicalizeFontName) + (FontNamesAmbiguous, MapFont, main): Format diagnostic messages + more consistently with GNU Coding Standards. Prefix with name + of complaining command. Put argument literals in quotation + marks. Put each message on one line only. + +2020-11-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Parameters): Fix error in example. Arguments + to .als were in the wrong order (.als is not ln(1)). Also mark + output to the standard error stream using the @error Texinfo + command instead of @result. + + Thanks to Dorai Sitaram for finding this error. + + Fixes <https://savannah.gnu.org/bugs/?59566>. + +2020-11-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Debugging): Update with a more helpful + introduction, summarizing available procedures. Mention + backtracing since it is much more useful now (post-groff + 1.22.4.) + + * man/groff.7 (Debugging): Add new section summarizing + material added to our Texinfo manual. + + * man/groff_diff.7.man (Debugging): Add new section describing + groff extensions. + +2020-11-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Traps): Update. Organize subsubsections "Page + Location Traps" and "Diversion Traps" under new subsection node + "Vertical Position Traps" to make the conceptual organization + more clear. Define and discuss trap visibility earlier. + Document unit used for page location trap reporting. Introduce + analogy of .wh and .ch requests as queue operations. Document + what happens when the same macro is planted as a trap in + multiple locations; supply example. Supply example of .itc + usage. Consistently refer to an end-of-input macro as such, to + contrast it with the "end macro" that can be used with, e.g., + .de and .ig requests. + + * man/groff.7 (Traps): Add new section summarizing + language feature. + +2020-11-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-common-u (doc-footer): When performing + double-sided page layout, set page number on outside of _recto_ + {odd-numbered} pages, as is conventional and for consistency + with man(7). + + * tmac/groff_mdoc.7.man + (Formatting with groff, troff, and nroff): Document what + double-sided layout (not "printing") means. Also correct + description of continuous rendering, which implied that page + headers and footers were not written at all, and used an + incorrect groff driver name. + + Fixes <https://bugs.debian.org/919890>. Also see: + https://lists.gnu.org/archive/html/groff/2019-01/msg00021.html + Thanks to Ralph Corderoy for the discussion. + + * tmac/tests/doc-D_places_page_numbers_correctly.sh: Test it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2020-11-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-common-u (doc-header): Fix infinite loop when + attempting to trim header string (like "FTP(1)") to fit when the + available title length won't allow even extreme shortening. + Measure the string before and after calling .substring on it, + and break out of loop if it didn't get shorter. + + Problem dates back to at least + ed63b0ae76a611b581601a1afc192f6a7367be6f (7 July 2002), possibly + as far as the Great Mdoc Rewrite of + 058f72af832fc68488d33cd09ec819e5c560fa09 (23 March 2001). + + One can never check loop invariants too many times... + + Fixes <https://bugs.debian.org/411227>. + + * tmac/tests/\ + doc-do_not_loop_infinitely_when_shortening_headers.sh: Test it. + * tmac/tmac.am (tmac_TESTS): Run test. + +2020-11-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/nroff/nroff.sh: Recognize -b and -z options and pass + them through to troff. Document them in usage message. + * src/roff/nroff/nroff.1.man: Document new -b and -z options. + +2020-11-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/div.cpp (top_level_diversion::change_trap): + Emit error diagnostic if an attempt is made to move an unplanted + macro. This could have been a warning, as it's pretty harmless + {though possibly a big surprise to anyone who was wondering why + their .ch was a no-op}, but there's no good warning category for + this kind of problem and I am not about to start a bike shed + discussion about it right now. + +2020-11-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi: Update. Add introductory material. Rewrite + the first section of the "gtroff Reference" chapter of our + Texinfo manual. It is written as an introduction for readers + who want to go straight to "raw" troff without knowing much or + anything about existing macro packages. Thanks to Dave Kemper + and John Gardner for feedback and support. + + Clarify whitespace usage. "Whitespace" is defined in this + manual as "spaces, tabs, and newlines". Say only "spaces and + tabs" when newlines should not be included. + + Rename "Font Files" to "Device and Font Files". + + Rename "Manipulating Filling and Adjusting" to "Manipulating + Filling and Adjustment". + + Update discussion of "copy mode". Rename from "copy-in mode", + which I don't think eludicdated anything; is there a "copy-out + mode"? Rename nodes accordingly. Attempt to explain more + clearly. Recast to shift emphasis to what _isn't_ merely copied + in copy mode, since that is what seems to cause confusion among + the inexperienced. + + Update "Conditionals and Loops". Add introductory paragraph. + Add nodes/subsections "if-then" and "Conditional Blocks". Add + subsection "Conditional Blocks" to explain the behavior of the + \{ and \} escapes much more precisely. I don't think this + syntactical area is well understood. Supply examples. + +2020-11-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + Add style checks to man(7) macro package. + + Not otherwise documented yet; experimental--subject to change. + + * tmac/an-old.tmac: Initialize CHECKSTYLE to false if not + already set. + (an-style-warn): New macro emits diagnostic of type "style" when + called if CHECKSTYLE register is true. + (TH): Call an-style-warn if fewer than two or more than five + arguments are seen. + (RI, IR, IB, BI, RB, BR): Call an-style-warn if fewer than two + arguments are seen. + +2020-11-11 Bertrand Garrigues <bertrand.garrigues@laposte.net> + + Update copyright. + + * update-copyright.sh: use gnulib's 'update-copyright' script. + Pass this script in directories 'arch', 'contrib', 'font', + 'man', 'tmac', 'src' and on a list of extra files. + + * FOR-RELEASE: mention this point. + +2020-11-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/preconv/preconv.1.man (Description): Fix error: + groff's -K option, not -k, specifies a character econding (and + overrides GROFF_ENCODING in the environment). Also explain how + valid encoding strings are determined. + + Thanks to Bjarni Ingi Gislason for the report. + + Fixes <https://savannah.gnu.org/bugs/?59445>. + +2020-11-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/table.cpp (table::compute_separation_factor): + Add word "table" to diagnostic message to better cue the user + that it is produced by roff that has been injected into the + document by the tbl(1) preprocessor. The other 3 such possible + diagnostic messages already do this. Thanks to Bjarni Ingi + Gislason for bringing the inconsistency to light. + + Fixes <https://savannah.gnu.org/bugs/?59443>. + +2020-11-07 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/groff_mdoc.7.man (Predefined strings): Ensure the table + fits even on ASCII and Latin-1 terminals. Thanks to Bjarni Ingi + Gislason for the report. + + Fixes <https://savannah.gnu.org/bugs/?59424>. + +2020-11-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/groff_mdoc.7.man (General text domain/Enclosure and + Quoting Macros): Fix errors in macro descriptions. + <.Dq>: Encloses its arguments in directional double quotes where + available. + <.Eq>: Misrendered example; say "XstringY" rather than + "XXstring". + <.Sq>: Encloses its arguments in directional single quotes where + available. + +2020-10-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + Add support for CS and CT registers to mdoc(7), just like in + man(7), from a year ago. + + * tmac/doc.tmac-u (doc-print-recursive): Call .stringup on each + argument if register doc-do-capitalize is true. + * tmac/mdoc/doc-common-u (Dt): Call .stringup on + doc-document-title if \n[CT] is true. + (Sh): Set doc-do-capitalize to value of \n[CS]. Set + doc-do-capitalize false before returning. + * tmac/mdoc/doc-ditroff-u: + * tmac/mdoc/doc-nroff-u: Set CS and CT registers to 0 (false) + if the user has not defined them. + + * tmac/groff_mdoc.7.man \ + (Formatting with groff, troff, and nroff): Document it. + + * tmac/tests/doc-CS_works.sh: + * tmac/tests/doc-CT_works.sh: Test it. + * tmac/tmac.am (tmac_TESTS): Run tests. + +2020-10-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (do_overstrike, do_bracket) + (do_name_test, do_expr_test, do_zero_width, do_width) + (do_special, do_if_request, read_color_draw_node): Improve + diagnostic messages for missing closing delimiters by describing + the incomplete structure and the problem token. + (read_rgb, read_cmy, read_cmyk, read_gray): Improve English + syntax of diagnostic message when color definition missing. + +2020-10-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-ditroff-u: + * tmac/mdoc/doc-nroff-u: Recognize but ignore the groff_man(7) + string HF and registers FT, IN, P, SN, and X (by initializing + them empty or zero if they are not set). This reserves them so + that they don't become used for divergent purposes. man(1) + programs set these and other parameters already handled (like + LL) to configure page rendering, and it would break the + macro-package agnosticism afforded by andoc.tmac to expose + different externally-programmable registers and strings. + * tmac/groff_mdoc.7.man \ + (Formatting with groff, troff, and nroff): Document this. + +2020-10-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac: Implement \*< and \*> strings for subscripting. + groff ms has had (extension) strings for superscripting since + 1991 at the latest, and the asymmetry possessed me of a madness. + Both pairs of string names follow similar usage in Eric Allman's + "me" macros. + + * NEWS: + * doc/groff.texi: + * tmac/groff_ms.7.man: Document it. + +2020-10-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/groff_mdoc.7.man (Predefined strings): Fix error: the + \*[Lq] and \*[Rq] strings degrade to neutral double quotes (") + on "nroff" devices (-Tascii and -Tlatin1), not "``" and "''". + +2020-10-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac (ds*end!0): Improve diagnostic to mention .RD. + +2020-10-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/s.tmac: Revise diagnostic messages. Define a common + prefix string, starting all such messages with "s.tmac". + Continues the long process of fixing Savannah #52463. Drop the + word "macro" from diagnostic since this will now be clear from + the prefix. Prefix every macro name in a diagnostic message + with a leading dot; this was already done in four cases. + (cov*first-page-init): Use temporary string to avoid multi-line + diagnostic message. + (@NH): Use temporary string to prevent overlength line. + + A further benefit of this revision is that index information + produced by ms's .IX macro (which writes to the standard error + stream) will now be trivially easy to extract even for documents + that cause diagnostic messages. One can simply filter them with + grep -v '^s\.tmac:' + or similar. + +2020-10-28 Ingo Schwarze <schwarze@openbsd.org> + + * man/roff.7.man, tmac/groff_man.7.man.in: Correct man(7) + history. + +2020-10-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + Fix ms .R macro to work as documented, by handling its arguments + instead of ignoring them. + + * tmac/s.tmac (R): Delete. During set up, call + par*define-font-macro for R font just as we do for B, I, and BI. + + Problem dates back at least to groff 1.02, June 1991. + + * tmac/tests/s_R-handles-its-arguments.sh: Test it. + * tmac/tmac.am (tmac_TESTS): Run test. + + Fixes <https://savannah.gnu.org/bugs/?59348>. + +2020-10-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + Fix ms .TC macro by allowing it to actually use lowercase Roman + numerals for the page(s) of the table of contents when a custom + title (header or footer) is defined containing '%'. + + As a side effect, eliminate the PN register, which was + apparently misused because it was undocumented and had a name + just long enough to be both suggestive and ambiguous. Another + pin goes into my Ken Thompson voodoo doll. + + * tmac/s.tmac (IX): Write out page number of index term(s) using + the % register (instead of PN), obtaining whatever format is + assigned to the register at that time. + (CH): Similarly, output %, not PN, in the center of the default + heading. + (PT): Save the format of %, set it to decimal, copy its value to + a new register, pg*page-number-in-decimal, then restore %'s + previous format. Compare the new register, not %, to 1 to + determine whether special page one behavior should be used. + (pg*end-page): Assign pg*next-format to %, not PN. + (XA): Define toc*num with the interpolation of %, not PN. + + * tmac/tests/s_TC-works-with-percent-in-custom-titles.sh: Test. + * tmac/tmac.am (tmac_TESTS): Run test. + + Problem appears to be very old; as I read it, Larry Kollar was + complaining of it in his ms.ms document over 20 years ago. + + Fixes <https://savannah.gnu.org/bugs/?59345>. + +2020-10-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * man/groff.7 (Requests/Request short reference) <.af>: Fix + error; "l" is not a valid register format. Explain what the + request does, and the default format, as tersely as possible. + +2020-10-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + Use only `malloc()` and `free()` to manage memory of paths + opened by the parser instead of mixing in C++ new/delete + management under some runtime-dependent circumstances. + + * src/libs/libgroff/relocate.cpp (relocatep): Use `malloc()`, + not new. + * src/roff/troff/input.cpp (process_macro_file) + (process_startup_file, macro_source): Use `free()`, not + `{a_,}delete()`. + + Thanks to an anonymous contributor for the report and patch. + + Fixes <https://savannah.gnu.org/bugs/?56694>. + +2020-10-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + * man/groff_char.7.man (Description/Special character escape + forms): Clarify discussion of Unicode Normalization Form D and + its applicability to code points acceptable in Unicode numeric + special character escapes. Also document that these escapes + must use uppercase hexadecimal digits. + + Attempts once again to slay the unkillable beast that is + <https://savannah.gnu.org/bugs/?57618>. + +2020-10-21 Ingo Schwarze <schwarze@openbsd.org> + + On systems without NAME_MAX, use FILENAME_MAX as a last resort. + + Problem reported by Eli Zaretskii <eliz at gnu dot org> + on MS Windows in https://savannah.gnu.org/bugs/?55449 + +2020-10-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/env.cpp (environment::possibly_break_line): + Emit break warning and return if the output width is not + positive. The code assumes that it will be and loops infinitely + if it isn't. I _think_ this is because we're not able to get + width data for (some?) CJK glyphs. Based on a patch by Osamu + Sayama. + + * src/roff/groff/tests/\ + do_not_loop_infinitely_when_breaking_cjk.sh: Test it. + * src/roff/groff/groff.am: Run test. + + Fixes <https://savannah.gnu.org/bugs/?44018>. + +2020-10-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/table.cpp (table::init_output): Save the value + of \n[.tabs] when starting a table. In the reset macro, restore + the saved value. + + Based on a patch by Bjarni Ingi Gislason (tweaked to use a more + normative preprocessor symbol; "REG"s aren't "NAME"s). + + * src/preproc/tbl/tests/save-and-restore-tab-stops.sh: Test it. + * src/preproc/tbl/tbl.am (tbl_TESTS): Run test. + + Fixes <https://savannah.gnu.org/bugs/?42978>. + +2020-10-20 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/nroff/nroff.sh: Recognize -E option and pass it + through to troff. Document it in usage message. + * src/roff/nroff/nroff.1.man: Document new -E option. + + Based on a patch by Ingo Schwarze. + + Fixes <https://savannah.gnu.org/bugs/?44289>. + +2020-10-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac: Stop remapping ` and '. Our own pages now + appear to be clear of wrong-quote problems, so let's make them + visible if they recur. Those who don't want to fix bad man + pages (distributors, site admins) can restore the mappings in + their man.local files. + +2020-10-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (an-warn): New; emits warning diagnostic. + (R): Use new macro instead of .tm* requests directly. + +2020-10-18 Ingo Schwarze <schwarze@openbsd.org> + + #include "config.h" before <stdio.h> + + Required with e.g. gcc 4.2.1 because gnulib/lib/stdio.in.h + uses the "restrict" keyword since this gnulib commit: + commit 182afcba2635cbff91240656c7fb3742dd23ab6f + Author: Bruno Haible <bruno@clisp.org> + Date: Sat Feb 22 20:57:30 2020 +0100 + + Otherwise, the build may die from the declaration of + various printf-like functions with messages like: + ./lib/stdio.h:851: error: expected ',' or '...' before 'fp' + + * src/libs/libgroff/assert.cpp, src/libs/libgroff/errarg.cpp, + src/libs/libgroff/error.cpp, src/preproc/eqn/eqn.ypp: + #include "config.h". + +2020-10-18 Bertrand Garrigues <bertrand.garrigues@laposte.net> + + hpftodit: incorrect 'delete' after new[] + + * src/utils/hpftodit/hpftodit.cpp (output_font_name): use + 'delete[]'. + + Fixes bug #55331. Found by David Binderman, fixed by Ingo + Schwarze. + +2020-10-18 Bertrand Garrigues <bertrand.garrigues@laposte.net> + + preconv: don't use libuchardet if input is stdin + + * src/preproc/preconv/preconv.cpp (do_file): don't call + detect_file_encoding if input file is "-" + + This fixes the failure on MS-Windows described #55334, however + this does not fix the encoding detection with uchardet if the + input is stdin (the user would have to pass with -D the correct + encoding as explained in the man page). + +2020-10-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/eqn/lex.cpp (troff_defs): Set the "..." token on + the baseline, not vertically centered, aligning the actual + behavior with what our eqn(1) man page has claimed since 2007. + + Fixes <https://savannah.gnu.org/bugs/?59285>. + +2020-10-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grops/grops.1.man + (Usage/TrueType and other font formats): Remove dead URL to + ttftot42 utility. Update URL to fontforge tool. Replace much + of the discussion with an example, motivated by Jordan Torbiak's + "groff-install-font" script on GitHub Gist, of how to add the + Roboto Slab Regular font to a user-local groff font directory + {and how to test it, too}. + + Fixes <https://savannah.gnu.org/bugs/?58077>. + +2020-10-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/afmtodit/afmtodit.pl: Report program name in warning + diagnostics. + + Continues the long process of fixing Savannah #52463. + +2020-10-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac: Add fallback for lq, rq strings. + + Define \*(lq and \*(rq as '"' if the output device has no \(lq + or \(rq special character escapes defined (respectively). + + This is a bit belt-and-suspenders for groff since our output + devices all guarantee availability of these glyphs, but if this + macro file gets used with other implementations (and if they + support the 'c' conditional), it should prevent the strings from + producing empty output. + + Man page writers should simply use \(lq and \(rq unless they are + aiming for pathological levels of portability (e.g., composing + man pages today for consumption on simulators of 1980s Unix + systems). + +2020-10-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac: Define an-end with .de1. We need to define + an-end with de1 (execute macro with compatibility mode off) + because, as of 37b4180a27a6eeaea429e40ec278abefcda7f3a7 (11 + October), it can now be called from a trap executing in a + context whence compatibility mode might be on (namely, + "reload-doc" in andoc.tmac). + +2020-10-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/eqn/main.cpp (main): + * src/preproc/pic/main.cpp (main): + * src/preproc/tbl/main.cpp (main): + * tmac/eqnrc: + * tmac/troffrc: Perform checks of register and macro definitions + with a .do request, since we might be in compatibility mode. + +2020-10-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (do_if_request): Emit warning of type + "syntax" if a groff conditional expression extension is used + when compatibility mode is active. + + * doc/groff.texi: + * src/roff/troff/troff.1.man: Update description of "syntax" + warning type to be more general. It was inaccurate, referring + only to "dubious syntax in numeric expressions", which was not + the case. Instead it was being used only for poor construction + of character classes with the .class request. + +2020-10-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/main.cpp (main): Stop ignoring -T. GNU tbl + was undocumentedly ignoring the -T option; apparently IRIX tbl + implemented it, something on the system called tbl with that + option (I'm guessing IRIX's man(1)) and its users spammed James + Clark with bug reports. We can probably weather the volume of + such spurious reports from IRIX users today. + +2020-10-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/main.cpp (main): Clarify fatal diagnostic in + generated document by informing the user that the program is + aborting, and also that it is groff extensions that are required + rather than GNU troff per se (since Heirloom Doctools troff + claims groff extension support via the .g register). + +2020-10-14 Ingo Schwarze <schwarze@openbsd.org> + + In groff(1), fix the combination of -v with -k, -j, and -J. + + * src/roff/groff/groff.cpp: Pass the -v option through to the + preconv, chem, and ideal preprocessors, just like for all + other preprocessors, to print the version of the preprocessor + and to avoid garbage output. + + Bugfix patch from Eli Zaretskii <eliz at gnu dot org> + submitted in: https://savannah.gnu.org/bugs/?55297 + +2020-10-12 Bertrand Garrigues <bertrand.garrigues@laposte.net> + + Update 'gnulib' submodule. + + * gnulib: now points on d60a35e94c4f5b8f09f15828242418f5073d46e7 + from 'gnulib' repository. + + * configure.ac: minimum autoconf version is now 2.64 due to + gnulib upgrade. + + * FOR-RELEASE: add the gnulib update to the checklist. + +2020-10-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/andoc.tmac: When switching between macro packages in + andoc and using continuous-rendering mode, flush any partially + collected output line and write page footer. + (reload-doc): Call an-end if it is defined. + (reload-man): Call doc-end-macro if it is defined. + * tmac/tests/andoc-flush-between-packages.sh: Add regression + test. + * tmac/tmac.am (tmac_TESTS): Run test. + + Fixes <https://savannah.gnu.org/bugs/?59106>. + +2020-10-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/andoc.tmac: Remove traps set by mdoc package by the names + they actually use. + * tmac/tests/andoc-clear-doc-traps.sh: Add regression test. + * tmac/tmac.am (tmac_TESTS): Run test. + + Fixes <https://savannah.gnu.org/bugs/?59246>. + +2020-10-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/table.cpp (table::init_output): In the release + macro written to the output, reword the warning diagnostic that + is emitted when a table row is to be output without enough room + before the next page location trap. The former wording said + that a "text block" would not fit on the page, and that is + normally how table rows grow longer than one line in the first + place. However, there are other ways the conditional can be + satisfied, as witnessed in Savannah #57665, so simply say what + is known; that the table _row_ overruns the space to the next + trap (we say the row won't "fit on [the] page"). + + Fixes <https://savannah.gnu.org/bugs/?59233>. + +2020-10-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/table.cpp + (double_line_entry::double_line_entry): + (double_line_entry::simple_print): Remove garbage lines + inadvertently added in previous commit. + +2020-10-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + Stop tbl from injecting spurious blank lines (and emitting + spurious warnings about tables and "text blocks" not "fitting on + a page") into long tables in man pages when continuous rendering + is used (the default for nroff output devices). + + * src/preproc/tbl/table.cpp (USE_KEEPS_REG): New preprocessor + symbol stores name of groff register for dynamic determination + of keep usage. + (table::init_output): If the NOKEEP flag is not set, then in + generated groff output, see if the usekeeps register is defined; + if not, define it and enable usage of keeps. + (table::do_row): In groff output, check usekeeps register before + calling keep and release macros. + (table::do_bottom): In groff output, check usekeeps register + before calling release macro. + + * tmac/an-old.tmac (TS): Set the usekeeps register used by tbl + to the logical complement of the man(7) cR (continuous + rendering) register. + + * tmac/tests/an-old_TS_do_not_keep_tables_when_cR_set.sh: Add + regression test. + * tmac/tmac.am (tmac_TESTS): Run test. + + Problem appears to date back to the introduction of continuous + rendering in groff 1.17 (3 May 2001). + + Fixes <https://savannah.gnu.org/bugs/?57665>. + +2020-10-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/table.cpp (simple_entry::position_vertically): + (block_entry::position_vertically): + (table::determine_row_type): + (printfs): Update assertions to indicate what actually went + wrong. + +2020-10-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/node.cpp: Make diagnostics slightly more + informative in unusual error cases. + (real_output_file::~real_output_file): If ferror() reports error + status on a stream say that, instead of "error writing". If it + does not, but fflush() fails on the stream, describe the flush + as failing, and use strerror() since fflush() sets errno. If + pclose() fails, say that we were unable to close a pipe instead + of repeating the name of the C library function to the user, who + might not be a C programmer. Report strerror() in this case and + for a failing fclose(). + (real_output_file::flush): Repeat updated fflush() logic from + previous function. + +2020-09-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (register setup): Make interaction of \n[C] + register and HTML output more clear in code and comments. + +2020-09-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/tests/regression_savannah_59202.sh: Reduce test + case. + +2020-09-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + Fix SEGV arising from recursing destructor. + + * src/roff/troff/node.h (output_file): Add class member + `is_dying` to track whether destructor has already been entered; + initialize false. + * src/roff/troff/node.cpp (real_output_file::~real_output_file): + Set `is_dying` true when destructor entered. + * src/roff/troff/div.cpp (cleanup_and_exit): Only delete + `the_output` object if it is not already being destroyed. + * src/roff/groff/tests/regression_savannah_59202.sh: Add test. + * src/roff/groff/groff.am (groff_TESTS): Run test. + + Thanks to "hackerb9" for reporting the problem. Problem appears + to date back to groff 1.02 (June 1991) or earlier. + + Fixes <https://savannah.gnu.org/bugs/?59202>. + +2020-09-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (register setup): Condition decisions on + \n[an-html] rather than a string comparison using \*[.T]; that + is what the register is there for. + +2020-09-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/andoc.tmac: Save alias to .ne request. + (reload-doc): Restore .ne request, which an-old.tmac meddles + with if continuous rendering is used. (The meddling ultimately + dates back to 777e2d262862621966c18d685a000cc88f432bc6, 26 + January 2002, which simply redefined .ne as empty on nroff + devices.) + +2020-09-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + Ship tests in distribution archive. + + * src/preproc/preconv/preconv.am (EXTRA_DIST): + * src/roff/groff/groff.am (EXTRA_DIST): + * src/roff/nroff/nroff.am (EXTRA_DIST): + * tmac/tmac.am (EXTRA_DIST): Add + $({preconv,groff,nroff,tmac}_TESTS), as appropriate. + + * src/roff/nroff/nroff.am (MOSTLYCLEANFILES): Stop adding + $(nroff_TESTS), which can only have unhappy consequences. + +2020-09-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tmac.am: Fix problem with recently-relocated mdoc macro + files not ending up in the right place in the distribution + archive. + (dist_tmac_DATA): Also include $(TMACUNSTRIPFILES). + (TMACMDOCSTRIPFILES): Rename from $(TMACMDOCFILES). Update + interpolation sites. + (TMACMDOCUNSTRIPFILES): New variable holds mdoc macro files in + the tmac/mdoc subdirectory. Stop adding these files to + $(TMACUNSTRIPFILES) since those reside in tmac/ directly. + (EXTRA_DIST): Add $(TMACMDOCUNSTRIPFILES). + ($(TMACSTRIPFILES)): Depend only on $(TMACUNSTRIPFILES). + ($(TMACMDOCSTRIPFILES)): Add new rule, much like the foregoing. + Depend on $(TMACMDOCUNSTRIPFILES) and copy files into tmac/mdoc. + (dist-hook, tmac-dist-hook): Remove; they no longer do any + distinct work. + + Fixes <https://savannah.gnu.org/bugs/?59186>. + +2020-09-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/tbl/table.cpp (table::init_output): + (table::compute_expand_width): + (table::compute_separation_factor): Use consistent format for + diagnostic messages. + - Do not spread a single diagnostic across multiple lines. + - Report messages in GNU Coding Standards format, that is: + - Report the name of the file the problem is in... + - ...then the line number... + - ...then the diagnostic severity level... + - ...then the specific problem. + +2020-09-26 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac: Emit warnings when configuration registers + are ignored when producing output for HTML. + +2020-09-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (an-p-footer): Define \*[an-page-string] if + (1) the output device is not HTML; (2) \n[X] has been defined; + and (3) the page number has not yet reached the threshold + defined by \n[X]. + + Fixes <https://savannah.gnu.org/bugs/?59179>. + +2020-09-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + Add regression test for Savannah #59179. + + * tmac/tests/an-old_X_register_works.sh: Do it. + * tmac/tmac.am (tmac_TESTS): Run it. + +2020-09-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac: + * tmac/doc.tmac-u: Emit more informative fatal diagnostic when + installed version of groff is too old. Report the version found + and explicitly note consequent abort. + +2020-09-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tmac.am: Regenerate stripped macro files upon changes to + any of their unstripped counterparts. This is crude, but they + weren't being regenerated at _all_. Defeating a central + function of Make is bad. + (TMACUNSTRIPFILES): New variable. Populate with -u files. + ($(TMACMDOCFILES) $(TMACSTRIPFILES)): Depend on + $(TMACUNSTRIPFILES). + +2020-09-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac: + * tmac/andoc.tmac: + * tmac/doc.tmac-u: + * tmac/s.tmac: Clarify fatal diagnostics by informing the user + that the program is aborting. + +2020-09-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/www.tmac.in: Revise diagnostic message handling. + (www:fatal): New macro handles fatal macro usage errors. + (www:lenstr): Use www:fatal instead of writing to standard error + with .tm (rather than www:error) and then calling .ab without + arguments, which produces an unsightly "User Abort." message. + (www:lenstr): + (www:splitstr): + (www:url_breaks): + (www:url_breaks_split): + (LINKSTYLE): Report expected number of arguments in diagnostics. + (www:fontstyle): Shorten diagnostic message. + +2020-09-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/div.cpp + (top_level_diversion::clear_diversion_trap): Fix copy and paste + error in diagnostic, which wrongly reported that a top-level + diversion trap couldn't be "set" when "clear"ed was meant. + +2020-09-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/grn/main.cpp (conv): + * src/roff/troff/node.cpp (suppress_node::tprint): Remove + embedded newlines from diagnostic messages. + +2020-09-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac: Move setup of remaining rendering option + parameters (registers C, D, P, and X) to end of file. + +2020-09-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (TH): Move setup of rendering parameter + registers IN and SN from here to the end of the file. Update + comments. + +2020-09-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac: Drop \*[an-empty] string. This string is + documented as preventing "looping" (presumably infinitely) if + someone calls a two-font macro with an inconvenient parameter; + the example shown is ".RB ( \\ )". This string was being + interpolated at the end of each argument pair to the two-font + macros BI, BR, IB, RB, and RI. This code dates back to groff + 1.10 (dc5351364982f78f8c630f1e856d692d4a82666f, 26 November + 1995). Did you notice a two-font macro missing? It was: IR. + Using it with the proscribed input fails to cause a problem; the + others similarly operate just fine when the empty string + interpolation is removed. Presumably at some point in the past + 25 years, this workaround became unnecessary. + (BI, BR, IB, RB, RI): Remove interpolations of string. + + * tmac/tests/an-old_avoid_two-font_denial_of_service.sh: Add + regression test. + * tmac/tmac.am (tmac_TESTS): Run test. + +2020-09-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac: Refactor continuous rendering handling. + Relocate set up of \n[cR] to end of file in parallel with other + rendering parameter management. Instead of conditionally + defining the an-ne and an-bp macros, define them + unconditionally. Also define them with .de instead of .de1, + since they will only be called within the contexts of macros + that are already running with compatibility mode off (i.e., the + public interface macros). Relocate definition of an-end to sit + alongside these other continuous-rendering-mode specific macros + and avoid a forward reference and scattering of \n[cR] + conditionals around the file. + (an-set-up-continuous-rendering): Define new macro to move + macros (and end macro) into place. Call it at the end of the + file only if cR eventually winds up being true. + +2020-09-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac: Improve name space management. Rename .ne + request to .an-ne instead of outright clobbering it (and in + parallel with .an-bp). Rename 'an-ne' register to 'an-need' to + prevent confusion with renamed request. + +2020-09-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac: Drop .ll hack for LL register. + + Drop the .ll hack for setting the line length on nroff devices. + + Once upon a time, the only way to get man pages to render on a + terminal at any width other than the nroff default of 65n was to + put an .ll request into the page--a mortal sin against + portability--or your man(1) program could sneak such a request + into nroff's input stream. + + Also, long ago, John Eaton of UT Austin wrote a man(1) program. + In a few years this implementation branched into two lines of + development, which I'll call man-db man (Wilford/Polacco/Watson) + and another, Brouwer/Lucifredi man, which as of this writing saw + its last release in 2011 (1.6g). + + The man and mdoc macros of groff 1.18 (July 2002) introduced an + LL register to configure the line length, respecting an -rLL + command-line option. The source change was made by Werner + Lemberg on 3 May 2002 and Colin Watson updated man-db man(1)--on + the same day!--to synthesize the option when calling groff. + + Later, in August 2005, Keith Marshall, a user of version 1.5m of + Brouwer/Lucifredi man(1), which did not set the LL register, + suggested that the existing .ll setting (technically, the value + of \n[.l], the only way the result of an .ll request could be + introspected) be honored in the absence of the LL register. + However, it is impossible to distinguish a user-supplied ".ll + 65n" request from nroff's default setting, which was in that + case overridden to the modern default of 78n. + + And so, in what is now git commit + f9d5df4aebd3d834b4084ffefa52a115e00dce38 (1 September 2005), it + was done. + + This led to (1) surprising behavior for users accustomed to old + methods and desirous of the nroff default and (2) lengthy + apologia in groff source code comments and the groff_man(7) man + page. + + Ironically, Brouwer/Lucifredi man(1) had already added support + for the LL register by the time of its 1.6 release two months + earlier (20 June 2005). (Curiously, it did so similarly to the + old .ll hack, by injecting an '.nr LL' request into groff's + input stream, rather than using the -r command-line option.) + Moreover, Marshall and the groff list were already aware of + this, but the change was accepted anyway because version 1.6 + was "too new"! (Distributions are slow sometimes, true...) + + Let us survey the field in 2020. man-db man(1) has supported + the LL register for eighteen years, and Brouwer/Lucifredi man(1) + for fifteen. Heirloom Doctools's man macros set the line length + to 78n on nroff devices unconditionally. mandoc(1) similarly + also always formats for 78 columns on terminals. groff's + mdoc(7) macros grew support for LL in parallel with man(7) in + 2002 and never added the \n[.l] introspection at all. + + There no longer seems to be any reason to preserve this hack. + + * tmac/an-old.tmac (initialization): Drop complex setup of LL + register. + (TH): Relocate line length reset; no behavior change. + (after .mso man.local): Initialize LL only if the user hasn't; + use device default in troff mode, and 78n in nroff mode. + + * tmac/groff_man.7.man.in (Options) <-rLL>: Stop documenting .ll + hack. + + Fixes <https://savannah.gnu.org/bugs/?58992>. + +2020-09-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tests/an-old_LL_init_sanely.sh: Add test. + * tmac/tmac.am (tmac_TESTS): Run test. + +2020-09-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/xditview/GXditview.ad: Widen the default geometry + to accommodate the width of a page rendered using the X100-12 + device. Display devices these days have much greater horizontal + resolution than they did 20 years ago. + +2020-09-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac: Use correct point size default for + X{75,100}-12 devices. + +2020-09-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/mdoc/doc-common-u (doc-prepare-section-heading): New + macro defines new string doc-sec-head to enable recognition of + mixed-case section headings in mdoc man pages. For example, + "Name" and "Description" are now recognized in addition to + "NAME" and "DESCRIPTION". + (doc-section-{name,synopsis,library,description,see-also,files, + authors}): Redefine strings to be mixed-case. Add trailing + comment guard per recommended best practice. + (Sh): Call doc-prepare-section-heading instead of + doc-first-parameter, and compare predefined section strings to + doc-sec-head instead of doc-str-dfp. + + * tmac/tests/doc-accept-mixed-case-section-headings.sh: Test it. + * tmac/tmac.am (tmac_TESTS): Run test. + * tmac/tests/doc-smoke-test.sh: Use mixed-case section headings. + +2020-09-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * makevarescape.sed: Use \[] form of special character escapes. + + The only man page we have that doesn't turn compatibility mode + off (neqn) also doesn't use any sed-substituted patterns where + characters replaced by a \[] special character escape form are + likely to be used. + + The @g@ command prefix is the main avenue for intrusion of such + escapes, but I think it improbable that many people are going to + include apostrophes, double quotes, carets, grave accents, or + tildes in the command prefix; some or all of these will pick + fights with the shell and require quoting that we don't + represent in man page text anyway. + + On top of that, neqn is largely a stub page. + + If it's a problem, a better fix than reverting this is to make + neqn switch out of compatibility mode like our other man pages. + +2020-09-03 G. Branden Robinson <g.branden.robinson@gmail.com> + + * FOR-RELEASE: Start a release checklist. We probably should + have done the afmtodit.tables update for 1.22.4. There were no + AGL changes and the Unicode decomposition changes were limited + to additions for Balinese (11), CJK compatibility ideographs + (5), and 13 code points outside the Basic Multilingual Plane. + +2020-09-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/afmtodit/afmtodit.tables: Regenerate using Unicode + 13.0.0. + +2020-09-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + make-afmtodit-tables: Automate AGL reassignments. + + Automate the procedure done manually in + b72b91e85e80a69304e6569db535bcca0e0ecab5 (9 April 2007), so that + it doesn't regress when we regenerate afmtodit.tables. + + * src/utils/afmtodit/make-afmtodit-tables: Do it. + * src/utils/afmtodit/afmtodit.tables: Regenerate it. + +2020-09-02 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/groff.1.man (Options) <-E>: + * src/roff/troff/troff.1.man (Options) <-E>: Document that -E + implies -Ww. + + Fixes <https://savannah.gnu.org/bugs/?59030>. + +2020-09-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * man/groff_char.7.man: Revise glyph descriptions. + + Fixes <https://savannah.gnu.org/bugs/?59031>. + +2020-09-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tty.tmac: Define fallback glyphs for Bell System logo + {non-breaking adjustable space} and radical extension and square + root extension (both dummy characters '\&') to suppress warnings + from groff_char(7). As none of these are encoded in Unicode it + seems unlikely they will become supported soon. + +2020-08-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/troff.1.man (Options) <-I>: The current working + directory is searched _last_, not first, unless the order is + altered with "-I .". + + * src/roff/groff/groff.1.man (Options) <-I>: Rearrange + description. + +2020-08-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + Update mdoc package to honor HY register as man does now, per + suggestion from Colin Watson. Recognize but ignore AD string + for man package compatibility (essentially "reserving" it), + though mdoc intentionally does not permit configuration of + adjustment. + + * tmac/mdoc/doc-ditroff-u: + * tmac/mdoc/doc-nroff-u: Do it. + + * tmac/mdoc/doc-common-u: Initialize \n[doc-hyphen-flags] from + \n[HY]. + + * tmac/groff_mdoc.7.man \ + (FORMATTING WITH GROFF, TROFF, AND NROFF): Document it. + +2020-08-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (TH): Reset inter-word and inter-sentence + spacing to default with each new page rendered. + + {To observe the problem prior to this change, + $ groff -mandoc groff_mmse.7 $any_other_man_page + groff_mmse(7) loads sv.tmac, which changes the sentence + spacing.} + +2020-08-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * PROBLEMS: Undocument the problem with test-groff and mdoc. + It's resolved. + + Fixes <https://savannah.gnu.org/bugs/?51073>. + +2020-08-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tmac.am (NORMALFILES, MDOCFILES): Drop unused variables. + ($(TMACMDOCFILES) $(TMACSTRIPFILES)): Scrub trailing whitespace. + Wrap long line. + +2020-08-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + mdoc: Relocate within build tree. + + The (modern) mdoc macro package has not been usable within the + build tree, unlike the others. This makes it more troublesome + to test changes, and frustrates deploying our test + infrastructure against it. Re-arrange the build tree to + resemble an installation tree closely enough for the macro + package to load. + + * tmac/doc-common-u: + * tmac/doc-ditroff-u: + * tmac/doc-nroff-u: + * tmac/doc-syms-u: Rename to... + * tmac/mdoc/doc-common-u: + * tmac/mdoc/doc-ditroff-u: + * tmac/mdoc/doc-nroff-u: + * tmac/mdoc/doc-syms-u: ...these. + + * tmac/tmac.am (TMACMDOCFILES): Look for files in tmac/mdoc. + ($(TMACMDOCFILES)): Create tmac/mdoc in build tree. + + Fixes <https://savannah.gnu.org/bugs/?51003>. + +2020-08-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + Add regression test for usable in-tree mdoc. + + * tmac/tests/doc-smoke-test.sh: Add test. + * tmac/tmac.am (tmac_TESTS): Run test. + +2020-08-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tests/an-old_TH_repairs_ad_damage.sh: + * tmac/tests/an-old_TH_repairs_hy_damage.sh: Add tests. + * tmac/tmac.am (tmac_TESTS): Run tests. + +2020-08-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (TH): Set hyphenation mode to user preference + with each new page rendered, in case a hostile page meddled with + '.hy' or '.nh'. + (after .mso man.local): Relocate setting of default hyphenation + mode here (instead of just before .mso man.local). Eliminate + conditional on \n[an-html]; this doesn't matter because + grohtml(1) doesn't support hyphenation anyway. If it does learn + to hyphenate, we should treat it the same as other output + devices in any case. Add comment explaining why we fall back to + different defaults depending on \n[cR]. + +2020-08-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (TH): Set adjustment to user preference with + each new page rendered, in case a hostile page meddled with + '.ad' or '.na'. + (after .mso man.local): Set the default adjustment mode only if + a -d option or man.local did not. Also do the same for the HF + string; relocate its definition here and make it similarly + conditional. Also update comment on setting of CS and CT + registers and style their conditionals consistently with the + rest of the package. + + * tmac/groff_man.7.man.in (Strings) <\*(AD>: Document it. + (Strings) <\*(HF>: Parallelize language with new \*(AD. + (Options) Expand introductory sentence to discuss -d and -r + options. + (Options) <-dAD>: Document default and likely values. Nobody + right-justifies or centers man page text; send the curious to + groff(7) for '.ad' request documentation. + (Options) <-dHF>: Document default and steer people to groff(7) + for '.ft' request documentation. + +2020-08-21 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac (set-an-margin): Rename... + (an-set-margin): ...to this. It was the only package-internal + register, macro, string, or diversion that wasn't named using + the "an-*" schema. + (TH, SH, SS): Update call sites. + +2020-08-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-ext.tmac (.ME, .UE): Restore hyphenation after + "punctuation" arguments have been output. The next token will + always be a space node, the end of the document, or similar. + + * tmac/tmac.am (tmac_XFAIL_TESTS): Mark the punctuation + hyphenation tests as expected to fail, because they now do. + +2020-08-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/ps.tmac: Define ordinary hyphen-minus as fallback + character for U+2011 (non-breaking hyphen). Prompted by + discussion with Dave Kemper in Savannah #58390. + +2020-08-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + Fix hyphenation bug. The UR/UE and MT/ME macros were much too + aggressive about turning hyphenation off. Disable it only when + writing the actual URL or email address. + + * tmac/an-ext.tmac (.MT, .UR): Stop disabling hyphenation here. + (.ME, .UE): Disable hyphenation right before output of + URL/address; restore it right before output of supplementary + arguments ("punctuation"). + + * tmac/tests/an-ext_ME_punct_hyphenates.sh: + * tmac/tests/an-ext_MT_body_hyphenates.sh: + * tmac/tests/an-ext_UE_punct_hyphenates.sh: + * tmac/tests/an-ext_UR_body_hyphenates.sh: Test behavior. + + * tmac/tmac.am (tmac_TESTS): Run tests. + +2020-08-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + Adapt to the fact that \: reënables hyphenation. Rename + "hyphenless [discretionary] break" to "non-printing break point" + in documentation. + + * doc/groff.texi (Manipulating Hyphenation): Rename "hyphenless + break" to "non-printing break point". Clarify that it is the + soft hyphen glyph, not necessarily a hyphen, that is ordinarily + written to the output on hyphenation breaks. Note that the + remainder of a word after \: is subject to hyphenation as + normal. Note (new) '\:\%' idiom for getting what people will + want at least some of the time. Update example to use it. + * makevarescape.sed: Insert \% after we insert \: to rewrite + slashes in filenames, to protect later portions of the filename + from hyphenation. + * man/groff.7.man (Escape Sequences/Escape short reference): + Rename "hyphenless break" to "non-printing break point". + * man/groff_diff.7.man (Language/Escape sequences): Resync with + our Texinfo manual. + * tmac/groff_man.7.man.in (Description/Hyperlink and email + macros): Rename "hyphenless break" to "non-printing break + point". + +2020-08-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + documentation: Re-christen 'ESCAPE_AMPERSAND'. + + s/zero[- ]width space character/non-printing input break/ + + * doc/groff.texi (Requests): Rename. Update conceptual index + entries; retain old name (with an appended "[sic]") to aid + readers accustomed to it. + (Ligatures and kerning): Update conceptual index entries. + Supply context ("effect on kerning"). + (Drawing requests): Update conceptual index entries. Supply + context ("effect on '\l'"). + * man/groff.7.man (Description): Rename in macro-advice-writing + shorthand. + (Escape Sequences/Escape short reference): Rename. + * tmac/groff_man.7.man.in (Description/Command synopsis macros + [style]: Rename. + (Description/Portability) [style]: Rename. + * tmac/groff_mdoc.7.man (TROFF IDIOSYNCRASIES/Macro Usage): + Rename. + (TROFF IDIOSYNCRASIES/Other Possible Pitfalls): Rename. + +2020-08-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/groff_man.7.man.in (Description/{Document structure + macros <.TH>, Horizontal and vertical spacing}): Fix erroneous + use of "flush left". The current uses were introduced by me, + but the page has borne incorrect uses of it as far back as 1999 + {in the description of .TP}. Simply say "with no indentation" + instead. + +2020-08-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/groff_man.7.man.in (Description/Number registers): Inform + reader that registers can be set in man.local file and + cross-reference it. + (Files/*/man.local): [style] Supply example of man.local + customizations, prompted by recent discussions on groff, + linux-man, and man-db mailing lists. + +2020-08-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tmac.am: Use a stamp file for m4 keyword check. + (M4CHECK): Add stamp file variable. + ($(M4CHECK)): Create stamp file if check succeeds. + +2020-08-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + Split groff_man(7) into two pages; one a (relatively) terse + reference and the other a tutorial and style guide. Both are + generated from the same source, which is processed by m4 into + two man page sources. + + * tmac/groff_man.7.man: Rename... + * tmac/groff_man.7.man.in: ...to this. + + * tmac/groff_man.7.man.in: Add m4 directives and define macros. + Protect m4 keywords in English from unintended expansion (this + affected the word "include"). Add new .TH and apropos lines for + style guide. Convert marker comments into m4 macros for content + control. Uncomment material intended only for basic reference + page. + + * tmac/tmac.am (man7_MANS): Add groff_man_style.7. + (EXTRADIST) Add groff_man.7.man.in. + (MOSTLYCLEANFILES): Add m4-generated man page sources + tmac/groff_man{,_style}.7.man. + Add targets to generate those same two pages from the renamed + file. Add target to grep the page for unprotected English m4 + keywords and halt the build if they are found. Make generation + of those pages depend on this new target. + +2020-08-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/groff_man.7.man: Add material on hooks and encoding. + (Description, ./Deprecated features): Stop identifying .PT and + .BT as "deprecated"; they shouldn't ever be called in man pages, + but that has never been their intention. + (Description): Identify character encoding and line-ending + requirements (tutorial/style-guide material). + (Description/Hooks): Add new subsection to house descriptions of + .PT and .BT. Add mnemonic expansions for both. + +2020-07-31 G. Branden Robinson <g.branden.robinson@gmail.com> + + * man/groff.7.man (Control Characters): Incorrect claims were + made. Double quotes can indeed be used to enclose arguments to + string interpolations. The statement about a leading " in a + string definition (or appendment with .as) was stated too + generally. The leading quote is not necessary to include + leading tab characters, which can be input as-is, even in + compatibility mode. + +2020-07-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + * man/groff.7.man (Requests/Request short reference/.ft): Fix + some outright damage in the description of the request; the + escape sequences that are synonymous with a nullary .ft had been + wrongly removed. + +2020-07-25 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/meintro.me: + * doc/meref.me: + * tmac/e.tmac-u: Remove postal address for Eric Allman. It's + probably decades out of date. Adjust footnote symbols. Thanks + to Dave Kemper for the bug report and the patch. Fixes + <https://savannah.gnu.org/bugs/?58726>. + +2020-07-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + Migrate macro packages from font CW to CR. The font name "CW" + {"constant-width"} is a legacy item we can dispose of (except + for the DVI device, which also has CWI for "constant-width + italic"), and much of the groff codebase already did starting + with commit 0de1d6d79cdb959ffa7dac3af77c2a36ef31873f {October + 2017}. Courier is available in the usual four styles {roman, + bold, italic, bold+italic}. + + * tmac/an-ext.tmac (.EX): Set font to R, not CW. The existing + .ft request was somewhat redundant with the '.do fam C' + immediately before, which set the font family to Courier. + * tmac/s.tmac (.UC): Use font CR, not CW. + +2020-07-23 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tty.tmac: Stop suppressing nonexistent font warning. + Prompted by a 2017 suggestion and patch from Bjarni Ingi + Gislason. Documents and macro packages that want to change the + font family should do so in awareness that this is meaningless + on terminal (nroff) devices (and -Thtml as well). + + Fixes <https://savannah.gnu.org/bugs/?51364>. + +2020-07-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/groff_man.7.man (.PP, .LP, .P): Fix error: these macros + do not reset the left margin. + +2020-07-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Strings): Document behavior of .ds request + when only one argument is supplied. (The string is defined as + empty.) Thanks to Dave Kemper for the report and the patch. + + Fixes <https://savannah.gnu.org/bugs/?58746>. + +2020-07-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Using Symbols): Fix error in .rfschar + description, which should refer to "font f" rather than "glyph + f". Thanks to Dave Kemper for the report and the patch. + + Fixes <https://savannah.gnu.org/bugs/?58767>. + +2020-07-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/groff_man.7.man (.EE, .YS): Fix error: refer to "initial + hyphenation setting" instead of "previous hyphenation mode". + Incidentally, this fact points out why putting ".hy 0" or ".nh" + in your man page is futile. + +2020-06-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + * man/groff.7.man (Requests/Request short reference): Fix error + in description of .hc; it changes the hyphenation character + rather than supplying an additional one. + +2020-06-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Groff Options): Remove editorial comment about + '-a' option being "useless". It isn't. Update example for + contemporary systems (like Debian) and to reflect the fact that + the GNU troff(1) man page needs to be preprocessed with tbl(1). + (Invoking grotty): Recast discussion of -c option, importing + much language from grotty(1) page rewrite from a year ago. Add + program index entries for col, more, and ul. Fix transposition + error in ISO document number. + + * src/devices/grotty/grotty.1.man (Description/Legacy output + format): Make slight wording changes prompted by content of + parallel section in our Texinfo manual. + + * src/roff/groff/groff.1.man (Options/-a): Parallelize with + first sentence of corresponding material in our Texinfo + manual. + + * src/roff/troff/troff.1.man (Options/-a): Parallelize with + our Texinfo manual. + + Fixes the rest of + <https://savannah.gnu.org/bugs/?55278>. + +2020-06-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + * man/groff_diff.7.man (Language/Long names): Fix error: groff + adds three new requests with short names, not two. List them in + an adjacent comment. + +2020-06-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-ext.tmac (.ME, .UE): Fix portability issue. While + widely supported, the \$* escape is not documented in CSTR #54. + If groff is not the typesetter, append macro arguments using + \$1, \$2, ..., \$9 instead. + +2020-05-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * man/groff.7.man (Numerical Expressions): Fix error: negative + expressions evaluate false, not true as was implied. + Parallelize descriptions with our Texinfo manual and + groff_diff(7) (in abbreviated form). + +2020-05-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Manipulating Filling and Adjusting): Fix error + in code sample: missing 'n' in number register interpolation. + +2020-05-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/preconv/tests/smoke-test.sh: Make BOM detection + override less hinky (i.e., use more normative input). Add tests + for all five detected BOMs. + +2020-05-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/env.cpp (space_size): Prevent assertion + failure. If an argument to the .ss request is negative, throw a + range warning and ignore it. + * src/roff/groff/tests/regression_savannah_58337.sh: Add test. + * src/roff/groff/groff.am (groff_TESTS): Run test. + + Fixes https://savannah.gnu.org/bugs/?58337. + +2020-05-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + Update documentation of .ss request. + + * doc/groff.texi (Manipulating Filling and Adjusting): Rewrite + documentation of .ss request and \n[.ss] and \n[.sss] escapes. + Note that negative values are not permitted in either argument + to .ss. Use new terminology, "minimal inter-word spacing" and + "additional inter-sentence spacing" for clarity. Clarify that + additional inter-sentence spacing is only used when the output + line is not full when the end of a sentence occurs. Add index + nodes to help readers find discussion of details of spacing + between words and sentences. Move discussion of differences + from AT&T troff to section "Implementation Differences". Update + example to more closely resemble a real-world case, use second + argument to .ss request, and eliminate hackish use of .nop + request. + + * man/groff_diff.7.man (New number registers): Recast in + parallel with the foregoing. + + * man/groff.7.man (Read-only registers): Use new terminology and + describe \n[.ss] and \n[.sss] in meaningful terms, not by + reference to arguments to the .ss request (which wasn't even + accurate, because these registers have default values). + + Fixes https://savannah.gnu.org/bugs/?54101. + +2020-05-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + Undocument plans to support end-of-file GNU Emacs coding tags. + + * src/preproc/preconv/preconv.cpp (check_coding_tag): Update + comments. + (detect_file_encoding): Alter debugging output so it's easier to + grep and verify Emacs coding tag detection. + + * src/preproc/preconv/preconv.1.man (Bugs): Delete; its sole + concern was the absence of this feature. + (Usage): Document detection algorithm in more detail. Note + which detection methods don't work on unseekable input (pipes). + Offer recommendations for those struggling with encoding + detection. + (Usage/Coding Tags): Stop manipulating line adjustment. Use + hyphen-minus (\- escape) characters in coding tag names, since + they are literals that one might copy and paste. Stop + referencing XEmacs, whose development appears moribund. + (See Also): Add cross-references to iconv(3) and locale(7) man + pages. + + * src/preproc/preconv/tests/smoke-test.sh: Test each of the + steps in the detection algorithm. + * src/preproc/preconv/preconv.am: Run test. + (preconv_TESTS): Add new variable. + (TESTS): Append $(preconv_TESTS). + +2020-05-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/afmtodit/afmtodit.pl: Format usage message with + full capitals for parameters, and break out -v option in a + separate "synopsis". + +2020-05-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + * font/devpdf/util/BuildFoundries.pl: Stop throwing away + diagnostics from afmtodit. This results in only one extra line + of build output: + + both Upsilon1 and Upsilon map to *U at .../afmtodit line + 6413. + +2020-05-05 G. Branden Robinson <g.branden.robinson@gmail.com> + + Correct documentation of .pm request. + + * man/groff.7.man (Requests/Request short reference): The .pm + request's classical behavior was described instead of groff's, + and omitted mention of strings and diversions; correct it. + + * man/groff_diff.7.man (Implementation Differences): Document + this difference between AT&T troff and groff. + + * doc/groff.texi (Debugging): Relocate description of .pm + behavioral difference... + (Implementation Differences): ...hither. + +2020-04-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/addftinfo/addftinfo.cpp (usage): + * src/utils/tfmtodit/tfmtodit.cpp (usage): Add "usage:" prefix + to messages documenting auxiliary modes of invoking the program. + The output doesn't look right without one, and it feels + dishonest to not document the relevant options (-v, --version) + disjunctively. I'm trying to strike a balance between the + ultra-terse BSD approach and the ultra-garrulous GNU one (see, + e.g., ls(1)). Likely both camps will be unhappy. :-/ + +2020-04-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/tfmtodit/tfmtodit.cpp (read_map): Report invalid + character code from map file in diagnostic. + (main): Report invalid skew character position in diagnostic. + Explicitly report insufficient arguments in addition to usage + message. Lift invariant computed expressions out of loops (more + to shorten long lines than because I think the compiler won't + figure it out). Give content to "impossible assertion". + (tfm::load): Capitalize TFM initialism in diagnostics. + (usage): Use full capitals for parameters as is conventional. + Document disjunction of -v/--version flag from other + invocations. + +2020-04-29 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/utils/addftinfo/addftinfo.cpp (usage): Add overloaded + version that accepts a constant string argument, which emits the + argument as a diagnostic and then calls usage(). + (main): Add diagnostics to usage message where the problem is + clear. Add comment explaining why it sometimes isn't. + (usage): Refactor main usage message (which prints the summary) + to report the actual names of the accepted option arguments + instead of just "-param", which is not literally accepted. + + Sort param_table alphabetically for use by the usage message. + +2020-04-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + Delete groffer. + + Per discussion on the groff development mailing list, there is + no desire to retain the maintenance of this portion of the groff + distribution. + + See + <https://lists.gnu.org/archive/html/groff/2020-04/msg00051.html> + et seq. + + * contrib/groffer: Recursively delete. + + * Makefile.am: + * arch/mingw/mingw.am: Stop building groffer. + + * m4/groff.m4 (GROFF_GROFFERDIR_DEFAULT): + (GROFF_GROFFERDIR_OPTION): Delete; remove "--with-grofferdir" + configuration option. + * configure.ac: Stop calling these macros. + + * MANIFEST: + * NEWS: + * PROJECTS: + * TODO: + * contrib/chem/chem.1.man: + * contrib/chem/examples/122/README.txt: + * contrib/chem/examples/README.txt: + * contrib/glilypond/glilypond.1.man: + * contrib/gperl/gperl.1.man: + * contrib/gpinyin/gpinyin.1.man: + * contrib/groff_filenames/groff_filenames.5.man: + * man/groff_font.5.man: + * man/roff.7.man: + * src/roff/groff/groff.1.man: + * src/roff/grog/grog.1.man: + * src/utils/addftinfo/addftinfo.1.man: + * tmac/groff_trace.7.man: Delete references to groffer. + +2020-04-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/include/curtime.h: #include <time.h> if we're returning + a time_t from current_time(). + + * src/libs/libgroff/curtime.cpp (current_time): Quote + $SOURCE_DATE_EPOCH variable content in diagnostics produced due + to bad input since it's under user control and could have all + kinds of bogosity in it (like whitespace). + +2020-04-19 G. Branden Robinson <g.branden.robinson@gmail.com> + + * **/*.{man,tmac}: Save compatibility mode robustly. + + Use new \n[.cp] register to save compatibility mode. + + Use register names based on the filename (at the source + maintenance level) to avoid clobbering other files' saved + compatibility modes. + + * tmac/html.tmac: Eliminate test of saved-compatibility + register by moving its body inside the block where compatibility + mode is off. This is the only part of this changeset that was + not automated. + + Fixes <https://savannah.gnu.org/bugs/?58162>. + +2020-04-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + Implement new read-only .cp register. + + Within a .do request, \n[.cp] holds the saved value of + compatibility mode. + + The register \n[.cp] is specialized and may require a statement + of rationale. When writing macro packages or documents that use + groff features and which may be mixed with other packages or + documents that do not—common scenarios include serial processing + of man pages or use of the .so or .mso requests—you may desire + correct operation regardless of compatibility mode in the + surrounding context. It may occur to you to save the existing + value of \n(.C into a register, say, _C, at the beginning of + your file, turn compatibility mode off with “.cp 0”, then + restore it from that register at the end with “.cp \n(_C”. At + the same time, a modular design of a document or macro package + may lead you to multiple layers of inclusion. You cannot use + the same register name everywhere or you risk “clobbering” the + value from a preceding or enclosing context. The two‐character + register namespace of AT&T troff is confining and mnemonically + challenging; you may wish to use groff's more capacious + namespace. However, attempting “.nr _my_saved_C \n(.C” will not + work in compatibility mode; the register name is too long. + “This is exactly what .do is for,” you think, “.do nr + _my_saved_C \n(.C”. The foregoing will always save zero to your + register, because .do turns compatibility mode off while it + interprets its argument list. What you need is: + .do nr _my_saved_C \n[.cp] + .cp 0 + at the beginning of your file, followed by + .cp \n[_my_saved_C] + at the end. As in the C language, we all have to share one big + namespace, so choose a register name that is unlikely to collide + with other uses. + + * src/roff/troff/input.cpp (do_request, init_input_requests): + Implement it. + + * doc/groff.texi: + * man/groff.7.man: + * man/groff_diff.7.man: Document it. + + * src/roff/groff/tests/dot-cp_register_works.sh: Test it. + * src/roff/groff/groff.am (groff_TESTS): Run test. + + Enables a fix for + <https://savannah.gnu.org/bugs/?58162>. + + Thanks to John Gardner and Ingo Schwarze for the discussion. + +2020-04-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Implementation Differences): + * man/groff_diff.7.man (New requests): Rewrite description of + .do request, and replace example with a more illustrative one. + + * man/groff.7.man (Request short reference): Rewrite description + of .do request briefly. + +2020-04-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Implementation Differences): Remove incorrect + claim. The .C register cannot be manipulated manually. + +2020-04-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/tests/smoke-test_html_device.sh: Simplify + charmap test. + +2020-04-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + It's too easy for the nroff version to get desynced from the + groff version when we're running test cases, leading to spurious + results. Make it easier to see a discrepancy. + + * src/roff/nroff/nroff.sh: Call groff with -v or --version when + we are called that way. Let test cases tell us to use + test-groff as groff with an environment variable. + + * src/roff/nroff/tests/verbose_option_works.sh.in: Rename to... + * src/roff/nroff/tests/verbose_option_works.sh: ...this. Check + the nroff version being tested against the groff version being + wrapped. This exposes a bug; the system groff rather than the + build tree groff was being invoked. Refactor. Stop messing + with @GROFF_BIN_PATH_SETUP@ (enabling the rename); instead, let + test-groff handle that for us. Locate it and export the + variable GROFF_TEST_GROFF so nroff can find it. Because we + manipulate $PATH to run the tests, the $PATH of an installed + groff system will _always_ differ from that used by a build + tree; ignore it in the test cases. Dispose of bashisms and set + shebang to /bin/sh. + + * src/roff/nroff/nroff.am: Stop generating the above test + script. It can now be run as it ships. + +2020-04-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + Make our assert() C99-conformant. + + groff has its own implementation of the standard C library's + assert() macro. It hasn't been updated since C89. C99 requires + that the diagnostic emitted by assert() contain the failing + expression and name of the function in scope. + + * src/include/assert.h: Add additional pointer to const char + arguments to do_assert() and assertion_failed() for function + name and stringified expression. + (assertion_failed): Update prototype. + (do_assert): Accept 'func' and 'msg' parameters and pass them to + assertion_failed(). + (assert): Update macro to collect '__func__' and stringify the + expr parameter (as 'msg') and pass them do do_assert(). + * src/libs/libgroff/assert.cpp (assertion_failed): Rewrite + diagnostic to more closely match GNU Coding Style format and + also report function and failing expression. + + Example output: + troff: ../src/roff/troff/input.cpp:2644: do_request(): + assertion failed: '0 == "But first, here's a rotten old + BBC programme."' + + We have no excuse to assert(0) ever again. Express the + invariant that has been violated. + +2020-04-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/tests/smoke-test_html_device.sh: Set + LC_CTYPE=C.UTF-8 so that byte sequences in the pipelines are + handled correctly. Skip the test if the environment doesn't + support UTF-8. Thanks to Bjarni Ingi Gislason for the trouble + report. + + Fixes <https://savannah.gnu.org/bugs/?58164>. + +2020-04-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/html.tmac: Use .do so we correctly load unicode.tmac in + compatibility mode. + + Fixes the following problem (wrapped, filenames abbreviated): + + $ echo | ./build/test-groff -C -Thtml >/dev/null + troff: backtrace: file '.../groff/build/../tmac/html.tmac':546 + troff: backtrace: file '.../groff/build/../tmac/troffrc':30 + troff: .../groff/build/../tmac/html.tmac:546: warning: macro + 'ms' not defined + +2020-04-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/tests/smoke-test_html_device.sh: Add test. + * src/roff/groff/groff.am (groff_TESTS): Run test. + +2020-04-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/tests/regression_savannah_58153.sh: + * src/roff/groff/tests/\ + use_point_size_escape_with_single_digit_arg.sh: Use "set -e" to + ensure that multi-test script files don't hide problems. There + are arguments against "set -e" (and you can ask Greg Wooledge + for all of them), but I'm so used to it from years of writing + Debian package maintainer scripts that I feel comfortable with + it. It is less verbose than several alternatives (especially + having one test script per case). + + * src/roff/groff/tests/string_case_xform_unicode_escape.sh: + Update with respect to new failure output (in a comment only, + since this is an XFAIL test). + + * tmac/tests/an-old_AT_and_UC_footer_saved_and_restored.sh: + Drop unnecessary "|| exit 1" from end of script. Incidentally, + this script illustrates an alternative to "set -e". + +2020-04-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + Rework documentation of .spreadwarn. + + * doc/groff.texi (Debugging): + * man/groff.7.man (Request short reference): + * man/groff_diff.7.man (New requests): Recast description of + .spreadwarn request, some based on suggestions from Dave Kemper. + Make more prominent the fact that spreading only applies to + adjustment mode 'b'. Document warning type used. + + Fixes half of Savannah #58035. + +2020-04-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + Require Texinfo 5.0 (February 2013) at a minimum. + + * m4/groff.m4 (GROFF_MAKEINFO): Check for version 5.0 (increased + from 4.8). Update diagnostics and comments. + + * INSTALL.extra: + * README: + * doc/groff.texi: + * doc/webpage.ms: Document updated requirement. + + * doc/fixinfo.sh: Delete; it is no longer necessary to work + around Texinfo 4.x bugs. + + * doc/doc.am (EXTRA_DIST): Stop shipping fixinfo.sh. + (.texi.html): Remove makeinfo < 5.0 version check and consequent + execution of fixinfo.sh. Update comment. + +2020-04-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + Enable backtracing across process/file boundaries when errors or + non-ignored warnings are encountered. + + Experimentation reveals that .so, .mso, and .pso requests acted + as barriers to backtracing except when explicitly requested with + the .backtrace request. Judging by the git history, this + behavior dates back to June 1991 or earlier. The intention, + according to a source comment, was only to suppress the + backtrace output for the line corresponding to the outermost + level of the input stack (commonly, a file argument to groff). + Unfortunately, that wasn't its only effect. + + This change does result in one additional line of output for + each error or (non-ignored) warning when -b is given. However, + I regard this as unobjectionable because {1} a backtrace was in + fact explicitly requested; and {2} it seems a poor tradeoff to + suppress most of the backtrace in some complicated and + frustrating cases for the sake of one fewer line of backtrace + output in a trivial one. + + Now, backtracing behaves the same no matter what triggers it. + + Fixes Savannah #58153. + + * src/roff/troff/input.cpp (file_iterator::backtrace): Call + get_location() for its side effect of rewriting a filename of + "-" to "<standard input>", for consistency with other diagnostic + messages. (In this class, this member function always returns + 1, so ignore the return value. This fact is an essential part + of what led to the bug; the conditional + p && !p->get_location(0, &f, &n) + which appeared in the for loop of input_stack::backtrace() prior + to this change would always evaluate to false when a node of the + file_iterator class was encountered.) + (input_stack::backtrace): Replace member function body with that + of input_stack::backtrace_all(). + (input_stack::backtrace_all): Delete. + (backtrace_request): Update the only call site of the above. + + * src/roff/groff/tests/regression_savannah_58153.sh: Add test. + * src/roff/groff/groff.am (groff_TESTS): Run test. + + * src/roff/groff/tests/string_case_xform_errors.sh: Update + regression test to not be confounded by additional line of + backtrace output. Remove bashism along the way. + + * doc/groff.texi: + * man/groff.7.man: + * man/groff_diff.7.man: Update documentation. + +2020-04-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + Reorganize backtrace output. + + * src/roff/troff/input.cpp (string_iterator::backtrace): + Prefix the output with the program name if it is known. In a + deviation from the GNU Coding Standards, put the string + "backtrace:" immediately next instead of the file and line + number; this is because, particularly in cases where the + backtrace is most interesting or needed, it will produce + multiple lines of output and the common prefix aids visual + understanding. + (file_iterator::backtrace): As above; also, change prefix for + popened nodes in the iterator from "process" to "pipe". This + seemed preferable to omitting the information entirely or using + an inscrutable sigil like 'f' or 'p'. The advantage is that the + output is better aligned--better ergonomics for those who have + to cope with a lot of it. Furthermore, output the filename only + once. + + Example of old and new output: + + /tmp/inner:2: backtrace: file '/tmp/inner' + echo .so /tmp/inner:1: backtrace: process 'echo .so /tmp/inner' + /tmp/outer:1: backtrace: file '/tmp/outer' + + troff: backtrace: file '/tmp/inner':2 + troff: backtrace: pipe 'echo .so /tmp/inner':1 + troff: backtrace: file '/tmp/outer':1 + +2020-04-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (read_size): Add units to diagnostic. + This function works only with device-specific basic units + internally; users likely think in terms of point size, so add + the basic unit suffix "u" to offer a hint about what's going on. + + Example: + $ groff -ww >/dev/null + \s[10]A\s[-12]B + troff: <standard input>:1: warning: point-size escape results in + non-positive size -2000u; set to 1u + + On a PostScript device with 1000 basic units to the point, the + difference is important and would be confusing without the unit + indication. + +2020-04-08 G. Branden Robinson <g.branden.robinson@gmail.com> + + Correct and clarify point size documentation. + + Our Texinfo manual has long documented the request '.ps 0' as + restoring the previous point size (just as '\s0' or '.ps' with + no argument does), but this is incorrect; since groff 1.02 or + earlier (June 1991), the request has not actually worked this + way. Instead, '.ps 0' sets the point size to 1 basic unit + {though output drivers may clamp this to a higher value}. This + behavior is consistent with AT&T troff, Hierloom Doctools troff + and, per Ingo Schwarze, Plan 9 troff. (It is, however, not + consistent with neatroff.) + + * doc/groff.texi (Changing Type Sizes): Stop claiming that '.ps + 0' works like '\s0'. Note that the resulting (computed) point + size, not the argument, is clamped. Note that it is + non-positive, not negative, point sizes that are clamped to 1u. + Add (forward) cross-reference to section where \n[.ps] is + defined since it is mentioned here. Move explanation of special + handling of zero argument to \s escape description. + + * man/groff.7.man (Request short reference): Explain .ps N + independently of \s. Note clamping behavior. + +2020-04-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (read_size): Correctly brace 'else' + block. + + * src/roff/groff/tests/\ + use_point_size_escape_with_single_digit_arg.sh: + Check that we get a diagnostic when relying on ambiguous form. + +2020-04-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp (read_size): Move special-case + interpretation of the '\sN' form of point-size escapes when 'N' + is 1, 2, or 3 to compatibility mode (groff -C) only, and throw + error diagnostic with suggestion for remedy if encountered. + + Traditionally, '\s36A' is interpreted as "set point size to 36, + then emit 'A'". However, only values in the range 10-39 are + handled specially; '\s40A' is interpreted as a four-point "0A". + This is unlike anything else in *roff grammar; see \*, \$, \f, + \F, \g, \k, \m, \M, \n, \V, \Y, and \z. + + To anticipate objections: Why not throw only a warning? Because + there isn't a warning category for supported but ambiguous + syntax (this behavior of AT&T troff dates back to the mid-1970s + but was not documented in the Troff User's Manual until 1992). + Why not throw the error outside of compatibility mode too? + Because outside of compatibility mode we (now) have an + unambiguous parse. + + Background: The Graphic Systems C/A/T phototypesetter (the + original device target for AT&T troff) only supported a few + discrete point sizes in the range 6..36, so Ossanna + special-cased the parser to do what the user must have meant. + Kernighan warned of this in the 1992 revision of CSTR #54 + {§2.3}, and more recently, McIlroy referred to it as a "living + fossil". + + See: + https://lists.gnu.org/archive/html/groff/2020-03/msg00054.html + https://lists.gnu.org/archive/html/groff/2020-04/msg00002.html + https://lists.gnu.org/archive/html/groff/2020-04/msg00015.html + and follow-ups for discussion. + + * NEWS: Advise users of behavior change and offer guidance. + + * doc/groff.texi: + * man/groff.7.man: Document the restriction of special handling + of point-size arguments to '\s' to compatibility mode. + + * src/roff/groff/tests/\ + use_point_size_escape_with_single_digit_arg.sh: Add regression + test. + * src/roff/groff/groff.am (groff_TESTS): Run test. + +2020-04-04 G. Branden Robinson <g.branden.robinson@gmail.com> + + Improve point-size escape diagnostics. + + * src/roff/troff/input.cpp (read_size): Disclose context + {point-size escape interpretation} in diagnostic messages. When + a "bad digit" is encountered, describe it if possible. When a + relative adjustment results in a negative point size, report the + computed value. Also rename a variable for slightly more + clarity ("bad" does not refer to all bad parses, just some cases + of bad digits), and update an insufficiently generalized comment + {"\s(00" is also an acceptable expression for point-size zero}. + + Based on suggestions by Ingo Schwarze and Bjarni Ingi Gislason. + +2020-04-01 G. Branden Robinson <g.branden.robinson@gmail.com> + + Align diagnostic message format. + + * src/libs/libgroff/error.cpp (do_error_with_file_and_line): + * src/roff/troff/input.cpp (do_error): + Display the diagnostic level when it is "error", instead of + leaving it implicit. + + * src/roff/troff/input.cpp (error_with_file_and_line): Include + the program name in the diagnostic message if it is known. + + * src/roff/groff/tests/string_case_xform_errors.sh: Update + diagnostic message expectation. + +2020-02-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi (Page Motions): + * man/groff.7.man (Single-character escapes): Document + non-breaking spaces as such. + + Report and patch by Dave Kemper <saint.snit@gmail.com>. + Fixes <https://savannah.gnu.org/bugs/?55954>. + +2020-02-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + nroff: Implement -P and -V options. + + * src/roff/nroff/nroff.sh: Recognize -P option (with argument) + and pass it through to groff. Recognize -V option; if given, + display constructed groff command instead of executing it. + Update usage message to document new options. Tidy up shell + style and indentation. Add comments. + * src/roff/nroff/nroff.1.man: Document new -P and -V options. + * src/roff/nroff/tests/verbose_option_works.sh.in: Test -V + option. + * src/roff/nroff/nroff.am: Generate test and run it. + +2020-02-06 G. Branden Robinson <g.branden.robinson@gmail.com> + + Stop ms macro package from manipulating warnings. + + * tmac/s.tmac: Remove code block that attempted to enable all + warnings "only if none are given on the command line". It did + this by simply comparing the value of the warn register + {\n[.warn]} against the default value; but of course, a user + could specify -w options that exactly matched the default and + the test would not be able to tell, causing puzzling and + undesired behavior. Furthermore, the hard-coded default was out + of date and did not correspond to recent releases of groff. If + you want all warnings on, use the ".warn" request with no + arguments in your ms document or pass "-w w" to groff (see + troff(1) or our Texinfo manual for more on warnings). + + Thanks to Bjarni Ingi Gislason for bringing this issue to our + attention. + + Resolves <https://savannah.gnu.org/bugs/?57583>. + +2020-01-21 George HELFFRICH <ghfbsd@gmail.com> + + [me]: Fix regression of '.nm' (#57638). + + * tmac/e.tmac-u (nm): Use saved point size and font position + for line numbering only if those registers exist. + + Fixes <https://savannah.gnu.org/bugs/?57638>. + +2020-01-18 Ingo Schwarze <schwarze@openbsd.org> + + Accept any number of arguments for .Dd in the groff_mdoc(7) + macros. + + * tmac/doc-common-u: The .Dd macro behaved in a weird way: + Without arguments, it printed the string "Epoch". + With one, two, four, or more arguments, it ignored all arguments + and used the current date instead. + Only for exactly three arguments, it printed the arguments. + None of this made sense. Giving the date as "Epoch" is + absurd, and printing the current date is just misleading: + why should a document be considered up-to-date when the author + did not even bother to state the date of the last change? + Admittedly, the behaviour for 0 and 4 or more arguments + already appeared 4.3BSD-Reno, and the behaviour for 2 or 3 + arguments in 4.4BSD. But it was already wrong even in those + days: several manual pages in 4.4BSD gave .Dd a single, quoted + argument, e.g. .Dd "June 9, 1993": cap_mkdb(1), id(1), sed(1), + err(3), getcap(3), sysctl(3), amd(8), disklabel(8), and others. + Consequently, simply print all the arguments, no matter how + many there are. + + This bug was found by Jonathan Gray <jsg@openbsd.org> + while he looked at 4.xBSD manual pages. + +2020-01-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi: Document initial empty set membership of + characters with cflags values of 128, 256, or 512 in parallel + with preceding paragraphs regarding smaller powers of two. + + Report and patch by Dave Kemper <saint.snit@gmail.com>. + Fixes <https://savannah.gnu.org/bugs/?57549>. + +2020-01-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/tests/*.sh: Rename some tests so their + filenames are more self-descriptive. + * src/roff/groff/groff.am (groff_TESTS): Update. + +2020-01-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/groff/tests/transparent_end-of-sentence_chars.sh: Add + test for end-of-sentence recognition. + * src/roff/groff/groff.am (groff_TESTS): Run test. + +2020-01-18 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp: Mark \[dd] character (double dagger) + as transparent for purposes of end-of-sentence recognition. + + * doc/groff.texi (Sentences): + * man/groff_diff.7.man (New requests/.cflags): Document this. + + Report and patch by Dave Kemper <saint.snit@gmail.com>. + Fixes <https://savannah.gnu.org/bugs/?57546>. + +2020-01-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/refer/refer.1.man (See Also): + * src/utils/indxbib/indxbib.1.man (See Also): + * src/utils/lkbib/lkbib.1.man (See Also): + * src/utils/lookbib/lookbib.1.man (See Also): Add bibliographic + reference to the original Bell Labs "refer" paper by Mike Lesk. + +2020-01-17 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tests/an-old_AT_and_UC_footer_saved_and_restored.sh: Add + regression test for Ingo's change below. + +2020-01-16 Ingo Schwarze <schwarze@openbsd.org> + + Repair .AT and .UC in the groff_man(7) macros. + + * tmac/an-old.tmac: Setting user-defined strings in a macro that + will later be called indirectly from page location traps is + excessively complicated. Besides, the implementation doesn't + work: when the trap is finally sprung, the defaults from the + an-init macro clobber what the author specified with .AT or .UC. + Instead, all that is needed is setting the strings for the + header before triggering the page break, such that they appear + right away, while setting the strings for the footer after the + page break, such that they don't appear on the previous page. + + This bug was found by Jonathan Gray <jsg@openbsd.org> while he + looked at 4.xBSD manual pages. + +2020-01-16 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/groff_man.7.man (Document structure macros/.SH): Fix + errors in footer description. + +2020-01-12 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/tests/an-old_CS_register_on.sh: Tweak flags; all the + other tests in this group pass "-Tascii -P-cbou" instead of + "-Tutf8". (This is so that output is easy to grep from a shell + script.) Bring this test into line. Does not regress anything. + +2019-12-30 Deri James <deri@chuzzlewit.myzen.co.uk> + + Certain pdfmark destination names caused gropdf to fail. + + * src/devices/gropdf/gropdf.pl: Look for pdfmark types, (i.e. + DEST, OUT, ANN), only preceding 'pdfmark' at end of line, not + anywhere else. + +2019-12-30 Ingo Schwarze <schwarze@openbsd.org> + + Correct output of sprintf("%%") in pic(1). + + * src/preproc/pic/pic.ypp: Print "%" rather than "%%". + + Bug reported by Doug McIlroy <doug at cs dot dartmouth dot edu>. + Patch using feedback from Larry McVoy <lm at mcvoy dot com>. + +2019-12-29 Deri James <deri@chuzzlewit.myzen.co.uk> + + Update man page of gropdf to document \X calls. + + * src/devices/gropdf/gropdf.1.man: The calls 'pagename' and + 'switchtopage' (used by mom to relocate TOC) are documented, + together with their convenience commands '.pdfpagename' and + '.pdfswitchtopage'. + +2019-12-29 Ingo Schwarze <schwarze@openbsd.org> + + Improve documentation of pic(1) regarding printf. + + * src/preproc/pic/pic.1.man: + Document which conversion specifications are supported. + * doc/pic.ms: + Correct the list of supported conversion specifications. + +2019-12-21 Ingo Schwarze <schwarze@openbsd.org> + + Update NetBSD, OpenBSD, FreeBSD, Darwin, and DragonFly version + strings. + + * tmac/doc-common-u: Update. + * tmac/groff_mdoc.7.man: Synchronize. + + Based on a patch from Guillem Jover <guillem@debian.org> + via Colin Watson <cjwatson@debian.org>, tweaked by me. + Fixes: https://bugs.debian.org/867123 + +2019-09-22 G. Branden Robinson <g.branden.robinson@gmail.com> + + Use a vertical spacing of 1v between paragraphs in man page + examples. This looks better (on typesetter devices like + PostScript and PDF) with the Courier font family also used in + examples. Typewriter devices (like the terminal) already used + an inter-paragraph spacing of 1v. + + * tmac/an-ext.tmac (EX): Save the value of the PD number + register (inter-paragraph distance), and set it to 1v. + (EE): Restore previous value of the PD register. + +2019-09-21 Deri James <deri@chuzzlewit.myzen.co.uk> + + Changes to allow configure to check for URW fonts + + * font/devpdf/util/BuildFoundries.pl: Call the program with + --dirURW with path provided to ./configure, and --check to do + a dry-run just checking if the fonts are available. (bug #56748) + +2019-09-21 Deri James <deri@chuzzlewit.myzen.co.uk> + + Add new ghostscript font names (bug #56748) + + * font/devpdf/Foundry.in: Add changed font names + +2019-09-21 Deri James <deri@chuzzlewit.myzen.co.uk> + + Prevent gropdf executing arbitrary commands + + * src/devices/gropdf/gropdf.pl: See bug #55557 + +2019-09-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/an-old.tmac: Move test for definitions of CS and CT + registers to after man.local is sourced; this way we can both + respect any setting of those registers in that file (which is + intended for customization by the site administrator) and ensure + that the registers are defined when dereferenced later. + +2019-09-15 G. Branden Robinson <g.branden.robinson@gmail.com> + + * **/*.man: Put section headings in title case. + +2019-09-13 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/roff/troff/input.cpp: Lift invariant out of loop. + +2019-09-11 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/preproc/refer/refer.1.man: Add mention of man and mm + packages as supporting the "refer" preprocessor (GNU mm grew + this support back in groff 1.22.1). + +2019-09-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + Mark expected-to-fail test as XFAIL. + + Automake supports XFAIL and XPASS, so actually use the + infrastructure as intended. + + * Makefile.am: Declare XFAIL_TESTS variable. + * src/roff/groff/groff.am (groff_XFAIL_TESTS): Add + string_case_xform_unicode_escape.sh. + * src/roff/groff/tests/string_case_xform_unicode_escape.sh: Set + the expected output to what it would be if string case + transforms worked on groff Unicode escapes. + +2019-09-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + Retire '@G@' build system macro. + + It existed only for forcibly-capitalized man page titles; it was + the uppercase-transformed counterpart of @g@. + + * Makefile.am: Delete sed transformation of @G@. + * src/preproc/tbl/tbl.1.man: Replace '@G@EQN' in section heading + with '@g@eqn'. + +2019-09-10 G. Branden Robinson <g.branden.robinson@gmail.com> + + * **/*.man: Downcase man page titles, except for glilypond and + roff2*, which did not require it. + + Here's a sed script for the aid of those who have a corpus of + man pages to migrate. + + # Downcase man page titles. + # + # Use the first line to skip any .TH lines that require + # special handling, perhaps because the name of the + # command gets externally macro-expanded. In groff, the + # "roff2.1.man" page is an example. + # + # This script operates _only_ on .TH lines. + # + # usage: sed -i -f this_script.sed your_man_page.1 ... + /@ROFF2MODE@/b + /^\.\s*TH/{ + h + s/^\.\s*TH \+\([^ ]\+\) .*/\1/ + y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ + G + s/\([^ ]\+\)\n\(^\.\s*TH \+\)[^ ]\+\( .*\)/\2\1\3/ + } + +2019-09-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + The an (man) macro package supports new CS and CT number + registers to control rendering of man page section headings and + titles, respectively, in full capitals. These default off (with + no visible effect on pages which already fully capitalize these + strings in man page sources). The rationale is to encourage man + page authors to preserve case distinction information in (or + restore it to) their titles and section headings, while giving + users (including system administrators, distributors, + integrators, and maintainers of man(1) implementations) a way to + view the rendered page elements in full capitals if desired. + + * tmac/an-old.tmac (TH/an-init): If number register CT is + defined and nonzero, call .stringup on \*[an-title]. + (SH): Store macro argument list to \*[an-section-heading]. If + number register CS is defined and nonzero, call .stringup on it. + * tmac/groff_man.7.man (OPTIONS): Document the CS and CT number + registers. + * tmac/tests/an-old_CS_register_off.sh: + * tmac/tests/an-old_CS_register_on.sh: + * tmac/tests/an-old_CS_register_unspecified.sh: + * tmac/tests/an-old_CT_register_off.sh: + * tmac/tests/an-old_CT_register_on.sh: + * tmac/tests/an-old_CT_register_unspecified.sh: Add tests. + * tmac/tmac.am (tmac_TESTS): Run tests. + +2019-09-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + Add regression test to check behavior of case transformation + request on a string containing a Unicode character escape. + Right now, this is not supported, so it is an XFAIL test in the + parlance of DejaGNU/POSIX 1003.3. + + * src/roff/groff/tests/string_case_xform_unicode_escape.sh: New + test. + * src/roff/groff/groff.am (groff_TESTS): Run test. + +2019-09-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + Implement .stringdown and .stringup requests. + + * src/roff/troff/input.cpp: Add .stringdown and .stringup + requests. + * doc/groff.texi: Document them, including example. + * man/groff_diff.7.man: Same. + * man/groff.7.man: Document them briefly. + +2019-09-09 G. Branden Robinson <g.branden.robinson@gmail.com> + + Regression-test string case transform feature. + + * src/roff/groff/tests/string_case_xform_errors.sh: New test. + * src/roff/groff/tests/string_case_xform_requests.sh: New test. + * src/roff/groff/groff.am (groff_TESTS): Run tests. + +2019-06-30 G. Branden Robinson <g.branden.robinson@gmail.com> + + * src/devices/grotty/grotty.1.man (Options/-i): Note support of + recent versions of xterm for italic (oblique) styles. + + Fixes part of <https://savannah.gnu.org/bugs/?55278>. + +2019-06-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + devlatin1: Map \(oq to ' on output. + + * font/devlatin1/R.proto: Render the output glyph \[oq] + {opening quote} as 0x27 (apostrophe) instead of 0x60 (grave + accent). A grave accent is just flat wrong for the Latin-1 + character set, a.k.a. ISO 8859-1. The defining document ECMA-94 + {June 1986} is freely available for perusal. The ECMA-94 Latin + character sets do not define any glyphs for directional + {"typographer's"} quotation marks, but the apostrophe is + depicted as a neutral (vertical) glyph, whereas the grave accent + 0x60 and acute accent 0xB4 are mirror-symmetric diacritical + marks. + + Note that this change has no effect on _input_ conventions for + roff source documents. You can still get directional single + quotes on UTF-8, PostScript, PDF, and other output devices + supporting them by typing sequences like `this' in the input + {character remapping with ".char" requests and similar + notwithstanding}. + + Patch and idea from Ingo Schwarze, who originally proposed it + for ASCII as well, and included Latin-1 for parallelism. + The groff developers could reach no consensus about the wisdom + of such a change for ASCII (which was designed to support + ambiguity for some code points, requiring the development of + supplementary interpretation conventions between parties). + ECMA-94/ISO-8859 is more strongly prescriptive. + + See https://savannah.gnu.org/bugs/?55616 and the groff mailing + list archives for 31 January to 23 February 2019 at + https://lists.gnu.org/archive/html/groff for lengthy discussion. + + * src/roff/groff/tests/on-latin1-device-oq-is-0x27.sh: Check for + correct output glyph. + + * src/roff/groff/groff.am: Add test. + +2019-06-28 G. Branden Robinson <g.branden.robinson@gmail.com> + + * tmac/unicode.tmac: Save and restore compatibility mode since + the script uses a GNU extension (.char). + +2019-06-27 G. Branden Robinson <g.branden.robinson@gmail.com> + + libdriver: Fix SEGV (Savannah #56555). + + * src/libs/libdriver/printer.cpp: Check result of + set_char_and_width() for error condition before relying on it. + + * src/roff/groff/tests/regression-56555.sh: Provoke segfault + with five bytes of input using transparent line indicator. + + * src/roff/groff/groff.am: Add test. + + Fixes <https://savannah.gnu.org/bugs/?55278>. + +2019-01-12 Ingo Schwarze <schwarze@openbsd.org> + + Correctly handle groff_mdoc(7) .Lk arguments starting with a + dot. + + * tmac/doc.tmac-u: Each argument to the .Lk macro is printed + on its own roff input line. If it happens to start with a dot + or apostroph, it was misinterpreted as a request or macro. + Force it to be treated as text by adding "\&" in front of it. + +2018-12-31 Ingo Schwarze <schwarze@openbsd.org> + + * man/groff_diff.7.man: remove two stray .RE macros + + +________________________________________________________________________ + +##### License + +Copyright 2018-2021 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. + + +##### Editor settings +Local Variables: +fill-column: 72 +mode: change-log +version-control: never +End: +vim:set autoindent textwidth=72: diff --git a/ChangeLog.115 b/ChangeLog.115 new file mode 100644 index 0000000..6f8b17b --- /dev/null +++ b/ChangeLog.115 @@ -0,0 +1,6156 @@ + +Version 1.15 released +===================== + +1999-12-28 Werner LEMBERG <wl@gnu.org> + + * NEWS, VERSION: Changed to 1.15 + +1999-12-27 Paul Eggert <eggert@twinsun.com> + + * nroff/nroff.man: -S is safer, not safe. + + * groff/groff.cc (main): Use `safer', not `safe', in variable + names. This does not change the behavior. + + * troff/input.cc (main): Likewise. + + * nroff/nroff.sh: Likewise. + + * troff/input.cc (prepend_string): New function. + (main): Prepend -msafer, so that we check macro libraries for + safety. + + * PROBLEMS: Report problem with Sun C++ 5.0 and 5.1. + +Version 1.14 released +===================== + +1999-12-26 Werner LEMBERG <wl@gnu.org> + + * NEWS, VERSION: Changed to 1.14. + +1999-12-24 Werner LEMBERG <wl@gnu.org> + + * refer/refer.cc: Fixing the last fix. + +Version 1.13 released +===================== + +1999-12-23 Werner LEMBERG <wl@gnu.org> + + * tmac/tmac.an: A typo (`.if' instead of `.ie') made the page + number disappear. + + * NEWS: Updated. + + * tmac/tmac.safer: Forgot to remove `so' from the `rm' request. + + * VERSION: Changed to 1.13 -- to be compliant with the Adobe 3.0 + document conventions, the version number must be a real. + +Version 1.12.1 released +======================= + +1999-12-22 Werner LEMBERG <wl@gnu.org> + + * VERSION: Changed to 1.12.1. + +1999-12-22 Alan Rooks <arooks@istar.ca> + + * refer/refer.cc (do_file): Slight modification to satisfy the + `Standard system CC - C++ Compilation System 3.1 03/03/99' on SCO + UnixWare 7.1. + +1999-12-20 Werner LEMBERG <wl@gnu.org> + + * changed prep.ai.mit.edu -> ftp.gnu.org; updated copyright + notices. + + * tmac/tmac.safer, tmac/groff_msafer.man: Remove `so' (again) from + list of unsafe requests. + + * pic/pic.man: Fixed a typo. + + * man/groff_out.man: Fixed a typo. + +1999-12-18 Werner LEMBERG <wl@gnu.org> + + * Makefile.in: Doc fixes. + +1999-12-17 Fabrizio Polacco <fab@prosa.it> + + * groff/groff.cc: Missing `U' option added to getopt(). + + * troff/troff.man: Missing `U' option added to synopsis. + +Version 1.12 released +===================== + +1999-12-14 Werner LEMBERG <wl@gnu.org> + + * troff/input.cc (usage), groff/groff.cc (synopsis): Added -U flag + to the synopsis. + + * nroff/nroff.sh, nroff/nroff.man: Replaced `secure', `unsecure' + with the more appropriate terms `safer' and `unsafe'. + + * libgroff/strerror.c, aclocal.m4, configure.in: Added checks for + sys_nerr and sys_errlist[]. + + * pic/pic.h, aclocal.m4, configure.in: Added check for hypot(). + + * pic/pic.y, pic/pic.cc: Added check for fmod(). + +1999-12-13 Werner LEMBERG <wl@gnu.org> + + * VERSION: Changed to 1.12. + + Here some patches from various sources; most of them taken from + the Debian distribution. + + * tmac/groff_mdoc.man, tmac/groff_mdoc.samples.man, + tmac/Makefile.sub: New files copied directly from the NetBSD + distribution. Probably, some additional adaptation later on is + necessary... + + * tmac/tmac.safer, tmac/groff_msafer.man: Added `so' to the list + of unsafe requests. + + * groff/groff.cc, groff/groff.man, nroff/nroff.sh, + nroff/nroff.man, pic/main.cc, pic/pic.man, troff/input.cc, + troff/troff.man: Added option `-U' for unsafe mode. Safe mode + (`-S') is now the default. + + * README, NEWS: Updated. + +1999-12-09 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Regenerated nodes and menus with emacs. + + * doc/Makefile (clean): Added cleaning commands for groff.texinfo. + +1999-12-06 Werner LEMBERG <wl@gnu.org> + + * configure.in: Removed AC_PREFIX_PROGRAM since it causes more + grief than relief today. Additionally, it is against the GNU + coding standards. + + * configure: Recreated. + +1999-12-05 Werner LEMBERG <wl@gnu.org> + + * configure.in: Added GROFF_LIBM. + + * configure: Recreated. + + * aclocal.m4 (GROFF_LIBM): New function which tests whether -lm is + necessary. + + * Makefile.in: Added definition of $(LIBM). + + * Makefile.comm (LIBM): Removed. + + * pfbtops/Makefile.sub: On AIX, -lm is needed also. + +1999-12-03 Gaius Mulley <gaius@glam.ac.uk> + + * doc/Makefile: Added rule for generation pic.html. + + (clean): Files produced by grohtml will be removed also. + + * doc/pic.ms: Small fix. + + * tmac/tmac.html: Fixed suppression of headers. + +1999-11-16 Gaius Mulley <gaius@glam.ac.uk> + + * tmac/tmac.html: Fixing horizontal arrows. + + Turning off hyphenation. + + * tmac/tmac.an: Improved support for grohtml; better indentation, + no footers/headers. + +1999-10-31 Gaius Mulley <gaius@glam.ac.uk> + + * tmac/tmac.arkup: Added CDFTP macro + + * tmac/tmac.html: All headers are turned off for ms, me, and mm + macros. + + * tmac/troffrc: Some additions for HTML stuff. + +1999-10-06 Gaius Mulley <gaius@glam.ac.uk> + + * tmac/tmac.html: Small changes. + +1999-09-26 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Minor fixes. + +1999-09-26 Gaius Mulley <gaius@glam.ac.uk> + + * devhtml/TR: Changed spacewidth to 3. + + * tmac/Makefile.sub (NORMALFILES): Added tmac.arkup. + + * tmac/tmac.html: Moved markup macros to tmap.arkup. + + * tmac/tmac.arkup: New file. + + * grohtml/ChangeLog: New file. + +1999-09-16 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo (Common Features): Added Copying chapter. + Changed format to @smallbook. + +1999-09-15 Werner LEMBERG <wl@gnu.org> + + * NEWS: Added info about groff.texinfo. + + * doc/groff.texinfo: Will now compile (using texi2dvi) without + warning messages. + +1999-09-14 Werner LEMBERG <wl@gnu.org> + + * groff/groff.man: More updates. + +1999-09-13 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: New file. This manual is still very + rudimentary. It has been originally contributed by Trent + A. Fisher <trent@gnurd.portland.or.us> with first corrections and + additions by me. + + * INSTALL: Added information about the `doc' subdir + + * troff/troff.man: Minor fixes. + + * groff/groff.man: Added missing `-L arg' to SYNOPSIS section; + reordered options. + + * troff/input.cc (usage): Added missing `-ffam' to usage message. + + * Makefile.in (dist): groff-$(version).tar.gz must be removed + also, otherwise it is included itself in another call of `make + dist'. + + * groff/groff.cc (synopsis): Removed superfluous space. + + * PROJECTS, PROBLEMS, NEWS: Updated. + + * VERSION: Updated to 1.12beta. + + * BUG-REPORT: Some cosmetic fixes. Corrected email address. + + * README: Updated: Included documentation about CVS repository, + mailing lists, and daily snapshots. + + * tmac/Makefile.sub: Fixed $(tmap_wrap) finally. + +1999-09-12 Bjarni Ingi Gislason <bjarniig@rhi.hi.is> + + * tmac/tmac.an: If the tag didn't fit into the space that the + macro `TP' specifies, the rest of the tag went into the space for + the next line. + +1999-09-12 Jeffrey Copeland <jeff@opennt.com> + + * grolj4/lj4.cc: Added duplex printing (option `-d'). + + * grolj4/grolj4.man: Document duplex printing. + +1999-09-12 Werner LEMBERG <wl@gnu.org> + + * doc/Makefile (pic.ps): Fixed rule which caused problems with + non-GNUish sed programs. + + * tmac/doc-syms: Removed extra space from -iso8802-3 macro + definition. + + * configure.in (LIBS): Added `-lc' + + * Makefile.comm (.man.n): Added substitution for @TMAC_AN_PREFIX@. + + * pic/tex.cc (solid_arc): Casting M_PI to double. + + * libgroff/putenv.c (putenv): Changed function header to ANSI C. + + * groff/groff.man, tmac/Makefile.sub (MAN7), tmac/groff_msafer.man + (new file), tmac/msafer.man (deleted), tmac/groff_me.man (new + file), tmac/me.man (deleted): {me,msafer} -> groff_{me,msafer}. + + * groff/groff_man.man: New file. This manual page was originally + written for the Debian GNU/Linux system by Susan G. Kleinmann + <sgk@debian.org>. + + * eqn/list.cc (list_box::compute_metrics, + list_box::compute_sublist_width): Removed variable declaration to + avoid shadowing warnings. + + * grops/psrm.cc (resource_manager::process_file): Ditto. + + * tfmtodit/tfmtodit.cc (main): Ditto. + + * libgroff/font.cc (font::load_desc): Renamed auxiliary variable + to avoid shadowing warnings. + + * tbl/table.cc (block_entry::do_divert, table::do_row): Renamed + shadowing loop variable. + + * groff/groff.man, troff/troff.man: Added doc about grohtml. + +1999-09-12 Gaius Mulley <gaius@glam.ac.uk> + + New grohtml frontend to convert groff input to html. + + * Makefile.in (CCPROGDIRS, DEVDIRS): Added html device. + + * tmac/Makefile.sub (NORMALFILES): Added tmac.html. + + * tmac/eqnrc: Added html device. + + * tmac/tmac.html: New file. + + * eqn/main.cc (do_file, inline_equation), pic/troff.cc + (troff_output::start_picture, troff_output::finish_picture), + tbl/main.cc (process_input_file): + Surrounded output with `graphics_start' and `graphics_end' so that + the html driver can identify non-text portions. + + * grodvi/dvi.cc (dvi_printer::set_char), grolj4/lj4.cc + (lj4_printer::set_char), grops/ps.cc (ps_printer::set_char), + grotty/tty.ps (tty_printer::set_char): Additional parameter + `name'. + + * include/printer.h: Class printer: New function + set_char_and_width; new variables (is_char_named, is_named_set, + named_command, named_char_s, named_char_n) to hold information + about named characters -- needed by the html driver. + + * libdriver/printer.cc (printer::set_ascii_char, + printer::set_special_char): Use set_char_and_width. + + * devhtml/*: New device files for html driver. + + * grohtml/*: New driver grohtml. + +1999-09-11 Wilfredo Sanchez <wsanchez@apple.com> + + * tmac/doc-common, tmac/tmac.an: Removed the word `UNIX' in + default strings. + +1999-09-11 Luke Mewburn <lukem@netbsd.org> + + * libgroff/string.cc (search): Small fix to test against NULL + pointer. + +1999-09-11 Jeff Conrad <jeff_conrad@msn.com> + + * troff/node.cc (copy): The characters in a bracket escape (e.g., + \b'abc') were stacked in reverse order when processed in a + diversion. + + * troff/node.h: Added `*last' to struct `node' to make the above + fix work. + + * troff/input.cc (read_draw_node), libdriver/input.cc (do_file): + The default scale for the 'f' and 't' graphics functions were 'm' + rather than 'u' (i.e., no scaling). + +1999-09-11 Peter Miller <peterm@jna.com.au> + + * groff/groff.cc (main), groff.man, soelim/soelim.cc (main, + do_file), soelim/soelim.man: Added `-I file' option to soelim, + defining include paths. + + * soelim/soelim.cc (include_path_append): New function. + +1999-09-11 Larry Jones <larry.jones@sdrc.com> + + * tbl/main.cc (process_options): Unix (at least Documenter's + Workbench) tbl allows arbitrary non-alpha characters between + options. + +1999-09-11 Paul Eggert <eggert@twinsun.com> + + Y2k fixes. Don't assume that the current year precedes 2000. + + * doc/meref.me: Add \n(y2, \n(y4. + + * tmac/doc-common (Yr): New number register. + (Dd): Don't assume current year precedes 2000. + + * tmac/tmac.e (td): Likewise. + (y2, y4): New number registers. + + * pic/pic.man: Update reference for pic paper to May, 1991 + version. + +1999-09-11 Werner LEMBERG <wl@gnu.org> + + * tmac/Makefile.sub (install_data, stamp-wrap, uninstall_sub): + Removed quotation marks which prevented correct expansion of + $(tmac_wrap). + + * devlj4/Makefile.sub (LJ4RES): Fixed value (600 instead of 300). + +1999-09-10 Werner LEMBERG <wl@gnu.org> + + * Makefile.sub (DISTCLEANFILES): Added `config.log' and + `config.cache'. + + * Removed configure.old. + +1999-08-31 Werner LEMBERG <wl@gnu.org> + + * VERSION: Updated to 1.11.1 + +1999-05-27 Werner LEMBERG <wl@gnu.org> + + * doc/Makefile: changed `.PS' postfix to `.ps' for consistency. + + * tmac/Makefile.sub (install_data, stamp-wrap, uninstall_sub): + added quotations around $(tmac_wrap) to avoid syntax error if + variable is empty. + + * configure: Newly generated using autoconf 2.13. + + * Makefile.in (LDFLAGS): Set variable to @LDFLAGS@. + +Fri Aug 15 08:51:47 1997 Eric S. Raymond <esr@snark.thyrsus.com> + + * README, PROJECTS, NEWS, INSTALL, VERSION, + doc/Makefile. doc/pic.ms, groff/groff.man: + Prepare for 1.11 release. No code changes. + Documentation for pic added (doc/pic.ms). + +Sun Nov 26 11:45:13 1995 James Clark <jjc@jclark.com> + + * Version 1.10 released. + +Fri Nov 24 09:56:16 1995 James Clark <jjc@jclark.com> + + * afmtodit/afmtodit.pl: Avoid comment on first line. + +Mon Nov 20 11:13:49 1995 James Clark <jjc@jclark.com> + + * aclocal.m4 (GROFF_INSTALL_SH): New macro. + * configure.in: Call it. + + * Makefile.sub (configure): Depends on aclocal.m4 not acgroff.m4. + (distfiles): Doesn't depend on config.log or config.cache. + +Sun Oct 1 08:45:36 1995 James Clark <jjc@jclark.com> + + * grog/grog.sh: Use print "" rather than print in END rule. + +Wed Aug 23 13:30:52 1995 James Clark <jjc@jclark.com> + + * tbl/main.cc (process_data): Don't give error for excess data + entries that are comments. + +Fri Jul 28 11:00:27 1995 James Clark <jjc@jclark.com> + + * tbl/main.cc (process_data): Fix case where new for-scope rules + silently change meaning of code. + +Tue Jul 4 23:39:51 1995 James Clark <jjc@jclark.com> + + * troff/env.cc (hyphenate): Loop over all consecutive sequences + of non-zero hyphenation codes. + +Sat Jul 1 00:42:15 1995 James Clark <jjc@jclark.com> + + * aclocal.m4 (GROFF_POSIX): Use conflicting declaration technique. + +Thu Jun 29 13:58:36 1995 James Clark <jjc@jclark.com> + + * tmac/tmac.e (ip): Divert the tag so as to freeze the spaces. + +Tue Jun 27 12:30:16 1995 James Clark <jjc@jclark.com> + + * tmac/tmac.andoc: Make it work in compatibility mode. + + * refer/token.h (token_info::is_range_sep): New function. + * refer/token.cc (init_special_chars): Make \(en a RANGE_SEP. + * refer/ref.cc (reference::output): More sophisticated check for + multiple pages. + + * devps/prologue.ps (MANUAL): New procedure. + * grops/ps.cc (main): New -m option. + (usage): Include -m. + (ps_printer::~ps_printer): Implement -m. + + * aclocal.m4 (GROFF_G): New macro. + * configure.in: Call it. + * Makefile.in (g): Provided by configure. + + * hpftodit/hpftodit.cc (basename): Rename to xbasename. + + * tmac/tmac.tty: Disable warning about bad fonts. Remove font + translations. + + * Makefile.in (tmacpath): Don't include /usr/lib/tmac. + (tmac_m, tmac_s): Deleted. + (sys_tmac_prefix, tmac_wrap, tmac_prefix, tmac_an_prefix, + tmac_s_prefix): New variables. + (MDEFINES): Change accordingly. + * Makefile.comm (.man.n): Use new TMAC_* variables. + * configure.in (GROFF_TMAC): Call. + * aclocal.m4 (GROFF_TMAC): Define. + * tmac/Makefile.sub (stamp_wrap): New target. + (install_data, uninstall_sub): Handle macro wrapping. + +Mon Jun 26 14:54:39 1995 James Clark <jjc@jclark.com> + + * tbl/main.cc (main): Ignore -T option. + +Thu Jun 22 09:08:06 1995 James Clark <jjc@jclark.com> + + * devlj4/generate/special.map: Add definition of \(nb. + + * tmac/tmac.dvi: Add definition of \(nb. + + * troff/dictionary.c (dictionary::dictionary): association::v gets + initialized by association::association. + + * tmac/Makefile.sub: Avoid using temporary files when installing. + + * troff/env.cc (environment::set_font): Make bad font number a + warning. + + * Makefile.in (fontpath): Remove $(prefix)/lib/font from fontpath. + + * Makefile.in (datadir): Use share rather than lib. + + * groff/groff.cc (basename): Rename to xbasename. + +Wed Jun 21 16:59:46 1995 James Clark <jjc@jclark.com> + + * Makefile (CCLIBS): Don't use. + * Makefile.ccpg: Likewise. + + * acgroff.m4: Rename to... + * aclocal.m4: Modify extensively for autoconf 2. + * configure.in: Likewise. + * Makefile.in: Likewise. + + * groff/pipeline.c (const): Declare as empty if __STDC__ not + defined. + (xstrsignal): Check for definition of NSIG. Conditionalize + on SYS_SIGLIST_DECLARED. Make return type const. + +Sat Jun 10 12:28:16 1995 James Clark <jjc@jclark.com> + + * troff/input.cc (interpolate_macro): Rephrase missing space + warning. + +Thu May 11 01:07:16 1995 Jason Merrill <jason@phydeaux.cygnus.com> + + * addftinfo/addftinfo.cc, eqn/delim.cc, eqn/lex.cc, eqn/list.cc, + grodvi/dvi.cc, groff/groff.cc, grops/ps.cc, grops/psrm.cc, + grotty/tty.cc, include/ptable.h indxbib/indxbib.cc, + libbib/index.cc, libbib/linear.cc, libbib/search.cc, + libdriver/input.cc, libdriver/printer.cc, libgroff/font.cc, + libgroff/lf.cc, libgroff/nametoindex.cc, libgroff/ptable.cc, + libgroff/string.cc, lkbib/lkbib.cc, lookbib/lookbib.cc, + pic/lex.cc, pic/object.cc, pic/pic.y refer/label.y refer/ref.cc, + refer/refer.cc, refer/token.cc, tbl/main.cc, tbl/table.cc, + tfmtodit/tfmtodit.cc, troff/dictionary.cc, troff/div.cc, + troff/env.cc, troff/input.cc, troff/node.cc, troff/symbol.cc: + Fix 'for' scoping. + +Wed Apr 19 21:15:11 1995 James Clark <jjc@jclark.com> + + * troff/input.cc (spring_trap): Push a macro_iterator rather than a + string_iterator. + (spring_trap, postpone_traps, unpostpone_traps): Move to later in + file. + (macro_iterator::macro_iterator): Add additional argument. + +Mon Apr 10 12:06:02 1995 James Clark <jjc@jclark.com> + + * troff/div.cc (vertical_size::vertical_size): In place of integer + specifying line spacing use cunits specifying post vertical + space. + (macro_diversion::output, top_level_diversion::output): Likewise. + * troff/div.h: Change declarations accordingly. + * troff/env.cc (pending_output_line): Replace ls field by post_vs + field. + (pending_output_line::pending_output_line, + pending_output_line::output, environment::output, + environment::output_line, environment::output_title, + environment::hyphenate_line): In place of + integer specifying line spacing use cunits specifying post vertical + space. + (environment::environment): Add post_vertical_spacing and + prev_post_vertical_spacing arguments. + (environment::get_post_vertical_spacing): New function. + (environment::total_post_vertical_spacing): New function. + (environment::post_vertical_spacing): New function. + (init_env_requests): Initialize pvs request and .pvs register. + * troff/env.h: Change declarations. + +Tue Mar 28 09:52:07 1995 James Clark <jjc@jclark.com> + + * tmac/tmac.pspic: Immediately remove the temporary file. + +Sat Mar 25 10:43:11 1995 James Clark <jjc@jclark.com> + + * tmac/tmac.pspic (PSPIC): Scale graphic uniformly even when + height is specified. + +Thu Jan 26 16:20:13 1995 James Clark <jjc@jclark.com> + + * tbl/table.c (struct vertical rule, class table_entry): Use int + not short for start_row and end_row. + +Fri Jan 13 13:53:05 1995 James Clark <jjc@jclark.com> + + * troff/input.cc (trapping_blank_line, blank_line_macro): New + functions. + (diverted_space_node::reread, process_input_stack): Call + trapping_blank_line() rather than blank_line(). + (init_input_requests): Bind "blm" to blank_line_macro(). + + * tmac/tmac.s (XA): Use .br and par@reset rather than XA. + +Tue Jan 10 11:40:35 1995 James Clark <jjc@jclark.com> + + * troff/env.cc (environment::possibly_break_line): Require that + width total excluding width of final space node be greater than + the target text length. + +Tue Jan 3 09:13:37 1995 James Clark <jjc@jclark.com> + + * troff/node.cc (kern_pair_node::vertical_extent): New function. + +Sun Dec 4 13:19:07 1994 James Clark <jjc@jclark.com> + + * troff/node.cc (charinfo_node): New class. + (glyph_node, composite_node): Derive from charinfo_node. Change + member functions accordingly. + +Wed Nov 30 10:29:29 1994 James Clark <jjc@jclark.com> + + * nroff/nroff.sh: Use -Tlatin1 not -TLatin1. + +Mon Aug 8 10:17:59 1994 James Clark (jjc@jclark.com) + + * tmac/tmac.tty-char: Add definitions for \(ab and \[arrowvertex]. + + * devps/generate/textmap (notsubset): Add. + + * tmac/tmac.a4: New file. + +Sun Jul 24 20:08:42 1994 James Clark (jjc@jclark.com) + + * pic/main.cc (had_parse_error): New variable. + (do_picture, do_whole_file): Set had_parse_error if yyparse() + returns non-zero. + (main): Return 1 if had_parse_error is true. + +Tue Jul 19 13:40:31 1994 James Clark (jjc@jclark.com) + + * grolj4/lj4.cc (main): Avoid use of strtoul. + +Mon Jul 18 15:03:02 1994 James Clark (jjc@jclark.com) + + * nroff/nroff.sh: Default device is -Tlatin1 if $LC_CTYPE is + iso_8859_1 or $LESSCHARSET is latin1. + +Sun Jul 10 13:38:35 1994 James Clark (jjc@jclark.com) + + * hpftodit: New directory. + * Makefile.in (CCPROGDIRS): Add hpftodit. + * devlj4/generate: New directory. + +Thu Jul 7 23:49:48 1994 James Clark (jjc@jclark.com) + + * configure.in: Don't use AC_VFORK. + * groff/pipeline.c (run_pipeline): Use fork() always. + +Wed Jul 6 11:13:17 1994 James Clark (jjc@jclark.com) + + * grops/ps.cc (main): Use %1 not %s in error message for -w. + + * Makefile.in (CCPROGDIRS): Add grolj4. + (DEVDIRS): Add devlj4. + * grolj4, devlj4: New directories. + * tmac/troffrc: Handle lj4. + * tmac/tmac.lj4: New file. + +Fri Jun 17 18:02:53 1994 James Clark (jjc@jclark.com) + + * tmac/tmac.e (@n): Set indent to 0 before calling |h. + +Wed Jun 1 07:33:47 1994 James Clark (jjc@jclark.com) + + * troff/input.cc (do_if_request): At end of second string, switch + environments before getting next token. + +Fri May 20 07:39:18 1994 James Clark (jjc@jclark.com) + + * devps/psstrip.sed: Split rule that strips whitespace on either + side of delimiters. + +Wed May 18 08:13:47 1994 James Clark (jjc@jclark.com) + + * troff/node.h (font_family::make_definition): Add return value to + declaration. * troff/symbol.h (symbol::operator==, + symbol::operator!=): Likewise. + +Tue May 17 20:46:06 1994 James Clark (jjc@jclark.com) + + * groff/groff.cc (main, help, synopsis): Handle -S. + (possible_command::insert_arg): New function. + + * tmac/tmac.safer: New file. + * tmac/msafer.man: New file. + * tmac/Makefile.sub (FILES): Add tmac.safer and msafer.man. + +Thu Mar 10 01:58:30 1994 Paul Eggert (eggert@twinsun.com) + + * pic/pic.h, pic/main.cc (safer_flag): New variable. + * pic/pic.y (placeless_element): Avoid unsafe operations if + `safer_flag' is set. + * pic/main.cc (main): Add -S option, which sets `safer_flag'. + +Tue May 10 13:02:31 1994 James Clark (jjc@jclark.com) + + * eqn/lex.cc (get_token): Put call to add_context() in block to + work around Sun C++ 4.0 bug. + + * include/stringclass.h (operator +): Use ?: instead of `if' to + work around Sun C++ 4.0 bug. + +Thu May 5 11:18:03 1994 James Clark (jjc@jclark.com) + + * tbl/main.cc (process_format): Accept - as a synonym for the _ + key letter. + + * libbib/index.cc (minus_one): Don't declare as const. + +Fri Apr 29 09:32:48 1994 James Clark (jjc@jclark.com) + + * troff/input.cc (get_char_for_escape_name): Push back a newline. + +Wed Apr 27 21:14:18 1994 James Clark (jjc@jclark.com) + + * troff/input.cc (write_macro_request): New function. + (init_input_requests): Bind write_macro_request to writem. + +Sun Apr 17 11:15:38 1994 James Clark (jjc@jclark.com) + + * tmac/tmac.s (@EN): Turn filling back on even if there was no + equation. + + * eqn/lex.cc (do_space): Supply missing argument to lex_error. + + * tmac/tmac.s (@TS): Renamed from TS. + (TS): Call LP then TS again. + (cov*ab-init): Alias @TS to TS. + + * tmac/tmac.s: Allow QP or RS to initialize. + + * tmac/tmac.s (par@load-init): New macro. Call at end of file. + Move initializations of PS and LL here. + (par@init): Don't initialize HY. Avoid changing environment 0. + (par*env-init): Don't all par@reset. + +Thu Apr 14 19:15:45 1994 James Clark (jjc@jclark.com) + + * include/posix.h: Include <fcntl.h> only if not using <osfcn.h>. + +Sun Apr 10 09:54:44 1994 James Clark (jjc@jclark.com) + + * Makefile.in (MDEFINES): Add LDFLAGS. + (LDFLAGS): Add definition line. + +Thu Apr 7 22:22:22 1994 James Clark (jjc@jclark.com) + + * troff/input.cc (get_optional_char): Split off error check into... + (check_missing_character): New function. + * troff/token.h: Declare it. + * troff/env.cc (margin_character): Don't call get_optional_char. + Only call tok.next() after making the node. + + * include/lib.h (getopt): Make 2nd argument char *const *. + +Fri Mar 11 07:28:03 1994 James Clark (jjc@jclark.com) + + * nroff/conftest.sh: Deleted. + +Fri Mar 4 10:51:36 1994 James Clark (jjc@jclark.com) + + * pic/make-dos-dist: Deleted. + +Wed Mar 2 20:59:16 1994 James Clark (jjc@jclark.com) + + * devps/psstrip.sed: Strip comments before stripping trailing + white space. + +Sat Feb 19 13:07:16 1994 James Clark (jjc@jclark.com) + + * Version 1.09 released. + +Wed Feb 16 16:53:49 1994 James Clark (jjc@jclark.com) + + * tmac/doc-ditroff (hK): Don't reset page number if \nC is > 0. + +Mon Feb 14 08:26:40 1994 James Clark (jjc@jclark.com) + + * libgroff/font.cc (font::load_desc): Fix typo in error message. + +Sun Feb 13 09:37:38 1994 James Clark (jjc@jclark.com) + + * libgroff/new.cc (operator new): Rewrite so as to avoid warning + about returning without a value. + + * troff/charinfo.h (charinfo::get_special_translation): Cast + TRANSLATE_NONE to int. + + * refer/token.cc (lookup_token, store_token): Remove bogus loop + test. Fix test so that it works with n unsigned. + + * pic/pic.y (defaults_table): Fully bracket initializer. + * pic/lex.cc (lookup_keyword): Likewise. + * eqn/lex.cc (token_table, def_table): Likewise. + * eqn/box.cc (param_table): Likewise. + * troff/input.cc (warning_table): Likewise. + * libgroff/font.cc (table): Likewise. + * grops/ps.cc (ps_printer::special): Likewise. + * grops/psrm.cc (resource_manager::process_file): Likewise. + * tfmtodit/tfmtodit.cc (lig_chars, lig_table): Likewise. + * refer/command.cc (command_table): Likewise. + * addftinfo/addftinfo.cc (param_table): Likewise. + + * troff/symbol.cc (symbol::symbol): Prevent compiler warnings + about temp's being unused. + (unused): New function. + + * groff/pipeline.cc: Declare c_fatal. + + * libbib/linear.cc (bmpattern::search): Cast patterrn[--j] to + uchar. + + * libbib/index.cc (index_search_item::load): Prevent compiler + warnings about fd_closer's being unused. + (unused): New function. + +Sat Feb 12 10:31:59 1994 James Clark (jjc@jclark.com) + + * troff/input.cc (copy_mode_error): Make `prefix' static. + Fix typo. + + * include/posix.h: Include <osfcn.h> is HAVE_CC_OSFCN_H is + defined. + * acgroff.m4, configure.in, Makefile: Rename HAVE_CC_UNISTD_H to + HAVE_CC_OSFCN_H and modify accordingly. + + * troff/input.cc (init_charset_table): radicalex overlaps + horizontally. + + * groff/acgroff.m4 (GROFF_ISC_SYSV3): New macro (from + udodo!hans@relay.NL.net). + * groff/configure.in: Call it. + + * groff/acgroff.m4 (GROFF_PCLOSE): New macro. + * groff/configure.in: Call it. + * include/lib.h: Conditionalize declaration of pclose. + + * troff/div.cc (last_page_number): New global variable. + (top_level_diversion::begin_page): Exit if we just printed the + last page. + * troff/div.h (last_page_number): Declare it. + * troff/input.cc (parse_output_page_list): Set last_page_number. + + * eqn/sqrt.cc: Rename \(rn to \[radicalex]. + * devps/S, devps/textmap, tmac/tmac.ps, tmac/tmac.dvi, + tmac/tmac.X: Likewise. + * tmac/tmac.ps, tmac/tmac.X, tmac.dvi: Add definitions of \(rn. + * tmac.dvi: Make \(ru and \(ul extend beyond their width by .04m. + +Fri Feb 11 11:45:40 1994 James Clark (jjc@jclark.com) + + * tmac/doc-ditroff (hK): Remove groff specific code which + prevented page-breaks between separate manual entries. If this is + the first page, don't set the page number to 1. + + * acgroff.m4 (GROFF_POSIX): New macro. + * configure.in: Use it. + + * troff/node.cc (class real_output_file, + real_output_file::real_output_file, + real_output_file::~real_output_file): Conditionalize use of + popen/pclose on POPEN_MISSING. + * troff/node.h: Conditionalize pipe_command on POPEN_MISSING. + * troff/input.cc (pipe_command): Give an error if POPEN_MISSING. + (pipe_source): Similarly. + + * acgroff.m4 (GROFF_PROG_CCC): Update message about libg++. + + * acgroff.m4 (GROFF_GETOPT, GROFF_PUTENV, GROFF_POPEN): Detect + presence of declarations by trying to compile example with + conflicting declarations. (gcc only gives a warning for missing + declarations.) + +Wed Feb 9 09:12:23 1994 James Clark (jjc@jclark.com) + + * tmac/tmac.pspic (PSPIC): Allow options to specify alignment + (from Ulrich Lauther). + +Tue Feb 8 03:56:40 1994 James Clark (jjc@jclark.com) + + * libbib/linear.cc (file_buffer::load): Use S_ISREG macro. + +Thu Feb 3 09:34:35 1994 James Clark (jjc@jclark.com) + + * indxbib/indxbib.cc (write_hash_table): Add code for case where + pointers and ints have different sizes. + +Sun Jan 9 16:17:51 1994 James Clark (jjc@jclark.com) + + * tmac/tmac.s (par*env-init): Call par@reset. + +Fri Jan 7 10:24:27 1994 James Clark (jjc@jclark.com) + + * tmac/tmac.s (@IP): Switch to a new environment when diverting + tag. + (par*push-tag-env, par*pop-tag-env): New macros. + +Wed Jan 5 21:18:34 1994 James Clark (jjc@jclark.com) + + * grops/ps.cc (ps_printer::ps_printer): Use MAX_LINE_LENGTH for + initializing `out'. Reduce MAX_LINE_LENGTH from 79 to 72. + + * grops/ps.cc (ps_printer::~ps_printer): Output %%CreationDate + comment. Include <time.h>. + +Wed Dec 15 14:14:00 1993 James Clark (jjc@jclark.com) + + * grops/ps.cc (is_small_h, is_small_v): Deleted. + (ps_printer::flush_sbuf): Use absolute motion only at beginning of + lines. + +Tue Dec 14 10:06:34 1993 James Clark (jjc@jclark.com) + + * troff/input.cc (read_request): Only print a prompt if reading + from the terminal. Also clearerr on EOF if reading from the + terminal. Declare isatty. + +Mon Nov 29 08:38:15 1993 James Clark (jjc@jclark.com) + + * refer/label.y: Rename map_t to map_func and extractor_t to + extractor_func. + +Sat Oct 30 06:38:12 1993 James Clark (jjc@jclark.com) + + * include/assert.h: Don't use volatile. + * libgroff/assert.cc: Likewise. + +Fri Oct 29 15:00:23 1993 James Clark (jjc@jclark.com) + + * troff/input.cc (abort_request): Look at character in tok before + calling get_copy(). + +Thu Oct 28 14:09:48 1993 James Clark (jjc@jclark.com) + + * troff/troff.h (NO_RETURN): Deleted. + * troff/div.cc (cleanup_and_exit): Don't declare aas NO_RETURN. + * troff/input.cc (exit_troff): Likewise + + * Makefile.in: Remove `Making ...' messages since GNU make now + gives these. + + * configure.in: Use AC_HAVE_HEADERS(unistd.h) instead of AC_UNISTD_H. + +Wed Oct 27 11:12:51 1993 James Clark (jjc@jclark.com) + + * tmac/tmac.s (@init): Initialize PO to \n(.o here, rather than + to constant 1 inch. + +Sat Oct 23 10:03:52 1993 James Clark (jjc@jclark.com) + + * tmac/tmac.e (hl): Use \n[.in] rather than \n(.i. + +Thu Oct 14 12:09:45 1993 James Clark (jjc@jclark.com) + + * eqn/delim.cc (delim_box::compute_metrics): Don't increase + MARK_REG if there was no left delimiter. + +Sat Oct 2 19:54:47 1993 James Clark (jjc@jclark.com) + + * pic/troff.cc (troff_output::text): Set line thickness to + relative before outputting text. + + * tmac/tmac.e (@k): Don't zero ?T. + ((z): Likewise. + +Sat Sep 25 11:08:43 1993 James Clark (jjc@jclark.com) + + * tmac/tmac.e ($p): Handle possibility that $3 is empty. + +Wed Aug 18 08:51:41 1993 James Clark (jjc@jclark.com) + + * troff/input.cc (decode_args): Warn about unquoted tabs (from + Paul Eggert). + +Tue Aug 10 08:38:32 1993 James Clark (jjc@jclark.com) + + * troff/input.cc (ignoring): New variable. + (ignore): Set ignoring during call to do_define_macro. + (do_define_macro): Clear ignoring before interpolating terminating + macro. + (copy_mode_error): New function. + (get_char_for_escape_name, read_long_escape_name, + interpolate_arg): Use copy_mode_error. + (warning_table): Add WARN_IG. + * troff/troff.h (WARN_IG): Declare. + (WARN_TOTAL): Change accordingly. + + * groff/pipeline.c (strsignal): Rename to xstrsignal. + * groff/groff.cc (strsignal): Delete declaration. + +Fri Jul 16 01:43:12 1993 James Clark (jjc@jclark.com) + + * troff/div.cc (page_offset): Use 'm' as default scaling. + +Sat Jul 3 09:11:38 1993 James Clark (jjc@jclark.com) + + * nroff/nroff.sh: Ignore -u. + +Wed Jun 9 12:17:27 1993 James Clark (jjc@jclark.com) + + * Makefile.in (MDEFINES): Pass down MAKEOVERRIDES. + +Fri Jun 4 17:35:47 1993 James Clark (jjc@jclark.com) + + * tmac/tmac.s (par*box-draw): Set adjustment mode to l while + drawing box. + (B2): With -Tascii, leave additional vertical space before + and after. Ensure that the left and right indent is restored to + what it was even if the point size changes. Don't call + par@finish. Change the indent, line length and title length + directly. With -Tascii, make the width of the box 1n less. + (B1): Remember 1n at the current point size. Don't call + par@reset. Change the indent, line length and title length + directly. Ensure that the temporary indent is preserved. + (par*box-mark-top): Turn off no spacing mode. + +Thu Jun 3 17:47:14 1993 James Clark (jjc@jclark.com) + + * Makefile.in (dist): Use .gz suffix. + +Thu May 27 20:04:59 1993 James Clark (jjc@jclark.com) + + * troff/input.cc (main): Add return 0. + * pic/main.cc (main): Use return instead of exit. + * tbl/main.cc (main): Likewise. + * eqn/main.cc (main): Likewise. + * grops/ps.cc (main): Likewise. + * grotty/tty.cc (main): Likewise. + * groff/groff.cc (main): Likewise. + * grodvi/dvi.cc (main): Likewise. + * refer/refer.cc (main): Likewise. + * indxbib/indxbib.cc (main): Likewise. + * lkbib/lkbib.cc (main): Likewise. + * soelim/soelim.cc (main): Likewise. + * addftinfo/addftinfo.cc (main): Likewise. + * acgroff.m4 (GROFF_PROG_CCC, GROFF_CC_COMPILE_CHECK, + GROFF_COOKIE_BUG, GROFF_CC_ANSI_BUG): Likewise. + + * troff/token.h (process_input_stack): Don't declare as static. + * troff/input.cc: Likewise. + + * troff/node.c (invalidate_fontno): Make it a static member of + class font_family. Change callers. + * troff/node.c: Change declaration. + + * tbl/main.cc (struct input_entry_format): Add explicit public + specifier. + * tbl/table.cc (struct text_stuff, struct single_hline_stuff, + struct double_hline_stuff): Likewise. + * tbl/table.h (struct entry_format): Likewise. + * pic/object.h (struct saved_state): Likewise. + + * include/stringclass.h: Add forward declarations of friend + functions that are later declared as inline. Don't include inline + specifier in friend declaration. + + * libgroff/lib.h: Declare popen and pclose. + * acgroff.m4 (GROFF_POPEN): New macro. + * configure.in: Call it. + + * include/lib.h (PI): New constant. Undef first if necessary. + * tfmtodit/tfmtodit.cc (main): Use PI rather than M_PI. + * grops/ps.cc (degrees, radians): Likewise. + * libgroff/font.cc (font::get_skew): Likewise. + + * grops/ps.cc (is_ascii): New function. + (ps_output::put_string): Use is_ascii. Use csprint rather than + isprint. + (ps_printer::define_encoding): Use csspace. + * libgroff/strtol.c (ISASCII): New macro. + (strtol): Cast arguments to is*() and tolower() to unsigned char. + Use ISASCII rather than isascii. + * libgroff/cmap.cc: Use isascii() only if <ctype.h> defines it. + * libgroff/cset.cc: Likewise. + * libdriver/input.cc: Include cset.h. + (do_file, get_integer, possibly_get_integer): Use csdigit() rather + than isdigit(). + + * refer/refer.cc (main): Use %ld rather than %d for longs. + + * libbib/index.cc (index_search_item_iterator::get_tag): Use + S_ISREG macro. + + * addftinfo/addftinfo.cc (param_t): Add explicit `int'. + +Mon May 24 08:51:37 1993 James Clark (jjc@jclark.com) + + * troff/input.cc (hyphenation_code): Skip white space between + char/code pairs. + +Sun May 16 08:15:52 1993 James Clark (jjc at jclark.com) + + * tbl/table.h (table::entry_list_tailp): New member. + (table::table): Initialize it. + (table::add_entry): Use entry_list_tailp to avoid O(n^2) + behaviour. + +Sat May 15 17:26:00 1993 James Clark (jjc at jclark.com) + + * grotty/tty.cc (tty_printer::add_char): Don't discard characters + with negative horizontal positions. Remove casts of glyph::hpos to + int. + (USHRT_MAX): Delete definition. + (SHRT_MAX, SHRT_MIN): New definitions. + (glyph::hpos): Change type to short. + (tty_printer::end_page): Output multiple backspaces if necessary. + Remove casts of glyph::hpos to int. + +Fri May 7 12:14:37 1993 James Clark (jjc at jclark.com) + + * tmac/tmac.s (@RT): New definition. + +Thu May 6 21:36:54 1993 James Clark (jjc at jclark.com) + + * refer/refer.cc (do_file): Make sure current_filename is set when + filename is "-". + + * pic/common.cc (common_output::dot_line): Handle zero length + lines. + +Sun May 2 19:54:16 1993 James Clark (jjc at jclark.com) + + * tmac/tmac.s (par@reset): Get value for .hy for \n[HY]. + (par@init): Initialize \n[HY]. + +Mon Apr 26 11:43:16 1993 James Clark (jjc at jclark.com) + + * troff/dictionary.cc (dictionary::remove): Continue when + r < j < i. + +Sun Apr 25 11:03:00 1993 James Clark (jjc at jclark.com) + + * Makefile.com (.y.cc): Avoid ending up with two versions of + $(YTABH). + +Thu Apr 22 21:03:45 1993 James Clark (jjc at jclark.com) + + * tmac/tmac.dvi (\(,c): Define only if it does not exist. + (\(,C): Likewise. Also fix typo. + +Wed Apr 21 08:47:32 1993 James Clark (jjc at jclark.com) + + * lib.h: Delete extraneous semi-colon. + + * Add pso request: `so' from a pipe. + * troff/input.c (file_iterator::file_iterator): Add 3rd argument. + (file_iterator::close): New function. + (file_iterator::~file_iterator, file_iterator::next_file): Use + file_iterator::close. + (file_iterator::backtrace): Say `process' rather than `file' when + the stream is popened. + (pipe_source): New function. + (init_input_requests): Bind ".pso" to pipe_source. + +Tue Apr 20 00:02:26 1993 James Clark (jjc at jclark.com) + + * afmtodit/afmtodit.pl: Avoid single quotes in comments. + + * pfbtops/pfbtops.c: Output 64 characters per line. Output hex + digits in lower case. + +Mon Apr 19 09:55:57 1993 James Clark (jjc at jclark) + + * Version 1.08 released. + + * Makefile.in (dist): Insert || true after ln -s commands that + might fail. + + * mm: Update to mm 1.16. + + * acgroff.m4 (GROFF_CSH_HACK): New macro. + * configure.in: Call GROFF_CSH_HACK. Substitute for + SH_SCRIPT_SED_CMD. + * Makefile.in (SH_SCRIPT_SED_CMD): New variable. Include in + MDEFINES. + * nroff/Makefile.sub (nroff): New target. + (install_data): Install nroff. + * eqn/Makefile.sub (neqn): Sed with SH_SCRIPT_SED_CMD. + * grog/Makefile.sub (grog): Sed grog.sh with SH_SCRIPT_SED_CMD. + +Sat Apr 17 08:24:28 1993 James Clark (jjc at jclark) + + * eqn/Makefile.sub (neqn): Add chmod +x. + + * grog/Makefile.sub (grog): Remove spurious semi-colon. + +Fri Apr 16 22:41:57 1993 James Clark (jjc at jclark) + + * troff/input.cc (string_iterator::string_iterator()): Initialize + lineno and count. + +Tue Apr 13 10:22:28 1993 James Clark (jjc at jclark) + + * troff/div.cc (macro_diversion::space, + top_level_diversion::space): Don't set high_water_mark. + (macro_diversion::output, top_level_diversion::output): Don't + include post line space in high water mark. + +Wed Apr 7 12:48:18 1993 James Clark (jjc at jclark) + + * eqn/eqn.y: Don't define YYDEBUG. + * pic/pic.y: Likewise. + +Mon Apr 5 10:15:15 1993 James Clark (jjc at jclark) + + * tmac/tmac.e ([3): Add space after comma following editors. + Change double spaces to single spaces. + ([4): Change double spaces to single spaces. + + * grops/ps.h (USE_PS_ADOBE_2_0): New flag for broken_flags. + * grops/ps.cc (ps_printer::~ps_printer): If the USE_PS_ADOBE_2_0 + bit is set in broken_flags, use 2.0 rather than 3.0 as the version + after %!PS-Adobe- (for Newsprint). + + * troff/div.cc (top_level_diversion::begin_page): When + before_first_page is 1, set page_number to 1. + +Sun Apr 4 14:28:53 1993 James Clark (jjc at jclark) + + * eqn/box.cc (box::top_level): Protect equation with \&. + +Sat Apr 3 23:27:25 1993 James Clark (jjc at jclark) + + * groff/groff.cc (possible_command::set_name): Delete old name. + + * groff/groff.cc (possible_command::~possible_command): Use + a_delete. + + * troff/node.cc (troff_output_file::begun_page): New member. + (troff_output_file::troff_output_file): Initialize it. + (troff_output_file::really_begin_page): Only output V command if a + page has been begun. + + * pic/pic.y (placeless_element): Delete argument to PRINT after + use. + +Fri Apr 2 11:31:02 1993 James Clark (jjc at jclark) + + * Make wrapman work. + * troff/div.h (class top_level_diversion): Replace + first_page_begun by before_first_page (with opposite sense). + * Change first_page_begun to before_first_page inverting sense. + * troff/div.cc (class nl_reg): New class. + (init_div_requests): Use class nl_reg for \n(nl. + (top_level_diversion::begin_page): Don't call + output_file::begin_page if before_first_page is 2; + reset before_first_page afterwards. If have_next_page_number is + false, then always increment page_number. + * tmac/tmac.an: Set traps within TH rather than at the top-level. + Restore compatibility mode after loading, and then disable + compatibility mode in TH. + +Thu Apr 1 11:09:34 1993 James Clark (jjc at jclark) + + * grotty/tty.cc (tty_printer::end_page): Don't discard characters + past last line. + * troff/node.h (output_file::trailer): Declare. + * troff/div.cc (cleanup_and_exit): Call output_file::trailer(). + * troff/node.cc (output_file::trailer): New function. + (troff_output_file::~troff_output_file): Move most code into... + (troff_output_file::trailer): New function. + (class troff_output_file): Delete page_length member. Declare + trailer(). + (troff_output_file::really_begin_page): Use current page length + for final V command. + + * tbl/main.cc (struct options): New decimal_point_char member. + (options::options): Initialize this. + (process_options): Implement decimalpoint option. + (process_data): Pass decimal_point_char option to table::table. + * tbl/table.h (class table): New decimal_point_char member. + (table::table): Add additional argument. + * tbl/table.cc (find_dot): Rename to find_decimal_point. Add + second argument specifying decimal point character. Use this + instead of '.'. + (table::table): Initialize decimal_point_char. + (table::add_entry): Change call to find_dot. + + * troff/input.cc (get_copy, token::next): Implement \V. + (interpolate_environment_variable): New function. + +Tue Mar 30 14:41:39 1993 James Clark (jjc at jclark) + + * pic/lex.cc (lookup_keyword): Rename MIN to K_MIN, MAX to K_MAX. + * pic/pic.y: Likewise. + + * grotty/tty.cc (tty_printer::add_char, tty_printer::end_page): + Add casts to int. + * refer/ref.cc (reference::insert_field, reference::delete_field): + Likewise. + * troff/number.cc (parse_term): Likewise. + + * acgroff.m4 (GROFF_PROG_YACC): New macro. + * configure.in: Use GROFF_PROG_YACC. + + * acgroff.m4 (GROFF_PROG_CCC): Don't add -O automatically for gcc + and g++. + * Makefile.in (OPTIMIZE): New define. + (DEBUG): Empty by default. + (CCFLAGS, CFLAGS): Include $(OPTIMIZE). + + * acgroff.m4 (GROFF_SYS_SIGLIST): Don't quote program. + (GROFF_ARRAY_DELETE): Likewise. + (GROFF_CC_COMPILE_CHECK): Quote use of $2 and $3. + + * troff/env.cc (trie::~trie): Make virtual to shut up g++. + + * devps/psstrip.sed: Use different delimiter on last line (so that + it works with BSD 4.4 sed.) + +Mon Mar 29 17:07:14 1993 James Clark (jjc at jclark) + + * devps/psstrip.sed: Delete comments. + + * acgroff.m4 (AC_GETOPT): Don't test whether <unistd.h> declares + optind, opterr, optarg. + * lib.h: When UNISTD_H_DECLARES_GETOPT is defined, declare optind, + opterr, optarg. + +Sun Mar 28 17:44:25 1993 James Clark (jjc at jclark) + + * Makefile.in (check): Dummy target. + +Wed Mar 3 04:53:38 1993 James Clark (jjc at jclark) + + * Version 1.07 released. + + * Integrate mm 1.11. + + * tbl/table.cc (alphabetic_block_entry::print): start_row was used + where start_col was meant. + +Thu Feb 25 07:55:36 1993 James Clark (jjc at jclark) + + * grog/grog.sh, grog/grog.pl: Recognize PH and SA as -mm macros. + +Wed Feb 24 10:15:34 1993 James Clark (jjc at jclark) + + * troff/input.cc (token::next): Make \z\o'...' and similar things + work. + + * env.h (MARGIN_CHARACTER_ON, MARGIN_CHARACTER_NEXT): New + constants. + (environment): Add margin_character_flags member. + * env.cc (environment::environment(symbol), + environment::environment(const environment *): Initialize + margin_character_flags. + (margin_character): Rewrite. + (environment::output_line): Add a margin character if + margin_character_flags is non-zero. Turn off the + MARGIN_CHARACTER_NEXT bit. If that makes margin_character_flags + zero, use margin_character_node without copying and then set + margin_character_node to 0. + + * devps/DESC.in: Change minimum size to 1000. + +Tue Feb 23 14:57:49 1993 James Clark (jjc at jclark) + + * troff/symbol.h (symbol::hash): Change return type to unsigned + long. + * troff/dictionary.cc (dictionary::lookup, dictionary::remove): + Add casts to int. + + * test-groff: Use -r rather than -x. + + * grops/psfig.diff: Include in distribution again. + +Mon Feb 22 09:10:44 1993 James Clark (jjc at jclark) + + * Makefile.in (dist): Use gzip. + +Sun Feb 21 11:12:53 1993 James Clark (jjc at jclark) + + * acgroff.m4 (GROFF_GETOPT): Check for declaration of getopt() in + unistd.h as well as in stdlib.h. + * include/lib.h: Include <stdlib.h> is STDLIB_H_DECLARES_GETOPT is + defined; otherwise include <sys/types.h> and <unistd.h> if + UNISTD_H_DECLARES_GETOPT is defined. + + * configure.in: use builtin(include, ... rather than include(... + * configure: Regenerate with autoconf 1.3. + + * libdriver/print.cc (printer::adjust_arc_center): Use new + algorithm suggested by Andy Fyfe. + + * libdriver/printer.cc (printer::adjust_arc_center): New function. + * include/printer.h: Declare this. + * grops/ps.cc (ps_printer::draw): Use it. + * grodvi/dvi.cc (dvi_printer::draw): Use it. + +Fri Feb 19 23:13:51 1993 James Clark (jjc at jclark) + + * Makefile.comm (.man.n): Replace macrodir by tmacdir. + +Thu Feb 11 16:46:59 1993 James Clark (jjc at jclark) + + * eqn/main.cc (main): Handle "eqn -". + +Mon Jan 4 20:29:56 1993 James Clark (jjc at jclark) + + * tmac/tmac.e (++): Install fix from comp.bugs.4sd. + + * mm: Integrate version 1.08. + + * pic/troff.cc (troff_output::finish_picture): Set + EQN_NO_EXTRA_SPACE reg to 0 rather than removing it. + * eqn/box.cc (box::extra_space): Set EQN_NO_EXTRA_SPACE_REG to 0 + if it's not defined. Check whether the register is non-zero rather + than whether it's not defined. + * tmac.e ({, <): Make argument to \x zero if \n(0x is non-zero. + + * indxbib/indxbib.cc: Move all signal handling into... + * indxbib/signal.c: New file. + * configure.in: Call AC_RETSIGTYPE. + + * acgroff.m4 (GROFF_STRUCT_EXCEPTION): New macro. + * configure.in: Call GROFF_STRUCT_EXCEPTION. + * libgroff/matherr.c: Protect with ifdef HAVE_STRUCT_EXCEPTION. + + * troff/input.cc (token::token, token::operator=): Work round SGI + C++ bug. + * pic/object.cc (position::position): Likewise. + +Mon Dec 28 21:50:21 1992 James Clark (jjc at jclark) + + * pic/pic.h: Move declaration of hypot(). + +Wed Dec 16 12:28:29 1992 James Clark (jjc at jclark) + + * pic/pic.h: Declare hypot(). + + * pic/pic.h: Define M_PI if necessary. + +Thu Dec 10 12:03:29 1992 James Clark (jjc at jclark) + + * tmac/tmac.e (re): Add alternative version that doesn't use groff + `.ta T' feature. + + * devps/prologue.ps (RE): Handle the possibility that the old font + doesn't have a FontName entry. + +Wed Dec 2 10:25:29 1992 James Clark (jjc at jclark) + + * tmac/tmac.e (fam): Redefine to set family in environment 2. + (@C): Use @fam not fam. + +Thu Nov 26 16:01:25 1992 James Clark (jjc at jclark) + + * lookbib/lookbib.cc (main): Change type of start to const char *. + * lkbib/lkbib.cc (main): Likewise. + + * eqn/lex.cc (definition::definition): Don't use member + initializer syntax for members of anonymous unions. + + * troff/input.cc (input_stack::backtrace): Change type of to const + char *. + +Wed Nov 25 13:43:09 1992 James Clark (jjc at jclark) + + * include/stringclass.h (class string): Declare inline friend + functions as inline in class declaration. + * troff/hvunits.h (class hunits, class vunits): Likewise. + * include/refid.h (class reference_id): Likewise + * troff/troff.h (points_to_units(units), scale(units, double)): + Delete declarations. + * libdriver/input.cc (get_char): Delete declaration. + * include/lib.h: Change 2nd argument of getopt from const char ** + to char **. + * troff/symbol.cc (symbol::symbol): Cast `new char *[n]' to `const + char **' before assigning to a `const char **'. + * tbl/table.cc: Delete extra declarations of prints(). + +Tue Nov 24 14:33:13 1992 James Clark (jjc at jclark) + + * libgroff/font.cc (font::load_desc): Cast `new char *[n]' to `const + char **' before assigning to a `const char **'. + + * libgroff/errarg.cc (errarg::errarg): Don't use member + initializer syntax for members of anonymous unions. + +Sat Nov 21 05:02:23 1992 James Clark (jjc at jclark) + + * mm: Integrate version 1.07. + +Tue Nov 17 16:44:27 1992 James Clark (jjc at jclark) + + * troff/input.c (translate2): Rename to + (translate_no_transparent). + (init_input_requests): Rename tr2 to trnt. + +Mon Nov 16 09:49:32 1992 James Clark (jjc at jclark) + + * troff/charinfo.h (class charinfo): Add transparent_translate field. + (charinfo::set_translation, charinfo::set_special_translation): + Add second argument that specifies value for + transparent_translate. + (charinfo::get_translation, charinfo::get_special_translation): + Add optional second argument that specifies whether translation is + being used for transparent throughput. + * troff/input.cc (charinfo::set_translation, + charinfo::set_special_translation): Handle second argument. + (charinfo::charinfo): Initialize transparent_translate. + (translate): Split main part off into + (do_translate): New function. Pass argument saying whether + translation applies to transparent throughput. + (translate2): New request. + (init_input_requests): Bind translate2 to `tr2'. + +Wed Nov 11 11:43:20 1992 James Clark (jjc at jclark) + + * tbl/table.h (class table): Add `nokeep' flag. + * tbl/main.cc (process_options): Handle `nokeep' option. + * tbl/table.cc (table::init_output, table::do_row, table::do_top, + table::do_bottom): Don't output keep/release macro definitions or + calls when `nokeep' option has been specified. + +Sat Nov 7 01:28:33 1992 James Clark (jjc at jclark) + + * tmac/tmac.Xps (Xps-char): Use " as delimiter for \Z. + +Wed Nov 4 16:29:04 1992 James Clark (jjc at jclark) + + * tbl/table.cc (table_entry::divert, block_entry::do_divert, + block_entry::divert, alphabetic_block_entry::divert): Add extra + argument giving column separation. + (table::compute_widths): Pass column separation to + table_entry::divert(). + (block_entry::do_divert): If an entry spans multiple columns and a + minimumum width has been specified for each column, then set the + line length to the sum of the widths (plus possibly the column + separations). + + * troff/input.cc (set_escape_char): Don't set the escape_char + until after calling has_arg(). + +Tue Nov 3 11:23:27 1992 James Clark (jjc at jclark) + + * tbl/table.cc (table::do_top): Add missing \s0 for double box + case. + + * tbl/table.cc (table::print_double_hline): Avoid extra new line + in case where r > nrows - 1. + + * tbl/table.cc (BODY_HEIGHT): Deleted. + (LINE_SEP): New definition. + (table::print_single_hline, table::print_double_hline, + table::compute_vrule_top_adjust, table::compute_vrule_bot_adjust, + table::do_row, table::do_top): Use LINE_SEP space before a line + instead of \n[.v]-BODY_HEIGHT-BODY_DEPTH. + + * tbl/table.cc (text_entry::print_contents): New function. + (text_string_name, right_text_string_name): Deleted. + (TEXT_STRING, RIGHT_TEXT_STRING): Deleted. + (simple_text_entry::do_width, numeric_text_entry::do_width, + alphabetic_text_entry::do_width): Don't store the contents of the + entry in a string. + (left_text_entry::simple_print, right_text_entry::simple_print, + center_text_entry::simple_print, + alphabetic_text_entry::simple_print, + numeric_text_entry::simple_print): Print the entry directly + instead of using the stored string. + +Fri Oct 30 10:39:32 1992 James Clark (jjc at jclark) + + * devps/Makefile: Strip PostScript files. + * devps/prologue: Rename to... + * devps/prologue.ps. + * devps/psstrip.sed: New file. + * devps/download: Use .pfa rather than .ps for installed versions + of fonts. + +Thu Oct 29 09:14:43 1992 James Clark (jjc at jclark) + + * troff/env.cc (input_trap): Give a warning if the argument is out + of range. + + * troff/env.cc (adjust): Treat negative argument as missing. Round + argument > 5 down to 5. + + * troff/env.cc (center, right_justify): Make negative argument zero. + + * troff/div.cc (page_offset, vertical_position_traps): Treat + invalid argument as missing. + * troff/env.cc (line_spacing, line_length, title_length, indent, + underline, hyphen_line_max_request, control_char, + no_break_control_char, widow_control_request, adjust, input_trap, + point_size): Likewise. + * troff/node.cc (ligature, kern_request, bold_font, track_kern, + constant_space): Likewise. + * troff/input.cc (compatible, shift, warn_request, + set_escape_char): Likewise. + + * tbl/main.cc (format::format): Avoid doing `new int[0]'. + * tbl/table.cc (table::table): Likewise. + + * Makefile.dev (install_dev): depends on $(DEVFILES). + +Wed Oct 28 08:30:57 1992 James Clark (jjc at jclark) + + * devX75, devX75-12, devX100, devX100-12: New directories. + * Makefile.in: Add these to DEVDIRS. + + * troff/Makefile.sub, eqn/Makefile.sub, indxbib/Makefile.sub, + afmtodit/Makefile.sub, tmac/Makefile.sub, nroff/Makefile.sub, + grog/Makefile.sub, mm/Makefile.sub (uninstall_sub): New target. + * Makefile.in (uninstall, uninstall_sub, uninstall_dirs): New + targets. + * Makefile.ccpg, Makefile.cpg, Makefile.dev, Makefile.man + (uninstall): New target. + * Makefile.comm (uninstall, uninstall_sub, uninstall_man, + uninstall_prog, uninstall_dev): New targets. + + * troff/div.cc (return_request): Treat an invalid argument as + missing. + +Mon Oct 26 11:33:47 1992 James Clark (jjc at jclark) + + * tmac/tmac.e ((f): Set up the environment even when there's a + current diversion. Transparently throughput a call to @N. + (@N): New macro. + +Thu Oct 22 05:05:59 1992 James Clark (jjc at jclark) + + * tbl/table.cc (table::compute_vrule_top_adjust): Round adjustment + up to vertical resolution. + + * tbl/table.cc (table::do_row): Change row number after printing + stuff list. + + * pic/lex.cc (get_token_after_dot): Make .left and .right work. + +Wed Oct 21 14:46:45 1992 James Clark (jjc at jclark) + + * Rename CHANGES to NEWS. + +Tue Oct 20 23:25:21 1992 James Clark (jjc at jclark) + + * libgroff/new.cc (operator new): Avoid calling malloc(0). + +Mon Oct 19 09:10:13 1992 James Clark (jjc at jclark) + + * man.ultrix: Removed. + +Sun Oct 18 06:35:15 1992 James Clark (jjc at jclark) + + * Makefile.comm (extraclean): Delete files whose names begin with + `='. + + * pic/troff.cc (troff_output::text): Fix typo in implementation of + aligned text. + +Sat Oct 10 09:32:29 1992 James Clark (jjc at jclark) + + * troff/env.cc (hyphenate_request, vertical_spacing, no_number): + * troff/div.cc (page_length, need_space, space_request): Treat + invalid optional argument as missing. + * troff/env.cc (number_lines): If the first argument is present + but not a number, turn on line numbering, don't change the next + line number and parse the remaining arguments. + + * tmac/tmac.e (@q): Do the `ne' before changing to environment 2. + +Thu Oct 8 10:24:40 1992 James Clark (jjc at jclark) + + * eqn/box.h: Change declaration accordingly. + * eqn/box.cc (set_gsize): Change return type to int. Return 0 if + the specified size was bad but don't give an error. Check for + overflow. + * eqn/main.cc (main): Change caller. Leave validation to set_gsize. + * eqn/lex (do_size): Likewise. + +Wed Oct 7 09:48:59 1992 James Clark (jjc at jclark) + + * acgroff.m4 (GROFF_PROG_CCC): Use fopen when checking for C++ + compatible headers. + +Sun Oct 4 18:24:02 1992 James Clark (jjc at jclark) + + * tbl/table.cc (table::init_output): Improve error message when + table won't fit on one page. + +Fri Oct 2 10:41:40 1992 James Clark (jjc at jclark) + + * pic/troff.cc (troff_output::start_picture): Generate line + containing a horizontal motion equal to the width of the picture. + + * groff/groff.cc (main): Allow PROG_PREFIX to be set at runtime + using GROFF_COMMAND_PREFIX environment variable. + +Fri Sep 25 11:40:40 1992 James Clark (jjc at jclark) + + * mdate.sh: Use $NF rather than $(NF). + +Tue Sep 22 09:47:24 1992 James Clark (jjc at jclark) + + * pic/main.cc (main): Use %1 not %c in argument to warning. + + * eqn/main.cc (main): Output code to check that geqn was given the + correct -T option. + +Mon Sep 21 10:59:16 1992 James Clark (jjc at jclark) + + * Makefile.in (dist): Instead of doing `make -f ../Makefile', do + `ln -s ../Makefile .; make; rm -f Makefile'. + + * troff/hyphen: Rename to... + * troff/hyphen.us: + * troff/input.cc (main): Delete -H option. Don't call + read_hyphen_file(). + * troff/env.cc: Include searchpath.h and macropath.h. + (exception_dictionary): Deleted. + (ht): Deleted. + (read_hyphen_file): Deleted. + (hyphenation_language): New struct. + (class trie, class hyphen_trie): Move declarations up. + (trie_node::~trie_node): Deleted. + (trie::delete_trie_node): New function. + (trie::do_delete): New pure virtual function. + (hyphen_trie::do_delete): New function. + (trie::~trie): New function. + (hyphen_trie::~hyphen_trie): New function. + (trie::clear): No need to check that tp is not 0. + (current_language, language_dictionary): New variables. + (hyphen_word): Give an error if no current language. Use + exceptions dictionary in current language. + (hyphen_trie::read_patterns_file): Find file using macro_path. + Allow comments (starting with %) in patterns file. Don't make it + a fatal error if the file can't be found. + (hyphenate): Return if no current language. Get the exceptions + dictionary and the hyphenation patterns from the current language. + (set_hyphenation_language): New variable. + (hyphenation_patterns_file): New function. + (hyphenation_language_reg): New class. + (hyphenation_language_reg::get_string): New function. + (init_hyphen_requests): Bind "hla" to set_hyphenation_language and + "hpf" to hyphenation_patterns_file. Initialize `.hla' number + register. + * groff/groff.cc (main, help, synopsis): Delete -H option. + * include/Makefile.sub: Don't define HYPHENFILE. + * Makefile.in: Delete hyphenfile variable and remove from MDEFINES. + * Makefile.comm (.man.n): Don't substitute for HYPHENFILE. + * tmac/troffrc: Set hyphenation language to `us'. Load `hyphen.us' + hyphenation patterns. + +Sun Sep 20 09:33:02 1992 James Clark (jjc at jclark) + + * eqn/neqn.sh: New file. + * eqn/Makefile.sub: Handle neqn.sh. + + * eqn/eqn.h: Declare `nroff' variable. + * eqn/box.cc (param_table): Add `nroff' param. + (nroff): Define it. + * eqn/lex.cc (yylex): Handle TDEFINE and NDEFINE using `nroff' + variable. + * tmac/eqnrc: Set `nroff' to 1 for -Tascii or -Tlatin1. + + * troff/troff.h (WARN_FONT): New warning. + (WARN_TOTAL): Change accordingly. + * troff/input.cc (DEFAULT_WARNING_MASK): Include WARN_FONT. + (warning_table): Add WARN_FONT. + * troff/node.cc (mount_font_no_translate): Pass argument to + font::load_font. If this is non-zero, give a warning. + Don't give an error message when accessing a font that has already + been found to be invalid. + * include/font.h (font::load, font::load_font): Add additional + optional argument which suppresses error message if the font is + not found. + * libgroff/font.cc (font::load_font): Handle additional argument. + (font::load): Add additional argument. If this is non-null, set it + to 1 and don't give error message. + + * include/printer.h (printer::end_page): Add argument giving + length of page. + * libdriver/input.cc (do_file): Pass this. + * grops/ps.cc (ps_printer::end_page): Add argument. + * grodvi/dvi.cc (dvi_printer::end_page, + draw_dvi_printer::end_page): Add argument. + * grotty/tty.cc (class tty_printer): Remove lines_per_page and + columns_per_page members. New member nlines. + (DEFAULT_LINES_PER_PAGE): Deleted. + (tty_printer::tty_printer): Don't compute lines_per_page from + font::paperlength. Don't compute columns_per_page from + font::paperwidth. + (tty_printer::add_char): Don't check horizontal position against + columns_per_page. Grow glyphs vector if necessary. + (tty_printer::end_page): Add argument giving page_length in units. + Discard lines past end of page. + +Wed Sep 16 06:29:52 1992 James Clark (jjc at jclark) + + * tmac/tmac.tty-char: Fix definition of \(/l. + + * tmac/tmac.X: Define \(en. + +Tue Sep 15 10:37:13 1992 James Clark (jjc at jclark) + + * acgroff.m4 (GROFF_PRINT): If a system has lpr and lp but not + lpq, then use lp rather than lpr. + + * tmac/tmac.s (par@reset): Don't call `ad'. + (par*env-init): Call `ad'. + +Sun Sep 13 18:48:20 1992 James Clark (jjc at jclark) + + * mdate.sh: Use $(NF) instead of $6 to extract year from output of + date. + + * troff/symbol.cc: #undef BLOCK_SIZE if it's defined. + * indxbib/indxbib.cc: Likewise. + +Sun Sep 6 09:44:46 1992 James Clark (jjc at jclark) + + * libgroff/putenv.c: New file. + * libgroff/Makefile.sub: Add putenv.c to CSRCS. + * Makefile.in: Say that putenv.o can be one of LIBOBJS. + * configure.in: Test for putenv with AC_REPLACE_FUNCS. Test for + stdlib.h with AC_HAVE_HEADERS. + +Sat Sep 5 18:11:52 1992 James Clark (jjc at jclark) + + * indxbib/dirnamemax.c: Include <sys/dir.h> only if <dirent.h> + does not exist. + +Fri Sep 4 09:43:26 1992 James Clark (jjc at jclark) + + * eqn/box.cc (gsize): Make it an int. + (set_gsize): Parse argument handling increment or decrement. + (box::top_level): Convert gsize to a string. + + * troff/input.cc (exit_troff): Make buf unsigned char []. + Call to make_temp_iterator casts buf to char*. + + * Makefile.in ($(TARGETS), dot): Pass $(MDEFINES) to recursive makes. + + * Makefile.ccpg (depend.temp): Depends on $(YTABC). + * Makefile.cpg (depend.temp): Likewise. + + * Makefile.dep: Remove Makefile.dep from $(REALCLEANFILES). + + * Makefile.comm: Add y.output to MOSTLYCLEANFILES. + +Thu Sep 3 08:01:55 1992 James Clark (jjc at jclark) + + * tmac/tmac.s (B, I, BI, CW): Rewrite avoiding aliases. + +Tue Sep 1 18:24:53 1992 James Clark (jjc at jclark) + + * Version 1.06 released. + + * Integrate mm 1.04. + +Fri Aug 28 11:28:19 1992 James Clark (jjc at jclark) + + * Makefile.comm, Makefile.ccpg, Makefile.cpg: Fix TAGS target. + +Thu Aug 27 11:03:33 1992 James Clark (jjc at jclark) + + * afmtodit/afmtodit.pl: Add -n option that disables generation of + ligatures command. + * devps/generate/Makefile (CR, CB, CI, CBI): Pass -n flag to + afmtodit. Regenerate. + + * tmac/tmac.e ()z): Adjust _b if necessary so as to avoid moving + @f back past the current position. + + * tmac/tmac.e: Change calls to @R so that comments are not part of + arguments. + +Tue Aug 25 10:42:07 1992 James Clark (jjc at jclark) + + * configure.in: Check for mkstemp with AC_HAVE_FUNCS. + + * acgroff.m4 (GROFF_PROG_CCC): Don't check for <osfcn.h>. Instead + check that we can link a call to a function declared in <stdio.h>. + (GROFF_UNISTD_H): New macro. + * configure.in: Call it. + * Makefile.in: Document it. + * include/posix.h: New file. + * troff/troff.h: Don't include <osfcn.h> + * troff/input.cc: Include posix.h. + * libgroff/new.cc, libgroff/tmpfile.cc: Include posix.h rather than + osfcn.h. + * indxbib/indxbib.cc, libbib/{search.cc,linear.cc,index.cc}: + Include posix.h rather <sys/types.h>, <sys/stat.h>, <osfcn.h>, + <fcntl.h>. + * indxbib/indxbib.cc (S_IRUSR, S_IRGRP, S_IROTH): Delete definitions. + * libbib/index.cc (S_ISREG, O_RDONLY): Delete definitions. + * libbib/search.cc (O_RDONLY): Delete definition. + * refer/refer.cc, include/driver.h, pic/pic.h, groff/groff.cc: + Don't include <osfcn.h>. + + * acgroff.m4 (GROFF_TIME_T): New macro. + * configure.in: Call it. + * Makefile.in: Document it. + + * acgroff.m4 (GROFF_TRADITIONAL_CPP): New macro. + * configure.in: Call it. + * Makefile.in: Document -DTRADITIONAL_CPP. + * include/ptable.h: Don't include generic.h. + (name2): Define it. + + * tmac/tmac.s (][): Make [T1 and [T2 aliases for [T. + Afterwards remove [T1 and [T2. + (ref*spec!0, ref*spec!2): Use T1 rather than T. + (ref*spec!1, ref*spec!4, ref*spec!4): Use T2 rather than T. + (ref*add-T2): Renamed from ref*add-T. + (ref*add-T1): New macro. + +Mon Aug 24 11:11:11 1992 James Clark (jjc at jclark) + + * acgroff.m4 (AC_PROG_CCC): Use GROFF_EXIT rather than exit 1. + + * libbib/index.cc: Include <fcntl.h>. + (O_RDONLY): Define if necessary. + (make_index_search_item, index_search_item_iterator::get_tag, + index_search_item::check_files): Use O_RDONLY. + * libbib/search.cc: Include <fcntl.h>, <sys/types.h>, <sys/stat.h>. + (O_RDONLY): Define if necessary. + (search_list::add_file): Use O_RDONLY. + * indxbib/indxbib.cc: Include <fcntl.h>, <sys/types.h>, + <sys/stat.h>. + (S_IRUSR, S_IRGRP, S_IROTH): Define if necessary. + (main): Use these. + + * libbib/index.cc (S_ISREG): Define it if necessary. + (index_search_item::load): Use S_ISREG. + + * include/driver.h: Include <errno.h>. + +Sun Aug 23 11:32:18 1992 James Clark (jjc at jclark) + + * eqn/box.cc (body_height): Increase default value to 85. + (body_depth): Increase default value to 35. + +Fri Aug 21 05:34:42 1992 James Clark (jjc at jclark) + + * eqn/pbox.h (SAVE_FONT_STRING): Define it. + * eqn/box.cc (box::top_level): Hide use of \R in a string that is + protected from expansion with \E. + + * acgroff.m4 (GROFF_PAGE): Use `case' to test domain. + + * Makefile (Makefile): New target. + + * Makefile.sub (configure, distfiles): New targets. + + * acgroff.m4 (GROFF_BROKEN_SPOOLER_FLAGS): Avoid using ${var:-val} + construct. + +Thu Aug 20 12:27:26 1992 James Clark (jjc at jclark) + + * eqn/box.cc (param_table): Add body_height and body_depth. + + * eqn/lex.cc (def_table): Make circumflex in hat_def roman. + +Tue Aug 18 16:24:25 1992 James Clark (jjc at jclark) + + * psbb/Makefile.sub: Don't link with libgroff.a. + + * acgroff.m4 (GROFF_PUTENV): New macro. + * configure.in: Call GROFF_PUTENV. + * Makefile.in: Document STDLIB_H_DECLARES_PUTENV. + * groff/groff.cc: Don't declare putenv if STDLIB_H_DECLARES_PUTENV + is defined. + + * troff/env.cc (distribute_space): Rename force_forward argument + to force_reverse. Reverse the list if force_reverse is true. + +Mon Aug 17 17:49:05 1992 James Clark (jjc at jclark) + + * tmac/tmac.an: Don't define a string `T'. Just define Tm. + + * eqn/pile.cc (matrix_box::compute_metrics): Don't allow computed + height or depth to be negative. Guard against SUP_RAISE quantity + being negative. + +Sat Aug 15 08:18:54 1992 James Clark (jjc at jclark) + + * devps/generate/textmap: Add `an' (arrowhorizex). + * tmac/tmac.ps: \(an overlaps horizontally. + * tmac/tmac.dvi, tmac/tmac.tty: Add `an'. + + * devps/symbolchars: Add arrowverttp, arrowvertbt. + * devps/textmap: Add arrowvertex. + * eqn/delim.cc (delim_table): Add uparrow, downarrow and + updownarrow delimiters. + * tmac/tmac.ps, tmac/tmac.X: Add definition of \(va. + + * tbl/table.cc (simple_entry::position_vertically, + block_entry::position_vertically): For a centered entry, perform + the motion in two stages. + + * refer/refer.cc (split_punct): Don't call lookup_token if there + is no token. + +Fri Aug 14 11:14:58 1992 James Clark (jjc at jclark) + + * troff/input.cc (token::next): Delete token_node after copying + token. + + * grodvi/grodvi.cc (dvi_printer::dvi_printer): Initialize + cur_point_size. + + * libdriver/printer.cc (printer::load_font): Delete old_font_table. + + * grops/ps.cc (ps_printer::define_encoding): Delete elements of vec. + +Tue Aug 11 13:50:38 1992 James Clark (jjc at jclark) + + * grops/ps.cc (usage): -b option takes an argument. + + * devps/prologue (PLG): New procedure. + * grops/ps.cc (main, usage): New -g option. + (ps_printer::~ps_printer): If guess_flag is set, guess the paper + length using PLG. + +Mon Aug 10 11:17:53 1992 James Clark (jjc at jclark) + + * include/cset.h: Include <limits.h> if we have it. + + * libgroff/illegal.cc: New file. + * include/lib.h (illegal_input_char): Use table. + * troff/input.cc (ESCAPE_RIGHT_PARENTHESIS): Renumber to 0206. + * pic/lex.cc (ARG1): Renumber to 14. + * eqn/lex.cc (ARG1): Likewise. + + * troff/Makefile.sub (majorminor.cc): Handle 3 part versions + (eg 1.05.90) correctly. + +Sun Aug 9 13:35:43 1992 James Clark (jjc at jclark) + + * tmac/tmac.e (sr): Deleted. Set $r and $R directly. + Rename $r and $R registers to $v and $V. + ($r, $R): Initialize to 0. + (@v, @V): New macros. + (sz): Call @v. + (@M): Call @V. + + * troff/input.cc (main, usage): Add -R option that says not to + load troffrc. + * eqn/main.cc (main, usage): Rename -n to -R. + +Sat Aug 8 00:16:00 1992 James Clark (jjc at jclark) + + * devps/DESC.in: Leave font positions 5-9 blank. + * devdvi/DESC.in: Likewise. + + * grog/grog.pl: Handle `.PS <file' correctly. + + * troff/input.cc (input_stack::push): Improve error message when + input stack limit exceeded. + +Fri Aug 7 13:08:16 1992 James Clark (jjc at jclark) + + * refer/refer.cc (main): Fix typo in handling of `a' option. + + * refer/refer.cc (do_bib): In state START after a newline remain + in state START. + + * groff/groff.sh: Deleted. + * groff/Makefile.sub: Delete handling of groff.sh. + + * pic/troff.cc (troff_output::text): Test \n(0p rather than \*(.T + to determine whether to use \X'ps:...'. + * tmac/troffrc: Set 0p register to 0. + * tmac/tmac.ps: Set 0p register to 1. + + * groff/groff.cc: Support -X option. Give warning for -TXps and + transform to -X -Tps. Pass troff a -r.X=1 option if -X is used. + * tmac/troffrc: Support -r.X=1. + + * pic/troff.cc (troff_output::dot): Don't test + zero_length_line_flag. + +Thu Aug 6 13:32:08 1992 James Clark (jjc at jclark) + + * include/lib.h: Declare getopt() and friends unless + STDLIB_H_DECLARES_GETOPT is defined. + + * doc/chars.tr: Delete. + * man/groff_char.man: New file. + +Wed Aug 5 00:38:58 1992 James Clark (jjc at jclark) + + * tmac/tmac.e (np, bu): Test \n($p with string expression in case + user has changed register format. + +Mon Aug 3 11:22:18 1992 James Clark (jjc at jclark) + + * groff/groff.cc: Get rid of device_table. Get postprocessor from + `postpro' command in DESC file. Get spooler command from `print' + command in DESC file. Execute spooler command with /bin/sh. + + * groff/groff.cc: Split Unix-specific parts into... + * groff/pipeline.c: New file. + + * LICENSE: Delete. + * COPYING: New file. + * all files: Update copyright notices. + + * Rearrange files. Redo Makefiles. Use autoconf. + +Sat Aug 1 09:36:50 1992 James Clark (jjc at jclark) + + * troff/input.c (charinfo_to_node_list): Interpret character + definition with escape_char of `\'. + +Tue Jul 28 12:20:12 1992 James Clark (jjc at jclark) + + * lib/strerror.c, lib/iftoa.c, lib/itoa.c: Don't include lib.h. + Define INT_DIGITS as big enough for 64-bit integer. + * lib/strtol.c: Don't include lib.h. + * lib/lib.h: Delete ifdef __cplusplus stuff. + +Mon Jul 27 11:08:50 1992 James Clark (jjc at jclark) + + * ps/devps/Makefile: Add DESC to DEVICEFILES. Separate out rule + for making DESC. Make $(FONTS) depend on DESC. afmtodit should + get DESC from current directory. + +Sun Jul 26 15:38:26 1992 James Clark (jjc at jclark) + + * tbl/main.c (main): Always reset the line number when reading + from stdin. + + * tbl/table.c (table::print_single_hline, table::print_double_hline, + table::define_bottom_macro, table::do_row, table::do_top): Round + vertical spacing up to vertical resolution. + +Fri Jul 24 14:32:07 1992 James Clark (jjc at jclark) + + * ps/ps.h (enum resource_type): Avoid comma at end of + enumerator-list. + * dvi/dvi.c (class dvi_printer): Likewise. + * dvi/tfmtodit.c (gf::load): Likewise. + * refer/label.y (struct expression): Likewise. + * refer/refer.c (class label_processing_state): Likewise. + * refer/indxbib.c (do_file): Likewise. + * troff/troff.c (enum warning_type): Likewise. + * tbl/main.c (process_data): Likewise. + * troff/charinfo.h (class charinfo): + +Wed Jul 22 09:17:58 1992 James Clark (jjc at jclark) + + * dvi/devdvi/textt.map: Add entry for `-'. Regenerate fonts. + +Tue Jul 21 11:39:26 1992 James Clark (jjc at jclark) + + * groff.c: Move to new groff subdirectory. + * groff/Makefile: New file. + * Makefile: Remove handling of groff.c. Add groff to SUBDIRS. + + * man/mdate.sh: Use ls -L if supported. + + * Consolidate all header files produced by gendef into lib/defs.h. + * lib/macropath.c, lib/fontfile.c, lib/device.c: Include defs.h. + Don't include path.h. + * lib/Makefile (path.h): Don't generate. + * troff/input.c: Include defs.h. Don't include config.h. + * troff/Makefile (config.h): Don't generate. + * refer/index.h: Don't include suffix.h. + * refer/index.c: Include defs.h. + * refer/indxbib.c: Include defs.h. + * refer/refer.h, refer/lkbib.h: Don't include path.h. Include + defs.h. + * refer/Makefile (suffix.h, path.h): Don't generate. + * groff.c: Don't include config.h. Include defs.h. + * Makefile (config.h): Don't generate. + (lib/defs.h): Generate. + (topclean): Remove lib/defs.h. + +Mon Jul 20 10:12:57 1992 James Clark (jjc at jclark) + + * lib/malloc.c, lib/getpagesize.h: Deleted. + * Makefile: Add COOKIE_BUG configuration option. Delete malloc + related stuff. + * lib/Makefile: Delete malloc-related stuff. + * lib/new.c: Workaround COOKIE_BUG if necessary. + + * refer/lkbib.c, refer/indxbib.c: Don't include refer.h. Include + needed header files directly. + * refer/refer.h: Omit definition of DEFAULT_INDEX. + * Makefile: Include definition of DEFAULT_INDEX in path.h. + +Sun Jul 19 10:19:22 1992 James Clark (jjc at jclark) + + * lib/font.c (FONT_COMMAND_HANDLER): Pass command name and single + argument. + * lib/font (font::load_desc, font::load): Don't split argument of + unknown command. + (font::handle_unknown_font_command): Change type. + * ps/ps.c (ps_font::handle_unknown_font_command, + handle_unknown_desc_command): Change type. + * dvi/dvi.c (dvi_font::handle_unknown_font_command): Change type. + +Fri Jul 17 11:12:49 1992 James Clark (jjc at jclark) + + * lib/font.h (font::handle_unknown_font_command): Add file and + line arguments. + * lib/font.c (font::handle_unknown_font_command): + * ps/ps.c (ps_font::handle_unknown_font_command): + * dvi/dvi.c (dvi_font::handle_unknown_font_command): Add file and + lineno arguments. Use _with_file_and_line functions for error + reporting. + + * lib/fontfile.c (font::unknown_desc_command_handler): New static + data member. + * lib/font.c (font::set_unknown_desc_command_handler): New + function. + (font::load_desc): For unknown commands, call + unknown_desc_command_handler if not null. + * lib/font.h (class font): Declare them. + (FONT_COMMAND_HANDLER): New typedef. + * ps/ps.c (handle_unknown_desc_command): New function. + (main): Set bflag if we had a -b option. Call + font::set_unknown_desc_command_handler. + (broken.h): Don't include. + * ps/Makefile: No need for broken.h. Pass BROKEN_SPOOLER_FLAGS to + submake + * ps/devps/Makefile: Add `broken' command to DESC file using + BROKEN_SPOOLER_FLAGS. + + * macros/tmac.e ([, ]): Add as synonyms for { and }. + + * macros/tmac.e ($p): Only exdent if \$3 > 0. + + * macros/tmac.e (@R, @S): New macros. + Declare @, po, $0, $i, $p, df, so, fu, bt, *, ?a, ?b, ?C, ?e, ?H, + ?I, ?n, ?o, ?R, ?s, ?T, ?W, ?w registers with @R. + Declare $H, $[0-9], .. macros with @S. + Declare |0, |1, |2, |3 strings with @S. + + * macros/tmac.e (@S): Rename to @U. + + * macros/tmac.e (@z): Define @b and bp as empty instead of + deleting them, + + * macros/tmac.e (@m): Deleted. + (@h): Don't call @m. + (@z): Don't set @m trap. + + * macros/tmac.e ($h, $f): Define |z as empty string. + + * macros/tmac.e (@D): Rework to avoid unbalanced .el requests. + (@q): Likewise. + + * macros/tmac.e (@h): Set ?H, ?C , ?s registers to 0 rather than + removing them. + ()f): Likewise for * register. + + * macros/tmac.e (sr): Don't ever scale the arguments. If the third + argument is missing, don't change $R. Call sr with three + arguments when initializing. + +Thu Jul 16 12:17:12 1992 James Clark (jjc at jclark) + + * macros/tmac.e (sr): New macro. + Initialize $r and $R using sr. + + * macros/tmac.e (,): Delete \*(#[. + + * troff/env.c (set_tabs): Read the tab type even if the position + is bad. Allow the position of the first tab stop to be negative. + +Wed Jul 15 13:14:37 1992 James Clark (jjc at jclark) + + * refer/dirnamemax.c: Use pathconf() if <unistd.h> defines + _POSIX_VERSION. + * refer/Makefile: Compile dirnamemax.c using -DHAVE_UNISTD_H + rather than -DPATHCONF_MISSING. + * Makefile: Get rid of PATHCONF_MISSING. + + * refer/map.c: New file. + * refer/index.c: Interface to mmap through map.c. Rename map_size + to map_len. + * refer/Makefile: Handle map.c. + * Makefile: Include -DHAVE_MMAP in OLDCFLAGS rather than CFLAGS. + +Tue Jul 14 14:15:20 1992 James Clark (jjc at jclark) + + * Makefile: RANLIB should be `true' if there is no ranlib. + * lib/Makefile (libgroff.a): Simplify. + * driver/Makefile (libdriver.a): Simplify. + + * Makefile: Change -DWAIT_COREDUMP_0200 to -DWCOREFLAG=0200. + * groff.c (WCOREDUMP): Use WCOREFLAG. Define only if not already + defined. + +Sat Jul 11 09:19:17 1992 James Clark (jjc at jclark) + + * troff/env.c (compare_ranges): Declare as extern "C". + + * troff/input.c (init_registers): Use `struct tm' instead of `tm'. + + * macros/tmac.s, macros/tmac.e: Change .nx /dev/null to .nx. + +Wed Jul 8 11:52:27 1992 James Clark (jjc at jclark) + + * pic/troff.c (troff_output::text): Merge in grops_output::text, + but conditionalize use of \X based on \*(.T. + (grops_output::*): Deleted. + * pic/output.h: Delete declaration of make_grops_output. + * pic/main.c (main): Ignore -p and -x. driver_extension_flag is 1 + by default. -n sets it to 0. + (usage): Corresponding changes. + * groff.c (main): Don't pass -x or -p to pic. + * groff.sh: Likewise. + + * ps/ps.c (ps_printer::do_exec, ps_printer::do_file): Force ndefs + to be non-zero. + + * ps/devps/afmtodit: Change calculation of asc_boundary and + desc_boundary. Make these bounds inclusive. + * ps/devps: Regenerate font files. + +Tue Jul 7 13:14:15 1992 James Clark (jjc at jclark) + + * macros/tmac.latin1: New file. + * macros/tmac.tty-char: Use tmac.latin1. + (tmac.tty-tr): Deleted. + * macros/Makefile: Install tmac.latin1. + * macros/tmac.dvi: Use tmac.latin1. + * macros/troffrc: Translate \[char160] onto no-break space here. + * macros/{tmac.dvi,tmac.ps,tmac.tty,tmac.X75}: Don't do it here. + +Mon Jul 6 11:06:52 1992 James Clark (jjc at jclark) + + * macros/tmac.Xps: Use `do' request. + + * macros/tmac.ps: Use `do' request. + + * macros/tmac.e (@C): Use `do' request. + + * macros/tmac.X, macros/tmac.Xps: Moved from xditview. + * macros/Makefile: Install tmac.X*. + + * tty/tmac.tty, tty/tmac.tty-char: Move to macros. + * tty/Makefile: Don't install tmac.tty*. + * macros/Makefile: Install tmac.tty*. + + * dvi/tmac.dvi: Move to macros. + * dvi/Makefile: Don't install tmac.dvi. + * macros/Makefile: Install tmac.dvi. + + * ps/tmac.ps*: Move to macros. + * ps/Makefile: Don't install tmac.ps*. + * macros/Makefile: Install tmac.ps*. + + * eqn/box.c: Provide draw_lines parameter corresponding to -D + option. + * macros/eqnrc: Set draw_lines parameter based on device. + * groff.c: Don't pass -D flag to eqn. + * groff.sh: Likewise. + * eqn/main.c: Warn about use of -D. + + * troff/input.c (process_startup_file): New function. + (main): Call process_startup_file(). + * macros/troffrc: New file. + * macros/Makefile: Install troffrc. + * groff.c (main): Don't pass extra -m option to troff. For a + pseudo device pass the name of the pseudo device to troff using + -d. + * groff.sh: Likewise. + * groff.c (possible_command::prepend_arg): Deleted. + + * troff/input.c (do_request): New function. + (init_input_requests): Bind "do" to do_request. + + * eqn/main.c (main): Instead of loading eqnchar from device directory, + load eqnrc from macro directory. + * macros/eqnrc: New file. + * macros/Makefile: Install eqnrc. + * ps/devps/eqnchar: Deleted. + * ps/devps/Makefile: Don't install eqnchar. + * dvi/devdvi/eqnchar: Deleted. + * dvi/devdvi/Makefile: Don't install eqnchar. + * groff.c (main): Pass -M to eqn. Don't pass -F to eqn. New + variable optM. + + * lib/device.[ch]: New files. + * lib/font.h (font::set_device_name, font::get_device_name): + Deleted. + * lib/fontfile.c: Use device.h. + * lib/Makefile: Handle device.[ch]. Make paths.h define DEVICE. + * troff/input.c: Delete definition of `device'. + (main): Don't initialize device. + * troff/troff.h: Include device.h rather than declaring device. + * troff/Makefile: No need to handle DEVICE. + * driver/input.c: Include device.h. Don't use + font::{set,get}_device_name. + * groff.c, Makefile: Rename device.h to config.h. + * groff.c: Use library device variable. + * eqn/main.c: Use library device variable. + * eqn/Makefile: No need to handle DEVICE. + + * lib/searchpath.[ch]: New files. + * lib/Makefile: Handle searchpath.[ch]. + * troff/input.c (open_file, init_dirs): Deleted. + (macro_dirs): Deleted. + (open_mac_file, macro_source): Use class search_path. + (add_string, struct string_list): Move definition. + (main): Change -M option to use macro_path. Delete call to + init_dirs(). + * lib/fontfile.c (font::command_line_font_dir, font::open_file): + Rewrite to use class search_path. + * lib/font.h, lib/fontfile.c (font::cl_font_dirs): Deleted. + * lib/Makefile: fontfile.c depends on searchpath.h. + * lib/Makefile: Rename fontpath.h to paths.h. Make paths.h define + MACROPATH. + * lib/macropath.[ch]: New files. + * troff/Makefile: No need to handle MACROPATH. + + * troff/input.c: Delete DUMP code. + * lib/fontfile.c, lib/font.h: Delete + font::forget_command_line_font_dirs. + + * troff/input.c (push_token): New function. + (handle_first_page_transition): Use push_token(). + (process_input_stack): Change handling of a space at the beginning + of the line. + +Sun Jul 5 17:11:09 1992 James Clark (jjc at jclark) + + * troff/input.c (font_dirs): Delete unused variable. + + * eqn/lex.c (do_set): Correct error messages. + +Sat Jul 4 10:20:55 1992 James Clark (jjc at jclark) + + * troff/input.c (do_define_string): Allow the string name to be + followed immediately by a tab. + (define_character): Likewise. + +Thu Jul 2 10:59:15 1992 James Clark (jjc at jclark) + + * ps/ps.c (ps_printer::draw): When drawing an arc, don't allow k to + be negative. + + * troff/input.c (input_iterator::is_file): New virtual function. + (file_iterator::is_file): New function. + (input_stack::end_file): New function. + (input_stack::next_file): Handle the situation where there is no + file on the input stack correctly. Avoid making two passes over + the input stack. + (next_file): Make the filename optional; in this case call + input_stack::end_file(). + +Wed Jul 1 10:17:25 1992 James Clark (jjc at jclark) + + * dvi/tmac.dvi: Change the definitions of \(ul and _ so that they + produce a real _ character when the current font is CW and _ + otherwise. + + * lib/errarg.c (errarg::errarg(const char *)): Invert conditional + expression to work around gcc 2.2 bug. + +Wed Jun 24 08:12:24 1992 James Clark (jjc at jclark) + + * eqn/main.c (main): Don't give an error if we can't find eqnchar. + + * troff/env.c (environment::add_padding): New function. + (environment::add_char): Use add_padding(). + (environment::space): Likewise. + (environment::wrap_up_field): Add some padding if there is none + and there's no current tab. + * troff/env.h: Declare environment::add_padding. + +Mon Jun 22 08:37:45 1992 James Clark (jjc@jclark) + + * pic/pic.y: undef fmod and rand before declaring them. + +Sun Jun 14 11:40:18 1992 James Clark (jjc@jclark) + + * troff/input.c (main): If the DESC file specifies a font name of + 0, then leave the corresponding font position empty. + + * nroff.sh: New file. + * Makefile (install.nobin): Install nroff.sh. + + * tty/devlatin1/R.proto: Add ao as synonym for de. + * tty/tmac.tty-char: Define ao as o. + + * tty/dev{ascii,latin1}/R.proto: Add aq. + * tty/tmac.tty-char: Delete definition of aq. + +Mon Jun 8 11:43:20 1992 James Clark (jjc@jclark) + + * troff/input.c (init_charset_table): Don't translate 0240. + * ps/tmac.ps: Translate char160 to space. + * dvi/tmac.dvi: Likewise. + * tty/tmac.tty: Likewise. + +Sun Jun 7 10:52:35 1992 James Clark (jjc@jclark) + + * dvi/tmac.dvi: Add support for all Latin-1 characters. + + * macros/tmac.s: Delete definitions of \(rg, \(ah, \(ad, \(a-, + \(ao, \(ac, \(ho, \(-D, \(Sd, \(TP, \(Tp, \(ss, \(AE, \(ae, \(OE, + \(oe, \(r?, \(r!. + + * tty/tmac.tty-char: Add \(ah. + + * dvi/tmac.dvi: Add definitions of Tp, TP, Sd, -D, ho. + No need to define \(FM and \(!/. Conditionalize all character + definitions. + + * ps/devps/lgreekmap: Add +h, +f, +p. + + * ps/tmac.psnew: New file. + * ps/Makefile: Install tmac.psnew. + + * troff/input.c (charinfo_to_node_list): Don't ever interpret + character definitions in compatible mode. + + * troff/input.c (remove_character): New function. + (init_input_requests): Bind remove_character to "rchar". + + * ps/tmac.psold: New file. + * ps/Makefile: Install tmac.psold. + * ps/tmac.ps: Load tmac.psold. Move definitions of ISO Latin-1 + characters into tmac.psold. Make these definitions unconditional. + + * tty/tmac.tty-char: Define \n(_C only if it is not already defined. + + * ps/tmac.ps: Don't define \('c and \('C. + + * ps/devps/textmap: Move Greek characters to... + * ps/devps/symbolchars: + +Sat Jun 6 16:41:17 1992 James Clark (jjc@jclark) + + * ps/devps/text.enc: Add quotesingle. + * ps/devps/textmap: Add +h, +f, +p, Fn, Bq, bq, aq, lz. + * tty/tmac.tty-char: Likewise. + * dvi/devdvi/texmi.map: Add +h, +f, +p. + * dvi/devdvi/texi.map: Add Fn. + * dvi/devdvi/msam.map: Add lz. + * dvi/tmac.dvi: Handle Bq, bq, aq. + + * pic/lex.c (get_token): Recognize 'th. + * pic/map.y: Allow `expr'th in contexts where ORDINAL was allowed. + +Fri Jun 5 11:20:46 1992 James Clark (jjc@jclark) + + * ps/devps/textmap: Move di, mu, +- to... + * ps/devps/symbolchars: + + * macros/tmac.s (@XS): Don't call par@reset or fi. + (XA): Call LP. Turn off adjustment. Reduce line length. + + * macros/tmac.s: Initially alias XS to LP. + (XS): Rename to @XS. + (cov*ab-init): Alias XS to @XS. + +Thu Jun 4 09:12:05 1992 James Clark (jjc@jclark) + + * troff/token.h: Delete TOKEN_CHAR_HEIGHT, TOKEN_CHAR_SLANT, + TOKEN_FONT_NAME, TOKEN_FONT_POSITION, TOKEN_SIZE tokens. + (token::is_size, token::changes_env): Deleted. + * troff/number.c (parse_term): No need to process \s explicitly. + Call tok.next() only after scale indicator has been processed. + * troff/input.c (do_overstrike, do_bracket): No need to process \s, + \f etc explicitly. + (token::next): Handle \s, \f, \S, \H immediately rather than + returning them as tokens. + (token::operator==, token::description, token::add_to_node_list, + token::process): Remove handling of deleted tokens. + + * troff/env.c (environment::add_char): When adding padding + indicator character, call start_line() if necessary. + +Wed Jun 3 09:55:50 1992 James Clark (jjc@jclark) + + * ps/devps/afmtodit: Don't output 0 kerns. + + * ps/devps/afmtodit: Remove directory from name of encoding in + font description file. + + * ps/devps/afmtodit: Improve error messages. + + * ps/devps/afmtodit: Allow DESC file to be specified with -d. + + * ps/devps/Makefile: Incorporate FontMakefile. Rework. + * ps/devps/FontMakefile: Deleted. + * ps/devps/afmname: New file. + + * ps/devps/symbol.sed: New file. + * ps/devps/symbol.diff: Deleted. + * ps/devps/FontMakefile: Generate symbol.afm using symbol.sed. + Generate zapfdr.afm from zapfd.afm. + + * tty/tmac.tty (tty-char): Prefix definition with ". + + * macros/tmac.an (TP): Don't start a diversion if one has already + been started. + + * tty/tmac.tty-char: Add Latin-1 characters. + + * tty/tmac.tty-char: Incorporate suggestions from Paul Eggert. + +Tue Jun 2 00:54:34 1992 James Clark (jjc@jclark) + + * tbl/table.c (table::allocate): Delete old_vline, old_entry. + Move declaration of struct horizontal_span. + + * tbl/table.c (table::table): Initialize span_list. + (table::~table): Delete span_list. + + * lib/ptable.h (PTABLE(T)::~PTABLE(T)): Delete v. + + * ps/devps/Makefile: Avoid dependency on GNU make. + + * ps/tmac.ps: Check that character does not already exist before + defining it. + + * tty/tmac.tty: Add definitions of \(ff, \(!=, \(==, \(~=, \(sq, + \(OE, \(oe, \(AE, \(ae, \(lh, \(rh. Delete definitions of \(en, + \(ru, \(ul, \(br, \(bv, \(sl which are in the font description + files. + + * tty/tmac.tty-char: New file. + * tty/Makefile: Install tmac.tty-char. + * tty/tmac.tty: Move definitions of \(ua, \(da, \(uA, \(dA into + tmac.tty-char. + + * tty/tmac.tty: Fix definition of \(34. + + * tty/dev{ascii,latin1}/R.proto: Add ha and ti. Map + bracket-drawing characters onto |. Add *o. + + * troff/env.c (environment::wrap_up_tab): Increment field_spaces + only if current_field. + + * troff/dictionary.c (dictionary::lookup): Free old_table after + rehashing. + +Mon Jun 1 10:15:22 1992 James Clark (jjc@jclark) + + * tty/dev{ascii,latin1}/R.proto: Add uppercase Greek characters + whose glyphs are identical to glyphs of some Roman character. + + * tty/devlatin1/R.proto (bu): Deleted. + * tty/devascii/R.proto (bu): Deleted. + * tty/tmac.tty: Add definition of \(bu. + + * eqn/main.c (do_file): Pass FILE as argument. + (main): Automatically load eqnchar. New options -F and -n. + Pass do_file an opened FILE. + * groff.c: Don't pass eqnchar to eqn. Pass -F options onto eqn. + No need to include font.h. + * groff.sh: Likewise. Don't need to use - for standard input. + Prefix files with -- if first file starts with -. + + * macros/tmac.e: Conditionalize use of \$* on \n(.g. + + * troff/env.c (environment::possibly_break_line): Don't set line + to 0 across call to output_line(). Don't call output_line() until + after discarding nodes after break. + +Sun May 31 10:45:29 1992 James Clark (jjc@jclark) + + * request.h (macro::empty): Declare it. + * input.c (macro::empty): New method. + (interpolate_macro): Don't give a WARN_SPACE if the two-character + macro is empty. + +Sat May 30 10:27:15 1992 James Clark (jjc@jclark) + + * troff/env.c (environment::start_field): Decrement space_total + when a space is frozen. + +Fri May 22 14:34:38 1992 James Clark (jjc@jclark) + + * macros/tmac.an (R): Delete macro. + + * troff/input.c (get_copy, token::next): Support \# (like \" but + newline is ignored). + + * troff/input.c (token::next): Fix error message in 'Y' case. + +Thu May 21 09:26:24 1992 James Clark (jjc@jclark) + + * eqn/delim.c (define_extensible_string): Recognize any prefix of + a delimiter name. + +Fri May 15 10:20:41 1992 James Clark (jjc at jclark) + + * c++test.c: Include <osfcn.h>. + + * lib/strtol.c, lib/getcwd.c, ps/psbb.c: Declare errno in case + <errno.h> doesn't. + +Fri May 8 09:37:19 1992 James Clark (jjc at jclark) + + * tbl/table.c (table::divide_span): Don't count column separation + if expand was specified. + + * tbl/main.c (process_format): Don't ignore width specs in + continued format. Give warning for changing equal widths or + column separation in continued format. + (process_data): Set column separation, minimum width, equal + columns at end of table. + +Thu May 7 08:50:40 1992 James Clark (jjc at jclark) + + * troff/node.c (kern_pair_node::add_discretionary_hyphen, + node::add_discretionary_hyphen): Use soft_hyphen_char. + (set_soft_hyphen_char): New function. + (init_node_requests): Bind to shc. Initialize soft_hyphen_char. + + * Makefile (c++tested): Give more helpful message if test fails. + +Tue May 5 10:58:39 1992 James Clark (jjc at jclark) + + * troff/input.c (init_charset_table): Translate 0240 to + an unbreakable space. + + * troff/token.h (token::hyphen_indicator): New function. + * troff/charinfo.h (TRANSLATE_HYPHEN_INDICATOR): New special + translation. + * troff/input.c (translate): Allow translation to \%. + * troff/node.c (node::add_char): Handle + TRANSLATE_HYPHEN_INDICATOR. + (make_node): Don't allow TRANSLATE_HYPHEN_INDICATOR here. + + * troff/input.c (init_charset_table): Don't set BREAK_AFTER flag + for \(hy. + + * tty/devlatin1/R.proto: \(hy and - should print as 055. + +Tue Apr 21 09:24:42 1992 James Clark (jjc at jclark) + + * groff.c (run_commands): If the last command gets a SIGPIPE send + a SIGPIPE to all children than haven't yet terminated. When + command terminates, set pid field to -1. + +Fri Apr 17 11:20:48 1992 James Clark (jjc at jclark) + + * groff.c (main): Pass an appropriate -filename option to gxditview. + +Thu Apr 16 15:11:40 1992 James Clark (jjc at jclark) + + * Makefile.bd (install): Remove existing program before copying. + + * Makefile, */Makefile, Makefile.bd, groff.sh, groff.c: Allow + programs which have Unix counterparts to be installed with + user-specified prefix. + + * troff/input.c (exit_troff): Don't check if exit_started. + (exit_request): Don't call exit_troff if exit_started. + + * Makefile.bd (install.mm): Rename to install.dwbmm. + +Tue Apr 14 10:05:10 1992 James Clark (jjc at jclark) + + * driver/input.c (do_file): Add missing break for '#' case. + +Mon Apr 13 10:11:02 1992 James Clark (jjc at jclark) + + * troff/input.c (input_stack::clear): Clear past any boundaries and + then add the boundaries back. + + * troff/input.c (exit_troff): Return immediately if already + exiting. + + * macros/tmac.s (pg@end-text): New macro. Use pg@end-text for the + end macro. + (pg*end-page): If the text has ended and there are no more + footnotes or keeps, exit. + + * macros/doc-ditroff (Lq, Rq): Define as \(lq and \(rq. + + * troff/input.c (init_charset_table): Make \(rq transparent by + default. + + * macros/tmac.an: Define lq and rq strings. + + * macros/tmac.s (Q, U): Define as \(lq and \(rq. + +Sun Apr 12 12:54:37 1992 James Clark (jjc at jclark) + + * troff/env.c (environment::final_break): New function. + (environment::newline): Set prev_line_interrupted to 2 if + exit_started. + * troff/env.h: Declare environment::final_break. + * troff/input.c (exit_troff): Call environment::final_break() + instead of environment::do_break(). + + * macros/Makefile: Install man.local if $(MACRODIR)/man.local + doesn't already exist. + * macros/man.local: New file. + * macros/tmac.an: Load man.local. + * macros/man.ultrix: New file. + +Sat Apr 11 17:32:04 1992 James Clark (jjc at jclark) + + * troff/input.c (exit_groff): Rename to... + (exit_troff): New function. + + * troff/div.c (exit_started, done_end_macro, + seen_last_page_ejector): New global variables. + (began_page_in_end_macro): New static variable. + (exit_flag): Deleted. + (top_level_diversion::top_level_diversion): Initialize + last_page_count. + (top_level_diversion): More elaborate test for whether + cleanup_and_exit() should be called. + Set began_page_in_end_macro if the end macro isn't yet finished. + * troff/div.h (top_level_diversion::last_page_count): New data + member. + (top_level_diversion::set_last_page): New function. + (exit_started, done_end_macro, seen_last_page_ejector): Declare. + * troff/env.c (do_break): Zero prev_line_interrupted. + * troff/input.c (exit_flag): Delete declaration. + (LAST_PAGE_EJECTOR): New magic cookie. + (token::next): Handle LAST_PAGE_EJECTOR. + (exit_groff): Set exit_started and done_end_macro instead of + exit_flag. Call top_level_diversion::set_last_page. Push a + LAST_PAGE_EJECTOR instead of calling push_page_ejector(). Do + another ejection after setting seen_last_page_ejector. + +Thu Apr 9 04:37:11 1992 James Clark (jjc at jclark) + + * etc/grog.sh, etc/grog.sh: Recognize -me sh macro. + + * macros/tmac.e (TH): Make sure there's room for the initial + header. + + * macros/tmac.s (par@init): Make PD and DD at least \n(.V. + Set FVS in points rather than units. + +Mon Apr 6 11:21:32 1992 James Clark (jjc at jclark) + + * troff/div.c (top_level_diversion::add_trap): Don't consider the + position of empty slots. + +Fri Apr 3 10:46:45 1992 James Clark (jjc at jclark) + + * ps/devps/S: Fix height and depth of parenrightex. + * ps/devps/symbol.diff: Regenerate. + +Sat Mar 28 21:17:52 1992 James Clark (jjc at jclark) + + * tmac.e (u): Do underlining as in -mgs. + +Fri Mar 27 09:23:44 1992 James Clark (jjc at jclark) + + * tty/tty.c (tty_printer::end_page): If overstriking is + suppressed, still turn overstruck horizontal and vertical lines + into +. + + * lib/new.c: Back out Feb 24 change; no longer needed with gcc + 2.1. + + * refer/label.y (format_expr::evaluate): Avoid use of %0*d. + +Wed Mar 18 09:29:10 1992 James Clark (jjc at jclark) + + * Version 1.05 released. + +Tue Mar 17 16:50:45 1992 James Clark (jjc at jclark) + + * tty/tty.c: Instead of keeping an array of glyphs and then + sorting it, keep a ordered linked list of glyphs for each line. + + * driver/driver.h: Include stddef.h. + + * tty/tty.c (compare_glyph): + * refer/refer.c (rcompare): + * troff/env.c (compare_ranges): Arguments of qsort comparison + function should be const void *. + + * troff/number.c (parse_term): + * dvi/dvi.c (draw_dvi_printer::draw): Avoid initialization in + switch statement. + + * refer/label.y (consider_authors): Don't access variables + constructed under a condition outside that condition: put braces + round for statement containing declaration; redeclare use of same + variable later. + + * pic/pic.y (text_expr): Delete production that allows + parenthesised text_expr. + (expr): Allow a conditional_expr to appear in parentheses. + (conditional_expr): Rename to any_expr. + + * mm: Install new version 1.01 from jh. + + * lib/font.c (font::get_width): Cache scaled widths. + (font::font): Initialize widths_cache. + (font::~font): Destroy widths_cache. + * lib/font.h: Add font::widths_cache. Declare font_widths_cache. + +Mon Mar 16 10:16:10 1992 James Clark (jjc at jclark) + + * c++test.c, c++test.ref: New files. + * Makefile: Check that the C++ compiler works. + + * ps/tmac.pspic (PSPIC): Do a break. + + * ps/tmac.ps: Move definition of PSPIC into... + * ps/tmac.pspic: New file. + (PSPIC): Draw box around picture, but make it invisible to grops. + * ps/tmac.ps: Load tmac.pspic. + * ps/Makefile: Install tmac.pspic. + +Sun Mar 15 14:18:08 1992 James Clark (jjc at jclark) + + * lib/font.c (scale_round): If n is negative, + subtract .5 before truncating floating point result. + + * lib/fontfile.c: Include <errno.h>. + +Tue Mar 10 14:17:03 1992 James Clark (jjc at jclark) + + * driver/input.c (get_char): Inline. Don't update current_lineno. + Change callers to up date current_lineno if necessary. + Use get_char() instead of getc(current_file). + +Sun Mar 8 18:05:28 1992 James Clark (jjc at jclark) + + * ps/tmac.ps: Fix up spacing of \(mo and \(nm. + +Fri Mar 6 19:38:58 1992 James Clark (jjc at jclark) + + * tty/tty.c (tmac.tty): Define \(rg as (R). + +Tue Mar 3 10:11:25 1992 James Clark (jjc at jclark) + + * lib/lib.h: New define a_delete. + * Use a_delete instead of delete when deleting an array of objects + without destructors. + + * lib/lib.h: Rename adelete to ad_delete. + * Change uses of adelete. + +Mon Mar 2 12:41:05 1992 James Clark (jjc at jclark) + + * eqn/eqn.y: Include lib.h. + + * troff/node.c (grow_font_table): Delete old_font_table. + + * mm: Install new version from jh. + +Fri Feb 28 10:42:23 1992 James Clark (jjc at jclark) + + * tbl/table.h (format_type): Make global instead of local to class + entry_format. Prefix enumerators with FORMAT_. + * tbl/table.c, tbl/main.c: Corresponding changes. + * refer/token.h (token_type): Make global. Prefix enumerators + with TOKEN_. + * refer/token.[ch]: Corresponding changes. + * Makefile: Get rid of -DNO_NESTED_TYPES configuration option. + + * troff/div.c (node::set_vertical_size): Don't name argument. + +Thu Feb 27 10:29:19 1992 James Clark (jjc at jclark) + + * Makefile: New configuration option ARRAY_DELETE_NEEDS_SIZE. + * lib/lib.h: Define adelete accordingly. + * pic/object.c (graphic_object::graphic_object): + * tbl/main.c (format::~format): + * tbl/table.c (table::~table): + * refer/ref.c (reference::~reference, reference::merge, + reference::insert_field, reference::delete_field): Use adelete. + + * Makefile: Change NESTED_TYPES to NO_NESTED_TYPES. + * refer/token.h: + * tbl/table.h: Corresponding changes. + + * common.c (common_output::dashed_arc, common_output::dotted_arc): + Ensure total_angle is positive. + +Wed Feb 26 08:49:26 1992 James Clark (jjc at jclark) + + * refer/ref.c (reference::merge, reference::insert_field, + reference::delete_field): Avoid delete[0]. + + * refer/token.c (init_special_chars): Move calls to cmupper + outside calls to init_two_char_letter to work around bug in gcc + 2.0. + +Mon Feb 24 14:20:00 1992 James Clark (jjc at jclark) + + * lib/new.c (operator new): Use __builtin_new for g++. + + * pic/object.c (graphic_object::~graphic_object): Don't use + delete [] on 0. + + * pic/object.c (output::compute_scale): Initialize max_width and + max_height. + +Sat Feb 15 09:55:20 1992 James Clark (jjc at jclark) + + * troff/input.c (write_request): Call fflush. + + * troff/node.h (class composite_node): Move declaration to node.c + * troff/input.c (charinfo_to_node): Rename to ... + (charinfo_to_node_list): Return node list rather than composite + node. + * troff/node.c (make_composite_node): New function. + (make_node, add_char): Call make_composite_node instead of + charinfo_to_node. + (class composite_node): Add a tfont * member. Delete font_size + member. + (composite_node::composite_node, composite_node::copy, + composite_node::size): Corresponding changes. + (composite_node::tprint): Provide constant spacing, emboldening + and track kerning as specified in tfont. + (composite_node::width): Change width calculation accordingly. + * troff/env.h (environment::composite): New member. + (environment::is_composite, environment::set_composite): New + functions. + * troff/env.c (environment::environment): Initialize composite. + * troff/input.c (charinfo_to_node): Call + environment::set_composite. + * troff/node.c (make_composite_node, make_glyph_node): Use the + plain version of the tfont if the environment is composite. + + * troff/node.c (font_info::get_space_width): Additional argument + giving space_size. Handle constant space correctly. Scale by + space_size unless constant spaced. + (env_sentence_space_width): New function. + * troff/node.h: Declare it. + * troff/env.h (environment::get_space_size, + environment::get_sentence_space_size, + environment::get_narrow_space_width, + environment::get_half_narrow_space_width): Make inline. + (environment::get_space_width): Make inline. Just call + env_space_width. + * troff/env.c: Delete definitions for functions made inline. + (environment::space_newline, environment::space): Use + env_sentence_space_width(). Don't scale by space_size. + * troff/node.h: Move declarations of env*space_width() functions + into env.h. + +Sat Feb 8 09:30:22 1992 James Clark (jjc at jclark) + + * macros/tmac.s (PS): Don't try to set negative indent. + +Thu Feb 6 09:00:35 1992 James Clark (jjc at jclark) + + * pic/pic.y: Fix min function. + +Tue Jan 28 07:52:29 1992 James Clark (jjc at jclark) + + * man/mdate.sh: Clear LANGUAGE. + +Sun Jan 19 13:02:41 1992 James Clark (jjc at jclark) + + * pic/pic.y, pic/lex.c: Rename COMMAND token to COMMAND_LINE. + * pic/lex.c: New COMMAND keyword. + * pic/pic.y (print_args, print_arg): New rules. + (placeless_element): Use print_args for PRINT. + New COMMAND element. + +Tue Jan 7 13:14:31 1992 James Clark (jjc at jclark) + + * troff/input.c (terminal): Handle missing argument correctly. + + * pic/pic.y (text_expr): New rule. + + * pic/pic.y: Implement := operator. + +Sun Jan 5 10:23:02 1992 James Clark (jjc at jclark) + + * etc/grog.pl, etc/grog.sh: Distinguish old and new versions of + mdoc. + +Sat Jan 4 14:42:26 1992 James Clark (jjc at jclark) + + * ps/devps/dingbatsrmap: Include this in the distribution. + + * macros/tmac.doc: Replace with new version from 2nd Networking + Release. Fix loading of doc-* files. + * macros/{doc-common,doc-ditroff,doc-nroff,doc-syms}: New files. + * macros/tmac.doc.old: New file. Apply fixes that had been + applied to old tmac.doc. + * macros/tmac.andoc: Check that we're running under groff. + * macros/Makefile: Rework. + +Fri Jan 3 13:27:51 1992 James Clark (jjc at jclark) + + * tbl/table.h (format_type): + * refer/token.h (token_type): If NESTED_TYPES is defined, use + typedef to make these types visible at file scope. + * Makefile: Add NESTED_TYPES configuration option. + + * troff/div.c (mark): At the top level use the value of + nl_reg_contents rather than the current vertical position. + +Thu Jan 2 10:34:51 1992 James Clark (jjc at jclark) + + * tty/tty.c: Implement \D for horizontal or vertical lines. + (tty_printer::set_char): Use vec_used+2 as serial number. + Don't allow size of vector to exceed USHRT_MAX-2. + Split off part into... + (tty_printer::add_char): New function. + (tty_printer::draw): New function. + (compare_glyph): Handle equal serial numbers. + (tty_printer::end_page): Handle overstruck characters from \D. + (main, usage): Implement -d option. + +Mon Dec 23 10:37:51 1991 James Clark (jjc at jclark) + + * tbl/main.c (process_format): + * eqn/text.c (split_text): + * troff/input.c (token::next): Use inner block for declarations + with initializers in switch statement. + +Mon Dec 16 20:52:03 1991 James Clark (jjc at jclark) + + * pic/common.c (common_output::dash_line): Cope with zero-length + lines. + +Sun Nov 17 12:04:08 1991 James Clark (jjc at jclark) + + * Version 1.04 released. + +Wed Nov 13 05:27:21 1991 James Clark (jjc at jclark) + + * macros/tmac.an (TH): Define a macro an-init to define variables + based on command line arguments. + (an-header): Call it. + +Sun Nov 3 12:07:34 1991 James Clark (jjc at jclark) + + * Makefile (install.mm): Rename to install.dwbmm. + + * Makefile: Integrate mm. + * mm: New directory. + +Wed Oct 30 10:11:34 1991 James Clark (jjc at jclark) + + * refer/dirnamemax.c: If PATHCONF_MISSING is defined, include + <sys/types.h>. + + * pic/troff.c (troff_output::simple_spline, + troff_output::simple_polygon): Rename variable `v' to `d' to avoid + shadowing parameter. + + * lib/tmpfile.c (xtmpfile): Declare dir as const char *. + + * lib/ptable.h: Add explicit casts when converting from unsigned + long to unsigned. + + * dvi/devdvi/{SA,SB,msam.map,msbm.map}: New files. + * dvi/devdvi/Makefile: Install SA, SB. + + * refer/indxbib.c: Add declaration of mktemp. + + * refer/lookbib.c: Add declaration of isatty. + +Fri Oct 25 09:00:17 1991 James Clark (jjc at jclark) + + * pic/lex.c (interpolate_macro_with_args): While collecting + arguments, keep track of whether we're in a string. + +Wed Oct 23 08:42:48 1991 James Clark (jjc at jclark) + + * ps/tmac.ps (PSPIC): Do the .sp after the \X, and move the \X + down with \v, so as to avoid problems with top of page trap + setting no space mode. + +Tue Oct 22 17:38:49 1991 James Clark (jjc at jclark) + + * eqn/lex.c (get_delimited_text): Allow tab before macro body. + +Tue Oct 15 17:24:53 1991 James Clark (jjc at jclark) + + * ps/psrm.c (ps_get_line): Fix bug when lines longer than 255. + Improve error message. + +Fri Oct 11 11:09:38 1991 James Clark (jjc at jclark) + + * ps/psrm.c (print_ps_string): Don't pass negative numbers to + printf("%03o"); + +Wed Oct 9 17:50:14 1991 James Clark (jjc at jclark) + + * groff.c (possible_command::execp): Always use _exit() after a + failed exec. + + * Makefile: Add HAVE_UNION_WAIT, HAVE_PID_T, WAIT_COREDUMP_0200, + NO_SYS_WAIT_H configuration options. + * groff.c: Use these options. Use POSIX-style macros to extract + fields from the status returned by wait(). + +Fri Oct 4 12:12:27 1991 James Clark (jjc at jclark) + + * tbl/table.c (table::compute_separation_factor): Allow the + separation factor to drop to 0. + +Tue Oct 1 18:12:38 1991 James Clark (jjc at jclark) + + * refer/search.c: Include <errno.h>. + +Sun Sep 29 08:40:57 1991 James Clark (jjc at jclark) + + * pic/pic.y (YYDEBUG): Don't define for Borland C++. + + * lib/lib.h: #ifdef out declarations of itoa and iftoa for Borland + C++. + + * pic/lex.c (input_stack::bol): Move definition out of class body. + + * pic/main.c: On MS-DOS munge argv[0]. + + * lib/ptable.h: Define name2 as _Paste2 for Borland C++. + + * lib/ptable.c (hash_string): Use unsigned long rather than + unsigned. + (next_ptable_size): Use unsigned rather than int. Give an error + message if we've hit the largest table size. + * lib/ptable.c: Corresponding changes. Also use unsigneds for the + table size. + + * pic/object.h (object_spec): Make flags unsigned long. Declare + flags as const unisgned long rather than as enums. + + * pic/output.c: Deleted. + + * pic/troff.c (troff_output::simple_ellipse): Remove spurious %. + + * tbl/table.c (simple_entry::note_double_vrule_on_{left,right}): + Add additional argument. + (line_entry::note_double_vrule_on_{left,right}): Set value of + douvle_vrule_on_{right,left} flag according to argument. + (simple_line_entry::simple_print, + simple_line_entry::double_line_print): If adjacent to double vrule + on a corner extend rather than shorten the rule by half the double + vrule sep. + + * troff/number.c (parse_term): In checking for overflow, handle the + case where the current horizontal position is negative. + +Thu Sep 12 08:26:09 1991 James Clark (jjc at jclark) + + * pic/object.c (draw_arrow): Check for object having zero length. + +Wed Sep 11 10:32:38 1991 James Clark (jjc at jclark) + + * eqn/main.c (do_file): Split off inline equation handling into... + (inline_equation): New function. Search for starting delimiter + using... + (delim_search): New function. Don't recognize a delimiter that + occurs in the name of an escape sequence, number register, string + etc. + +Tue Sep 10 04:01:11 1991 James Clark (jjc at jclark) + + * eqn/delim.c (delim_box::compute_metrics): Don't call + define_extensible_string if left is 0. + (delim_box::output): Don't print the left delimiter if left is 0. + (delim_box::debug_print): Check for left == 0 before calling printf. + +Fri Aug 23 13:02:30 1991 James Clark (jjc at jclark) + + * troff/Makefile (majorminor.c): Include only digits in + minor_version. + +Thu Aug 22 09:35:37 1991 James Clark (jjc at jclark) + + * refer/dirnamemax.c: new file. + * refer/genlimits.c: Deleted. + * refer/indxbib.c (main): Use dir_name_max() instead of NAME_MAX. + Don't check path length. + * refer/Makefile: Add dir_name_max.o; delete genlimits. + * Makefile: Add PATHCONF_MISSING option. + + * refer/indxbib.c (get_cwd): New function. + (main): Use get_cwd(). + * lib/getcwd.c: New file. + * Makefile: Delete -DHAVE_GETWD. Include GETCWD variable. Pass + GETCWD in SUBFLAGS. + * lib/Makefile: Compile getcwd.o. + + * ps/tmac.psatk (psatk-defs): Define showpage after pushing + userdict. + + * refer/indxbib.c (main): Check success of mktemp. + + * lib/tmpfile.c: New file. + * lib/Makefile: Add tmpfile.c. + * lib/lib.h: Declare xtmpfile(); include <stdio.h>. + * ps/ps.h: Delete declaration of mktemp(). + * ps/ps.c (ps_printer::ps_printer): Use xtmpfile(). + * refer/refer.c (divert_to_temporary_file): Use xtmpfile(). + * driver/driver.h: No need now to include errno.h. + + * everywhere: Set errno to 0 before calling fopen(). + + * eqn/eqn.h, etc/soelim.c, driver/driver.h, etc/addftinfo.c, + dvi/tfmtodit.c, groff.c, refer/index.c, refer/linear.c, + refer/lookbib.c, refer/refer.h, ps/psbb.c: Include <errno.h>. + +Mon Aug 19 10:52:18 1991 James Clark (jjc at jclark) + + * troff/env.h (translate_space_to_dummy): Declare it. + * troff/env.c (environment::space_newline, environment::space): + If translate_space_to_dummy is set then make the width of spaces 0. + * troff/input.c (translate): If the second character of a + translation is a space, translate to unbreakable space. If the + first character is a space, set or clear translate_space_to_dummy + according to whether the second character is \&. Weird! + +Tue Jul 30 10:03:56 1991 James Clark (jjc at jclark) + + * groff.c (run_commands): Don't use non-zero exit code because a + command gets SIGPIPE. + + * groff.c, groff.sh: Use -mXps with -TXps. + + * ps/ps.c (ps_printer::special): Move call to flush_sbuf() into... + (ps_printer::do_exec, ps_printer::do_file, ps_printer::do_def, + ps_printer::do_mdef, ps_printer::do_import): Call flush_sbuf(). + (ps_printer::special): New specials invis and endinvis. + (ps_printer::do_invis, ps_printer::do_endinvis): New functions. + (ps_printer::set_char, ps_printer::draw): Return if invis_count>0. + (ps_printer::end_page): Check that invis_count == 0. + (ps_printer::invis_count): New member. + (ps_printer::ps_printer): Initialize invis_count to 0. + + * troff/env.c (environment::hyphenate_line): Hyphenation + indicator at beginning of word inhibits splitting after -, \(em + etc. + + * pic/pic.y (element): Allow another element to follow } without + any intervening separator. + +Mon Jul 22 12:27:37 1991 James Clark (jjc at jclark) + + * pic/lex.c (get_delimited): Allow tabs before delimiter. + +Wed Jul 17 10:59:08 1991 James Clark (jjc at jclark) + + * groff.c: Get rid of HAVE_UNION_WAIT stuff. Instead suppress + declaration of wait() in header files. + * Makefile: Get rid of -DHAVE_UNION_WAIT. + + * tbl/table.c (alphabetic_text_entry::add_tab): New function. + + * lib/lib.h: Declare return type of strerror as char *. + + * man/Makefile: Add g flag to sed substitutions. + * Makefile (shgroff, bindist): Likewise. + +Sun Jul 14 11:57:02 1991 James Clark (jjc at jclark) + + * ps/ps.c (ps_printer::do_import): Move push of userdict into... + * ps/devps/prologue (PBEGIN): Define showpage after pushing + userdict. + +Sat Jul 13 20:53:04 1991 James Clark (jjc at jclark) + + * ps/devps/prologue (PBEGIN): Zap any definition of showpage in + userdict. + +Fri Jul 12 07:10:09 1991 James Clark (jjc at jclark) + + * man/mdate.sh: Handle the fact that BSD ls -l does not print the + group. + +Sun Jul 7 08:00:23 1991 James Clark (jjc at jclark) + + * troff/input.c (define_number_reg): If currently undefined, + don't define it if the argument is an invalid expression. + + * Makefile: Ignore return value of `if' commands without `else' + parts. + + * Makefile: Split up CPPDEFINES into a series of separate + configuration options. + + * troff/input.c (init_registers): Use time_t instead of long + unless LONG_FOR_TIME_T is defined. Use returned result rather + than passing pointer. + * Makefile: Document LONG_FOR_TIME_T as a CPPDEFINE. + + * lib/Makefile (fontpath.h): Use gendef. + +Thu Jul 4 09:48:05 1991 James Clark (jjc at jclark) + + * troff/input.c (input_iterator::shift): Delete argument name. + * troff/node.c (suppress_output_file::really_begin_page, + suppress_output_file::really_transparent_char, node::ascii_print, + node::tprint): Delete names of unused arguments. + +Wed Jul 3 17:34:57 1991 James Clark (jjc at jclark) + + * refer/label.y (string): Pass $4 to command_error. + +Tue Jul 2 15:06:01 1991 James Clark (jjc at jclark) + + * Version 1.03 released. + +Sat Jun 29 08:14:01 1991 James Clark (jjc at jclark) + + * Makefile: Pass definition of SHELL in SUBFLAGS. + + * gendef: New file. + * Makefile, eqn/Makefile, refer/Makefile, troff/Makefile, + ps/Makefile: Use gendef to construct header files that are + constructed from the Makefile. + + * macros/Makefile: make all should build stripped version of tmac.e. + + * refer/Makefile (clean): Remove y.output. + +Fri Jun 28 09:44:36 1991 James Clark (jjc at jclark) + + * ps/pfbtops.c (main): Add -v option which prints out a version + number. + * ps/Makefile (pfbtops): Link with libgroff.a. + +Fri Jun 21 07:43:23 1991 James Clark (jjc at jclark) + + * refer/search.h (linear_searcher::get_nkeys): Delete declaration. + * refer/linear.c (linear_searcher::get_nkeys): Delete definition. + + * refer/lkbib.c (main): Always terminate reference with blank + line. + * refer/lookbib.c (main): Likewise. + + * refer/linear.c (file_buffer::load): Check that the file is not a + binary file. + + * refer/Makefile (genlimits): Possibly add -DHAVE_SYS_DIR_H. + (genlimits.c): Include <sys/dir.h> if HAVE_SYS_DIR_H is defined. + Delete second inclusion of <sys/param.h>. + +Tue Jun 18 01:32:26 1991 James Clark (jjc at jclark) + + * troff/token.h (token::special): Deleted. + + * tbl/main.c (process_format): Rework so that opt->tab_char is + recognized only when appropriate. + + * ps/Makefile (clean): Remove pfbtops. + +Sun Jun 16 09:37:19 1991 James Clark (jjc at jclark) + + * lib/font.c (text_file::next): Don't return if we have got a + blank line. + +Fri Jun 14 09:52:26 1991 James Clark (jjc at jclark) + + * refer/refer.c (store_reference): Get hash code from old_table[i] + when rehashing the table. + +Thu Jun 13 01:26:43 1991 James Clark (jjc at jclark) + + * eqn/box.c (box::top_level): Save size and prev size using \R and + restore it afterwards. Set the size to the size at the beginning + of the line. + * eqn/pbox.h: Declare SAVED_INLINE_PREV_SIZE_REG, + SAVED_INLINE_SIZE_REG, and SAVED_SIZE_REG. + + * refer/Makefile (limits.h): Use ./genlimits. + +Wed Jun 12 16:05:34 1991 James Clark (jjc at jclark) + + * refer/index.c: Delete declarations of stat() and fstat(). + +Tue Jun 11 14:52:49 1991 James Clark (jjc at jclark) + + * tty/tmac.tty: Add character definitions for \(>= and \(<=. + +Mon Jun 10 22:49:48 1991 James Clark (jjc at jclark) + + * etc/grog.sh, etc/grog.pl: Change regex for .PS. + +Fri Jun 7 09:13:06 1991 James Clark (jjc at jclark) + + * troff/input.c (token::get_char): Handle \e. + + * refer/linear.c: Delete declarations of fstat() and stat(). + +Wed Jun 5 09:11:59 1991 James Clark (jjc at jclark) + + * troff/node.c, troff/env.c, troff/input.c, Makefile: Remove + OP_DELETE_BROKEN stuff, since we now have a fix for g++. + +Mon Jun 3 13:41:32 1991 James Clark (jjc at jclark) + + * troff/input.c (do_define_macro): Improve error handling for end + of file while defining macro. + +Sun Jun 2 10:20:24 1991 James Clark (jjc at jclark) + + * eqn/box.h: Fix declaration of set_gsize. + * eqn/box.c (set_gsize): Make argument const char *. + (gsize): Declare as char *. + * eqn/main.c (main): Don't convert gsize to int. + * eqn/lex.c (do_gsize): Pass char * to set_gsize. + + * Version 1.02 released. + +Sat Jun 1 12:19:46 1991 James Clark (jjc at jclark) + + * macros/tmac.andoc: New file. + * macros/Makefile: Install tmac.andoc. + + * troff/node.c, troff/env.c, troff/input.c: Conditionalize use of + operator new and delete on OP_DELETE_BROKEN not being defined. + * Makefile: Mention OP_DELETE_BROKEN. + +Mon May 27 13:49:07 1991 James Clark (jjc at jclark) + + * Makefile (bindist): Pass SUBFLAGS. + +Sun May 26 14:13:22 1991 James Clark (jjc at jclark) + + * Makefile, groff.c: Pass definitions to groff.c via device.h. + + * tty/tty.c (tty_font::load_tty_font): Avoid shadowing + parameter. + + * ps/Makefile, ps.c: Pass BROKEN_SPOOLER_FLAGS via broken.h. + + * ps/ps.h, ps/psrm.c: Make comment_table and + header_comment_table local to resource_manager::process_file. + + * groff.sh: With -TXps pass -printCommand option to gxditview. + + * groff.c (possible_command::print): Implement using + append_arg_to_string. + + * xditview: Merge in new implementation with own ChangeLog. + +Sat May 25 18:33:20 1991 James Clark (jjc at jclark) + + * groff.c (main): Implement PRINT_OPTION. + (append_arg_to_string): New command. + (device_table): Set PRINT_OPTION flag for Xps. + +Fri May 24 09:48:58 1991 James Clark (jjc at jclark) + + * troff/groff.h: Rename to troff.h. + + * pic/lex.c (lookup_keyword, docmp): New functions. + (get_token): Use new lookup_keyword. + Don't include key.h. + * pic/key.[ch], pic/pic.gperf: Deleted. + * pic/Makefile: Remove gperf stuff. + + * pic/Makefile, pic/output.h: Move definition of TEX_SUPPORT + into output.h. + * pic/tex.c: Move include of pic.h before test of TEX_SUPPORT. + + * troff/Makefile, troff/node.c: Move definition of + STORE_WIDTH into node.c. + + * etc/grog.pl, etc/grog.sh: Support -mdoc. + +Thu May 23 12:30:49 1991 James Clark (jjc at jclark) + + * dvi/devdvi/texr.map, dvi.devdvi/texi.map, + dvi/devdvi/texb.map: Add lq and rq. + dvi/devdvi: Regenerate fonts. + * ps/devps/textmap: Add lq and rq. + * ps/devps: Regenerate fonts. + * tty/devascii/R.proto, tty/devlatin1/R.proto: Add lq and rq. + * macros/tmac.e: Define \*(lq and \*(rq to be \(lq and \(rq. + + * pic/object.c (position_rectangle): When checking radius + cope with possibility that width or height is negative. + (box_object::box_object): Have separate xrad and yrad with + signs matching signs of dim components. + (box_object::{north,south}_{east,west}): Use xrad and yrad. + (box_object::print): With rounded boxes use absolute values + for dim and rad arguments. + + * lib/Makefile, lib/fontfile.o: Pass definition of FONTPATH + in fontpath.h. + + * eqn/Makefile, eqn/main.c: Pass definition of DEVICE in device.h. + + * various files: Add explicit destructors to keep Saber CC +d + happy. + +Wed May 22 11:37:11 1991 James Clark (jjc at jclark) + + * eqn/box.c (box::top_level): Restore fonts correctly after + font changes in line containing inline equation. Also + restore previous font as well as current font. + * eqn/pbox.h: Define necessary string and register names. + + * troff/input.c (token::next): Case 'R' calls do_register. + (do_register): New function. + +Tue May 21 11:28:23 1991 James Clark (jjc at jclark) + + * groff.c, groff.sh: Support Xps device. Allow each device + to have a pseudo_name and a real_name. + + * groff.c (run_commands): Don't print `Broken pipe' messages. + + * ps/pfbtops.c: New file. + * ps/Makefile: Add pfbtops. + + * troff/number.c (parse_term): Improved error message. + +Mon May 20 11:22:14 1991 James Clark (jjc at jclark) + + * groff.c, groff.sh, etc/grog.sh, etc/grog.pl: Support grefer. + + * Makefile: Integrate refer. + * refer: New directory. + * man/grefer.man, man/glookbib.man, man/gindxbib.man, + man/lkbib.man: New files. + * man/Makefile: Support refer man pages. + + * lib/lib.h: Declare is_prime. + * lib/prime.c: New file. + + * troff/input.c (macro_source): New function. + (init_input_requests): Bind "mso" to macro_source. + + * troff/env.c (environment::possibly_break_line): Maintain + pointer to pointer to node to be split in ndp so as to avoid + using address of freed node. + + * troff/env.c (environment::hyphenate_line): Maintain pointer to + pointer to first node to be hyphenated in startp so as to + avoid using address of freed node. + + * troff/env.c (class trie, class hyphen_trie): Make the + elements of the trie be of type char not unsigned char. + Declare arguments to be const char* instead of unsigned char *. + + * troff/env.c (hyphenate): Initialize hbuf[0]. + + * troff/input.c (set_string): Declare p to be char * and cast + *p to unsigned char when necessary. + + * troff/input.c (do_define_macro): Declare s to be const + char*. Cast element to unisgned char when necessary, Declare + d to be an int. Handle EOF better. + + * troff/Makefile, troff/input.c: Different scheme for passing + definitions of MACROPATH, HYPHENFILE and DEVICE. + +Tue May 14 13:41:36 1991 James Clark (jjc at jclark) + + * tty/devascii/R.proto: Delete entry for em. + * tty/devlatin1/R.proto: Likewise. + +Sat May 11 11:13:28 1991 James Clark (jjc at jclark) + + * troff/input.c (translate): Stop when we get a space. Treat eof + like newline. + + * macros/tmac.an (IP): Only pass quoted argument to TP when \n(.$>1. + +Wed Apr 24 19:24:33 1991 James Clark (jjc at jclark) + + * tbl/main.c (process_format): A font name following a `f' + modifier that starts with a digit can be only one character long. + Also deal with EOF on the second character of the font name. + +Wed Apr 17 11:23:43 1991 James Clark (jjc at jclark) + + * troff/input.c (token::next): Turn \~ into an + unbreakable_space_node. + * troff/node.c (unbreakable_space_node): New class. + * troff/node.h: Declare it. + +Tue Apr 16 10:47:12 1991 James Clark (jjc at jclark) + + * dvi/dvi.c (dvi_printer::set_char): Make code an int. Check that + it's >= 0, before outputting it as a single byte. + +Mon Apr 15 11:20:23 1991 James Clark (jjc at jclark) + + * lib/font.c: Make font_char_metric::code an int. + (font::get_code): Change return type to int. + (font::load): Allow code to be arbitrary integer. + * lib/font.h (font::get_code): Change return type to int. + (font::number_to_index): Change argument type to int. + * troff/input.c (token::next): In case 'N', allow any value. + Store value in token::val. + (token::operator==): For TOKEN_NUMBERED_CHAR test equality of val. + (token::get_char, token::add_to_node_list, token::process): Get + number from val. + (charinfo::set_number): Change argument to int. + (charinfo::get_number): Require that NUMBERED flag be set. + (get_charinfo_by_number): Store numbered characters not between 0 + and 255 in a dictionary. + * troff/charinfo.h (get_charinfo_by_number): Change argument type + to int. + (charinfo::number): Change type to int. + (charinfo::set_number): Change type of set_number to int. + * troff/node.c (troff_output_file::put_char_width, + troff_output_file::put_char): Test whether character is numbered + using charinfo::numbered(). + * driver/printer.c (printer::set_numbered_char): Allow arbitrary + values of num. + * lib/nametoindex.c: New implementation to cope with arbitrary + number characters. + + * troff/input.c (token::operator==): Test val for + TOKEN_CHAR_HEIGHT, TOKEN_CHAR_SLANT, TOKEN_FONT_POSITION, and + TOKEN_SIZE. + + * man/Makefile: Add definition of BROKEN_SPOOLER_FLAGS. + (.man.n): sed out @BROKEN_SPOOLER_FLAGS@. + +Sun Apr 14 12:57:00 1991 James Clark (jjc at jclark) + + * ps/devps/zapfdr.ps: Don't copy UniqueID. Avoid use of newdict + variable. + + * all Makefiles: rm targets of cp and >. + + * xditview/xtotroff.c (MapFont): Unlink troff_name before opening + it. + + * eqn/lex.c (def_table): Add dollar. + +Sat Apr 13 13:02:44 1991 James Clark (jjc at jclark) + + * troff/input.c (do_width): Push back newline before closing delim + like do_bracket. + +Fri Apr 12 15:16:03 1991 James Clark (jjc at jclark) + + * groff.c (possible_command::prepend_arg): New function. + (main): Prepend device -m option. + * groff.sh: Put device -m options before command-line options. + +Tue Apr 9 10:24:43 1991 James Clark (jjc at jclark) + + * macros/tmac.an (IP): Quote argument to TP. + + * ps/ps.c (main): New option -b, which sets... + (broken_flags): New variable. + (ps_printer::~ps_printer): Incorporate the setup section in the + prolog if (broken_flags & NO_SETUP_SECTION). + (ps_printer::begin_page): Generate {Begin,End}PageSetup comments. + (ps_printer::merge_download_fonts, ps_printer::merge_import_fonts, + ps_printer::merge_ps_fonts, ps_printer::print_font_comment, + ps_printer::print_needed_font_comment, + ps_printer::print_supplied_font_comment, + ps_printer::print_include_font_comments, + ps_printer::lookup_doc_font, ps_printer::download_fonts, + ps_printer::read_download_file, read_document_fonts, add_font, + skip_line, parse_fonts_arg, document_font::document_font, + document_font::~document_font, document_font::download, + ps_output::include_file): Deleted. + (ps_printer::~ps_printer): Generate %%EOF. Generate %!PS-Adobe-3.0 + rather than %!PS-Adobe-2.0. Make calls to + resource_manager::need_font for each font that we used. Replace + calls to merge_ps_fonts, merge_download_fonts, print_font_comment, + print_supplied_font_comment, print_needed_font_comment by call to + resource_manager::print_header_comments. Output %%Orientation + comment. Output %%Requirements: numcopies comment if ncopies > 1. + Don't output the prolog directly. Instead call + resource_manager::output_prolog. Only define #copies when ncopies + > 1. Delete calls to print_include_font_comments and + download_fonts. Add call to resource_manager::document_setup. + (ps_printer::do_file): Call resource_manager::import_file instead + of including it ourselves. + (ps_printer::do_import): Likewise. Also don't call + merge_import_fonts. Push userdict on the dictionary stack before + and pop it afterwards. + Move declaration of ps_output into ps.h. + * ps/psrm.c: New file implementing resource_manager class. + * ps/ps.h: New file declaring ps_output and resource_manager + classes. + * ps/devps/zapfdr.ps: + * ps/devps/symbolsl.ps: + * ps/devps/prologue: Use 3.0 conventions. + * ps/Makefile: Pass definition of BROKEN_SPOOLER_FLAGS in DEFINES. + Add default definition of BROKEN_SPOOLER_FLAGS. + * Makefile: New variable BROKEN_SPOOLER_FLAGS. Add + BROKEN_SPOOLER_FLAGS to SUBFLAGS. + +Mon Apr 8 09:26:54 1991 James Clark (jjc at jclark) + + * etc/grog.pl: New file. + * Makefile (GROG): New variable. + Add GROG to SUBFLAGS. + * etc/Makefile (GROG): New variable. + (install.nobin): Install $(GROG) rather than grog.sh. + +Thu Apr 4 11:36:45 1991 James Clark (jjc at jclark) + + * eqn/special.c (special_box::compute_metrics): Make the input and + output strings the same. Get the new height and depth from the + predefined height and depth registers. Also make subscript kern + and skew available. + (special_box::compute_subscript_kern, special_box::compute_skew): + New functions. + + * eqn/box.c (pointer_box::compute_skew, + simple_box::compute_metrics, box::top_level) + * eqn/text.c (prime_box::compute_metrics, + prime_box::comput_subscript_kern) + * eqn/limit.c (limit_box::compute_metrics): + * eqn/delim.c (build_extensible, delim_box::compute_metrics): + * eqn/sqrt.c (sqrt_box::compute_metrics): Protect possibly + negative numbers in `nr' requests with a leading 0. + +Wed Apr 3 15:58:23 1991 James Clark (jjc at jclark) + + * eqn/special.c: New file. + * eqn/eqn.y: Declare token SPECIAL. Make it right associative. + Add new rule for simple. + * eqn/lex.c (token_table): Add SPECIAL. + * eqn/box.h: Declare make_special_box. + * eqn/Makefile: Add special.[co]. + +Sat Mar 30 10:57:53 1991 James Clark (jjc at jclark) + + * ps/devps/prologue: Possibly set packing to true while defining. + Create grops dictionary here. Initialize local variables before + defining procedures. + (PICTURE): Rename to PBEGIN. Also do save, noop showpage, count + the dictionary stack. Set strokeadjust and overprint to false if + the relevant operators are defined. + (PEND): New procedure. + * ps/ps.c (ps_printer::~ps_printer): In the prolog just include + prologue. Do everything else in the setup section. + (ps_printer::do_import): Just call PBEGIN and PEND around the + picture. Also push userdict before, and pop it afterwards. + +Wed Mar 27 07:59:50 1991 James Clark (jjc at jclark) + + * troff/node.c (bracket_node::tprint): Brackets were being printed + 1m too low. + + * macros/tmac.an (SH, SS): Set fill mode. + +Tue Mar 26 07:46:31 1991 James Clark (jjc at jclark) + + * troff/div.c (top_level_diversion::begin_page): Set + high_water_mark to 0. + +Fri Mar 22 09:19:46 1991 James Clark (jjc at jclark) + + * man/mdate.sh: New file. + * man/mdate.c: Deleted. + * man/Makefile: Use mdate.sh instead of mdate. + (mdate): Deleted. + + * eqn/lex.c (do_gsize): Supply missing argument to error message. + +Tue Mar 19 11:06:50 1991 James Clark (jjc at jclark) + + * man/mdate.c: New file. + * man/*.man: Replace modification date by @MDATE@. + * man/Makefile (.man.n): Replace @MDATE@ by `mdate $<`. + (mdate): New target. + + * lib/font.c (text_file::next): Deal with arbitrarily long lines. + Remove invalid input characters. + +Mon Mar 18 08:32:25 1991 James Clark (jjc at jclark) + + * macros/tmac.s (pg*start-col): Do .ns *after* running the hooks. + +Sat Mar 16 03:52:25 1991 James Clark (jjc at jclark) + + * troff/div.c (begin_page): Change behaviour when + !first_page_begun and !break_flag. + + * troff/input.c (do_name_test): Return 0 if argument is empty. + + * troff/input.c (read_long_escape_name): Require closing ] to be + at same input level as opening [. + + * troff/input.c (read_increment_and_escape_name): New function. + (get_copy, process_input_stack): Use this for \n. + +Fri Mar 15 00:31:48 1991 James Clark (jjc at jclark) + + * troff/div.c (top_level_diversion::begin_page): Ignore the + current value of page_number if !first_page_begun. + + * groff.c (main): Fix declaration of buf. + + * troff/input.c (do_name_test): New function. + (token::next): Implement \A. + (token::next): Implement \e by turning it into a TOKEN_ESCAPE. + (token::description, token::add_to_node_list, token::process): + Handle TOKEN_ESCAPE. + * troff/token.h: New token TOKEN_ESCAPE. + +Thu Mar 14 10:22:26 1991 James Clark (jjc at jclark) + + * pic/main.c (do_picture): Allow space before and after filename + following `<'. Check that the filename is not empty. + +Wed Mar 13 12:49:40 1991 James Clark (jjc at jclark) + + * Version 1.01 released. + + * dvi/devdvi/CompileFonts: Add cm*ss10 fonts. + + * dvi/tmac.dvi: ftr HR to H. + + * macros/tmac.e: Round up computation of $r. + + * xditview/tmac.X: Don't give up completely in compatibility mode. + Use \n(.s instead of \n[.s]. + + * dvi/tmac.dvi: Don't give up completely in compatibility mode. + Use \(ci instead of \[ci]. Use \n(.s instead of \n[.s]. + Add u to factors inside \s[...]. Rename frac to dvi-frac. + Translate \(FM onto \[prime] and \(!/ onto \[slashnot]; use these + short names in the char definitions. + + * ps/tmac.ps: Don't give up completely in compatibility mode. + Fix the fraction definitions to use \n(.s and \(f/. Add an extra + quote in front of \n(.s. Add u to factors inside \s[...]. + +Mon Mar 11 12:01:20 1991 James Clark (jjc at jclark) + + * tty/tmac.tty: Call the nroff request. + + * macros/tmac.e ((x, )x): Better definitions that work properly + in a diversion. + (@0, @1): Helper macros for (x. + + * macros/tmac.e ($s, hl): Use \l rather than \D. + + * tty/tmac.tty: Make it work better in compatibility mode. + (pchar): Rename to tty-char. + + * macros/tmac.e (@E): New macro. + (r, i, b, rb, bi): Use @E. + + * macros/tmac.e (@F): Don't use (;...) syntax. + + * macros/tmac.e: Remove mention of \*(||/revisions. Mention that + it was modified for groff. + + * macros/tmac.e: Make sure \n(ps and \n(es are >= \n(.V. + + * macros/tmac.e (<., .>): Removed. + ([., .]): If \n(.V>=1v, use [] instead of superscripting. + + * macros/tmac.e: Remove check that groff is being used. + + * macros/tmac.e (@C): Change families only if using groff; turn + compatibility mode off while changing families. Save + compatibility mode before changing families and restore it + afterwards. + + * macros/tmac.e (@h): Remove test for offset + line length. + + * macros/tmac.e (sorry): Rename to @S. Use \$1 instead of \$0 + (lo, th, ac): Define to call @S instead of using als. + + * macros/tmac.e: Make $r and $R now contain \n(.v*100/\n(.sp, ie + the ratio of the vertical spacing to the point size in units + expressed as a percentage. Use these instead of $10r and $10R, + Delete $10r and $10R. + + * lib/font.c (font::load): In default computation of space_width, + divide by sizescale. Use scale_round. + + * macros/tmac.an (TP): Don't call `nf'. + (an-do-tag): Don't call `fi'. + +Sun Mar 10 09:52:35 1991 James Clark (jjc at jclark) + + * troff/input.c (process_input_stack): Handle the case where + spaces at the beginning of an input line are followed by a + newline. + +Thu Mar 7 20:18:07 1991 James Clark (jjc at jclark) + + * groff.c (device_table): Add PIC_X_OPTION for dvi device. + * groff.sh: Use pic -x with the dvi device. + + * dvi/devdvi/FontMakefile (H): Don't use -s. + + * dvi/devdvi/HI, dvi/devdvi/HB: New files. + * dvi/devdvi/Makefile: Add HI and HB to FONTS. + * dvi/devdvi/FontMakefile: Add rules for HI and HB. Include these + in FONTS. + +Mon Mar 4 13:20:14 1991 James Clark (jjc at jclark) + + * ps/psfig.diff: New file. + * ps/tmac.psfig: New file. + +Sat Mar 2 00:15:09 1991 James Clark (jjc at jclark) + + * macros/tmac.s (]=, ref*do-tl, ref*bib-print): Deleted. + (]-): Don't call ref*do-tl. + + * macros/tmac.s (ref*end-print): Use XP if [F not defined. + + * macros/tmac.s (ref*normal-print): Call FS rather than fn@do-FS. + (fn@do-FS): Rename to fn*do-FS. + + * troff/input.c (transparent_translate): New function. + (process_input_stack): Apply transparent_translate before calling + diversion::transparent_output(unsigned char). + +Wed Feb 27 00:13:25 1991 James Clark (jjc at jclark) + + * troff/input.c (do_define_macro): Define the macro before calling + skip_line. + + * xditview/Makefile: Add DEVICES variable. Change install target + to use this. + +Tue Feb 26 10:46:22 1991 James Clark (jjc at jclark) + + * groff.c (run_commands): Handle the possibility that there are + child processes other than those forked by us. + +Sun Feb 24 21:32:30 1991 James Clark (jjc at jclark) + + * lib/string.c (string::append): New function. + * lib/stringclass.h: Declare it. + +Thu Feb 21 11:49:26 1991 James Clark (jjc at jclark) + + * eqn/main.c (main): New option -N which sets + no_newline_in_delim_flag. + (do_file): If no_newline_in_delim_flag is set don't allow newlines + in delimiters. + * groff.c (main): Pass -N on to eqn. + (help, synopsis): Mention -N. + * groff.sh: Implement -N. + +Wed Feb 20 15:16:10 1991 James Clark (jjc at jclark) + + * macros/tmac.s (]=, ref*bib-print, ref*do-tl): New macros. + (]-): Call ref*do-tl if ref*need-tl is non-zero. + (XP): Allow as initializer. + +Tue Feb 19 14:09:06 1991 James Clark (jjc at jclark) + + * troff/env.c (environment::wrap_up_field): If field_spaces are + non-zero and we have a current_tab, subtract padding from + tab_distance. If this makes tab_distance <= 0, use the next tab + stop instead. If there isn't any next tab or it's a left tab, + wrap up the current tab. + (environment::start_field): Initialize tab_precedes_field. + (environment::wrap_up_tab): If there's a current field, update + pre_field_width, field_distance and tab_precedes_field. + * troff/env.h (environment::tab_precedes_field): New member. + +Fri Feb 15 01:24:00 1991 James Clark (jjc at jclark) + + * ps/ps.c (ps_printer::do_file): New function. + (ps_printer::special): Bind to `file' special. + (ps_printer::do_exec): Set ndefined_styles to 0. + +Sat Feb 9 03:03:04 1991 James Clark (jjc at jclark) + + * eqn/text.c (split_text): Grok \* and similar escapes sequences. + Avoid stripping first character from the start of unrecognized + escapes. Use lex_error instead of error to report errors. + * eqn/lex.c (get_token): Rework handling of escapes. + (lex_error): Move declaration into... + * eqn/eqn.h. + + * xditview/xditview.c (main): Make -page option work. + + * Makefile: Correct comment about -DBROKEN_SPOOLER and pageview. + +Wed Feb 6 12:28:43 1991 James Clark (jjc at jclark) + + * macros/tmac.s (B2): Correct size of box. + +Tue Feb 5 00:37:35 1991 James Clark (jjc at jclark) + + * macros/tmac.s (B2): Postpone drawing the box until in the + top-level diversion. + + * tty/tmac.tty: Add font translations for C, CR, CW. + + * groff.c (synopsis, help): Document -i. + * groff.sh: Implement -i. + + * macros/tmac.s (@NH): Put a `.' after multi-part numbers. + Simplify the construction of SN. + + * troff/number.c (parse_term): Give `|' a higher precedence. + * tbl/table.c (numeric_text_entry::simple_print): Parenthesise + accordingly. + + * macros/tmac.s (B2): Use par@finish instead of par@reset. + +Mon Feb 4 12:36:09 1991 James Clark (jjc at jclark) + + * lib/string.c (string::move): New function. + * lib/stringclass.h: Declare it. + +Sat Feb 2 16:02:16 1991 James Clark (jjc at jclark) + + * troff/env.c (distribute_space): Add optional argument + `force_forward'. + (environment::wrap_up_field): Call distribute_space with + `force_forward' argument of 1. + +Fri Feb 1 19:36:33 1991 James Clark (jjc at jclark) + + * lib/string.c, lib/stringclass.h (string::operator+=(char)): + Inline it. Move reallocation into... + (string::grow1): New function. + * pic/Makefile, tbl/Makefile, eqn/Makefile, ps/Makefile: Redo + dependencies to include library header files. + * lib/Makefile: Make string.c and lf.c depend on stringclass.h. + +Thu Jan 31 15:02:27 1991 James Clark (jjc at jclark) + + * macros/tmac.s (@NH): Use the same number registers than -ms does + for the heading level counters. Use the same string that -ms does + for the number for this heading. + +Wed Jan 30 14:25:40 1991 James Clark (jjc at jclark) + + * lib/new.c (operator new): Cast result of malloc to char *. + + * troff/input.c (spring_trap, lookup_request): Add assert that nm + is not null. + +Tue Jan 29 18:08:05 1991 James Clark (jjc at jclark) + + * groff.c (main): Support -i. + +Sun Jan 27 13:23:17 1991 James Clark (jjc at jclark) + + * pic/pic.h: Include <osfcn.h>. + + * ps/ps.c: Add declaration of mktemp. + + * Makefile: Add -DHAVE_UNION_WAIT option for CPPDEFINES. + * groff.c: If HAVE_UNION_WAIT is defined, declare wait()'s + argument as union wait *. + (run_commands): If HAVE_UNION_WAIT is defined cast wait()'s + argument to union wait *. + +Sat Jan 26 12:04:52 1991 James Clark (jjc at jclark) + + * tty/tmac.tty: Add definition of \(co. + + * pic/object.c (make_arc): Only increase radius when radius + strictly less than d. + (arc_object::update_bounding_box): May need to add 4.0 to end_quad + more than once. + + * troff/env.c (environment::environment(symbol), + environment::environment(const environment *)): Initialize + input_trap_count. + +Sat Jan 19 08:18:35 1991 James Clark (jjc at jclark) + + * tbl/main.c (main): Add exit(0). + + * ps/ps.c (ps_printer::~ps_printer): Use fseek instead of rewind. + + * pic/main.c (main): + * eqn/main.c (main): + * tbl/main.c (main): + * etc/soelim.c (main): + * driver/printer.c (printer::~printer): + * troff/node.c (real_output_file::~real_output_file, + real_output_file::flush): Check for errors on stdout. + + * most files: Add 1991 to copyright notice. + + * macros/tmac.s: Don't test \n(.x and \n(.y. + + * troff/input.c (token::next): Rename `escape_char' label to + `handle_escape_char' and `normal_char' label to + `handle_normal_char'. + +Thu Jan 17 15:46:35 1991 James Clark (jjc at jclark) + + * groff.c (main, synopsis, help): Support -a option. + * groff.sh: Likewise. Also eliminate Zflag variable by adding -z + to trflags while parsing options. + +Tue Jan 15 13:07:27 1991 James Clark (jjc at jclark) + + * troff/number.c (parse_term): With `m', `M' and `n' scale + indicators, convert scale factor to hunits before scaling. + +Mon Jan 14 12:39:12 1991 James Clark (jjc at jclark) + + * lib/font.c (scale_round): Better test for overflow when n is + negative. + +Thu Jan 10 11:10:56 1991 James Clark (jjc at jclark) + + * tbl/main.c (process_format): Add second argument of type + options*. Change callers. Allow opt->tab_char as well as '\t' + between format items. + +Mon Jan 7 12:30:18 1991 James Clark (jjc at jclark) + + * macros/tmac.an (PD): With no arguments, make sure register PD is + at least \n[.V]. + (TH): Call PD with no argument, instead of setting register PD + directly. + +Sun Jan 6 11:18:39 1991 James Clark (jjc at jclark) + + * Version 1.00 released. + +Sat Jan 5 08:44:30 1991 James Clark (jjc at jclark) + + * ps/tmac.ps, xditview/tmac.X: Add font translation of C to CR. + + * dvi/devdvi/DESC: Mount CW instead of CR. + + * dvi/tmac.dvi: Add definition of \(tm. + + * dvi/devdvi/texsy.map: Add lh, and rh. + * dvi/devdvi/texex.map: Add lt, rt, lb, rb, lk, rk. + * dvi/devdvi/texmi.map: Add *o. Regenerate fonts. + + * dvi/devdvi/FontMakefile: Generate H from cmss10. + * dvi/devdvi/Makefile: Install H. + * dvi/devdvi/H: New file. + +Fri Jan 4 15:04:57 1991 James Clark (jjc at jclark) + + * troff/env.c (vertical_spacing): Don't allow vertical spacing to + be 0. + +Thu Jan 3 13:41:19 1991 James Clark (jjc at jclark) + + * macros/tmac.s (@EN): Add \n(.V to the argument to ds@need. + + * macros/tmac.pic (PS): Avoid attempting to set negative indent. + + * macros/tmac.s (@EN): Handle the case where the equation is empty + but the label is not. + +Wed Jan 2 10:31:44 1991 James Clark (jjc at jclark) + + * troff/groff.h: New warning category WARN_SPACE. + * troff/input.c: Add WARN_SPACE to DEFAULT_WARNING_MASK. Add + WARN_SPACE to warning_table. + (interpolate_macro): Give a warning of type WARN_SPACE if the name + is longer than two characters and is not defined, but the first + two characters do make a defined name. + + * PROBLEMS: New file. + + * CHANGES: New file. + * README-0.6, README-1.00: Deleted. + + * groff.c, groff.sh: Add X75-12 and X100-12 devices. + * xditview/devX75/Makefile: Make devX75-12. + * xditview/devX100/Makefile: Make devX100-12. + + * xditview/devX100/eqnchar, xditview/devX75/eqnchar, + dvi/devdvi/eqnchar, ps/devps/eqnchar: Remove use of \R. + +Tue Jan 1 19:24:01 1991 James Clark (jjc at jclark) + + * README-0.7: Rename to README-1.00. + + * macros/tmac.pic: New file. + * macros/Makefile (install.nobin): Install tmac.pic. + +Mon Dec 31 10:40:53 1990 James Clark (jjc at jclark) + + * troff/env.c (hyphen_word): Correct the test for whether the + token is a hyphen. Reset npos to 0. + + * macros/tmac.s (par@sup-start, par@sup-end): New implementations. + +Sun Dec 30 15:53:13 1990 James Clark (jjc at jclark) + + * macros/tmac.s (ds*common-end): Call par*reset. + (PE): Likewise. + (par@reset-indent): Deleted. + + * macros/tmac.s (@IP): Divert the label. + +Sat Dec 29 14:33:32 1990 James Clark (jjc at jclark) + + * xditview/draw.c (setGC): Use a line width of .1m rather than + .04m by default; round rather than truncate value. + + * tbl/table.c (class empty_entry): New class. + (empty_entry::empty_entry, empty_entry::line_type): New functions. + (table::add_entry): Represent empty entries by objects of type + empty_entry. + (table_entry::line_type): Return -1. + (table::determine_row_type): Ignore entries with line_type 0. + Treat type -1 as non-lines. + +Fri Dec 28 15:04:41 1990 James Clark (jjc at jclark) + + * ps/devps/textmap, xditview/libXdvi/DviChar.c, tty/devlatin1/R.proto, + macros/tmac.s: Rename \(-d to \(Sd. + +Thu Dec 27 12:35:47 1990 James Clark (jjc at jclark) + + * ps/devps/textmap: Add `sd', `/_' and `3d' characters. + * xditview/libXdvi/DviChar.c: Likewise. + * dvi/devdvi/texsy.map: Add `<<', `>>'. + +Wed Dec 26 13:33:23 1990 James Clark (jjc at jclark) + + * troff/div.c (top_level_diversion::begin_page): Call + init_output() if the_output is 0. + +Sat Dec 22 12:35:29 1990 James Clark (jjc at jclark) + + * troff/input.c: Replace ESCAPE_E by ESCAPE_e and ESCAPE_C by + ESCAPE_c. + (get_copy): Turn \E into ESCAPE_E. + (token::process, asciify): Handle ESCAPE_E. + + * macros/tmac.s (ds*common-end, par@reset): Add `.rj 0'. + (RD): New macro. + (DS): Implement `.DS R'. + +Fri Dec 21 11:41:53 1990 James Clark (jjc at jclark) + + * macros/tmac.s (FS): New macro. + + * macros/tmac.s (fn@do-FS): Use @LP instead of LP. + + * macros/tmac.s (cov*tl-init): Remove after first execution + instead of aliasing to @nop. Call top of page macro explicitly + instead of setting trap; call @init first. Set pg@top as top of + page macro. + (cov*auto-init): Deleted. Set cov*tl-init instead of + cov*auto-init as top of page trap. + (TL, LP): Do a break instead of calling cov*tl-init. + (cov*print): With RP format but no TL, alias FS and FE to @FS and + @FE; in this case also give a warning and always start another + page. No need to set pg@top here. + (cov*tl-init): Rename to cov*first-page-init. + + * macros/tmac.s (RP): Do `.pn 0'. + (cov*tl-init): With RP format don't do `.pn 0'. + + * macros/tmac.s (pg@cs-top): Set no space mode. + + * macros/tmac.s (par@TL, par@AU, par@AI): New macros. + (cov*ab-init): Alias TL, AU and AI to these. + +Thu Dec 20 10:10:50 1990 James Clark (jjc at jclark) + + * macros/tmac.s (@EQ): Move the space before the equation into @EN + (@EN): Do nothing unless \n[dl] is > 0. + +Tue Dec 18 12:20:47 1990 James Clark (jjc at jclark) + + * pic/object.c (ellipse_object::radius): New function. + + * VERSION: Change version to 0.7. + + * tbl/table.c (block_entry::do_divert): Declare return type as + void. + (block_entry::divert, alphabetic_block_entry::divert): Return 1. + +Mon Dec 17 12:30:34 1990 James Clark (jjc at jclark) + + * troff/column.c: New file. + * troff/Makefile: Corresponding changes. + + * troff/hvunits.c (scale(vunits, vunits, vunits)): New function. + Friend of vunits. + + * troff/div.c (top_level_diversion::space): If the space causes + the first-page transition and springs a trap, truncate the space + to 0. + +Fri Dec 14 12:30:02 1990 James Clark (jjc at jclark) + + * ps/ps.c (ps_printer::do_import): Add a `clear' after including + the document. + + * pic/troff.c (troff_output::line_thickness, + troff_output::set_fill): Do a horizontal motion to compensate for + the width of the \D escape sequence. + +Thu Dec 13 10:17:14 1990 James Clark (jjc at jclark) + + * xditview/tmac.X: Reinstate definition of \(rn, but only for X100 + (not X75). + + * eqn/sqrt.c (sqrt_box::compute_metrics): Supply missing argument + to printf. + + * tbl/table.c (simple_entry::simply_print): Don't declare as pure. + Supply empty definition. + (text_entry::simple_print, simple_text_entry::simple_print): + Delete declarations. + (table::add_entry): Represent empty entries by objects of type + `simple_entry'. + +Wed Dec 12 08:50:48 1990 James Clark (jjc at jclark) + + * troff/Makefile: Remove -DHYPHEN_CONTROL from DEFINES. + + * tbl/table.c (left_text_entry::add_tab): New function. + + * macros/tmac.s: Make @RT an alias for par@reset. Make RT + initialize like LP. + +Mon Dec 10 11:19:55 1990 James Clark (jjc at jclark) + + * troff/env.c (environment::start_field): Give an error message if + there is no next tab. + +Sun Dec 9 11:46:40 1990 James Clark (jjc at jclark) + + * troff/env.c (hyphenate): Skip initial elements with zero + hyphenation code. + + * macros/tmac.s (par@init): Keep VS in points rather than units. + +Sat Dec 8 23:00:27 1990 James Clark (jjc at jclark) + + * pic/main.c (main): Implement `-c' option. + * pic/output.h: Declare make_tpic_output(). + * pic/tex.c (tex_output::set_pen_size): Make it virtual and + protected. + (tpic_output): New class. + (tpic_output::tpic_output, tpic_output::set_pen_size, + tpic_output::command, make_tpic_output): New functions. + +Fri Dec 7 11:57:41 1990 James Clark (jjc at jclark) + + * tbl/main.c (main): Call `.ab' if \n(.g is false. Define TS/TE + if they're not already defined. + * tbl/table.c (init_output): Don't test \n(.g. + + * troff/input.c (do_if_request): Delete `g' condition. Recognize + `d', `r' and `c' conditions even in compatibility mode. + +Tue Dec 4 09:13:47 1990 James Clark (jjc at jclark) + + * ps/tmac.ps (ps-bb): Protect against negative numbers in bounding + box. + +Mon Dec 3 07:18:26 1990 James Clark (jjc at jclark) + + * troff/env.h (environment::prev_line_interrupted): New member. + (environment::get_prev_line_interrupted): New function. + * troff/env.c (environment::newline): Set prev_line_interrupted. + (environment::environment(const environment *), + environment::environment(symbol)): Initialize + prev_line_interrupted. + * troff/input.c (process_input_stack): Don't give special + treatment to space and newline at the beginning of the line if the + previous line was interrupted. + +Sat Dec 1 15:48:37 1990 James Clark (jjc at jclark) + + * eqn/eqn.y: Disallow PRIME by itself. + * eqn/lex.c (token_table): Bind `opprime' instead of `prime' to + PRIME. + (def_table): Remove definition of '. Define prime to be `. + + * eqn/eqn.y: Split off part of rule `script' into a new rule + `nonsup'. + +Fri Nov 30 10:23:44 1990 James Clark (jjc at jclark) + + * macros/tmac.s ({, }): New string aliases. + +Thu Nov 29 11:34:40 1990 James Clark (jjc at jclark) + + * README-0.7: New file. + +Wed Nov 28 10:09:57 1990 James Clark (jjc at jclark) + + * macros/tmac.s: New file. + * man/groff_ms.man: New file. + * Makefile: Add definition of TMAC_S. Pass TMAC_S in SUBFLAGS. + * Makefile.bd: Similarly. + * man/Makefile: Add groff_ms.n to MAN7PAGES. Replace @TMAC_S@. Add + definition of TMAC_S. + * macros/Makefile: Add definition of TMAC_S. Install tmac.s. + * macros/TODO: New file. + +Sat Nov 24 20:04:54 1990 James Clark (jjc at jclark) + + * troff/env.c (right_justify): New function. + (init_env_requests): Bind this to request "rj". + (center_lines): Set right_justify_lines to 0. If we get a bad + integer, center 1 line. + (environment::environment(symbol), environment::environment(const + environment *)): Initialize right_justify_lines. + (environment::get_right_justify_lines): New function. + (init_env_requests): Bind this to number_register ".rj". + + * troff/env.c (environment::choose_breakpoint): Implement + hyphenation_margin and hyphenation_space. + (environment::get_hyphenation_space, + environment::get_hyphenation_margin): New functions. + (init_env_requests): Bind these to .hys and .hym. + (hyphenation_space_request, hyphenation_margin_request): New + functions + (init_env_requests): Bind these to hys and hym. + (environment::environment(symbol), environment::environment(const + environment *)): Initialize hyphenation_margin and + hyphenation_space. + * troff/env.h: Corresponding changes to class environment. + +Fri Nov 23 09:08:16 1990 James Clark (jjc at jclark) + + * troff/div.c (blank_line): Always do a break. + + * eqn/box.c (do_text): Turn off escapes while appending text to + string. + +Thu Nov 22 10:58:59 1990 James Clark (jjc at jclark) + + * troff/input.c (while_break_request, while_continue_request): New + functions. + (init_input_requests): Bind these to "break" and "continue". + (while_depth, while_break_flag): New variables. + (while_request): Update while_depth. Break out of loop if + while_break_flag is set. + +Wed Nov 21 10:54:40 1990 James Clark (jjc at jclark) + + * tbl/table.c (init_span_reg): Initialize span_width_reg to \n(.H + rather than 0. + +Mon Nov 19 00:45:03 1990 James Clark (jjc at jclark) + + * Makefile: Include -DBROKEN_SPOOLER by default. Expand comment. + + * stringify: New file. + * Makefile (groff.o): Use stringify. + + * xditview/tmac.X: Remove definition of \(rn. + * xditview/libXdvi/DviChar.c: Remove radicalex from + Adobe_symbol_map. + +Sat Nov 17 10:44:58 1990 James Clark (jjc at jclark) + + * tbl/table.c (table::add_entry): Allow alphabetic text blocks. + (alphabetic_block_entry::alphabetic_block_entry, + alphabetic_block_entry::divert, alphabetic_block_entry::print): + New functions. + (block_entry::divert): Split off body into ... + (block_entry::do_divert): If the block is alphabetic, subtract 2n + from the line length; also update the span width to dl+2n, and the + alphabetic span width to dl. + + * driver/input.c (do_file): While reading argument to D command, + when expanding buffer, multiply szp by sizeof(int) rather than 2 + in the argument to memcpy. + + * tbl/table.c (compute_span_width): Add 2n rather than 1n to the + width of alphabetic columns. + +Fri Nov 16 06:34:27 1990 James Clark (jjc at jclark) + + * troff/node.c (lookup_family): Supply second argument to lookup. + + * troff/dictionary.c (dictionary::lookup): After an unsuccessful + search, return immediately if v is 0. + + * pic/troff.c: Define EQN_NO_EXTRA_SPACE_REG. + (troff_output::start_picture): Set this reg. + (troff_output::end_picture): Remove this reg + * eqn/box.c (box::extra_space): Don't produce `\x's if + EQN_NO_EXTRA_SPACE_REG is defined. + + * eqn/eqn.y: Allow just a PRIME to be a `simple'. + * eqn/text.c (split_text): Map ' to \(fm when it's the first + character. + +Thu Nov 15 10:35:06 1990 James Clark (jjc at jclark) + + * macros/tmac.e: Use font 3 instead of B in $c. Remove `bd' + requests. + + * troff/div.c (top_level_diversion::top_level_diversion): + Initialize page_number to 0. + +Wed Nov 14 21:41:58 1990 James Clark (jjc at jclark) + + * groff/troff (environment::environment(const environment *)): + Initialize name to e->name, rather than "anonymous". + +Sat Nov 10 01:59:37 1990 James Clark (jjc at jclark) + + * xditview/libXdvi/Dvi.c (ShowDvi): If eof is encountered, reset + requested_page. Split middle part into ... + (FindPage): New function. + (SetValues): If we don't yet know the last page, and the requested + page is greater than the current page, call FindPage. + Update the font_map_string before doing this. + + * xditview/tmac.X: Add definitions of \(sq, \(ga, \(dg and \(dd. + Translate \(lh and \(rh into left and right double arrows. + + * troff/node.c (class hyphen_inhibitor_node): New class. + (hyphen_inhibitor_node::hyphen_inhibitor_node, + hyphen_inhibitor_node::copy, hyphen_inhibitor_node::same, + hyphen_inhibitor_node::type, + hyphen_inhibitor_node::get_hyphenation_type): New functions. + (node::add_discretionary_hyphen): Use hyphen_inhibitor_node rather + than dbreak_node(0, 0) to represent a `\%' at the beginning of a + word. + +Fri Nov 9 16:05:38 1990 James Clark (jjc at jclark) + + * troff/node.h (dummy_node::get_hyphenation_type, + transparent_dummy_node::get_hyphenation_type): Declare them. + * troff/node.c: (dummy_node::get_hyphenation_type, + transparent_dummy_node::get_hyphenation_type): New functions. + +Wed Nov 7 10:09:06 1990 James Clark (jjc at jclark) + + * xditview/libXdvi/draw.c: If M_PI not defined after including + math.h, then define it. + + * xditview/Makefile: Add definition of AR. Pass it to the submake + in libXdvi. + * xditview/libXdvi/Makefile: Add definitions of AR and RANLIB. + +Tue Nov 6 10:14:27 1990 James Clark (jjc at jclark) + + * troff/dictionary.h (object_dictionary::alias): Declare return + value as int. + * troff/dictionary.c (object_dictionary::alias): Return non-zero + if the old name was defined. + * troff/input.c (alias_macro): Give a warning if the old name was + not defined. + * troff/reg.c (alias_reg): Likewise. + +Mon Nov 5 00:31:39 1990 James Clark (jjc at jclark) + + * troff/input.c (token::next): Delete implementation of \R. + + * macros/Makefile: Strip comments from tmac.e while installing it. + + * troff/input.c: New variable `nroff_mode'. + (troff_request, nroff_request): New functions. + (init_input_requests): Bind `troff' and `nroff' to troff_request + and nroff_request. + (do_if_request): Compute results of t and n conditions from + nroff_mode. + + * text/text.c (split_text): Fix typo in >=. + + * eqn/lex.c: Add definition of `==' to def_table. + +Fri Nov 2 02:49:09 1990 James Clark (jjc at jclark) + + * pic/tex.c (tex_output::start_picture): Change the definitions of + \graph and \graphtemp so that they work properly with Plain TeX. + + * pic/tex.c (tex_output::solid_arc): Ensure that the second angle + argument to `ar' is not less than the first. + + * pic/pic.y: Allow a comma between elements of the variable list + in the argument to `reset'. + + * pic/object.c (arc_object::arc_object): Fix computation of + radius. + + * eqn/main.c (main): Add exit(0). + +Thu Nov 1 02:03:50 1990 James Clark (jjc at jclark) + + * troff/div.c (begin_page): Test no_space_mode after doing the + break, but still push the page ejector cookie before doing the + break. Also set the next page number after doing the break. + + * xditview/xditview.c (NewFile): Don't set the title and icon name + if this is the first file and its name is `-'. + * groff/groff.c: Define a new device flag XT_OPTION. Set it for + the X75 and X100 devices. + (main): If a device has the XT_OPTION flag set and there's exactly + one file argument, pass the driver -xrm and -title options to set + the icon name and window title to the name of the file. + + * troff/env.c (environment_switch): If there was an argument but + it wasn't a valid number or name, then pop an environment but + don't give an error message on underflow. + + * troff/number.c (start_number): Correct spelling in error message. + + * troff/input.c (token::delimiter): Don't print an error message + if err is false. + + * xditview/libXdvi/parse.c (ParseInput): In case 'D', only call + ParseDrawFunction if dw->display_enable is true. + +Wed Oct 31 05:49:50 1990 James Clark (jjc at jclark) + + * pic/pic.y: Parse text positioning like normal attributes, so as + to allow `"text" at 0,0 ljust'. Don't allow `center' as a + positioning attribute. + +Mon Oct 29 22:50:38 1990 James Clark (jjc at jclark) + + * tbl/main.c (process_data): When in state START while reading a + text block, don't change to state MIDDLE if c is a newline. + +Sun Oct 28 21:59:56 1990 James Clark (jjc at jclark) + + * dvi/dvi.c (dvi_printer::begin_page): Rename `i' variable to `j' + so as to avoid shadowing parameter. + +Wed Oct 24 18:35:39 1990 James Clark (jjc at jclark) + + * tbl/table.c (trim_space): Deleted. + (table::add_entry): Don't call trim_space. + +Mon Oct 22 03:48:39 1990 James Clark (jjc at jclark) + + * VERSION: Change version to 0.6. + + * troff/number.c (parse_expr): Make == work. + +Sat Oct 20 11:28:17 1990 James Clark (jjc at jclark) + + * man/grog.man: New file. + * man/Makefile: Add grog.n to MAN1PAGES. + * etc/grog.sh: New file. + * etc/Makefile: Install grog.sh as grog. + +Fri Oct 19 11:17:15 1990 James Clark (jjc at jclark) + + * troff/input.c (token::next): Implement \E. + +Thu Oct 18 11:56:24 1990 James Clark (jjc at jclark) + + * xditview/tmac.X: Change font translations to match tmac.ps. + + * troff/input.c (non_empty_name_warning): Don't give a warning if + `\{' terminates the name. + +Tue Oct 16 10:04:23 1990 James Clark (jjc at jclark) + + * ps/devps/symbol.diff: New file. + * ps/devps/FontMakefile: Mention symbol.diff. + +Sun Oct 14 11:46:46 1990 James Clark (jjc at jclark) + + * troff/node.c (font_position): Use get_long_name to read the + external_name. + + * troff/env.c (environment_switch): If we get a number that's < 0 + or >= NENVIRONMENTS, treat it like a name. + Change NENVIRONMENTS to 10. + + * troff/groff.h: Remove definition of FONTS_MAX. + * troff/node.h (class font_family): Make map a pointer instead of + an array. Add a map_size member. Make it a class. Make nm const + and public. Make invalidate_fontno a friend. + * troff/node.c: Define font_table_size. Make font_info a pointer + rather than an array. + (class troff_output_file): Allocate font_position dynamically. Add + nfont_positions member. + (troff_output_file::set_font): Grow font_position if necessary. + (troff_output_file::~troff_output_file): Delete font_position. + (troff_output_file::troff_output_file): Allocate font_position. + (grow_font_table): New function. + (troff_output_file::really_begin_page, + troff_output_file:really_copy_page): Use nfont_positions rather + than FONTS_MAX. + (mount_font_no_translate, mount_style): Call grow_font_table if + necessary. + (font_family::font_family): Allocate map. + (font_family::make_definite): Grow map if necessary. Use + font_table_size instead of FONTS_MAX. + (font_family::~font_family): New function. + (invalidate_fontno): Use font_family::map_size. + (get_fontno, env_space_width, env_half_narrow_space_width, + env_narrow_space_width, symbol_fotno, is_good_fontno, + get_bold_fontno, make_glyph_node): Use font_table_size rather than + FONTS_MAX. + (next_available_font_position): Never return 0. + +Fri Oct 12 10:17:52 1990 James Clark (jjc at jclark) + + * ps/tmac.ps: Add font translations for compatibility with dpost. + +Thu Oct 11 12:09:03 1990 James Clark (jjc at jclark) + + * eqn/pile.c: Rename default_baseline_sep to baseline_sep. + Move BASELINE_SEP_FORMAT and COLUMN_WIDTH_FORMAT into pbox.h. + Move definitions baseline_sep, shift_down, column_sep, + matrix_side_sep into... + * eqn/box.c: Add them to param_table. + * eqn/pbox.h: Add declarations to pbox.h. + + * troff/input.c (set_string): Cast value to unsigned char *. + + * troff/token.h (process_input_stack): Declare it static before + declaring it a friend. + +Wed Oct 10 09:59:13 1990 James Clark (jjc at jclark) + + * dvi/devdvi/texex.map: Fix positions of extensible brace middle + and bottom. + * dvi/devdvi/EX: Regenerate. + + * troff/input.c (init_charset_table): Make ", ', ), ], *, \(dg + transparent. + +Tue Oct 9 08:34:02 1990 James Clark (jjc at jclark) + + * eqn/lex.c: In defaults_table, make definition of `dot' call + `dot_def'. Don't explicitly make it roman. Similarly for other + accents. + + * pic/lex.c (for_input::for_input): Add by_is_multiplicative + argument. + (for_input::get, for_input::peek): Use this. + (do_for): Add by_is_multiplicative argument. + * pic/pic.y: Change optional_by clause to allow '*' after `by'. + Change semantic value of optional_by to be a double plus a flag + saying whethet the by clause is multiplicative. + + * eqn/lex.c (get_delimited_text): Remember location of start of + definition. Improve error handling when EOF is encountered. + + * lib/font.h: Rename handle_x_command to + handle_unknown_font_command. + * lib/font.c (font::load): Call handle_unknown_font_command for + any unknown command in the font description file. Don't call + handle_x_command. Include the name of the command in the argv. + Improve message for unknown command after kernpairs or charset + command. + * ps/ps.c (ps_font::handle_x_command): Rename to + handle_unknown_font_command. Remove message about `x download' + command. Give error message for wrong number of arguments. + * ps/devps/afmtodit: Generate `encoding' instead of `x encoding'. + * dvi/dvi.c (dvi_font::handle_x_command): Rename to + handle_unknown_font_command. Give an error message for wrong + number of arguments. Rename design_size to designsize. + * dvi/tfmtodit.c (main): Generate `checksum' instead of `x + checksum', `designsize' instead of `design_size'. + +Mon Oct 8 00:38:55 1990 James Clark (jjc at jclark) + + * eqn/*.[chy]: Change underaccent to uaccent. + + * eqn/eqn.y: Add rule for underaccent. Declare UNDERACCENT token; + give it the same precedence as ACCENT. + * eqn/other.c (make_underaccent_box): New function. + * eqn/box.h: Declare it. + * eqn/lex.c: Add UNDERACCENT to token_table. Add utilde to + def_table. + +Sun Oct 7 11:25:16 1990 James Clark (jjc at jclark) + + * pic/pic.y (reset_all): New function. Called in rule for RESET. + (parse_init): Call reset_all. + (define_variable): When defining scale reset only those + pre-defined variables that are scaled. + (defaults_table): Add `scale' as non-scaled value. + + * pic/pic.y: Redo parsing of text adjustments: parse adjustments + together with the text; allow any number of positioning words; + allow center as a positioning word. + + * pic/object.c (output::compute_scale): Get picture maximum height + and width from variables called maxpswid and maxpsht. + * pic/pic.y: Add maxpswid and maxpsht to defaults_table. + +Sat Oct 6 10:16:56 1990 James Clark (jjc at jclark) + + * pic/object.c (object_spec::make_text): Multiply textht by number + of text items. + + * pic/pic.y: Allow `sprintf("string", expr,...)' wherever text can + occur. + (do_sprintf): New function. + (pic.gperf): Add sprintf token. + (text, sprintf): New rules. + + * pic/pic.y: `rand()' with no arguments returns a random number + in the range [0,1). + + * pic/pic.y: Allow a bare expression to be an attribute: change + precedences to support this. Change optional_ordinal rule to + optional_ordinal_last to avoid reduce/reduce conflict. + * pic/object.c (object_spec::object_spec): Initialize direction. + + * pic/pic.y: Implement ^ operator meaning exponentiation. + + * troff/node.h: Add default argument to mount_font. + * troff/node.c (font_position): Read an optional third argument + giving the external_name. + (mount_font): Add optional argument giving the external_name. + (mount_font_not_translate): Have additional argument giving + external name. Use this name to load the font. Pass both names + to font_info::font_info. + (font_info::font_info): Have additional argument giving + external_name. + (class tfont): New member external_name. + (font_info::get_tfont): Use external name to construct tfont_spec. + +Fri Oct 5 04:03:13 1990 James Clark (jjc at jclark) + + * eqn/lex.c (init_table): Add argument giving device. Define + name of device to be "1". + (do_ifdef): Counts as true if the argument has been defined with + `define'. + * eqn/main.c (main): Call init_table with device argument. Make + device local to main. + * eqn/eqn.h: Change declaration of init_table. Remove declaration + of device. + + * pic/lex.c (get_delimited): Allow text to be delimited by + matching {}s. Don't recognize ending delimiter within a string. + + * troff/input.c (get_delim_name): New function. + (token::next): Implement \C. + + * lib/font.c (font::load): Grok ---. Add an alias for each + character based on its code. + (font::get_code_width): Deleted. + * lib/font.h (class font): Declare font::number_to_index(). + Remove declaration of font::get_code_width. + * lib/nametoindex.c (font::name_to_index): Add 512 rather than 256 + to indices of named characters. + (font::number_to_index): New function. + * troff/input.c (font::number_to_index): New function. + (get_charinfo_by_number, charinfo::get_number, + charinfo::set_number): New functions. + (token::next): Turn \N into a TOKEN_NUMBERED_CHAR. + (token::process, token::description, token::get_char, + token::add_to_node_list, token::operator==): Handle + TOKEN_NUMBERED_CHAR. + * troff/charinfo.h: Declare get_charinfo_by_number, + charinfo::get_number, charinfo::set_number. Add NUMBERED flag to + charinfo class. + (charinfo::numbered): New function. + * troff/token.h: Add TOKEN_NUMBERED_CHAR. + * troff/env.h (class environment): Remove declaration of ... + * troff/env.c (environment::make_numbered_char_node): Deleted. + * troff/node.c (make_numbered_node): Deleted. + (class numbered_glyph_node): Remove. + (troff_output_file::put_char_width, troff_output_file::put_char): + Handle numbered chars. + (troff_output_file::numbered_char): Removed. + (tfont::get_code_width): Removed. + (make_glyph_node): Don't search special fonts for numbered + characters. + * troff/node.h: Remove declaration of make_numbered_node. + * driver/input.c (do_file): Handle N command. + * driver/printer.h: Add declaration of ... + * driver/printer.c (printer::set_numbered_char): New function. + * dvi/tfmtodit.c (main): Generate unnamed entries. + * ps/devps/afmtodit: Likewise. + * xditview/xtotroff.c (MapFont): Likewise. + * xditview/libXdvi/parse.c (ParseInput): Grok N command. + + * tbl/main.c (process_format): If multiple widths are specified + for a column but all the widths are the same, don't give an error + message. + + * tbl/table.c (table::do_row): If the current row is all lines and + the stuff doesn't contains a line, mark the top of the row after + printing stuff before the row. If the current row is not all + lines and the stuff doesn't contain a line, don't unnecessarily + mark the top of the row before printing the stuff. + +Mon Oct 1 11:42:00 1990 James Clark (jjc at jclark) + + * troff/groff.h: Remove MAX_PATH. + * troff/input.c (open_file): Dynamically allocate space for the + path. + (open_mac_file, process_macro_file): Corresponding changes. + +Sun Sep 23 18:56:26 1990 James Clark (jjc at jclark) + + * troff/node.h (class output_file): Make copy_file pure. Add + vspace method ifdef COLUMN. Add is_printing method. + * troff/node.c: Add class printing_reg. Add class + real_output_file. Derive other output_file classes from + real_output_file; in these classes rename begin_page to + really_begin_page, print_line to really_print_line, copy_file to + really_copy_file, transparent_char to really_transparent_char. + Move output_file::flush to real_output_file. Add printing member + to class output_file. + * troff/div.h: Remove printing member from top_level_diversion. + Add vspace member function to class diversion ifdef COLUMN. Add + some declarations ifdef COLUMN. + * troff/div.c (top_level_diversion::copy_file, + top_level_diversion::transparent_output, + top_level_diversion::output): Don't test printing member before + output. + * troff/input.c: Handle initial variable_space_request ifdef + COLUMN. + * troff/Makefile: Add column.c but comment it out. Add -DCOLUMN + but comment it out. + +Sat Sep 22 11:32:22 1990 James Clark (jjc at jclark) + + * troff/div.c (diversion::need): Make any space forced. If we + sprung a trap, set truncated_space to minus the distance to the + trap and set needed_space to the amount that was needed. + (top_level_diversion::space): A forced space turns no_space_mode + off. + (class constant_vunits_reg): New class. + (init_div_requests): Implement number registers .trunc and .ne + using constant_vunits_reg. + (class truncated_space_reg): Deleted. + + * troff/div.h: Don't have a no_space_mode member in diversion. + Instead have it in top_level_diversion. + * troff/div.c (diversion::diversion): Don't initialize + no_space_mode. + (top_level_diversion::top_level_diversion): Initialize + no_space_mode. + (no_space, restore_spacing): Do nothing if curdiv != topdiv. + (macro_diversion::output): Don't clear no_space_mode. + + * troff/input.c (diverted_space_node::reread): Don't call + environment::do_break. In fill mode, act like a blank line. + (diverted_copy_file_node::reread): Don't call + environment::do_break. + + * troff/div.c (blank_line): New function. + * troff/div.h: Declare it. + * troff/input.c (process_input_stack): Call it. + + * troff/div.c (truncated_space_reg::get_string): New function. + (init_div_requests): Bind to .trunc. + (space_request, top_level_diversion::space, + top_level_diversion::output, macro_diversion::space, + macro_diversion::output): Update truncated_space. + (macro_diversion::output): Redo calculations when trap sprung. + (macro_diversion::output, macro_diversion::space): No need for + trap_flag. + + * troff/div.c (top_level_diversion::output): Set nl_reg_contents + after truncating post line spacing. + +Fri Sep 21 11:27:25 1990 James Clark (jjc at jclark) + + * ps/devps/prologue (MF, SF): Make them work even if setfont is + defined as a procedure rather than as an operator. + +Thu Sep 20 12:55:05 1990 James Clark (jjc at jclark) + + * troff/div.c (macro_diversion::space): Ignore no_space_mode. + +Wed Sep 19 10:54:37 1990 James Clark (jjc at jclark) + + * troff/div.c (top_level_diversion::output): Merge + output_file::print_line and output_file::end_of_line member + functions. + * troff/div.h (class output_file): + * troff/node.c (troff_output_file::print_line, + troff_output_file::end_of_line, output_file::end_of_line, + ascii_output_file::print_line, suppress_output_file::print_line): + Corresponding changes. + +Tue Sep 18 11:31:47 1990 James Clark (jjc at jclark) + + * troff/input.c (token::next): Don't give a warning for `\.'. + + * troff/env.c (environment::get_center_lines): New function. + (init_env_requests): Bind number register .ce to it. + * troff/env.h: Declare it. + * tbl/table.c (table::init_output): Define reset macro to restore + .ce. If center option not given, store .ce in SAVED_CENTER_REG. + Then do .ce 0. + (table::print): If center option not given, then imply center + option if SAVED_CENTER_REG > 0. + +Mon Sep 17 09:19:19 1990 James Clark (jjc at jclark) + + * ps/devps/Makefile: Remove T from FONTS. Remove TSymbol.ps and + Troff.ps from DOWNLOAD. + + * troff/Makefile: Change comment in DEFINES to avoid confusing + System V make. + + * ps/ps.c (ps_printer::do_exec): Allow newlines within PostScript + code. Don't try to catch errors with stopped. + (check_line_lengths): New function. + * ps/devps/prologue (EXEC): Deleted. + (EBEGIN, EEND): New procedures. + +Sun Sep 16 14:51:15 1990 James Clark (jjc at jclark) + + * troff/input.c: Include request.h before node.h. + * troff/node.c: Likewise. + * troff/env.c: Likewise. + * troff/div.c: Likewise. + * troff/node.h (class special_node): Store argument as a macro + rather than a char *. + * troff/node.c (special_node::special_node, special_node::copy): + Grok this. + (special_node::~special_node): Deleted. + (special_node::tprint): Deleted. + (special_node::tprint_start, special_node::tprint_end, + special_node::tprint_char): New functions. + (troff_output_file::special): Deleted. + (troff_output_file::start_special, troff_output_file::end_special, + troff_output_file::special_char): New functions. + * troff/input.c (special_node::tprint): New function. + (do_special): Use macro not char *. + (do_transparent_macro): Deleted. + (token::next): Don't call do_transparent_macro. + + * troff/input.c (token::next): Add 'Y' case. + (do_transparent_macro): New function. + * troff/node.c (troff_output_file::special): Handle newlines with + argument using new continuation convention. + * driver/input.c (get_string): Cope with continuation convention. + (do_file): Don't call skip_line after calling get_string(1). + * ps/ps.c (ps_printer::special, ps_printer::do_import, + ps_printer::do_def, ps_printer::do_exec): Cope with newlines in + arg. + * xditview/libXdvi/parse.c (ParseInput): Ignore lines starting + with +. + +Sat Sep 15 19:00:10 1990 James Clark (jjc at jclark) + + * troff/input.c (asciify): By default, invalid input characters + should return empty string. + + * troff/input.c (copy_file): Handle first page transition like title. + (token::next, process_input_stack): Grok COPY_FILE_REQUEST. + + * troff/input.c (token::next): Improve error message for EOF after + escape character. + (input_char_description): New function. + (get_char_for_escape_name): Use input_char_description. + (token::next): Warn about unrecognized escape sequences. + (warning_table): Add WARN_ESCAPE. + * troff/groff.h: Declare WARN_ESCAPE. Change WARN_TOTAL + accordingly. + + * troff/token.h: Remove declaration of process_input_stack. + + * troff/input.c: Remove declaration of init_hyphen_requests. + * troff/request.h: Correct spelling in declaration of same. + + * troff/input.c (token::next): Check whether escape_char is 0. + +Fri Sep 14 12:09:25 1990 James Clark (jjc at jclark) + + * groff.c (main, usage, help): Implement -P and -L options. + * groff.sh: Likewise. + + * troff/input.c (token::next): Use some gotos to avoid code + duplication. + + * troff/input.c (get_long_name, get_name, read_long_ecsape_name): + Avoid calling symbol::symbol if name empty. + +Thu Sep 13 06:21:45 1990 James Clark (jjc at jclark) + + * troff/input.c (init_input_requests): Make \n(.x return the major + version number and \n(.y return the minor version number. + * troff/Makefile: Construct file majorminor.c defining + major_version and minor_version automatically from ../VERSION. + + * troff/node.c (class glyph_node): Make operator new and operator + delete public. + (class ligature_node): Similarly. + + * troff/input.c (operator==(const macro &, const macro &)): New + function. + (non_interpreted_node::same): Use this. + (string_iterator::string_iterator): Make macro& argument const. + + * troff/input.c (input_iterator::get): New function. Don't make + asciify_macro or class non_interpreted_node friends of class + input_iterator. + (non_interpreted_node::interpret): Use input_iterator::get. + (asciify_macro): Likewise. + + * troff/input.c (~token_node, ~string_iterator, ~arg_list, + ~non_interpreted_node): Deleted. + * troff/node.c: (~suppress_output_file, ~ascii_output_file): + Deleted. + + * troff/symbol.h: Make all symbol member functions const. + + * lib/strtol.c: New file. + * lib/Makefile: Add strtol.c. + * Makefile: Define STRTOL as strtol.o to include strtol in + libgroff.a. + +Wed Sep 12 10:00:49 1990 James Clark (jjc at jclark) + + * pic/troff.c (troff_output::simple_circle): Divide by scale. + +Tue Sep 11 14:17:16 1990 James Clark (jjc at jclark) + + * troff/input.c (do_special): Use input_level. + + * troff/token.h (TOKEN_BACKSPACE): New token. + (token::backspace): New function. + * troff/input.c (token::description, token::next, token::process): + Grok TOKEN_BACKSPACE. + (do_special): Turn TOKEN_BACKSPACE back into \b. + + * troff/token.h (token::leader): New function. + * troff/input.c (do_special): Turn TOKEN_LEADER back into \001. + + * troff/input.c (do_special): Turn TOKEN_TAB back into \t. + + * troff/input.c (do_special): Use token::description in error + message. + +Mon Sep 10 11:06:27 1990 James Clark (jjc at jclark) + + * troff/input.c (decode_args): Combine quoted and + quote_input_level variables. Make it a for (;;) loop. + + * troff/input.c (get_char_for_escape_name): Check for \001 and \b. + + * troff/input.c (read_long_escape_name): The test for whether to + expand buffer was off by 1. + (read_string): Similarly. + +Fri Sep 7 11:45:50 1990 James Clark (jjc at jclark) + + * troff/input.c: Use `const int' rather than `static const int'. + + * troff/div.h (diversion::copy_file): Declare as pure virtual. + (macro_diversion::copy_file): New function. + * troff/node.h: New class diverted_copy_file_node. + * troff/node.c: Implement it. + * troff/input.c (copy_file): Use diversion::copy_file. Handle + first page transition by pushing a diverted_copy_file_node. + * troff/input.c (token::next, process_input_stack): Don't handle + COPY_FILE_REQUEST. + +Thu Sep 6 13:29:10 1990 James Clark (jjc at jclark) + + * ps/ps.c (flush_sbuf): Remember to add sbuf_kern when checking + whether space widths need adjusting. + + * troff/charinfo.h: Generalize translated_to_space to + special_translation so as to allow translation to \&. + * troff/input.c (translate): Allow translation to \&. + (charinfo::*): Corresponding changes. + * troff/node.c (make_node, node::add_char): Corresponding changes. + * troff/node.h (dummy_node::dummy_node): Allow optional first + argument. + + * lib/lib.h: Make codes 0200 to 0237 invalid input characters. + * troff/token.h: Remove TOKEN_TITLE. Remove token::title. Add + TOKEN_REQUEST. + * troff/input.c (token::next): Turn a TITLE_REQUEST into a + TOKEN_REQUEST with an argument of TITLE_REQUEST. + (token::process): Grok that. + * troff/input.c (copy_file): Handle first page transition like + title by pushing a COPY_FILE_REQUEST cookie. + (token::next, process_input_stack): Grok that. + * troff/node.h (output_file::copy_file): Add x and y arguments. + Make it non-pure. + * troff/div.c (top_level_diversion::copy_file): Supply them. + * troff/node.c (troff_output_file::copy_file): Add x and y + arguments; moveto specified position. Invalidate font_position + array after copying file. + (output_file::copy_file): New function. + (suppressed_output_file::copy_file, ascii_output::copy_file): + Removed. + * troff/input.c (transparent_file): New function. + (init_input_requests): Bind to "trf". + (token::next): Handle TRANSPARENT_FILE_REQUEST cookie. + (process_input_stack): Likewise. + + * troff/Makefile: Add ../lib/lib.h to GROFF_H. + + * troff/node.c (init_node_requests): New number registers .kern + pointing to global_kern_mode, and .lg pointing to + global_ligature_mode. + + * troff/node.c (ligature): Don't change it if we get a bad + integer. + + * troff/input.c (do_define_string): Don't strip tabs. + + * troff/input.c (asciify_macro): Make the string_iterator auto. + + * troff/node.c (init_font_requests): Rename to... + (init_node_requests): + * troff/node.h: Change declaration. + * troff/input.c (main): Change call. + + * troff/input.c (node::reread, diverted_space_node::reread): New + methods. + (process_input_stack): Call reread rather than + get_diverted_space_node. + * troff/node.c (node::get_diverted_space_node, + diverted_space_node::get_diverted_space_node): Removed. + * troff/node.h: Declare reread methods instead of + get_diverted_space_node methods. Make `n' member private. + * troff/input.c: (token::diverted_space): Removed. + * troff/token.h: Removed declaration. + + +Tue Sep 4 00:48:04 1990 James Clark (jjc at jclark) + + * eqn/script.c (script_box::compute_metrics): Don't let + SUP_RAISE_FORMAT become negative. + + * tbl/table.c (table::do_row): Entries that don't end in the + this row shouldn't make the row non-blank. + + * tbl/table.c (table::make_columns_equal): Only set the width of + columns which are marked as equal. + + * tbl/main.c (process_data): Before issuing excess data error, + if last character was a newline unget it; then get it again after + the error. Also include the contents of the entry in the message. + + * groff.c: New file. + * Makefile: Build groff from groff.c. Make it possible to use + either groff.sh or groff.c as groff. + * Makefile.bd: Similarly. + +Mon Sep 3 09:39:49 1990 James Clark (jjc at jclark) + + * groff.sh: Don't delay expansion of $@ in assignment to files. + Remove occurrences of \". + +Sun Sep 2 09:56:59 1990 James Clark (jjc at jclark) + + * all Makefiles: Simplify and rearrange. + + * Makefile: Handle fmod like malloc. + * lib/Makefile: Similarly. + * lib/fmod.c: Remove #ifdef NEED_FMOD. + + * Makefile: Rename OPTIMISE to OPTIMIZE. + + * groff.sh: Remove assignment to PATH. + * Makefile: Remove SHPATH variable. + * Makefile.bd: Similarly. + + * groff.sh: Add -V option to print the pipeline instead of + executing it. + +Fri Aug 31 00:56:46 1990 James Clark (jjc at jclark) + + * lib/font.c: Split off file searching into ... + * lib/fontfile.c: New file. + + * lib/strerror.c (strerror): Use `Error %d' for unknown errors. + +Thu Aug 30 13:13:55 1990 James Clark (jjc at jclark) + + * tbl/table.c (table::do_hspan): Delete assertion that e != 0. + Also change misleading comment. + (table::do_vspan): Change similarly misleading comment. + * tbl/main.c (process_data): A format row with an explicit `s' + uses up a data line, even if all the other columns are `_' or `='. + + * troff/input.c (token::description): Fix description of + TOKEN_DUMMY and TOKEN_EMPTY. + +Wed Aug 29 04:12:08 1990 James Clark (jjc at jclark) + + * groff.sh: Fix description of -Z in help message. + +Tue Aug 28 07:28:33 1990 James Clark (jjc at jclark) + + * pic/object.c (object_spec::make_object): Allow negative and zero + line thicknesses. + * pic/pic.y: Give linethick default value of -1.0. + * pic/troff.c (troff_output::troff_output): Initialize + last_line_thickness to BAD_THICKNESS. + (troff_output::finish_picture): Set thickness to BAD_THICKNESS. + (troff_output::line_thickness): Canonicalize negative thicknesses + to RELATIVE_THICKNESS. + * pic/tex.c (tex_output::set_pen_size): Silently map negative line + thicknesses to DEFAULT_PEN_SIZE. Canonicalize negative pen sizes + to -1.0. + (tex_output::start_picture): Set pen_size to -2.0. + + * ps/ps.c (ps_printer::set_line_thickness): If line_thickness is + 0, then use 0 linewidth. + (ps_printer::ps_printer): Initialize line_thickness to -1. + + * pic/troff.c (troff_output::simple_ellipse): Divide by scale. + + * ps/devps/symbolchars: Remove `or'. + * ps/tmac.ps: Implement \(or with .char. + + * ps/devps/symbolchars: Move most characters into textmap. + * ps/devps/textmap: Add names for troff bracket characters. Remove + ul, ru, br, bv. + + * ps/devps/TSymbol.ps: Removed. + * ps/devps/FontMakefile: Make S from Symbol not TSymbol. + * ps/tmac.ps: Do with .char what TSymbol did. + * ps/devps/download: Remove TSymbol. + + * ps/devps/T: Removed. + * ps/devps/Troff.ps: Removed. + * ps/devps/Troff.afm: Removed. + * ps/tmac.ps: Implement \(ru, \(ul, and \(br with .char. + * ps/devps/download: Remove Troff. + * ps/devps/FontMakefile: Remove T target. + * ps/devps/DESC-A4: Remove T from font list. + * ps/devps/DESC-letter: Likewise. + + * troff/input.c (macro_to_node): Rename to ... + (charinfo_to_node): Don't pass mac argument. Temporarily remove the + character's definition while processing it. + * troff/node.c (node::add_char, make_node): Change calls to + macro_to_node accordingly. + + * troff/input.c (token::next): Translate \_ to \(ul. + + * tty/devascii/R.proto: Add `|'. + * tty/devlatin1/R.proto: Likewise. + +Mon Aug 27 11:25:41 1990 James Clark (jjc at jclark) + + * man: Put the version number in all the man pages. + +Sun Aug 26 11:40:05 1990 James Clark (jjc at jclark) + + * Makefile.bd: New file. + * README.bd: New file. + + * VERSION: New file. + * lib/version.c: Removed. + * lib/Makefile: Create version.c from ../VERSION. Remove version.c + in clean target. + + * troff/input.c (main): Get hyphen_file from GROFF_HYPHEN + environment variable. + + * all Makefiles: Split install target into install.bin for + binaries, and install.nobin for everything else. + * Makefile: Add bindist target. + + * man/afmtodit.man: New file. + * man/Makefile: Add afmtodit.n to MAN1PAGES. + * ps/devps/Makefile: Add textmap to DEVICEFILES. Install afmtodit + in BINDIR. + * ps/Makefile: Pass BINDIR to make install in devps. + + * ps/ps.c (ps_printer::set_char): Do nothing if the character is + the space character. + + * ps/devps/FontMakefile: Rename symbol.afm to tsymbol.afm. + +Sat Aug 25 15:39:03 1990 James Clark (jjc at jclark) + + * ps/ps.c: Redo font downloading. + * ps/devps/download: New file. + * ps/devps/Makefile: Add download to DEVICEFILES. + * ps/devps/afmtodit: Remove -d option. + * ps/devps/FontMakefile: Don't use -d option with afmtodit. + * ps/devps/symbosl.ps: Add %%DocumentFonts comment. + * ps/devps/zapfdr.ps: Likewise. + * ps/devps/TSymbol.ps: Likewise. + +Fri Aug 24 20:10:30 1990 James Clark (jjc at jclark) + + * groff.sh: Initialize dev to ${GROFF_TYPESETTER:-@DEVICE@}. + +Thu Aug 23 10:03:47 1990 James Clark (jjc at yquem) + + * ps/ps.c (ps_output::include_file): If BROKEN_SPOOLER is defined, + then strip the first line if it starts with %. + * Makefile: Add a comment about this. + + * man/tfmtodit.man: New file. + * man/Makefile: Add tfmtodit.n to MAN1PAGES. + * dvi/Makefile: Install tfmtodit in BINDIR. + + * dvi/tfmtodit.c (usage): Mention -v option. + +Wed Aug 22 09:56:36 1990 James Clark (jjc at yquem) + + * troff/node.c (troff_output_file::end_of_line): Call do_motion. + * troff/node.c (troff_output_file::transparent_char): Don't call + flush_tbuf. + + * eqn: Add check_tabs method to most box classes. + * eqn/box.c (box::top_level): Call check_tabs. + + * eqn/script.c (script_box::output): Use \Z. + * eqn/limit.c (limit_box::output): Use \Z. + + * eqn/box.c (box::top_level): Use itoa. + +Tue Aug 21 09:29:28 1990 James Clark (jjc at yquem) + + * dvi/tmac.dvi: Add font translations for CR, C, TT. + * dvi/devdvi/Makefile: Don't make links to CW. + + * ps/tmac.ps: Add font translations for C, CW, CO, CX, CD, H, HO, + HX, HD. + * xditview/tmac.X: Likewise. + + * troff/node.c: Add font translation feature. + (get_font_translation): New function. + (symbol_fontno): Translate the font name. + (mount_font_no_translate): Rename to mount_font to this. + (mount_font): New function. + (font_family::make_definite): Call mount_font_no_translate instead + of mount_font. + (mount_style): Translate the font name. + (font_translate): New function. + (init_font_requests): Bind "ftr" to font_translate. + + * ps/devps/prologue (SN): New procedure that rounds a position to + the nearest (pixel + (.25,.25)). + (DL): Use SN to round endpoints. + + * lib/version.c: Changed version to 0.5. + +Sat Aug 18 04:43:21 1990 James Clark (jjc at yquem) + + * Makefile: Move definition of PAGE to the very beginning, so that + people are less likely to miss it. + +Fri Aug 17 02:15:11 1990 James Clark (jjc at yquem) + + * man/Makefile: Don't need to sed out @UPCASE_PROG_PREFIX@. + + * troff/env.c (environment::choose_breakpoint): Make `can't find + breakpoint' error a warning of type WARN_BREAK. Change message to + `can't break line'. + * troff/groff.h: Declare WARN_BREAK with code 4; change WARN_INPUT to + code 040000. + * troff/input.c: Add WARN_BREAK to warning_table. Include + WARN_BREAK in DEFAULT_WARNING_MASK. + + * tty/tmac.tty: Add definition of \(+-. + + * groff.sh: Remove `--' option to set command. + + * dvi/devdvi/texsy.map: Remove duplicate md entry. + + * ps/devps/eqnchar: Better definition of cdot using md. + * dvi/devdvi/eqnchar: Likewise. + * xditview/devX100/eqnchar: Likewise. + * xditview/devX75/eqnchar: Likewise. + * eqn/lex.c: Add definition of cdot. + +Thu Aug 16 09:33:57 1990 James Clark (jjc at yquem) + + * troff/input.c (get_optional_char): New function. + * troff/input.c (set_page_character): Use get_optional_char(), + rather than has_arg() and tok.get_char(1). + * troff/env.c (tab_character, leader_character, hyphen_char, + field_characters): Likewise. + (margin_character): Likewise. Also always delete the + margin_character_node. + + * troff/input.c (token::get_char): Use token::description. + + * troff/input.c (has_arg): Don't skip over tab and \}. + * troff/number.c (start_number): Give a warning if the number + starts with \} (WARN_RIGHT_BRACE) or tab (WARN_TAB). + +Wed Aug 15 10:04:37 1990 James Clark (jjc at yquem) + + * troff/input.c (empty_name_warning, non_empty_name_warning): New + functions. + (get_name, get_long_name): Use these. Rename `warn' argument to + `required'. + + * troff/node.c (get_fontno): Test that the symbol is not null. + + * troff/input.c (token::description): New function. + * troff/number.c (parse_term): Use token::description in `numeric + expression expected' message. + * troff/groff.h: Add WARN_MISSING. + * troff/number.c (start_number): New function. + * troff/number.c (get_vunits, get_hunits, get_number, get_integer, + get_incr_number): Use start_number(). + * troff/input.c (DEFAULT_WARNING_MASK): Enable WARN_NUMBER by + default. + * troff/input.c (get_name, get_long_name): Use WARN_MISSING. + * troff/reg.c (alter_format): Use WARN_MISSING. Also use + token::descripion. + * troff/input.c (token::get_char): Use WARN_MISSING. + * troff/input.c (token::delimiter): Use token::description. + * troff/env.c (environment_switch): Back out Aug 3 change. + * troff/input.c (has_arg): Skip over \}s and tabs but give a + warning. + * troff/token.h (token::tab): New function. + * troff/node.c (get_fontno): Use tok.skip() rather than has_arg(). + * troff/reg.c (alter_format): Likewise. + * troff/node.c (bold_font): Use has_arg() rather than tok.skip(). + +Tue Aug 14 10:11:21 1990 James Clark (jjc at yquem) + + * troff (most files): Redo warnings. Divide warnings into various + categories; warning() has an additional first argument indicating + the category it falls into. + * troff/input.c (main): -w now takes an argument. New option -W. + (enable_warning, disable_warning): New functions. + + * ps/devps/afmtodit: Add -a option to lie about the italic angle. + * ps/devps/FontMakefile: Pretend TI has an angle of 7. + +Mon Aug 13 10:11:16 1990 James Clark (jjc at yquem) + + * ps/devps/eqnchar: Better definitions of dotdot, vec, dyad, inf. + * xditview/devX100/eqnchar: Likewise. Remove definition of dot. + * xditview/devX75/eqnchar: Likewise. + * dvi/devdvi/eqnchar: Better definitions of vec, dyad, dotdot. + + * eqn/other.c: When bar or over applies to a single character + don't produce an overline_box or an underline_box. Instead produce + an accent_box or an underaccent_box, with the accent a line + whose width is accent_width. New classes underaccent_box, + overline_char_box and underline_char_box. + * eqn/box.h: Move overline_box, underline_box, accent_box class + declarations into eqn/other.c. Add declarations of + make_underline_box, make_overline_box, make_accent_box. + * eqn/eqn.y: Call make_overline_box, make_underline_box + make_accent_box instead of constructors. + * eqn/pbox.h, eqn/box.c: Add accent_width parameter. + + * eqn/other.c: Add accent_box::~accent_box. + * eqn/box.h: Declare it. + + * groff.sh: With -Tps, use eqn -D. + + * eqn/other.c (overline_box::output): Use \Z. If draw_flag use \D + rather than \l. + (underline_box::output): Similarly. + (accent_box::output): Use \Z. + + * xditview/tmac.X: Add definitions of ~ and ^ (so that they are a + bit smaller.) + +Sun Aug 12 09:41:15 1990 James Clark (jjc at yquem) + + * troff/div.c (top_level_diversion::transparent_output(unsigned + char)): Use asciify. + * troff/input.c (asciify): Don't make it static. + * troff/token.h (asciify): Declare it. + + * troff/input.c (get_name, get_long_name, token::get_char, + token::delimiter): Add an extra default argument which says + whether a warning should be printed. + * troff: Pass a non-zero argument to one of these rather than + printing a warning directly. + +Sat Aug 11 09:02:21 1990 James Clark (jjc at yquem) + + * troff: Consistently use symbol::is_null. + + * troff/dictionary.h: Move some inline functions into + dictionary.c. + + * troff/request.h: Move inline functions into input.c. + (request_or_macro::invoke): Make it pure. + + * troff/input.c, troff/reg.h: New class `constant_int_reg'. + * troff/input.c (init_input_requests): Use class constant_int_reg. + (class compatible_reg): Deleted. + * troff/div.c (init_div_requests): Use class constant_int_reg. + (class last_post_line_extra_space_reg): Deleted. + + * troff/env.c (tab_character): Don't change the tab character if + we get an invalid argument. + (hyphen_char): Similarly. + + * troff/reg.c (alter_format): Check that nm is not null. + + * Makefile, groff.sh: Make it possible to customize the commands + used for printing PostScript and dvi files. Also make it possible + to customize the path used by groff.sh. + + * eqn/eqn.y: Make `left' right associative. + +Fri Aug 10 18:20:39 1990 James Clark (jjc at yquem) + + * pic/pic.h: Added definition of M_SQRT2 for those systems that + don't have it. + + * pic/pic.h: Removed definition of INT_MAX. + + * troff/node.c (italic_corrected_node::vertical_extent): Omit + `return'. + + * troff/input.c (token::next): Handle \R like \n. + +Tue Aug 7 09:46:33 1990 James Clark (jjc at yquem) + + * ps/tmac.pc (PSPIC): Simplify. + + * troff/env.c (tab_stops::to_string): + * pic/pic.y (object_type_name): + * pic/troff.c (simple_output::line): + * pic/tex.c (tex_output::spline): + * pic/object.c (object_spec::make_object): + * tbl/main.c (process_data): Add cases to switch statements to + avoid cfront warnings. (Some of these are spurious, since the + switch already has a default case.) + + * ps/tmac.ps (PSPIC): Reformatted. Prefix all local names with + `ps-'. Don't test systat; instead check number of arguments to + ps-bb. + +Mon Aug 6 00:13:07 1990 James Clark (jjc at yquem) + + * macros/tmac.e: Do not decrease the page offset by 0.5i. + + * ps/ps.c (ps_printer::ps_printer): Use mktemp instead of tempnam. + Unlink the file as soon as we have opened it, so that we don't + have to bother with signal handlers. + (handler): Deleted. + (fatal_error_exit): Deleted. + (main): Don't call signal. + + * dvi/tfmtodit.c: Add -k option so that kerns with the skewchar + can be ignored. + * dvi/devdvi/Makefile: Use the -k option with S and MI. + + * pic/pic.y: If there is a label, or an nth construction before + the first `.' in the argument to `with', ignore it and generate a + warning. + * pic/lex.c (lex_warning): New function. + + * tbl/table.c (table::init_output): In section keep and release + macro, use 0 indent when diverting and the correct indent when + rereading. + + * troff/input.c (interpolate_number_format): Do not interpolate + anything if the number register is not defined. + + * tbl/main.c (process_data): Don't add entry when col >= ncolumns. + +Sat Aug 4 08:12:05 1990 James Clark (jjc at yquem) + + * ps/devps/prologue (PICTURE): Set components of graphics state to + their default values. + + * ps/devps/text.enc: Add trademark + * ps/devps/textmap: Add names for club, spade, heart, diamond, + carriagereturn, suchthat. Use Upsilon1 rather than Upsilon. + * ps/devps/symbolchars: Add names for summation and product. + + * dvi/devdvi/texsy.map: Add names for club, spade, heart, diamond, + suchthat. Add pp. Add upper-case letters. + + * xditview/libXdvi/DviChar.c: Add names for club, spade, heart, + diamond, carriagereturn, suchthat. Use Upsilon1 rather than + Upsilon. + + * dvi/devdvi/texsy.map: Rename lA (left angle bracket) to la, and + rA (right angle bracket) to ra. Introduce names for double-headed + arrows and double-barred arrows: <>, va, lA, rA, hA, uA, dA, vA. + * ps/devps/textmap: Likewise for ps device. + * xditview/libXdvi/DviChar.c: Likewise for X100 and X75 devices. + * tty/devascii/R.proto: Rename lA to la and rA to ra. + * tty/devascii/R.proto: Likewise. + * tty/tmac.tty: Provide definitions for \(<>, \(lA, \(rA, \(hA, + \(uA, \(dA. + * eqn/delim.c: In delim_table, rename \(lA to \(la and \(rA to \(ra. + + * xditview/tmac.X: Add definitions for \(fi \(fl \(ff \(Fi \(Fl. + + * eqn/lex.c: Added definitions of `approx', `grad' and `del' to + def_table. + +Fri Aug 3 09:59:27 1990 James Clark (jjc at yquem) + + * troff/div.c (when_request): Use symbol::is_null rather than + has_arg to determine whether we have an argument. + (change_trap): Remove the trap if we get an invalid number. Give + an error if we don't get at least the macro name. + (diversion_trap): Remove trap if we get an invalid name or number. + + * troff/env.c (environment_switch): Pop if we get an invalid + symbol or numeric expression. + + * troff/input.c (do_define_macro): If EOF is encountered while + defining the macro, do tok.next() before returning. + + * troff/token.h (has_arg): Move definition from here, to ... + * troff/input.c (has_arg): ... here + + * troff/env.c (space_size): Do nothing if we get an invalid argument. + * troff/input.c (shift): Likewise. + + * pic/lex.c (get_token_after_dot): Accept `.center' as a synonym + for `.c'. + + * pic/troff.c (troff_output::start_picture): Comment out calls to + `..'. + + * eqn/main.c (do_file): Subtract 1 from current_lineno if + interpret_lf_args succeeds. + + * eqn/main.c (do_file): Don't recognize delimiter if preceded by + \\. This avoids problems with \$N. + + * groff.sh: Pass -C to preprocessors. + + * lib/lf.c (interpret_lf_args): Be more flexible. + + * tbl/main.c (main): Add -C option. + (table_input::get): Do not recognize TE if followed by character + other than a space or newline unless -C option given. + (process_input_file): Likewise for lf, TS. + (process_data): Likewise for lf in text blocks. + + * eqn/main.c (main): Add -C option. + (do_file): Don't recognize EQ, EN or lf if followed by character + other than space or newline unless -C option given. + * eqn/lex.c (file_input::read_line): Similarly. + * eqn/eqn.h: Declare compatible_flag. + + * etc/soelim.c (main): Add -C option. + (interpret_lf_args): Use version in libgroff. + (do_file): + + * pic/main.c (main): Add -C option, which sets compatible_flag. + (top_input::get), (top_input::peek): If -C option not given, + do not recognize .PS/.PE/.PF/.lf if followed by a character + other than space or newline. + * pic/lex.c (file_input::read_line): Similarly. + * pic/pic.h: Add declaration of compatible_flag. + +Thu Aug 2 11:11:27 1990 James Clark (jjc at yquem) + + * ps/tmac.ps (PSPIC): Avoid use of `echo -n'. + + * troff/node.c, troff/node.h: Add `asciify' methods to classes + derived from node. New class space_char_hmotion_node. + * troff/input.c (asciify_macro): New function. + * troff/input.c (init_input_requests): New request `asciify' bound + to asciify_macro. + * macros/mm.diff: New file. + * Makefile: In install.mm target use `patch' to apply + macros/mm.diff. + + * troff/input.c (macro::print_size): Just print the size in bytes. + + * troff/div.c (return_request): Correct the argument + interpretation. + +Wed Aug 1 12:38:36 1990 James Clark (jjc at yquem) + + * troff/node.h (class composite_node): Add sz member. + * troff/node.c (composite_node::size): Return sz. + * troff/input.c (macro_to_node): Use the initial size in the + environment as the size of the composite_node. + + * troff/node.c (node::zero_width_tprint): Provide a reasonable + default. + +Tue Jul 31 10:07:10 1990 James Clark (jjc at yquem) + + * troff/div.c (change_trap): If we get a bad number expression, + do nothing. + +Mon Jul 30 10:30:49 1990 James Clark (jjc at yquem) + + * lib/matherr.c (matherr): Define this only if math.h defines + TLOSS. + +Sun Jul 29 10:34:27 1990 James Clark (jjc at yquem) + + * troff/div.c (macro_diversion::distance_to_next_trap): If there + no diversion trap return vunits(INT_MAX - vresolution). + +Sat Jul 28 14:28:14 1990 James Clark (jjc at yquem) + + * troff/input.c (do_zero_width): New implementation that doesn't + use a temporary environment. Use instead: + (token::add_to_node_list): New function. + * troff/env.c (environment::get_prev_char_height), + (environment::get_prev_char_height), + (environment::get_prev_char_skew): New functions. + (environment::get_prev_char): New function. + (environment::get_prev_char_width): Change to use get_prev_char. + (init_env_request): Implement new registers .cht, .cdp, .csk. + * eqn/sqrt.c (sqrt_box::output): Don't rely upon the argument to + \Z being processed in a separate environment. + +Fri Jul 27 10:21:25 1990 James Clark (jjc at yquem) + + * tbl/table.c: Removed TABLE_BOTTOM_REG. + + * tbl/table.c (table::init_output): In the section release macro, + give a warning message if the section won't fit on one page. + + * tbl/table.c (table::do_top): Emit table keep only if table is + boxed. + (table::do_bottom): Likewise for table release. + (table::table), (table::add_vertical_rule): Remove reference to + keep member. + * tbl/table.h: Remove keep member. + + * tbl/table.c: New register SUPPRESS_BOTTOM_REG. In + SECTION_RELEASE_MACRO, if there's not enough space before the next + trap to output the diversion, call T# ourselves, set + SUPPRESS_BOTTOM_REG to 1, spring the trap, then set + SUPPRESS_BOTTOM_REG back to 0. In T#, do nothing if + SUPPRESS_BOTTOM_REG is non-zero. In T#, always mark the current + vertical position and return to it before turning traps on again. + +Thu Jul 26 02:54:32 1990 James Clark (jjc at yquem) + + * troff/node.c, troff/node.h: In classes derived from node, + replace prev_char_width method by last_char_node method. + * troff/env.c (environment::get_prev_char_width): Use + node::last_char_node rather than node::get_prev_char_width. + + * Makefile: Added comment about -fno-inline on 68030-based + Apollos. + + * troff/reg.c (number_format_to_ascii), eqn/delim.c (DELIM_TABLE_SIZE), + tty/tty.c (tty_font::load_tty_font), dvi/tfmtodit.c (main): Cast + expressions using sizeof to int. + * dvi/dvi.c (dvi_font::handle_x_command): Avoid long->int warnings. + + * macros/tmac.e (TS): Don't move @f back past the current + position. + +Wed Jul 25 09:11:08 1990 James Clark (jjc at yquem) + + * ps/ps.c (main): Buffer stderr. + * dvi/dvi.c (main): Likewise. + * tty/tty.c (main): Likewise. + + * ps/ps.c (ps_printer::do_import): Improve error handling. + + * troff/input.c (abort_request): Use asciify. + + * driver/printer.h (printer::draw), driver/printer.c (printer::draw), + ps/ps.c (ps_printer::draw), dvi/dvi.c (dvi_printer::draw): Make + type of first argument int rather than char. This works around a + bug on the 68030 based Apollo using g++ 1.37.1. + + * tbl/table.h (class table): Add `keep' member. + * tbl/table.c (table::table): Initialize `keep'. + (table::add_vertical_rule): Set `keep' to 1. + (table::do_top): Only emit table keep macro is `keep' is non-zero. + (table::do_bottom): Likewise for table release macro. + (table::do_row): Emit section keep macro even if the row is 0. + +Tue Jul 24 08:35:07 1990 James Clark (jjc at yquem) + + * macros/tmac.e (@C): Preserve the font family across the change + in environments. + +Mon Jul 23 10:15:23 1990 James Clark (jjc at yquem) + + * lib/font.c: Initialize font::hor and font::vert to 1. + (font::load_desc): Check the values of font::hor and font::vert. + + * lib/lib.h: Added definition of INT_DIGITS. Fix it so that it can + be included in a C compilation. + (iftoa): Use INT_DIGITS. Include lib.h. + (itoa): Likewise. + (as_string): Likewise. + * tbl/table.c: Removed definition of INT_DIGITS. + * eqn/box.c (box::top_level): Use INT_DIGITS + 1 instead of 12. + * troff/input.c (input_input_requests): Likewise. + * ps/ps.c (make_encoding_name): Likewise. + (ps_printer::set_style): Likewise. + (ps_output::put_number): Use 1 + INT_DIGITS + 1 instead of 12. + + * tty/devascii/R.proto: Map fm onto '. + * tty/devlatin1/R.proto: Likewise. + +Sat Jul 21 12:45:07 1990 James Clark (jjc at yquem) + + * tbl/table.c: Use ' instead of DELIMITER_CHAR in places where the + argument to \w is at a different input level. + + * tbl/table.c (table::init_output): Define a new macro + REPEATED_VPT_MACRO, like vpt but if in a diversion also + transparently outputs itself. + (table::define_bottom_macro): Use REPEATED_VPT_MACRO instead of + vpt. + (table::do_row): Likewise. + + * tbl/table.c (vertical_rule::print): Prefix the .sp -1 line with + TRANSPARENT_STRING_NAME. + + * tbl/table.c (table::init_output): In the table release macro + print an error message and don't produce any output if after + issuing the need request the table still will not fit. Also + remove the diversion after bringing it back. + + * tbl/table.c (table::init_output): Define a new macro + REPEATED_MARK_MACRO, like mk but if in a diversion also + transparently outputs itself. + (table::do_row): Mark row_top_reg using REPEATED_MARK_MACRO. This + is necessary because .TH might not call .T#. + (table::do_top): Likewise TOP_REG. + (table::define_bottom_macro): If TOP_REG is no longer valid, use + #T - DOUBLE_LINE_SEP rather than #T. This is necessary because the + table header might contain just the two top rules. + +Fri Jul 20 10:51:42 1990 James Clark (jjc at yquem) + + * troff/div.c: Implement new request `ptr' to print all traps. + + * troff/env.c (init_env_requests): Implement `.tabs' reg with + init_string_env_reg. + * troff/env.c (class tab_reg): Deleted. + +Thu Jul 19 12:07:16 1990 James Clark (jjc at yquem) + + * troff/div.c: New number register .pn returns the number of the + next page as set by the pn request. + + * macros/tmac.an: Redid headers and footers. Number each manual + entry starting from 1 unless \nC is > 0, like Sun. Added an + optional 5th argument to .TH which specifies the manual name and + appears in the center of the header. Understand the X, P and D + registers like Sun. + +Wed Jul 18 10:23:31 1990 James Clark (jjc at yquem) + + * troff/env.c (init_env_requests): New number register `.lt' to + return the title length. + + * troff/node.h (class transparent_dummy_node): New class. + * troff/node.c (class transparent_dummy_node): Provide member + functions. + * troff/env.c (interrupt): Add a transparent_dummy_node, rather + than a dummy_node. + + * troff/input.c (token::next): New escape sequence \). + * troff/input.c (get_copy): Recognize \) in copy mode. + + * troff/input.c (input_stack::clear): New function. + * troff/input.c (exit_request): Use input_stack::clear. + + * troff/token.h: Removed TOKEN_NO_PRINT_CHAR. + * troff/input.c (token::process): Removed case TOKEN_NO_PRINT_CHAR. + + * troff/env.c: Move set_page_character to input.c. Move + page_character to input.c also. + * troff/env.c (title): Split off the reading of the parts of the + title into read_title_parts. + * troff/input.c (read_title_parts): New function. Check the + input_level when testing whether a token matches the delimiter. + + * troff/input.c (exit_request): New function. + * troff/input.c (init_input_requests): Bind ex request to + exit_request rather than exit_groff. + + * troff/input.c (exit_groff): Call tok.next() before + process_input_stack(). + +Mon Jul 16 09:47:23 1990 James Clark (jjc at yquem) + + * troff/env.c: ifdef widow control support on WIDOW_CONTROL. + * troff/env.h: ditto. + * troff/input.c: ditto. + + * troff/env.c (environment::is_empty): Test pending_lines. + + * troff/env.c (environment::have_pending_lines): Removed. + + * troff/input.c: Add request to flush pending lines from the + environment. + + * troff/env.c, troff/env.h: Add automatic widow control feature. + + * troff/input.c (exit_groff): Do process_input_stack() after + do_break() but before setting exit_flag to 2. + + * troff/input.c: Remove FLUSH_PENDING_LINES and + TOKEN_FLUSH_PENDING_LINES. Instead, flush pending lines from + environment after END_TRAP token seen, but only if there aren't + any more traps still unfinished. + * troff/token.h: Remove TOKEN_FLUSH_PENDING_LINES. + +Sun Jul 15 10:50:08 1990 James Clark (jjc at yquem) + + * troff/env.c: Rename the `retain_size' member of class + pending_output_line to `no_fill'. + + * troff/env.c (title): When the line is output, make the + retain_size argument !fill. + + * troff/node.h: Add `hyphenated' member to struct breakpoint. + * troff/node.c (space_node::get_breakpoints), + (dbreak_node::get_breakpoints): Fill this in. + * troff/env.c: Allow specification of maximum number of + consecutive hyphenated lines. + + * troff/env.c (environment::is_empty): Add test for !current_tab. + +Sat Jul 14 11:23:01 1990 James Clark (jjc at yquem) + + * troff/env.c (environment::hyphenate_line): Don't completely give + up if the word is not to be hyphenated; continue so that breaks + can be made at break_char_node's. + + * lib/lib.h: Only define INT_MAX if it's not already defined; + undef INT_MIN if it's already defined. + + * Makefile: Make it easy to define CFRONT_ANSI_BUG. + + * lib/lib.h: If CFRONT_ANSI_BUG is defined, cast INT_MIN to long. + This works around a bug in AT&T C++ 2.0 used with an ANSI C + compiler. + + * macros/tmac.an (an-header): Set no-space mode. + + * macros/tmac.an (TH): Start a new page if necessary. + + * Started using ChangeLog at version 0.4. + +Copyright 1990-1999 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. + +Local Variables: +fill-column: 72 +mode: change-log +version-control: never +End: +vim:set autoindent textwidth=72: diff --git a/ChangeLog.116 b/ChangeLog.116 new file mode 100644 index 0000000..85f26b7 --- /dev/null +++ b/ChangeLog.116 @@ -0,0 +1,1397 @@ + +Version 1.16.1 released +======================= + +2000-07-31 Werner LEMBERG <wl@gnu.org> + + Preparing release 1.16.1. + + * REVISION: Revision number set to 1. + * MORE.STUFF: Added info about port to DOS. + * NEWS, win32-diffs: Updated. + + * src/include/nonposix.h: Remove first line -- this file is used + in C also. + + * Makefile.in (dist): Delete Imakefile earlier to avoid a soft + link to it. + +2000-07-30 Werner LEMBERG <wl@gnu.org> + + * doc/texinfo.tex: Update to latest version. + +2000-06-28 Paul Eggert <eggert@twinsun.com> + + * Makefile.in (ENVSETUP): Don't assume POSIX make semantics for + commands that fail. Don't assume that "export a=b" is valid shell + syntax. This is needed for Solaris 2.5.1. + + * src/libs/libgroff/tmpfile.cc, src/utils/indxbib/indxbib.cc: Fix + comment about missing Solaris headers. + + * PROBLEMS: Add section about problems with Sun Make and VPATH. + +2000-06-25 Werner LEMBERG <wl@gnu.org> + + * src/devics/grodvi/dvi.cc: Replace _setmode() (for MSC) with + SET_BINARY(). + + * src/include/posix.h: Use HAVE_UNISTD instead of _MSC_VER. + + * win32-diffs: Updated. + * README.WIN32: Added CRs to make all Windows editors happy. + + * src/roff/troff/node.cc: Added WIFSIGNALED() macro (copied from + src/roff/groff/pipeline.c). + +2000-06-23 Eli Zaretskii <eliz@is.elta.co.il> + + * src/roff/grog/Makefile.sub (grog): Prepend `-e' to + $(SH_SCRIPT_SED_CMD), for the case where its value is empty. + +2000-06-17 Eli Zaretskii <eliz@is.elta.co.il> + + * src/utils/tfmtodit/tfmtodit.cc: #include nonposix.h. + (tfm::load, gf::load): Open tfm and gf files in binary mode: these + are binary files. + (main): Support non-Posix systems with several different styles of + slash characters in file names. + + * src/utils/pfbtops/pfbtops.c: #include nonposix.h. + (main) [SET_BINARY]: Switch stdin into binary mode. + + * src/utils/indxbib/indxbib.cc: #include nonposix.h. + (main): Support file names with several possible slash-type + characters, as given by DIR_SEPS[] in nonposix.h. + (main) [__MSDOS__]: If renaming the temporary index file fails + because it has more than one dot in its trunk, replace the dot + with an underscore and try again. + (do_file): Use FOPEN_RB instead of "r". Skip every CR before a + Newline. + [__MSDOS__ || _MSC_VER]: Stop at the first ^Z character. + + * src/utils/hpftodit/hpftodit.cc: #include nonposix.h. + (File::File): Open the input file in binary mode. Strip CR + characters from each CR-LF pair. + (xbasename): Support file names with several possible slash-type + characters, as given by DIR_SEPS[] in nonposix.h. + + * src/include/Makefile.sub (HDRS): Add nonposix.h. + + * src/roff/troff/node.cc [HAVE_UNISTD_H]: Include <unistd.h>. + (WIFEXITED, WEXITSTATUS, WTERMSIG, WIFSTOPPED, WSTOPSIG) + [!_POSIX_VERSION]: Define for traditional Unix systems. + (real_output_file::real_output_file): Remove the MSVC-specific + call to popen, use instead POPEN_WT, appropriately defined on + nonposix.h. #include nonposix.h. + (real_output_file::~real_output_file): Remove the MSVC-specific + call to pclose, a suitable macro is now defined on nonposix.h. + Use the portable macros WIFEXITED, WIFSIGNALED, WTERMSIG, WSTOPSIG + and WEXITSTATUS instead of assuming traditional Unix + interpretation of the status returned by pclose. + + * src/roff/troff/input.cc (pipe_source): Remove the MSVC-specific + call to popen, use POPEN_RT instead (appropriately defined on + nonposix.h). #include nonposix.h. + (ps_bbox_request): Open the PostScript file in binary mode. + Close the file after processing it. + (getpid) [_MSC_VER]: Remove; a suitable macro is now defined on + nonposix.h. + + * src/roff/groff/pipeline.c (run_pipeline) [__MSDOS__ || _WIN32]: + A version of run_pipeline that doesn't use `fork'. + (signal_catcher) [__MSDOS__ || _WIN32]: New function. + (system_shell_name, system_shell_dash_c) + (is_system_shell) [__MSDOS__ || _WIN32]: New functions, to hide + the ugliness of testing DOS/Windows file names for equality, and + support both stock shells and ports of Unix shells. + + * src/roff/groff/groff.cc: #include nonposix.h. + (BSHELL): Definition moved to nonposix.h. + (main): Use PATH_SEP[0] instead of literal ':'. Use BSHELL_DASH_C + instead of a literal "-c". + (xbasename): Support file names with several possible slash-type + characters, as given by DIR_SEPS[] in nonposix.h. + (possible_command::print): Use BSHELL_DASH_C and IS_BSHELL instead + of literal strings. + + * src/preproc/soelim/soelim.cc: #include nonposix.h. + (do_file): Use IS_ABSOLUTE instead of testing for a literal '/'. + + * src/preproc/pic/Makefile.sub (YTABH): Change pic.tab.h to + pic_tab.h. + + * src/preproc/pic/lex.cc: Change pic.tab.h to pic_tab.h. + + * src/preproc/eqn/Makefile.sub (YTABH): Rename eqn.tab.h to + eqn_tab.h. + + * src/preproc/eqn/lex.cc: #include eqn_tab.h, not eqn.tab.h. + + * src/libs/libgroff/tmpfile.cc (DEFAULT_TMPDIR) [P_tmpdir]: If + P_tmpdir is defined, use it instead of the literal "/tmp". + (remove_tmp_files, add_tmp_file): New functions. + (xtmpfile): Record temporary files and register an atexit function + to delete them explicitly, instead of relying on the OS to do + that, which doesn't work on non-Unix systems. + + * src/libs/libgroff/searchpath.cc: #include nonposix.h. + (search_path::search_path): Use PATH_SEP instead of a literal + colon. + (search_path::command_line_dir): Ditto. + (search_path::open_file): Use IS_ABSOLUTE, PATH_SEP and DIR_SEPS, + to support non-Posix systems. + + * src/libs/libbib/search.cc: #include nonposix.h. + (search_list::add_file): Open the file in binary mode. + + * src/libs/libbib/linear.cc: #include nonposix.h. + (file_buffer::load): Remove \r characters preceding \n from the + loaded buffer. + + * src/libs/libbib/index.cc: #include nonposix.h. + (make_index_search_item): Open index_filename in O_BINARY mode. + (index_search_item_iterator::get_tag): Ditto. Remove \r + characters before \n characters. + (index_search_item::check_files): Open files in binary mode. + (index_search_item::munge_filename): Support DOS-style file names + with backslashes and drive letters, use IS_ABSOLUTE. + + * src/devices/grops/ps.cc: #include nonposix.h. + (main) [SET_BINARY]: Switch stdout to binary mode. + + * src/devices/grolj4/lj4.cc: #include nonposix.h. + (main) [SET_BINARY]: Switch stdout to binary mode. + + * src/devices/grolbp/lbp.cc: #include nonposix.h + (fill_pattern) [SET_BINARY]: Switch stdout to binary mode. + + * src/devices/grodvi/dvi.cc: #include nonposix.h. + [_MSC_VER]: Remove inclusion of Windows-specific headers (done by + nonposix.h). + (main) [SET_BINARY]: Switch stdout to binary mode. + [_MSC_VER]: Remove an explicit call to _setmode. + + * src/include/nonposix.h: New file. + + * Makefile.in (ENVSETUP): New variable, to set up case-sensitive + operation when building with DJGPP. + ($(TARGETS), dot, $(LIBDIRS), $(CPROGDIRS), $(CCPROGDIRS)) + ($(DEVDIRS), $(TTYDEVDIRS), $(INCDIRS), $(OTHERDIRS)): Use + ENVSETUP. + + * Makefile.comm: mv y.tab.[ch] to y_tab.[ch], to make it work on + MS-DOS. + (.man.n): Replace `;' with `|', since FONTPATH, MACROPATH, + etc. can include a semi-colon on DOS/Windows. + (depend.temp): Use depend1.temp instead of depend.temp1, to + prevent files from overerwiting each other on 8+3 filesystems. + + * gendef.sh (t): Change definition to work with DOS/Windows. + + doc/groff.texinfo: Apart of some typo corrections, I also changed + some index entris, to make them more non-ambiguous, and also put + @ignore around some parts that are not yet written, to allow the + Info output be readable. + +2000-06-10 Gael Queri <gqueri@mail.dotcom.fr> + + Replaced specific checks for function declarations with a generic + routine taken from GNU bfd. + + * aclocal.m4 (GROFF_NEED_DECLARATION): New function. + GROFF_PUTENV, GROFF_POPEN, GROFF_PCLOSE, GROFF_HYPOT: Removed. + * configure.in: Use it. + * src/devices/grolbp/lbp.cc, src/include/lib.h, + src/preproc/grn/hgraph.cc, src/preproc/pic/pic.h, + src/roff/groff/groff.cc: Use it. + * Makefile.in, configure: Updated. + +2000-06-07 Paco Andrs Verd <pandres@dragonet.es> + + * src/devices/grolbp/lbp.h: Removed unused variables. + +2000-05-31 Keith Thompson <kst@sdsc.edu> + + * src/devices/grolbp/lbp.cc (set_papersizes): Add declaration of + strncasecmp(). + +2000-05-31 Werner LEMBERG <wl@gnu.org> + + * aclocal.m4 (GROFF_SRAND): New function to test the return value + of srand() -- at least SunOS 4.1.3 uses `int' instead of `void'. + * configure.in: Use it. + * src/preproc/pic/pic.y, src/preproc/pic/pic.cc: Use it. + * configure, Makefile.in: Updated. + + * configure.in: Add test for strncasecmp(). + * src/include/lib.h: Use it. + +2000-05-29 Andrej Borsenkow <Andrej.Borsenkow@mow.siemens.ru> + + * src/preproc/grn/Makefile.sub: Add MLIB. + +2000-05-29 Nix <nix@esperi.demon.co.uk> + + * Makefile.in: Use @datadir@ and @mandir@ appropriately. + +2000-05-29 Werner LEMBERG <wl@gnu.org> + + * src/roff/grog/Makefile.sub, src/roff/grog/grog.sh: Add `@g@'. + + * PROBLEMS: Small update. + + * src/devices/grolbp/lbp.cc: Various small fixes. + +2000-05-28 Keith Thompson <kst@sdsc.edu> + + * src/roff/nroff/nroff.sh: Fix main loop syntax. + + * src/utils/indxbib/indxbib.cc: Add declaration of mkstemp(). + +2000-05-25 Werner LEMBERG <wl@gnu.org> + + * man/roff.man: Removed unused macro. + +2000-05-24 Werner LEMBERG <wl@gnu.org> + + * Makefile.in (dist): Remove src/xditview/Imakefile explicitly. + This is needed e.g. if you do + `make distclean; ./configure; make dist'. + +Version 1.16 released +===================== + +2000-05-23 Werner LEMBERG <wl@gnu.org> + + Adding font CWI (constant width italic) to devdvi. + + * font/devdvi/CWI: New file. + * font/devdvi/generate/Makefile: Add generating rule. + * font/devdvi/DESC.in, font/devdvi/Makefile.sub, win32-diffs, + tmac/tmac.dvi: Use it. + * NEWS: Announce it. + + * font/devlj4/*: Regenerated (only adding kernings for `cq' glyph). + * font/devlj4/generate/Makefile: Cosmetic changes only. + + * man/groff.man: Removed most of the redundant description of + special characters (which is in groff_char.man). Added font + translation CB->CR for devdvi. Other minor fixes. + + * tmac/tmac.dvi: Improved appearance of \(co (copyright) and \(rg + (registered) symbols. + +2000-05-22 Werner LEMBERG <wl@gnu.org> + + * doc/Makefile: Added rule for creating info files. + + * font/devdvi/*: Added kernings for `cq' glyph. Updated to latest + AMS font metrics. + * font/devdvi/generate/Makefile: Fixed dependencies. + + * font/devps/*: Regenerated. Heavy changes for Bookman and + NewCentury Schoolbook! + * font/devps/generate/afmname: Will now run with GNU awk. + * font/devps/generate/textmap: Added forgotten `cq' glyph name. + * font/devps/generate/Makefile: Cosmetic changes only. + +2000-05-21 Werner LEMBERG <wl@gnu.org> + + * tmac/tmac.an: Added a new command line option `-rSxx' (`xx' can be + 10, 11, or 12) to support output with 11pt and 12pt base font sizes. + `.SS' now produces a heading with a smaller size than `.SH'. + Completely formatted. + * doc/groff.texinfo, tmac/groff_man.man, NEWS: Document it. + + * man/groff.man: Improved table appearance. Use of `eo' request + to reduce number of doubled backslashes in macro definitions. + Replacing `\e' with `\(rs'. Other minor fixes. + + * src/preproc/tbl/main.cc: Insert HTML table end tag before `lf' + to have correct line number. + + * INSTALL: Small improvement. + +2000-05-20 Bernd Warken <bwarken@mayn.de> + + * man/roff.man, tmac/groff_tmac.man: Updates (with corrections by + WL). + +2000-05-19 Bernd Warken <bwarken@mayn.de> + + * man/groff.man: Complete update (with a lot of corrections by WL). + +2000-05-18 Werner LEMBERG <wl@gnu.org> + + Adding `cq' (PS name `quoteright') glyph name as an alias for "'". + + * font/*/*: Implement it. + * man/groff_char.man, NEWS: Document it. + + * src/include/unix.h: Removed. It isn't used. + + * doc/groff.texinfo: Slight improvements. + +2000-05-17 Werner LEMBERG <wl@gnu.org> + + * README, win32-diffs: Small fixes and improvements. + +2000-05-16 Werner LEMBERG <wl@gnu.org> + + * FDL: New file (the Free Documentation License version 1.1). + + * doc/groff.texinfo: Added many start-up values for gtroff. + Some structural improvements of the source code. + +2000-05-15 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc: Added small comment about troffrc-end. + * src/roff/troff/troff.man: Added info about troffrc-end. + +2000-05-14 Werner LEMBERG <wl@gnu.org> + + * Makefile.in (EXTRADIRS): Fix typos. + (dist): Handle deletion of old .tar.gz file correctly. + (DISTDIRS): Include all tty output devices. + + * doc/groff.texinfo: Adding more cross references; countless other + fixes. + +2000-05-13 Werner LEMBERG <wl@gnu.org> + + * MORE.STUFF: Added Robert Marks's utilities. + +2000-05-12 Werner LEMBERG <wl@gnu.org> + + Added win32 port contributed by Blake McBride + <blake@florida-software.com>. + + * README.WIN32, win32-diffs: New files. + * NEWS: Updated. + + * src/preproc/grn/hgraph.cc (HGSetBrush): Replace `%lf' with `%f'. + (tmove, tmove2): Added parentheses to avoid compiler warnings. + (change): Removed unused variables. + + * src/preproc/grn/main.cc (main, conv): Removed unused variables. + (savebounds): Changed return value from `int' to `void'. + * src/preproc/grn/hdb.cc: Ditto. + + * src/devices/grolbp/lbp.cc (lbp_printer::draw): Removed superfluous + final backslash in comment to avoid compiler warning. + + * src/utils/pfbtops/pfbtops.c: Added `getopt.h'. + + * doc/groff.texinfo: More fixes. + +2000-05-11 OKAZAKI Tetsurou <okazaki@be.to> + + * tmac/tmac.doc: Documentation fix. + +2000-05-11 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Reading the source code shows up a lot of + omissions and incorrect data... More conversion to @Deffn macros. + +2000-05-10 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/reg.cc (number_value_to_ascii): Remove ASCII + dependency. + + * src/roff/troff/request.h: Removing unused `no_break_flag'. + +2000-05-09 Werner LEMBERG <wl@gnu.org> + + * man/groff.man, man/roff.man, tmac/groff_tmac.man: Minor + improvements. + + * doc/groff.texinfo: Extended history section. More conversion to + @Deffn macros. More .tr documentation. + +2000-05-07 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Completed tab section. Added info about + fields. + +2000-05-06 Mike MacIsaac <mikemac@us.ibm.com> + + * PROBLEMS: Describe configure script fix for OS/390 Unix. + +2000-05-05 Werner LEMBERG <wl@gnu.org> + + * font/devdvi/DESC.in: Change size 11pt to 10.95pt (as used in + LaTeX 2e). + * NEWS: Document it. + + * man/troff.man: Minor optical improvements. + +2000-05-03 Werner LEMBERG <wl@gnu.org> + + Adding `dq' (PS name `quotedbl') glyph name as an alias for `"'. + + * font/*/*: Implement it. + * man/groff_char.man, NEWS: Document it. + +2000-05-02 Werner LEMBERG <wl@gnu.org> + + * tmac/groff_tmac.man, man/groff.man, man/roff.man: Fixing @MANxEXT@ + expansion. + * NEWS: Document the three new man pages. + + * aclocal.m4 (GROFF_CXX_CHECK): Removing obsolete AC_C_CROSS call. + * configure: Updated. + + * font/devcp1047/R.proto: Fixing fatal bug (a missing `"' character). + +2000-05-01 Werner LEMBERG <wl@gnu.org> + + Added grap support to grog. + + * src/roff/grog/grog.sh, src/roff/grog/grog.pl: Implement it. + * src/roff/grog/grog.man: Document it. + + * doc/groff.texinfo, NEWS: Add info about grap support. + + Add new man pages comptributed by Bernd Warken <bwarken@mayn.de> + (with slight fixes by me). + + * tmac/groff_tmac.man: New file documenting tmac mechanism. + * tmac/Makefile.sub: Add groff_tmac.man. + * man/roff.man: New file giving overview of roff system. + * man/troff.man: A short reference of troff. + * man/Makefile.sub: Add roff.man and troff.man. + +2000-04-30 Werner LEMBERG <wl@gnu.org> + + Added grap support to groff. + + * src/roff/groff/groff.cc: Implement it. + * src/roff/groff/groff.man: Document it. + + * src/devices/grotty/grotty.man: Add cp1047 device. + * src/preproc/eqn/eqn.man, src/preproc/eqn/neqn.sh, tmac/eqnrc: + Ditto. + * src/roff/groff/groff.man: Ditto. + * src/roff/nroff/nroff.sh, src/roff/nroff/nroff.man: Ditto. + * doc/groff.texinfo: Ditto. + + * tmac/troffrc: Fix mapping of latin-1 char 160 (non-breakable space) + for cp1047. + +2000-04-29 Werner LEMBERG <wl@gnu.org> + + * man/groff_char.man: Add `pc' glyph. + * tmac/tmac.latin1: Replacing `md' glyph with `pc'. + * tmac/tmac.tty: Add `pc' glyph. + * tmac/tmac.tty-char: Use/add `pc' glyph. Don't call tmac.latin1 if + we use cp1047 output device. + + * Makefile.in, aclocal.m4: Don't build utf8 on EBCDIC hosts since + there are still hardcoded latin1->unicode values in utf8's font + definition files. + * configure: Updated. + * NEWS: Minor clarification. Updated. + + * PROBLEMS: Formatted. Added info about C++ fix pack for OS/390 + Unix. + +2000-04-28 Werner LEMBERG <wl@gnu.org> + + Adding EBCDIC code page 1047. + + * font/devcp1047/R.proto, font/devcp1047/Makefile.sub, + font/devcp1047/DESC.proto: New files. + + * aclocal.m4 (GROFF_EBCDIC): Introduce TTYDEVDIRS which can be + either ascii/latin1 or cp1047. + * Makefile.in: Use it. + * configure: Updated. + + Replacing and/or adding `md' (mathdot) glyph with `pc' + (periodcentered) in all text fonts. + + * font/*/*: Change it. + +2000-04-27 Werner LEMBERG <wl@gnu.org> + + * aclocal.m4 (GROFF_OS390): Fixing compiler flags. + + * configure.in: Add check for strings.h. + * src/include/driver.h: Use HAVE_STRINGS_H. + * src/devices/grolbp/lpb.cc: Remove string.h. + + * src/include/groff-getopt.h: New file. It will be used instead of + getopt.h (to be included in lib.h) to avoid endless problems with + picky C++ compilers. + * src/include/lib.h: Use groff-getopt.h. + * src/include/Makefile.sub: Updated. + + * configure: Updated. + * Makefile.in: Updated. + + * NEWS: Mention EBCDIC support. + +2000-04-26 Werner LEMBERG <wl@gnu.org> + + * TODO: Some additions. + +2000-04-25 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/troff.man, doc/groff.texinfo: Fixing documentation + of mso request. + +2000-04-23 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/troff.man: Minor fixes. + +2000-04-22 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/troff.man, doc/groff.texinfo, NEWS: Document the + `.T' string register and the incompatible definition of the `.T' + number register (compared to Unix troff). + + * man/groff_char.man: Add some missing characters. + * font/devutf8/NOTES: Update. + +2000-04-21 Werner LEMBERG <wl@gnu.org> + + * src/include/htmlindicate.h, src/include/lib.h, + src/include/posix.h: Fix copyright. + + * src/include/Makefile.sub: Update. + +2000-04-20 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc (input_char_description): Removing + superfluous space char. + + * tmac/tmac.X: Fix typo \(bq -> \(Bq. + + * doc/groff.texinfo: Document EBCDIC. + +2000-04-19 Werner LEMBERG <wl@gnu.org> + + Introducing `shc' as the glyph name for the soft hyphen character. + + * tmac/tmac.tty, tmac/tmac.latin1, tmac/tmac.html, + font/devlatin1/R.proto: Use it. + + * NEWS: Updated. + +2000-04-18 Werner LEMBERG <wl@gnu.org> + + * src/devices/grops/ps.cc (ps_printer::flush_sbuf): Removing + dependency on ASCII order. + +2000-04-16 Sandor BARANY <S.Barany@infosys.tuwien.ac.at> + + * src/libs/libgroff/illegal.c: Added EBCDIC table. + * src/roff/troff/input.cc: Added adaptation to EBCDIC. + + * src/preproc/refer/refer.cc, src/roff/troff/env.cc: Minor changes + to increase portability. + +2000-04-15 Werner LEMBERG <wl@gnu.org> + + * aclocal.m4: Added GROFF_EBCDIC and GROFF_OS390 tests. + Redefined AC_OUTPUT_MAKE_DEFS to replace ASCII character `012' with + the generic `\n' if under OS/390 Unix. + + * configure.in: Call GROFF_EBCDIC and GROFF_OS390. + + * configure: Regenerated. + +2000-04-14 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: More conversions to @Deffn. + +2000-04-12 Werner LEMBERG <wl@gnu.org> + + * tmac/tmac.psfig: Fix incorrect use of `&' operator by replacing it + with `:'. + + * src/roff/nroff/nroff.man: Add note about tmac.tty-char. + +2000-04-10 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: More conversions to @Deffn. + +2000-04-08 Werner LEMBERG <wl@gnu.org> + + * src/libs/libgroff/{getopt.c,getopt1.c}, src/include/getopt.h: + Updated to latest version (glibc 2.1.3). + +2000-04-07 Werner LEMBERG <wl@gnu.org> + + * doc/Makefile (clean): Include more index files. + Add rule texinfo->dvi. + +2000-04-05 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Added new index `op' for operators. More + info on end of sentence characters. More use of @Deffn. + +2000-03-30 Werner LEMBERG <wl@gnu.org> + + * */*.man: Adding a note that a whitespace can be inserted between + a command line option and its parameter -- we are using GNU getopt. + + * src/roff/groff/groff.man: Add example of `-m mandoc'. + +2000-03-28 Werner LEMBERG <wl@gnu.org> + + Correct anachronism of calling the man macro file with `-man' + instead of `-m man' etc. + + * tmac/tmac.man, tmac/tmac.mandoc, tmac/tmac.markup, tmac/tmac.mdoc, + tmac/tmac.me, tmac/tmac.ms: New files tmac.m<package> which simply + load tmac.<package>. + + * tmac/Makefile.sub: Updated. Take care of $(tmac_an_prefix) etc. + + * NEWS: Updated. + + * doc/groff.texinfo: Updated. + + * tmac/groff_man.man: Copyright added. + +2000-03-27 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Introducing macros `Deffn' and `Defmac' to + typeset the request resp. escape name with a tt font -- due to a + bug in texinfo.tex it is necessary to use the `-e' switch with + texi2dvi. + + Improving info about usage of groff units. + + Other minor fixes. + +2000-03-20 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Added section about man macro package + (I've basically taken groff_man.man). Introducing new indices `ma' + for macros/strings and `gl' for glyph names. Other minor fixes. + + * tmac/groff_man.man: Fixed some typos. + +2000-03-19 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Removed all occurrences of `you', `we', etc. + Other minor fixes. + + * doc/texinfo.tex: New file. + +2000-03-18 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Improved section on number registers. Other + minor updates. + +2000-03-16 Werner LEMBERG <wl@gnu.org> + + * src/roff/groff/groff.man: Added info about grolbp. Make nicer + synopsis. + + * src/devices/grolbp/grolbp.man, src/roff/nroff/nroff.man, + src/devices/grolj4/grlj4.man, src/devices/grops/grops.man, + src/preproc/eqn/eqn.man, src/utils/afmtodit/afmtodit.man, + src/utils/tfmtodit/tfmtodit.man: Make nicer synopsis. + + * src/preproc/grn/grn.man: Better synopsis; added copyright. + + * src/roff/grog/grog.man: Updated copyright date. + +2000-03-14 Francisco Andrs Verd <pandres@dragonet.es> + + * configure.in: Added test for strdup. + + * src/devices/grolbp/lbp.cc: Added a strdup() version in case none + is available. + + Replaced dynamic allocation of arrays `[...]' with `new' operator. + + Other minor fixes. + +2000-03-12 OKAZAKI Tetsurou <okazaki@be.to> + + * Makefile.comm: Add $(INCLUDES) to $(ALL_CFLAGS). + +2000-03-11 Werner LEMBERG <wl@gnu.org> + + * src/preproc/grn/hdb.cc (DBGetType): Added return value to make + compilers silent. + * src/preproc/grn/hgraph.cc: Add #ifdef for hypot(). + * src/include/lib.h: Remove some spaces. + +2000-03-10 Werner LEMBERG <wl@gnu.org> + + * src/libs/libgroff/tmpfile.cc (xtmptemplate, xtmpfile): Removing + initializers from arguments (some compilers don't like this). + +2000-03-09 Gaius Mulley <gaius@glam.ac.uk> + + * src/libs/libgroff/htmlindicate.cc: Added library file which is now + used by pic and eqn to tell grohtml where the graphic regions start + and end. + * src/libs/libgroff/Makefile.sub: Use it. + * src/preproc/eqn/main.cc, src/preproc/pic/troff.cc: Altered to use + graphic_start() and graphic_end() from htmlindicate.cc. + +2000-03-09 Werner LEMBERG <wl@gnu.org> + + * tmac/tmac.safer: Will now work correctly in compatibility mode. + * tmac/groff_man.man: More fixes. + +2000-03-08 Werner LEMBERG <wl@gnu.org> + + * doc/Makefile: Added texput.log to the `clean' target. + * doc/groff.texinfo: Added info about delimiters for escapes. + +2000-03-08 Bernd Warken <bwarken@mayn.de> + + * src/preproc/pic/pic.man: Add info on conversion of pic images to + other graphic formats. + +2000-03-07 OKAZAKI Tetsurou <okazaki@be.to> + + * Makefile.in, Makefile.sub, src/preproc/eqn/Makefile.sub, + src/roff/groff/Makefile.sub, src/roff/nroff/Makefile.sub, + src/utils/afmtodit/Makefile.sub: Use $(INSTALL_SCRIPT) for script + files. + +2000-03-07 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Spelling fixes. + +2000-03-06 Werner LEMBERG <wl@gnu.org> + + * tmac/groff_man.man: Completely revised to cover everything in + tmac.an. + + * doc/groff.texinfo, src/roff/troff/troff.man: Document evc request. + Other minor fixings. + * src/roff/troff/env.cc (environment_copy): Improve error message and + fix itoa->i_to_a. + * src/roff/troff/TODO: Updated. + + * doc/Makefile: Bug fixes -- this is still provisional, though... + + * tmac/eqnrc: Small fixes. + +2000-03-05 Abramo Bagnara <abramo@alsa-project.org> + + Adding a request `evc' to copy environments. + + * src/roff/troff/env.cc (environment::copy, environment_copy): + Implement it. + * src/roff/troff/env.h: Add prototype. + +2000-03-05 Francisco Andrs Verd <pandres@dragonet.es> + + Adding strsep() -- Solaris 8 doesn't have it. + + * configure.in: Test it. + * src/devices/grolbp/lbp.cc: Add code. + +2000-03-05 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/div.cc (macro_diversion::output, + top_level_diversion::output): Fixing an incompatibility with + original troff: \x'0' updates the .a register also. Thanks to + <Andries.Brouwer@cwi.nl> for pointing this out. + * doc/groff.texinfo: Document it. + + * Makefile.in: Create Makefile.dep if necessary before calling the + submake process to avoid warning about nonexistent file. + + * NEWS, PROJECTS: Updated. + +2000-03-04 Werner LEMBERG <wl@gnu.org> + + * tmac/troffrc: Add tmac.lbp. + +2000-03-03 Francisco Andrs Verd <pandres@dragonet.es> + + * tmac/tmac.lbp: New file. + * src/devices/grolbp/grolbp.man: Add documentation of `lbpname' + command. + +2000-03-03 Werner LEMBERG <wl@gnu.org> + + * Makefile.in: Fixing $(subdir). + + * README, NEWS: Small fixes. + + * test-groff: Adding path to grolbp. + + * configure.in: The (new) file src/xditview/Imakefile.in will be + also configured -- it is now possible to build gxditview in a + directory different from $srcdir. + +2000-03-02 Blake McBride <blake@florida-software.com> + + * src/libs/libgroff/searchpath.cc (open_file): Adapting to WinNT. + + * MORE.STUFF: Added website of bell labs and info about plot2dev. + +2000-03-01 Colin Phipps <crp22@cam.ac.uk> + + * src/utils/indxbib/indxbib.cc (main): Use mkstemp() for temporary + files. + +2000-02-29 Werner LEMBERG <wl@gnu.org> + + Adding GNU getopt to the groff distribution. + + * src/include/getopt.h, src/libs/libgroff/{getopt.c,getopt1.c}: + New files. + * src/include/Makefile.sub, src/libs/libgroff/Makefile.sub: Update. + * aclocal.a4: Remove GROFF_GETOPT function. + * configure.in, Makefile.in, PROBLEMS: Update. + * src/include/lib.h: Replace getopt tests with getopt.h. + * src/devices/grolbp/lpb.cc: Remove inclusion of getopt.h. + + * doc/groff.texinfo: Further checking/updating. Adding more index + entries. + + * man/groff_out.man: Fix nroff mode activation (for emacs). + * man/groff_font.man: Add missing ligature. + +2000-02-28 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Further checking/updating. Adding more index + entries. + + * src/devices/grolbp/grolbp.man: Added a comment line at the + beginning of the file (similar to shell scripts) which indicates + that `tbl' should be used as a preprocessor. + +2000-02-27 Blake McBride <blake@florida-software.com> + + Adapting groff to MS Visual C++ 6.0 compiler (tested with + Windows NT 4.0). Uses _MSC_VER define where necessary. + + * src/devices/grodvi/dvi.cc: Making stdout a binary stream. + * src/devices/grolj4/lj4.cc: Making getopt variables `extern "C"'. + * src/devices/grohtml/html.cc, src/devices/grops/ps.cc, + src/include/lib.h, src/libs/libgroff/errarg.cc, + src/libs/libgroff/itoa.c, src/libs/libgroff/nametoindex.cc, + src/preproc/refer/label.y, src/preproc/refer/label.cc, + src/roff/groff/pipeline.c, src/roff/troff/column.cc, + src/roff/troff/div.cc, src/roff/troff/env.cc, + src/roff/troff/input.cc, src/roff/troff/node.cc, + src/roff/troff/reg.cc: Renaming itoa() to i_to_a() and iftoa() to + if_to_a() to avoid name clashes. + * src/include/posix.h: Don't use unistd.h. + * src/libs/libgroff/tmpfile.cc: Use `#ifndef...#else...#endif' + clause for integrating non-Unix xtmpfile() code. + * src/roff/troff/input.cc: Adding `public' keyword to macro_header + structure; use "rt" for popen() in pipe_source(); add getpid() + dummy function. + * src/roff/troff/node.cc: Use special versions of popen() in + real_output_file() and pclose() in ~real_output_file(). + +2000-02-27 Werner LEMBERG <wl@gnu.org> + + Adding a new driver, grolbp, for Canon CAPSL printers (LBP-4 and + LBP-8 series laser printers). This code has been contributed by + Francisco Andrs Verd <pandres@dragonet.es>. + + * src/devices/grolbp/*: The grolbp output device. + * font/devlpb/*: The font description files. + * Makefile.in: Add grolpb and devlbp subdirectories. + + * src/devices/grodvi/grodvi.man, src/devices/grolj4/grolj4.man, + src/devices/grotty/grotty.man,src/roff/troff/troff.man: Minor + typographic fixes. + + * doc/groff.texinfo: Further checking/updating. Adding more index + entries. + + * NEWS: Updated. + + * src/devices/grolbp/Makefile.sub: Adding $(srcdir). + + * man/groff_font.man: Adding info about obsolete DESC keywords. + * src/devices/grolj4/grolj4.man: Documenting additional DESC + keywords. + +2000-02-26 Werner LEMBERG <wl@gnu.org> + + * src/preproc/grn/grn.man: Added info about the gremlin file format + (contributed by Daniel Senderowicz <daniel@synchrods.com>). + +2000-02-25 Werner LEMBERG <wl@gnu.org> + + * src/preproc/grn/main.cc: Allow values of `narrow' parameter and + friends to be non-integer. + + * src/preproc/grn/grn.man: Document it. + + * doc/groff.texinfo: Further checking/updating. Adding more index + entries. + +2000-02-24 Werner LEMBERG <wl@gnu.org> + + * src/preproc/grn/main.cc: Introduce BASE_THICKNESS, defining + line thicknesses to be integer multiples of this value. + + * src/preproc/grn/grn.man: Commenting out the -s option -- the + corresponding code doesn't work (yet). + + * doc/groff.texinfo: Further checking/updating. Adding more index + entries. + +2000-02-23 Werner LEMBERG <wl@gnu.org> + + * src/preproc/grn/{main.cc, hgraph.cc}: Using point units to + specify line thickness instead of base units. The new default + values are now 0.15,pt 0.45pt, and 0.75pt for thin, middle, and + thick lines respectively. + + Removed unused variable `prevval'. + + * src/preproc/grn/grn.man: Updated. + +2000-02-22 Werner LEMBERG <wl@gnu.org> + + * src/preproc/grn/main.cc: Slight formatting. + + * src/roff/groff/groff.man: Formatting fix. + * src/preproc/grn/grn.man: Ditto. + + * src/roff/grog/grog.pl: Fixing two embarrassing bugs. + + * doc/groff.texinfo: Further checking/updating. + +2000-02-21 Werner LEMBERG <wl@gnu.org> + + * README, INSTALL, PROJECT, PROBLEMS, BUGREPORT: Updated. + + * test-groff: Added grn subdir to path. + + * doc/groff.texinfo: Some restructing and other small improvements. + + * src/roff/groff/groff.cc (help): Fixed info string. + +2000-02-20 Werner LEMBERG <wl@gnu.org> + + * doc/meref.me: Fix description of .GS request. + + * src/roff/troff/troff.man: Fixing typo. + + Adding the `grn' preprocessor for gremlin graphic files. + + * src/preproc/grn/*: This is the Berkeley distribution written by + David Slattengren and Barry Roitblat, adapted to groff by Daniel + Senderowicz and Werner Lemberg. + + * doc/grnexampl.{me,g}: A sample for grn. + + * Makefile.in: Added subdirectory entry for grn. + + * src/roff/groff/groff.cc: Added support for grn. It can be now + called with the switch `-g'. + + * src/roff/groff/groff.man: Updated. + + * src/roff/grog/grog.{man,pl,sh}: Updated. + + * NEWS: Updated. + +2000-02-11 Gaius Mulley <gaius@glam.ac.uk> + + * src/include/lib.h: Added xtmptemplate and made xtmpfile + parametrically polymorphic. + + * src/libs/libgroff/tmpfile.cc: Implemented xtmptemplate + and the alterations to xtmpfile. + xtmpfile can be requested to return the filename created + and asked not to unlink the temp file. The default behaviour + if parameters are absent is exactly the same as before. + +2000-02-11 Abramo Bagnara <abramo@alsa-project.org> + + A new request `length' is available which returns the length of a + string in a number register: + + * src/roff/troff/input.cc (length_macro): Implement it. + * src/roff/troff/input.cc (init_input_requests): Register it. + +2000-02-11 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo, src/roff/troff/troff.man: Add documentation + of the `substring' request. + + * src/roff/troff/troff.man, doc/groff.texinfo: Document `length' + request. + + * src/roff/troff/TODO, NEWS: Updated. + +2000-02-09 Werner LEMBERG <wl@gnu.org> + + * src/roff/groff/groff.man: Added an example. + +2000-02-06 Werner LEMBERG <wl@gnu.org> + + I've considerably modified the directory structure of the + distribution to get a more vertical layout. For example, the number + of top level directories has been reduced from 42 to 6. + + As a consequence, many changes, especially to the makefiles, were + necessary: + + * The makefile variables `top_builddir' and `top_srcdir' have been + introduced. Virtually all relative paths have been replaced with + absolute ones using these two variables. + + * Dependencies (in the files `Makefile.dep') are no longer part of + the distribution. Instead, they are created during a `make install' + in the build directory. + + * aclocal.m4 (GROFF_SRCDIR, GROFF_BUILDDIR): Two new functions to + make `top_srcdir' and `top_builddir' absolute. + + Some other changes: + + * Man pages now depend on the files `VERSION' and `REVISION'. + + * The added shell script `mkinstalldirs' will replace `mkdir' in + almost all cases. + + * VERSION: Version number increased to 1.16. + +2000-02-04 Werner LEMBERG <wl@gnu.org> + + * grops/psrm.cc (read_one_of): Fixed pointer incrementation. + + * Makefile.in: Removed $(tmac_m) since it is no longer needed + (after an update of the mm stuff). + + * troff/Makefile.sub (majorminor.cc): Fix dependencies. + +2000-02-03 Werner LEMBERG <wl@gnu.org> + + The .psbb request will now also accept Mac PS images (i.e. using LF + as the EOL character). + + * troff/input.cc (ps_get_line): New function, taken from psrm.cc + (with slight modifications). + * troff/input.cc (do_ps_file): Use it. + + * test-groff: Add grohtml and grolj4 output devices to PATH. + +2000-01-30 Werner LEMBERG <wl@gnu.org> + + * NEWS, MORE.STUFF: Updated. + +2000-01-30 Cary D. Renzema <caryr@dollar.mxim.com> + + Add the `srand' command to pic. + + * pic/lex.cc, pic/pic.y: Implement it. + * pic/pic.man: Document it. + * pic/pic.cc, pic/pic.tab.h: Regenerated (with yacc). + +2000-01-30 Werner LEMBERG <wl@gnu.org> + + Add a new request `.psbb'. This does exactly what the external + program psbb did. It scans a PostScript image file for a + %%BoundingBox comment and extracts the bounding box values (in + PostScript units) which are then stored in the four new (read-only) + number registers `llx', `lly', `urx', and `ury'. + + This will allow the usage of the .PSPIC macro without worrying + about unsafe behaviour of groff, i.e., it will work without the + `-U' switch of groff. + + * troff/input.cc: Implement it. + * tmac/tmac.pspic: Use it. + * troff/troff.man, grops/grops.man, NEWS: Document it. + * psbb/*, Makefile.in: Remove it since it is no longer needed. + + This is bloody C code simply adapted from psbb.c! Any improvements + welcome. + +2000-01-29 Werner LEMBERG <wl@gnu.org> + + * man/groff_font.man: Minor clarifications. + + * NEWS: Updated. + +2000-01-28 Werner LEMBERG <wl@gnu.org> + + * afmtodit/afmtodit.pl: Use new `--' comment delimiter. + +2000-01-28 Gaius Mulley <gaius@glam.ac.uk> + + * man/groff_font.man: Brought up to date regarding tcommand + extensions. + * libgroff/font.cc: Handle everything after `--' as a comment + in the font files. + * devps/*: Added comment delimiter inside devps font files. + +2000-01-28 Werner LEMBERG <wl@gnu.org> + + * tmac/tmac.arkup, tmac/groff_markup.man: Replace \fC...\fR with + \fC...\fP (which now works as expected). + + * troff/troff.man: Fix typo. + +2000-01-27 Gaius Mulley <gaius@glam.ac.uk> + + Completed the pass_filenames implementation in troff. + + * libdriver/input.cc: Will read the new `F' tcommand. + * troff/node.cc, troff/node.h: Will issue the new `F' tcommand. + * troff/input.cc: Use it. + +2000-01-26 Werner LEMBERG <wl@gnu.org> + + * troff/env.cc (set_font): Fix the behaviour of \fP. The previous + font will now be updated even if an invalid font is selected. + +2000-01-24 Werner LEMBERG <wl@gnu.org> + + * doc/homepage.ms: Updated for new tmac.arkup. + + * tmac/tmac.html: Disable line breaks after hyphen-like characters. + + * tmac/tmac.arkup: Cleanup. + + Added `\&' to .HTML macro to `leave vertical mode', so to say. + + Removed obsolete .LINK macro completely. + + The macros .URL, .FTP, and .MAILTO now accept a third argument which + will be immediately appended to the second argument (to be used with + punctuation, for example). + + Disabled .CDFTP macro temporarily for security reasons. + + * tmac/groff_markup.man: Complete revision for latest changes in + tmac.arkup -- note that it does not yet format correctly with + grohtml :-( + +2000-01-23 Bruno Haible <haible@clisp.cons.org> + + * nroff/nroff.sh: Accept -Tutf8 option and pass it through. + * devutf8/R.proto: Add mappings for wp, lh, rh. + * devutf8/NOTES: Updated. + +2000-01-23 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Updated version/copyright info. + +2000-01-21 Gaius Mulley <gaius@glam.ac.uk> + + Added support for two new directives in device descriptions: + `pass_filenames' (to pass the input file name to the output device) + and `use_charnames_in_special' (to support e.g. accented characters + in the `X' request). + + * include/font.h, troff/charinfo.h: Declare it. + + * libgroff/font.cc, libgroff/fontfile.cc: Set it. + + * devhtml/DESC: Use it. + + * troff/input.cc: New function encoded_char. + + * troff/token.h: Add test for `specialness'. + +2000-01-21 Werner LEMBERG <wl@gnu.org> + + * tmac/Makefile.sub: tmac.a4 and tmac.trace have been removed by + mistake from the list of files to be installed. + +2000-01-18 Werner LEMBERG <wl@gnu.org> + + * README: Added info how to apply patches. + +2000-01-15 Jan Echternach <echter@informatik.uni-rostock.de> + + * troff/node.cc (ligature_note::operator delete): Fix g++ warning. + +2000-01-15 Gaius Mulley <gaius@glam.ac.uk> + + * troff/input.cc: Add support for troffrc-end. + + * tbl/main.cc: Altered to issue table-start and table-end special + characters if using the html device. + + * devhtml/*: Modified font files to incorporate html encoding of + characters. + + * tmac/groff_markup.man: New file documenting tmac.arkup. + + * tmac/troffrc-end: New file. This is invoked after all user + specified macros. Currently used by the html device to include + tmac.html. Thus no need for users to specify -mhtml anymore. + + * tmac/Makefile.sub (NORMALFILES): Add troffrc-end. + (MAN7): Add groff_markup.man. + + * tmac/tmac.an, tmac/tmac.html: Small html updates. + + * tmac/troffrc: tmac.arkup will now be called for the html device. + + * libgroff/font.cc, libgroff/font.h: Altered to include reading of + extra device specific information about fonts. + + * doc/homepage.ms: New file. It is an example how an HTML home page + could look like with grohtml. + + * doc/Makefile: Add homepage.ms. Remove rule for pic.html. + +2000-01-12 Bruno Haible <haible@clisp.cons.org> + + * devutf8/R.proto: Add mappings for ti, Fn, st, an. Change mappings + of Im, Re. + + * devutf8/NOTES: Updated. + +2000-01-08 Bruno Haible <haible@clisp.cons.org> + + * eqn/box.cc, eqn/lex.cc, eqn/other.cc, eqn/over.cc, eqn/special.cc, + eqn/text.cc, grodvi/dvi.cc, grops/ps.cc, grops/psrm.cc, + libbib/index.cc, libbib/linear.cc, libbib/search.cc, + libdriver/printer.cc, libgroff/font.cc, libgroff/string.cc, + pic/lex.cc, pic/object.cc, refer/label.y, refer/ref.cc, tbl/main.cc, + tbl/table.cc, tfmtodit/tfmtodit.cc, troff/dictionary.cc, + troff/div.cc, troff/env.cc, troff/input.cc, troff/node.cc, + troff/node.h, troff/reg.cc: Avoid most "g++ -Wall -Wno-sign-compare" + warnings. + + * troff/node.cc (bracket_node::copy): Initialize last to NULL. + +2000-01-12 Fabrizio Polacco <fab@prosa.it> + + grolj4: Paper size will be searched case-insensitively. + + * include/lib.h: Add check for strcasecmp(). + * grolj4/li4.cc (lookup_paper_size): Use strcasecmp(). + * configure.in: Check for strcasecmp(). + +2000-01-11 Werner LEMBERG <wl@gnu.org> + + * troff/Makefile.sub (majorminor.cc): Fix incorrect path to + `REVISION'. + +2000-01-10 Werner LEMBERG <wl@gnu.org> + + * Makefile.comm, Makefile.in, doc/Makefile: More fixes for the + revision scheme. + + Add a new read-only register, `.Y', which contains the groff + revision. + + * troff/input.cc (init_input_requests): Define it. + * troff/Makefile.sub (majorminor.cc): Define `revision' string. + * doc/groff.texinfo, troff/troff.man: Document it. + + * libgroff/Makefile.sub (version.cc): Add definition of + `Version_string[]', consisting of `<major>.<minor>.<revision>' + * eqn/main.cc, grodvi/dvi.cc, grolj4/lj4.cc, grops/ps.cc, + grotty/tty.cc, hpftodit/hpftodit.cc, indxbib/indxbib.cc, pic/main.cc, + refer/refer.cc, soelim/soelim.cc, tbl/main.cc, tfmtodit/tfmtodit.cc, + troff/input.cc, pfbtops/pfbtops.c: Use it. + +2000-01-10 Fabrizio Polacco <fab@prosa.it> + + Add a revision scheme to the groff package. + + * REVISION: New file. + * libgroff/Makefile.sub (version.cc): Use it to define + `revision_string[]'. + * grops/psrm.cc: Use revision_string (converted to an unsigned + integer) in constructor of resource_manager. + +2000-01-10 Bruno Haible <haible@clisp.cons.org> + + * devutf8/Makefile.sub, devutf8/DESC.proto, devutf8/R.proto: New + files. + * Makefile.in (DEVDIRS): Add devutf8. + * grotty/tty.cc: Include device.h. + (glyph): Change type of `code' to `unsigned int'. + (tty_printer): New field is_utf8. Constructor takes device argument. + (tty_printer::tty_printer): If device if `utf8', set is_utf8. + (tty_printer::add_char): Change type of first arg to `unsigned int'. + (tty_printer::put_char): New function. + (tty_printer::end_page): Use put_char() instead of ::putchar(). + (make_printer): Pass device to tty_printer constructor. + * nroff.sh: Determine default device by calling 'locale'. As a + fallback, look at all of $LC_ALL, $LC_CTYPE, $LANG, $LESSCHARSET. + Recognize UTF-8 locales. + * tmac/eqnrc: Recognize utf8 like latin1. + * tmac/troffrc: Device utf8 needs tmac.tty. + +2000-01-07 Werner LEMBERG <wl@gnu.org> + + * tmac/Makefile.sub: tmac.a4 and tmac.trace will now be installed. + +2000-01-07 Paul Eggert <eggert@twinsun.com> + + Add a new predefined writeable number register, `year', + which contains the current year. + + * doc/groff.texinfo, PROBLEMS, troff/troff.man: Document it. + * tmac/tmac.s: Use it. + * troff/input.cc (init_registers): Initialize it. + +2000-01-06 Werner LEMBERG <wl@gnu.org> + + * PROBLEMS: Fixed typo. + +2000-01-04 Paul Eggert <eggert@twinsun.com> + + * PROBLEMS: Add Y2k advice for the yr number register. + +2000-01-03 Paul Eggert <eggert@twinsun.com> + + * doc/groff.texinfo: Fix Y2k bug in documentation of \n(yr. + +2000-01-02 Werner LEMBERG <wl@gnu.org> + + * tmac/tmac.arkup: Slight modification of macros to provide better + appearance for non-HTML formats. + +2000-01-01 Charles Levert <charles@comm.polymtl.ca> + + * soelim/soelim.cc (include_path_append): realloc(NULL, n) + does not automatically translate to malloc(n) on all OSes + (e.g., SunOS) so do it explicitly. Also, check the returned + value. + +2000-01-01 Werner LEMBERG <wl@gnu.org> + + * tmac/tmac.arkup: Added .LINE macro. Some formatting. + + * Makefile.in: Added $(tmac_m) again since the Makefile in `mm' + expects this variable + +2000-01-01 Gaius Mulley <gaius@glam.ac.uk> + + * doc/Makefile: Added instructions to create HTML and text + versions of some files. + +1999-12-31 Werner LEMBERG <wl@gnu.org> + + * Updated INSTALL.gen. + + * tmac/tmac.arkup: Added fixes so that .FTP and .MAILTO works + better resp. correctly with non-HTML devices. + +Copyright 1999-2000 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. + +Local Variables: +coding: latin-1 +fill-column: 72 +mode: change-log +version-control: never +End: +vim:set autoindent textwidth=72: diff --git a/ChangeLog.117 b/ChangeLog.117 new file mode 100644 index 0000000..5724952 --- /dev/null +++ b/ChangeLog.117 @@ -0,0 +1,2199 @@ + +Version 1.17.2 released +======================= + +2001-07-07 Werner LEMBERG <wl@gnu.org> + + * src/utils/indxbib/indxbib.cc (main): Change type of `name_max' + to size_t. + +2001-07-06 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/doc.tmac (Rv): Make `Rv' really not parseable. + Fix synopsis. + * tmac/groff_mdoc.man: Fix synopsis. + +2001-07-05 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/doc.tmac (doc-inset-list, doc-hang-list, doc-ohang-list): + Restore `doc-Pa-font'. + +2001-07-04 Werner LEMBERG <wl@gnu.org> + + * src/utils/indxbib/dirnamemax.c: Moved to ... + * src/libs/libgroff/maxfilename.cc: Here. + s/dir_name_max/file_name_max/. + Add copyright. + * src/include/lib.h: Add file_name_max. + * src/utils/indxbib/indxbib.cc: Updated. + * src/utils/indxbib/Makefile.sub, src/libs/libgroff/Makefile.sub: + Updated. + + * src/libs/libgroff/tmpfile.cc (TMPFILE_PREFIX) [__MSDOS__]: Define + as empty. + (xtmpfile) [_MSC_VER]: Removed -- MSVC has mktemp(). + + * src/preproc/html/pre-html.cc (PAGE_TEMPLATE, PS_TEMPLATE, + REGION_TEMPLATE): New macros. + (createAllPages, makeTempFiles): Use them. + Include `nonposix.h'. + (html_system): New function. + (createAllPages, createImage): Use it. + Use EXE_EXT. + + * tmac/www.tmac: Fix typos. + +2001-07-03 Werner LEMBERG <wl@gnu.org> + + * tmac/www.tmac: Disable hyphenation in normal text only if output + device is html. + (URL, FTP, MAILTO): Disable hyphenation of actual URL with `\%'. + * tmac/groff_mwww.man, NEWS: Updated. + +2001-07-03 Gaius Mulley <gaius@glam.ac.uk> + + * tmac/www.tmac (.IMAGE): Add fourth parameter to specify vertical + image location. + +2001-07-02 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/doc-common, tmac/doc.tmac (doc-display-ft-stack, + doc-display-ps-stack): Implement font and font size stack for + displays. + +2001-07-02 Werner LEMBERG <wl@gnu.org> + + * REVISION: Increased to 2. + * src/roff/troff/input.cc (read_size): Fix special case `\s[0]'. + + * src/groff/grog/grog.pl (process): Handle `Oo' and `Oc' not at the + beginning of a line. + * src/groff/grog/grog.sh: Ditto. + +2001-06-29 Peter Marquardt <wwwutz@molgen.mpg.de> + + * src/preproc/eqn/neqn.sh: Put `export' keyword in a new line to + make it portable. + +2001-06-27 Werner LEMBERG <wl@gnu.org> + + Fix problems with preprocessor string for `man' program. + + * *.man: Don't use `s' in preprocessor string -- it doesn't exist. + Updated/added copyright. + Moved Emacs's local variable to identify nroff mode to the end of + the file; add local variable if missing. + +2001-06-26 Andras Salamon <andras@cs.wits.ac.za> + + * aclocal.m4: Replace AC_LANG_SAVE + AC_LANG_CPLUSPLUS with + AC_LANG_PUSH(C++) and AC_LANG_RESTORE with AC_LANG_POP(C++). + * configure: Regenerated. + +2001-06-25 Andras Salamon <andras@cs.wits.ac.za> + + * aclocal.m4 (GROFF_PAGE): Fix page detection code. + * configure: Regenerated. + +2001-06-24 Werner LEMBERG <wl@gnu.org> + + * doc/homepage.ms: Don't include arkup.tmac (which no longer exists) + but www.tmac. + * doc/pic.ms: Fix typos. + +Version 1.17.1 released +======================= + +2001-06-21 Golubev I. N. <gin@mo.msk.ru> + + * aclocal.m4 (GROFF_NEED_DECLARATION): Fix inclusion of strings.h. + * configure: Updated. + +2001-06-20 Gaius Mulley <gaius@glam.ac.uk> + + * src/roff/preproc/html/pre-html.cc (make_message): Fix incorrect + image names. + * src/roff/troff/dic.cc (blank_line): Add html tag. + +2001-06-19 Gaius Mulley <gaius@glam.ac.uk> + + * src/roff/troff/input.cc (do_suppress): Fix typo. + +2001-06-18 Gaius Mulley <gaius@glam.ac.uk> + + Added two new options (-D and -I) to specify image names and a + subdirectory to place the images in. + + Change syntax from \\Ox to \\O[x]. + + * src/devices/grohtml/post-html.cc (main): Add options. + (usage): Updated. + * src/preproc/html/pre-html.cc: Include `stdarg.h'. + Use `NULL' instead of `0' for null string pointers. + (MAX_RETRIES): New macro. + (lengthOfintToStr, intToStr, make_message): New functions. + (makeFileName): Make function static. + Implement -D and -I options. + (checkImageDir): New function. + (write_end_image, write_start_image): Use new syntax of \O. + (createAllPages, removeAllPages): Implement -D and -I options. Use + make_message(). + (createImage): Use make_message(). + (addps4html): Add guard for malloc(). + (usage, scanArguments): Updated. + (makeTempFiles): Use mkstemp(). + (removeTempFiles): Use unlink(). + (findPrefix): Add guard for malloc(). + (main): Updated. + * src/roff/troff/input.cc (get_delim_file_name): New function to + parse \O. + (do_suppress): Updated to parse new syntax. + * src/devices/grohtml/grohtml.man: Updated. + * tmac/www.tmac: Updated to new syntax. + + * NEWS: Updated. + +2001-06-15 Werner LEMBERG <wl@gnu.org> + + * src/roff/grog/Makefile.sub: Remove NAMEPREFIX. + + * src/devices/grohtml/grohtml.man: Minor improvements. + +2001-06-14 Werner LEMBERG <wl@gnu.org> + + * src/preproc/html/Makefile.sub: Remove NAMEPREFIX. + +2001-06-11 Werner LEMBERG <wl@gnu.org> + + * man/roff.man, mann/groff.man: Use '\" instead of .\" in the first + line to specify preprocessor options -- mandb 2.3.1 only recognizes + the former. + * src/preproc/grn/grn.man: Add proper '\" string. + +2001-06-11 OKAZAKI Tetsurou <okazaki@be.to> + + * test-groff: Don't use PATH but GROFF_BIN_PATH. + +2001-06-08 Werner LEMBERG <wl@gnu.org> + + Updated to autoconf 2.50. + + * configure.in: Renamed to... + * configure.ac: This. + * aclocal.m4 (AC_OUTPUT_MAKE_DEFS): Removed. + (GROFF_OS390): Updated. + * configure: Regenerated. + +2001-05-18 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/env.c, src/roff/troff/env.h, + src/roff/troff/input.cc, src/roff/troff/troff.man: Undo `ss' change + from 2000-12-21. + +2001-05-17 Jeffrey Friedl <jfriedl@yahoo-inc.com> + + * src/roff/troff/input.cc (read_size): Fix special case `\s0'. + +2001-05-16 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc (read_size): Emit warning if value becomes + less than or equal zero; set it to 1 then. + * src/roff/troff/node.h (node::node): Initialize `last'. + +2001-05-08 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac: Make predefined strings work in compatibility + mode. + Add troff version guard. + * tmac/doc.tmac: Simplify version guard. + +2001-05-07 Werner LEMBERG <wl@gnu.org> + + The .ns and .rs requests are now honoured not only in the top-level + but in all diversions (similar to UNIX troff). + + This change is based on a patch from Tadziu Hoffmann + <hoffmann@usm.uni-muenchen.de>. + + * src/roff/troff/div.h (diversion): Add `no_space_mode' member. + (top_level_diversion): Remove `no_space_mode' member. + * src/roff/troff/div.cc (diversion::diversion, + top_level_diversion::top_level_diversion): Updated. + (macro_diversion::output): Reset `no_space_mode'. + (no_space, restore_spacing): Use `curdiv' unconditionally. + (space_request, blank_line): Check `curdiv->no_space_mode'. + (no_space_mode_reg::get_value, no_space_mode_reg::get_string): Use + `curdiv' unconditionally. + * NEWS, src/roff/troff/troff.man, man/groff.man, doc/groff.texinfo: + Updated. + +2001-05-06 Werner LEMBERG <wl@gnu.org> + + Added two new requests `de1' and `am1' which are similar to `de' and + `am' with the difference that compatibility mode is saved on entry, + switched off during macro execution, and restored on exit. + + * src/roff/troff/input.h: Added two new special characters + (COMPATIBLE_SAVE, COMPATIBLE_RESTORE). + * src/roff/troff/input.cc (input_iterator): Added two member + functions `save_compatible_flag' and `get_compatible_flag'. + (input_stack): Ditto. + (string_iterator): Ditto. Also add private member + `saved_compatible_flag'. + (token::next): Use COMPATIBLE_SAVE and COMPATIBLE_RESTORE. + (calling_mode): New enumeration. + (do_define_macro): Use it. Insert COMPATIBLE_SAVE and + COMPATIBLE_RESTORE at the beginning and end of macro, respectively. + (define_macro, define_indirect_macro, append_macro, ignore): Use + `calling_mode'. + (define_nocomp_macro, append_nocomp_macro): New functions. + (init_input_requests): Updated. + (do_request): Rename local variable `saved_compatible_flag' to + `old_compatible_flag'. + * NEWS, src/roff/troff/troff.man, man/groff.man: Document it. + + * tmac/an-old.tmac: Use `de1' instead of `de' request for all + public and trap-invoked macros. As a consequence, the man macros + work in compatibility mode also. + +2001-05-06 Solar Designer <solar@openwall.com> + + * Makefile.in: Use $(mandir). + +2001-05-06 Alexios Zavras <zvr@pobox.com> + + * src/utils/afmtodit/afmtodit.pl: Fix serious typo. + +2001-05-05 Werner LEMBERG <wl@gnu.org> + + Added `.ns' number register: Returns 1 in no-space mode (if in + top-level diversion), 0 otherwise. + + * src/roff/troff/div.cc (no_space_mode_reg): New class. + (init_div_requests): Updated. + * NEWS, src/roff/troff/troff.man, man/groff.man, doc/groff.texinfo: + Document it. + +2001-05-04 Werner LEMBERG <wl@gnu.org> + + * src/roff/nroff/nroff.man: Improved documentation (especially + locales). + +2001-05-02 Werner LEMBERG <wl@gnu.org> + + Added `brp' request: This is \p as a request. + + * src/roff/troff/env.cc (environment::do_break): Add parameter + `spread'. + (do_break_request): New function (was `break_request'). + (break_request): Calls `do_break_request'. + (break_spread_request): New; calls `do_break_request'. + (init_env_requests): Updated. + * src/roff/troff/env.h: Updated. + * NEWS, src/roff/troff/troff.man, man/groff.man: Document it. + + * REVISION: Increased to 1. + * win32-diffs: Updated. + +2001-05-01 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac: Fix minor compatibility mode issue. + * tmac/troffrc-end: Make it really work in compatibility mode. + +2001-04-27 Werner LEMBERG <wl@gnu.org> + + * src/utils/lkbib/lkbib.cc: Switch inclusion order of stdio.h and + stdlib.h. + +2001-04-22 Werner LEMBERG <wl@gnu.org> + + * src/libs/libgroff/getopt.c, src/include/getopt.h: Updating to + latest versions from glibc CVS archive. + + * MORE.STUFF: Updated, using a patch from Kees Zeelenberg + <c.zeelenberg@hccnet.nl>. + +2001-04-21 Werner LEMBERG <wl@gnu.org> + + * configure.in: Move check for mkstemp() to... + * aclocal.m4 (GROFF_MKSTEMP): This new function. + * configure: Regenerated. + + * src/include/groff-getopt.h: Don't use variable names in + declarations. + + * src/devices/grohtml/html-chars.h: Removed. It isn't used. + * src/devices/grohtml/Makefile.sub, + src/devices/grohtml/post-html.cc: Updated. + +2001-04-21 Albert Chin-A-Young <china@thewrittenword.com> + + * configure.in: Add special check for mkstemp(). + * src/libs/libgroff/tmpfile.cc: Use it. + * src/utils/indxbib/indxbib.cc: Ditto. + * src/utils/pfbtops/pfbtops.c (main): Don't use C++ comment style. + * src/devices/grolbp/lbp.h (lbpprintf, lbpputs, vdmprintf): Use + `const'. + +2001-04-20 Bruce Lilly <blilly@erols.com> + + `Version_string' as C++ object was not visible to linker from C + object files. + Add `const' to `Version_string'. + + * src/utils/pfbtops/pfbtops.c (main), src/roff/groff/groff.cc + (main), src/roff/troff/input.cc (main), src/preproc/tbl/main.cc + (main), src/preproc/pic/main.cc (main), src/preproc/eqn/main.cc + (main), src/preproc/grn/main.cc (main), src/preproc/html/pre-html.cc + (scanArguments), src/preproc/refer/refer.cc (main), + src/preproc/soelim/soelim.cc (main), src/devices/grotty/tty.cc + (main), src/devices/grodvi/dvi.cc (main), src/devices/grolj4/lj4.cc + (main), src/devices/grohtml/post-html.cc (main), + src/devices/grolbp/lbp.cc (main), src/utils/tfmtodit/tfmtodit.cc + (main), src/utils/hpftodit/hpftodit.cc (main), + src/utils/lookbib/lookbib.cc (main), src/utils/indxbib/indxbib.cc + (main), src/utils/lkbib/lkbib.cc (main), + src/utils/addftinfo/addftinfo.cc (main): Implement it. + + * src/roff/groff/pipeline.c: Add _UWIN. + * src/include/nonposix.h: Ditto. + +2001-04-20 Werner LEMBERG <wl@gnu.org> + + * src/include/lib.h: Use HAVE_STRERROR. + * src/roff/groff/pipeline.c: Ditto. + * src/preproc/html/pre-html.cc: Remove declaration of `strerror'. + * src/libs/libgroff/Makefile.sub (version.cc): Add `extern "C"'. + * src/utils/pfbtops/pfbtops.c: Add copyright notice. + * win32-diffs: Updated. + * src/utils/hpftodit/hpftodit.cc (read_map): Fix compiler warning. + +2001-04-19 Werner LEMBERG <wl@gnu.org> + + * src/preproc/html/pre-html.cc (scanArguments): Use `troff_command' + instead of hardwired `"troff"'. + (char_buffer::read_file): Remove unused variables. + (char_buffer::write_file_troff): Ditto. + (char_buffer::write_file_html): Ditto. + (generateImages): Ditto. + (abs): Removed. + * src/utils/addftinfo/addftinfo.cc (main): Fix compilation problem. + + * src/include/lib.h: Don't include `groff-getopt.h' for UWIN. + + * src/libs/libgroff/font.cc (font::load_desc): Fix compiler warning. + * src/libs/libbib/index.cc (index_search_item_iterator::get_tag, + index_search_item::search1): Ditto. + * src/roff/troff/node.h (width_list): Reorder members. + * src/roff/troff/input.cc (do_define_macro): Fix compiler warning. + (lookup_warning): Ditto. + (prepend_string): Commented out. + * src/roff/troff/dictionary.cc (is_good_size): Fix compiler warning. + * src/roff/troff/reg.cc (number_value_to_ascii): Ditto. + * src/preproc/tbl/main.cc (process_format): Ditto. + * src/preproc/pic/pic.y (define_variable, reset, reset_all): Fix + compiler warnings. + * src/preproc/pic/pic.cc: Updated. + * src/preproc/eqn/lex.cc (init_table): Fix compiler warnings. + * src/preproc/eqn/over.cc (over_box::compute_metrics): Ditto. + * src/preproc/refer/command.cc (execute_command): Ditto. + * src/preproc/refer/ref.cc (sortify_title, find_month): Ditto. + * src/preproc/refer/token.cc (lookup_token): Ditto. + * src/preproc/soelim/soelim.cc: Ditto. + * src/preproc/html/pushbackbuffer.cc (ERROR): Ditto. + (isHexDigit): Commented out. + (pushBackBuffer::isString): Remove unused variable. + * src/devices/grops/ps.cc (ps_printer::special): Fix compiler + warning. + * src/devices/grops/psrm.cc (resource_manager::lookup_font, + resource_manager::read_resource_arg, read_one_of, parse_extensions): + Ditto. + * src/devices/grodvi/dvi.cc (dvi_printer::draw): Ditto. + * src/devices/grolj4/lj4.cc (lj4_font::handle_unknown_font_command, + lookup_paper_size): Ditto. + * src/devices/grohtml/post-html.cc (is_subsection): Commented out. + (text_glob, element_list): Reorder members. + * src/devices/grohtml/html-text.cc (html_text::do_pre): Remove + compiler warning. + * src/devices/grohtml/html-text.h (html_text::emit_space): Change + return value to `void'. + * src/devices/grohtml/output.cc (word_list::word_list): Fix order + of initializers. + * src/devices/grohtml/html.h (simple_output::check_newline, + simple_output::space_or_newline, simple_output::enable_newlines): + Add return value. + * src/devices/grolbp/lbp.cc (wp54charset, set_papersize): Remove + compiler warnings. + * src/utils/tfmtodit/tfmtodit.cc (tfm::load, gf::load, main): Ditto. + * src/utils/hpftodit/hpftodit.cc (File::seek, read_symbol_sets, + output_ligatures, output_charset, read_map): Ditto. + * src/utils/lookbib/lookbib.cc (main): Ditto. + * src/utils/indxbib/indxbib.cc (main, fwrite_or_die): Ditto. + (do_file): Fix typo (`=' -> `=='). + * src/utils/lkbib/lkbib.cc (main): Remove compiler warning. + * src/utils/addftinfo/addftinfo.cc (main): Ditto. + +2001-04-18 Ruslan Ermilov <ru@FreeBSD.org> + + * src/roff/nroff/nroff.sh: Adding -p (pic) and -t (tbl) options. + Fix usage of GROFF_BIN_PATH. + * src/roff/nroff/nroff.man: Updated. + +2001-04-18 Werner LEMBERG <wl@gnu.org> + + * NEWS: Fixing typos. + Updated. + +Version 1.17 released +===================== + +2001-04-17 Werner LEMBERG <wl@gnu.org> + + * tmac/Makefile.sub (install-data): mdoc.local-s is in current + directory, not in $(srcdir). + +2001-04-16 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: More info on conditionals. + +2001-04-15 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Added some info about groff internals. + + * src/roff/troff/node.cc (make_glyph_node): Emit warning message + about missing special character only if the name is non-null. + +2001-04-14 Werner LEMBERG <wl@gnu.org> + + Removing the grohtml-old device driver which is now obsolete. + + * src/devices/grohtml-old/*: Removed. + * font/devhtml-old/*: Removed. + * src/libs/libgroff/htmlindicate.cc (graphic_start, graphic_end): + Remove comments. + * Makefile.in (CCPROGDIRS, DEVDIRS): Updated. + * test-groff (PATH): Updated. + * tmac/Makefile.sub (NORMALFILES): Updated. + * tmac/an-old.tmac: Remove special code for html-old device. + Replace `html-or-html-old' register with `an-html'. + * tmac/eqnrc: Updated. + * tmac/html-old.tmac: Removed. + * tmac/troffrc, tmac/troffrc-end: Updated. + * tmac/www.tmac: Remove special code for html-old device. + Replace `html-or-html-old' register with `www-html'. + + * src/libs/libgroff/tmpfile.cc (remove_tmp_files), + src/libs/libgroff/htmlindicate.cc (graphic_end), + include/htmlindicate.h, src/preproc/grn/*.cc, + src/roff/groff/env.{cc,h}: Remove `void' parameter if used as a + single argument for consistency with rest of source code. + + * aclocal.m4, tmac/an-old.tmac: Fix copyright. + +2001-04-13 Ruslan Ermilov <ru@FreeBSD.org> + + * src/roff/troff/troff.man: Fixing typos. + +2001-04-13 Werner LEMBERG <wl@gnu.org> + + * doc/pic.ms: Fixing many font switches. + * doc/groff.texinfo: Fixes, additions. + * MORE.STUFF: Updated. + +2001-04-12 Gaius Mulley <gaius@glam.ac.uk> + + * src/devices/grohtml/grohtml.man: Updated manual page regarding + simple anchor. + * src/preproc/html/pre-html.cc (createImage): Fixed right hand + cropping of images. + (removeTempFiles): New function to tidy up temporary files. + * src/preproc/html/pre-html.cc (main): Calls `removeTempFiles()'. + Many fixes to do with the new inline suppress node and image regions + are much tighter. + * src/devices/grohtml/post-html.cc: New method `is_auto_img'. + (generate_img_src): New function. + (html_printer::do_auto_image): Utilizes it. + (do_heading, do_title): Include inline images within their contents. + (html_printer::begin_page): Tidied up comments that are issued to + the html output file. + (html_printer::do_fill): Fixed so that `.nf' works with fonts other + than courier. + (text_glob::is_br): New method used by do_heading. + * tmac/s.tmac: If -Thtml then emit $1 in .IP rather than its + equivalent diversion. + * src/include/html-strings.h: Altered image tags to reflect the + inline image node. + * src/include/htmlindicate.h (html_end_suppress): Added `is_inline' + parameter. + * src/preproc/eqn/main.cc: Will suppress generation of image tags if + it is already inside a pic image. Only emit tags if the argument + `-Tps:html' is present. + * src/preproc/tbl/main.cc: Changes to reflect additional + `html_end_suppress' parameter. + * src/roff/troff/env.cc: Only emit eol tag if a node has been + emitted since the last eol tag was written. + * src/roff/troff/env.h: New boolean `emitted_node'. + * src/roff/troff/input.cc (do_suppress): Handles extra suppress + nodes \O3, \O4, \O5. No longer use `output_low_mark_miny'. + * src/roff/troff/node.cc (check_charinfo): New method. + (troff_output_file::determine_line_limits): Alterations to limit + checking. + * tmac/www.tmac: Changes to reflect new suppress nodes. + +2001-04-12 Bruno Haible <haible@clisp.cons.org> + + * src/devices/grohtml/post-html.cc (html_printer::add_to_sbuf): + Escape the html_glyph in the buffer. + (str_translate_to_html): Output the unescaped escaped_char. + * src/devices/grohtml/html-text.cc (issue_table_begin): Set + `frame=void', not `frame=none'. Add `border=0'. + +2001-04-12 Werner LEMBERG <wl@gnu.org> + + * PROBLEMS: Add some words on how to avoid wrapper macros. + +2001-04-11 Blake McBride <blake@florida-software.com> + + * src/include/nonposix.h (fileno) [_MSC_VER]: Removed. + +2001-04-11 Werner LEMBERG <wl@gnu.org> + + * font/devlbp/Makefile.sub (CLEANADD): Set it. + * tmac/Makefile.sub (CLEANADD): Add tmac.local-s. + * Makefile.in (dist): Don't remove src/xditview/Imakefile, but ... + * Makefile.sub (DISTCLEANFILES): Here. + + * libs/libgroff/new.cc: Include `nonposix.h'. + * win32-diffs: Updated. + +2001-04-10 Ruslan Ermilov <ru@FreeBSD.org> + + Added skeleton macro for defunct macros. + + Updated documentation. + + When inside displays, an empty input line warning should be + suppressed. If another macro call is put inside a display, + all subsequent empty lines found in that display caused a + warning to be emitted. + + * tmac/doc.tmac (doc-defunct-macro): New macro. + (Db, Ds, Ex, Or, Sf): Reimplemented using this macro. + (doc-restore-global-vars): Fixed typo. + (doc-empty-line): Check the `doc-display-depth' register to + determine whether we are inside display or not. + + * tmac/doc-common: Removed `Or' and `Sf' registers. + Moved obsolete `Ds' macro to doc.tmac. + + * tmac/groff_mdoc.man: Bump document date. + Document `.Vt' under ``Variable Types''. + Removed documentation for obsolete `.Or' macro. + +2001-04-10 Werner LEMBERG <wl@gnu.org> + + * NEWS: Updated. + * doc/groff.texinfo: Many fixes, additions, clarifications, etc. + +2001-04-10 Bruno Haible <haible@clisp.cons.org> + + * src/devices/grodvi/dvi.cc (main): Accept --help and --version. + (usage): Add stream argument. Don't exit. + * src/devices/grohtml/post-html.cc (main): Accept --help and --version. + Write --version output to stdout, not stderr. + (usage): Add stream argument. Don't exit. + * src/devices/grohtml-old/html.cc (main): Accept --help and --version. + (usage): Add stream argument. Don't exit. + * src/devices/grolbp/lbp.cc (long_options): Use symbolic getopt.h + constants. + (usage): Add stream argument. Don't exit. + (main): Write --help output to stdout, not stderr. + * src/devices/grolj4/lj4.cc (main): Accept --help and --version. + (usage): Add stream argument. Don't exit. + * src/devices/grops/ps.cc (main): Accept --help and --version. + (usage): Add stream argument. Don't exit. + * src/devices/grotty/tty.cc (main): Accept --help and --version. + (usage): Add stream argument. Don't exit. + * src/preproc/eqn/main.cc (usage): Add stream argument. Don't exit. + (main): Accept --help and --version. + * src/preproc/grn/main.cc (usage): Add stream argument. Don't exit. + (main): Accept --help and --version. + * src/preproc/html/pre-html.cc (usage): Add stream argument. + (scanArguments): Accept --help and --version. + * src/preproc/pic/main.cc (usage): Add stream argument. Don't exit. + (main): Accept --help and --version. + * src/preproc/refer/refer.cc (main): Accept --help and --version. + (usage): Add stream argument. Don't exit. + * src/preproc/soelim/soelim.cc (usage): Add stream argument. Don't + exit. + (main): Accept --help and --version. + * src/preproc/tbl/main.cc (usage): Add stream argument. Don't exit. + (main): Accept --help and --version. + * src/roff/groff/groff.cc (main): Accept --help and --version. + (synopsis): Add stream argument. + (help): Write --help output to stdout, not stderr. + (usage): Add stream argument. Don't exit. + * src/roff/grog/grog.pl: Accept --help and --version. + (help): New sub. + * src/roff/grog/grog.sh: Accept --help and --version. + * src/roff/nroff/nroff.sh: Accept --help and --version. + * src/roff/troff/input.cc (USAGE_EXIT_CODE): Remove macro. + (usage): Add stream argument. Don't exit. + (main): Accept --help and --version. + * src/utils/addftinfo/addftinfo.cc (main): Accept --help and --version. + (usage): New function with stream argument, doesn't exit. + * src/utils/hpftodit/hpftodit.cc (main): Accept --help and --version. + (usage): New function with stream argument, doesn't exit. + * src/utils/indxbib/indxbib.cc (main): Accept --help and --version. + (usage): Add stream argument. Don't exit. + * src/utils/lkbib/lkbib.cc (usage): Add stream argument. Don't exit. + (main): Accept --help and --version. + * src/utils/lookbib/lookbib.cc (usage): Add stream argument. Don't + exit. + (main): Accept --help and --version. + * src/utils/pfbtops/pfbtops.c (usage): Add stream argument. Don't exit. + (main): Accept --help and --version. + * src/utils/tfmtodit/tfmtodit.cc (main): Accept --help and --version. + (usage): Add stream argument. Don't exit. + +2001-04-10 Ruslan Ermilov <ru@freebsd.org> + + Fix indentation in SYNOPSIS. + + Updated to include changes of latest BSD mdoc version (basically, + the only change is that `.Fn' and `.Fc' put a final semicolon after + a function declaration in the SYNOPSIS section). + + * tmac/doc.tmac (doc-in-synopsis-count): Replaced with ... + (doc-in-synopsis-section): New variable. Updated all related + functions. + (doc-indent-synopsis-active): New register. + (Nd, Fn, Fo): Use it. + (Cd): It requires manipulation of \n[doc-indent-synopsis] so that + `.Cd' with long argument line produces indented wrapped lines. + Also, the misplaced `.nop \*[doc-Nm-font]\c'' caused extra + undesirable line break to be output. + (doc-do-func-decl, Nm, Vt, Fn, Fo): Remove extraneous calls to + `.rs'. + (Fn, Fc): Add final `;' to output. + (doc-save-global-vars, doc-restore-global-vars): Updated. + * tmac/doc-common: Remove `Ex' register. + Updated. + * tmac/doc-ditroff, tmac/doc-nroff, tmac/doc-syms: Updated + copyright. + +2001-04-06 Ruslan Ermilov <ru@freebsd.org> + + * tmac/doc.tmac (Cd): Simplify code. + * tmac/groff_mdoc.man: Document some behaviour of `Cd' request. + +2001-04-06 Werner LEMBERG <wl@gnu.org> + + Implement continuous underlining for nroff mode. To do that, a new + request in the ditroff language has been added: `x u N' (N is 0 + or 1). + + \X and \Y are now transparent to end-of-sentence recognition. + + * src/include/printer.h (printer): Add `type' parameter to `special' + method. + * src/libs/libdriver/printer.cc (printer::special): Updated. + * src/libs/libdriver/input.cc (do_file): Handle `x u N'. + + * src/devices/dvi/dvi.cc (dvi_printer::special): Handle only + specials of type `p'. + * src/devices/grohtml/post-html.cc (html_printer::special): Ditto. + * src/devices/grohtml-old/html.cc (html_printer::special): Ditto. + * src/devices/grops/ps.cc (ps_printer::special): Ditto. + * src/devices/grotty/tty.cc: Add new enum CU_MODE. + (glyph::order): New method. + (tty_printer::add_char): Use it. + (tty_printer::special): New method. + (tty_printer::end_page): Implement it. + + * src/roff/troff/node.h (special_node): Add `no_init_string' member. + * src/roff/troff/node.cc (special_node::special_node): Add parameter + to set `no_init_string'. + (special_node::tprint_start): Use it. + (special_node::same, special_node::copy): Updated. + (special_node::ends_sentence): New method. + (troff_output_file::start_special): Add parameter to include + initialization of special conditionally. + + * src/roff/troff/env.h (environment): New member `underline_spaces'. + * src/roff/troff/env.cc (do_underline_special): New function. + (environment::set_font): Use it. + (do_underline): Use it. This was `underline()'. + (underline): Call `do_underline()'. + (continuous_underline): New function which calls `do_underline()'. + (environment::newline): Use `do_underline_special()'. + (init_env_requests): Updated. + + * NEWS, man/troff_out.man: Updated. + +2001-04-06 Bruno Haible <haible@clisp.cons.org> + + * font/devutf8/R.proto: Fix code of 'shc'. + +2001-04-06 Ruslan Ermilov <ru@freebsd.org> + + Many fixes. Diag lists can now be nested also; additionally, + `-compact' and `-offset' are supported. + + * tmac/doc.tmac (doc-have-indent): Replaced with ... + (doc-list-have-indent-stackXXX): A new register stack. + (doc-have-diag-list): Removed. + (Bl): Use `doc-list-have-indent-stackXXX'. + (El): Updated. + (doc-diag-list): Use `doc-compact-list-stackXXX'. + (doc-tag-list): Use `doc-list-have-indent-stackXXX'. + (doc-set-vertical-and-indent): Ditto. + (doc-next-list-depth): Removed. + (doc-increment-list-stack): Updated. + (doc-decrement-list-stack): Use `doc-list-depth' instead of + `doc-next-list-depth'. + (doc-end-list, doc-end-column-list): Don't use + `doc-increment-list-stack'. + (doc-set-column-tab): Don't use `doc-list-offset-stackXXX'. + (doc-save-global-vars, doc-restore-global-vars): Updated. + * tmac/doc-common: Updated. + * tmac/groff_mdoc.man: Updated. + * NEWS: Fix typo. + +2001-04-02 Werner LEMBERG <wl@gnu.org> + + * src/devices/grotty/grotty.man: Fix grammatical error. + +2001-03-30 Ruslan Ermilov <ru@freebsd.org> + + Remove .Ld from mdoc package; replace it with special handling of + `...'. + + * tmac/doc-common: Remove `Ld' register. + Uncomment `doc-volume-ds-*' strings. + Remove `doc-operating-system-default'. + (Os): Updated. + * tmac/doc-syms (Ld): Removed. + * tmac/doc.tmac (doc-parse-args, doc-parse-arg-vector): Handle + `...' specially. + * NEWS: Updated. + + * tmac/groff_mdoc.man: Many fixes and updates. + +2001-03-29 Werner LEMBERG <wl@gnu.org> + + * tmac/troffrc-end: Protect data with `.do'. Reported by T. Kurt + Bond <tkb@tkb.mpl.com>. + * tmac/www.tmac: Save compatibility mode. + +2001-03-28 Ruslan Ermilov <ru@freebsd.org> + + * tmac/groff_mdoc.man: Many fixes. + +2001-03-28 Werner LEMBERG <wl@gnu.org> + + * src/preproc/soelim/soelim.man: Document that `.<whitespace>so' + isn't recognized. + +2001-03-27 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac (TP, an-do-tag): Reduce line length while in + diversion. This fixes overlong tags. + +2001-03-26 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Fixed and improved documentation of fonts. + * tmac/doc-syms: Fix error messages. + * tmac/an-old.tmac: Remove incorrect double backslashes. + +2001-03-24 Ruslan Ermilov <ru@freebsd.org> + + * tmac/Makefile.sub: Strip mdoc.local also + * tmac/strip.sed: Fixed. + +2001-03-24 Werner LEMBERG <wl@gnu.org> + + * tmac/doc-nroff, tmac/doc-ditroff: Implement -rSxx switch for + selecting the font size. + * tmac/groff_mdoc.man, NEWS: Document it. + +2001-03-23 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/div.cc (save_vertical_space): Add default argument + to `sv' request. + * src/roff/troff/env.cc (family_change): Make `.fam' accept no + argument to restore previous font family. + * src/roff/troff/troff.man, man/groff.man, NEWS: Updated. + + * doc/groff.texinfo: More fixes and additions (mainly for font + manipulating commands). + + * tmac/groff_mdoc.reference.man: Small updates and renamed to ... + * tmac/groff_mdoc.man: This. The quick reference has been removed. + * tmac/Makefile.sub, NEWS: Updated. + +2001-03-23 Werner LEMBERG <wl@gnu.org> + + Replaced mdoc implementation. The new version is `state of the + art', using almost all new features of groff 1.17 -- it won't run + with older versions. + + * tmac/doc.tmac: Completely rewritten. + * tmac/doc-common: Ditto. + * tmac/doc-nroff: Ditto. + * tmac/doc-ditroff: Ditto. + * tmac/doc-syms: Ditto. + * tmac/mdoc.local: New file. + * tmac/groff_mdoc.samples.man: Replaced with ... + * tmac/groff_mdoc.reference.man: New file, covering mdoc completely. + * tmac/strip.sed: Updated. + * tmac/Makefile.sub: Updated. + * INSTALL: Updated. + + * tmac/groff_man.man: Add `man.local' to the FILES section. + +2001-03-22 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Added many @noindent. + Replaced @end_Example -> @endExample. + Added info whether registers are r/o. + Many other additions and fixes. + +2001-03-21 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Added macro @Var (and some hacks due to bugs + in makeinfo of texinfo 4.0) to be used in @Def* macros. + Improved @Def* macros: Now the exact syntax of request, register, + and escapes is shown. + Added macros for parentheses and brackets to be used in @Def*. + Many fixes and improvements of the documentation. + +2001-03-20 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Added new index: `st' (for strings). + Added macros @Defstr(x). + Added macro @Example (adding @group). + Other minor improvements. + +2001-03-19 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Added two new indices: `es' (for escapes) and + `rq' for requests. `fn' is no longer used. + Added macros @Defreq(x), @Defreg(x), and @Defesc(x). + Removed @Deffn(x). + + * tmac/an-old.tmac (an-p-footer): If `cR' is set, replace page + number with name of man page. + +2001-03-19 Larry Kollar <kollar@alltel.net> + + * doc/groff.texinfo: Complete revision. Added many @Deffn to gain + consistency. + +2001-03-19 Werner LEMBERG <wl@gnu.org> + + * man/groff_font.man: Document `prepro', `postpro', and `print'. + * src/roff/groff/groff.man: Improve documentation of `-l' and `-L'. + * src/devices/grohtml/grohtml.man: Fixing typos. + +2001-03-19 Gaius Mulley <gaius@glam.ac.uk> + + * tmac/s.tmac (@IP): Pass `.ip' html tag. + * tmac/groff_mwww.man: Remove .LINE macro + * tmac/www.tmac (LINE): Add `.ti'. + + * src/devices/grohtml/post-html.cc (html_printer): New member + `indent'. + (html_printer::emit_raw): Use it. + (html_printer::do_linelength): Ditto. + (html_printer::do_pageoffset): Ditto. + (html_printer::do_indentation): Ditto. + (html_printer::do_tempindent): Ditto. + (html_printer::do_break): Ditto. + (html_printer::begin_page): Ditto. + (html_printer::do_indentedparagraph): New function. + (html_printer::troff_tag): Handle `.ip'. + * src/devices/grohtml/html-text.cc (html_text::issue_table_begin): + Add `<td width=...>' handling. + (html_text::do_table): Add parameter. + (html_text::do_indent): Updated. + * src/devices/grohtml/html-text.h: Updated. + +2001-03-16 Gaius Mulley <gaius@glam.ac.uk> + + Introduced simple html tables to implement indentation. + + * src/devices/grohtml/html.h (word, word_list): New structures. + (simple_output): Use it. + * src/devices/grohtml/post-html.cc: Add `INDENTATION'. + (html_printer): Improve indentation handling. + (html_printer::emit_raw): Set `in_table' element. Handle + indentation if set. + (html_printer::write_header): Move conditional downwards. + Don't allow whitespace in tags. + (html_printer::do_linelength): Handle line length and indentation + conditionally. + (html_printer::do_pageoffset): Handle indentation conditionally. + (html_printer::do_indentation): Ditto. + (html_printer::do_tempindent): New function member. + (html_printer::do_fill): Take care of indentation. + (html_printer::do_flush): Finish table. + (html_printer::do_links): Ditto. + (html_printer::do_break): New function for handling `.br' and `.ti'. + (html_printer::troff_tag): Use it. + Handle `.ti'. + (html_printer::flush_globs): Fix. + (html_printer::flush_page): Finish table. + (html_printer::html_printer): Fix error message. Set up + `linelength'. + (html_printer::add_to_sbuf): Remove special handling of character + code 255. + (to_unicode): Remove `stop()'. + (html_printer::write_title): Cleanup. + (html_printer::begin_page): Use `put_string()'. Handle indentation. + (html_printer::~html_printer): Flush text and end the line. + Use `put_string()'. + * src/devices/grohtml/html_text.h: Add more *_TAG enum values. + * src/devices/grohtml/html_text.cc (html_text::end_tag): Fix + emission of tags. + (html_text::start_tag): Disable newlines. + (html_text::table_is_void): New function. + (html_text::issue_table_begin): Ditto. + (html_text::issue_table_end): Ditto. + (html_text::push_para): Better table handling. + (html_text::do_indent): New function. + (html_text::do_table): Ditto. + (html_text::done_table): Ditto. + (html_text::do_tt): Handle PRE_TAG. + (html_text::is_in_table): New function. + (html_text::check_emit_text): Handle tables. + (html_text::do_emittext): Use `nl()'. + (html_text::do_para): Handle table. + (html_text::remove_def): New function. + * src/devices/grohtml/output.cc (word, word_list): Implement + methods. + (simple_output::end_line): Flush last word. + (simple_output::simple_comment): Ditto. + (simple_output::begin_comment): Recoded. + (simple_output::end_comment): Ditto. + (simple_output::comment_arg): Removed. + (simple_output::check_newline): Improve test and flush last word. + (simple_output::space_or_newline): Improved. + (simple_output::write_newline): Replaced with... + (simple_output::nl): This. + (simple_output::put_raw_char): Flush last word. + (simple_output::check_space): Removed. + (simple_output::put_translated_string): Ditto. + (simple_output::put_string): Simplified. + (simple_output::put_number): Updated. + (simple_output::put_float): Ditto. + (simple_output::put_symbol): Removed. + (simple_output::enable_newlines): Add `check_newline()'. + (simple_output::flush_last_word): New function. + + * src/roff/troff/enc.cc (no_fill): Remove call to add_html_tag(). + * src/roff/troff/div.cc (page_offset): Add call to add_html_tag(). + + * tmac/s.tmac (@PP, @IP): Add html conditional code. + * tmac/an-old.tmac (TP): Ditto. + +2001-03-09 Ruslan Ermilov <ru@freebsd.org> + + * mdate.sh: Make it POSIX compliant. + +2001-03-09 Werner LEMBERG <wl@gnu.org> + + Added the `return' request to end a macro immediately. It simply + pops iterators from the input stack until a macro iterator is found. + + * src/roff/troff/input.cc (input_iterator::is_macro, + macro_iterator::is_macro): New member. + (input_return_boundary): New class to signal an immediate return + to while_request(). + (input_stack::add_return_boundary, input_stack::is_return_boundary): + New functions. + (input_stack::clear): Use it. + (input_stack::pop_macro): New function. + (while_request): Use `is_return_boundary()'. + (return_macro_request): New function. + (init_input_requests): Use it. + + * src/roff/troff/TODO: Updated. + * NEWS, src/roff/troff/troff.man, man/groff.man: Document it. + +2001-03-08 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc (input_iterator::is_boundary): Minor + cleanup. + +2001-03-07 Werner LEMBERG <wl@gnu.org> + + Make `\B' more rigid. + + * src/roff/troff/number.cc (parse_expr, parse_term): Add `rigid' + parameter. + (get_number_rigidly): New function. + * src/roff/troff/input.cc (do_expr_test): Use it. + * src/roff/troff/token.h: Updated. + + * src/roff/troff/request.h: Fix typo (init_html_request -> + init_markup_request). + +2001-03-04 Gaius Mulley <gaius@glam.ac.uk> + + Fixed grohtml handling of any named glyph for glyph indexes < 0x80. + Cosmetic changes to `.html-begin', `.html-end', `.html-image' which + are now `.begin', `.end', `.image'. + + * src/devices/grohtml/post-html.cc: Adding UNICODE_DESC_START. + (html_printer::add_to_sbuf): Changing type of `code' parameter. + Use add_char_to_sbuf(). + (to_unicode): New function. + (char_translate_to_html): Changing type of `ch' parameter. + Use `to_unicode()'. + (html_printer::~html_printer): Comment out doctype string. + * src/preproc/html/pre-html.cc (write_end_image): Use `.end' + instead of `.html-end'. + (write_start_image): Use `.begin' and `.image' instead of + `.html-begin' and `.html-image'. + * src/roff/troff/input.cc: Rename `html_level' to `begin_level'. + (html_begin): Renamed to ... + (begin): This. + (html_end): Renamed to ... + (end): This. + (html_image): Renamed to ... + (image): This. + (init_html_requests): Renamed to ... + (init_markup_requests): This. + * tmac/www.tmac: Updated. + +2001-02-28 Bram <bram@avontuur.org> + + * src/libs/libgroff/font.cc (font_widths_cache): Fixing syntax of + constructor. + +2001-02-26 David Leonard <david.leonard@csee.uq.edu.au> + + * doc/meref.me: Fixing some typos. + +2001-02-16 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/node.cc (space_node::get_hyphenation_type): New + method. Return `HYPHEN_MIDDLE' if it was `\:'. + * src/roff/troff/node.h: Updated. + +2001-02-17 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/groff_tmac.man: Fix typo. + +2001-02-16 Werner LEMBERG <wl@gnu.org> + + Fixing a bug which prevented proper end-of-sentence recognition + between an `unformatted' box and the following text. As a + consequence, vertical line distances are no longer preserved in + boxes after a call to `.unformat' -- because boxes aren't + line-oriented (contrary to diversions), this doesn't make sense + anyway. + + * src/roff/troff/node.cc (*node::set_unformat_flag): Add return + value. + (vertical_size_node::set_unformat_flag): New method. + * src/roff/troff/node.hh: Updated. + * src/roff/troff/input.cc (word_space_node::reread, + hmotion_node::reread): Reset `unformat' flag after usage. + (unformat_macro): Append only if `set_unformat_flag()' returns + non-zero. + * src/roff/troff/troff.man: Updated. + +2001-02-15 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/troff.man, NEWS, man/groff.man: Improved + documentation of `asciify' and `unformat' requests. + +2001-02-13 Werner LEMBERG <wl@gnu.org> + + Redesigned the `unformat' request. It is no longer connected with + `asciify' but rather uses new `reread()' methods if the `unformat' + flag is set. Additionally, the handling of space characters after + unformatting has been fixed so that they retain their width. + + * src/roff/troff/node.h (width_list): New structure to store + original widths of spaces. + (node): Added `unformat' member. + Replaced `num_spaces' variable with `orig_width' list. + * src/roff/troff/node.cc (*node::asciify, + asciify_reverse_node_list): Removed `unformat_only' flag and related + code. + (word_space_node::asciify, word_space_node::word_space_node): Use + `orig_width'. + (word_space_node::~word_space_node): New destructor. + (word_space_node::copy): Updated to handle `orig_width'. + (hmotion_node::copy, unbreakable_space_node::copy): Updated. + (*node::merge_space): Update `orig_width' list if necessary. + (*node::set_unformat_flag): New methods to set the `unformat' flag. + * src/roff/troff/enc.cc (environment::space_newline): Use + `width_list'. + (environment::space): Added method to handle space width and + sentence space width as parameters. Use `width_list'. + (environment::make_tab_node): Updated. + * src/roff/troff/env.h: Updated. + * src/roff/troff/input.cc (word_space_node::reread, + unbreakable_space_node::reread, hmotion_node::reread): New methods + to handle nodes specially if `unformat' flag is set. + (do_asciify_macro): Renamed back to ... + (asciify_macro): This. + (unformat_macro): New implementation to simply set the `unformat' + flag. + + * MORE.STUFF: Added more info about deroff. + +2001-02-08 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/node.h (unbreakable_space_node, hmotion_node, + space_char_hmotion_node, overstrike_node): Add `get_hyphen_list()' + and `add_self()' methods to avoid hyphenation. For example, the + hyphen list for `foo\0\0bar' was `foobar', causing insertion of a + soft hyphen after `foo'. Now the hyphen list is correctly + `foo<ignore><ignore>bar'. + +2001-02-05 Yoshiteru Kageyama <yt-kage@cb3.so-net.ne.jp> + + * tmac/groff_tmac.man: Fix `BIR' macro. + +2001-02-04 Werner LEMBERG <wl@gnu.org> + + A new escape sequence `\:', inserting a zero-width break point. + + * src/roff/troff/input.h: Adding `ESCAPE_COLON'. + * src/roff/troff/input.cc (get_copy, token::next, asciify): + Implement it. + * src/roff/troff/node.h (node): Add `is_escape_colon()' virtual + method. + (space_node): Add `was_escape_colon' member. Add `is_escape_colon()' + and `asciify()' methods. + * src/roff/troff/node.cc (space_node::space_node): Updated. + (space_node::asciify): Handle `was_escape_colon'. + * NEWS, src/roff/troff/troff.man, man/groff.man: Document it. + + Handle `\~' similar to other comparable requests. + + * src/roff/troff/input.cc (process_input_stack): Remove now obsolete + label. + (token::next): Move creation of an unbreakable_space_node to... + (token::add_to_node_list): Here. + + Fix a bug which sometimes prevented hyphenation of words connected + with `\~' or `\ ' (and other escape sequences handled as + TOKEN_NODE). This also fixes a hyphenation problem with boxes + (after a call to the `unformat' request). + + * src/roff/troff/env.h (environment::possibly_break_line, + environment::hyphenate_line): Introducing `start_here' parameter. + * src/roff/troff/env.cc (environment::space_newline, + environment::space): Use it. + (environment::possibly_break_line, environment::hyphenate_line): + Implement it. + * src/roff/troff/input.cc (process_input_stack): Use it. + * src/roff/troff/node.h (unbreakable_space_node, hmotion_node, + space_char_hmotion_node, overstrike_node): Add + `get_hyphenation_type()' method. + * src/roff/troff/node.cc (break_char_node::asciify): Don't asciify + if `unformat_only' is active. + +2001-01-30 Werner LEMBERG <wl@gnu.org> + + Implemented new read-only number register `.linetabs' which + returns 1 if in line-tabs mode, 0 otherwise. + + * src/roff/troff/env.h (environment): Add get_line_tabs() member. + * src/roff/troff/env.cc (get_line_tabs): New function. + (init_env_requests): Use it. + * NEWS, src/roff/troff/troff.man, man/groff.man: Document it. + + * VERSION, REVISION: Changing to 1.17.0. + +2001-01-28 Werner LEMBERG <wl@gnu.org> + + Fixed a bug which prevented hyphenation of words which are finished + with `\)'. + + * src/roff/troff/token.h (token): Add enum type + `TOKEN_TRANSPARENT_DUMMY' and method `transparent_dummy()'. + * src/roff/troff/input.cc (token::next, token::description, + get_line_arg, token::add_to_node_list, token::process): Use it. + +2001-01-27 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/div.h (diversion): Add `saved_prev_line_interrupted'. + * src/roff/troff/div.cc (do_divert): Use it. + + * src/roff/troff/input.cc (asciify): Add ESCAPE_RIGHT_PARENTHESIS. + +2001-01-25 Werner LEMBERG <wl@gnu.org> + + Adding the `linetabs' request. If set, tab distances are not + computed relative to the input line but relative to the output line. + + * src/roff/troff/env.h (environment): New member `line_tabs'. + * src/roff/troff/env.cc (line_tabs_request): Implement request. + (environment::environment, environment::copy): Updated. + (environment::distance_to_next_tab): Use `line_tabs'. + (init_env_requests): Register request. + * src/roff/troff/troff.man, man/groff.man, NEWS: Document it. Other + fixes. + +2001-01-24 Werner LEMBERG <wl@gnu.org> + + Introducing a new read-only register `.int' which is set to a + positive value if the last output line is interrupted (i.e., if it + contains `\c'). + + * src/roff/troff/env.cc (init_env_requests): Add it. + * NEWS, src/roff/troff/troff.man, man/groff.man: Document it. + +2001-01-23 Gaius Mulley <gaius@glam.ac.uk> + + * tmac/mwww.tmac: Call `www.tmac', not `arkup.tmac'. + * src/preproc/html/pre-html.cc (findPrefix): New function which + generates the troff executable name via the system prefix. + * src/preproc/eqn/main.cc: Modified warning message. + +2001-01-23 Werner LEMBERG <wl@gnu.org> + + troff's `box' and `boxa' requests didn't preserve temporary + indentation. + + * src/roff/troff/div.h (diversion): Add `saved_saved_indent' and + `saved_target_text_length' members. + * src/roff/troff/div.cc (do_divert): Use them. + + Tabs (but not yet leaders and fields) are now handled correctly by + `asciify' request. + + * node.h (hmotion_node): Add field `was_tab'. + * env.cc (environment::make_tab_node): Set it. + * node.cc (hmotion_node::copy, hmotion_node::asciify): Use it. + + Added new request `unformat' which will, contrary to `asciify', + preserve font information after unformatting (i.e., only nodes + dealing with horizontal space are converted back to input + characters). + + * input.cc (asciify_macro): Renamed to ... + (do_asciify_macro): this, having a new parameter `unformat_only'. + (asciify_macro, unformat_macro): New; using do_asciify_macro. + (init_input_requests): Added `unformat'. + * node.cc (*_node::asciify), asciify_reverse_node_list: Added + parameter to control asciification process. + * node.h (*_node::asciify): Ditto. + * NEWS, src/roff/troff/troff.man, man/groff.man: Document it. + +2001-01-20 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Minor improvement of `.in' documentation. + +2001-01-18 Werner LEMBERG <wl@gnu.org> + + * tmac/ps.tmac: Remove call of psold.tmac. + * tmac/psold.tmac: Comment updated. + * tmac/psnew.tmac: Removed since no longer needed. + * tmac/Makefile.sub, NEWS, src/devices/grops/grops.man: Updated. + + * font/devutf8/R.proto: Adding `shc' glyph. + * font/devutf8/NOTES: Updated. + + * test-groff: Updated. + +2001-01-15 Gaius Mulley <gaius@glam.ac.uk> + + First cut of the new html device driver. Changes to pre-html and + the new grohtml are too numerous to be documented here. + + Stuff related to `html' has been renamed to `html-old' and `html2' + stuff has been renamed to `html' (including directories). The new + html device driver is therefore invoked as `-Thtml'. + + Added new `\O' escape to suppress output (needed by html driver). + + Added functions and code to pass info about input-level commands + (`.in', `.fl', etc.) to html driver. + + Three new functions (.html-begin, .html-end, and .html-image) for + better html handling: `html-begin' will execute the remaining line + if at the outermost nesting level, increasing an internal counter. + `html-end' does the same but decreases the internal counter. + `html_image' puts its arguments into a special node (suppress_node) + to define an image region. + + The `output' request has been removed. + + * tmac/html-tags.tmac: Removed. + * tmac/arkup.tmac: Updated and renamed to ... + * tmac/www.tmac: New file. + * tmac/markup.tmac Updated and renamed to ... + * tmac/mwww.tmac: New file. + * tmac/Makefile.sub: Updated. + * tmac/an-old.tmac: Updated. + * tmac/eqnrc: Updated. + * tmac/groff_man.man + * tmac/groff_markup.man: Updated and renamed to ... + * tmac/groff_mwww.man: New file. + * tmac/groff_tmac.man: Updated. + * tmac/html-old.tmac: Updated and Renamed from html.tmac. + * tmac/html.tmac: Updated and renamed from html2.tmac. + * tmac/pspic.tmac: Updated html support. + * tmac/s.tmac: Added html output support. + * tmac/troffrc, tmac/troffrc-end: Updated. + + * Makefile.in, doc/Makefile: Updated. + * doc/groff.texinfo: Added info about new `\O' escape. + * doc/homepage.ms: Use `MAILTO' macro. + + * font/devhtml/DESC.proto: Add `C' font. + * font/devhtml/Makefile.sub: Updated. + * font/devhtml/R.proto: Minor fixes. + * font/devhtml-old/Makefile.sub: Updated. + + * src/devices/grohtml-old/Makefile.sub: Updated. + + * src/libs/libdriver/printer.cc (printer::get_font_from_index): New + method. + * src/libs/libgroff/htmlindicate.cc (html_begin_suppress, + graphic_start): Add `inline' parameter. Update. + (html_end_suppress, graphic_end): Update. + + * src/include/html-strings.h: New file. + * src/include/htmlindicate.h: Comments updated. + * src/include/printer.h: Updated. + + * src/preproc/eqn/main.cc (do_file, main): Updated. + * src/preproc/pic/troff.cc (troff_output::start_picture, + troff_output::finish_picture): Updated. + * src/preproc/tbl/main.cc (process_input_file): Updated. + + * src/roff/groff/groff.cc (main): Updated. + Pass device arguments to predrivers also. + Use `ps' device for `eqn' preprocessor if `-Thtml' is given. + * src/roff/troff/env.h (environment): Updated. + New elements `need_eol' and `ignore_next_eol' (for html output). + * src/roff/troff/env.cc (environment::environment): Add initializers + for `need_eol' and `ignore_next_eol'. + (environment::add_html_tag_eol, environment::add_html_tag_tabs): New + functions. + (point_size, fill, no_fill, center, right_justify, line_length, + indent, temporary_indent, break_request, handle_tab): Use + `add_html_tag()'. + (set_tabs): Use `add_html_tag_tabs()'. + (environment::add_html_tag): Updated. + (environment::do_break): Updated. + * src/roff/troff/div.cc (space_request, flush_output): Use + `environment::add_html_tag()'. + * src/roff/troff/input.cc: Updated. + New variable `html_level' to indicate nested `html-begin' requests. + (file_iterator::fill): Use `environment::add_html_tag_eol()'. + (non_interpreted_char_node, token_node, non_interpreted_node): Add + `force_tprint()' method. + (token::next): Handle `\O'. + (do_suppress): Implement it. + (html_begin, html_end, html_image): New functions. + (init_output_requests): Renamed to ... + (init_html_requests): this. + (main): Use it. + (macro::append_str, macro::append_unsigned, macro::append_int): New + methods. + New variable `output_low_mark_miny' to limit minimal value of y. + (reset_output_registers): Use it. + (output_request): Removed. + (get_output_registers): New function. + * src/roff/troff/node.h (node): Make `force_tprint()' virtual. + (*_node): Added `force_tprint()' if necessary. + (special_node): New elements `tf' and `get_tfont()'. + (suppress_node): New class. + * src/roff/troff/node.cc: + New global variables `image_no' and `suppress_start_page'. + (real_output_file): New method `is_on()'. + (troff_output_file): New method `start_special(tfont)'. + (troff_output_file::really_print_line): Use `tprint' conditionally. + (real_output_file::print_line): Updated. + (real_output_file::on): Updated. + (*_node): Added `force_tprint()'. + (special_node::special_node): Initializer updated. + (special_node::same, special_node::copy, special_node::tprint_start): + Updated. + (get_reg_int, get_reg_str): New functions. + (suppress_node::*): New methods. + New global variables last_position, last_image_filename; + (min): New inline function. + * src/roff/troff/reg.h, src/roff/troff/request.h, + src/roff/troff/troff.h: Updated. + +2001-01-13 Werner LEMBERG <wl@gnu.org> + + * NEWS, src/roff/troff/troff.man, doc/groff.texinfo: Fix + documentation of `asciify' request. + +2001-01-12 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc: Move definition of special characters + like `ESCAPE_TILDE' to ... + * src/roff/troff/input.h: New file. + * src/roff/troff/Makefile.sub (HDRS): Add it. + + Extending the .asciify request to `unformat' space characters also. + + * src/roff/troff/node.h (word_space_node): Add `num_spaces' element + to count input space characters. + Update constructors to take care of it. + * src/roff/troff/node.cc (space_char_hmotion_node::asciify): Use + `ESCAPE_SPACE' instead of normal space. + (word_space_node::asciify): New method. + (unbreakable_space_node::asciify): New method. + (word_space_node::merge_space): New method. + * src/roff/troff/env.cc (environment::space_newline, + environment::space): Add code to initialize `num_spaces' (using the + constructor of `word_space_node'). + * NEWS, src/roff/troff/troff.man, man/groff.man, doc/groff.texinfo: + Document it. + +2001-01-09 Werner LEMBERG <wl@gnu.org> + + * man/groff_char.man: Use table header traps only conditionally. + +2001-01-09 Bjarni Ingi Gslason <bjarniig@hi.is> + + * man/groff_char.man: Add `' and `' to the `acute' group. + +2001-01-08 Werner LEMBERG <wl@gnu.org> + + Introducing the `box' and `boxa' requests which are similar to + `di' resp. `da' but omitting a partially filled line (which is + restored after ending the diversion). + + * src/roff/troff/div.h (diversion): Add elements to save partially + filled line. + * src/roff/troff/div.cc (do_divert): Add parameter `boxing' to save + partially filled line. + (divert, divert_append): Updated. + (box, box_append): New functions. + (init_div_requests): Use them. + * src/roff/troff/env.h (environment): do_divert() is now a friend. + * NEWS, src/roff/troff/troff.man, man/groff.man: Document it. + + * doc/groff.texinfo: Fix documentation of `lf' request. + +2000-12-25 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/troff.man, NEWS: Document `writem' request. + +2000-12-21 Werner LEMBERG <wl@gnu.org> + + Ignore `ss' request if in compatibility mode. + + * src/roff/troff/input.cc: Make `compatible_flag' non-static. + * src/roff/troff/env.h: Added extern `compatible_flag' declaration. + * src/roff/troff/env.cc (space_size): Use it. + + * doc/groff.texinfo, src/roff/troff/troff.man: Fix documentation of + `ss' request in nroff mode. + + * tmac/an-old.tmac: Fixed some serious bugs introduced with latest + changes. + +2000-12-15 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/troffrc, tmac/troffrc-end: Convert tmac.* to *.tmac. + +2000-12-13 Werner LEMBERG <wl@gnu.org> + + * src/preproc/eqn/Makefile.sub (MAN1): Added neqn.man. + * src/preproc/eqn/neqn.man: Small fixes and additions. + +2000-12-13 Ruslan Ermilov <ru@FreeBSD.org> + + * src/utils/addftinfo/addftinfo.man, src/devices/grops/grops.man: + Fixing typo. + + * src/preproc/eqn/neqn.man: New file. + + * src/preproc/tbl/table.cc (table::print): Fix `indent cannot be + negative' warning. + + * tmac/e.tmac: Add `T&' macro. + Fix `indent cannot be negative' warning. + * tmac/s.tmac: Fix `indent cannot be negative' warning. + +2000-12-07 Werner LEMBERG <wl@gnu.org> + + * src/include/lib.h: Replaced __ALPHA with __alpha symbol. + +2000-12-06 Werner LEMBERG <wl@gnu.org> + + * PROBLEMS: Added info about adding -lPW on HP-UX to satisfy the + `alloca' symbol . + + * MORE.STUFF: Added info about deroff for djgpp. + + * tmac/an-old.tmac, tmac/groff_man.man, doc/groff.texinfo, NEWS: Fix + documentation of -rcR switch. + +2000-12-03 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac: Implementing the -rcR switch (similar to mdoc); + if -rcR=1 (which is now the default in nroff mode), a single, very + long page is created instead of multiple pages: All `ne' and `wh' + requests are put into conditionals; a new macro `an-end' is added to + be called with `em'. + + Some other minor cleanups. + + * NEWS, tmac/groff_man.man, doc/groff.texinfo: Updated. + +2000-12-02 Werner LEMBERG <wl@gnu.org> + + Fixing a bug which prevented hyphenation in words followed + immediately by a TOKEN_NODE (e.g. `\ ', `\~', etc.). + + * src/roff/troff/input.cc (process_input_stack <token::TOKEN_NODE>): + Adding possibly_break_line(). + * src/roff/troff/env.h (environment): Make possibly_break_line() + public. + + Make `\~' usable in .tr request. + + * src/roff/troff/token.h (token_type): Add TOKEN_STRETCHABLE_SPACE. + (token): Add stretchable_space(). + * src/roff/troff/input.cc (token::next, token::delimiter, + token::description, process_input_stack, do_translate, + add_to_node_list, token::process): Use it. + * src/roff/troff/node.h (node): Add fourth parameter to add_char() + for adjusting the space. + * src/roff/troff/node.cc (node::add_char): Implement it. Add code + for stretchable space. + * src/roff/troff/input.cc (token::add_to_node_list): Use it. + (make_node): Add code for stretchable space. + * src/roff/troff/env.cc (environment::add_char): Use it. + * src/roff/troff/input.cc: Add ESCAPE_TILDE special character. + (get_copy, token::next, transparent_translate, asciify): Use it. + + * NEWS, src/roff/troff/troff.man, src/roff/troff/TODO, + doc/groff.texinfo: Updated. + * man/groff.man: Small reorderings. + +2000-11-23 Werner LEMBERG <wl@gnu.org> + + * NEWS: Fixes. + * src/preproc/eqn/main.cc (main): Use `config_macro_path' for -M + option. + * src/roff/troff/input.cc (main): Add `config_macro_path' and + `safer_macro_path' to -M option. + * src/roff/troff/troff.man: Fixes. + +2000-11-22 Werner LEMBERG <wl@gnu.org> + + Use safer path (except for config files) if -U isn't specified. Add + a special macro path (without home and current directory) for config + files. Add home directory to unsafe path for consistency. Don't + include the home directory in the font path. + + * src/libs/libgroff/macropath.cc: Add `config_macro_path', change + `macro_path'. + * src/include/macropath.h: Add `config_macrp_path'. + * src/libs/libgroff/fontfile.cc: Fix font path. + * src/roff/troff/input.cc (process_startup_file): Use + `config_macro_path'. + (main): Select unsafe path if -U is given. + + * src/preproc/eqn/main.cc (main): Fixing search path for + configuration file. + * src/preproc/eqn/eqn.man: Updated. + + * src/roff/troff/troff.man, man/roff.man, tmac/groff_tmac.man: + Updated. + + * src/preproc/grn/grn.man, src/devices/grodvi/grodvi.man, + src/devices/grohtml/grohtml.man, src/devices/grolbp/grplbp.man, + src/devices/grolj4/grolj4.man, src/devices/grops/grops.man, + src/devices/grotty/grotty.man: Updated. + + * Makefile.in: Fix comments. + +2000-11-17 Werner LEMBERG <wl@gnu.org> + + * tmac/safer.tmac: Empty file added (again) for compatibility + reasons. + * tmac/Makefile.sub: Updated. + +2000-11-16 Werner LEMBERG <wl@gnu.org> + + * src/devices/grodvi/dvi.cc (main), + src/devices/grohtml2/post-html.cc (main), + src/devices/grolbp/lbp.cc (main), src/devices/grolj4/lj4.cc + (main), src/devices/grops/ps.cc (main), src/devices/grotty/tty.cc + (main), src/preproc/eqn/main.cc (main), src/preproc/grn/main.cc + (main), src/preproc/html2/pre-html.cc (main), + src/preproc/pic/main.cc (main), src/preproc/refer/refer.cc (main), + src/preproc/soelim/soelim.cc (main), src/preproc/tbl/main.cc + (main), src/roff/groff/groff.cc (main), src/roff/troff/input.cc + (main), src/utils/hpftodit/hpftodit.cc (main), + src/utils/indxbib/indxbib.cc (main), src/utils/lkbib/lkbib.cc + (main), src/utils/lookbib/lookbib.cc (main), + src/utils/pfbtops/pfbtops.c (main), src/utils/tfmtodit/tfmtodit.cc + (main): Use stdout for -v. + * src/roff/groff/groff.cc (run_commands), + src/roff/groff/pipeline.c (run_pipeline): New parameter `no_pipe' + to make direct printing to stdout possible. + * src/roff/groff/pipeline.h: Updated. + + * src/utils/afmtodit/afmtodit.pl: Add -v switch. + * src/utils/afmtodit/Makefile.sub (afmtodit): Use @VERSION@. + * src/utils/afmtodit/afmtodit.man: Updated. + + * src/utils/addftinfo/addftinfo.cc (main): Add -v switch. + (version): New function. + (usage): Updated. + * src/utils/addftinfo/addftinfo.man: Updated. + + * src/devices/*/*, src/preproc/*/*, src/roff/*/*, src/utils/*/*: + Fixing copyright dates. + + * src/preproc/eqn/neqn.sh: Adding GROFF_BIN_PATH to path instead of + replacing it. + + * src/devices/grolbp/lbp.cc (main): Use Version_string instead of + version_string. + + * src/roff/nroff/Makefile.sub (nroff): Fix use of @VERSION@. + +2000-11-15 Werner LEMBERG <wl@gnu.org> + + In all programs, make -v return immediately with exit status 0 to + be compliant with the GNU standard. + + * src/devices/grodvi/dvi.cc (main), + src/devices/grohtml2/post-html.cc (main), + src/devices/grolbp/lbp.cc (main), src/devices/grolj4/lj4.cc + (main), src/devices/grops/ps.cc (main), src/devices/grotty/tty.cc + (main) src/preproc/eqn/main.cc (main), src/preproc/grn/main.cc + (main), src/preproc/html2/pre-html.cc (main), + src/preproc/pic/main.cc (main), src/preproc/refer/refer.cc (main), + src/preproc/soelim/soelim.cc (main), src/preproc/tbl/main.cc + (main), src/roff/groff/groff.cc (main), src/roff/troff/input.cc + (main): Implement it. + * NEWS: Updated. + + * src/roff/groff/groff.cc (main): Add copyright notice. Add refer + and postprocessors to the -v option. + + * src/roff/grog/grog.pl: Implement -v. + * src/roff/grog/Makefile.sub (grog): Use @VERSION@. + * src/roff/grog/grog.man, doc/groff.texinfo: Updated. + + * src/roff/nroff/nroff.sh: Implement -v. + * src/roff/nroff/Makefile.sub (nroff): Use @VERSION@. + * src/roff/nroff/nroff.man: Updated. + + * src/preproc/eqn/main.cc (main): Fix comment typo. + + * MORE.STUFF: Added info about djgpp port of grap. + +2000-11-14 Werner LEMBERG <wl@gnu.org> + + * src/roff/grog/grog.{pl,sh}: Implemented -C switch for compatibility + mode (or rather, implemented non-compatibility mode). + * NEWS, src/roff/grog/grog.man, doc/groff.texinfo: Updated. + + * src/roff/groff/groff.cc (main): Add BIN_PATH to PATH instead of + replacing it -- we don't find gxditview otherwise. + * NEWS, src/roff/groff/groff.man, doc/groff.texinfo: Updated. + + * src/preproc/pic/depend: Removed. Unnecessary. + + Implemented dummy keyword `solid' in pic for compatibility with + AT&T pic. + + * lex.cc (lookup_keyword): Added `solid'. + * pic.y: Added SOLID with dummy rule. + * pic.cc, pic_tab.h: Regenerated. + * doc/pic.ms: Updated. + +2000-11-13 Werner LEMBERG <wl@gnu.org> + + For security reasons, don't use the current directory but the home + directory while searching and scanning troffrc and troffrc-end. + Similarly, replace the current directory with the home directory + in the font path. + + * Makefile.in (fontpath, tmacpath): Remove current directory. + + * src/libs/libgroff/searchpath.cc (search_path::search_path): Add + two parameters `add_home' and `add_current'. + (search_path::~search_path, search_path::command_line_dir, + search_path::open_file): Remove tests for `dirs' being zero. + * src/include/searchpath.h: Adjust. + * src/libs/libgroff/macropath.cc, src/include/macropath.h: Add + `safer_macro_path'. + * src/libs/libgroff/fontfile.cc: Adjust `font_path'. + + * src/roff/troff/troff.h: Add `searchpath.h' and `mac_path'. + * src/roff/troff/input.cc: Use `mac_path', initialized with + `macro_path'. + (process_startup_file): Set `mac_path' to `safer_macro_path'. + * src/roff/troff/env.cc: Use `mac_path'. + + * src/preproc/eqn/main.cc (main): Use `safer_macro_path'. + + * NEWS, man/roff.man, src/roff/troff/troff.man, + src/roff/groff/groff.man, tmac/groff_tmac.man, arch/djgpp/README: + Updated. + +2000-11-12 Werner LEMBERG <wl@gnu.org> + + * src/include/lib.h: Don't include groff-getopt.h for OSF/1. + + * aclocal.m4 (GROFF_SYS_ERRLIST): Do test in C, not in C++. + * configure.in: Fix typo in comment. + * configure: Regenerated. + + * src/libs/libgroff/*, src/include/*, src/roff/troff/*: Fixing + copyright dates. + +2000-11-08 Werner LEMBERG <wl@gnu.org> + + Add system tmac directory (/usr/local/lib/groff/site-tmac). + + * Makefile.in: Add $(libdir), $(libprogramdir), and $(systemtmacdir). + (uninstall_dirs): Add $(libdir), $(libprogramdir), and + $(systemtmacdir). + Use @libdir@. + * Makefile.comm (.man.n): Add @SYSTEMMACRODIR@. + * tmac/Makefile.sub (install_data): Create + $(systemtmacdir) and $(localtmacdir). + (uninstall_sub): Use $(systemtmacdir) for wrapper macros. + * man/roff.man, src/roff/troff/troff.man, src/roff/groff/groff.man, + NEWS, doc/groff.texinfo: Updated and minor fixes. + + * Makefile.comm, Makefile.in: Added tmac_{s,an}_prefix stuff again. + * tmac/Makefile.sub: Added `wrap' stuff again, but installing into + $(systemtmacdir) since the wrapper files are platform-dependent. + +2000-11-01 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Fix typo. + +2000-10-26 Werner LEMBERG <wl@gnu.org> + + Convert macros `tmac.XXX' to `XXX.tmac'. Special cases: + tmac.doc.old -> doc-old.tmac + tmac.an.old -> an-old.tmac + + * tmac/tmac.*: Moved to ... + * tmac/*.tmac: this. + * tmac/man.local: Fix comment. + * tmac/groff_man.man, tmac/groff_markup.man, tmac/groff_mdoc.man, + tmac/groff_me.man, tmac/groff_ms.man, tmac/groff_tmac.man: Updated. + Added some `FILES' sections. More use of @...@ directives. Other + minor updates. + * arch/djgpp/README, font/devutf8/NOTES: Updated. + * doc/homepage.ms, doc/groff.texinfo: Updated. + * man/groff.man, man/roff.man: Updated. + * src/devices/grodvi/grodvi.man, src/devices/grolbp/grolbp.man, + src/devices/grolj4/grolj4.man, src/devices/grops/grops.man, + src/devices/grotty/grotty.man: Updated. + * src/preproc/pic/pic.man: Updated. + * src/roff/grog/grog.pl, src/roff/grog/grog.sh: Use -mdoc-old + instead of -mdoc.old. + * src/roff/grog/grog.man: Document -mdoc and -mdoc-old. + * src/roff/nroff/nroff.man: Updated. + * NEWS: Updated. + + * tmac/fixmacros.sed, tmac/strip.sed: Add explanatory comment. + + * tmac/mm.diff: Removed -- it has no use now since the mm package + is part of groff. + + * tmac/*: Removed trailing spaces. + + * arch/djgpp/t-groff.bat: Fix GROFF_TMAC_PATH (hyphen.us is now in + the tmac subdirectory also). + + * Makefile.comm, Makefile.in: Remove tmac_{s,an}_prefix stuff. + * tmac/Makefile.sub: Adapted to new macro names; removed `wrap' + stuff since it is no longer needed. + + * README, PROBLEMS: Updated. + +2000-10-25 Werner LEMBERG <wl@gnu.org> + + Invert current behaviour: Search first FOOBAR.tmac, then + tmac.FOOBAR. + + * src/roff/troff/input.cc: Introduce MACRO_POSTFIX. + (open_mac_file, macro_source): Implement it. + * src/roff/troff/troff.man, tmac/groff_tmac.man, man/roff.man, + doc/groff.texinfo, NEWS: Document it. + + * src/roff/nroff/nroff.man, src/roff/groff/groff.man, man/groff.man: + Small documentation improvements. + + * test-groff: Fix GROFF_TMAC_PATH (hyphen.us is now in the tmac + subdirectory also). + + * font/devps/Makefile.sub: Fix rules for dingbats.*map. + +2000-10-24 Werner LEMBERG <wl@gnu.org> + + Add local tmac directory (groff/site-tmac). + + * Makefile.in: Add $(localtmacdir). + (uninstall_dirs): Add $(localtmacdir). + * Makefile.comm (.man.n): Add @LOCALMACRODIR@. + * tmac/Makefile.sub (install_data, uninstall_sub): Handle man.local + in $(localtmacdir). Create $(localtmacdir). + * man/roff.man, src/roff/troff/troff.man, NEWS, doc/groff.texinfo: + Updated and minor fixes. + + Rename font/devps/generate/dingbats[r]map to dingbats.[r]map. + + * font/devps/generate/Makefile.sub, arch/djgpp/README: Adjust. + +2000-10-23 Werner LEMBERG <wl@gnu.org> + + Move hyphen.us to tmac directory. + + * src/roff/troff/hyphen.us: Removed. + * src/tmac/hyphen.us: Added. + * src/roff/troff/Makefile.sub, tmac/Makefile.sub: Updated. + + Change installation structure for data files from .../groff/... to + .../groff/<version><revision>/... to be conform with other GNU + programs. + + * Makefile.in, Makefile.comm, src/utils/indxbib/Makefile.sub, + doc/Makefile: Implement it. + * aclocal.m4 (GROFF_PAGE): Add test for new directory structure. + * configure: Updated. + * arch/djgpp/README, font/devutf8/NOTES: Use it. + * NEWS: Document it. + * man/roff.man, tmac/groff_tmac.man: Use @FONTPATH@, @FONTDIR@, and + @MACRODIR@ instead of hard-coded directories. + +2000-10-22 Werner LEMBERG <wl@gnu.org> + + Implement $GROFF_BIN_PATH environment variable (which defaults to + $bindir) used for child programs of groff and similar wrappers. + + * gendefs.sh: Improve documentation. + * Makefile.comm (,man.n), src/include/Makefile.sub (defs.h), + src/preproc/eqn/Makefile.sub (neqn), + src/roff/nroff/Makefile.sub (nroff): Add $(bindir). + * src/preproc/eqn/neqn.sh, src/roff/nroff/nroff.sh: Implement + $GROFF_BIN_PATH. + * src/roff/groff/groff.cc (main): Implement $GROFF_BIN_PATH and + $GROFF_PATH__ (the latter for communication with troff). + * src/roff/troff/input.cc (main): Use $GROFF_PATH__ for $PATH if + set. + * NEWS, src/roff/nroff/nroff.man, src/roff/groff/groff.man, + doc/groff.texinfo: Document it. + + * doc/groff.texinfo: Improve documentation of troff's -a option. + +2000-10-17 Gaius Mulley <gaius@glam.ac.uk> + + * src/roff/troff/node.cc: Fixed calculation of opminx and fixed + non-intrusive eol marker. + (troff_output_file::determine_line_limits): New function. + (troff_output_file::draw): Use it. + * src/roff/troff/env.cc (environment::add_html_tag): Use output() + + output_pending_lines() instead of output_line(). + * src/preproc/eqn/main.cc (do_file): Fix graphic_end(). + * src/preproc/html2/pre-html.cc (char_buffer::write_file_troff, + createImage): Small fixes. + +2000-10-14 Werner LEMBERG <wl@gnu.org> + + Replace tmac.safer with a real secure solution. + + * src/roff/troff/input.cc (open_request, opena_request, pipe_source, + system_request, pipe_output): Disable requests if in safer mode. + * src/roff/groff/groff.cc (main): Remove reference to tmac.safer. + * tmac/tmac.safer, tmac/groff_msafer.man: Removed. + * tmac/Makefile.sub, NEWS, man/roff.man, tmac/groff_tmac.man, + doc/groff.texinfo, src/roff/groff/groff.man, + src/roff/troff/troff.man, arch/djgpp/README: Updated. + + * src/devices/grops/ps.cc (main), src/devices/grops/psrm.cc + (resource_manager::output_prolog): Replace setenv() with putenv(). + +2000-10-09 Werner LEMBERG <wl@gnu.org> + + * src/libs/libbib/map.c, src/libs/libgroff/getcwd.c, + src/libs/libgroff/strtol.c, src/preproc/html2/image.cc, + src/preproc/html2/pre-html.cc, src/preproc/html2/pushbackbuffer.cc, + src/roff/groff/pipeline.c: Removing `#ifndef errno' to avoid + compilation errors with some compilers. It seems that this code + is no longer necessary -- if yes, it is easy to add some #ifdef's + for that particular old-fashioned compiler. + + * MORE.STUFF: Added info about Meta-tbl. + + * doc/groff.texinfo: Added more info about `.if "..."..."'. + +2000-10-07 Werner LEMBERG <wl@gnu.org> + + Adding a new escape sequence \B'...': If the string between + the delimiters is a valid numeric expression, return the character + `1', and `0' otherwise. This is an analogon to \A. + + * src/roff/troff/input.cc (do_expr_test): Implement it. + (token::next): Use it. + * src/roff/troff/troff.man, NEWS, man/groff.man: Document it. + + * tmac/tmac.trace: Made independent from escape character. + +2000-10-06 Werner LEMBERG <wl@gnu.org> + + Adding a new request .dei: define indirect. The first and second + parameter of .dei are taken from string registers instead directly; + this very special request is needed to make tmac.trace independent + from the escape character (which might even be disabled). + + * src/roff/troff/input.cc (do_define_macro): Implement it. + (define_macro_indirect): New function. + (init_input_requests): Use it. + + Adding two requests .ecs and .ecr: Save and restore the escape + character. These two requests are needed to make tmac.trace + independent from the escape character (which might even be + disabled). + + * src/roff/troff/input.cc (save_escape_char, restore_escape_char): + Implement it. + (init_input_requests): Use it. + + * src/roff/troff/troff.man, NEWS, man/groff.man: Updated. + +2000-09-22 Ricardo Soares Guimares <ricardo@conectiva.com.br> + + Adding a new option -P and new environment variable GROPS_PROLOGUE + to grops, selecting a different prologue file (minor modifications + by WL). + + * src/devices/grops/psrm.cc (resource_manager::output_prolog), + src/devices/grops/ps.cc (main): Implement it. + * src/devices/grops/grops.man, NEWS: Document it. + +2000-09-22 Werner LEMBERG <wl@gnu.org> + + * INSTALL: Add info about selecting paper format. + +2000-09-21 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc (main): Fixing compiler warning. + * src/include/{driver.h, lib.h}: Move inclusion of string.h and + strings.h from the former to the latter. + * src/devices/grolbp/lpb.cc, src/include/lib.h: Move strncasecmp() + stuff from the former to the latter. + +2000-09-11 Werner LEMBERG <wl@gnu.org> + + Implementing two new requests .tm1 and .tmc: The former is similar + to .tm but can output leading spaces; its syntax is similar to + defining a string, i.e., a `"' can be used to mark the beginning of + the string to be written to stderr: `.tm1 " test'. The latter is + similar to .tm1 but doesn't write out a final newline character. + + * src/roff/troff/input.cc (terminal1, terminal_continue, + do_terminal): New functions. + (init_input_requests): Use them. + * src/roff/troff/troff.man, NEWS, man/groff.man: Updated. + +2000-09-09 Werner LEMBERG <wl@gnu.org> + + * tmac/groff_mdoc.samples.man: Small fixes. + +2000-09-08 Werner LEMBERG <wl@gnu.org> + + * tmac/groff_mdoc.man: Fixing typo. + +2000-09-02 Werner LEMBERG <wl@gnu.org> + + Implementing a .nop request which does nothing. + + * src/roff/troff/input.cc (nop_request): New function. + (init_input_requests): Use it. + * src/roff/troff/troff.man, NEWS, man/groff.man: Updated. + +2000-09-01 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Added some comments. + +2000-08-30 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/TODO: Updated. + +2000-08-25 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Fix comment how to compile the DVI file. + +2000-08-25 Eli Zaretskii <eliz@is.elta.co.il> + + * font/devps/generate/Makefile (SHELL): Define explicitly to + "/bin/sh", for non-Unix platforms. + (extraclean): Use a more portable "" quoting instead of a + backslash (which doesn't work on DOS/Windows). + + * font/devlj4/generate/Makefile (extraclean): Ditto. + + * font/devdvi/generate/Makefile (extraclean): Ditto. + +2000-08-25 Werner LEMBERG <wl@gnu.org> + + * NEWS, doc/groff.texinfo, tmac/groff_tmac.man, man/roff.man, + src/roff/troff/troff.man: Document Eli's latest changes. + +2000-08-25 Eli Zaretskii <eliz@is.elta.co.il> + + * src/roff/troff/input.cc (open_mac_file, macro_source): Support + macro file names of the form NAME.tmac as well as tmac.NAME. + +2000-08-25 Werner LEMBERG <wl@gnu.org> + + * src/include/posix.h: Remove definition of FILENAME_MAX. + + * src/preproc/html2/pre-html.h, pre-html.cc: Add return type to + `sys_fatal' and `stop' function(). + + * test-groff: Updated. + +2000-08-24 Gaius Mulley <gaius@glam.ac.uk> + + Added the new troff command .output <arg> to suppress output (while + still obeying motion) and also the opminx, opminy, opmaxx, opmaxy + registers (for passing the output dimensions to the output device). + + * src/roff/troff/div.cc (top_level_diversion::output): Use `width' + parameter. + * src/roff/troff/node.h, src/roff/troff/node.cc + (troff_output_file::really_print_line, + ascii_output_file::really_print_line, + supress_output_file::really_print_line): Use `width' parameter. + (troff_output_file::really_on, troff_output_file::really_off, + output_file::on, output_file::off, real_output_file::on, + real_output_file::off, real_output_file::really_on, + real_output_file::really_off): New functions. + (real_output_file:public output_file): New variable `output_on'. + (real_output_file::begin_page, real_output_file::copy_file, + real_output_file::transparent_char, real_output_file::print_line): + Use it. + (real_output_file::print_line): Use check_output_limits. + * src/roff/troff/reg.h, src/roff/troff/request.h, + src/roff/troff/input.cc (assign_registers): New function to remove + two `goto's. + (do_ps_file): Use it. + (check_output_limits, reset_output_registers, output_request, + init_output_requests): New functions. + (init_input_requests): Updated. + + Added new grohtml2 device and html2 preprocessor (coding + not yet finished) which will eventually replace grohtml. + + * Makefile.in, tmac/Makefile.sub, tmac/eqnrc, tmac/troffrc-end: + Updated. + * src/include/htmlindicate.h, src/include/htmlindicate + (html_begin_suppress, html_end_suppress): New functions. + * src/preproc/tbl/main.cc: Use it. + * src/roff/groff/groff.cc: Add support for html2 device (which will + automatically invoke the html2 preprocessor). + * src/roff/troff/input.cc (is_html2): New variable. + * src/roff/troff/troff.h, src/roff/troff/env.h, + src/roff/troff/env.cc (environment::add_html_tag): New function + (uses `is_html2'). + (environment::do_break): Use it. + * font/devhtml2/*: New files. + * src/devices/grohtml2: New device. + * src/preproc/html2: New preprocessor. + * tmac/tmac.html-tags, tmac/tmac.html2: New files. + +2000-08-23 Werner LEMBERG <wl@gnu.org> + + * src/devices/grolbp/lbp.cc: Same workaround for sinix as for AIX. + +2000-08-22 Werner LEMBERG <wl@gnu.org> + + * src/include/lib.h: Provide a fix for IRIX to not include + groff-getopt.h. + +2000-08-18 Werner LEMBERG <wl@gnu.org> + + * configure.in: Don't provide an empty value for SH_SCRIPT_SED_CMD + since some non-GNU sed programs can't handle null regexps. + * configure, src/preproc/eqn/Makefile.sub, + src/roff/grog/Makefile.sub, src/roff/nroff/Makefile.sub: Updated. + + * src/devices/grolbp/lbp.cc: Add an AIX workaround for an autoconf + bug (string.h and strings.h are both needed according to latest + POSIX standard). + + * MORE.STUFF: Added info about unroff and troffcvt. + +2000-08-08 Werner LEMBERG <wl@gnu.org> + + * tmac/tmac.a4: Will now work with ms macros also; -ma4 should be + used before -ms. + + * tmac/tmac.man.old: Remove unused number register. + + * tmac.doc: Minor documentation fix. + +2000-08-07 Paul Eggert <eggert@twinsun.com> + + * src/roff/groff/pipeline.c (is_system_shell): + Fix typo: "monocased_shell" no longer exists. + +2000-08-07 Paul Eggert <eggert@twinsun.com> + + Remove FILENAME_MAX limits. + + * src/roff/groff/pipeline.c (is_system_shell): Do not assume + that the argument length is less than FILENAME_MAX. + * src/libs/libgroff/tmpfile.cc (add_tmp_file): Likewise. + Use struct hack to allocate and free file name. + (struct xtmpfile_list): fname is now part of the structure, + not a pointer to another string. + +2000-08-07 Tom Schmidt <tschmidt@micron.com> + + * src/include/posix.h: Add a default value for FILENAME_MAX. + +2000-08-06 Paul Eggert <eggert@twinsun.com> + + Add support for new BSD-style man pages (with ".Dd" instead of + ".TH"), so that "groff -man" understands both styles, even + when running "groff -man" on a host whose system man page + macros don't support ".Dd". + + * tmac/Makefile.sub (NORMALFILES): Add tmac.an.old. + (stamp-wrap): Source tmac.andoc first when wrapping man macros, + in case the system man macros don't define Dd or TH. + + * tmac/tmac.an.old: Renamed from tmac/tmac.an. + * tmac/tmac.an: New one-line file. + * tmac/tmac.andoc (TH): Adjust to the tmac.an.old file renaming. + +2000-08-06 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/troff.man: Fixing typos. + +Copyright 2000-2001 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. + +Local Variables: +coding: latin-1 +fill-column: 72 +mode: change-log +version-control: never +End: +vim:set autoindent textwidth=72: diff --git a/ChangeLog.118 b/ChangeLog.118 new file mode 100644 index 0000000..a87d02c --- /dev/null +++ b/ChangeLog.118 @@ -0,0 +1,3803 @@ + +Version 1.18.1 released +======================= + +2002-10-08 Werner LEMBERG <wl@gnu.org> + + * doc/webpage.ms, NEWS: Updated. + +2002-10-07 Werner LEMBERG <wl@gnu.org> + + * tmac/doc-common (Ss): Add final `.ns' (similar to `.Sh') to + suppress additional whitespace after the header. + + * tmac/doc-ditroff, tmac/doc-nroff (Am): New string to be in sync + with NetBSD. + + * src/preproc/grn/grn.man, tmac/groff_mdoc.man, NEWS: Updated. + +2002-10-07 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/doc-common(doc-volume-operating-system-ateol): New flag. + (Dt): Use it to improve language localization (especially Russian + and French). + +2002-10-07 Daniel Senderowicz <daniel@synchrods.com> + + * src/preproc/grn/gprint.h (BSPLINE, BEZIER): New macros. + * src/preproc/grn/hdb.cc (DBGetType): Parse spline and bezier + drawing commands. + * src/preproc/grn/hgraph.cc (drawwig): Add parameter to control + curve type. + Call `picurve' for BSPLINE. + (HGPrintElt): Handle BSPLINE. + * src/preproc/grn/README: Document it. + +2002-10-03 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/node.cc (break_char_node::col): New variable. + Updated constructor. + (space_node::tprint, word_space_node::tprint): Call `fill_color' + unconditionally. + (space_node::space_node): Remove assertion. + (break_char_node::add_self): Pass color argument to space node. + * src/roff/troff/input.cc (token::add_to_node_list, token::process): + Ditto. + * src/roff/troff/env.cc (environment::do_break, + environment::add_padding): Ditto. + +2002-10-02 Werner LEMBERG <wl@gnu.org> + + Redesigning color support in troff. Colors are no longer + represented as separate nodes but are now part of glyph nodes and + friends. This fixes the current formatting misbehaviour due to the + changes introduced on 2002-09-20. Some extra code is necessary for + proper grotty support: Without adding color variables to + space-related nodes, the background color would be changed too late. + + * src/roff/troff/node.h, src/roff/troff/node.cc: + s/current_pagecolor/current_fill_color/. + s/current_glyphcolor/current_glyph_color/. + (glyph_color_node, fill_color_node): Removed. + (node::get_glyph_color, node::get_fill_color): New virtual member + functions. + (space_node::col): New variable. + Updated constructors of space_node and derived classes accordingly. + (hmotion_node::col): New variable. + Updated constructors of hmotion_node and space_char_hmotion_node + accordingly. + (vmotion_node::col): New variable. + Updated constructor accordingly. + (draw_node::gcol, draw_node::fcol): New variables. + Updated constructor accordingly. + (special_node::gcol, special_node::fcol): New variables. + Updated constructors accordingly. + (troff_output_file::put_char, troff_output_file::put_charwidth, + troff_output_file::draw): Set glyph and fill color. + (troff_output_file::start_special): Set glyph and fill color. + Always set current font. + (troff_output_file::fill_color, troff_output_file::glyph_color): + Don't call `do_motion'. + (glyph_node::gcol, glyph_node::fcol): New variables. + Updated constructors of glyph_node and ligature_node accordingly. + (glyph_node::get_glyph_color, glyph_node::get_fill_color): New + member functions. + (glyph_node::merge_glyph_node, + kern_pair_node::add_discretionary_hyphen, + node::add_discretionary_hyphen): Updated. + (break_char_node::merge_self): Updated. + (word_space_node::tprint, space_node::tprint, hmotion_node::tprint, + vmotion_node::tprint): Handle color. + (make_glyph_node, make_node, node::add_char): Updated. + + * src/roff/troff/env.cc (environment::space_newline, + environment::space, environment::output_line, environment::do_break, + environment::make_tab_node, environment::add_padding, title): + Updated. + (environment_switch, environment_copy): Don't add color nodes. + + * src/roff/troff/input.cc (do_glyph_color, do_fill_color): Return + nothing. + (token::next): Updated. + \m and \M now are as transparent as \s. + (process_input_stack, token::add_to_node_list, token::process, + read_draw_node): Updated. + (charinfo_to_node_list): Don't add color nodes. + + * doc/groff.texinfo: Updated. + +2002-09-27 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/doc-common (ds-operating-system-FreeBSD-4.*): New version + strings. + +2002-09-27 Colin Watson <cjwatson@debian.org> + + * src/roff/troff/node.cc (bracket_node::copy): Check `list' != 0. + +2002-09-23 Werner LEMBERG <wl@gnu.org> + + * src/devices/grolbp/lbp.cc: Replace `300' with `font::res' where + appropriate. + (DEFAULT_LINEWIDTH_FACTOR): New macro. + (linewidth_factor): New global variable. + (lbp_printer::set_line_thickness): Fix case for size < 0, using + linewidth_factor. + (long_options): Add -w/--linewidth option. + (usage): Updated. + (main): Handle -w option to set linewidth_factor. + (lbp_printer::lbp_printer): Initialize req_linethickness, not + line_thickness. + + * src/devices/grolbp/grolbp.man, NEWS, doc/webpage.ms: Updated. + +2002-09-22 Paco Andrs Verd <pandres@dragonet.es> + + Fixed a bug in the line thickness setting code. + + * src/devices/grolbp/lbp.cc (lbp_printer::req_linethickness): New + variable. + (lbp_printer::set_line_thickness): Pass environment as second + parameter. + Implement it actually. + (lpb_printer::set_char, lbp_printer::draw): Use `req_linethickness' + and `set_line_thickness, depending on the current font size. + +2002-09-21 Werner LEMBERG <wl@gnu.org> + + Some Debian patches. + + * src/roff/groff/pipeline.h (MAX_COMMANDS): Increase to 12. + * src/roff/troff/node.cc (bracket_node::copy): Initialize + `list->last'. + +2002-09-20 Werner LEMBERG <wl@gnu.org> + + * configure: Regenerated with autoconf 2.54. + +2002-09-20 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/env.h (environment): Rename cur_glyph_color to + glyph_color. + Rename cur_fill_color to fill_color. + * src/roff/troff/env.cc: Updated. + +2002-09-20 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/env.cc (title): Copy color status after processing + title. + * src/roff/troff/input.cc (charinfo_to_node_list): Emit glyph and + fill color nodes to reset colors properly. + + * tmac/www.tmac (DC): Fix color handling. + + * src/preproc/pic/pic.man, doc/pic.ms: Document some color issues. + * doc/groff.texinfo: Fixing documentation of `tl' request. + * doc/webpage.ms: Updated. + +2002-09-19 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/env.cc (environent_switch, environment_copy): + Emit glyph and fill color nodes to initialize colors properly. + +2002-09-17 Colin Watson <cjwatson@debian.org> + + * src/roff/troff/env.cc (environment::set_glyph_color, + environment::set_fill_color): Fix typo which prevented \m[] work + correctly. + +2002-09-17 Werner LEMBERG <wl@gnu.org> + + Add left and right italic correction to non-slanted PS fonts. This + is an experimental feature to improve image rendering of grohtml. + + * font/devps/generate/Makefile (RFLAG): New variable, set to `-i 0'. + ({T,H,C,P,N,BM,A,HN}{R,B}, ZD, S, ZDR): Use it. + * font/devps/*: All non-slanted fonts regenerated. + * NEWS: Updated. + +2002-09-16 Werner LEMBERG <wl@gnu.org> + + Add a site-specific font directory. + + * Makefile.in (localfontdir, legacyfontdir): New variables. + (fontpath): Use them. + (MDEFINES, uninstall_dirs): Updated. + * Makefile.comm (.man.n): Add `LOCALFONTDIR' and `LEGACYFONTDIR'. + Remove `FONTPATH' and `MACROPATH'. + + * src/roff/troff/troff.man, NEWS: Updated. + * doc/groff.texinfo (Font Directories): New section. + Other minor fixes. + + * src/devices/grodvi/grodvi.man, src/devices/grohtml/grohtml.man, + src/devices/grolbp/grolbp.man, src/devices/grolj4/grolj4.man, + src/preproc/grn/grn.man: Minor fixes. + + * src/devices/grohtml/post-html.cc (html_printer::do_tab_ts): + Remove unused variable. + +2002-09-11 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo, man/groff_font.man: Clarify argument of \N. + * man/groff_out.man: Fix documentation of 'N'. + +2002-09-09 Gaius Mulley <gaius@glam.ac.uk> + + * doc/Makefile.in (webpage.html): Depend on gnu.eps also. + * src/roff/troff/env.cc (indent): Emit html tag only if break_flag is + set. + * src/devices/grohtml/post-html.cc (text_glob::is_br_ni): Removed. + (text_glob::is_br, html_printer::lookahead_for_tables): Updated. + (html_printer::do_tab_ts): Call `emit_table_header' with `FALSE'. + * src/devices/grohtml/html-text.cc (html_text::start_tag) <P_TAG, + PRE_TAG>: Call `begin' with `FALSE'. + +2002-09-09 Ralph Corderoy <ralph@inputplus.demon.co.uk> + + * src/libs/libgroff/string.cc (string::extract): Fix position of + terminating null byte. + +2002-09-08 Werner LEMBERG <wl@gnu.org> + + Add global option `nospaces' to tbl so that leading and trailing + spaces in data items are ignored. + + * src/libs/libgroff/string.cc (string::remove_spaces): New member + function to remove leading and trailing spaces. + * src/include/stringclass.h: Updated. + + * src/preproc/tbl/table.h (table): Add flag `NOSPACES'. + + * src/preproc/tbl/main.cc (process_options): Handle `nospaces' + option. + Fix typo in error messages. + (process_data): Implement `nospaces' option. + * src/preproc/tbl/tbl.man, NEWS, doc/webpage.ms: Updated. + +2002-09-07 Werner LEMBERG <wl@gnu.org> + + * src/include/config.hin: Add `HAVE_ISATTY'. + * src/libs/libgroff/tmpfile.cc (xtmpfile_list): Drop `const' for + `fname' member. + * src/libs/libgroff/tmpname.cc: Include `time.h'. + * src/libs/libdriver/input.cc (Char): Add `operator==' and + `operator!=' for `char'. + * doc/groff.texinfo: Replace @ifnottex block for top node with + @ifhtml block. + +2002-09-06 Werner LEMBERG <wl@gnu.org> + + * doc/Makefile.in (.texinfo.html): Add -I switch. + * doc/groff.texinfo: Add @ifnottex block for top node to make + translation to HTML work. + +2002-09-05 Gaius Mulley <gaius@glam.ac.uk> + + * src/preproc/html/pre-html.cc (LETTER_LENGTH): Removed. + (get_papersize, determine_vertical_offset): Removed. + (char_buffer::do_image): Always specify letter size. + (main): Updated. + (imageList::createPage): Use -dDEVICEHEIGHTPOINTS instead of + -sPAPERSIZE. + +2002-09-05 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo, tmac/groff_man.man: Improve documentation of + default indentation. + +2002-09-04 Gaius Mulley <gaius@glam.ac.uk> + + * src/preproc/html/pre-html.cc (imageList::createPage): Use + -sPAPERSIZE for gs. + (generateImages): Clean up push-back buffer. + +2002-09-04 Ralph Corderoy <ralph@inputplus.demon.co.uk> + + * doc/groff.texinfo: Minor fixes. + +2002-08-21 Gaius Mulley <gaius@glam.ac.uk> + + * src/preproc/html/pre-html.cc (DEFAULT_LINE_LENGTH): New macro. + (MAX_WIDTH, A4_LENGTH, A4_OFFSET, LETTER_OFFSET): Removed. + (gsPaper): Removed. + (determine_vertical_offset): Use LETTER_LENGTH. + (createPage): Moved to ... + (imageList::createPage): This. + Call gs with -dDEVICEWIDTHPOINTS to avoid cropping. + (imageList::getMaxX): New function. + (createImage): Moved to ... + (imageList::createImage): This. + (imageList::createImages): New function. + (generateImages): Read `maxx' directly. + Updated. + (scanArguments): Don't specify `gsPaper' for `-o'. + (makeTempFiles): Call `xtmpfile' with the last argument set to + `TRUE'. + +2002-08-24 Werner LEMBERG <wl@gnu.org> + + * src/include/nonposix.h (mkdir, WAIT, creat) [_MSC_VER]: Define. + (WAIT, _WAIT_CHILD) [!_MSC_VER]: Define. + * src/preproc/html/pre-html.cc (waitForChild): Use WAIT. + * src/preproc/html/pushback.cc: Include nonposix.h. + * src/roff/groff/pipeline.c: Define strcasecmp and strncasecmp + conditionally. + +2002-08-23 Werner LEMBERG <wl@gnu.org> + + Use $(OBJEXT) for the object file extension. + + * Makefile.comm (.SUFFIXES): Add .obj. + (.cc.obj, .c.obj): New implicit rules. + * Makefile.in (OBJEXT): New variable, initialized from autoconf. + (MDEFINES): Add EXEEXT and OBJEXT. + * */Makefile.sub: s/.o/.$(OBJEXT)/. + +2002-08-22 Werner LEMBERG <wl@gnu.org> + + * INSTALL: Mention texinfo 4.2 as a prerequisite. + +2002-08-21 Gaius Mulley <gaius@glam.ac.uk> + + * src/devices/grohtml/post-html.cc (colType): Make enum global to + the file. + (html_printer::update_min_max, html_printer::add_table_end): New + methods. + (html_printer::lookahead_for_tables): Use them. + Reset page offset correctly. + (html_printer::~html_printer): Add creation of creator comment up. + +2002-08-20 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac (T&): New dummy macro to avoid warning. + * man/groff_tmac.man: Fix typos. + * man/groff_font.man: Minor reordering. + * contrib/eqn2graph/eqn2graph.man (Tp): New macro. + +2002-08-18 Gaius Mulley <gaius@glam.ac.uk> + + Avoid endless loops while scanning for tables. + + * src/devices/grohtml/post-html.cc (list::insert): Set + ptr->right->left. + (html_printer::next_horiz_pos): Add `text_glob' argument; update + all callers. + Return immediately if that argument is NULL. + (html_printer::calc_nf): Don't test if `g' is NULL. + (html_printer::lookahead_for_tables): Use + `glyphs.move_right_get_data'. + Don't test if `g' is NULL. + +2002-08-18 Gaius Mulley <gaius@glam.ac.uk> + + A better fix, replacing fix 2002-08-15, for increasing SIZE. + + * src/devices/grohtml/post-html.cc (char_block): Make `buffer' + a pointer. + (char_block::char_block): Allocate `buffer'. + (char_buffer::add_string): Use it. + +2002-08-15 Werner LEMBERG <wl@gnu.org> + + * src/devices/grops/grops.man, src/devices/grolj4/grolj4.man, + src/devices/grodvi/grodvi.man: Document default line thickness. + +2002-08-15 Gaius Mulley <gaius@glam.ac.uk> + + * src/devices/grohtml/post-html.cc (char_block): Increase SIZE to + 8192. + +2002-08-14 Werner LEMBERG <wl@gnu.org> + + * doc/webpage.ms: Updated. + +2002-08-09 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/node.cc (node::add_char): Call `freeze_space' for + unbreakable space. + +2002-08-08 Aaron Campbell <aaron@monkey.org> + + * src/preproc/pic/object.cc (object_spec::make_move): Fix typo + (&& -> &). + +2002-08-08 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc (read_rgb, read_cmy, read_cmyk): Call + tok.next(). + (read_gray): Ditto. + Don't push back a space but a newline onto the stack. + +2002-08-07 Gaius Mulley <gaius@glam.ac.uk> + + Add fonts `CI', `CB', and `CBI' to grohtml which have been omitted + inadvertently. + + * src/devices/grohtml/post-html.cc (html_printer::end_font, + html_printer::start_font): Handle them. + * src/devices/grohtml/html-text.cc (html_text::do_italic): Don't + reset bold and tt. + (html_text::do_bold): Don't reset italic and tt. + (html_text::do_tt, html_text::do_pre): Don't reset bold and italic. + * font/devhtml/DESC.proto: Add those fonts. + * font/devhtml/Makefile.sub (PROTOFONTS): Updated. + +2002-08-07 Werner LEMBERG <wl@gnu.org> + + * MORE.STUFF: Added gpresent. + + * tmac/trace.tmac: Show nesting level by a corresponding amount of + whitespace before printing the logging message. + +2002-07-31 Colin Watson <cjwatson@debian.org> + + * src/devices/grohtml/html-table.cc (html_table::finish_row): + Initialize `n' to zero. This fixes a segfault on ARM. + +2002-07-30 Werner LEMBERG <wl@gnu.org> + + * doc/grnexmpl.me: Remove calls to .st and .sc which are undefined. + +2002-07-29 Werner LEMBERG <wl@gnu.org> + + * src/preproc/pic/pic.y (print_arg, relative_path): Add missing + final semicolon. + +2002-07-28 Colin Watson <cjwatson@debian.org> + + * src/devices/grohtml/post-html (html_printer::troff_tag): Handle + `.ps'. + (html_printer::html_printer): Initialize `pointsize'. + +2002-07-26 Werner LEMBERG <wl@gnu.org> + + * doc/Makefile.sub (PROCESSEDEXAMPLEFILES): Remove gnu.eps and + gnu.png. + (CLEANNOTSRCDIRADD): Add gnu.eps and gnu.png. + (gnu.eps): Add -rle switch to pnmtops. + (distfiles): Add gnu.eps and gnu.png. + +2002-07-25 Petter Reinholdtsen <pere@hungry.com> + + * src/libs/libdriver/input.cc (Char): Add const to `operator=='. + Add `operator!='. + +2002-07-24 Werner LEMBERG <wl@gnu.org> + + * doc/Makefile.in, doc/Makefile.sub (groff_bin_path): Don't use + ' \+' but ' *' for sed. + (GROFF): Set GROFF_COMMAND_PREFIX to empty value. + +2002-07-23 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Document `papersize' keyword. + * NEWS, man/groff_font.man: Updated. + +2002-07-23 Colin Watson <cjwatson@debian.org> + + Extend papersize keyword to accept more than a single entry. The + first valid will be used. + + * src/libs/libgroff/font.cc (font::load_desc): Implement it. + (font::scan_papersize): Really skip final newline. + * src/preproc/html/pre-html.cc (get_papersize): Ditto. + +2002-07-23 Werner LEMBERG <wl@gnu.org> + + * configure.ac: Test for isatty. + * configure: Regenerated. + * src/include/posix.h: Check HAVE_ISATTY. + * src/roff/troff/input.cc [ISATTY_MISSING]: Removed. + * src/utils/lookbib/lookbib.cc: Include posix.h. + Don't declare isatty. + +2002-07-21 Werner LEMBERG <wl@gnu.org> + + * NEWS: Add `output' request. + + * REVISION: Increased to 1. + +Version 1.18.0 released +======================= + +2002-07-19 Gaius Mulley <gaius@glam.ac.uk> + + Allow internal glyph indices > 0xFF in grohtml for input characters. + + * src/devices/grohtml/post-html.cc (to_unicode): Use `unsigned int' + as parameter. + (html_printer::add_to_sbuf): Use `unsigned int' as first parameter. + Updated all callers. + (html_printer::sbuf_continuation, html_printer::overstrike): Ditto. + (html_printer): Updated. + +2002-07-19 Werner LEMBERG <wl@gnu.org> + + * font/devhtml/R.proto: Updated to HTML 4, adding many glyphs. + * font/devutf8/R.proto: Adding some missing glyphs. + * font/devutf8/NOTES: Updated. + + * tmac/dvi.tmac: Add more composite glyphs. + * tmac/html.tmac: Updated. + + * man/groff_char.man: Add `sum' and `product' entities. + + * NEWS: Updated. + +2002-07-18 Gaius Mulley <gaius@glam.ac.uk> + + Improved table, tab, and indenting support. + + * src/roff/troff/input.cc (file_iterator::suppress_newline_flag, + string_iterator::suppress_newline_flag): Removed. Updated all + function which have used it. + + * src/roff/troff/env.cc: Include `input.h'. + (environment::add_node): Accept 0 as parameter. + (environment::add_html_tag): Add `force' parameter. + Updated all callers. + (environment::add_html_tag_tabs): Ditto. + For the moment, support left-aligned tabs only. + (environment::make_html_tag): New function. + (fill, no_fill): Set .br html tag additionally. + (environment::newline): Emit `eol.ce' or `eol' tag for html. + (environment::add_html_tag_eol): Removed. + (tab_stops::distance_to_next_tab): Add variant for handling + nextpos'. + (environment::distance_to_next_tab): Ditto. + Updated all callers. + (environment::handle_tab): Handle tabs for html. + + * src/roff/troff/env.h: Updated. + + * src/roff/troff/div.cc: Updated all callers of + `environment::add_html_tag'. + + * src/devices/grohtml/html-table.cc, + src/devices/grohtml/html-table.h: New files. + + * src/devices/grohtml/html-text.cc (html_text): New members + `blank_para' and `start_space'. + (html_text::issue_tag): Don't emit TABLE_TAG. + Handle indentation for PRE_TAG and P_TAG. + (html_text::end_tag): Updated. + (html_text::table_is_void, html_text::issue_table_begin, + html_text::issue_table_end): Removed. + (html_text::do_push): Simplified. + [DEBUGGING]: Small fix. + (html_text::push_para): Add new parameter for indentation; updated + all callers. + Handle PRE_TAG. + (html_text::do_indent, html_text::do_table, html_text::done_table, + html_text::is_in_table): Removed. + (html_text::do_pre): Handle P_TAG also. + (html_text::shutdown): Handle p->indent. + (html_text::check_emit_text): Simplified. + (html_text::do_emittext): Reset `blank_para'. + (html_text::do_para): Add new parameter for indentation; updated + all callers. + (html_text::remove_indent): New function. + (html_text::do_space): Handle verbatim text properly. + (html_text::ever_emitted_text, html_text::starts_with_space, + html_text::remove_para_align): New functions. + (html_text::dump_stack_element, html_text::dump_stack): Updated. + + * src/devices/grohtml/html_text.h (HTML_TAG): Remove TABLE_TAG. + Updated. + + * src/devices/grohtml/post-html.cc: Include html-table.h. + (INDENTATION): Removed. + (text_glob): Added many `is_<foo>' functions. + Added table description `tab'. + Added `get_arg',`get_tab_args', `remember_table', and `get_table' + member functions. + (list): Add `insert' and `move_to' member functions. + (page): Add `insert_tag' member function. + (page::dump_page) [DEBUG_TABLES]: Improved. + (html_printer): Add `table' and `max_linelength' elements. + Add many `do_<foo>', `insert_<foo>', `next_horiz_pos', + `lookahead_for_tables', `shutdown_table', `calc_nf', `calc_po_in', + `remove_tabs', `remove_courier_tabs'. + (html_printer::emit_raw): Handle indentation. + (html_printer::do_center, html_printer::write_header): Updated. + (html_printer::is_courier_until_eol): Check for tag. + (html_printer::do_linelength): Handle max_linelength. + (html_printer::do_page_offset, html_printer::do_indentation): Handle + fill_on. + (html_printer::do_tempindent): Updated. + (html_printer::do_indentedparagraph): Removed. + (html_printer::do_indent): Simplified. + (html_printer::do_eol): Use `ever_emitted_text'. + (html_printer::do_flush, html_printer::do_links): Don't call + done_table. + (html_printer::do_break): Handle end_tempindent. + (html_printer::troff_tag): Get argument. + Don't handle `.ip'. + Handle `.tab-ts', `.tab-te', `.col', `tab', and `tab0' tags. + (html_printer::flush_page): Call `lookahead_for_tables'. + Don't call `done_table'. + (html_printer::add_to_sbuf): Always call do_indent. + + * src/devices/grohtml/Makefile.sub: Updated. + + * tmac/an-old.tmac (TP): Don't handle html device specially. + (an-do-tag-html): New function which will be used instead of + `an-do-tag' if html device is used. + + * tmac/html.tmac: Call .po to pass default page offset to grohtml. + + * tmac/s.tmac (@IP): Don't handle html device specially. + (@IP-html): New function which will be used instead of `@IP' if + html device is used. + + * tmac/www.tmac (HTML-NS, HTML-TAG-NS): New auxiliary macros -- this + is a hack which will eventually vanish again. + (PIMG): Handle `-C' option correctly if not html. + (HR): Use HTML-NS. + +2002-07-17 Werner LEMBERG <wl@gnu.org> + + * src/utils/afmtodit/afmtodit.pl: Don't use `-P-' for invoking perl. + +2002-07-14 Eric S. Raymond <esr@thyrsus.com> + + * contrib/pic2graph/pic2graph.*: Use convert(1). + * contrib/eqn2graph/eqn2graph.*: Minor fixes. + +2002-07-14 Bernd Warken <bwarken@mayn.de> + + * tmac/groff_trace.man: New file. + * tmac/Makefile.sub: Updated. + * NEWS: Updated. + +2002-07-13 Werner LEMBERG <wl@gnu.org> + + * src/roff/groff/groff.man: Add some cross references. + +2002-07-12 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc (substring_request): Add warnings for + string indices out of range. + +2002-07-11 Werner LEMBERG <wl@gnu.org> + + * font/devdvi/generate/ec.map: Fix typo (`(l' -> `/l'). + * font/devdvi/*EC: Regenerated. + +2002-07-10 Bernd Warken <bwarken@mayn.de> + + * man/groff_char.man: Updated and extended. + +2002-07-10 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc (length_macro): Renamed to... + (length_request): This. + Move call of `tok.next()' to the very end, otherwise the register + value hasn't been updated yet. + (init_input_requests): Updated. + +2002-07-09 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc (substring_macro): Renamed to... + (substring_request): This. + (init_input_requests): Updated. + * src/roff/troff/request.h: Updated. + +2002-07-08 Robert D. Goulding <goulding@Princeton.EDU> + + * src/roff/grog/grog.sh: Fix typo. + +2002-07-08 Werner LEMBERG <wl@gnu.org> + + * win32-diffs: Updated. + + Handle `papersize' keyword properly in DESC. + + * src/libs/libgroff/font.cc (font::scan_papersize): Fix argument + type. + Updated all callers. + * src/libs/libgroff/paper.cc: Add four more paper formats used by + grolj4. + * src/include/paper.h: Updated. + + * src/devices/grolbp/lbp.cc: Remove unnecessary semicolons. + Other minor C syntax fixes. + (papersize, paperlength, paperwidth): Renamed to `user_*'. + (lbp_printer): Add `papersize', `paperlength', and `paperwidth' + members. + (lbp_printer::lbp_printer): Pass three arguments. + Set paper dimensions properly. + (make_printer, main): Updated. + (handle_unknown_desc_command): Fix error messages. + (main): Handle papersize keyword in DESC properly. + + * src/devices/grolj4/lj4.cc (paper_size): Renamed to + `user_paper_size'. + (lbp_printer::lbp_printer): Pass an argument. + Set paper_size properly. + (handle_unknown_desc_command): Removed. + (make_printer, main): Updated. + * src/devices/grolj4/grolj4.man: Minor documentation fix. + + * man/groff_font.man, NEWS: Updated. + +2002-07-07 Werner LEMBERG <wl@gnu.org> + + Integrated eqn2graph, contributed by Eric S. Raymond. + + * contrib/eqn2graph/{Makefile.sub, eqn2graph.sh, eqn2graph.man}: New + files. + * Makefile.in, NEWS: Updated. + +2002-06-04 Werner LEMBERG <wl@gnu.org> + + Changing the substring request to make it fit better with other + string manipulation functions in other programming languages: + Index 0 is now the first character in the string, and index -1 + indicates the last character. Since this request didn't work + properly anyway in the last release, it doesn't harm too much to + change the syntax. + + * src/roff/troff/input.cc (substring_macro): Use loops to get + the real string length (ignoring COMPATIBLE_SAVE and + COMPATIBLE_RESTORE) and offsets. + Implement change described above. + + * man/groff_char.man, tmac/doc-common (doc-header), tmac/doc.tmac + (doc-do-Bd-args, doc-do-Bl-args): Changed accordingly. + + * NEWS, doc/groff.texinfo, man/groff_diff.man: Updated. + +2002-06-03 Werner LEMBERG <wl@gnu.org> + + Make .chop work with .de1 and friends. COMPATIBLE_SAVE and + COMPATIBLE_RESTORE are completely ignored. + + * src/roff/troff/input.cc (char_list::set, char_list::get): New + functions. + (macro): `length' field renamed to `len'. + Added new field `empty_macro' (1 if macro is empty), to be used + instead of checking `len'. + Updated all callers. + (macro::empty): Updated. + (macro::length, macro::set, macro::get): New functions. + (macro::append): Ignore COMPATIBLE_SAVE and COMPATIBLE_RESTORE. + Set `empty_macro'. + (chop_macro): Check and remove trailing COMPATIBLE_SAVE/ + COMPATIBLE_RESTORE pairs. + (asciify): Ignore COMPATIBLE_SAVE and COMPATIBLE_RESTORE. + * src/roff/troff/request.h: Updated. + + * doc/groff.texinfo: Document .chop's behaviour better. + +2002-06-02 Werner LEMBERG <wl@gnu.org> + + * doc/pic.ms: Fix documentation for the addition of positions. + + * tmac/doc.tmac, tmac/an-old.tmac: Need groff version 1.18. + +2002-06-29 Werner LEMBERG <wl@gnu.org> + + Implementation of string arguments of the form \*[foo arg1 arg2 ...] + + * src/roff/troff/input.cc (have_string_arg): New global variable. + (read_mode): New enumeration. + (read_escape_name): Use it. Update all calls. + (read_long_escape_name): Use it. Update all calls. + Set have_string_arg if appropriate. + (get_char_for_escape_name): Add parameter for handling space + character. + (interpolate_string_with_args, decode_string_args): New functions. + (get_copy, token::next): Call it if necessary. + (interpolate_string): Fix error message. + + * NEWS, doc/groff.texinfo, man/groff.man, man/groff_diff.man: + Document it. + +2002-06-24 Bernd Warken <bwarken@mayn.de> + + * man/groff_tmac.man: Updated and extended. + +2002-06-24 Werner LEMBERG <wl@gnu.org> + + * doc/pic.ms, src/preproc/pic/pic.man: Fix description of `:='. + +2002-06-23 Werner LEMBERG <wl@gnu.org> + + * doc/pic.ms: Improve documentation of composite block objects. + +2002-06-22 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc (init_registers): Add three registers + `seconds', `minutes', and `hours' to hold the current time. + + * NEWS, doc/groff.texinfo, man/groff.man, man/groff_diff.man: + Updated. + +2002-06-20 Werner LEMBERG <wl@gnu.org> + + Make \X accept both `\ ' and `\~', converting them to single space + characters. + + * src/roff/troff/token.h (token): Add TOKEN_UNSTRETCHABLE_SPACE. + (token::unstretchable_space): New inline function. + * src/roff/troff/input.cc (token::next, token::delimiter, + token::description, token::add_to_node_list, token::process): Handle + TOKEN_UNSTRETCHABLE_NODE. + (encode_char): Handle tok.stretchable_space and + tok.unstretchable_space. + + * NEWS, doc/groff.texinfo: Document it.. + +2002-06-19 Werner LEMBERG <wl@gnu.org> + + * src/devices/grops/ps.cc (ps_printer::special): Fix error message. + + * src/devices/grotty/tty.cc (tty_printer::special): Add `sgr' + keyword to enable/disable SGR output. + (tty_printer::change_fill_color): New function. + * NEWS, src/devices/grotty/grotty.man: Document `sgr' special. + + * src/roff/troff/input.cc (output_request): Add missing `tok.next()' + call. + +2002-06-18 Werner LEMBERG <wl@gnu.org> + + Add a `color' request and a `.color' register to control usage of + colours. + + * src/roff/troff/input.cc (disable_color_flag): Replaced with... + (color_flag): This (which is the inverse). + (activate_color): New function. + (main, init_input_requests): Updated. + * src/roff/troff/troff.h, src/roff/troff/node.cc + (troff_output_file::fill_color, troff_output_file::glyph_color): + Updated. + + * NEWS, doc/groff.texinfo, man/groff_diff.man, man/groff.man: + Document the changes. + +2002-06-17 Colin Watson <cjwatson@debian.org> + + Circumvent bug in autoconf 2.53 regarding top_builddir. + + * aclocal.m4 (GROFF_BUILDDIR): s/top_builddir/groff_top_builddir/. + * Makefile.in, doc/Makefile.in: + s/@top_builddir@/@groff_top_builddir@/. + * configure: Regenerated (with autoconf 2.53). + +2002-06-17 Werner LEMBERG <wl@gnu.org> + + * src/libs/libgroff/font.cc (font::load_desc): Fix computation of + `paperwidth' and `paperlength' for the `papersize' keyword. + +2002-06-16 P. Alejandro Lopez-Valencia <dradul@007mundo.com> + + * src/devices/grops/grops.man: Add info about Type 42 fonts. + +2002-06-15 Gaius Mulley <gaius@glam.ac.uk> + + * src/devices/grohtml/post-html.cc (html_printer::emit_raw, + html_printer::do_linelength, html_printer::do_pageoffset, + html_printer::do_indentation, html_printer::do_tempindent, + html_printer::do_break, html_printer::begin_page): Clear indented + text. + * tmac/html.tmac: Disable hyphenation. + +2002-06-15 Werner LEMBERG <wl@gnu.org> + + Don't produce HTML files if utility programs are missing. + + * Makefile.in (make_html, make_install_html): New variables. + (MDEFINES): Updated. + + * aclocal.m4 (GROFF_HTML_PROGRAMS): New function to test for HTML + utility programs. + * configure.ac: Use it. + * configure: Regenerated. + + * doc/Makefile.sub (PROCESSEDEXAMPLEFILES): Move webpage.html to... + (HTMLEXAMPLESFILES): This new variable. + (EXAMPLESIMAGEFILES): Renamed to... + (HTMLEXAMPLEIMAGEFILES): This. + (CLEANADD): Add HTMLEXAMPLEFILES. + (all): Use `make_html'. + (html): New target. + (install_data): Use `make_install_html'. + Move html stuff to... + (install_html): This new target. + (uninstall_sub): Updated. + +2002-06-14 Bernd Warken <bwarken@mayn.de> + + * src/roff/grog/Makefile.sub (grog): Renamed to... + (grog.old): This. + (grog): New rule to always install grog.sh as grog. + +2002-06-08 Bernd Warken <bwarken@mayn.de> + + * src/roff/grog/grog.pl: Fix typo. + +2002-06-07 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Add more info on .tr arguments. + +2002-06-05 Werner LEMBERG <wl@gnu.org> + + * NEWS, src/roff/grog/grog.man, doc/groff.texinfo: Updated. + + * aclocal.m4 (GROFF_MKSTEMP): Include unistd.h. + * configure: Regenerated. + +2002-06-05 Ralph Corderoy <ralph@inputplus.demon.co.uk> + + * src/roff/troff/symbol.cc (table_sizes): Add more values. + + * src/roff/grog/grog.pl, src/roff/grog/grog.sh: Recognize mom. + +2002-06-04 Werner LEMBERG <wl@gnu.org> + + * aclocal.m4 (GROFF_PAGE): Don't use `prefix' directly since it + is not initialized at the time we need it in case `--prefix' hasn't + been set. Check for `ac_default_prefix' also. + Test for `papersize' keyword also and generalize allowed whitespace. + * configure: Regenerated. + + * font/devps/Makefile.sub (DESC): Use `papersize' instead of + `paperlength'. + + * src/libs/libgroff/Makefile.sub (version, revision): Replaced + with... + (src_version, src_revision): New variables to avoid overwriting + from parent make process. + (version.cc): Updated. + + * src/preproc/html/pre-html.cc: Include paper.h and font.h. + (linebuf, linebufsize): New global variables. + (sys_fatal): Use `fatal' to abort properly. + (get_line): New function. + (get_resolution): Use it. + Improve error messages. + (get_papersize): Check `papersize' also. + Use `get_line'. + Improve error messages. + +2002-06-03 Werner LEMBERG <wl@gnu.org> + + * Makefile.comm (CLEANNOTSRCDIRADD): New target for files which + should be removed only if builddir is not srcdir. + (mostlyclean): Handle `CLEANNOTSRCDIRADD'. + (clean): Depend on `mostlyclean'. + (distclean): Depend on `clean'. + (realclean, extraclean): Depend on `distclean'. + (.y.cc, .y.o): Simplified. The output files are no longer written + to srcdir but to builddir. + * Makefile.in (MDEFINES): Add `version' and `revision'. + (uninstall_dirs): Fix order of directories. + * doc/Makefile.sub (version, revision): Removed. + (CLEANADD): Removed grnexmpl.g, groff, groff-*. + Added `HTMLDOCFILES'. + (CLEANNOTSRCDIRADD): New target for grnexmpl.h, groff, groff-*. + * src/preproc/eqn/Makefile.sub, src/preproc/pic/Makefile.sub, + src/preproc/refer/Makefile.sub (YTABC, YTABH): Don't use `srcdir' + as prefix. + + * doc/texinfo.tex (\authortt): New macro. + (\shortcontt): Define. + (\titlepage): Set \tt to \authortt while defining \authorfont. + (\appendixbox): New macro. + (\chapmacro, \appendixentry): Use \appendixbox to get even + indentation for letters. + (\summarycontents): Set \tt. + (\internalpagesize): Add two arguments for real paper width and + height as needed by pdfTeX. + (\letterpaper, \smallbook, \afourpaper, \afivepaper, \afourlatex): + Updated. + (\tempdima, \tempdimb): New temporary dimensions. + (\pagesizesyyy): Updated. + +2002-06-02 Werner LEMBERG <wl@gnu.org> + + Adding a new keyword `papersize' to the DESC file format (similar + but not completely identical to grolbp's extension). grops now has + a -p command line option to override `papersize'. Finally, grolbp + has been adapted to the new syntax. + + * src/libs/libgroff/paper.cc, src/include/paper.h: New files. It + defines and initializes the `papersizes[]' array with NUM_PAPERSIZES + elements. + * src/libs/libgroff/Makefile.sub (OBJS): Add `paper.o'. + (CCSRCS): Add `paper.cc'. + + * src/include/font.h (font): Add `papersize' element. + * src/libs/libgroff/font.cc (font::unit_scale): New helper function. + (font::scan_papersize): New function. + (font::load_desc): Use it for handling `papersize' keyword. + * src/libs/libgroff/fontfile.cc: Initialize `font::papersize'. + + * src/devices/grops/ps.cc: Include paper.h. + (user_paper_length): New global variable. + (ps_printer): Use paper length as initializer. + (make_printer): Updated. + (main): Handle new `-p' option. + * src/devices/grops/grops.man: Updated. + + * src/devices/grolbp/lbp.cc: Include paper.h. + s/papersizes/lbp_papersizes/. + (set_papersize): Use new `papersizes' array. + (handle_unknown_desc_command): Don't handle `papersize'. + (main): Use `font::scan_papersize' for handling `-p' option. + * src/devices/grolbp/grolbp.man: Updated. + + * man/groff_font.man: Document `papersize'. + * NEWS: Updated. + +2002-05-30 Werner LEMBERG <wl@gnu.org> + + * src/devices/grops/TODO: Updated. + * src/devices/grops/grops.man: More info on paper formats. + * man/groff_font.man: Document `paperheight' and `paperwidth'. + +2002-05-29 Werner LEMBERG <wl@gnu.org> + + * doc/Makefile.sub (CLEANADD): Add grnexmpl.g, groff, and groff-* + to list only if srcdir != currdir. + (distfiles): New target. + + * Makefile.in (EXTRADIRS): Add font/devlj4/generate. + (NOMAKEDIRS): New variable. + (DISTDIRS): Use it. + +2002-05-26 Werner LEMBERG <wl@gnu.org> + + Add .output request, similar to \! at top-level. + + * src/roff/troff/input.cc (transparent): Remove unused declaration. + (output_request): New function. + (init_input_requests): Add it. + Sorted. + * NEWS, doc/groff.texinfo, man/groff_diff.man, man/groff.man: + Document it. + + * Makefile.in (MDEFINES): Add INSTALL_INFO. + (prepare_examples): Fix typo. + * doc/groff.texinfo (@direntry): Fix it. + +2002-05-25 Werner LEMBERG <wl@gnu.org> + + Including the doc subdir into groff's Makefile system. + + * aclocal.m4 (GROFF_INSTALL_INFO): New function. + * configure.ac: Use it. + Generate `doc/Makefile'. + * configure: Regenerated. + + * Makefile.in (infodir, INSTALL_INFO): New variables. + (MDEFINES, uninstall_dirs): Updated. + (OTHERDIRS): Add `doc'. + * Makefile.comm (CLEANDIRADD): New variable. + (mostlyclean): Use it. + + * doc/Makefile.sub, doc/Makefile.in: New files. + * doc/Makefile: Removed. + + * NEWS, INSTALL: Updated. + +2002-05-24 Werner LEMBERG <wl@gnu.org> + + * doc/homepage.ms: Renamed to ... + * doc/webpage.ms: This. + Use `.NHR'. + +2002-05-23 Werner LEMBERG <wl@gnu.org> + + Integrating the `mom' macro package, contributed by Peter Schaffter + <df191@ncf.ca>. + + * contrib/mom/*: New subdirectory tree. + * Makefile.in (docdir, exampledir, htmldocdir): New variables to + be used for documentation files. + (MDEFINES, uninstall_dirs): Use them. + (OTHERDIRS): Add contrib/mom. + * Makefile.comm (.man.n): Add @DOCDIR@, @EXAMPLEDIR@, and + @HTMLDOCDIR@. + * MANIFEST, NEWS: Updated. + +2002-05-22 Gaius Mulley <gaius@glam.ac.uk> + + Change syntax of \O: \O[0] suppresses output, \O[1] enables output + if at outer level; at start-up we are at outer level. + + * src/roff/troff/input.cc (do_suppress): Implement it. + Simplify \O[3]. + + Add option -p to show progress information. + pre-grohtml will now render only one page at a time, reducing the + size of needed disk resources enormously. + + * src/preproc/html/pre-html.cc (imagePageStem): Replaced with... + (imagePageName): New global variable. + (psPageName, show_progress, currentPageNo): New global variables. + (html_system): Close saved stderr and stdout handles. + (write_end_image): Accept a parameter to control \O escape. + (write_start_image): Adapted to new \O meaning. + (char_buffer::write_upto_newline): Updated. + (createAllPages): Replaced with... + (createPage): This new function to create a single page for images. + It uses `psselect' from the psutils package. + (removeAllPages): Removed. + (createImage): Updated. + Handle progress display. + (char_buffer::do_html, char_buffer::do_image) [DEBUGGING]: Removed. + (scanArguments): Add option -p. + (makeTempFiles): Updated to create temp files for psPageName and + imagePageName. + (removeTempFiles): Removed. + (main): Updated. + + * src/devices/grohtml/post-html.cc (header_desc::write_headings, + html_printer::write_header): Append `\0' to `buffer'. + (html_printer::do_eol): Depend on `current_paragraph->emitted_text'. + (main): Handle -p. + * src/devices/grohtml/html-text.cc (html_text::dump_stack_element): + Handle `text_emitted'. + (html_text::table_is_void): Slightly rewritten. + (stop): New external symbol. + (html_text::do_push) [DEBUGGING]: Use it and simplify. + (html_text::shutdown): Call `dump_stack'. + (html_text::do_space): Rewritten. + * src/devices/grohtml/grohtml.man: Document -p and the need of + `psselect'. + + * tmac/www.tmac (DC, HTML-DO-IMAGE, HTML-IMAGE-END): Updated to + new \O syntax. + Call \O[0] if `ps4html' is active. + * tmac/s.tmac (@EQ, @EN): Handle html better. + (@TS, TE): Ditto. + * tmac/html.tmac: Don't use black for background colour. + + * src/roff/troff/node.cc: Include `div.h'. + (troff_output_file::really_print_line): Don't use `is_on'. + (troff_output_file::word_marker, troff_output_file::flush_tbuf + troff_output_file::check_charinfo, + troff_output_file::put_char_width, troff_output_file::put_char, + troff_output_file::determine_line_limits, troff_output_file::draw, + real_output_file::begin_page, glyph_color_node::tprintf, + fill_color_node::tprint, hline_node::tprint, vline_node::tprint): + Use `is_on'. + (troff_output_file::really_on): Call `do_motion'. + (suppress_node::tprint): Use `get_page_number' instead of `%' + register. + Call `reset_output_registers' conditionally on `is_on'. + + * doc/groff.texinfo: Document new syntax of \O. + * NEWS, man/groff_diff.man: Updated. + +2002-05-22 Werner LEMBERG <wl@gnu.org> + + * MORE.STUFF: Add info about David Frey's deroff implementation. + Mention troff.org. + +2002-05-16 Werner LEMBERG <wl@gnu.org> + + Pic's `with' attribute now accepts positions. + + * src/preproc/pic/pic.y: Make `.', BOX, CIRCLE, ELLIPSE, ARC, LINE, + ARROW, SPLINE, and `[' left-associative tokens to fix shift/reduce + conflicts. + (object_spec): Add rule for `WITH' and `position'. + (relative_path): Give `corner' the precedence of `CHOP'. + * src/preproc/pic/object.h (path): New members `pos' and + `is_position'. + * src/preproc/pic/object.cc: Updated initializers of `path'. + (path::follow): Handle `is_position'. + + * doc/pic.ms: Completely updated grammar description. + Many typographical improvements. + +2002-05-15 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/env.cc(hyphen_trie::hpf_getc): Accept ^^x (char + code of x in range 0-127) also. + * doc/groff.texinfo, man/groff_diff.man: Updated. + + Added keywords `north', `south', `east', and `west' for corners + in pic. + + * src/preproc/pic/lex.cc (lookup_keyword): Add NORTH, SOUTH, EAST, + and WEST. + (yylex): Handle them. + * src/preproc/pic/pic.y: Add tokens NORTH, SOUTH, EAST, and WEST. + (corner): Handle them. + +2002-05-14 Werner LEMBERG <wl@gnu.org> + + * src/devices/grops/grops.man: Clarify handling of `download' file. + +2002-05-11 Werner LEMBERG <wl@gnu.org> + + Adding `warnscale' and `spreadwarn' requests, based on a patch from + Jeffrey Friedl <jfriedl@yahoo.com>. + + * src/roff/troff/input.cc (spread_limit, warn_scale, + warn_scaling_indicator): New global variables. + (warnscale_request, spreadwarn_requests): New functions. + (main): Initialize `warn_scale' and `warn_scaling_indicator'. + (init_input_requests): Updated. + (error_type): Add `OUTPUT_WARNING'. + (do_error): Handle it. + (output_warning): New warning function which shows output location. + * src/roff/troff/env.h (spread_limit): New external variable. + * src/roff/troff/env.cc (environment::choose_breakpoint): Use + `output_warning'. + (distribute_space): Emit warning if added space is larger than + `spread_limit'. + (environment::possibly_break_line): Emit warning if a line can't + be adjusted on both sides. + + * doc/groff.texinfo, man/groff_diff.man, man/groff.man: Document it. + +2002-05-08 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/node.cc (special_node::special_node): Use + env_definite_font(curenv) instead of curenv->get_font(). Otherwise + \X''\% crashes, for example. + + * doc/groff.texinfo: Document \! and \? used at top-level. + +2002-05-06 Werner LEMBERG <wl@gnu.org> + + * src/preproc/pic/pic.man: Fix some keyword syntax. + Other minor typographical fixes. + + * src/roff/groff/groff.man: Fix typos. + +2002-05-04 Werner LEMBERG <wl@gnu.org> + + * src/roff/groff/groff.man ([ShortOpt]): Renamed to... + (ShortOpt[]): This to avoid problems with refer. + + * doc/pic.ms: Fix typo. + Fix pic grammar description. + + * tmac/an-old.tmac (ne): Use de1, not de. + +2002-05-03 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Finished separation of glyphs and characters. + Don't use the string `Appendix' for appendix headers (both in + the text and the table of contents). + * man/groff_tmac.man, src/roff/troff/troff.man: Fix order of tmac + directories. + + Use registers LL and LT (similar to -ms) for controlling the + length of title and line, respectively, in the -man and -mdoc + macro packages. + + * tmac/doc-ditroff (doc-setup-page-layout), tmac/doc-nroff + (doc-setup-page-layout): Use \n[LL] and \n[LT]. + * tmac/an-old.tmac: Set \n[LL] and \n[LT] if not defined. + (TH): Use \n[LL]. + (an-header, an-p-footer): Use \n[LT]. + * NEWS, tmac/groff_man.man, tmac/groff_mdoc.man, + doc/groff.texinfo: Document it. + +2002-05-02 Werner LEMBERG <wl@gnu.org> + + * doc/fdl.texi: New file. + * doc/groff.texinfo: Include it. + Define and use @copying. + Starting with separating glyph, symbol, and character. + +2002-04-27 Werner LEMBERG <wl@gnu.org> + + * Makefile.in (EXEEXT): Set it. + * src/*/Makefile.sub (PROG): Add $(EXEEXT) for all non-script + programs. + + * src/include/nonposix.h: Define GS_NAME. + * src/preproc/html/pre-html.cc (createAllPages): Use GS_NAME. + + Some preliminary changes for EMX support under OS/2. + + * src/preproc/pic/main.cc (main), src/roff/groff/pipeline.c: Add + __EMX__ similar to __MSDOS__. + * src/utils/indxbib/indxbib.cc (main) [__EMX__]: Use `unlink'. + +2002-04-25 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Integrated groff_out.man. + Some macro fixes. + +2002-04-23 Werner LEMBERG <wl@gnu.org> + + * man/groff_out.man: Minor fixes. + +2002-04-23 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Moving @cindex entries after @Def* to get + correct page references. + Fixed many index entries. + +2002-04-23 Bernd Warken <bwarken@mayn.de> + + * man/roff.man: Enlarged. + +2002-04-22 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: More examples, other fixes. + +2002-04-20 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc (pipe_output): Multiple calls to `pi' + will now form a chain, e.g. + + .pi foo + .pi bar + + is now the same as + + .pi foo | bar + + This is for compatibility with plan 9's troff. + + * tmac/tty.tmac: Set default tab values to 0.8i to be compatible + with UNIX troff. + * NEWS: Updated. + + * doc/groff.texinfo: Add documentation of remaining requests and + registers. + +2002-04-19 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Add documentation of remaining escapes. + + * font/devdvi/generate/tc.map: Remove entry for `sr'. + * font/devdvi/*TC: Regenerated. + +2002-04-18 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc (token::next): Make \H behave consistently + if not in compatibility mode, i.e., increment relative to the + previous height. + * doc/groff.texinfo: Updated accordingly. + +2002-04-17 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Document \\, \e, \E, \., and \c. + +2002-04-16 Bernd Warken <bwarken@mayn.de> + + * src/roff/groff/groff.man: Improve documentation of -P option. + Other minor fixes. + +2002-04-15 Werner LEMBERG <wl@gnu.org> + + Add new escape \F to switch font family. + + * src/roff/troff/input.cc (token::next): Handle \F. + * src/roff/troff/env.cc (environment::set_family): Handle + `interrupted' flag. + * NEWS, doc/groff.texinfo, man/groff_diff.man, man/groff.man: + Document it. + +2002-04-14 Werner LEMBERG <wl@gnu.org> + + * tmac/doc.tmac (doc-tag-list): Use \Z to avoid stretching of + spaces in tags. + +2002-04-13 Werner LEMBERG <wl@gnu.org> + + Implement \f[] as an alternative to \fP. Change \mP and \MP to + \m[] and \M[], respectively. + + * src/roff/troff/symbol.cc (EMPTY_SYMBOL): New global variable. + (symbol::symbol): Handle NULL string and empty string differently. + * src/roff/troff/symbol.h (symbol::is_empty): New inline function. + * src/roff/troff/input.cc (read_escape_name, read_long_escape_name): + Add optional parameter. + Updated calling functions. + (get_copy, do_glyph_color, do_fill_color, token::next): Use + `symbol::is_empty'. + * src/roff/troff/env.cc (environment::set_font): Ditto. + + * src/preproc/pic/troff.cc (troff_output::set_fill, + troff_output::reset_color: Updated. + + * tmac/www.tmac: Updated. + + * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo, + doc/homepage.ms, src/devices/grotty/grotty.man, tmac/groff_www.man: + Updated. + + * tmac/Xps.tmac: Remove some redundant code. + + * tmac/doc-common, tmac/doc-ditroff, tmac/doc-nroff, tmac/doc.tmac, + tmac/dvi.tmac, man/roff.man, man/groff_out.man, man/groff.man, + man/groff_diff.man, src/roff/groff/groff.man: Replace \f[P] with + \f[]. + +2002-04-13 Bernd Warken <bwarken@mayn.de> + + * src/include/printer.h, src/libs/libdriver/printer.cc + (printer::change_fill_color): New member function. + * src/libs/libdriver/input.cc (parse_D_command): Use it. + +2002-04-12 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Completed pass on gtroff reference. + +2002-04-11 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: More fixes. + +2002-04-11 Bernd Warken <bwarken@mayn.de> + + * src/include/color.h: Decorate with `const'. + Use `size_t'. + Include `stddef.h'. + * src/libs/libgroff.color.cc: Decorate with `const'. + Use `size_t'. + (color::color): Initialize members. + * src/libs/libdriver/input.cc (parse_D_command): Handle `f' + command according to the documentation. + + * man/groff_out.man: Updated. + Minor fixes. + +2002-04-11 Gaius Mulley <gaius@glam.ac.uk> + + * src/preproc/html/pre-html.cc (write_start_image): Remove + redundant output. + * tmac/www.tmac (DC, HTML-DO-IMAGE): Ditto. + + * src/devices/grohtml/post-html.cc (page::add_and_encode): Using + \C'hy' caused an assertion failure. + + * src/roff/troff/env.cc (environment::environment): Initialize + `emitted_node'. + (environment::copy): Handle `ignore_next_eol' and `emitted_node'. + +2002-04-10 Werner LEMBERG <wl@gnu.org> + + * man/groff_diff.man, man/groff.man, NEWS, doc/groff.texinfo: + Document pvs request and .pvs register. + +2002-04-09 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Improve and fix documentation of diversions + and environments. + +2002-04-08 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Fix documentation of drawing functions. + Other minor fixes. + +2002-04-07 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Better documentation of double quotes as + arguments. + Other minor fixes. + +2002-04-06 Werner LEMBERG <wl@gnu.org> + + * man/groff_font.man: Document names of special characters better. + * doc/groff.texinfo: Minor improvements. + + * tmac/lbp.tmac: Load latin1.tmac. + * tmac/X.tmac, tmac/Xps.tmac: Load latin1.tmac or cp1047.tmac. + + * font/devX*/*: Regenerated (all chars > 0x80 removed). + +2002-04-05 Werner LEMBERG <wl@gnu.org> + + * tmac/tty.tmac: Don't use shc request. + * tmac/latin1.tmac, tmac/cp1047.tmac: Translate soft hyphen to `\%'. + * NEWS: Updated. + + * man/groff_diff.man: Minor fixes. + + * font/devlbp/*: Remove all `charXXX' entities. + + * src/libs/libgroff/font.cc (font::~font): Deallocate + `special_device_coding'. + (font::load): Use `new' for allocating `special_device_coding'. + * src/libs/libgroff/nametoindex.cc (character_indexer::lookup_char): + Removed unused member. + +2002-04-05 Werner LEMBERG <wl@gnu.org> + + * src/drivers/grops/psrm.cc (skip_possible_newline): New function. + (resource_manager::do_begin_binary, + resource_manager::do_begin_data): Use it. + + * doc/texinfo.tex: Updated to version 4.2. + + * src/roff/troff/token.h: Add TOKEN_ZERO_WIDTH_BREAK for `\:'. + (token::zero_width_break): New inline function. + * src/roff/troff/input.cc (token::next): Use it. + (token::description): Updated. + (encode_char): Ignore `\%', `\&', `\)', and `\:'. + (token::add_to_node_list, token::process): Use it. + * NEWS, doc/groff.texinfo: Updated. + + * src/preproc/eqn/over.cc (over_box::output): Fix typo. + * tmac/tty.tmac: Add missing backslash. + +2002-04-04 Tadziu Hoffmann <hoffmann@usm.uni-muenchen.de> + + * src/preproc/eqn/box.cc (set_script_size, box::top_level): Use + `.ps' register instead of `.s' to handle fractional point sizes. + * src/preproc/eqn/limit.cc (limit_box::compute_metrics, + limit_box::output): Ditto. + * src/preproc/eqn/other.cc (size_box::compute_metrics, + size_box::output): Ditto. + * src/preproc/eqn/over.cc (over_box::compute_metrics, + over_box::output): Ditto. + * src/preproc/eqn/script.cc (script_box::compute_metrics, + script_box::output): Ditto. + * src/preproc/eqn/sqrt.cc (sqrt_box::compute_metrics, + sqrt_box::output): Ditto. + +2002-04-03 Michael Selway <mas@ssl.co.uk> + + * src/drivers/grops/psrm.cc (resource_manager::do_begin_binary): + Fix typo. + +2002-04-03 Werner LEMBERG <wl@gnu.org> + + * doc/homepage.ms: Reduce title size. + * doc/groff.texinfo: Fix documentation of .t register. + Fix handling of colon. + Fix `\' vs. `\\'. + + * src/roff/troff/input.cc (exit_troff): Emit LAST_PAGE_EJECTOR + only if page length is positive to avoid a loop. + + * tmac/an-old.tmac (ne): Increase page length to avoid problems with + tbl. + +2002-04-02 P. Alejandro Lopez-Valencia <dradul@yahoo.com> + + * src/include/nonposix.h, src/roff/groff/pipeline.c: + s/__CYGWIN32__/__CYGWIN__/. + +2002-03-28 Gaius Mulley <gaius@glam.ac.uk> + + * doc/gnu.xpm: New image contributed by Emily Mulley. + * doc/Makefile (gnu.eps, gnu.png): Use pnmdepth. + (homepage.html): Be dependent on gnu.eps. + * doc/homepage.ms: Updated to new image. + + * src/devices/grohtml/post-html.cc (html_printer): New member + `sbuf_prev_hpos'. + (html_printer::flush_sbuf, html_printer::set_char): Set it. + (html_printer::sbuf_continuation): Use it. + +2002-03-28 Werner LEMBERG <wl@gnu.org> + + * src/libs/libgroff/getopt.c: Updated to latest version. + + * tmac/README: More on hyphen.tex license. + +2002-03-26 Larry Kollar <kollar@alltel.net> + + * doc/groff.texinfo: Add documentation of most missing requests. + +2002-03-25 Werner LEMBERG <wl@gnu.org> + + Add three glyphs `t+-', `tmu', and `tdi' which are textual variants + of `+-', `mu', and `di', respectively. + + * font/devascii/R.proto, font/devutf8/R.proto, + font/devlatin1/R.proto, font/devhtml/R.proto, + font/devcp1047/R.proto, font/devlpb/*: Add them. + * font/devps/generate/textmap: Ditto. + * font/devps/*: Regenerated. + * font/devlj4/generate/text.map: Add them. + * font/devlj4/*: Regenerated. + * font/devdvi/generate/tc.map: Use them. + * font/devdvi/generate/texsy.map: Add them. + * font/devdvi/*: Regenerated. + * font/devX*/*: Regenerated. + + * tmac/latin1.tmac, tmac/cp1047.tmac, tmac/tty.tmac, + tmac/tty-char.tmac: Updated. + + * NEWS, man/groff_char.man: Updated. + +2002-03-24 Werner LEMBERG <wl@gnu.org> + + * tmac/dvi.tmac, tmac/X.tmac, tmac/ps.tmac, tmac/html.tmac, + tmac/lj4.tmac, tmac/tty.tmac: Replace most `.char' with `.fchar'. + * tmac/ec.tmac: Remove `.rchar' calls (no longer necessary since + we use `.fchar' in dvi.tmac. + * tmac/dvi.tmac: Improve definition of \[Fo] and \[Fc]. + * tmac/Xps.tmac: Simplify some char definitions. + Add definition for \[f/]. + * man/groff_char.man: Updated for new X.tmac. + + * tmac/README: New file. + +2002-03-23 Phil Lobbes <phil@perkpartners.com> + + * Makefile.comm (.y.o): New rule for make on Solaris 2.5.1 -- the + internal .y.o rule took precedence over the .y.cc rule, compiling + the yacc files with gcc instead of g++. + +2002-03-23 Werner LEMBERG <wl@gnu.org> + + * tmac/dvi.tmac: Add replacement font for `CB'. + + * tmac/doc.tmac: s/request/macro/ in messages. + (doc-generic-macro): Improve error message. + * tmac/groff_mdoc.man: Minor improvements. + +2002-03-22 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Document possible conflict between `tr' and + `char' requests. + +2002-03-21 Werner LEMBERG <wl@gnu.org> + + Improve handling of hyphenation patterns. It is now possible to + use most of TeX's pattern files unmodified. To make the process + more flexible, a new request `hpfcode' has been added which + provides a character code mapping for the `hpf' request. See + comment before hpf_getc() for more details. + + * src/roff/troff/env.cc (insert_hyphenation, hpf_getc): New + functions. + (read_patterns_file): Additional parameter for exception dictionary. + Extended to recognize \pattern, \hyphenation, and \endinput. + (do_hyphenation_patterns_file): Updated. + * src/roff/troff/env.h (hpf_code_table): New extern. + + * src/roff/troff/input.cc (hpf_code_table): New array. + (init_hpf_code_table, hyphenation_patterns_file_code): New + functions. + (hyphenation_code): Handle translation from `trin' correctly. + (main, init_input_requests): Updated. + (charinfo::set_translation): Handle hyphenation code also. + + * src/roff/troff/charinfo.h (charinfo::get_translation_input): New + inline function. + + * src/roff/troff/env.cc (WORD_MAX): Reduced to 256 since `unsigned + char' is used for offsets in hyphenation exceptions. + + * tmac/hyphen.us: Replace with contents of unmodified `hyphen.tex'. + + * NEWS, man/groff_diff.man, man/groff.man: Document it. + +2002-03-20 Larry Kollar <kollar@alltel.net> + + * doc/groff.texinfo: Add documentation for `hpfa' and `trin' + requests. + +2002-03-18 Werner LEMBERG <wl@gnu.org> + + * tmac/html.tmac: Fix serious typo. + +2002-03-17 Larry Kollar <kollar@alltel.net> + + * doc/groff.texinfo: Add documentation for `writec' request. + +2002-03-17 Werner LEMBERG <wl@gnu.org> + + Added request `hpfa' to append hyphenation patterns. + + * src/roff/troff/env.cc (hyphen_trie::read_patterns_file): Add + parameter `append'. + (hyphenation_patterns_file): Renamed to... + (do_hyphenation_patterns_file): This. + (hyphenation_patterns_file, hyphenation_patterns_file_append): New + functions. + (init_hyphen_requests): Updated. + * NEWS, man/groff.man, man/groff_diff.man: Document it. + +2002-03-16 Werner LEMBERG <wl@gnu.org> + + Added request `writec' in analogy to `tmc'. + + * src/roff/troff/input.cc (write_request): Renamed to... + (do_write_request): This. + Added one parameter. + (write_request, write_request_continue): New functions. + (init_input_requests): Updated. + * NEWS, man/groff.man, man/groff_diff.man: Document it. + + * font/devdvi/DESC.in (sizes): Allow all sizes in the range + 5-10000pt. + * NEWS: Document it. + +2002-03-15 Werner LEMBERG <wl@gnu.org> + + * man/groff.man: Add writem request. + + Add request `trin' (translate input) to make `.asciify' work + correctly. This is necessary since `charXXX' entity names are no + longer hardcoded in font definition files. + + * src/roff/troff/charinfo.h (charinfo): Add `asciify_code' and + `translate_input' members. + (charinfo::set_asciify_code, charinfo::get_asciify_code, + charinfo::set_translation_input): New methods. + (charinfo::set_translation): Add third argument. + * src/roff/troff/input.cc (charinfo:set_translation): Set + `asciify_code'. + (do_translate): Add second argument. + (translate_input): New function. + (init_input_requests): Updated. + * src/roff/troff/node.cc (glyph_node::asciify, + composite_node::asciify): Use `get_asciify_code'. + + * tmac/cp1047.tmac, tmac/latin1.tmac: Use `trin'. + + * NEWS, man/groff.man, man/groff_diff.man: Updated. + +2002-03-14 Larry Kollar <kollar@alltel.net> + + * doc/groff.texinfo: Improve documentation of .RS and .RE. + +2002-03-14 Werner LEMBERG <wl@gnu.org> + + Add a new request `sizes' similar to the `sizes' command in DESC + files. + + * src/roff/troff/env.cc (override_sizes): New function. + (init_env_requests): Use it. + * src/roff/troff/token.h: Export `read_string'. + * NEWS, man/groff_diff.man, man/groff.man: Document it. + +2002-03-12 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: More fixes for texinfo 4.1 and higher. + +2002-03-10 Werner LEMBERG <wl@gnu.org> + + * tmac/pspic.tmac: Add support for -Tdvi. + * tmac/dvi.tmac: Include pspic.tmac. + * src/devices/grodvi/grodvi.man: Document it. + * NEWS: Updated. + + * font/devlj4/generate/Makefile: Fix URL of metric files. + +2002-03-09 Werner LEMBERG <wl@gnu.org> + + * PROBLEMS: The static constructor bug has been fixed in z/OS V1R3. + +2002-03-09 Larry Kollar <kollar@alltel.net> + + * tmac/groff_ms.man: Add documentation for RS and RE macros. + +2002-03-08 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Fixes for texinfo 4.1. + +2002-03-07 Werner LEMBERG <wl@gnu.org> + + * src/include/lib.h: Include getopt.h if groff-getopt.h can't be + included. + Handle CYGWIN properly. + +2002-03-07 Paco Andrs Verd <pandres@dragonet.es> + + * font/devlbp/Makefile.sub (DEVFILES): Add some missing fonts. + * tmac/lbp.tmac: Add some font translations. + +2002-03-02 Werner LEMBERG <wl@gnu.org> + + * font/devcp1047/R.proto, font/devlatin1/R.proto, + font/devhtml/R.proto: Remove `charXXX' entries. + * tmac/tty.tmac, tmac/html.tmac: Load latin1.tmac or cp1047.tmac + where appropriate. + + * font/devlj4/generate/text.map: Remove `charXXX' entries. + * font/devlj4/*: Regenerated all font definition files. + * tmac/lj4.tmac: Load latin1.tmac. + + * src/utils/hpftodit/hpftodit.cc (do_file): Partially undo change + from 2000-06-17: LJ4 metric files are *not* text files. + + * tmac/troffrc, tmac/dvi.tmac, tmac/ps.tmac: Don't use .T string + register to test for EBCDIC. + +2002-03-01 Werner LEMBERG <wl@gnu.org> + + * src/utils/afmtodit/afmtodit.pl: Skip comment lines in encoding + files (as grops already does). + * src/utils/afmtodit/afmtodit.man: Document comment lines in map + files. + * src/devices/grops/grops.man: Document comment lines in encoding + files. + + * tmac/cp1047.tmac: New file. + * tmac/dvi.tmac, tmac/tty-char.tmac: Use it. + * tmac/ps.tmac: Load latin1.tmac or cp1047.tmac. + * tmac/Makefile.sub (NORMALFILES): Updated. + + * tmac/ec.tmac: Don't load latin1.tmac again. + + * font/devps/generate/lgreekmap, font/devps/generate/symbolchars, + font/devps/generate/dingbats.map, + font/devps/generate/dingbats.rmap, font/devps/text.enc, + font/devps/generate/Makefile (symbolmap): Add header comment. + * font/devps/generate/textmap: Ditto. + Remove `charXXX' entries. + * font/devps/symbolmap: Regenerated. + * font/devps/*: Regenerated all font definition files. + +2002-02-28 Werner LEMBERG <wl@gnu.org> + + Add color support to grodvi (for drawing colors are currently + translated to gray values). + + * src/devices/grodvi/dvi.cc (FILL_MAX): Removed. + (dvi_printer): Add `cur_color' member. + (dvi_printer::set_color): New function. + (draw_dvi_printer): Remove `fill'. + (draw_dvi_printer::fill_next): Pass environment as parameter. + Update code for new color support translated to gray. + (dvi_printer::set_char): Updated. + (dvi_printer::begin_page, dvi_printer::end_page): Handle color + changes crossing the page border. + (dvi_printer::draw): Updated. + Remove cases `f' and `F'. + * tmac/dvi.tmac: Add color definitions. + * NEWS, src/devices/grodvi/grodvi.man: Updated. + + * tmac/an-old.tmac (R): Make this a macro to emit a warning if + used incorrectly. + + * aclocal.m4 (GROFF_NEED_DECLARATION): Use test similar to recent + versions of autoconf. + * configure: Updated. + + * doc/homepage.ms: Use `.blm'. + * tmac/www.tmac (www-depth): New auxiliary variable. + (www-pop-level): Don't issue HTML tag. + (ULS, ULE, LI): Use absolute indentation. + + * src/devices/grops/ps.cc (ps_printer::begin_page, + ps_printer::end_page): Switch forth and back to default color while + starting a new page. + +2002-02-27 Werner LEMBERG <wl@gnu.org> + + Add EC and TC fonts to devdvi. + + * src/utils/tfmtodit/tfmtodit.man: Document patching of exbase.mf. + * font/devdvi/generate/cork.map: Renamed to... + * font/devdvi/generate/ec.map: This. + Remove entry for `aq'. + * font/devdvi/generate/tc.map: New file. + * font/devdvi/generate/Makefile (*EC, *TC): New creation rules for + EC and TC fonts. + (FONTS): Updated. + * font/devdvi/*EC, font/devdvi/*TC: New font definition files. + * font/devdvi/Makefile.sub (DEVFILES): Updated. + * tmac/ec.tmac: New file. + * tmac/Makefile.sub (NORMALFILES): Updated. + * NEWS, src/devices/grodvi/grodvi.man: Updated. + * man/groff_char.man: Check `ECFONTS' register. + + * font/devdvi/{TR,TI,TB,TBI,HR}: Fix `name' field. + +2002-02-26 Werner LEMBERG <wl@gnu.org> + + * font/devdvi/generate/*.map: Remove all `charXXX' entries. + * font/devdvi/generate/cork.map: Add 'y and 'Y. + * font/devdvi/*: Updated. + * tmac/dvi.tmac: Formatting. + + Add font `HBI' for the dvi output. + Add support for font families `T' and `H'. + + * font/devdvi/HBI: New file. + * font/devdvi/B: Renamed to ... + * font/devdvi/TB: This. + * font/devdvi/BI: Renamed to ... + * font/devdvi/TBI: This. + * font/devdvi/I: Renamed to ... + * font/devdvi/TI: This. + * font/devdvi/R: Renamed to ... + * font/devdvi/TR: This. + * font/devdvi/H: Renamed to ... + * font/devdvi/HR: This. + * font/devdvi/Makefile.sub (DEVFILES): Updated. + * font/devdvi/generate/Makefile (HBI): New rule. + (FONTS): Updated. + (R, I, B, BI, H): Renamed to ... + (TR, TI, TB, TBI, HR): This, respectively. + (srcdir): Fixed. + * NEWS, src/devices/grodvi/grodvi.man: Updated. + * font/devdvi/DESC.in: Don't mount R, I, B, BI, and CWI. + Add `styles' and `family' keywords. + * tmac/dvi.tmac: Alias `H' to `HR'. + Add some fspecial requests for italic fonts. + Add TR and TI as special. + Add support for `_' with font CWI. + + * src/roff/troff/number.cc (parse_expr): Add missing `break' for + operator `:'. Until now, the expression `0:1' would return 2 + instead of 1. + +2002-02-25 Werner LEMBERG <wl@gnu.org> + + * man/groff_char.man: Added some missing PS glyph names (from the + Adobe Glyph List). + * font/devps/generate/textmap, font/devps/symbolmap: Add + `arrowupdn'. + + * doc/groff.texinfo: Minor additions and fixes. + * man/groff_diff.man: Remove documentation of fp request. This + is already covered in the original troff manual. + Updated to be consistent with other doc files. + * NEWS: Updated. + +2002-02-24 Werner LEMBERG <wl@gnu.org> + + * aclocal.m4 (GROFF_EBCDIC): Don't include `font/devutf8' in + TTYDEVDIRS. + Define new variable OTHERDEVDIRS (containing `font/devlj4 + font/devlbp' if not EBCDIC). + * Makefile.in (TTYDEVDIRS): Always include `font/devutf8'. + (OTHERDEVDIRS): New variable. + (MDEFINES, DEVDIRS, ALLDIRS, DISTDIRS): Updated. + * configure: Regenerated. + + * NEWS, src/devices/grotty/grotty.man: Updated. + +2002-02-23 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc (do_overstrike, do_bracket, + get_line_arg): Honour input level. + + Add new symbol `mc' corresponding to U+00B5 MICRO SIGN. + + * font/*/*: Implement it in all font files. + * font/devps/generate/textmap, font/devps/generate/symbolchars, + * font/devps/symbolmap: Updated. + * font/devlj4/generate/text.map: Updated. + * font/devdvi/generate/CompileFonts (sizes): Add LaTeX sizes. + * font/devdvi/generate/texmi.map: Updated. + + * font/devutf8/R.proto: Remove all `charXXX' entries. + * font/devutf8/NOTES: Updated. + + * font/devX*/*: Regenerated with xtotroff, using fonts from XFree86 + version 4.1.0. + + * tmac/latin1.tmac, tmac/psold.tmac, tmac/tty-char.tmac: Updated. + + * NEWS, man/groff_char.man: Updated. + +2002-02-21 Phil Lobbes <phil@perkpartners.com> + + * src/include/lib.h [HAVE_SNPRINTF]: Include stdarg.h. + +2002-02-20 Ralph Corderoy <ralph@inputplus.demon.co.uk> + + * src/roff/grog/grog.pl: Fix computation of $refer. + +2002-02-19 Werner LEMBERG <wl@gnu.org> + + * src/include/lib.h [!HAVE_SNPRINTF]: Add declarations for + `snprintf' and `vsnprintf'. + + * src/include/htmlindicate.h: Renamed to... + * src/include/htmlhint.h: This. + * src/include/Makefile.sub: Updated. + * src/preproc/eqn/main.cc: Updated. + +2002-02-18 Werner LEMBERG <wl@gnu.org> + + * man/roff.man, man/groff_out.man, man/groff.man, + man/groff_diff.man, man/ditroff.man, src/roff/groff/groff.man, + src/roff/troff/troff.man: Updated to latest changes in www.tmac. + + * win32-diffs: Updated. + +2002-02-17 Werner LEMBERG <wl@gnu.org> + + * doc/Makefile (clean): Add *.eps. + (MEMACROS): Removed. + (TFLAG): New variable. + (TROFF): Use it. + Add -ww. + (GROFF): Use TFLAG, FFLAG, -U, -p, -e, -t, and -ww. + (.me.dit): Fixed. + (.ms.html, .ms.ascii, .ms.ps, homepage.html): Simplify. + + * tmac/www.tmac: Use dummy diversion while resetting and disabling + `.tl'. + * tmac/e.tmac: Inserted some more `\"' to remove warnings if used + unstripped. + * src/roff/troff/troff.man: Fix order of parameter description. + + * NEWS: Updated. + +2002-02-16 Gaius Mulley <gaius@glam.ac.uk> + + Simplify image handling for grohtml. + Fix <p> bug. + + * src/devices/grohtml/html-text.cc (DEBUGGING): Don't undefine but + comment out. + (html_text::dump_stack): Don't emit newline while debugging. + (html_text::do_push) [DEBUGGING]: Print more info. + (html_text::check_emit_text): Fix handling of <p>. + * src/devices/grohtml/html.h: Updated. + * src/devices/grohtml/output.cc (FPUTC, FPUTS, PUTC): New macros, + replacing `fputc', `fputs', `putc'. If DEBUGGING is defined, they + send its data to stderr also. + Update all callers. + (simple_output::space_or_newline) [DEBUGGING]: Removed. + * src/devices/grohtml/post-html.cc (html_printer::do_links, + html_printer::html_printer): Remove `DEBUGGING' conditionals. + + * src/include/html-strings.h (HTML_IMAGE_{CENTERED,LEFT,RIGHT,END}): + Removed. + * src/libs/libgroff/htmlhint.cc (is_in_graphic_start, + is_inline_image): Removed. + (html_begin_suppress, html_end_suppress): Don't take a parameter. + (graphic_start, graphic_end): Removed. + * src/include/htmlindicate.h: Updated. + * src/preproc/html/pre-html.cc (DEBUG_HTML): Removed. + (macroset_template): New global variable. + (makeFileName): Use `macroset_template'. + (write_end_image): Don't take a parameter. + Don't emit newline. + (write_start_image: Don't emit newline. + (char_buffer::write_upto_newline): Updated. + (char_buffer::skip_to_newline): Renamed to ... + (char_buffer::skip_until_newline): This. + Fix code. + (char_buffer::write_file_troff, char_buffer::write_file_html): + Simplified. + (createAllPages, createImage) [DEBUGGING]: Handle `debug' flag. + (removeAllPages): Remove `DEBUGGING' conditionals. + (addRegDef, dump_args): New functions. + (char_buffer::do_html, char_buffer::do_image): Handle + `www-image-template' command line variable. + Add more debugging code. + (addps4html): Removed. + (removeTempFiles) [DEBUGGING]: Handle `debug' flag. + + * src/preproc/eqn/main.cc: Include `ctype.h'. + (suppress_html): Removed. + (do_file): Updated. + (inline_equation): Use `html_begin_suppress' and + `html_end_suppress'. + * src/preproc/pic/troff.cc: Don't include `htmlindicate.h'. + (troff_output::start_picture, troff_output::finish_picture): + Updated. + * src/preproc/tbl/main.cc: Don't include `htmlindicate.h'. + (process_input_file): Updated. + + * src/roff/troff/div.cc (page_number): Set page number only if the + `ps4html' register isn't defined. + * src/roff/troff/input.cc (image_no): New external variable. + (do_suppress): Use it. + * src/roff/troff/node.h (suppress_node::image_id): New member. + * src/roff/troff/node.cc (image_no): Remove `static' keyword. + (suppress_node::suppress_node): Initialize `image_id' member. + (suppress_node::same): Handle `image_id' also. + (suppress_node::copy): Updated. + (last_image_id): New global variable. + (suppress_node::tprint): Use it. + + * tmac/an-old.tmac (TS, TE, EQ, EN): Use HTML-IMAGE and + HTML-IMAGE-END. + * tmac/pspic.mac (PSPIC): Fix html support. + * tmac/s.tmac (@EQ, @EN, @TS, TE, PS, PE): Ditto. + * tmac/www.tmac (www-image-template): Set up. + (HTMLINDEX): Renamed to... + (HX): This. + (BODYCOLOR): Renamed to... + (BCL): This. + (BACKGROUND): Renamed to... + (BGIMG): This. + (URL): Change order of parameters for consistency. + (MAILTO): Renamed to... + (MTO): This. + (IMAGE, PNG-IMAGE, MARGIN-PNG-IMAGE): Renamed to... + (IMG, PIMG, MPIMG): This. + (HTML-H-BEGIN, HTML-H-END): Renamed to... + (HnS, HnE): This. + (LINKS): Renamed to... + (LK): This. + (LINE): Renamed to... + (HR): This. + (NO-AUTO-RULE): Renamed to... + (NHR): This. + (HTML-TL): Renamed to... + (HTL): This. + (UL-BEGIN, UL-END): Renamed to... + (ULS, ULE): This. + (DROPCAP): Renamed to... + (DC): This. + (TS, TE, EQ, EN): Provide default definitions. + (www-make-unique-name): Updated. + (HTML-IMAGE-INLINE): Fix typo. + * tmac/groff_www.man: Updated. + + * doc/Makefile (homepage.html): Add option -r to grohtml. + Use shortened image name. + * doc/groff.texinfo: Updated info on grohtml strings and macros. + * doc/homepage.ms: Updated and extended. + +2002-02-14 Werner LEMBERG <wl@gnu.org> + + Don't use `CSI 39 m' and `CSI 49 m' but `CSI 0 m'. + + * src/devices/grotty/tty.cc (SGR_DEFAULT_COLOR, + SGR_BACK_DEFAULT_COLOR): Replaced with ... + (tty_printer::put_color): Use it. + (ttr_printer::end_page): Simplify. + +2002-02-13 Werner LEMBERG <wl@gnu.org> + + * tmac/groff_tmac.man: Moved to... + * man/groff_tmac.man: This place. + * tmac/Makefile.sub, man/Makefile.sub: Updated. + +2002-02-12 Werner LEMBERG <wl@gnu.org> + + * src/libs/libgroff/Makefile.sub (snprintf.o): Don't use + $(COMPILE.c) to not include groff's assert.h. + + * src/drivers/grotty/tty.cc (main): Add GROFF_NO_SGR environment + variable. + * NEWS, src/drivers/grotty/grotty.man: Document it. + +2002-02-11 Werner LEMBERG <wl@gnu.org> + + * src/libs/snprintf/snprintf.c: Updated to latest version + (2002-02-11). + + * src/roff/grog/grog.pl (process): Fix handling of `.['. We now + test whether there is `.]' also. + Don't check for spaces after `.['. + * src/roff/grog/grog.sh: Do the same. + +2002-02-10 Werner LEMBERG <wl@gnu.org> + + Illegal -> Invalid. + + * src/libs/libgroff/illegal.cc: Renamed to ... + * src/libs/libgroff/invalid.cc: This. + (illegal_char_table): Renamed to ... + (invalid_char_table): This. + * src/libs/libgroff/Makefile.sub: Updated. + * win32-diffs: Updated. + + * doc/groff.texinfo, src/devices/grops/psrm.cc (ps_get_line), + src/libs/libdriver/input.cc (fatal_command, parse_color_command, + parse_x_command), src/libs/libgroff/font.cc (text_file::next, + font::load), src/preproc/eqn/main.cc (read_line, main), + src/preproc/eqn/lex.cc (file_input::read_line), + src/preproc/pic/lex.cc (file_input::read_line, + simple_file_input::get, simple_file_input::peek), + src/preproc/pic/main.cc (top_input::get, top_input::peek), + src/preproc/pic/pic.man, src/preproc/refer/main.cc + (input_stack::push_file), src/preproc/refer/refer.cc (do_file, + do_bib), src/preproc/tbl/main.cc (table_input::get), + src/preproc/grn/grn.man, src/preproc/grn/main.cc (interpret), + src/roff/troff/input.cc (file_iterator::fill, file_iterator::peek, + do_zero_width, read_request, encode_char, ps_get_line, + transparent_file, get_char_for_escape_name, transparent_translate, + asciify, input_char_description, read_string, set_string), + src/roff/troff/env.cc (environment::add_html_tag), + src/roff/troff/troff.man, tmac/e.tmac (`@(', `(f'): Do it. + + * src/include/lib.h: Updated. + + * src/preproc/eqn/eqn.cc: Removed. + + * NEWS: Updated. + + * src/preproc/grn/hdb.cc (DBRead): Fix fscanf() fields. + +2002-02-09 Werner LEMBERG <wl@gnu.org> + + * doc/gnu.xpm: New image. + * doc/Makefile (DOCS): Add homepage.ps. + Add rules for converting xpm->png and xpm->eps. + Use `gnu.{xpm,eps}' as image names. + * doc/homepage.ms: Updated. + +2002-02-09 Gaius Mulley <gaius@glam.ac.uk> + + * tmac/www.tmac (www-error): New macro, replacing calls to `@error'. + (IMAGE): Change image position parameters to `-L', `-R', and `-C'. + Remove calls to `B1' and `B2' + (PNG-IMAGE): New macro for inclusion of images in PNG format. + (www-left-ll-trap, www-left-po-trap, www-right-ll-trap): New + auxiliary variables for MARGIN-PNG-IMAGE. + (www-finish-left-po, www-finish-right-ll, www-finish-left-ll): New + auxiliary macros for MARGIN-PNG-IMAGE. + (MARGIN-PNG-IMAGE): New macro to put an image in PNG format into + the margin. + (www-heading-no): New auxiliary variable for HTML-H-{BEGIN,END}. + (HTML-H-BEGIN, HTML-H-END): New macros to begin and end a heading. + (DROPCAP): New macro to produce dropcap characters. + (www-do-image): Renamed back to... + (HTML-DO-IMAGE): This. + Updated all callers. + + * doc/Makefile (gnubw.eps): Updated. + * doc/homepage.ms: Updated. + +2002-02-08 Werner LEMBERG <wl@gnu.org> + + * doc/pic.ms: Fixed typos (\(*tx -> \*(tx). + Added `linethick' to table in section `Style Variables'. + +2002-02-08 Gaius Mulley <gaius@glam.ac.uk> + + * src/libs/libdriver/input.cc (get_extended_arg): Fix conditional. + +2002-02-07 Werner LEMBERG <wl@gnu.org> + + Adding options -C (compatibility mode) and -c (grotty's old output + scheme) to nroff. + + * src/roff/nroff/nroff.sh: Implement it. + Remove `-Wall'. + * NEWS, src/roff/nroff/nroff.man: Updated. + + * PROBLEMS: Document bison 1.32 bug. + + Some fixes to make groff compile on z/OS 1.2 UNIX (was OS/390). + + * src/roff/troff/node.cc (make_tfont): Define it earlier. + * src/roff/troff/div.h: Add prototype for `end_diversions'. + * src/roff/troff/input.cc: Add prototype for `process_input_stack'. + * src/roff/troff/env.h: Add prototype for `title'. + + Adding EBCDIC support to grotty. + + * src/devices/grotty/tty.cc (CSI): New macro. + (SGR_*, tty_printer::put_color): Use it. + +2002-02-06 Werner LEMBERG <wl@gnu.org> + + Implementing color support in grotty. The new switch -c activates + the old drawing scheme, disabling color at the same time. The new + switch `-i' selects italic instead of underlining (SGR only). + + * src/devices/grotty/tty.cc (putstring): New define instead of + `fputs'. Updated all callers. + (old_drawing_scheme): New global variable. + (COLOR_CHANGE): New enum value. + (SGR_*): New defines containing color handling escape sequences. + (TTY_MAX_COLORS, DEFAULT_COLOR_IDX): New defines. + (glyph): New members `back_color_idx' and `fore_color_idx'. + (glyph::order): Add COLOR_CHANGE. + (tty_printer): New members `cur_fore_idx', `curr_back_idx', + `is_underline', `is_bold', `cu_flag', `tty_colors'. + New methods `make_underline', `make_bold', `color_to_idx', + `change_color', `put_color'. + (cu_flag): Moved into `tty_printer' class. + (tty_printer::tty_printer): Initialize colors. + (tty_printer::add_char, tty_printer::set_char, tty_printer::special, + tty_printer::draw, tty_printer::end_page): Handle colors also. + (main): Add options `-c' and `-i'. + (usage): Updated. + * NEWS, src/devices/grotty/grotty.man: Updated. + + * src/include/errarg.h (errarg): Add support for `unsigned int'. + * src/libs/libgroff/errarg.c: Implement it. + + * src/include/printer.h (printer): Add `change_color' method + (currently used by grotty only). + * src/libs/libdriver/printer.cc: Implement it. + * src/libs/libdriver/input.cc (parse_D_command, do_file): Add + call to `pr->change_color'. + + * src/roff/troff/node.cc (troff_output_file::fill_color, + troff_output_file::glyph_color): Call `do_motion'. + + * tmac/tty.tmac: Add color definitions. + + * src/roff/groff/groff.man: Minor fixes. + +2002-02-05 Bernd Warken <bwarken@mayn.de> + + * src/libs/libdriver/input.cc: Introduce `EnvInt' typedef and use + it. This is a preparation for future changes. + +2002-02-05 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc (process_input_stack): Fix the case + where leading spaces are followed by \f or \s; previously, an + incorrect space width has been used. + + * doc/roff.man (quoted_char): Fix argument. + (comment): Define string. + +2002-02-04 Larry Kollar <kollar@alltel.net> + + * doc/groff.texinfo: More fixes. + +2002-02-04 Werner LEMBERG <wl@gnu.org> + + * src/preproc/eqn/box.cc (output_string): Don't use \\*[...]. + * src/preproc/eqn/main.cc (do_file, inline_equation): Call + `restore_compatibility' before `output_string' -- the LINE_STRING + register now already contains proper switches from and to + compatibility mode. + + * man/groff_char.man: Add Euro symbol. + * man/groff_diff.man: Improve documentation of `.am1' and `.as1'. + * tmac/tty.tmac: Add `EUR' as replacement for `eu' and `Eu'. + * doc/groff.texinfo (Defstr*): Print strings with full syntax. + Other minor fixes. + + * doc/Makefile (.SUFFIXES, .texinfo.pdf, clean): Add support for + texinfo->pdf. + (.texinfo.html): Add support for texinfo->html. + +2002-02-03 Werner LEMBERG <wl@gnu.org> + + Added three new requests `ds1', `as1', and `ami'. The former two + are equivalent to `ds' and `as' with the difference that + compatibility mode is saved on entry, switched off during string + expansion, and restored on exit. The latter is the pendant to `dei' + for `am'. + + (do_define_string): Use `define_mode' and `calling mode'. + Insert COMPATIBLE_SAVE and COMPATIBLE_RESTORE at the beginning and + end of string, respectively. + (define_string, append_string): Use `calling_mode'. + (define_nocomp_string, append_nocomp_string, + define_string_indirect): New functions. + (init_input_requests): Updated. + * NEWS, man/groff_diff.man, man/groff.man: Document it. + + * src/preproc/eqn/box.cc (box::top_level, box::extra_space): Use + `as1' for assigning LINE_STRING (this is `10' usually). Sun's + mm macro package accesses this string register directly. + * src/preproc/eqn/main.cc (inline_equation): Use `as1'. + + * tmac/trace.tmac: Trace calls to `am' also. Make it work in + compatibility mode. + +2002-02-02 Larry Kollar <kollar@alltel.net> + + * doc/groff.texinfo, tmac/groff_ms.man: More fixes. + +2002-01-31 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac (I): Use \, and \/ to improve spacing. + +2002-01-31 Bernd Warken <bwarken@mayn.de> + + * src/devices/grolbp/lbp.cc (main): Delete `pr'. + * man/groff_out.man: Revised and updated. + +2002-01-30 Bernd Warken <bwarken@mayn.de> + + * src/libs/libdriver/input.cc [USE_ENV_STACK]: New macro to comment + out the unused `{' and `}' commands. Undefined by default. + (IntArray): Make `data' private. + (IntArray::operator[], IntArray::get_data, IntArray::len): Use these + new methods instead. + (skip_line_D, skip_to_end_of_line): New functions. + (get_D_fixed_args): Use `skip_line_D'. + Changed to handle dummy odd arguments by ... + (get_D_fixed_args_odd_dummy): This new function. + (get_D_variable_args): Split some code into ... + (get_possibly_integer_args): This new function. + (send_draw): Use more `const'. + (delete_current_env): New function. + (position_to_end_of_args): Use `size_t'. + Updated. + (send_draw): Updated. + (parse_D_command): Handle `c', `C', and `t' better. + Updated. + (do_file): Updated. + +2002-01-29 Werner LEMBERG <wl@gnu.org> + + * NEWS: Revised. + * doc/groff.texinfo: Introduce @Def...List, @Def...Item, and + @Def...ListEnd which replaces @Def...x. This is necessary to get + proper HTML output -- see the comment in the file for more + information. + Updated all calls. + +2002-01-29 Gaius Mulley <gaius@glam.ac.uk> + + Fixes to make color changes of 2002-01-21 work with grohtml. + + * src/devices/grohtml/post-html.cc (style): Updated. + (html_printer): Remove unused methods. + (html_printer::do_font, html_printer::draw, html_printer::set_char, + html_printer::special): Updated. + * src/devices/grohtml/html-text.cc (debugStack, turnDebug, + html_text::dump_stack_element, html_text::dump_stack) [DEBUGGING]: + Added some debugging code. + (html_text::start_tag): Updated. + (html_text::do_push): New method. + (html_text::push_para): Call it. + Add method for handling color. + (html_text::do_color): Updated. + (html_text::shutdown): Handle color. + * src/devices/grohtml/html-text.h (tag_definition): New member + `col'. + Updated. + +2002-01-28 Werner LEMBERG <wl@gnu.org> + + * tmac/ps.tmac, tmac/html.tmac: Fix compatibility mode issues. + +2002-01-27 Gaius Mulley <gaius@glam.ac.uk> + + Add two switches -a and -g to control the antialiasing bits for + text and graphics, respectively. + + * src/devices/grohtml/post-html.cc (main): Dummy code for `-a' and + `-g'. + * src/devices/grohtml/grohtml.man: Document them. + * src/preproc/html/pre-html.cc (MIN_ALPHA_BITS, MAX_ALPHA_BITS): + New macros. + (textAlphaBits, graphicAlphaBits, antiAlias): New global variables. + (setupAntiAlias): New function. + (createAllPages): Updated. + (scanArguments): Handle `-a' and `-g'. + (main): Call `setupAntiAlias'. + * NEWS: Updated. + +2002-01-27 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo (Def*): Call index function after deffn. + + * tmac/html.tmac: Call `nroff' request. + +2002-01-26 Larry Kollar <kollar@alltel.net> + + * tmac/groff_ms.man: Add some omissions. + +2002-01-25 Larry Kollar <kollar@alltel.net> + + * tmac/groff_ms.man: Typographical improvements. + +2002-01-25 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Updated version and copyright. + * src/devices/grops/grops.man: Updated. + + * tmac/groff_tmac.man: Fix `ig' macro. + + * tmac/an-old.tmac (ne): Redefine `ne' request to be a no-op in + nroff mode. + Use `.ne' unconditionally everywhere. + (TS): Only insert some vertical space. Doing a page break is no + longer necessary due to the redefinition of the `ne' request. + + * src/libs/libdriver/input.cc (parse_D_command): Don't emit a + warning for unknown subcommands but parse and pass them to the + device driver. + +2002-01-24 Werner LEMBERG <wl@gnu.org> + + * tmac/groff_www.man, NEWS: Fix typos. + +2002-01-21 Werner LEMBERG <wl@gnu.org> + + Complete revision of color support: + + Adapt programs to the new libdriver/input.cc. + + Color spaces are no longer converted to RGB but transferred as-is + in the troff intermediate output format. + + Handle default color gracefully. troff now supports a `default' + color (which can't be changed). + + grops will now use the proper color space functions if available. + + Update pic. + + Note that currently grohtml doesn't handle colors properly. This + has to be fixed. + + * src/libs/libgroff/itoa.c (UINT_DIGITS): New macro. + (ui_to_a): New function. + * src/include/lib.h: Updated. + + * src/include/color.h (color_scheme): Replace `NONE' with `DEFAULT'. + (color): Simplified; removed all `double' members and methods. + A new array `components' now holds the color parameters. + (color::is_default, color::get_components): New methods. + (color::operator==, color:operator!=): New. + (Red, Green, Blue, Cyan, Magenta, Yellow, Black, Gray): New macros + to make access to the `components' array more comprehensible. + * src/libs/libgroff/color.cc: Implement new color support. + (atoh): Small fixes. + (color::read_encoding): Simplified for new troff intermediate color + output format. + (default_color): New global variable. + + * src/roff/troff/input.cc (default_symbol): New global variable. + (lookup_color): Use it. + (default_black): Removed. + (do_glyph_color, do_fill_color): Simplified. + (define_color): Handle default color. + Improve warnings. + (do_if_request): Handle default color. + * src/roff/troff/env.cc (environment::environment): Initialize + colors with `default_color'. + * src/roff/troff/node.cc (troff_output_file::put): Add method + for `unsigned int'. + (troff_output_file::hex): Removed. + (troff_output_file::fill_color, troff_output_file::glyph_color): + Updated to include/color.h and libdriver/input.cc. + + * src/preproc/pic/object.cc (draw_arrow): New parameter to set + fill color properly (identically to the outline color). \D'f...' + doesn't work any more. + All function calls to it updated. + + * src/devices/grohtml/post-html.cc (html_printer::do_body, main): + Updated. + * src/devices/grohtml/html-text.cc (html_text::issue_color_begin): + Updated. + + * src/devices/grops/ps.cc (ps_output::put_color): New method. + (ps_printer::sbuf_color): Make a real member instead of pointer. + (ps_printer::fill_color, ps_printer::output_color): Removed. + (ps_printer::ps_printer): Updated. + (ps_printer::set_char): Ditto. + (ps_printer::set_color): Use various color schemes. + Use `put_color' method. + (ps_printer::flush_sbuf): Don't set color. + (ps_printer::fill_path): Take `environment' as parameter. + Simplify color handling. + (ps_printer::set_line_thickness): Renamed to ... + (ps_printer::set_line_thickness_and_color): This (and updated). + (ps_printer::set_color): Change second parameter from `complete' + to `fill' which better describes what it does. + (ps_printer::draw): Call `flush_sbuf' to output graphic commands + and text in the right order. + Updated. + Remove branches for `f' and `F'; this is handled by + libdriver/input.cc. + * src/devices/grops/ps.h: Updated. + * font/devps/prologue (FL): Redefined. + ({F,C}r,k,g: New color functions (with and without filling). + + * doc/pic.ms, src/preproc/pic/pic.man: Small fixes. + * man/groff_diff.man, man/groff.man, man/groff_out.man, + doc/groff.texinfo, NEWS: Updated. + +2002-01-20 Bernd Warken <bwarken@mayn.de> + + * src/libs/libdriver/input.cc: Completely rewritten. See comments + in this file for what has been changed. + +2002-01-19 Werner LEMBERG <wl@gnu.org> + + * test-groff: Fix GROFF_FONT_PATH. + * tmac/andoc.tmac: Add dummy macros for equation support -- eqnrc + is read before .TH or .Dd is parsed. + +2002-01-18 Gaius Mulley <gaius@glam.ac.uk> + + * src/libs/libgroff/geometry.cc (check_output_arc_limits): Fix + quadrant boundaries. + +2002-01-18 Werner LEMBERG <wl@gnu.org> + + * devices/grops/ps.cc: Aargh! Fix the fix of the incorrectly + applied last patch. + +2002-01-17 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/doc.common: Initialize %I register for the %I macro to + avoid (harmless) warning. + * tmac/doc.tmac (Bd): There is no reason to enforce -compact + when in the SYNOPSIS section. + +2002-01-17 Bruno Haible <haible@clisp.cons.org> + + * src/preproc/pic/lex.cc (get_token): Fix typo. + +2002-01-17 Werner LEMBERG <wl@gnu.org> + + * devices/grops/ps.cc: Fix incorrectly applied last patch. + +2002-01-17 Larry Kollar <kollar@alltel.net> + + * tmac/groff_ms.man: Completely rewritten. + +2002-01-16 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac (TS): Force break, inserting some vertical space. + +2002-01-15 Gaius Mulley <gaius@glam.ac.uk> + + * devices/grops/ps.cc (ps_printer::fill_path): Fix handling of + fill colors. + (ps_printer::draw): Ditto. + +2002-01-14 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/groff_mdoc.man: Minor fixes. + +2002-01-13 Werner LEMBERG <wl@gnu.org> + + * man/groff_out.man: Some fixes. + +2002-01-13 Gaius Mulley <gaius@glam.ac.uk> + + * doc/pic.ms: Fix typos. + +2002-01-12 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo, doc/groff.man: More on a printable backslash. + +2002-01-10 Werner LEMBERG <wl@gnu.org> + + * font/devutf8/R.proto, font/devhtml/R.prot: Add `Eu' and `eu' + symbols. + * NEWS: Updated. + +2002-01-09 Bernd Warken <bwarken@mayn.de> + + * man/groff_out.man: Revised. + * man/roff.man: Minor fixes. + * src/roff/troff/troff.man: Some reordering. + +2002-01-09 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac: Add dummy macros for equation support. + +2002-01-07 Werner LEMBERG <wl@gnu.org> + + doc/groff.texinfo: Fix documentation of glyph searching algorithm. + + * tmac/an-old.tmac: Revert change 2001-12-23. This breaks too many + man pages. + * tmac/groff_man.man: Small improvements. + +2002-01-07 Bernd Warken <bwarken@mayn.de> + + * man/groff_diff.man: Revised. + +2002-01-06 Werner LEMBERG <wl@gnu.org> + + * tmac/www.tmac: Remove extraneous backslash. + +2002-01-06 Bernd Warken <bwarken@mayn.de> + + * man/ditroff.man, src/roff/groff/groff.man, man/groff.man: Revised. + +2002-01-05 Werner LEMBERG <wl@gnu.org> + + Integrated groffer, contributed by Bernd Warken. + + * contrib/groffer/*: New. + * Makefile.in, NEWS: Updated. + +2002-01-04 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Added macros `@Defmpreg' and `@Defmpregx' for + registers defined in macro packages. + Revising the ms part. + +2002-01-04 Larry Kollar <kollar@alltel.net> + + * doc/groff.texinfo: Add documentation for ms macros. + +2002-01-02 Werner LEMBERG <wl@gnu.org> + + First step in adding PS support for the Euro symbol. `eu' is the + official Euro logo, `Eu' is a font-specific glyph variant. + + * font/devps/text.enc: Add `Euro' at position 9. + * font/devps/generate/textmap: Add `Euro' as symbol `Eu'. + * font/devps/symbolmap: Regenerated. + + * NEWS: Updated. + +2002-01-02 Bernd Warken <bwarken@mayn.de> + + * man/roff.man: Revised. + +2002-01-01 Bernd Warken <bwarken@mayn.de> + + * src/roff/groff/groff.man: Completely rewritten. + +2001-12-31 Werner LEMBERG <wl@gnu.org> + + * doc/Makefile: Updated. + +2001-12-30 Werner LEMBERG <wl@gnu.org> + + * tmac/www.tmac: Make all names of internal macros/registers/strings + lowercase, and prepend `www-'. + Other minor changes. + * src/roff/troff/troff.man: Add preprocessor string at BOF. + +2001-12-30 Gaius Mulley <gaius@glam.ac.uk> + + Implement option `-b' in grohtml to set the HTML background colour. + + * src/devices/grohtml/post-html.cc (default_background): New global + variable. + (html_printer::html_printer): Initialize `background' to + `default_background'. + (main): Implement option `-b'. + (usage): Updated. + * src/preproc/html/pre-html.cc (scanArguments): Add dummy handling + of `-b' option. + * src/devices/grohtml/grohtml.man: Updated. + * doc/Makefile (.ms.html): Use `-b'. + * tmac/html.tmac: Don't set background color. + + Add new grohtml tag `.html-tl'. + + * src/devices/grohtml/post-html.cc (title_desc): Add `with_h1' + member variable. + (title_desc::title_desc): Updated. + (html_printer::troff_tag): Handle `.html-tl'. + (html_printer::write_title): Use `with_h1'. + * tmac/www.tmac (www-end-nowhere): New auxiliary macro. + (HTML-TL): New macro. + + Add support for unordered lists in HTML. + + * tmac/www.tmac (www-level): New auxiliary register. + (www-level1, www-level2, www-level3): New auxiliary strings. + (www-push-level, www-pop-level): New auxiliary macros + (UL-BEGIN, UL-END, LI): User macros for unordered lists. + + Miscellaneous. + + * src/preproc/html/pre-html.cc (DEFAULT_IMAGE_RES): Increase to 100. + (DEFAULT_VERTICAL_OFFSET): Removed. + (IMAGE_BOARDER_PIXELS): Set to 0. + (A4_LENGTH, A4_OFFSET, LETTER_LENGTH, LETTER_OFFSET): New macros. + (vertical_offset): Initialize with 0. + (gsPaper): New global variable. + (get_resolution): Scan for and return unsigned int. + (get_papersize): New function to get paper length from devps/DESC. + (determine_vertical_offset): New function. + (createAllPages): Produce gray-level images and use proper page + length. + (createImage): Use `-quiet' option of pnmcrop. + (addZ): Fix passing of `-Z'. + (scanArguments): Fix handling of `-o'. + (main): Call `determine_vertical_offset'. + * src/devices/grohtml/post-html.cc (html_printer::draw): Comment out + code for `l'. + + * src/libs/libgroff/tmpfile.cc (add_tmp_file): Fix buffer length. + * src/roff/troff/node.cc (troff_output_file::check_charinfo): Handle + glyph descenders properly. + + * doc/homepage.ms: Include `gnubw.eps'. + * doc/Makefile (gnubw.eps): New rule. + (homepage.html): Depend on `gnubw.eps'. + +2001-12-25 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc (default_black): Fix return value. + +2001-12-24 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/doc-common (Dt): Change output of architecture strings. + Do some syntax cleanup. + * tmac/groff_mdoc.man: Updated. + +2001-12-23 Werner LEMBERG <wl@gnu.org> + + Adding an `itc' request (input line trap accepting \c). + + * src/roff/troff/env.h (environment): New member + `continued_input_trap'. + Make `do_input_trap' a friend function instead of `input_trap'. + * src/roff/troff/env.cc (environment::environment, + environment::copy): Updated. + (environment::newline): Implement it. + (do_input_trap): New function. + (input_trap): Call `do_input_trap'. + (input_trap_continued): New function. + (init_env_requests): Updated. + * src/roff/troff/TODO: Updated. + + * tmac/an-old.tmac (SH, SS, B, I, SM, SB, TP): Use `.itc' instead of + `.it'. + + * src/preproc/grn/hdb.cc (DBRead): Really chop after 127 characters. + +2001-12-22 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/doc-common, tmac/doc-syms: Small updates. + +2001-12-22 Colin Watson <cjwatson@debian.org> + + * tmac/an-old.tmac (an-p-footer): Set title length in environment 1. + +2001-12-22 Bernd Warken <bwarken@mayn.de> + + * MANIFEST: New file. + +2001-12-22 Werner LEMBERG <wl@gnu.org> + + * src/preproc/grn/grn.man: Updated. + +2001-12-22 Solar Designer <solar@openwall.com> + + * src/preproc/grn/hdb.cc (MAXSTRING_S): New macro. + (DBRead): Use it. + +2001-12-19 Werner LEMBERG <wl@gnu.org> + + Implement a fallback character request `.fchar'. + + * src/roff/troff/charinfo.h (charinfo): New flag `fallback'. + (is_fallback): New inline function. + * src/roff/troff/input.cc (do_define_character): New function. + (define_character): Call `do_define_character'. + (define_fallback_character): New function. + (init_input_requests): Add `fchar'. + (charinfo::charinfo): Updated. + (charinfo::set_macro): New argument to set `fallback' flag. + * src/roff/troff/node.cc (make_glyph_node, make_node, + node::add_char): Check `fallback' flag. + * NEWS, man/groff_diff.man, man/groff_man: Updated. + +2001-12-16 Werner LEMBERG <wl@gnu.org> + + * groff.texinfo: Document exact search algorithm for glyphs. + +2001-12-15 Werner LEMBERG <wl@gnu.org> + + * Makefile.cpg, Makefile.ccpg, Makefile.man: Add dummy file to + the left side of $(MANPAGES) rule to make it always non-empty. + +2001-12-14 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc (default_black): Define default color + `black' if not yet defined. + +2001-12-13 Werner LEMBERG <wl@gnu.org> + + Implement new string-valued register `.fn' to return the current + real (internal) font name. + + * env.cc (environment::get_font_name_string): New function. + (init_env_requests): Add `.fn' register. + * env.h (environment): Updated. + * node.cc (font_info): Make `get_font_name' a friend. + (get_font_name): New function. + * node.h: Updated. + + * man/groff_diff.man, man/groff.man, NEWS: Updated. + +2001-12-12 Ralph Corderoy <ralph@inputplus.demon.co.uk> + + * src/preproc/eqn/main.cc (inline_equation): Fix typos. + +2001-12-12 Werner LEMBERG <wl@gnu.org> + + * tmac/groff_man.man, doc/groff.texinfo: There is no .R macro. + +2001-12-10 Gaius Mulley <gaius@glam.ac.uk> + + * man/groff_diff.man: Adding documentation for \O. + +2001-12-10 Werner LEMBERG <wl@gnu.org> + + * src/preproc/html/pre-html.cc (TROFF_COMMAND): Removed. + (scanArguments): Use PROG_PREFIX for the name of the troff binary. + +2001-12-09 Werner LEMBERG <wl@gnu.org> + + * man/roff.man: Revised. + * src/roff/groff/groff.man: Replace man page references with a + pointer to roff.man. + +2001-12-09 Bernd Warken <bwarken@mayn.de> + + * man/roff.man: Completely rewritten. + +2001-12-06 Ralph Corderoy <ralph@inputplus.demon.co.uk> + + * src/preproc/eqn/main.cc (inline_equation): Improve error message. + +2001-12-05 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc (get_delim_file_name): Removed since no + longer used. + * src/devices/grohtml/post-html.cc (html_printer::html_printer): Fix + order of initializers. + * NEWS: Updated. + +2001-12-05 Gaius Mulley <gaius@glam.ac.uk> + + * doc/groff.texinfo: Fix documentation of \O. + + * src/devices/grohtml/html-text.cc (html_text::do_indent, + html_text::do_table, html_text::do_emittext, html_text::do_para): + Use `const' for first argument. + (html_text::do_table): Use cast. + * src/devices/grohtml/html-text.h: Updated. + * src/devices/grohtml/output.cc (simple_output::put_string): Add + method for `const string &s'. + * src/devices/grohtml/html.h: Updated. + * src/devices/grohtml/post-html.cc (MAX_STRING_LENGTH): Removed. + (ANCHOR_TEMPLATE): Modified. + (manufacture_headings): New global variable to handle `-h' option. + (is_subsection): Removed. + (char_buffer::add_string): Add `const' to first argument. + Protect against invalid string argument. + Add method for `const string &s'. + (text_glob): Completely redesigned. + (page): Use `const' for strings and remove string length variable. + (page::add_html): Removed. + (page::add_end_encode): New member function. + (to_unicode): Moved upwards. + (title_desc, header_desc): Updated. + (header_desc::write_headings): Updated to new ANCHOR_TEMPLATE + definition. + (html_printer::is_bold, html_printer::make_bold): New member + functions. + (html_printer::end_of_line): Updated. + (generate_img_src, html_printer::do_auto_image, + html_printer::do_title, html_printer::write_header, + html_printer::determine_header_level, html_printer::do_heading, + html_printer::do_linelength, html_printer::do_pageoffset, + html_printer::do_indentation, html_printer::do_tempindent, + html_printer::do_indentedparagraph, html_printer::do_break, + html_printer::flush_sbuf, get_html_translation, + html_printer::begin_page, html_printer::special): Rewritten to get + rid of static string length limit. + (html_printer::troff_tag): Added `.no-auto-rule'. + (html_printer::flush_globs): Small fix. + (html_printer::determine_space): Don't compute `space_width'. + (html_printer::translate_to_html): Renamed to ... + (html_printer::emit_html): This (with updates). + (html_printer::write_header): Implement `-h' option. + (html_printer::draw): Remove commented-out code. Handle `F' + command. + (html_printer::add_char_to_sbuf): Removed. + (html_printer::add_to_sbuf): Rewritten. + (html_printer::sbuf_continuation): Fixed. + (html_printer::seen_backwards_escape, reverse, + html_printer::remove_last_char_from_sbuf): Removed. + (char_translate_to_html, str_translate_to_html): Removed. + (html_printer::overstrike): New function member. + (html_printer::set_char): Use it. + (html_printer::do_body): New function member. + (html_printer::~html_printer): Use it. + (main): Handle `-h' option. + (usage): Updated. + * src/devices/grohtml/grohtml.man: Document -h switch. + + * src/preproc/html/pre-html.cc: Include searchpath.h + Replace `POSTSCRIPTRES' macro with `postscriptRes' variable. + (get_resolution): New function. + (checkImageDir): Use `0777' permissions in mkdir() + (write_start_image): Rewritten to use `\O[5...]'. + (createImage, generateImages): Updated. + (main): Handle `F' and `h' options. + Use `get_resolution'. + + * src/roff/troff/input.cc (begin, end, image): Removed. + (do_suppress): Take parameter. + Handle modified syntax of `\O'. + (token::next): Updated. + (init_markup_requests): Removed. + (main): Updated. + + * src/roff/troff/div.h: Add declaration for begin_page(). + + * tmac/color-html.tmac: Removed. Contents moved to... + * tmac/html.tmac: Here. Set background color. + * tmac/color.tmac: Removed. Contents moved to... + * tmac/ps.tmac: Here. + * tmac/www.tmac: Remove the title command when generating images + for html. + (NO_AUTO_RULE): New macro. + (HTML_DO_IMAGE): Use revised `\O' escapes. + * tmac/Makefile.sub, tmac/groff_www.man, tmac/troffrc: Updated. + +2001-12-02 Werner LEMBERG <wl@gnu.org> + + * tmac/groff_mdoc.man: Fix typo. + +2001-12-01 Colin Watson <cjwatson@debian.org> + + * man/roff.man: Fix typo. + +2001-11-29 Werner LEMBERG <wl@gnu.org> + + * src/libs/libbib/map.c, src/utils/pfbtops/pfbtops.c: Include + stdlib.h. + + * src/roff/troff/input.cc (read_draw_node): Emit error message if + more than one argument to \D'f ...'. + + * tmac/Makefile.sub (NORMALFILES): Add lbp.tmac. + +2001-11-28 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac, tmac/doc.tmac: Assure that the macro package is + loaded only once. + + * tmac/groff_man.man: Minor cosmetic fix. + +2001-11-27 Werner LEMBERG <wl@gnu.org> + + * src/roff/groff/groff.man, tmac/groff_tmac.man, + tmac/groff_www.man: s/mwww/www/. + +2001-11-26 Werner LEMBERG <wl@gnu.org> + + * aclocal.m4 (GROFF_MKSTEMP): Implement test using C++ linkage. + * configure: Regenerated. + * win32-diffs: Updated. + + * tmac/groff_mwww.tmac: Renamed to ... + * tmac/groff_www.tmac: This. + * tmac/mwww.tmac: Removed. + * NEWS, tmac/Makefile.sub: Updated. + +2001-11-21 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Improve documentation of the `\v' escape. + Fix explanation of `\D' and `rt'. + +2001-11-20 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac (an-header): Set header length equal to page + width. + * doc/groff.texinfo: Improve documentation of `ne' request. Other + minor fixes. + * NEWS: Small fix. + +2001-11-19 Werner LEMBERG <wl@gnu.org> + + * NEWS, man/Makefile.sub: Updated. + +2001-11-19 Bernd Warken <bwarken@mayn.de> + + * man/ditroff.man: New file. + +2001-11-17 Werner LEMBERG <wl@gnu.org> + + * man/groff_differences.man: Renamed to ... + * man/groff_diff.man: This. Updated. + * man/Makefile.sub, src/roff/troff/troff.man, NEWS: Updated. + + * src/preproc/html/pushbackbuffer.cc: Renamed to ... + * src/preproc/html/pushback.cc: This. Updated. + * src/preproc/html/pushbackbuffer.h: Renamed to ... + * src/preproc/html/pushback.h: This. + * src/preproc/html/Makefile.sub, src/preproc/html/pre-html.cc: + Updated. + + * src/libs/libgroff/htmlindicate.cc: Renamed to ... + * src/libs/libgroff/htmlhint.cc: This. + * src/libs/libgroff/Makefile.sub: Updated. + + * tmac/an-old.tmac (an-end): Fix page length. + +2001-11-16 Werner LEMBERG <wl@gnu.org> + + * NEWS, man/groff_differences.man, doc/groff.texinfo: Updated. + * man/Makefile.sub: Include groff_differences.man. + * VERSION: Set to 1.18. + * REVISION: Set to 0. + +2001-11-16 Bernd Warken <bwarken@mayn.de> + + * src/roff/troff/input.cc (do_define_macro): Allow whitespace before + the second dot (or ending macro name) to end a macro. + * doc/groff.texinfo: Doc fix. + +2001-11-16 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/doc-common (doc-header): Handle very long document titles + better. + +2001-11-16 Werner LEMBERG <wl@gnu.org> + + * tmac/doc.tmac (doc-do-Bl-args): Fix .substring requests. + +2001-11-15 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/troff.man: Revised and split into troff.man and... + * man/groff_differences.man: New file. + * NEWS: Updated. + +2001-11-13 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac (TS, TE): New macros for table support. + +2001-11-12 Werner LEMBERG <wl@gnu.org> + + * src/include/lib.h: Provide a fix for emx to not include + groff-getopt.h. + +2001-10-27 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc (substring_macro): Fix computation of + boundary values. + +2001-10-20 Werner LEMBERG <wl@gnu.org> + + Undo change from 2001-08-28. + + * src/roff/troff/input.cc (have_input): New global variable. + (token::next): Set `have_input' for \f, \H, \R, \s, and \S if not + in compatibility mode. + (process_input_stack): Use it. + +2001-10-19 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/doc.tmac (doc-flag-recursion): Protect arguments against + being handled as end-of-sentence characters, + +2001-10-10 Gaius Mulley <gaius@glam.ac.uk> + + * src/roff/troff/input.cc (file_iterator): New members + `suppress_newline_flag' and `seen_escape'. + (file_iterator::next_file): Updated. + (file_iterator::fill): Use it. + (string_iterator): New member `suppress_newline_flag'. + (string_iterator::fill): Set it. + (get_color_element): Use MAX_COLOR_VAL. + * src/roff/troff/env.cc (environment): Remove `need_eol'. + (no_fill): Don't set `env->ignore_next_eol'. + (environment::newline): Handle `eol' tag properly. + Emit `eol.ce'. + (environment::add_html_tag): Set `env->ignore_next_eol'. + Don't handle `.ce'. + * src/roff/troff/env.h (environment): Updated. + + * src/devices/grohtml/post-html.cc (text_glob::is_eol_ce): New + member function. + (html_printer::outstanding_eol): New member function. + (html_printer::do_title): Use new functions. + (html_printer::troff_tag): Test `id_eol_ce'. + +2001-10-10 Werner LEMBERG <wl@gnu.org> + + * tmac/color.tmac, tmac/color-html.tmac: Use `.do' to make those + files work with -C also. + +2001-10-05 Werner LEMBERG <wl@gnu.org> + + * doc/pic.ms: Minor fix. + * src/preproc/html/pre-html.cc (scanArguments): Don't handle `-?' + as a valid command line switch. + * src/devices/grohtml/post-html.cc (main): Ditto. + (usage): Updated. + * src/devices/grohtml/grohtml.man: Updated. + * src/roff/groff/groff.cc (main): Pass `-v' to predriver also. + +2001-10-04 Werner LEMBERG <wl@gnu.org> + + Implementing color support in troff, pic, grops, and grohtml. These + changes are based on a major patch provided by Gaius Mulley + <gaius@glam.ac.uk>. + + New request: `defcolor', supporting rgb, cmy, cmyk, and gray + definitions with both hex values and fractions. + + New escapes: \m and \M for drawing and background color, + respectively. This corresponds to the troff output commands `m' + and `DF'. + + groff and troff accept command line switch `-c' to disable color + output (which is automatically disabled in compatibility mode). + + New scaling indicator `f' for fractions (1f = 65536u). + + New conditional operator `m' to test for defined colors with `if' + and `ie'. + + New keywords `color' (or `colour', `colored', `coloured'), `outline' + (or `outlined'), and `shaded' added to pic. + + * src/include/color.h: New file. + * src/include/driver.h: Include it. + * src/include/printer.h: Include color.h. + (environment): New members `col' and `fill'. + (printer): Remove `adjust_arc_center' member function. + * src/include/Makefile.sub: Updated. + + * src/libs/libdriver/input.cc (do_file): Initialize `env.col' and + `env.fill'. + Handle `m' and `DF' troff commands. + * src/libs/libgroff/color.cc: New file. + * src/libs/libgroff/Makefile.sub: Updated. + + * src/preproc/html/pre-html.cc (IMAGE_BORDER_PIXELS): Set to 2. + (stop): Removed. + (createImage): Fix computation of `y2'. + Use `pnmcrop' also. + (buffer::write_file_html): Remove calls to `stop'. + + * src/preproc/pic/common.h (common_output): New abstract function + members `set_color', `reset_color', `get_last_filled', and + `get_outline_color'. + * src/preproc/pic/object.h: Add `IS_SHADED' and `IS_OUTLINED'. + (object_spec): Add members `shaded' and `outlined'. + * src/preproc/pic/output.h (output): `command' is now abstract. + New function members `set_color', `reset_color', `get_last_filled', + and `get_outline_color'. + * src/preproc/pic/lex.cc (lookup_keyword): Recognize `colo[u]r[ed]', + `outline[d]', and `shaded'. + * src/preproc/pic/object.cc (output::command): Removed. + (output::set_location): Moved to output.h. + (graphic_object): Add protected members `outline_color' and + `color_fill'. + Add member functions `set_outline_color', `get_outline_color', and + `set_fill_color'. + (closed_object): Add member function `set_fill_color'. + Add member `color_fill'. + (graphic_object::print_text): Use `out->set_color' and + `out->reset_color'. + (box_object::print, ellipse_object::print, circle_object::print, + line_object::print, spline_object::print, arc_object::print): Ditto. + (object_spec::make_object): Implement `IS_OUTLINED' and `IS_SHADED'. + * src/preproc/pic/pic.y: Add tokens `COLORED', `OUTLINED', and + `SHADED', making them `%left'. + Add rules `object_spec [SHADED|COLORED|OUTLINED] text'. + * src/preproc/pic/tex.cc (tex_output): New dummy function members + `set_color', `reset_color', `get_last_filled', and + `get_outline_color'. + * src/preproc/pic/troff.cc (simple_output): New abstract function + members `set_color', `reset_color', and `get_last_filled'. + (simple_output::polygon, simple_output::circle, + simple_output::ellipse): Use `get_last_filled'. + (troff_output): New members `last_filled' and `last_outlined'. + New function members `set_color', `reset_color', `get_last_filled', + and `get_outline_color'. + (troff_output::finish_picture): Use `reset_color'. + (troff_output::set_fill): Test `last_filled'. + * src/preproc/pic/pic.man: Updated. + + * src/roff/groff/groff.cc (main): Implement `-c' option. + (synopsis, help): Updated. + src/roff/groff/groff.man: Updated. + + * src/roff/troff/troff.h: Include color.h. + (warning_type): Add WARN_COLOR. + * src/roff/troff/env.h (environment): New members + `{cur,prev}_{glyph,fill}_color'. + New member functions `get_{prev_,}{glyph,fill}_color'. + * src/roff/troff/env.cc: Initialize and implement them. + * src/roff/troff/input.cc: New global variable `disable_color_flag'. + Replace `NULL' with `0' everywhere for consistency. + (lookup_color, default_black, do_glyph_color, do_fill_color, + get_color_element, read_rgb, read_cmy, read_cmyk, read_gray, + define_color): New functions. + (token::next): Implement \M and \m escapes. + (do_if_request): Implement `m' operator. + (usage): Updated. + (main): Implement `-c' option. + (init_markup_requests): Add `defcolor' request. + (warning_table): Add `color' warning. + * src/roff/troff/node.h (glyph_color_node, fill_color_node): New + classes. + * src/roff/troff/node.cc (troff_output_file): New members + `current_{page,glyph}color'. New member functions `put_hex', + `glyph_color', and `fill_color'. + (glyph_color_node::*, fill_color_node::*): Implement it. + * src/roff/troff/number.cc (SCALE_INDICATOR_CHARS): Add `f'. + (parse_term): Add support for `f'. + * src/roff/troff/troff.man: Updated. + + * src/devices/grodvi/dvi.cc (draw_dvi_printer::draw): Add dummy + entry for `F'. + * src/devices/grolbp/lbp.cc (lbp_printer::draw): Ditto. + * src/devices/grolj4/lj4.cc (lj4_printer::draw): Ditto. + + * src/devices/grohtml/html-text.h (HTML_TAG): Add COLOR_TAG. + (tag_definition): Use `void *' for arg1. + (html_text): New member functions `do_color' and `done_color'. + Use `void *' for second parameter of `push_para' member function. + New `push_para' member function with a single parameter. + Use `char *' for parameter of `issue_table_begin' member function. + New `issue_color_begin' member function. + * src/devices/grohtml/html-text.cc (html_text::end_tag): Handle + COLOR_TAG. + (html_text::issue_color_begin): New function. + (html_text::issue_table_begin): Use `char *' for parameter. + (html_text::start_tag, html_text::shutdown, + html_text::check_emit_text): Updated. + (html_text::push_para): Use `void *' for second parameter. + Add same function with only one parameter. + (html_text::do_*): Updated. + (html_text::do_color, html_text::done_color): New functions. + * src/devices/grohtml/post-html.cc (style): New member `col'. + Mew member `style' with 6 parameters. + (style::style, style::operator==): Updated. + (html_printer::do_font): Use it. + (html_printer::draw): Add dummy entry for `F'. + (html_printer::set_char): Updated. + * src/devices/grohtml/grohtml.man: Updated. + + * src/devices/grops/ps.cc (ps_output::put_float): Use `%g' to have + trailing zeroes removed. + (ps_printer): New members `sbuf_color', `fill_color', and + `output_color'. + Removed member `fill'. + New member function `set_color'. + (ps_printer::ps_printer, ps_printer::set_char): Updated. + (ps_printer::flush_sbuf, ps_printer::set_line_thickness, + ps_printer::fill_path, ps_printer::draw): Use `set_color'. + + * tmac/color-html.tmac, tmac/color.tmac: New files. + * tmac/troffrc: Include them. + * tmac/www.tmac (URL, FTP, MAILTO): Use blue color. + * tmac/Makefile.sub: Updated. + + * NEWS, doc/groff.texinfo, doc/pic.ms, man/groff_out.man, + man/groff.man: Updated. + * font/devps/prologue.ps: Define FC and CO functions. + +2001-10-04 Gaius Mulley <gaius@glam.ac.uk> + + Fix incorrect cropping of images and incorrect handling of special + characters. Fix handling of file names in \O. + + * src/include/geometry.h: New file. + * src/libs/libgroff/geometry.cc: New file. + * src/libs/libdriver/printer.cc (printer::adjust_arc_center): Moved + to `geometry.cc'. + * src/roff/troff/input.cc (get_delim_file_name): Fixed problem with + initial spaces. + (do_suppress): Updated. + * src/roff/troff/node.cc: Include geometry.h. + (troff_output_file::flush_tbuf): Fixed parameters to + `check_output_limits'. + (troff_output_file::check_charinfo): Ditto. + (troff_output_file::determine_line_limits): Add support for `Da' + and `Dl' commands. + + * src/devices/grohtml/post-html.cc (str_translate_to_html): + Add new parameter `is_special' to decode special characters from + escape sequences. + (html_printer::do_title, html_printer::do_heading, + html_printer::do_indentedparagraph, + html_printer::translate_to_html, html_printer::special): Updated. + +2001-10-03 Werner LEMBERG <wl@gnu.org> + + * Makefile.sub (DISTCLEANFILES): Add stamp-h. + Fix entry for config.h. + * test-groff (GROFF_BIN_PATH): Add $builddir/roff/groff. + * tmac/troffrc: Translate nonbreakable space character to `\~'. + * src/preproc/eqn/eqn.man: Document -d command line option. + +2001-09-27 Werner LEMBERG <wl@gnu.org> + + * man/groff.man: Use + + .ev xxx + .na + .nh + <table> + .ev + + instead of the old code (`.ad .hy' after the table) to suppress + incorrect hyphenation for grohtml output. + +2001-09-22 Werner LEMBERG <wl@gnu.org> + + * man/groff_font.man, man/groff_out.man: Minor fixes. + +2001-09-20 Werner LEMBERG <wl@gnu.org> + + * PROBLEMS: Updated, reordered. Improved EPS section (thanks to + Arnold Robbins <arnold@skeeve.com>). + +2001-09-09 Werner LEMBERG <wl@gnu.org> + + * configure: Regenerated with autoconf 2.52. + + * doc/groff.texinfo: Complete revision of indices. + +2001-09-07 Werner LEMBERG <wl@gnu.org> + + * doc/Makefile (clean): Updated to delete all indices. + +2001-09-05 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/troff.man: Remove superfluous line. + + * tmac/s.tmac: Enable all warnings only if no -W or -w option is + given on the command line (or rather, if only the default warnings + are set). + +2001-09-03 Werner LEMBERG <wl@gnu.org> + + * man/groff.man, src/preproc/eqn/eqn.man, tmac/groff_mdoc.man: Don't + use .ne for TTY devices. + +2001-08-31 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/token.h, src/roff/troff/input.cc: + s/TOKEN_TRANSPARENT_ESCAPE/TOKEN_OPAQUE_ESCAPE/. + +2001-08-28 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/token.h (token_type): Add TOKEN_TRANSPARENT_ESCAPE. + * src/roff/troff/input.cc (token::next): Return + TOKEN_TRANSPARENT_ESCAPE for \f, \H, \R, \s, and \S if not in + compatibility mode. + (token::description): Updated. + (process_input_stack): Reset `bol' for TOKEN_TRANSPARENT_ESCAPE. + (token::add_to_node_list, token::process): Ignore + TOKEN_TRANSPARENT_ESCAPE. + +2001-08-27 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac: Fix `S' string. + +2001-08-26 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/troff.man: Don't use .ne for TTY devices. + +2001-08-25 Werner LEMBERG <wl@gnu.org> + + * doc/pic.ms: Replace `\\' with `\e' (and fixing some single + backslashes). + Many other minor fixes. + + * configure.ac: Add message at end to inform how to compile + xditview. + * configure: Regenerated. + +2001-08-24 Werner LEMBERG <wl@gnu.org> + + * src/include/getopt.h, src/libs/libgroff/{getopt.c, getopt1.c}: + Updated to latest version of libc. + +2001-08-23 Werner LEMBERG <wl@gnu.org> + + * configure.ac: Don't create subdirectories before AC_CONFIG_FILES. + Autoconf 2.50 and newer can handle this. + * configure: Regenerated. + +2001-08-21 Werner LEMBERG <wl@gnu.org> + + * doc/pic.ms: Fix typo. + * src/preproc/tbl/tbl.man: Document case of global options. + +2001-08-21 Gaius Mulley <gaius@glam.ac.uk> + + * src/devices/grohtml/post-html.cc (html_printer::end_font): Fix + handling of `CR' font. + +2001-08-20 Werner LEMBERG <wl@gnu.org> + + Use a config.h file. + + * src/include/lib.h: Include config.h. + * All C files: Ditto (if necessary). + * All C++ source and header files: Include lib.h first (if + necessary). + + * src/include/config.hin: New file (autogenerated by autoheader). + * stamp-h.in: New file. + * configure.ac: Updated. + * aclocal.m4: Add third parameters to AC_DEFINE macros. + (GROFF_ARRAY_DELETE): Simplified. + * Makefile.sub (DISTCLEANFILES): Updated. + Added targets for remaking config.status, config.hin, config.h, + stamp-h.in, and stamp-h. + * configure: Regenerated. + +2001-08-19 Werner LEMBERG <wl@gnu.org> + + * NEWS: Updated. + +2001-08-18 Sebastian Krahmer <krahmer@suse.de> + + * src/preproc/pic/pic.y (format_number): Use do_sprintf(). + (do_sprintf): Use snprintf(). + +2001-08-18 Werner LEMBERG <wl@gnu.org> + + * src/libs/snprintf/*: Added an snprintf module written by Mark + Martinec. + * src/libs/libgroff/Makefile.sub: Updated. + * configure.ac: Add test for snprintf(). + * Makefile.in: Updated. + * configure: Regenerated. + + * src/preproc/html/pre-html.cc (make_message): Reactivate code which + uses snprintf(). + +2001-08-14 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/doc.tmac (Ex): New implementation. + * tmac/doc-common, tmac/groff_tmac.man: Updated. + +2001-08-13 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/doc.tmac (Rv): Implement support for 0 or more than 1 + argument. + * tmac/groff_tmac.man: Updated. + +2001-08-13 Werner LEMBERG <wl@gnu.org> + + * src/preproc/tbl/tbl.man: Minor documentation update. + +2001-08-13 John David Anglin <dave@hiauly1.hia.nrc.ca> + + * src/libs/libgroff/tmpname.cc: Add prototype for gettimeofday(). + * configure.ac: Add declaration test for gettimeofday(). + * Makefile.in: Document NEED_DECLARATION_GETTIMEOFDAY defines. + * aclocal.m4: Include sys/time.h for gettimeofday declaration test. + * configure: Regenerated. + +2001-08-11 Werner LEMBERG <wl@gnu.org> + + * aclocal.m4 (GROFF_MKSTEMP): Define HAVE_MKSTEMP. + * configure.ac: Add declaration test for strcasecmp(). + * Makefile.in: Updated. + * configure: Regenerated. + * src/include/lib.h [!HAVE_MKSTEMP]: Add prototype for mkstemp() -- + this is necessary because groff's mkstemp.cc is C++. + Add declaration conditionally for strcasecmp(). + +2001-08-10 Werner LEMBERG <wl@gnu.org> + + Integrated pic2graph, contributed by Eric S. Raymond. + + * contrib/pic2graph/{Makefile.sub, pic2graph.sh, pic2graph.man}: New + files. + * Makefile.in, NEWS: Updated. + + * src/preproc/tbl/tbl.man: Revised. + +2001-08-09 Eric S. Raymond <esr@thyrsus.com> + + * src/preproc/tbl/tbl.man: Extended to cover all tbl features. + +2001-08-09 Werner LEMBERG <wl@gnu.org> + + * src/preproc/tbl/main.cc (process_data): Fix recognition of .lf + requests. + +2001-08-08 Paul Eggert <eggert@twinsun.com> + + * Makefile.sub (configure): Depend on configure.ac, not + configure.in. + * INSTALL.gen: Upgrade to autoconf 2.52's INSTALL. + +2001-08-07 Werner LEMBERG <wl@gnu.org> + + * src/utils/afmtodit/afmtodit.man, src/roff/groff/groff.man: Minor + fixes. + +2001-08-06 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/troff.man: Improve documentation of -E option. + +2001-07-28 Ralph Corderoy <ralph@inputplus.demon.co.uk> + + * src/preproc/html/pushbackbuffer.cc (pushBackBuffer::readNumber): + Simplified. + +2001-07-27 Werner LEMBERG <wl@gnu.org> + + * src/preproc/refer/refer.cc: Undo last change. + * src/devices/grohtml/post-html.cc: Ditto. + +2001-07-26 Werner LEMBERG <wl@gnu.org> + + * src/preproc/refer/refer.cc: Include `lib.h'. + * src/devices/grohtml/post-html.cc: Ditto. + +2001-07-25 Gaius Mulley <gaius@glam.ac.uk> + + * aclocal.m4 (GROFF_PAGE): Add `AC_DEFINE(PAGEA4)'. + * src/preproc/html/pre-html.cc: Use it for DEFAULT_VERTICAL_OFFSET. + * Makefile.in: Comment updated. + * configure: Regenerated. + +2001-07-25 Werner LEMBERG <wl@gnu.org> + + * src/preproc/pic/pic.cc: Removed. + * src/preproc/pic/pic_tab.h: Removed. + * src/preproc/refer/label.cc: Removed. + + * doc/Makefile (.ms.html): Don't use a file name extension in + argument to grohtml's -I option. + * Makefile.in (dist): Remove CVS directories. + Call `distfiles' target. + + * src/devices/grohtml/grohtml.man: Add information about valid + versions of pnmtopng. + * src/preproc/html/pre-html.cc (TRANSPARENT): Use `white' as colour + name instead of number. + +2001-07-24 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Minor fixes. + +2001-07-21 Gaius Mulley <gaius@glam.ac.uk> + + * doc/Makefile (.ms.html): Put image files into a subdirectory. + (clean): Updated. + +2001-07-20 Werner LEMBERG <wl@gnu.org> + + * src/libs/libgroff/tmpname.cc: New file, defining get_tempname(). + * src/libs/libgroff/mkstemp.cc: New file. + * src/libs/libgroff/mksdir.cc: New file. + * src/libs/libgroff/tmpfile.cc [HAVE_MKSTEMP_PROTO]: Removed. + (xtmpfile) [!HAVE_MKSTEMP]: Removed. + * src/libs/libgroff/Makefile.sub: Updated. + * src/include/lib.h: Add mksdir() prototype. + * src/include/posix.h: Define S_IXUSR if not yet defined. + + * src/preproc/html/pre-html.cc (MAX_RETRIES): Removed. + (createAllPages): Use mksdir() instead of current code. + * src/utils/indxbib/indxbib.cc [HAVE_MKSTEMP_PROTO]: Removed. + (main): [!HAVE_MKSTEMP]: Removed. + + * aclocal.m4 (GROFF_MKSTEMP): Updated to use new mkstemp.cc file. + (GROFF_INTTYPES_H, GROFF_UNSIGNED_LONG_LONG, GROFF_UINTMAX_T): New + macros. + * configure.ac: Add tests for stdint.h, sys/time.h, and + gettimeofday(). + Call new GROFF_xxx macros. + * configure: Regenerated. + * Makefile.in: Comments updated. + +2001-07-20 Gaius Mulley <gaius@glam.ac.uk> + + * src/preproc/html/pre-html.cc (scanArguments): Use getopt_long() + instead of current code. + * src/devices/grohtml/post-html.cc (main): Handle `-d' option. + * src/roff/groff/groff.cc (possible_command::insert_args): New + function. + (main): Use it for predriver handling instead of insert_arg(). + +2001-07-19 Werner LEMBERG <wl@gnu.org> + + * doc/Makefile: Added GROFF_BIN_PATH to make it work with uninstalled + groff also. + + * src/include/posix.h: Define S_IWUSR if not yet defined. + +2001-07-18 Werner LEMBERG <wl@gnu.org> + + * NEWS: Updated. + +2001-07-18 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/groff_mdoc.man: Document new -width and -column syntax. + Some other minor fixes. + * tmac/an-old.tmac: Add `AT' and `UC' macros. + +2001-07-17 Gaius Mulley <gaius@glam.ac.uk> + + Replace call to `troff' with `groff -Z' to make it aware of + GROFF_BIN_PATH. + + * src/preproc/html/pre-html.cc (TROFF_COMMAND): New macro. + (troff_command, command_prefix): Removed. + (alterDeviceTo): Use groff. + (addZ): New function. + (char_buffer::do_html): Use it. + (scanArguments): Use TROFF_COMMAND. + (findPrefix): Removed. + (main): Updated. + * src/roff/groff/groff.cc (main): Handle zflag for preprocessors. + +2001-07-17 Eric S. Raymond <esr@snark.thyrsus.com> + + * doc/pic.ms: Documentation fixes. + +2001-07-17 Werner LEMBERG <wl@gnu.org> + + Replace atexit() with global destructor. + + * src/libs/libgroff/tmpfile.cc (xtmpfile_list): Add constructor. + (xtmpfile_list_init): New global structure to deallocate + xtmpfile_list on exit. Its destructor inherits most code from + remove_tmp_files(). + (remove_tmp_files): Deleted. + (add_tmp_file): Simplified. + +2001-07-16 Werner LEMBERG <wl@gnu.org> + + Replace strdup() with strsave(). + + * src/devices/grolbp/lbp.cc [!HAVE_STRDUP]: Removed. + (set_papersize): Use strsave() and a_delete. + (main): Use strsave(). + * src/preproc/html/pre-html.cc (make_message, createAllPages, + removeAllPages): Use strsave() and a_delete. + + * configure.ac: Remove test for strdup. + * Makefile.in: Comment updated. + * configure: Regenerated. + +2001-07-15 Werner LEMBERG <wl@gnu.org> + + * win32-diffs: Updated. + +2001-07-14 Werner LEMBERG <wl@gnu.org> + + * src/preproc/html/pre-html.cc (makeTempFiles): Activate new code, + removing the old one. + * src/utils/indxbib/indxbib.cc (main): Remove compiler warning. + +2001-07-14 Ralph Corderoy <ralph@inputplus.demon.co.uk> + + * src/libs/libgroff/tmpfile.cc (xtmpfile): Fix guard for `namep'. + +2001-07-12 Ruslan Ermilov <ru@FreeBSD.org> + + Merge -xwidth into -width. Add -xwidth functionality to -column + also. + + * tmac/doc.tmac (Bl): Add dummy doc-typeXXX and doc-spaceXXX to + avoid warning. + (doc-do-Bl-args): Merge -xwidth code with -width. Test whether + string immediately following a leading dot starts with a valid mdoc + argument. + Add similar code to the -column branch. + (doc-Bl-usage): Updated. + * groff_mdoc.man: s/-xwidth/-width/. + +2001-07-12 Gaius Mulley <gaius@glam.ac.uk> + + * src/devices/grohtml/post-html.cc (text_glob::is_br): Stop titles + running into centered or non-formatted text. + +2001-07-11 Werner LEMBERG <wl@gnu.org> + + Introduce short and long prefixes to have the selection at run-time + whether there is a 8+3 limit for names of temporary files. + + * src/libs/libgroff/tmpfile.cc (TMPFILE_PREFIX): Replaced with... + (TMPFILE_PREFIX_SHORT, TMPFILE_PREFIX_LONG): This. + (tmpfile_prefix, tmpfile_prefix_len, use_short_prefix): New + variables. + (temp_init): New global structure to initialize above three + variables. + (xtmptemplate): Use two parameters for long and short prefix. + Simplify code use above three variables. + (xtmpfile): Use long and short prefixes as parameters. + * src/include/lib.h: Updated. + + * src/preproc/html/pre-html.cc ({PAGE,PS,REGION}_TEMPLATE): Replace + with ... + ({PAGE,PS,REGION}_TEMPLATE_{SHORT,LONG}): This. + (createAllPages, makeTempFiles): Updated. + +2001-07-09 Werner LEMBERG <wl@gnu.org> + + * REVISION: Increased to 3. + +Copyright 2001-2002 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. + +Local Variables: +coding: latin-1 +fill-column: 72 +mode: change-log +version-control: never +End: +vim:set autoindent textwidth=72: diff --git a/ChangeLog.119 b/ChangeLog.119 new file mode 100644 index 0000000..2840368 --- /dev/null +++ b/ChangeLog.119 @@ -0,0 +1,5240 @@ + +Version 1.19.2 released +======================= + + * tmac/groff_ms.man, doc/groff.texinfo: Synchronize. + + * doc/webpage.ms: Updated. + + * install-sh, mkinstalldirs: New versions; taken from texinfo CVS. + +2005-09-04 Jrgen Grahn <jgrahn@algonet.se> + + * tmac/groff_ms.man: Document `PO' better. + +2005-09-03 Werner LEMBERG <wl@gnu.org> + + * NEWS: Document grotty changes. + +2005-09-01 Keith Marshall <keith.d.marshall@ntlworld.com> + + Backward compatibility support for `man' program. + + * tmac/an-old.tmac (LL): Initialize it to respect prior LL register + assignment, prior `.ll' request and then package defaults, in this + specified order of decreasing priority. + + * tmac/groff_man.man, doc/groff.texinfo (Man options): Document + altered `LL' register initialization priorities. + +2005-08-29 Gary W. Swearingen <garys@opusnet.com> + + * tmac/groff_mdoc.man: Go into more details how the `AUTHORS' + section should look like. + +2005-08-29 Werner LEMBERG <wl@gnu.org> + + * tmac/groff_mdoc.man: The month's name in a call to .Dd shouldn't + be abbreviated. + +2005-08-27 Bernd Warken <groff-bernd.warken-72@web.de> + + * tmac/groff_man.man: Add man(7) too SEE ALSO and more minor + fixes. + +2005-08-11 Bernd Warken <groff-bernd.warken-72@web.de> + + * tmac/www.tmac (URL, MTO): Handle empty \\$1 better. + +2005-08-09 Bernd Warken <groff-bernd.warken-72@web.de> + + * tmac/www.tmac (URL, MTO): Use bold series if color support is + deactivated. + +2005-08-02 Bernd Warken <groff-bernd.warken-72@web.de> + + * doc/Makefile.sub (uninstall_sub): Use --remove, not --delete + as argument to $(INSTALL_INFO). The latter isn't portable. + Remove $(HTMLEXAMPLEFILES) too. + + * Makefile.in (uninstall_dirs): Remove $(datadir)/doc/groff and + $(datadir)/doc too. + Suppress warning messages and return always true. + + * tmac/Makefile.sub (uninstall_sub): Remove www.tmac too. + +2005-07-02 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/devices/xditview/gxditview.man: Change many `.I' to `.B'. + * man/groff_out.man: More markup and minor improvements. + * src/roff/groff/groff.man: Minor improvements. + +2005-06-28 Werner LEMBERG <wl@gnu.org> + + * ChangeLog: Split off older entries into... + * ChangeLog.115 ChangeLog.116, ChangeLog.117, ChangeLog.118: New + files. + +2005-06-26 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/devices/xditview/gxditview.man: More minor fixes. + +2005-06-24 Werner LEMBERG <wl@gnu.org> + + * src/preproc/pic/troff.cpp (troff_output::set_fill, + troff_output::set_color, troff_output::reset_color): Use .bcolor and + .fcolor instead of \m and \M, respectively. + +2005-06-23 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/devices/xditview/gxditview.man: More minor fixes. + * README: Formatting issues. + Mention some problems with Debian. + +2005-06-23 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/devices/xditview/gxditview.man: Revised and improved. + +2005-06-22 Werner LEMBERG <wl@gnu.org> + + Another round in fixing getopt problems. Hopefully the last one! + This time we use the getopt stuff from gnulib and define a prefix + unconditionally so that there are no collisions with any other + getopt implementations. This is a slight waste of space in case + we already use a GNU getopt implementation, but on + the other hand it really simplifies life. + + * src/include/getopt.h: Use gnulib version. + + * src/include/getopt_int.h: Use gnulib version. + + * src/include/groff-getopt.h: Removed. Obsolete now. + + * src/include/lib.h: Regarding getopt, don't handle any platform + specially; just include getopt.h. + (__GETOPT_PREFIX): Define (before getopt.h). + + * src/include/Makefile.sub (HDRS): Updated. + + * src/libs/libgroff/getopt1.c, src/libs/libgroff/getopt.c: Use + gnulib version. + + * src/libs/libgroff/Makefile.sub (EXTRA_CFLAGS): Set + __GETOPT_PREFIX. + + * src/utils/pfbtops/pfbtops.c, src/utils/xtotroff/xtotroff.c + (__GETOPT_PREFIX): Define (before getopt.h). + +2005-06-21 Werner LEMBERG <wl@gnu.org> + + * src/include/lib.h: Provide a fix for Mac OS X to not include + groff-getopt.h. + +2005-06-20 Denis M. Wilson <dmw@oxytropis.plus.com> + + * font/devps/prologue.ps (EP): Don't use `bind'. Reason: Using + `bind' to define a procedure which contains `showpage' means that an + invocation of `showpage' may execute wrongly (the exact effect + depending on the interpreter). Not usually a problem except under + transformations, such as combining pages. + (PEND): Don't call `clear'. Reason: Using `clear' in the definition + of /PEND means that stack underflow will occur if the stack is + deliberately non-empty before document inclusion. If included + files are found to be generally badly behaved, we could replace the + `clear' with `mark' in /PBEGIN and `cleartomark' in /PEND (I've + never found this necessary). + +2005-06-20 Jrgen Grahn <jgrahn@algonet.se> + + * src/preproc/soelim/soelim.cpp (do_file): Append trailing zero + earlier to get correct error message. + +2005-06-16 Bernd Warken <groff-bernd.warken-72@web.de> + * src/roff/nroff/nroff.sh: Add support for iso-8859-15. + +2005-06-15 Werner LEMBERG <wl@gnu.org> + + Another try to update getopt files. This time we add a dummy + gettext.h file to satisfy the dependency. + + * src/include/getopt.h, src/libs/libgroff/getopt.c, + src/libs/libgroff/getopt1.c: Updated from GNU libc CVS. + + * src/include/getopt_int.h: New file (from GNU libc CVS). + + * src/include/gettext.h: Dummy file which just defines a gettext() + macro. + + * src/include/groff-getopt.h: Updated. + + * src/include/Makefile.sub (HDRS): Add getopt_int.h and gettext.h. + + + * src/libs/libdriver/input.cpp (IntArray): Remove superfluous + `const' keywords in return value. + + * src/preproc/html/pushback.cpp (pushBackBuffer::~pushBackBuffer): + Remove redundant variable `old'. + (pushBackBuffer::skipToNewline): Remove redundant variable `ch'. + + * src/preproc/tbl/main.cpp (process_table): Remove redundant + variable `c'. + + + Fix more friend name injection problems since modern C++ compilers + fail otherwise. We simply provide (global) declarations for all + functions declared as friends. This is not really necessary but + doesn't harm. + + * src/preproc/eqn/lex.cpp: Provide declarations for get_char, + peek_char, and get_location. + + * src/preproc/refer/ref.h: Provide declarations for + compare_reference, same_reference, same_year, same_date, + same_author_last_name, and same_author_name. + + * src/roff/troff/div.h: Provide declarations for do_divert and + page_offset. + + * src/roff/troff/env.h: Provide declarations for title_length, + space_size, fill, no_fill, adjust, no_adjust, center, right_justify, + vertical_spacing, post_vertical_spacing, line_spacing, line_length, + indent, temporary_indent, do_underline, do_input_trap, set_tabs, + margin_character, no_number, number_lines, leader_character, + tab_character, hyphenate_request, no_hyphenate, + hyphen_line_max_request, hyphenation_space_request, + hyphenation_margin_request, line_width, tabs_save, tabs_restore, + line_tabs_request, widow_control_request, and do_divert. + + * src/roff/troff/input.cpp: Provide declaration for chop_macro. + + * src/roff/troff/node.cpp: Provide declarations for class + tfont_spec. + Provide declaration for make_tfont. + +2005-05-29 Werner LEMBERG <wl@gnu.org> + + * doc/fdl.texi: Updated to version 1.2. Reported by + Bernd Warken <groff-bernd.warken-72@web.de>. + +2005-05-28 Werner LEMBERG <wl@gnu.org> + + * src/devices/grolbp/lbp.cpp, src/devices/grolbp/lbp.h: Remove + redundant semicolons. + + * src/preproc/eqn/Makefile.sub, src/preproc/html/Makefile.sub, + src/preproc/soelim/Makefile.sub, src/preproc/tbl/Makefile.sub: + Define `MLIB'. Some compilers need this for linking with libgroff. + +2005-05-27 Werner LEMBERG <wl@gnu.org> + + * MANIFEST, README, doc/webpage.ms: Updated. + +2005-05-26 Werner LEMBERG <wl@gnu.org> + + * All affected files: Update postal address of FSF. + +2005-05-25 Keith Marshall <keith.d.marshall@ntlworld.com> + Bernd Warken <groff-bernd.warken-72@web.de> + + * README: More fixes. + + * README.CVS: Removed. Its contents is now part of the README file. + +2005-05-21 Werner LEMBERG <wl@gnu.org> + + * README: Updated. Based on a patch from + Bernd Warken <groff-bernd.warken-72@web.de>. + +2005-05-16 Keith Marshall <keith.d.marshall@ntlworld.com> + + Miscellaneous script portability enhancements. + + * aclocal.m4: (GROFF_CSH_HACK): Add space in shebang prototype for + generated conftest.sh script, conforming to portability + recommendation in autoconf docs. + * configure: Likewise, for code generated by GROFF_CSH_HACK. + * contrib/eqn2graph/eqn2graph.sh: Add space in shebang, conforming + to portability recommendation in autoconf docs. + * contrib/grap2graph/grap2graph.sh: Likewise. + * contrib/pic2graph/pic2graph.sh: Likewise. + * font/devps/generate/afmname: Likewise. + * src/devices/xditview/ad2c: Likewise. + * src/preproc/eqn/neqn.sh: Likewise. + * src/roff/grog/grog.pl: Likewise. + * src/roff/grog/grog.sh: Likewise. + * src/roff/nroff/nroff.sh: Likewise. + * PROBLEMS: Likewise, in embedded script examples. + +2005-05-16 Keith Marshall <keith.d.marshall@ntlworld.com> + + Improve portability of `pdfroff' shell script. + + * arch/misc/shdeps.sh: Add space in shebang, conforming to + portability guidelines in `autoconf' docs. + (PATH_SEARCH_SETUP): New substitution; emits PATH_SEPARATOR + initialization code. Used by contrib/pdfmark/pdfroff.sh's + `searchpath' function. + +2005-05-14 Werner LEMBERG <wl@gnu.org> + + * contrib/pic2graph/pic2graph.sh, contrib/graph2graph.sh, + contrib/eqn2graph.sh: Add option `-trim' to `convert' which is + needed for newer ImageMagick versions. + +2005-05-07 Werner LEMBERG <wl@gnu.org> + + * src/preproc/refer/refer.man: Many small typographic fixes. + +2005-05-06 Jeff Conrad <jeff_conrad@msn.com> + + * src/devices/grohtml/post-html.cpp (assert_state::~assert_state): + Use `char *' cast for a_delete. + +2005-05-03 Werner LEMBERG <wl@gnu.org> + + * src/libs/libgroff/maxpathname.cpp: Include stdlib.h. + src/libs/libgroff/relocate.cpp: Use path_name_max everywhere. + +2005-05-03 Jeff Conrad <jeff_conrad@msn.com> + + * src/devices/grohtml/post-html.cpp: Use casts to `char *' if using + `a_delete' for `const char *'. + +2005-05-03 Werner LEMBERG <wl@gnu.org> + + * src/devices/grohtml/post-html.cpp, + src/devices/grohtml/html-table.cpp, + src/devices/grohtml/html-text.cpp, src/devices/grohtml/output.cpp: + Replace malloc/free with new/delete/a_delete. + + * src/devices/grolbp/lbp.h: Remove superfluous semicolons which + are prohibited with ANSI C++. + (lbpprintf, vdmprintf): Remove useless `inline' keyword (since the + function has a variable number of arguments). + + * src/preproc/grn/main.cpp (doinput): Change return type to `int'. + Simplify function and update all callers. + +2005-05-02 Werner LEMBERG <wl@gnu.org> + + Undo getopt changes from 2005-04-30. We don't want a dependency + on gettext. + + * src/include/getopt_int.h: Removed. + + * src/include/getopt.h, src/include/groff-getopt.h, + src/include/Makefile.sub, src/libs/libgroff/getopt.c, + src/libs/libgroff/getopt1.c: Revert to previous version. + + + * src/include/nonposix.h (access) [_MSC_VER]: New macro. + + * src/include/posix.h (F_OK): Define conditionally. + + * src/devices/grotty/tty.cpp (tty_printer::make_underline): Use + different variable name in second `for' loop to avoid MSVC compiler + problem. + +2005-04-30 Werner LEMBERG <wl@gnu.org> + + AC_TYPE_SIGNAL from current autoconf can fail if CC=g++. + + * aclocal.m4 (GROFF_TYPE_SIGNAL): New function. + * configure.ac: Use GROFF_TYPE_SIGNAL, not AC_TYPE_SIGNAL. + * configure, src/include/config.hin: Regenerated. + + * PROBLEMS: Updated. + + + Update getopt files. + + * src/include/getopt.h, src/libs/libgroff/getopt.c, + src/libs/libgroff/getopt1.c: Updated from GNU libc CVS. + + * src/include/getopt_int.h: New file (from GNU libc CVS). + + * src/include/groff-getopt.h: Updated. + + * src/include/Makefile.sub (HDRS): Add getopt_int.h. + + + * font/devutf8/NOTES: Updated. + +2005-04-28 Werner LEMBERG <wl@gnu.org> + + Bug fix for Win32 relocatable code. Based on a patch from Keith + Marshall. + + * src/libs/libgroff/maxpathname.cpp (PATH_MAX): Test for `_MAX_PATH' + also. + + * src/libs/libgroff/relocate.c (DEBUG): Define it conditionally. + (searchpath) [_WIN32]: Use `_fullpath', not `realpath'. + +2005-04-28 Keith Marshall <keith.d.marshall@ntlworld.com> + + Correct `gnu.eps' handling for build from distribution tarball, with + separate source and build directories. + + * doc/Makefile.sub: (examples.stamp): New target; forces copy of + grnexmpl.g, groff.css and gnu.eps from source to build directory; + generate gnu.eps from gnu.xpm if required; touch examples.stamp. + (prepare_examples): Make it depend on examples.stamp. + (CLEANADD): Add examples.stamp. + +2005-04-27 Werner LEMBERG <wl@gnu.org> + + Implement the rule + + position: `(' position `)' + + in pic. + + * src/preproc/pic/pic.y (position, position_not_place): Handle + additional parentheses. + + * doc/pic.ms: Updated. + +2005-04-23 Larry Jones <lawrence.jones@ugs.com> + + * src/utils/xtotroff/xtotroff.c (MapFont): Fix variable declaration. + +2005-04-18 Werner LEMBERG <wl@gnu.org> + + * src/roff/groff/pipeline.c: Don't include ctype.h. + +2005-04-13 Werner LEMBERG <wl@gnu.org> + + * src/roff/nroff/nroff.man: Document option `-M'. + +2005-04-13 Bruce Lilly <blilly@erols.com> + + * src/roff/nroff/nroff.sh: Make the script accept option `-M'. + +2005-04-01 Kees Zeelenberg <kzlg@users.sourceforge.net> + Werner LEMBERG <wl@gnu.org> + + Add binary relocation support for Windows platforms. + + * src/include/Makefile.sub (defs.h): Add `INSTALLPATH'. + + * src/include/relocate.h, src/libs/libgroff/relocate.cpp: New files. + + * src/libs/libgroff/searchpath.cpp: Handle `relocate'. + (search_path::search_path, search_path::open_file_cautious): Use + `relocate'. + + * src/libs/libgroff/Makefile.sub (OBJS, CCSRCS), + src/include/Makefile.sub (HDRS): Updated. + +2005-04-01 Werner LEMBERG <wl@gnu.org> + + * src/devices/grohtml/post-html.cpp: Don't use strdup/free but + strsave/a_delete. + + * src/libs/libgroff/font.cpp: Replace strdup with strsave. + + * src/libs/libgroff/maxfilename.cpp: Don't include limits.h since + lib.h already does it. + + * src/libs/libgroff/maxpathname.cpp: New file, defining + path_name_max. + + * src/include/lib.h: Add prototype for path_name_max. + + * src/libs/libgroff/Makefile.sub (OBJS, CCSRCS): Updated. + + * src/include/nonposix.h (PATH_EXT): New macro. + +2005-03-28 Werner LEMBERG <wl@gnu.org> + + Add support for double- and zero-width characters in grotty. + + * src/devices/grotty/tty.cpp (glyph): Add width. + (tty_printer::make_underline, tty_printer::make_bold, + tty_printer::add_character): Add parameter to pass character width. + Update all callers. + (tty_printer::end_page): Increase hpos by actual character width. + + * font/devutf8/R.proto: Specify zero width for non-spacing + characters. + + * tmac/unicode.tmac: Remove definitions for non-spacing entities. + + * Makefile.comm (extraclean): Remove more junk files. + +2005-03-25 Werner LEMBERG <wl@gnu.org> + + * configure.ac: Undo change from 2005-03-24. + * configure: Regenerated. + +2005-03-24 Werner LEMBERG <wl@gnu.org> + + * Makefile.in (NOMAKEDIRS): Add contrib/gdiffmk/tests. + (dist): Search Makefile while descending into $(EXTRADIRS). + + * doc/Makefile.in (.PHONY): Add. + (clean): Don't remove *.png and *.eps. + Don't handle *.gif. + (realclean): Remove *.png and *.eps. + (extraclean): Depend on distclean. + + * configure.ac: Add copyright. + Handle contrib/pdfmark/Makefile. + + * configure: Regenerated. + +2005-03-18 Larry Kollar <kollar@alltel.net> + + Add numbered and definition lists to www.tmac. + + * tmac/www.tmac (www-ul-level1, www-ul-level2, www-ul-level3, + www-ol-level1, www-ol-level2, www-ol-level3, www-ol-tmp): New + auxiliary string registers. + (www-ul-level, www-ol-level, www-dl-level, www-ol-ctr1, www-ol-ctr2, + www-ol-ctr3, www-dl-shift): New auxiliary number registers. + (www-level): Removed. + (www-level1, www-level2, www-level3): Initialize to empty. + (www-level0, www-level4, www-level5, www-level6, www-level7, + www-level8, www-level9): New string registers. + (www-push-li, www-pop-li): New macros. + (www-push-level, www-pop-level): Renamed to... + (www-push-ul-level, www-pop-ul-level): This. + Updated. + (www-push-ol-level, www-pop-ol-level): New macros. + (ULS, ULE): Updated. + (OLS, OLE, DLS, DLE): New user macros. + (LI): Removed. It is aliased to one of... + (www-li-ul, www-li-ol, www-li-dl): New macros. + + * tmac/groff_www.man: Document new macros. + + * NEWS: Updated. + +2005-03-18 Werner LEMBERG <wl@gnu.org> + + * tmac/doc-common (doc-operating-system-NetBSD-2.0.1, + doc-operating-system-NetBSD-2.0.2): New strings. + + * tmac/groff_mdoc.man: Updated. + +2005-03-17 Werner LEMBERG <wl@gnu.org> + + * doc/Makefile.sub (CLEANADD): Add `groff.html'. + +2005-03-17 Werner LEMBERG <wl@gnu.org> + + * src/libs/libgroff/hypot.c: Renamed to... + * src/libs/libgroff/hypot.cpp: This. Updated to C++. + + * src/libs/libgroff/Makefile.sub (CCSRCS, CSRCS): Updated. + + * src/include/lib.h: Updated. + +2005-03-16 Werner LEMBERG <wl@gnu.org> + + Add workaround for broken hypot() on Interix. + + * src/libs/libgroff/hypot.c: New wrapper file for `hypot'. + + * src/libs/libgroff/Makefile.sub (OBJS): Add `hypot.o'. + (CSRCS): Add `hypot.c'. + + * src/include/lib.h: Declare `groff_hypot'. + + * src/preproc/grn/hgraph.cpp: Don't declare `hypot'. + Use `groff_hypot'. + + * src/preproc/pic/pic.h: Don't declare `hypot'. + + * src/preproc/pic/object.cpp (hypot): Use `groff_hypot'. + +2005-03-15 Gaius Mulley <gaius@glam.ac.uk> + + * src/devices/grohtml/post-html.cpp + (html_printer::lookahead_for_tables): End .ce properly to avoid a + segfault. + +2005-03-15 Werner LEMBERG <wl@gnu.org> + + makeinfo 4.8 doesn't produce good HTML output from groff.texinfo. + + * doc/fixinfo.sh: New script to postprocess makeinfo's HTML output. + + * doc/Makefile.in (.texinfo.html): Call fixinfo.sh. + +2005-03-14 Werner LEMBERG <wl@gnu.org> + + Add Cyrillic support to devutf8 and devhtml. + + * font/devutf8/R.proto, font/devhtml/R.proto: Add Cyrillic blocks. + + * tmac/unicode.tmac: New file. + + * tmac/tty.tmac: Include unicode.tmac if device is utf8. + + * tmac/Makefile.sub (NORMALFILES): Add unicode.tmac. + + * NEWS: Updated. + +2005-03-02 Keith Marshall <keith.d.marshall@ntlworld.com> + + * src/libs/libdriver/printer.cpp (check_for_output_error): New + function. It has been introduced to catch peculiar error contexts + on MS-Windows platforms. + +2005-02-28 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cpp (string_iterator::fill): Protect against + null pointer. + + * tmac/papersize.tmac: Convert `paper' string contents to lowercase. + + * configure: Regenerated. + + * NEWS: Updated. + +2005-02-28 Keith Marshall <keith.d.marshall@ntlworld.com> + + Integrate `pdfmark' into normal groff build system; + install macro `pdfmark' packages, build and install `pdfroff', + and PDF format documentation. + + * Makefile.comm: Add PDFDOCDIR. + + * Makefile.in: (MDEFINES) ALT_AWK_PROGS, ALT_GHOSTSCRIPT_PROGS, + pdfdocdir, make_pdfdoc, make_install_pdfdoc: New variables. + (unstall_dirs): Add pdfdocdir. + + * aclocal.m4: (GROFF_GHOSTSCRIPT_PREFS): New function; support + `--with-alt-gs' option, set ALT_GHOSTSCRIPT_PROGS. + (GROFF_GHOSTSCRIPT_PATH): Support `--with-gs' option, force use of + GROFF_GHOSTSCRIPT_PREFS, set GHOSTSCRIPT. + (GROFF_HTML_PROGRAMS): Force use of GROFF_GHOSTSCRIPT_PATH; tidy up. + (GROFF_AWK_PREFS): New function; support `--with-alt-awk' option, + set ALT_AWK_PROGS. + (GROFF_AWK_PATH): New function; support `--with-awk' option, force + use of GROFF_AWK_PREFS. + (GROFF_PDFDOC_PROGRAMS): New function; force use of GROFF_AWK_PATH + and GROFF_GHOSTSCRIPT_PATH, set make_pdfdoc and make_install_pdfdoc. + + * configure.ac: Add AC_PREREQ(2.59), GROFF_PDFDOC_PROGRAMS. + Remove GROFF_GHOSTSCRIPT_PATH, (forced by GROFF_PDFDOC_PROGRAMS, and + also by modified GROFF_HTML_PROGRAMS). + +2005-02-27 Gaius Mulley <gaius@glam.ac.uk> + + * src/devices/grohtml/html-text.cpp (html_text::do_pre): Preserve + paragraph spacing. + (html_text::done_para): Unset `start_space'. + (html_text::remove_para_align): Call `retrieve_para_space' for the + spacing. + + * src/devices/grohtml/post-html.cpp (html_printer::emit_raw): Unset + `seen_space'. + (html_printer::do_check_center): Emit vertical space if necessary. + + * src/roff/troff/env.cpp (environment_switch): Preserve + `seen_space', `seen_eol', and `suppress_next_eol' while switching + environments. + + * src/roff/troff/node.cpp (suppress_node::suppress_node): Set + `is_special'. + +2005-02-20 Werner LEMBERG <wl@gnu.org> + + * src/preproc/eqn/eqn.man, NEWS: Document various extensions of + eqn. + +2005-02-17 Werner LEMBERG <wl@gnu.org> + + * doc/pic.ms, man/groff.man: Fix typos. + + * doc/groff.texinfo: Fix typos. + (\LEmacro): Get proper mathematical spacing. + +2005-02-16 Werner LEMBERG <wl@gnu.org> + + * aclocal.m4 (GROFF_APPRESDIR_CHECK): Improve warning message. + * configure: Regenerated with autoconf 2.59b. + +2005-02-16 Gaius Mulley <gaius@glam.ac.uk> + + * src/devices/grohtml/post-html.cpp (html_printer::is_line_start, + html_printer::start_font): Fix handling of preformatted text. + +2005-02-15 Gaius Mulley <gaius@glam.ac.uk> + + These patches modify the indentation implementation to use `<p + style=margin-left: n%>'. Many thanks to Peter and Larry for + suggesting this solution. Grohtml only uses tables for `.IP' and + related tags when the first operand has a short width. + + Similarly, they modify all vertical space code. By default, grohtml + sets up a style sheet which uses no vertical space between `table', + `pre', and `p' tags. It forces spaces when it needs them using + `style="margin-top: 1em"'. + + * src/devices/grohtml/html-table.cpp: Include `html-text.h'. + (html_table::emit_table_header, html_table::emit_new_row): + Rewritten. + (html_table::set_space): New function. + (html_indent::html_indent): Don't set `is_used'. + (html_indent::begin): Rewritten. + (html_indent::end): Remove code in function. + + * src/devices/grohtml/html-table.h: Updated. + (html_table): Make `out' public. + + * src/devices/grohtml/html-text.cpp (html_text::html_text): + Initialize `start_space' with FALSE. + (html_text::end_tag) <P_TAG, PRE_TAG>: Updated. + (html_text::issue_tag): Add argument to handle space style. + (html_text::start_tag) <P_TAG, PRE_TAG>: Updated. + (html_text::flush_text): Don't set `start_space'. + (html_text::push_para): Don't set `p->really_issued'. + (html_text::do_emittext): Updated. + (html_text::do_para): Add parameter to handle space. + Update all callers. + (html_text::retrieve_para_space): New function. + + * src/devices/grohtml/html-text.h (STYLE_VERTICAL_SPACE): New macro. + (tag_definition): Remove `really_issued'. + (html_text): Updated. + + * src/devices/grohtml/post-html.cpp (html_printer): Add variables + `current_column' and `row_space'. + Update constructor. + (html_printer::emit_raw, html_printer::write_header, + html_printer::do_indent, html_printer::do_check_center, + html_printer::do_tab_ts): Handle vertical space. + (html_printer:do_tab_te, html_printer::do_end_para): Call + `remove_para_space'. + (html_printer::do_col): Rewritten. + (html_printer::flush_globs): Remove debugging code. + (html_printer::is_line_start): New function. + (html_printer::start_font): Use `is_line_start'. + (html_printer::writeHeadMetaStyle): New function. + (html_printer::do_file_components, html_printer::~html_printer): + Call `writeHeadMetaStyle'. + + * tmac/www.tmac (www-handle-percent): New macro. + (MPIMG): Handle percent values for width and height parameters. + (DC): Updated. + + * tmac/groff_www.man: Updated. + +2005-02-14 Werner LEMBERG <wl@gnu.org> + + * src/utils/afmtodit/afmtodit.pl: Remove an incorrect `my' from + $psname and $italic_angle. + Immediately restart file input loops if `split' returns an empty + array. + +2005-02-13 Michail Vidiassov <master@iaas.msu.ru> + Werner LEMBERG <wl@gnu.org> + + Update afmtodit to better support Unicode (Michail). + Update afmtodit to use Perl 5 syntax (Werner). + + * src/utils/afmtodit/afmtodit.pl: Don't use `getopts.pl' but + `Getopts::Std'. + Decorate variables with `my' where necessary. + Use `defined' where necessary to avoid warnings. + Don't use `do' for subroutine calls. + Other minor syntax updates. + Check for both `uXXXX[X[X]]' and `uniXXXX'. + Handle glyph variants properly. + (%unicode_decomposed, %AGL_to_unicode): Don't use `u' prefix in + strings. + + * src/utils/afmtodit/afmtodit.man: Updated. + +2005-02-13 Werner LEMBERG <wl@gnu.org> + + Make groff.texinfo work with texinfo 4.8. + + * doc/groff.texinfo (@Var): Use @r and @slanted. + (@defdummy, @Def*): Use @c to avoid empty lines. + (\angles): Replaced with... + (\Langlemacro, \Ranglemacro): New TeX macros. + (@Langlemacro, @Ranglemacro): New variables defined with @set. + (@angles): Use @Langlemacro and @Ranglemacro. + (\LE): Replaced with... + (\LEmacro): New TeX macro. + (@LEmacro): New variable defined with @set. + (@LE): Use @LEmacro. + (@Lparenmacro, @Rparenmacro, @Lbrackmacro, @Rbrackmacro): New + variables defined with @set. + (@lparen, @rparen, @lbrack, @rbrack): Replaced with... + (@Lparen, @Rparen, @Lbrack, @Rbrack): New macros. + Update all callers. + + Other minor updates. + + * doc/texinfo.tex: Update to texinfo version 4.8. + + * README.CVS: Updated. + +2005-02-09 Alejandro Lpez-Valencia <palopez@etb.net.co> (tiny change) + + * doc/groff.texinfo (ms Document Control Registers): Document `HY' + and `FAM' registers. + +2005-02-05 Werner LEMBERG <wl@gnu.org> + + * tmac/groff_mdoc.man, tmac/doc-common, tmac/doc-ditroff, + tmac/doc-nroff, tmac/doc-old.tmac, tmac/doc-syms, tmac/doc.tmac: + Update BSD license. + +2005-02-01 Werner LEMBERG <wl@gnu.org> + + * src/roff/groff/groff.man: Add information about paper size. + +2005-01-25 Werner LEMBERG <wl@gnu.org> + + * src/roff/nroff/nroff.sh: Handle `*.ISO8859-1' in locale. From + NetBSD bin/29114. + +2005-01-22 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/doc.tmac (Sm): Improved. It didn't work properly in many + cases. + (Re): Emit a warning if called without `.Rs'. + (doc-finish-reference): Use parameter for decreasing + `doc-reference-count'. + (doc-print-reference): Pass specific count parameters to + `doc-finish-reference'. + +2005-01-21 Werner LEMBERG <wl@gnu.org> + + * src/libs/libdriver/input.cpp (delete_current_env, do_file): + Reset pointers to zero after deallocation. This fixes a crash + if a driver is called with multiple input files. Reported by + Ken Chilton <ken@chiltonfamily.org>. + + * src/devices/grops/grops.man: Add more info on DSC. + +2005-01-17 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/doc-common (Dd), tmac/doc-ditroff (gX, doc-setup-header): + Remove dead code. + +2005-01-17 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/div.cpp (top_level_diversion::space): Protect + against division by zero. + +2005-01-13 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/doc.tmac (Ef): Restore doc-curr-font and doc-curr-size. + +2004-12-19 Werner LEMBERG <wl@gnu.org> + + * install-sh: New version; taken from texinfo CVS. + +2004-12-17 Werner LEMBERG <wl@gnu.org> + + * tmac/devtag.tmac: Protect against loading twice. + Protect against compatibility mode. + * tmac/www.tmac: Protect against loading twice. + Load `devtag.tmac' before switching off compatibility mode. + * tmac/an-old.tmac, tmac/s.tmac: Load `devtag.tmac'. + +2004-12-16 Mike Bianchi <mbianchi@Foveal.com> + + * configure.ac: Produce `contrib/gdiffmk/tests/runtests'. + * configure: Updated. + +2004-12-15 Thomas Klausner <wiz@netbsd.org> + + * tmac/doc-syms, tmac/groff_mdoc.man: Add `libpam' library. + +2004-12-15 Werner LEMBERG <wl@gnu.org> + + Make `test-groff' work again -- previously, wrong paths have been + used. Additionally, it can now be called from anywhere. + + * test-groff.in: Don't test for groff binary. This is no longer + necessary since the proper paths are determined by `configure'. + (EXEEXT): Removed. No longer used. + (srcdir, builddir): Use values provided by the configure script. + (XENVIRONMENT): Updated. + + * INSTALL: Updated. + +2004-12-14 Gaius Mulley <gaius@glam.ac.uk> + + Make .tag and .taga work for all devices (but only grohtml actually + handles them). + + * src/devices/grohtml/post-html.cpp: s/html-tag/devtag/. + (text_glob::is_br, page::add_tag, html_printer::troff_tag, + html_printer::handle_assertion): Don't use hard-coded string + lengths. + (html_printer::lookahead_for_table): Reset `tbl' properly if + necessary. + (html_printer::devtag): New function, handling `devtag'. + (html_printer::special): Don't handle `html-tag'. + + * src/include/printer.h, src/libs/libdriver/printer.cpp + (printer::devtag): New virtual function. + + * src/libs/libdriver/input.cpp (parse_x_command) <'X'>: Handle + `devtag'. + + * src/roff/troff/env.cpp, src/roff/troff/mtsm.cpp, + src/roff/troff/node.cpp: s/html-tag/devtag/. + + * src/roff/troff/input.cpp (tag, taga): Always call + curenv->add_node. + + * tmac/an-old.tmac, tmac/s.tmac, tmac/troffrc-end: Use DEVTAG* + macros instead of HTML-TAG*. + + * tmac/devtag.tmac: New file, defining the DEVTAG-* macros. + + * tmac/www.tmac: Load devtag.tmac. + Replace HTML-TAG* macros with DEVTAG* macros. + (HTML, HTML-NS): Changed definitions. + (URL): Use HTML-NS. + (HTML-TAG, HTML-TAG-NS, HTML-TAG-NEXT): Removed. + + * tmac/Makefile.sub (NORMALFILES): Add devtag.tmac. + +2004-12-10 Werner LEMBERG <wl@gnu.org> + + Import Mike's `gdiffmk' package. + + * contrib/gdiffmk/*: New files. + * Makefile.in (OTHERDIRS): Add contrib/gdiffmk. + * NEWS: Updated. + +2004-12-08 Werner LEMBERG <wl@gnu.org> + + Import Keith's `pdfmark' package. Integration is very preliminary. + + * contrib/pdfmark/*: New files. + * Makefile.in (OTHERDIRS): Add contrib/pdfmark. + * NEWS: Updated. + +2004-12-07 Gaius Mulley <gaius@glam.ac.uk> + + Fix a bug with title handling in HTML. + + * src/devices/grohtml/post-html.cpp (text_glob::is_nf, + text_glob::is_fi, text_glob::is_ce): Use strlen to compute string + length. + (html_printer::handle_tag_within_title): New function. + (html_printer::do_title): Use it. + + * tmac/s.tmac (TL): Don't set `need_eo_tl'. + (cov*tl-au-print): Emit `.eo.tl' tag. + +2004-12-05 Alejandro Lpez-Valencia <dradul@etb.net.co> + + * man/groff_char.man: Minor imrovements. + +2004-12-04 Werner LEMBERG <wl@gnu.org> + + * src/preproc/eqn/eqn.man: Revised. + +2004-11-25 Werner LEMBERG <wl@gnu.org> + + * src/utils/xtotroff/xtotroff.c: Reformat to be similar to other + groff source files. + Include config.h. + Include limits.h. + Remove X_NOT_STDC_ENV conditional. + (Version_string, program_name): New global variables. + (groff_flag): Removed. + (MapFont): Updated. + (usage): Take a stream as argument. + Use `program_name'. + Update all callers. + (main): Add `long_options' array for `--help' and `--version'. + Make `-g' a dummy option. + Handle `-v' and unknown options. + Remove unused `position' variable. + + * src/utils/xtotroff/Makefile.sub (MAN1): Define. + (XLIBS): Add LIBGROFF. + + * src/utils/xtotroff/xtotroff.man, src/utils/xtotroff/Makefile.in: + New files. + + * src/devices/xditview/Dvi.c (default_font_map): Split into three + parts to avoid compiler warning. + (resources): Don't initialize with `default_font_map'. + (ClassInitialize): Initialize first element of `resources'. + + * src/devices/xditview/Makefile.sub (devdir, xtotroff, DPIS, fonts): + Removed. + + * src/utils/lkbib/lkbib.man, src/utils/lookbib/lookbib.man, + src/utils/pfbtops/pfbtops.man: Revised, updated. + + * configure.ac: Generate src/utils/xtotroff/Makefile. + * configure: Regenerated. + +2004-11-24 Werner LEMBERG <wl@gnu.org> + + First fixes to get produce HTML. + + * src/devices/grohtml/post-html.cpp (generate_img_src): Add `alt' + attribute. + + * tmac/www.tmac (IMG, PIMG, MPIMG): Add `alt' attribute. + (HR, LI): Use `HTML</p>', not `HTML'. + + * doc/webpage.ms: Minor updates. + +2004-11-23 Larry Kollar <kollar@alltel.net> + + Add option -S grohtml to determine the file split level. + + * src/devices/grohtml/post-html.cpp (split_level): New global + variable. + (html_header::determine_header_level): Use split_level. + (main): Handle `-S' command line option. + Sort options. + + * src/preproc/html/pre-html.cpp (scanArguments): Updated. + + * src/devices/grohtml/grohtml.man: Document it. + Sort options. + + * NEWS: Document it. + +2004-11-23 Y T <doarhop@hotmail.com> + + * tmac/s.tmac (ref*add-V, ref*add-N): New macros for handling + the volume and number refer entries. + +2004-11-22 Werner LEMBERG <wl@gnu.org> + + * src/devices/grohtml/html-table.cpp + (html_table::emit_table_header): Don't emit `cols' attribute which + doesn't exist in HTML 4.0 and is thus invalid. + + * NEWS: More minor fixes and updates. + +2004-11-18 Werner LEMBERG <wl@gnu.org> + + * tmac/www.tmac (HTML-NS, HTML-TAG-NS, HTML-TAG-NEXT): Simplified. + (HTML</p>): Minor clean-up. + + * tmac/groff_www.man: Updated. + + * src/devices/grohtml/grohtml.man: Revised and updated. + + * NEWS: Updated. + +2004-11-18 Gaius Mulley <gaius@glam.ac.uk> + + * src/devices/grohtml/post-html.cpp (html_printer::do_heading): + Fix space insertion. + (html_printer::do_links): Fix rules generation around automatic + heading links. + + * tmac/www.tmac (LK): Use HTML-TAG-NS. + (HR): Simplify. + No longer emit empty line for non-HTML devices. + +2004-11-17 Werner LEMBERG <wl@gnu.org> + + * doc/Makefile.in (prepare_examples, webpage.html): Handle + `groff.css'. + + * doc/Makefile.sub (EXAMPLEFILES, CLEANNOTSRCDIRADD, + prepare_examples, webpage.html): Handle `groff.css'. + +2004-11-15 Werner LEMBERG <wl@gnu.org> + + * NEWS, README, doc/webpage.ms: Updated. + + * tmac/www.tmac (HTML, HTML-TAG): Minor clean-ups. + +2004-10-30 Gaius Mulley <gaius@glam.ac.uk> + + * src/include/printer.h (printer): Remove virtual function + `round_width'. + Update all source files. + + * src/devices/grohtml/post-html.cpp (html_printer): New member + function `round_width'. + +2004-10-20 Tadziu Hoffmann <hoffmann@usm.uni-muenchen.de> + + * src/preproc/tbl/table.cpp (table::do_row): Fix handling of the `d' + column key letter suffix. + +2004-10-14 Werner LEMBERG <wl@gnu.org> + + * Makefile.in (check): Depend on `site.exp' and `docheck'. + (docheck): Run dejagnu's `runtest' if it exists. + (site.exp): Create dejagnu configuration file. + + * Makefile.sub (DISTCLEANFILES): Add files related to dejagnu. + +2004-10-13 Werner LEMBERG <wl@gnu.org> + + * src/devices/grohtml/html-text.cpp (html_text_get_alignment), + src/devices/grohtml/post-html.cpp (make_val, + html_printer::handle_state_assertion): Fix compiler warnings. + + * src/roff/troff/div.cpp: Include `stringclass.h' and `mtsm.h'. + (diversion::diversion): Fix order of initializers. + + * src/roff/troff/div.h: Don't include `mtsm.h'. + + * src/roff/troff/env.cpp: Include `stringclass.h' and `mtsm.h'. + (environment::environment): Fix order of initializers. + (environment::make_tag, environment::construct_format_state): Fix + compiler warnings. + + * src/roff/troff/input.cpp: Include `stringclass.h' and `mtsm.h'. + (input_iterator::input_iterator, macro::macro): Fix order of + initializers. + + * src/roff/troff/mtsm.cpp: Include only necessary header files. + (state_set::add, state_set::val): Fix compiler warnings. + + * src/roff/troff/mtsm.h: Don't include `stringclass.h'. + (bool_value_state, int_value_state, units_value_state, + string_value_state): Remove comma after last element which causes + an error with g++ 3.3.3. + + * src/roff/troff/node.cpp: Include `stringclass.h'. + (hline_node::hline_node, vline_node::vline_node, + space_char_hmotion_node, left_italic_corrected_node): Fix compiler + warnings. + (zero_width_node::zero_width_node): Fix order of initializers. + + * src/roff/troff/node.h: Don't include `mtsm.h'. + (hmotion_node): Fix compiler warnings. + + * src/roff/troff/number.cpp: Include `stringclass.h' and `mtsm.h'. + +2004-10-12 Gaius Mulley <gaius@glam.ac.uk> + + * doc/groff.css: New file. + + * doc/webpage.ms: Use `groff.css'. + Other small fixes. + + * tmac/an-old.tmac (need_eo_h): New number register. + (TH): Emit `.eo.tl' tag after title. + (SH): Set `need_eo_h'. + (an-trap): Handle `need_eo_h'. + (an-do-tag): s/HTML-TAG-NS/HTML-TAG-NEXT/. + + * tmac/s.tmac (need_eo_h, need_eo_tl): New number registers. + (TL): Always start diversion. + Updated. + (@AI): Always call `par@reset'. + (@AB): Update code for -Thtml. + (cov*tl-au-print): Handle -Thtml. + (par@reset): Handle `need_eo_tl', `need_eo_h'. + (@IP): Simplified. + (@IT-html): Removed. + (@SH): Set `need_eo_h' for -Thtml. + (par@TL): s/HTML-TAG/HTMl-TAG-NS/. + Set `need_eo_tl'. + (@NH): s/HTML-TAG/HTMl-TAG-NS/. + Set `need_eo_h' for -Thtml. + (@EQ, @EN): Don't handle -Thtml specially. + (par@load-init): Don't handle -Thtml specially. + + * tmac/www.tmac (www:paraspace): New macro. + (HTML-NS, HTML-TAG-NS): Use new `tag' request. + (HTML</p>, HTML-TAG-NEXT): New macros. + (HnE): Emit tag `.eo.h' instead of break. + (HR): s/HTML-NS/HTML/. + (www-end-nowhere): End diversion only if `www-html' not set. + Emit `.eo.tl' tag. + (ULS, ULE): s|HTML|HTML</p>|. + (LI): Call `www:paraspace'. + (HEAD): New macro. + +2004-10-11 Gaius Mulley <gaius@glam.ac.uk> + + * src/roff/troff/request.h (macro): Make `p' public. + New variable `is_a_diversion'. + New member function `is_diversion'. + + + * src/devices/grohtml/html.h (simple_output): New member function + `force_nl'. + + * src/devices/grohtml/html-table.cpp (tabs::compatible): Fix + computation of `total'. + (tabs::check_init): New function. + (html_table::emit_table_header): Emit style data. + (html_table::insert_column): Improved. + + * src/devices/grohtml/html-table.h: Updated. + + * src/devices/grohtml/html-text.cpp (html_text::html_text): + Initialize `start_space' with TRUE. + (html_text::end_tag, html_start_tag): Fix `P_TAG' and `PRE_TAG' + cases. + (html_text::flush_text): Set `start_space' flag. + (html_text::uses_indent, html_text::remove_para_space, + html_text::get_alignment): New functions. + (html_text::push_para): Updated. + (html_text::do_para): Check for empty argument. + Don't set `space_emitted'. + (html_text::do_space, html_text::emit_space): Updated. + + * src/devices/grohtml/html-text.h (tag_definition): New variable + `really_issued'. + (html_text): New member function `uses_indent', `remove_para_space', + `get_alignment'. + + * src/devices/grohtml/output.cpp (simple_output::force_nl): New + function. + (simple_output:nl): Always emit `\n'. + + * src/devices/grohtml/post-html.cpp: Include `string.h'. + (BASE_POINT_SIZE): Removed. + (base_point_size, head_info): New global variables. + (text_glob): New member functions `is_ll', `is_tl', `is_eo_tl', + `is_eo_h'. + (text_glob::is_nf, text_glob::is_fi): Handle `.fi 0' and `.fi 1' + tags, respectively. + (page::add_and_encode): Pass additional parameter for tag flag. + (assert_pos): New structure. + (assert_state): New class. + (html_printer): Remove `indentation', `prev_indent'. + Add variables `troff_indent', `device_indent', `temp_indent'. + Add variables `seen_indent', `next_indent', `seen_pageoffset', + `next_pageoffset', `seen_linelenght', `next_linelength', + `seen_center', `next_center', `seen_space', `seen_break', `as'. + Add member functions `do_check_center', `do_space', `do_head', + `get_troff_indent', `restore_troff_indent', `handle_assertion', + `handle_state_assertion', `do_end_para', `set_char_and_width'. + Change argument to `do_fill' to `char *'. + Update constructor. + (html_printer::emit_raw): Call `shutdown_table'. + Use new functions. + (html_printer::do_center): Simplified. + (html_printer::do_title): Improved. + (html_printer::write_header): Emit one more newline. + Use new functions. + (html_printer::do_heading, html_printer::do_indent, + html_printer::do_eol, html_printer::do_tab_ts, + html_printer::do_tab, html_printer::do_tab0, + html_printer::calc_po_in, html_printer::next_horiz_pos, + html_printer::remove_courier_tabs, + html_printer::insert_tab0_foreach_tab, html_printer::begin_page): + Updated. + (html_printer::do_linelength, html_printer::do_pageoffset, + html_printer::do_indentation, html_printer::do_tempindent, + html_printer::do_tab_te): Simplified. + (html_printer::do_pointsize): Check whether point size is really + associated a `.tl' tag. + (html_printer::do_break): Rewritten. + (html_printer::troff_tag): Improved. + (html_printer::flush_globs): Updated. + (html_printer::lookahead_for_tables): Handle `is_br'. + Use new functions. + (html_printer::set_char): Check `sbuf_style.f'. + (html_printer::write_navigation): Use string comparison. + (html_printer::~html_printer): Emit `head_info'. + (html_printer::special): Rewritten. + (get_str, make_val): New functions. + (main): New option `s' to set the base point size. + + * src/preproc/html/pre-html.cpp (scanArguments): Handle option `s'. + +2004-10-10 Gaius Mulley <gaius@glam.ac.uk> + + * src/roff/troff/node.cpp: New extern `debug_state'. + Include `stringclass.h' and `mtsm.h'. + Implement new classes and class members from `node.h'. + (real_output_file): Make `fp' public. + (troff_output_file): New variables `cur_div_level' and `tag_list'. + Update constructors. + (troff_output_file::really_print_line): Check whether we should push + the current troff state and use the state at the start of the + invocation of this diversion. + (troff_output_file::add_to_tag_list): New member function. + (node::add_char): Handle `glyph_comp_np'. + + * src/roff/troff/node.h: Include `mtsm.h'. + (node): New variables `state', `push_state', `div_nest_level', + `is_special'. Update constructors, all descendants. + Pass additional argument to `add_char' member function. + New virtual member functions `is_tag', `debug_node', + `debug_node_list'. Update all descendants. + (tag_node): New class for handling tags. + (output_file): Add variable `state'. + +2004-10-09 Gaius Mulley <gaius@glam.ac.uk> + + * src/roff/troff/mtsm.cpp, src/roff/troff/mtsm.h: New files, + providing a minimal troff state machine to emit meta tags for the + post-grohtml device driver. + + * src/roff/troff/Makefile.sub (OBJS, CCSRCS, HDRS): Handle new + files. + +2004-10-09 Werner LEMBERG <wl@gnu.org> + + * tmac/trace.tmac: Fix handling of `am' and `am1' calls. + +2004-10-06 Gaius Mulley <gaius@glam.ac.uk> + + * src/roff/troff/column.cpp (vjustify_node::copy): Updated. + + * src/roff/troff/div.h: Include `mtsm.h'. + (diversion): New variables `any_chars_added', `needs_push', + `saved_seen_break', `saved_seen_space', `saved_seen_eol', + `saved_suppress_next_eol', `modified_tag'. + New virtual member function `is_diversion'. Update all descendants. + + * src/roff/troff/div.cpp (diversion::diversion, + macro_diversion::macro_diversion): Updated. + (do_divert): Handle `seen_break', `seen_space', `seen_eol', + `suppress_next_eol'. + (top_level_diversion::space): Handle `curenv->seen_space'. + (page_offset): Update tag handling. + (space_request, blank_line, flush_output): Don't call `add_html_tag'. + + * src/roff/troff/env.h (environment): Make `tabs' public. + Remove `ignore_next_eol', `emitted_node'. + Update `output_line', `output'. + New variables `seen_space', `seen_eol', `suppress_next_eol', + `seen_break'. + New member functions `construct_state', `make_tag', + `construct_format_state, `construct_new_line_state, + `dump_troff_state'. + Remove `add_html_tag', `make_html_tag'. + + * src/roff/troff/env.cpp: New externs `suppress_push', + `get_diversion_state', `global_diverted_space'. + (pending_output_line): New variable `was_centered'. + Update constructor and all callers. + (pending_output_line::output): Call `curenv->construct_format_state'. + (environment::environment, environment::copy): Updated. + (environment::output): Handle `was_centered'. + (environment::add_char): Handle construct and diversion state. + (environment::add_node): Handle construct state. + (environment::newline): Handle `was_centered'. + (environment::output_line): Updated. + (environment::possibly_break_line): Updated. + Update tag handling. + (environment::add_html_tag): Replaced with... + (environment::make_tag): New function. + (environment::add_html_tag_tabs, environment::make_html_tag): Removed. + (environment::dump_troff_state): New debugging function. + (environment::construct_state, environment::construct_format_state, + environment::construct_new_line_state): New functions. + (environment::do_break): Updated. + Handle `global_diverted_space'. + (environment::handle_tag): Update tag handling. + (point_size, fill, do_break_request): Don't call `add_html_tag'. + (no_fill): Don't call `add_html_tag'. + Set `suppress_next_eol'. + (center, right_justify, line_length, indent, temporary_indent, + set_tabs): + Update tag handling. + + * src/roff/troff/input.cpp: Don't include `stringclass.h'. + (input_iterator): New variables `is_diversion', `diversion_state'. + Update constructors. + (input_stack): New member functions `get_div_level', + `get_diversion_state', `check_end_diversion'. + New variables `div_level', `diversion_state'. Initialize them. + (suppress_push, global_diverted_space): New global variables. + (input_stack::finish_get, input_stack::finish_peek, + input_stack::remove_boundary, input_stack::end_file, + input_stack::clear, input_stack::pop_macro): Call + `check_end_diversion'. + (input_stack::push): Handle `div_level' and `diversion_state'. + (get_diversion_state): New function. + (diverted_space_node::reread): Handle `global_diverted_space'. + (macro::macro): Update constructors. + (macro::is_diversion): New function. + (macro::operator=): Set `is_a_diversion'. + (string_iterator): New member function `is_diversion'. + (string_iterator::string_iterator): Update constructors. + (string_iterator::fill): Set `div_nest_level'. + (macro_iterator): New member function `is_diversion'. + (do_if_request): Handle `suppress_push'. + (tag, taga): New functions. + (init_input_requests): Add `tag' and `taga' requests. + +2004-10-05 Gaius Mulley <gaius@glam.ac.uk> + + * src/include/font.h (font): New member function + `get_image_generator'. + New variables `unscaled_charwidths' and `image_generator'. + + * src/libs/libgroff/font.cpp (font::get_width): Always return the + character's unscaled width if `font::unscaled_charwidths' is set. + (font::get_image_generator): New function. + (font::load_desc): Check the `unscaled_charwidths' and + `image_generator' keywords. + + * src/libs/libgroff/fontfile.cpp: Initialize + `font::unscaled_charwidths' and `font::image_generator'. + + * font/devhtml/DESC.proto: s/html/unscaled_charwidths/. + + * font/devhtml/Makefile.sub (DESC): Set `image_generator' keyword. + + * man/groff_font.man: Document `unscaled_charwidths' and + `image_generator'. + + * src/preproc/html/pre-html.cpp: Include `device.h'. + (image_gen): New global variable. + (imageList::createPage): Use `image_gen'. + (main): Use `image_generator' keyword. + +2004-10-04 Gaius Mulley <gaius@glam.ac.uk> + + * tmac/html.tmac: Handle \[sqrtex]. + +2004-10-04 Gaius Mulley <gaius@glam.ac.uk> + + * src/include/printer.h (printer): New virtual method `round_width'. + + * src/devices/grodvi/dvi.cpp, src/devices/grolbp/lbp.cpp, + src/devices/grolj4/lj4.cpp, src/devices/grops/ps.cpp, + src/devices/grotty/tty.cpp (printer::round_width): New function + member. + + * src/devices/grohtml/post-html.cpp (printer::round_width): New + function member. + (html_printer::set_numbered_char): Use it. + +2004-10-03 Gaius Mulley <gaius@glam.ac.uk> + + * aclocal.m4 (GROFF_GHOSTSCRIPT_PATH): New macro. + + * configure.ac: Call GROFF_GHOSTSCRIPT_PATH. + + * configure: Regenerated. + + * Makefile.in (GHOSTSCRIPT): New variable. + (MDEFINES): Add GHOSTSCRIPT. + +2004-10-03 Werner LEMBERG <wl@gnu.org> + + * INSTALL.gen: Updated (taken from texinfo CVS). + +2004-09-28 Werner LEMBERG <wl@gnu.org> + + * NEWS: Updated. + +2004-09-28 Heinz-Jrgen Oertel <hj.oertel@surfeu.de> + + * tmac/groff_www.man: Revised and updated. + +2004-09-26 Werner LEMBERG <wl@gnu.org> + + Fix \$@ and \$* to handle any number of arguments. + + * src/roff/troff/input.h (BEGIN_QUOTE, END_QUOTE): New special + characters. + + * src/roff/troff/input.cpp (input_iterator::internal_level): + Removed. + (input_stack): New member functions `increase_level' and + `decrease_level'. + (input_stack::get_level): Don't use `internal_level'. + (get_copy, token::next): Handle BEGIN_QUOTE and END_QUOTE. + (end_quote_iterator): Completely removed. + (interpolate_arg): Build string for \$@ and \$* which is then + pushed onto the input stack. + +2004-09-23 Keith Marshall <keith.d.marshall@ntlworld.com> + + * tmac/groff_ms.man, doc/groff.texinfo (ms Document Control + Registers): Document changes from 2004-09-19. + +2004-09-23 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac (ne): Using default scaling operator. + +2004-09-19 Keith Marshall <keith.d.marshall@ntlworld.com> + + This change implements the following features: + + PORPHANS + New numeric register: Defines number of lines following LP, PP, + QP, IP or XP, which must be kept together, before any automatic + page break. If insufficient space remains on the current page, a + page break is forced before the new paragraph begins. + + HORPHANS + New numeric register: Sets number of lines of following paragraph + which must be kept with a heading, defined by NH or SH, before any + automatic page break. If insufficient space remains on the + current page, a page break is forced before the heading. + + GROWPS + (Thanks to Joerg van den Hoff, for this idea). + + New numeric register: Sets the first level of heading (set with + NH), which will keep the same point size as body text; e.g. if + GROWPS is set to 3, .NH 3, .NH 4, ... will produce headings at the + point size specified by \n[PS], but .NH 2 and .NH 1 will have + progressively larger point sizes, determined by \n[PSINCR] (see + below). + + PSINCR + New numeric register: Sets the point size increment for each level + of heading, (set with NH), below the threshold level set by + GROWPS; e.g. if \n[PS] = 10, \n[GROWPS] = 3 and \n[PSINCR] = 2.0p, + then .NH 1 will produce 14pt headings, .NH 2 will produce 12pt, + and all other levels will remain at 10pt, (because \n[PS] = 10). + + SH + Existing macro now accepts a numeric argument, to make heading + size match that of NH with same argument value, when the + GROWPS/PSINCR feature is enabled. + + SN-DOT + New string, set by NH macro, replaces the existing (undocumented) + use of SN, to represent the assigned section number. + + SN-NO-DOT + New string, set by NH macro, represents the assigned section + number, but omits the terminal period (periods at intermediate + levels are retained). + + SN + String set by NH macro, originally undocumented, now implemented + as an alias for SN-DOT (which reproduces original behaviour). + + * tmac/s.tmac (PORPHANS): New register. + (par*start): Use it. + (HORPHANS, GROWPS, PSINCR): New registers. + (SH-NO-TAG, @SH): Use them. + (@NH): Improved. + +2004-09-19 Keith Marshall <keith.d.marshall@ntlworld.com> + + * NEWS, doc/groff.texinfo (ms Display and Keeps), tmac/groff_ms.man: + Document the deletion of `Ds' and `De' macros. + +2004-09-10 Werner LEMBERG <wl@gnu.org> + + In tbl, handle \a as an interpreted leader character if in + compatibility mode. + + * src/preproc/tbl/table.h (PREFIX, PREFIX_CHAR, LEADER, + LEADER_CHAR): New macros. + (compatible_flag): New declaration. + + * src/preproc/tbl/main.cpp (table_input): Add LEADER_1, LEADER_2, + LEADER_3, and LEADER_4 to `state'. + (table_input::get): Handle `\a'. + + * src/preproc/tbl/table.cpp (PREFIX): Removed. + (LEADER_REG): New macro. + (table::init_output): Define LEADER_REG string register if in + compatibility mode. + + * src/preproc/tbl/tbl.man: Document it. + +2004-08-18 Werner LEMBERG <wl@gnu.org> + + * tmac/doc.tmac (An): Fix error message. + +2004-08-06 Werner LEMBERG <wl@gnu.org> + + * src/preproc/tbl/main.cpp (main): Call `fatal' not `error' if a + file can't be opened. UNIX tbl has the same behaviour. + +2004-08-05 Y T <doarhop@hotmail.com> + + * src/preproc/grn/hdb.cpp (compatibility_flag): Add declaration. + (DBRead): If in compatibility mode, take into account the text + when computing figure boundaries. + +2004-08-05 Werner LEMBERG <wl@gnu.org> + + * src/preproc/soelim/soelim.man: Improved. Based on suggestions + from Tadziu Hoffmann. + +2004-08-03 Werner LEMBERG <wl@gnu.org> + + * doc/meref.me: Document `_M' register. + +2004-08-03 Martin Husemann <martin@duskware.de> + + Make hpftodit work correctly on big-endian systems. + + * src/utils/hpftodit/hpftodit.cpp (File): New method + `get_uint32(char *)'. + (entry): New member `orig_value'. + (read_tags): Use new method. + (output_font_name, read_and_output_pcltypeface, dump_ascii): + Updated. + +2004-08-01 Werner LEMBERG <wl@gnu.org> + + * tmac/s.tmac: Undo change 2003-06-29. The proper macro definitions + are already in X11's `macros.t' file. + +2004-08-01 Jeff Conrad <jeff_conrad@msn.com> + + * src/utils/hpftodit/hfptodit.cpp (output_font_name, dump_ascii): + Fix casting bug. + (read_and_output_pcltypeface): Handle strings with length <= 4. + +2004-07-27 Egil Kvaleberg <egil@kvaleberg.no> + + * tmac/s.tmac (pg@top): Don't save `PO' register. + (pg*end-col, pg*end-page): Directly use `PO' register. + +2004-07-27 Werner LEMBERG <wl@gnu.org> + + * man/groff_tmac.man: Mention `trace' and `pic' macro packages. + + * src/preproc/refer/refer.cpp (output_references): Check for + empty hash table. + * src/preproc/refer/refer.man: Improve documentation of + `bibliography' command. + +2004-07-26 Werner LEMBERG <wl@gnu.org> + + Add requests `fcolor' and `gcolor'. + + * src/roff/troff/env.cpp (fill_color_change, glyph_color_change): + New functions. + (init_env_requests): Add `fcolor' and `gcolor'. + + * src/roff/troff/input.h: Export do_glyph_color and do_fill_color. + + * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo + (Colors): Document new requests. + +2004-07-24 Werner LEMBERG <wl@gnu.org> + + Add support for fractional point sizes in ms macros. A value for + PS, VS, FPS, and FVS greater than or equal to 1000 is always divided + by 1000. For example, `.nr PS 10250' sets the font size to 10.25p. + + * tmac/s.tmac (@AU, @AI, par@load-init, par@init, par@reset, NL, + PX): Handle fractional point sizes for PS, VS, FPS, and FVS. + + * tmac/groff_ms.man, docs/groff.texinfo (ms Document Control + Registers), NEWS: Document it. + +2004-07-19 Werner LEMBERG <wl@gnu.org> + + * src/preproc/pic/lex.cpp (for_input): Add member `from'. + Update constructor. + (do_for, for_input::get, for_input::peek): Handle negative `by'. + * src/preproc/pic/pic.man, doc/pic.ms, NEWS: Document it. + +2004-07-08 Thomas Klausner <wiz@netbsd.org> + + * tmac/doc-syms (doc-str-St--p1003.1-2004): New string. + * tmac/groff_mdoc.man: Updated. + +2004-07-05 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo (Manipulating Hyphenation): Further improve + documentation of `hcode'. + +2004-07-04 Sang Dae Yu <sdyu@bh.knu.ac.kr> + + Improve appearance of arrows in pic. + + * src/preproc/pic/object.cpp (draw_arrow): Make outline of filled + arrow head thin. + Use two line segments for drawing non-filled arrow head. + (line_object::print, spline_object::print): Shorten line length to + avoid arrow sticking. + (arc_object::print): Take arrow direction into account. + +2004-07-03 Heinz-Jrgen Oertel <hj.oertel@surfeu.de> + + * tmac/groff_www.man: Update documentation of .MPIMG. + +2004-07-03 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac (RI): Always start with font `R'. + (RI, IR): Properly end with font `R'. + +2004-07-02 Paul Eggert <eggert@cs.ucla.edu> + + * man/ditroff.man, man/groff_font.man, man/groff_out.man, + src/devices/grohtml/grohtml.man, src/preproc/grn/grn.man, + src/preproc/pic/pic.man, tmac/groff_man.man, tmac/groff_ms.man: + Don't pass more than six arguments to .R, .I, .B, etc., for + compatibility with traditional troff macros. + +2004-07-02 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.h: s/COMPATIBLE_SAVE/PUSH_GROFF_MODE/. + s/COMPATIBLE_RESTORE/POP_GROFFCOMP_MODE/. + Update all users. + (PUSH_COMP_MODE): New internal character constant. + Update all users. + + * src/roff/troff/input.cpp (get_copy): Handle PUSH_GROFF_MODE, + PUSH_COMP_MODE, and POP_GROFFCOMP_MODE. + (token::next, macro::append): Handle PUSH_COMP_MODE. + (decode_args): Add PUSH_GROFF_MODE or PUSH_COMP_MODE before and + POP_GROFFCOMP after each of the decoded arguments to make them + independent from the compatibility mode status. + (comp_mode): Add `COMP_ENABLE'. + (do_define_string, do_define_macro): Handle COMP_ENABLE. + (define_string, append_string, define_macro, define_indirect_macro, + append_macro, append_indirect_macro): Handle `compatible_flag'. + (chop_macro, substring_request, asciify): Handle PUSH_COMP_MODE. + + * man/groff_diff.man, doc/groff.texinfo: Updated. + +2004-07-01 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Improve documentation of `hcode'. + Use @documentencoding and convert document to latin-1; to do that + make latin characters active and assign proper macros (within a + @tex...@end tex environment). + * doc/Makefile.in (.texinfo.html, groff): Use --enable-encoding. + * doc/Makefile.sub (groff): Ditto. + +2004-06-29 Werner LEMBERG <wl@gnu.org> + + Implement two new conditional operators `F <name>' and `S <name>' + which check whether <name> is a valid font or style, respectively. + + * src/libs/libgroff/font.cpp (text_file): Add `silent' member. + (text_file::text_file): Updated. + (text_file::error): Don't emit message if `silent' is set. + (font::load_font): Add optional third argument (which is directly + passed to `load'. + (font::load): Add optional second argument to check the header of + a font only, without emitting warning or error messages. + * src/include/font.h (font): Updated. + + * src/roff/troff/input.cpp (do_if_request): Implement `S' and `F' + conditionals. + * src/roff/troff/node.cpp (mount_font_no_translate): Add optional + fourth argument to check a font without mounting. + (check_font, check_style): New functions. + * src/roff/troff/node.h: Updated. + + * man/groff_diff.man, man/groff.man, NEWS, doc/groff.texinfo: + Updated. + +2004-06-27 Werner LEMBERG <wl@gnu.org> + + Implement new string-valued register `.sty' to return the current + style name. + + * env.cpp (environment::get_style_name_string): New function. + (init_env_requests): Add `.sty' register. + * env.h (environment): Updated. + * node.cpp (font_info): Make `get_style_name' a friend. + (get_style_name): New function. + * node.h: Updated. + + * man/groff_diff.man, man/groff.man, NEWS, doc/groff.texinfo: + Updated. + +2004-06-15 Werner LEMBERG <wl@gnu.org> + + * src/preproc/tbl/main.cpp (process_data) <GOT_RIGHT_BRACE>: Handle + `nospaces' option. + +2004-06-10 Colin Percival <colin.percival@wadham.ox.ac.uk> + + * doc/meintro.me, doc/meref.me: Don't use \*[td], \n[dy], \*[mo], + and \n[mo] to avoid dependency on current date. + +2004-06-08 Werner LEMBERG <wl@gnu.org> + + * Makefile.sub (install_data): New target. + +2004-06-04 Werner LEMBERG <wl@gnu.org> + + * src/libs/libxutil/Makefile.sub (EXTRA_CFLAGS): Define. + +2004-06-03 Werner LEMBERG <wl@gnu.org> + + * src/devices/xditview/Makefile.sub (EXTRA_LDFLAGS): Fix typo and + order of libraries. + (install_data): Add $(srcdir). + + * src/utils/xtotroff/Makefile.sub (EXTRA_LDFLAGS): Fix order of + libraries. + +2004-06-02 Werner LEMBERG <wl@gnu.org> + + * aclocal.m4 (GROFF_X11): s/have_no_x/groff_no_x/. + Add X11 stuff to CFLAGS, LDFLAGS, and LIBS temporarily. + Add test for Xmu library. + (GROFF_APPRESDIR_OPTION, GROFF_APPRESDIR_CHECK, + GROFF_APPRESDIR_DEFAULT): New macros. + + * configure.ac: Call GROFF_APPRESDIR_OPTION, GROFF_APPRESDIR_CHECK, + and GROFF_APPRESDIR_DEFAULT. + + * configure: Regenerated. + + * Makefile.in (appresdir): New variable. + (MDEFINES): Add appresdir. + + * src/devices/xditview/Makefile.sub (EXTRA_LDFLAGS): Add -Xmu and + -Xt. + (install_data, uninstall_sub): New targets to handle GXditview.ad. + + * src/utils/indxbib/Makefiles.ub (install_data): Depend on + `$(srcdir)/eign', not `eign'. + + * MANIFEST, INSTALL, NEWS, PROBLEMS: Updated. + + * man/groff_out.man, man/roff.man, src/devices/grops/grops.man, + src/devices/xditview/gxditview.man, src/roff/groff/groff.man: + Protect (g)xditview with `\%' to avoid hyphenation. + Other minor formatting. + +2004-06-01 Werner LEMBERG <wl@gnu.org> + + Integrate gxditview into groff's standard directory hierarchy. + + * src/xditview/*: Moved to ... + * src/devices/xditview/*: Here. + Moved DviChar.h and XFontName.h to src/include. + Moved DviChar.c and XFontName.c to new directory src/libs/libxutil. + Split off `xmalloc' into new file src/libs/libxutil/xmalloc.c. + Moved xtotroff.c to new directory src/utils/xtotroff. + Provide proper Makefile.sub files (reusing the stuff from + Imakefile.in). + DESC renamed to DESC.in. + Removed GXDitview-ad.h, INSTALL, Imakefile.in. + Converted everything from K&R to ANSI C. + Decorated with const where appropriate. + Cast string constants with `String' and `char *' where appropriate. + Made it compile with C++ (used as a C compiler). + Removed other minor compiler warnings. + + * src/devices/xditview/device.c: Include config.h, string.h, and + defs.h. + Don't declare `exit', `strtok', `strchr', and `getenv'. + (FONTPATH): Remove. + + * src/devices/xditview/font.c: Don't declare `XParseFontName' and + `XFormatFontName'. + + * src/devices/xditview/xditview.c: Include config.h. + Include stdio.h earlier. + Protect declaration of `popen' and `pclose' with + NEED_DECLARATION_POPEN and NEED_DECLARATION_PCLOSE. + Replace `caddr_t' with `XtPointer'. + (MakePromptFunc): New typedef. + (DoPrint): Use RETSIGTYPE. + (promptfunction): Change type to MakePromptFunc. + (MakePrompt): Use MakePromptFunc for third argument. + (xmalloc): Removed. + + * src/devices/xditview/ad2c: Add casts to `String'. + + * src/include/XFontName.h (XFontNameString): Don't use array + notation. + Add prototypes for `XParseFontName', `XFormatFontName', + `XCompareFontName', and `XCopyFontName'. + + * src/include/Makefile.sub (HDRS): Add `DviChar.h' and + `XFontName.h'. + + * src/utils/xtotroff/xtotroff.c: Include getopt.h. + Don't declare `XParseFontName' and `XFormatFontName'. + (xmalloc): Removed. + (main): Remove `optind' and `optarg'. + + * Makefile.in (XDEVDIRS, XPROGDIRS, XLIBDIRS): New variables + (to select programs which need X). + Make XDEVIDIRS depend on `FORCE'. + (X_CFLAGS, X_LIBS, X_EXTRA_LIBS, X_PRE_LIBS): New variables (for + X support). + (MDEFINES): Updated. + (LIBDIRS): Use XLIBDIRS. + (CPROGDIRS): Use XPROGDIRS. + (DEVDIRS): Remove font directories for gxditview. + (ALLDIRS, DISTDIRS): Add XDEVDIRS. + (EXTRADIRS): Remove src/xditview. + + * Makefile.sub (DISCLEANFILES): Updated. + + * Makefile.comm (LIBXUTIL): New variable. + (.cpp.o, .cpp.obj): Handle EXTRA_CCFLAGS. + (.c.o, .c.obj, .y.o): Handle EXTRA_CFLAGS. + + * Makefile.cpg, Makefile.ccpg ($PROG): Handle EXTRA_LDFLAGS. + + * aclocal.m4 (GROFF_X11): New function. + + * configure.ac: Call GROFF_X11. + Don't create src/xditview/Imakefile. + Don't emit notice how to build gxditview. + + * configure: Regenerated. + + * test-groff.in (GROFF_BIN_PATH, XENVIRONMENT): Updated. + +2004-05-28 Akihiro Sagawa <sagawa@sohgoh.net> + + * Makefile.in (CPPFLAGS): Define. + (MDEFINES): Add CPPFLAGS. + +2004-05-27 Werner LEMBERG <wl@gnu.org> + + * arch/misc/Makefile.sub (shdeps.sed): Use $(srcdir). + +2004-05-26 Niklas Edmundsson <nikke@acc.umu.se> + + Fix problems with `friend name injections'. + + * src/preproc/eqn/box.h (make_mark_box, make_lineup_box, + make_script_box), src/roff/troff/div.h (end_diversions), + src/roff/troff/env.h (title), input.cpp (process_input_stack): Undo + change 2004-04-08. + +2004-05-25 Bernd Warken <bwarken@mayn.de> + + * src/preproc/pic/pic.man, doc/pic.ms: Add example for `command'. + +2004-05-25 Werner LEMBERG <wl@gnu.org> + + * src/libs/libgroff/cset.cpp, src/libs/libgroff/lf.cpp, + src/libs/libgroff/color.cpp: Include lib.h. + +2004-05-25 Paul Eggert <eggert@cs.ucla.edu> + + * PROBLEMS: Update documentation for problems with Sun C++ 5.0 + through Forte 6u1, and for how to get GNU make on Solaris. + +2004-05-24 Werner LEMBERG <wl@gnu.org> + + * PROBLEMS: Document problems with gcc 3.4.0 on Sun. Reported + by Paul Eggert. + +2004-05-15 Keith Marshall <keith.d.marshall@ntlworld.com> + + * arch/misc/Makefile.sub (shdeps.sed): Don't use `$<' in explicit + rule. + +2004-05-14 Werner LEMBERG <wl@gnu.org> + + * REVISION: Set to 2. + + * aclocal.m4 (GROFF_STDINT_H): Removed. + (GROFF_INTTYPES_H): Define HAVE_CC_INTTYPES_H. + + * configure.ac: Updated. + * configure, src/include/config.hin: Regenerated. + + * src/libs/libgroff/tmpname.cpp: Don't include stdint.h but + inttypes.h conditionally. + +2004-05-13 Werner LEMBERG <wl@gnu.org> + +Version 1.19.1 released +======================= + +2004-05-10 Stephen Gildea <http://www.gildea.com/stephen> + + * src/preproc/refer/label.y (same_author_last_name, + same_author_name): Handle empty sort keys. + +2004-05-10 Werner LEMBERG <wl@gnu.org> + + * NEWS, README, TODO, PROJECTS, PROBLEMS, MANIFEST, doc/webpage.ms, + tmac/TODO: Updated. + + * tmac/doc-syms (doc-str-Lb-libposix, doc-str-Lb-libpthread, + doc-str-Lb-librt): Reset font. + (Lb): Rename `doc-str-Lb' to `doc-str-Lb1'. + Provide `doc-str-Lb' to reset font. + * tmac/groff_mdoc.man: Updated. + +2004-05-08 Jan Schaumann <jschauma@netmeister.org> + + * src/preproc/html/pre-html.cpp (make_message): Make it work for + snprintf versions which don't conform to ANSI C 99 (this is, + counting the string's trailing null byte in the return value). + +2004-05-07 Keith Marshall <keith.d.marshall@ntlworld.com> + + * src/roff/troff/node.cpp (suppress_node::tprint): Don't expect + that all implementations of sprintf handle null pointers correctly. + +2004-05-04 Werner LEMBERG <wl@gnu.org> + + * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo: + Document `.U' register. + + * src/roff/troff/env.cpp (environment::mark_last_line) + [WIDOW_CONTROL]: Fix scope of `p' for new C++ compilers. + +2004-05-04 Larry Kollar <kollar@alltel.net> + + New read-only register `.U'; it returns 1 in safer mode and 0 + otherwise. + + * src/roff/troff/input.cpp (init_input_requests): Implement `.U' + register. + +2004-05-03 Werner LEMBERG <wl@gnu.org> + + * install-sh, mkinstalldirs: New versions; taken from texinfo CVS. + +2004-04-17 Werner LEMBERG <wl@gnu.org> + + * src/include/font.h (font): Use `int' for ch_index. + * src/libs/libgroff/font.cpp (font::alloc_ch_index, + font::compact): Updated. + + * src/roff/groff/pipeline.c (run_pipeline) [_WIN32]: Fix compiler + warnings. + + * src/roff/troff/div.cpp (begin_page), src/roff/troff/env.cpp + (hyphen_word): Fix compiler warnings. + * src/roff/troff/input.cpp (get_char_for_escape_name): Return + `char'. + Update all callers. + (get_delim_number, get_line_arg): Change second argument type to + `unsigned char'. + (macro_header::copy, token::next, do_define_string, + do_define_character, substring_request, asciify_macro, + unformat_macro, read_size, non_interpreted_node::interpret, + while_request, main: Fix compiler warnings. + (read_color_draw_node): Initialize `col'. + + * src/preproc/tbl/table.cpp (horizontal_span, table_entry): Make + `start_col' and `end_col' of type `int'. + (vertical_rule): Make `col' of type `int'. + + * src/preproc/grn/hdb.cpp (DBRead): Protect call to getc with check + for EOF. + + * src/preproc/refer/label.y (uppercase_array, lowercase_array): + New arrays. + (format_serial): Use them to remove dependency on ASCII. + + * src/devices/grops/ps.cpp (ps_printer::define_encoding): Fix + compiler warning. + * src/devices/grops/psrm.cpp (resource_manager::supply_resource): + Ditto. + + * src/devices/grotty/tty.cpp (tty_font::load_tty_font): Fix + compiler warnings. + (glyph): Change type of `hpos' to `int'. + + * src/devices/lbp/lbp.cpp (strsep): Removed. Unused. + * src/devices/lbp/lbp.h (splinerel): Fix compiler warnings. + + * src/utils/tfmtodit.cpp (gf::load): Fix compiler warnings. + + * src/utils/pfbtops/pfbtops.c (get_text): Fix compiler warning. + +2004-04-16 Werner LEMBERG <wl@gnu.org> + + * src/devices/grolbp/lbp.h, src/preproc/grn/gprint.h, + src/preproc/grn/hgraph.cpp, src/preproc/grn/hpoint.cpp, + src/preproc/html/pushback.cpp, src/preproc/html/pushback.h: Use + `double' instead of `float' everywhere. + * src/preproc/grn/main.cpp: Use `double' instead of `float' + everywhere. + (main): Add return value. + * src/preproc/grn/hdb.cpp: Use `double' instead of `float' + everywhere. + Update all user functions. + + * src/include/search.h, src/include/ptable.h, src/include/printer.h, + src/preproc/eqn/box.h, src/preproc/pic/object.h, + src/preproc/refer/refer.h, src/preproc/tbl/table.h, + src/preproc/tbl/table.cpp, src/roff/troff/env.h, + src/roff/troff/div.h, src/roff/troff/token.h, src/roff/troff/node.h, + src/roff/troff/input.cpp, src/roff/troff/request.h, + src/roff/troff/node.cpp: Don't mix `struct' and `class' in forward + declarations. + + * src/utils/indxbib/signal.c: Include stdlib.h. + +2004-04-14 Keith Marshall <keith.d.marshall@ntlworld.com> + + * tmac/s.tmac (@init, RP): Allow initialization of the PO register + before the first page. + +2004-04-14 Thomas Klausner <wiz@netbsd.org> + + * tmac/doc-common (doc-volume-as-*): Use lowercase names. + (doc-operating-system-*): Updated. + * tmac/doc-syms (doc-str-St-*): Various small fixes. + (doc-str-Lb-*): Add more library names. + +2004-04-10 Art Haas <ahaas@airmail.net> + + * src/utils/hpftodit/hpuni.cpp (hp_msl_to_unicode_list): Don't + use anonymous type. + +2004-04-09 Art Haas <ahaas@airmail.net> + + * src/utils/tfmtodit.cpp (lig_chars): Don't use anonymous type. + +2004-04-09 Keith Marshall <keith.d.marshall@ntlworld.com> + + * arch/misc/shdeps.sh: Generate better comment for sed script. + +2004-04-08 Art Haas <ahaas@airmail.net> + + * src/libs/libgroff/glyphuni.cpp (glyph_to_unicode_list), + src/libs/libgroff/uniglyph.cpp (unicode_to_glyph_list), + src/libs/libgroff/uniuni.cpp (unicode_decompose_list), + src/preproc/eqn/box.cpp (param_table), src/preproc/grn/hgraph.cpp + (polyfill), src/preproc/grn/main.cpp (polyfill), + src/preproc/refer/command.cpp (command_table), + src/utils/tfmtodit.cpp (lig_table): Don't use anonymous types (which + gcc 3.5 doesn't like). + +2004-04-08 Werner LEMBERG <wl@gnu.org> + + Removing many compiler warnings. groff should now compile with + a C++ compiler used for C files also. [Simple variable renamings + to avoid shadowing aren't logged in detail.] + + * src/devices/grodvi/dvi.cpp: Some local variable renamings. + (draw_dvi_printer::draw) ['c']: Enclose in block. + + * src/devices/grohtml/post-html.cpp: Some local variable renamings. + (page::add_line): Fix typos. + * src/devices/grohtml/html-text.cpp: Some local variable renamings. + + * src/devices/grolbp/lbp.cpp: Don't define _GNU_SOURCE. + Some local variable renamings. + * src/devices/grolbp/lbp.h: Some local variable renamings. + + * src/devices/grolj4/lj4.cpp, src/devices/grotty/tty.cpp: Some local + variable renamings. + + * src/libs/libbib/index.cpp (index_search_item_iterator::get_tag): + Remove redundant local variable declaration. + * src/libs/libbib/map.c (mapread, unmap): Don't use K&R style. + Don't use `caddr_t' but `void *'. + Enclose functions with `extern "C"' for C++. + + * src/libs/libdriver/input.cpp (remember_filename, + remember_source_filename): Use cast for string constant. + + * src/libs/libgroff/font.cpp, src/libs/libgroff/fontfile.cpp, + src/libs/libgroff/nametoindex.cpp, src/libs/libgroff/paper.cpp, + src/libs/libgroff/geometry.cpp: Some local variable renamings. + * src/libs/libgroff/iftoa.c, src/libs/libgroff/itoa.c: Don't use K&R + style. + Enclose functions with `extern "C"' for C++. + * src/libs/libgroff/quotearg.c (TRUE,FALSE): Define as macros. + (needs_quoting): Return `int'. + (quote_arg): Add proper casts to malloc and realloc. + * src/libs/libgroff/spawnvp.c: Compile code only for MS-DOS and + various MS Windows environments. + (spawnvp_wrapper): Add proper cast to malloc. + + * src/preproc/eqn/box.h: Remove redundant declarations of + `make_script_box', `make_mark_box' and `make_lineup_box'. + * src/preproc/eqn/eqn.y: Remove redundant declaration of `strsave'. + * src/preproc/eqn/script.cpp, src/preproc/eqn/pile.cpp: Some local + variable renamings. + + * src/preproc/grn/hpoint.cpp: Some local variable renamings. + * src/preproc/grn/hgraph.cpp: Some local variable renamings. + (dx, dy): Renamed functions to... + (deltax, deltay): This. + * src/preproc/grn/main.cpp: Some local variable renamings. + (deffont): Add `const'. + (initpic, conv): Use cast for string constant. + + * src/preproc/html/pre-html.cpp: Some local variable renamings. + (makeFileName, alterDeviceTo, addZ): Use cast for string constant. + (char_buffer::run_output_filter): Second argument is unused. + * src/preproc/html/pushback.cpp: Some local variable renamings. + + * src/preproc/pic/pic.y: Remove redundant declaration of `do_copy'. + * src/preproc/pic/object.cpp: Some local variable renamings. + + * src/preproc/refer/label.y (lookup_label): Remove redundant + declaration of local variable. + + * src/preproc/soelim.cpp: Remove redundant declaration of + `interpret_lf_args'. + + * src/preproc/tbl/main.cpp: Some local variable renamings. + + * src/roff/groff/groff.cpp (main): Use cast for string constant. + * src/roff/groff/pipeline.c: Enclose declarations of `error', + `c_fatal', and `i_to_a' with `extern "C"' for C++. + Don't use C++-style comments. + + * src/roff/troff/env.h: Remove redundant declaration of `title'. + * src/roff/troff/node.h, src/roff/troff/env.cpp, + src/roff/troff/div.cpp, src/roff/troff/node.cpp: Some local variable + renamings. + * src/roff/troff/div.h: Remove redundant declaration of + `end_diversions'. + * src/roff/troff/troff.h: Remove redundant declaration of + `cleanup_and_exit' + * src/roff/troff/input.cpp: Remove redundant declaration of + `handle_first_page_transition' and `process_input_stack'. + + * src/utils/hpftodit.cpp: Some local variable renamings. + + * src/utils/indxbib/signal.c: Enclose functions with `extern "C"' + for C++. + Don't define RETSIGTYPE. + * src/utils/indxbib/indxbib.cpp: Some local variable renamings. + + * src/utils/pfbtops/pfbtops.cpp: Don't use K&R style. + (error): Use `const' in argument. + (main): Remove redundant declaration of `optind'. + Move declaration of `Version_string' to top-level. + + * PROBLEMS: Document difficulties compiling signal.c if a C++ + compiler is used for C. + +2004-04-07 Werner LEMBERG <wl@gnu.org> + + * Makefile.sub (DISTCLEANFILES): Add `test-groff'. + +2004-04-06 Keith Marshall <keith.d.marshall@ntlworld.com> + + Make scripts like nroff.sh and neqn.sh portable across various + (Unix-like) shell implementations from Cygwin, MSYS, etc., which use + non-POSIX path separators. The idea is to extend those scripts to + decide at run-time (of the script) which path separator to use. + + * arch/misc/Makefile.sub: New file. + * arch/misc/shdeps.sh: New file, generating OS dependency fixups. + This script handles @GROFF_BIN_PATH_SETUP@, replacing it with + a proper definition of the variable `GROFF_RUNTIME'. + + * Makefile.in (SH_DEPS_SED_SCRIPT): New variable. + (MDEFINES): Add SH_DEPS_SED_SCRIPT. + (PROGDEPDIRS): New variable. + `FORCE' it. + (PROGDIRS): Add PROGDEPDIRS. + + * src/preproc/eqn/Makefile.sub (neqn): Call SH_DEPS_SED_SCRIPT. + Don't substitute @SEP@ and @BINDIR@. + * src/preproc/eqn/neqn.sh: Use @GROFF_BIN_PATH_SETUP@. + (PATH): Use GROFF_RUNTIME. + + * src/roff/nroff/Makefile.sub (nroff): Call SH_DEPS_SED_SCRIPT. + Don't substitute @SEP@ and @BINDIR@. + * src/roff/nroff/nroff.sh: Use @GROFF_BIN_PATH_SETUP@. + (PATH): Use GROFF_RUNTIME. + +2004-04-05 Keith Marshall <keith.d.marshall@ntlworld.com> + + * src/roff/nroff/nroff.sh: Implement work-around for sh.exe from + Cygwin which doesn't handle stderr correctly. + +2004-03-08 Werner LEMBERG <wl@gnu.org> + + * Makefile.comm (install_dev, uninstall_dev): Protect `for' loops + against empty argument. Problem reported by <cgd@broadcom.com>. + +2004-03-05 Keith Marshall <keith.d.marshall@ntlworld.com> + + * Makefile.in (SEP): Replaced with... + (RT_SEP, SH_SEP): Separators for the target platform's native path + separator and the build environment, respectively. + (fontpath, tmacpath): Use RT_SEP. + (MDEFINES): Updated. + + * doc/Makefile.sub (GROFF_BIN_PATH): Use SH_SEP. + * src/preproc/eqn/Makefile.sub (neqn): Use SH_SEP. + * src/roff/nroff/Makefile.sub (nroff): Use SH_SEP. + +2004-03-05 Werner LEMBERG <wl@gnu.org> + + * font/devlj4/Makefile.sub (LJ4RES): Set to 1200. This helps to + reduce alignment problems with newer printers which use built-in + TrueType fonts (instead of the older Intellifonts). The ideal + solution is to provide a second set of groff metric files, but this + is extremely time-consuming to produce, given that HP's metric + files are very rudimentary. + +2004-03-01 Werner LEMBERG <wl@gnu.org> + + * src/devices/grolj4/lj4.cpp (main): Fix argument of getopt_long. + s/operand/argument/ in error message. + +2004-03-01 Keith Marshall <keith.d.marshall@ntlworld.com> + + * src/roff/groff/groff.cpp (main): Don't allow option -o if -Thtml + is in use. + +2004-03-01 Antti Kantee <pooka@netbsd.org> + + * tmac/s.tmac (XE): Fix error message. + +2004-02-27 Jeff Conrad <jeff_conrad@msn.com> + + * src/include/nonposix.h (write, dup, dup2, close) [_MSC_VER]: + New macros. + + * src/roff/groff/pipeline.c: Declare strcasecmp. + (run_pipeline) [_WIN32]: Use function name variants which don't + start with `_'. + Fix stream handling. + +2004-02-27 Keith Marshall <keith.d.marshall@ntlworld.com> + + * src/include/nonposix.h: Fix declaration of `system_shell_name'. + Declare `spawnvp_wrapper' and macro definitions of spawnvp only + for platforms which use the native Win32 runtime libraries. + (FLUSH_INPUT_PIPE) [_UWIN]: Provide non-empty version. + + * src/libs/libgroff/quotearg.c (QUOTE_ARG_MALLOC_ERROR, + QUOTE_ARG_REALLOC_ERROR): Fix string. + + * src/preproc/html/pre-html.cpp: Remove declaration of + `spawnvp_wrapper'. + Don't use __MINGW32__. + s/DEBUG_FILE/DEBUG_FILE_DIR/. + (DEBUG_TEXT, DEBUG_NAME, DEBUG_FILE) [DEBUGGING]: New macros. + (OUTPUT_STREAM, PS_OUTPUT_STREAM, REGION_OUTPUT_STREAM): New macros. + (char_buffer::run_output_filter) [MAY_FORK_CHILD_PROCESS]: Fix + calls to `set_redirection' and `WAIT'. + [MAY_SPAWN_ASYNCHRONOUS_CHILD]: Remove unused variable `i' and `j'. + Fix calls to `set_redirection' and `save_and_redirect'. + (char_buffer::do_html, char_buffer::do_image) [DEBUGGING]: Fix calls + to `set_redirection' and `save_and_redirect'. + (usage): Fix message. + (makeTempFiles, main): Use `DEBUG_FILE'. + +2004-02-21 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/troff.h (WARN_TOTAL): Fix value. + +2004-02-21 Keith Marshall <keith.d.marshall@ntlworld.com> + + * src/libs/libgroff/quotearg.c: New file, providing proper argument + quoting for MSVC's spawn* and exec* functions. + * src/libs/libgroff/spawnvp.c: New file, providing a wrapper around + spawnvp with proper quoting for MSVC. + + * src/libs/libgroff/assert.cpp (program_name), + src/libs/libgroff/new.cpp (program_name): Declare as `extern "C"'. + * src/libs/libgroff/Makefile.sub (OBJS, CSRCS): Updated. + + * src/roff/troff/input.cpp (program_name): Declare as `extern "C"'. + + * src/include/error.h (program_name): Declare as `extern "C"'. + * src/include/nonposix.h [__MSDOS__ ...]: Handle spawnvp. + +2004-02-21 Jeff Conrad <jeff_conrad@msn.com> + + * src/preproc/html/pre-html.cpp [__CYGWIN__ ...]: Declare + spawnvp_wrapper. + [MAY_SPAWN_ASYNCHRONOUS_CHILD]: Declare i and j. + +2004-02-20 Jeff Conrad <jeff_conrad@msn.com> + + * src/roff/groff/pipeline.c (cmd) [__MSDOS__ || ...]: New global + variable. + (sbasename) [__MSDOS__ || ...]: New function. + (system_shell_name) [__MSDOS__ || ...]: Use a different, more + generic algorithm. + (system_shell_dash_c, is_system_shell) [__MSDOS__ || ...]: Updated. + (run_pipeline) [_WIN32]: Use _XXX variants for some macros instead + of XXX. + Use STDOUT_FILENO instead of hardcoded file handle. + (signal_catcher) [__MSDOS__]: Moved to non-_WIN32 section. + +2004-02-19 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/div.cpp: Include nonposix.h after troff.h to + avoid warnings w.r.t. redefinition of P_tmpdir for some compilers. + +2004-02-18 Werner LEMBERG <wl@gnu.org> + + * font/devlj4/Makefile.sub (DEVFILES): Updated to contain all + new font and mapping files. + +2004-02-18 Jeff Conrad <jeff_conrad@msn.com> + Keith Marshall <keith.d.marshall@ntlworld.com> + + * src/include/nonposix.h (FLUSH_INPUT_PIPE): New macro to empty + an input pipe. This is needed for the MSVC compiler to make troff's + `-o' option work. + + * src/roff/troff/div.cpp: Include nonposix.h. + (cleanup_and_exit): Call FLUSH_INPUT_PIPE. + +2004-02-17 Werner LEMBERG <wl@gnu.org> + + * font/devlj4/generate/special.awk: New script. + * font/devlj4/generate/Makefile (S): Use special.awk. + * font/devlj4/*: Regenerated, including the following new files: + Arial (AR, AB, AI, ABI), Times New Roman (TNRR, TNRB, TNRI, TNRBI), + MS Symbol (SYMBOL), Wingdings (WINGDINGS). + * NEWS: Document new lj4 fonts and revised hpftodit. + +2004-02-17 Paco Andrs Verd <pandres@dragonet.es> + + * src/devices/grolbp/lbp.h (vmdvarc): Fix formatting string. + +2004-01-25 Werner LEMBERG <wl@gnu.org> + + * src/libs/libgroff/progname.cpp: Replaced with... + * src/libs/libgroff/progname.c: New file. + * src/libs/libgroff/Makefile.sub: Updated accordingly. + +2004-01-17 Werner LEMBERG <wl@gnu.org> + + * font/devlj4/generate/Makefile (SYMBOL): Use 9nb28703.tfm. + +2004-01-16 Jeff Conrad <jeff_conrad@msn.com> + + * font/devlj4/generate/wingdings.map, + font/devlj4/generate/symbol.map: Include unnamed glyphs. + Use groff glyph names where possible. + * src/devices/grolj4/lj4_font.man: Minor updates. + +2004-01-13 Werner LEMBERG <wl@gnu.org> + + * tmac/www.tmac (DC): Handle TTY devices. + + * doc/webpage.ms: Document viewCVS from ffii.org. + * NEWS, README: Updated. + + * src/roff/groff/groff.man: Mention lj4_font man page. + + * font/devlj4/generate/Makefile (SYMBOLMAP, WINGDINGSMAP): New + variables. + (FONTS): Add SYMBOL and WINGDINGS. + (SYMBOL, WINGDINGS): New targets. + +2004-01-13 Jeff Conrad <jeff_conrad@msn.com> + + * src/devices/grolj4/lj4_font.man: New man page. + * src/devices/grolj4/Makefile.sub (MAN5): New variable. + * src/devices/grolj4.man: Mention lj4_font man page. + + * src/utils/hpftodit/hpftodit.cpp (read_map): Handle line comments. + * src/utils/hpftodit/hpftodit.man: Document it. + (CW): New macro. + Remove details about fonts (which are now in lj4_font.man). + + * font/devlj4/generate/symbol.map, + font/devlj4/generate/wingdings.map: New files. + +2004-01-12 Werner LEMBERG <wl@gnu.org> + + * README: Mention ffii's viewcvs access. + +2004-01-09 Werner LEMBERG <wl@gnu.org> + + * font/devlj4/generate/special.map: Map MSL 228 to U+221F. + +2004-01-09 Jeff Conrad <jeff_conrad@msn.com> + + Revert most of the change from 2004-01-03 to better control used + symbol sets. + + * src/utils/hpftodit/hpftodit.cpp (symbol_set): New structure. + (text_symbol_sets, special_symbol_sets): New arrays. + (symbol_set_table): New global variable. + (read_symbol_sets): Use search order given in the text_symbol_sets + and special_symbol_sets arrays. If command line flag -a is not + given, search both arrays. + (output_charset): Require x_height_tag only for command line flag -i. + +2004-01-06 Werner LEMBERG <wl@gnu.org> + + Implement string-valued registers \n[.m] and \n[.M] to return the + name of the current drawing and background color, respectively. + + * src/roff/troff/symbol.h: Moved to... + * src/include/symbol.h: Here. + Small fixes to make it work outside of the `troff' directory. + * src/roff/troff/symbol.cpp: Moved to... + * src/libs/libgroff/symbol.cpp: Here. + Small fixes to make it work outside of the `troff' directory. + + * src/include/Makefile.sub (HDRS), src/libs/libgroff/Makefile.sub + (OBJS, CCSRCS), src/roff/troff/Makefile.sub (OBJS, CCSRCS, HDRS): + Updated. + + * src/include/color.h: Include symbol.h. + (color): Add new field `nm'. + * src/libs/libgroff/color.cpp (color::color): Updated. + + * src/roff/troff/dictionary.cpp, src/roff/troff/div.cpp, + src/roff/troff/node.cpp, src/roff/troff/number.cpp, + src/roff/troff/reg.cpp: Don't include symbol.h. + + * src/roff/troff/env.cpp: Don't include symbol.h. + (environment::get_glyph_color_string, + environment_get_fill_color_string): New member functions. + (init_env_requests): Handle `.m' and `.M' registers. + * src/roff/troff/input.cpp: Don't include symbol.h. + (default_symbol): Moved to symbol.cpp/symbol.h. + (do_glyph_color, do_fill_color, define_color): Pass symbol name + to color constructor. + * src/roff/troff/env.h: Updated. + + * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo: + Document new registers. + +2004-01-05 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/node.cpp (space_node::get_breakpoints, + space_node::nbreaks): Protect against zero `next' field. + +2004-01-03 Jeff Conrad <jeff_conrad@msn.com> + + In hpftodit, use the symbol sets offered in the TFM. + + * src/utils/hpftodit/hpftodit.cpp (NO_GLYPH): New constant. + (symbol_set, text_symbol_sets, special_symbol_sets, + symbol_set_table): Removed. + (get_printcode): Removed. + (read_symbol_sets): Initialize `symbol_set' field with + `NO_SYMBOL_SET'. + Simplify code to just use the `kind' value. + (output_charset): Improve output formatting. + (dump_symbols): Simplified. + +2004-01-02 Werner LEMBERG <wl@gnu.org> + + * font/devlj4/generate/text.map: Add more MSL numbers. + +2004-01-02 Jeff Conrad <jeff_conrad@msn.com> + + * src/utils/hpftodit/hpftodit.cpp (is_decomposed): New macro. + (text_symbol_sets): Add more symbol sets. + (debug_flag): New static variable (moved from `main'). + (get_printcode, show_symset): New functions. + (main): Remove `debug_flag'. + (output_charset): Use `show_symset'. + (dump_symbols): Use `show_symset'. + Print symsets for all glyphs. + (read_map): Actually call `unicode_to_ucode_make' but this time + correctly. + +2004-01-01 Werner LEMBERG <wl@gnu.org> + + * font/devlj4/generate/text.map, font/devlj4/generate/special.map: + Fix placement of comments. + +2004-01-01 Jeff Conrad <jeff_conrad@msn.com> + + * src/utils/hpftodit/hpftodit.cpp (main): Read map file also if + option `-d' is given. + (output_charset): Improve warning messages to give more information. + (dump_symbols): Make information more precise. + (usage): Updated. + (read_map): Don't call unicode_to_ucode_name; the glyph names must + appear as-is and shouldn't be decomposed. + +2003-12-31 Werner LEMBERG <wl@gnu.org> + + * src/utils/hpftodit/hpftodit.cpp (dump_tags): Handle posture_tag. + * font/devlj4/generate/Makefile (IFLAG): Updated to new units. + (FONTS): Add TrueType font families Arial and Times New Roman. + (TNRR, TNRB, TNRI, TNRBI, AR, AB, AI, ABI): New targets. + * font/devlj4/generate/text.map: Fix Unicode values of `fi' and + `fl'. + +2003-12-31 Jeff Conrad <jeff_conrad@msn.com> + + * test-groff.in (SEP): Quote value. + * src/roff/troff/node.cpp (suppress_node::tprint): Change type of + `tem' to `char*' to avoid deallocation of a pointer to a constant + object which some compilers don't like. + +2003-12-31 Werner LEMBERG <wl@gnu.org> + + * font/devlj4/generate (text.map, special.map): Rewritten to work + with the new hpftodit version. + +2003-12-30 Jeff Conrad <jeff_conrad@msn.com> + + * src/utils/hpftodit/hpftodit.cpp (output_charset): Emit HP symbol + set and 8bit character code for all glyphs also. + +2003-12-30 Werner LEMBERG <wl@gnu.org> + + * src/libs/libgroff/strcasecmp.c: Updated from gnulib. + +2003-12-29 Werner LEMBERG <wl@gnu.org> + + More fixes for MSVC compiler. + + * doc/Makefile.sub (GROFF_BIN_PATH): Use $(SEP). + + * src/include/nonposix.h (STDIN_FILENO, STDOUT_FILENO, + STDERR_FILENO) [_MSC_VER]: Define conditionally. + (getpid) [_MSC_VER]: Remove. + Include direct.h and process.h conditionally. + + * src/roff/troff/node.cpp (suppress_node::tprint): Don't use + parentheses for a_delete. + + * src/utils/lookbib/lookbib.cpp: Include nonposix.h. + + * test-groff: Replaced with... + * test-groff.in: This new template to handle path separator + properly. + + * configure.ac: Check for direct.h and process.h. + Generate test-groff script. + * configure, src/include/config.hin: Regenerated. + +2003-12-28 Werner LEMBERG <wl@gnu.org> + + Add integral extension glyph. + Add new option `-x' to afmtodit to suppress use of built-in AGL. + + * font/devhtml/R.proto, font/devutf8/R.proto: Add `u23AE'. + + * font/devps/generate/textmap: Provide entry for `integralex' to + override (old) PUA value of the AGL. + * font/devps/generate/Makefile (SS): Add afmtodit option `-x'. + * font/devps/*: Regenerated. + + * src/utils/afmtodit/afmtodit.pl: Add option `-x'. + * src/utils/afmtodit/afmtodit.man, NEWS: Updated. + +2003-12-27 Werner LEMBERG <wl@gnu.org> + + Add forgotten `coproduct' symbol (already available for DVI). + + * font/devhtml/R.proto, font/devps/generate/textmap, + font/devps/symbolmap, font/devutf8/R.proto, man/groff_char.man, + src/libs/libgroff/uniglyph.cc, src/libs/libgroff/glyphuni.cpp: Add + U+2210 (\[coproduct]). + +2003-12-26 Jeff Conrad <jeff_conrad@msn.com> + + hpftodit has been extended to handle TrueType metric files and + more glyphs. See hpftodit.man for more details. + + * src/utils/hpftodit/hpftodit.cpp: Include stdio.h, string.h, + ctype.h, and unicode.h. + s/msl/charcode/ everywhere since we now handle Unicode values also. + (equal, NO, YES, MSL, SYMSET, UNICODE, UNICODE): New macros. + Use it where appropriate. + (MULTIPLIER): Replaced with... + (multiplier): New global static variable. + (scale): Updated. + (tag_type): Add more TFM tags. + (tag_name): New array. + (ENUM_TYPE, FLOAT_TYPE): Removed. + (BYTE_TYPE): New value assigned. + (ASCII_TYPE, RATIONAL_TYPE): New enumeration values. + (text_symbol_sets, special_symbol_sets): Extended to cover more + sets. + (check_type): Add return value. + (check_units): Add parameters to get ppi and upem values. + Handle TrueType TFM data. + (output_font_name): New function. + (output_charset): Add parameter to handle TFM type. + Handle TrueType TFMs also. + (em_fract): New macro. + (dump_tags): Be much more verbose and handle more tags. + (dump_ascii, dump_symbol_sets, dump_symbols): New functions. + (hp_msl_to_ucode_name, unicode_to_ucode_name, is_uname): New + functions. + (read_map): Add parameter to handle TFM type. + Handle both MSL and Unicode mappings. + (main): Add two new command line options `-a' and `-q'. + Updated to make use of new functions. + (usage): Updated. + + * src/utils/hpftodit/hpuni.cpp: New file. + + * src/utils/hpftodit/Makefile.sub, src/utils/hpftodit/hpftodit.man: + Updated. + +2003-12-25 Werner LEMBERG <wl@gnu.org> + + * src/include/nonposix.h (read) [_MSC_VER]: Define. + +2003-12-24 Werner LEMBERG <wl@gnu.org> + + * src/utils/afmtodit/afmtodit.man: Some reformulations as suggested + by Michail Vidiassov <master@iaas.msu.ru>. + +2003-12-20 Werner LEMBERG <wl@gnu.org> + + * font/devhtml/R.proto: Add u00{47,67}_0306, u00{53,73}_0327, + and u0049_0307. + Add missing latin-2 glyphs. + * font/devutf8/R.proto: Add missing latin-2 glyphs. + + * tmac/troffrc: Load `composite.tmac' earlier. + + * tmac/dvi.tmac, tmac/ps.tmac, tmac/lbp.tmac: Add u00{47,67}_0306, + u00{53,73}_0327, and u0049_0307. + * tmac/X.tmac: Add u00{47,67}_0306. + * tmac/tty-char.tmac: Use composite glyph names for readability. + + * NEWS: Updated. + + * src/include/unicode.h: Remove `extern' keywords. + +2003-12-20 Nilgn Belma Bugner <nilgun@superonline.com> + + * tmac/latin5.tmac: New file. + +2003-12-19 Werner LEMBERG <wl@gnu.org> + + Add some glyphs needed for Turkish. + + * font/devutf8/R.proto: Add u00{47,67}_0306, u00{53,73}_0327, + and u0049_0307. + + * tmac/composite.tmac: Add `,' as a synonym for `ac' accent. + * tmac/tty-char.tmac: Add representations for u00{47,67}_0306, + u00{53,73}_0327, and u0049_0307. + +2003-12-18 Werner LEMBERG <wl@gnu.org> + + * src/devices/grops/ps.cc (ps_output::put_float): Revert change + from 2001-10-04. + Remove trailing zeros. + +2003-12-17 Werner LEMBERG <wl@gnu.org> + + Make \? transparent to end-of-sentence recognition. + + * src/roff/troff/input.cc (non_interpreted_node): Add + `ends_sentence' member function. + +2003-12-16 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Document `dt' request correctly. + Other minor typographical improvements. + +2003-12-10 Michail Vidiassov <master@iaas.msu.ru> + + * src/utils/afmtodit/Makefile.sub (afmtodit): Fix typo. + +2003-12-10 Richard Stallman <rms@gnu.org> + + * LICENSE: Better wording. + +2003-12-09 Werner LEMBERG <wl@gnu.org> + + * aclocal.m4 (GROFF_BROKEN_SPOOLER_FLAGS): Set default value to 0. + * configure, NEWS: Updated. + +2003-12-08 Werner LEMBERG <wl@gnu.org> + + * FDL: Updated to version 1.2 (from www.gnu.org/copyleft). + +2003-12-07 Bernd Warken <bwarken@mayn.de> + + * LICENSE: Updated. + +2003-12-07 Werner LEMBERG <wl@gnu.org> + + * INSTALL: Improved. + +2003-12-05 Keith Marshall <keith.d.marshall@ntlworld.com> + + Use path separator character of target platform for compiled-in + default paths. + + * aclocal.m4 (GROFF_TARGET_PATH_SEPARATOR): New macro. + * configure.ac: Use GROFF_TARGET_PATH_SEPARATOR. + * configure: Regenerated. + * Makefile.in (SEP): Use GROFF_PATH_SEPARATOR. + +2003-12-05 Werner LEMBERG <wl@gnu.org> + + * src/include/nonposix.h (PATH_SEP_CHAR): New definition. + Replace `PATH_SEP[0]' with `PATH_SEP_CHAR' everywhere. + +2003-12-04 Bernd Warken <bwarken@mayn.de> + + * LICENSE: New file. + +2003-12-03 Werner LEMBERG <wl@gnu.org> + + * src/utils/afmtodit/afmtodit.pl: Comment out code which handles + ligatures present in AFM files since groff currently only + understands some standard ligatures and nothing else. + +2003-12-03 Jeff Conrad <jeff_conrad@msn.com> + + * src/roff/groff/groff.cpp (main): Don't run the spooler if + option -v is given. + + * src/roff/groff/pipeline.c (run_pipeline) [_WIN32]: Fix error + messages. + Close stdout copy. + Don't use Unix wait flags. + +2003-12-02 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/glyphuni.cpp, src/roff/troff/unicode.cpp, + src/roff/troff/unicode.h, src/roff/troff/uniglyph.cpp, + src/roff/troff/uniuni.cpp: Moved to... + * src/libs/libgroff/glyphuni.cpp, src/libs/libgroff/unicode.cpp, + src/libs/libgroff/unicode.h, src/libs/libgroff/uniglyph.cpp, + src/libs/libgroff/uniuni.cpp: Here. + + * src/include/Makefile.sub.old (HDRS), + src/libs/libgroff/Makefile.sub (OBJS, CCSRCS), + src/roff/troff/Makefile.sub (HDRS, PBJS, CCSRCS): Updated. + +2003-12-01 Keith Marshall <keith.d.marshall@ntlworld.com> + + * src/preproc/htlp/pre-html.cpp (__tmpfile): Renamed to + `DEBUG_FILE'. + Updated all users. + +2003-12-01 Werner LEMBERG <wl@gnu.org> + + * groff.texinfo: Document special behaviour of `.vs 0'. + Improve documentation of `cflags' request. + * NEWS: Updated. + +2003-11-29 Werner LEMBERG <wl@gnu.org> + + * font/devlj4/generate/Makefile (CORONET): Use correct TFM. + * font/devlj4/CORONET: Regenerated. + +2003-11-24 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/env.cpp (hyphen_trie::read_patterns_file): Fix loop + if processing hyphenation patterns in traditional mode. + Improve error messages. + +2003-11-20 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/node.cpp (troff_output_file::put_char_width, + troff_output_file::put_char): Fix type of local variable `c'. + +2003-11-19 Werner LEMBERG <wl@gnu.org> + + * src/roff/groff/pipeline.c (P): Removed. Updated all function + declarations. + (i_to_a): Removed. libgroff already provides this function. + (run_pipeline) [_WIN32]: Don't use itoa but i_to_a. + +2003-11-18 Keith Marshall <keith.d.marshall@ntlworld.com> + + * src/roff/groff/pipeline.c (xstrsignal): Fix usage of + HAVE_DECL_SYS_LIST. + +2003-11-17 Werner LEMBERG <wl@gnu.org> + + * COPYING: Use correct version. + +2003-11-11 Werner LEMBERG <wl@gnu.org> + + LynxOS 4.0.0 doesn't declare vfprintf. + + * configure.ac: Check for vfprintf. + * configure: Regenerated. + * src/include/lib.h: Handle `NEED_DECLARATION_VFPRINTF'. + * src/include/config.hin: Regenerated. + +2003-11-10 Werner LEMBERG <wl@gnu.org> + + LynxOS 4.0.0 has snprintf (without declaration) but no vsnprintf. + + * configure.ac: Check for vsnprintf. + * configure: Regenerated. + * src/include/lib.h: Handle `NEED_DECLARATION_VSNPRINTF' and + `HAVE_VSNPRINTF'. + * src/include/config.hin: Regenerated. + +2003-11-09 Werner LEMBERG <wl@gnu.org> + + * aclocal.m4: Updated syntax to autoconf 2.59. + (GROFF_HTML_PROGRAMS): Use AC_FOREACH. + Don't check for gsos2. + (GROFF_SRCDIR, GROFF_BUILDDIR): Removed. autoconf 2.59 provides + working abs_top_srcdir and abs_top_builddir. + + * configure.ac: Updated syntax to autoconf 2.59. + Don't call GROFF_SRCDIR and GROFF_BUILDDIR. + Replace call to AC_DECL_SYS_SIGLIST with call to AC_CHECK_DECLS. + * configure: Regenerated. + + * Makefile.in, doc/Makefile.in: s/@top_srcdir@/@abs_top_srcdir@/, + s/@groff_top_builddir@/@abs_top_builddir@/. + + * src/roff/groff/pipeline.c (xstrsignal): + s/SYS_SIGLIST_DECLARED/HAVE_DECL_SYS_SIGLIST/. + +2003-11-07 Werner LEMBERG <wl@gnu.org> + + * src/devices/grodvi/dvi.cpp (draw_dvi_printer::draw) ['a']: Always + make start angle smaller than end angle to circumvent a bug in tpic + handling of some versions of dvipdfm (and dvipdfmx). + +2003-10-30 Werner LEMBERG <wl@gnu.org> + + * src/devices/grops/grops.man: Improve section on creating EPS. + +2003-10-29 Werner LEMBERG <wl@gnu.org> + + * contrib/pic2graph/pic2graph.sh: Fix typo (-P-letter -> + -P-pletter). + +2003-10-28 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Fix documentation of `.if'. + +2003-10-27 Michail Vidiassov <master@iaas.msu.ru> + + * src/utils/afmtodit/afmtodit.pl: Handle unmapped characters of + the form `uniXXXX' also. + +2003-10-27 Werner LEMBERG <wl@gnu.org> + + * contrib/eqn2graph/eqn2graph.sh, contrib/grap2graph/grap2graph.sh, + contrib/pic2graph/pic2graph.sh: Implement secure management of + temporary files. + Pass `-P-pletter' to groff to avoid data outside of the converted + area -- some versions of `convert' (for example 5.3.8) don't check + the bounding box of the image but always use a fixed image size + (letter paper format). + * contrib/eqn2graph/eqn2graph.man, contrib/grap2graph/grap2graph.man, + contrib/pic2graph/pic2graph.man: Updated. + + * src/roff/groff/groff.man: Document $TMP and $TEMP. + +2003-10-26 Werner LEMBERG <wl@gnu.org> + + * src/preproc/pic/troff.cpp (troff_output::simple_circle, + troff_output::simple_ellipse, troff_output::simple_arc, + troff_output::simple_line, troff_output::simple_spline, + troff_output::simple_polygon): Insert a space before arguments. + (troff_output::set_fill): Emit `\&' before `\D'Fg...' since the + latter doesn't produce a node, so the following `.sp -1' would do + the wrong thing. + Don't emit `.sp -1' after \M. This also doesn't produce a token + (and we don't have to care about compatibility mode). + (troff_output::set_color, troff_output::reset_color): Don't emit + `.sp -1' after \M and \m. + + * src/roff/troff/input.cpp (old_have_input): New global variable. + (input_stack::get): Handle `old_have_input'. + (process_input_stack) <token::TOKEN_NEWLINE>: Call + `trapping_blank_line' depending on `old_have_input', not + `have_input'. + +2003-10-20 Keith Marshall <keith.d.marshall@ntlworld.com> + + * src/libs/libgroff/tmpfile.cpp [__MSDOS__, _Win32] + (WIN32_TMPDIR_ENVVAR, MSDOS_TMPDIR_ENVVAR): New macros, providing + default directory names for temporary files. + [__MSDOS__, _Win32] (temp_init::temp_init): Use them. + + * src/roff/groff/pipeline.c [__MSDOS__]: Include stdlib.h. + [__MSDOS__] (run_pipeline): Honour environment variables. + Don't use `tmpnam' but `tempnam' to work around messy + implementation. + + * README.MinGW: New file. + +2003-10-16 Werner LEMBERG <wl@gnu.org> + + * src/preproc/html/pre-html.cpp (write_upto_newline): Don't use + `(*t)->next' without testing validity of `*t'. + (usage): Make it more readable. + +2003-10-16 Keith Marshall <keith.d.marshall@ntlworld.com> + + Make html device run under both MS-DOS and Win32. + + * src/preproc/html/pre-html.cpp (MAY_FORK_CHILD_PROCESS, + MAY_SPAWN_ASYNCHRONOUS_CHILD): New macros to control whether + spawn or fork+exec has to be used, and whether parent must sleep + until the child process terminates. Used in + `char_buffer::run_output_filter'. + (copyofstdoutfd): Removed. + (char_buffer): Replace `write_file_html' and `write_file_troff' + member functions with `emit_troff_output' and `run_output_filter'. + (DEVICE_FORMAT, HTML_OUTPUT_FILTER, IMAGE_OUTPUT_FILTER): New + macros. + (replaceFd): Replaced with... + (set_redirection): New auxiliary function. + (waitForChild): Replaced with... + (save_and_redirect): New auxiliary function for. + + (char_buffer::do_html, char_buffer::do_image): Simplified, using new + functions. + +2003-10-14 Keith Marshall <keith.d.marshall@ntlworld.com> + + * aclocal.m4 (GROFF_SYS_NERR): Check stdlib.h also. + (GROFF_LIBC): New function. + * configure.ac: Call GROFF_LIBC. + Check for `kill'. + * configure: Regenerated. + + * src/include/lib.h: Handle __MINGW32__. + * src/include/nonposix.h [_MSC_VER]: Handle __MINGW32__. + Add macro for `pipe'. + Define P_tmpdir. + + * src/roff/groff/pipeline.c (run_pipeline): Handle `no_pipe' + correctly. + + * src/utils/indxbib/signal.c (handle_fatal_signal) [!HAVE_KILL]: + Implement. + +2003-10-12 Werner LEMBERG <wl@gnu.org> + + * src/roff/groff/groff.cpp (help), src/devices/grops/ps.cpp (usage), + src/roff/troff/input.cc (usage): Updated. + + * NEWS, doc/groff.texinfo: Updated. + +2003-10-12 Peter Miller <millerp@canb.auug.org.au> + + * src/libs/libgroff/searchpath.cpp + (search_path::open_file_cautious): New function which also handles + `-' as stdin and stdout depending on the access mode. + * src/include/searchpath.h (search_path): Updated. + + * src/devices/grops/ps.cpp (main): Handle new `-I' switch. + * src/devices/grops/ps.h: Include `searchpath.h'. + * src/devices/grops/psrm.cpp (resource_manager::supply_resource): + Open resource file with `include_search_path.open_file_cautious'. + * src/devices/grops/grops.man: Document new `-I' switch. + + * src/devices/grodvi/dvi.cpp (main), src/devices/grolbp/lbp.cpp + (main), src/devices/grolj4/lj4.cpp (main), + src/devices/grotty/tty.cpp (main): Ignore new `-I' switch. + + * src/preproc/soelim/soelim.cpp (include_list_length, include_list): + Replaced with... + (include_search_path): New global variable. + (include_path_append): Removed. + (main): Use `include_search_path.command_line_dir' to handle `-I'. + (do_file): Simplify, using new + `include_search_path.open_file_cautious'. + + * src/roff/groff/groff.cpp (print_commands): Accept file handle as + parameter. + (main): Pass arguments to `-I' to both troff and devices. + Improve handling of `-V'. + * src/roff/groff/groff.man: Document changes to -I and -V. + + * src/roff/troff/input.cpp (include_search_path): New global + variable. + (next_file, source, ps_bbox_request, transparent_file, + process_input_file): Use new + `include_search_path.open_file_cautious'. + (main) Handle `-I' switch. + * src/roff/troff/node.cpp (troff_output_file::really_copy_file): + Use new `include_search_path.open_file_cautious'. + * src/roff/troff/node.h: New extern symbol `include_search_path'. + * src/roff/troff/troff.man: Document new `-I' switch. + +2003-09-15 Ruslan Ermilov <ru@FreeBSD.org> + + Support multiple calls of .Lb in LIBRARY section. + + * tmac/doc-common (doc-in-library-section): New register. + (doc-section-library): New string. + (Sh): Set `doc-in-library-section'. + (Rd): Updated. + * tmac/doc-syms (Lb): Insert breaks before and after arguments + if in LIBRARY section. + * tmac/doc.tmac (doc-save-global-vars): Updated. + * NEWS, tmac/groff_mdoc.man: Updated. + +2003-09-14 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/doc-common (doc-default-operating-system): New variable. + (Os): Use it. + +2003-09-08 Werner LEMBERG <wl@gnu.org> + + * tmac/doc.tmac (doc-reset-reference): Handle data for `%I' also. + +2003-08-31 Werner LEMBERG <wl@gnu.org> + + * Makefile.comm: Use `test ... ||' in favor of `if test ...; then'. + (install_dev, uninstall_dev): Check whether $(DEVSCRIPTS) and + $(DEVFILES) are not empty. + * Makefile.in: Use `test ... ||' in favor of `if test ...; then'. + +2003-08-23 Stephen Gildea <http://www.gildea.com/stephen> + + * src/preproc/refer/ref.cpp (reference::compute_sort_key): Always + insert SORT_SEP. With certain combinations of sort specifications, + refer sorted entries in the wrong order. In particular, entries + with a missing field should be sorted before all entries that + have that field, before refer looks to the next field. + +2003-08-23 Werner LEMBERG <wl@gnu.org> + + * src/utils/pfbtops/Makefile.sub (LINK.c): Define it so that the + g++ linker is used. Reported by Mark J. Reed + <mark.reed@turner.com>. + +2003-08-16 Heinz-Jrgen Oertel <hj.oertel@surfeu.de> + + Add key character `x' to tbl which makes tbl call a user-defined + macro on a table cell. + + * src/preproc/tbl/table.h (entry_modifier): Add `macro'. + * src/preproc/tbl/table.cpp (block_entry::do_divert): Call + `set_modifier' after printing the compatibility request. + (set_modifier): Print call to `m->macro' if not empty. + * src/preproc/tbl/main.cpp (entry_format::debug_print): Handle + `macro'. + (process_format): Implement cases `x' and `X'. + * src/preproc/tbl/tbl.man, NEWS: Updated. + +2003-08-15 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Minor fixes. + +2003-08-09 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac [cR]: Fix redefinition of `bp'. + +2003-08-07 Werner LEMBERG <wl@gnu.org> + + * doc/Makefile.sub: Not all shells expand wildcards in the `for' + argument list to nothing if there is no file to match. Use `ls' as + a protection, similar to autoconf. + + * Makefile.comm (install_dev, uninstall_dev): Protect `for' against + empty argument lists. + + * doc/groff.texinfo: Improve documentation how vertical spacing + and line breaks interact. + Other minor fixes. + + * tmac/www.tmac: Initialize `www-htmlimage-gap'. + +2003-08-03 Werner LEMBERG <wl@gnu.org> + + * NEWS, src/devices/grops/grops.man: -b16 is necessary to produce + EPS (using eps2eps or similar programs to compute the bounding box). + +2003-07-24 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Use the new @/ command to avoid overlong lines. + * doc/texinfo.tex: Updated from texinfo 4.6. + * README.CVS: From now on we need texinfo 4.6. + +2003-07-23 Werner LEMBERG <wl@gnu.org> + + Add requests `dei1' and `ami1' for completeness. + + * src/roff/troff/input.cc (calling_mode): Remove + CALLING_DISABLE_COMP. + (comp_mode): New enumeration. + (do_define_string, define_string, define_nocomp_string, + append_string, append_nocomp_string): Updated. + (do_define_macro): Add third parameter. + (define_macro, define_nocomp_macro, define_indirect_macro, + append_macro, append_nocomp_macro, append_indirect_macro): Updated. + (define_indirect_nocomp_macro, append_indirect_nocomp_macro): New + functions. + (ignore): Updated. + (init_input_requests): Add `dei1' and `ami1'. + + * tmac/trace.tmac: Handle de1 and am1. + (de): Improve tracing message. + (am): Add missing `do'. + (return): Use de1. + + * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo: + Document new requests. + +2003-07-22 Heinz-Jrgen Oertel <hj.oertel@surfeu.de> + + Add option -G to .MPIMG to insert a gap between text and the image. + + * tmac/www.tmac (www-finish-left-po, www-finish-right-ll, + www-finish-left-ll): Updated. + (www-image-just, www-image-gap, www-htmlimage-gap): New variables. + (MPIMG): Make option -L and -R optional. + Implement option -G. + +2003-07-22 Gaius Mulley <gaius@glam.ac.uk> + + * src/devices/grohtml/post-html.cpp + (html_printer::do_file_components): Don't use `stdout' as lvalue + since it can be a macro. + +2003-07-22 Werner LEMBERG <wl@gnu.org> + + * src/libs/libgroff/strerror.c: Include errno.h to be in sync with + the corresponding test in aclocal.m4. + +2003-07-21 Werner LEMBERG <wl@gnu.org> + + * src/preproc/html/pre-html.cpp (TRANSPARENT): Don't use colour + names but RGB values directly. Otherwise pnmtopng depends on + an external file `rgb.txt' which maps colour names to values. + +2003-07-20 Werner LEMBERG <wl@gnu.org> + + * aclocal.m4 (GROFF_SYS_ERRLIST): Include stdlib.h for MinGW. + * configure, src/include/config.hin: Regenerated. + + * src/libs/libgroff/strerror.c: Include stdlib.h for MinGW. + +2003-07-19 Werner LEMBERG <wl@gnu.org> + + * PROBLEMS: Add solution for UTF-8 problem with hyphens. + +2003-07-18 Werner LEMBERG <wl@gnu.org> + + * *.man: Switch to non-compatibility mode temporarily if GNU + syntax extensions are used in the particular man page. + + * PROBLEMS: Add solutions for SGR problems. + +2003-07-17 Werner LEMBERG <wl@gnu.org> + + Don't ignore grotty's command line options if \X'tty: sgr ...' is + used to change the drawing scheme. + + * src/devives/grotty/tty.cpp (bold_flag_option, + underline_flag_option, italic_flag_option, reverse_flag_option, + bold_underline_mode_option): New global variables. + (update_options): New function. + (tty_printer::special): Call update_options. + (main): Don't set xxx_flag but xxx_flag_option, then call + update_options. + +2003-07-14 Werner LEMBERG <wl@gnu.org> + + Make grotty emit proper Unicode box drawing characters for -Tutf8. + + * src/devices/grotty/tty.cpp (START_LINE, END_LINE): New enum + values. + (hline_char, vline_char): New global variables. + (tty_printer::tty_printer): Initialize them. + (tty_printer::draw): Emit START_LINE and END_LINE flags for both + horizontal and vertical lines. + (crossings): New global array. + (tty_printer::end_page): Use it to determine the proper crossing + character for -Tutf8. + +2003-07-12 Werner LEMBERG <wl@gnu.org> + + * doc/Makefilesub (HTMLDOCFILESALL): New macro. + (HTMLDOCFILES): Revert to `pic.html'. + (CLEANADD, install_html, uninstall_sub): Use HTMLDOCFILESALL. + +2003-07-11 Werner LEMBERG <wl@gnu.org> + + * doc/pic.ms: Improve documentation of absolute coordinates. + Document absolute positioning of pictures. + + * NEWS: Add new pic capability. + +2003-07-09 Hartmut Henkel <hartmut_henkel@gmx.de> + + * src/libs/libgroff/geometry.cpp (check_output_arc_limits): + Rewritten. + +2003-07-07 Werner LEMBERG <wl@gnu.org> + + Implement support for dashed and dotted ellipses in pic. Based on + a patch from Hartmut Henkel <hartmut_henkel@gmx.de>. + + * src/preproc/pic/common.cpp (common_output::ellipse_arc, + common_output::dashed_ellipse, common_output::dotted_ellipse): New + functions. Ellipse arcs are approximated with circle arcs. + * src/preproc/pic/common.h (common_output): Updated. + * src/preproc/pic/tex.cpp (tex_output::ellipse): Use new ellipse + functions. + * src/preproc/pic/troff.cpp (simple_output::ellipse): Ditto. + + * src/preproc/pic/TODO, src/preproc/pic/pic.man: Updated. + +2003-07-06 Werner LEMBERG <wl@gnu.org> + + Make grotty work on platforms which have unsigned char as the + default for char. Based on a patch by Thomas Klausner + <wiz@netbsd.org>. + + * src/devices/grotty/tty.cpp (schar): New typedef. + Updated calls to declare_ptable and implement_ptable. + (glyph): Use schar for back_color_idx and fore_color_idx. + (tty_printer): Use schar for curr_fore_idx and curr_back_idx. + (tty_printer::tty_color, tty_printer::tty_printer, + tty_printer::color_to_idx, tty_printer::put_color): Updated. + +2003-07-06 Ruslan Ermilov <ru@FreeBSD.org> + + * src/roff/nroff/nroff.sh: Add option -d for completeness. + * src/roff/nroff/nroff.man: Updated. + +2003-07-05 Werner LEMBERG <wl@gnu.org> + + * NEWS, tmac/groff_www.man: Updated. + * doc/Makefile.sub: Updated. + +2003-07-05 Gaius Mulley <gaius@glam.ac.uk> + + Implement support for multiple HTML output files. + + * src/preproc/html/pre-html.cpp (scanArguments): Dummy handling for + -j command line option. + + * src/devices/grohtml/post-html.cpp (job_name, multiple_files): New + global variables. + (file): New fields `new_output_file', `require_links', + `output_file_name'. + (file::file): Updated. + (files::set_file_name, files::set_links_required, + files::are_links_required, files::is_new_output_file, + files::file_name, files::next_file_name): New functions. + (header_desc): New fields `no_of_level_one_headings', + `header_filename'. + (header_desc::header_desc): Updated. + (header_desc::write_headings): Handle multiple files. + (html_printer::write_header): Save file name in which header occurs. + (html_printer::determine_header_level): Possibly split files on + level one headings. + (html_printer::do_links, html_printer::troff_tag): Updated. + (html_printer::insert_split_file, html_printer::do_job_name, + html_printer::emit_link, html_printer::write_navigation, + html_printer::do_file_components): New functions. + (html_printer::~html_printer): Handle multiple files. + (main): Handle command line option `-j'. + + * src/devices/grohtml/grohtml.man: Updated. + + * doc/Makefile.sub (pic.html), doc/Makefile.in (pic.html): New rule + which splits file. + + * tmac/www.tmac (JOBNAME): New macro. + * tmac/s.tmac (SH-NO-TAG): New macro. + (@SH): Call SH-NO-TAG. + (@NH): Updated. + +2003-07-05 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/groff_mdoc.man: Improve documentation of punctuation + characters. + +2003-07-04 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/doc.tmac (Bd): Change to doc-Li-font later. + +2003-07-03 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac [cR]: Redefine `bp' to avoid empty lines. + +2003-07-01 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/doc.tmac (doc-do-func, doc-do-func-args): Don't print a comma + after `/*' and `*/'. + Fix spacing. + (Fn, Fo): Reduce indentation in synopsis. + + * tmac/doc-common (doc-check-depth): New macro. + (doc-end-macro, Sh, Ss): Use it. + (Cd): Fix behaviour in synopsis. + (In): Make it parsed and callable. + If not in the synopsis, represent the C header file enclosed in + angle brackets. + (doc-str-Rv-std-suffix, doc-str-Rv-stds-suffix, doc-str-Rv-std0): + Use minus, not hyphen. + + * tmac/groff_mdoc.man: Updated. + +2003-07-01 Werner LEMBERG <wl@gnu.org> + + Integrated grap2graph, contributed by Eric S. Raymond. + + * contrib/grap2graph/{Makefile.sub, grap2graph.sh, grap2graph.man}: + New files. + * Makefile.in, NEWS, MANIFEST, contrib/eqn2graph.man, + contrib/pic2graph.man, src/roff/groff/groff.man: Updated. + +2003-07-01 Colin Watson <cjwatson@debian.org> + + * src/xditview/*.c: Add prototypes, fix return types, add includes. + Based on work by Fumitoshi UKAI <ukai@debian.or.jp>. + +2003-06-31 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/tty-char.tmac: Provide `lb', `rb', `lk', `rk', `lt', `rt'. + +2003-06-31 Werner LEMBERG <wl@gnu.org> + + * doc/Makefile.sub (CLEANADD): Remove all files created by + running `make groff.{pdf,dvi}'. + + * Makefile.sub (DISTCLEANFILES): Remove all non-source files from + src/xditview also. + +2003-06-30 Werner LEMBERG <wl@gnu.org> + + * Makefile.in (SHELL): Define as @SHELL@. + (mkinstalldirs): Use $(SHELL). + (MDEFINES): Add $(SHELL). + * Makefile.comm (SHELL): Removed. + +2003-06-29 Werner LEMBERG <wl@gnu.org> + + * tmac/s.tmac (De, Ds): New aliases for .DE and .DS, respectively. + The X11 documentation files use them. + * tmac/groff_ms.man, doc/groff.texinfo: Document them. + +2003-06-15 Robert Goulding <goulding@Princeton.EDU> + + * tmac/e.tmac (@C): Handle .ad also. + +2003-06-12 Werner LEMBERG <wl@gnu.org> + + * src/preproc/tbl/tbl.man: Document formatting of text blocks. + + * src/roff/troff/input.cc (token::next) <handle_escape_char>: + Assign `n' even here. It is possible to construct a node + immediately following an escape character: + + .di xx + \?\\\?a + .br + .di + .xx + +2003-06-10 Werner LEMBERG <wl@gnu.org> + + * README.WIN32: Removed. + * MANIFEST: Updated. + +2003-06-07 Werner LEMBERG <wl@gnu.org> + + * src/roff/nroff/nroff.sh: Don't emit SGR for option -u. + +2003-06-05 Werner LEMBERG <wl@gnu.org> + + * src/preproc/pic/pic.y <sprintf_args>: Implement workaround for bug + in Compaq C++ V6.5-033 for Compaq Tru64 UNIX V5.1A (Rev. 1885). + +2003-06-03 Werner LEMBERG <wl@gnu.org> + + * src/preproc/grn/hdb.cpp (DBRead): Don't close file handle; this + is done by the calling function. + +2003-05-22 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/X.tmac: Fix definition of `em'. + +2003-05-22 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc (return_macro_request): Fix detection of + argument. + +2003-05-18 Werner LEMBERG <wl@gnu.org> + + * tmac/doc.tmac (doc-tag-list): Force horizontal mode after tag + to make items work which consist only of a tag. + +2003-05-17 Werner LEMBERG <wl@gnu.org> + + * tmac/doc.tmac (doc-tag-list): Don't use \Z to assure that spaces + aren't stretched in a tag (this can fail with unformatted boxes). + Instead, insert a break and go back one line. + +2003-05-16 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc (return_macro_request): If called with + argument pop macro twice. We need this to trace `return'. + + * tmac/trace.tmac: Handle `return'. + Fix typos. + + * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo: + Document. + +2003-05-15 Larry Kollar <kollar@alltel.net> + + * tmac/groff_ms.man, doc/groff.texinfo: Improve documentation of + registers `FPS', `FVS', and `FPD'. + +2003-05-15 Werner LEMBERG <wl@gnu.org> + + * src/utils/pfbtops/pfbtops.c (get_text): Handle loop counter + correctly. + +2003-05-03 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/groff_mdoc.man: Slight improvements. + +2003-05-03 Werner LEMBERG <wl@gnu.org> + + * tmac/doc-common (doc-header): Emit vertical space of 1v instead of + `doc-header-space' after header line if register `cR' is set. + +2003-05-02 Werner LEMBERG <wl@gnu.org> + + * TODO: Updated. + +2003-05-01 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/doc-common (Nd): Use \[em]. + +2003-05-01 Werner LEMBERG <wl@gnu.org> + + * tmac/doc-ditroff, tmac/doc-nroff (doc-header-space, + doc-footer-space): Initialize to 0.5i. + (doc-setup-page-layout): Don't set doc-header-space and + doc-footer-space. + +2003-04-30 Werner LEMBERG <wl@gnu.org> + + * REVISION: Set to 1. + + * doc/pic.ms: Document possible problems with `figname'. + +2003-04-29 Werner LEMBERG <wl@gnu.org> + +Version 1.19 released +===================== + + * VERSION: Set to 1.19. + * REVISION: Set to 0. + * doc/groff.texinfo, doc/webpage.ms, NEWS: Updated. + + * src/devices/grohtml/post-html.cpp (html_printer::~html_printer): + Define charset as `US-ASCII' in html output. + + * tmac/www.tmac (ULE): Add missing scaling indicator. + + * win32-diffs: Removed. + +2003-04-28 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Document `dn' and `dl' registers if used with + `.da' and `.boxa'. + Document how to insert discardable whitespace with `.ss'. + +2003-04-27 Werner LEMBERG <wl@gnu.org> + + * src/preproc/pic/tex.cpp (tex_output::start_picture): Make code + work with plain TeX also. + + * src/preproc/pic/pic.man, doc/pic.ms: Fix TeX code example. + +2003-04-25 Gaius Mulley <gaius@glam.ac.uk> + + * src/devices/grohtml/post-html.cpp (html_printer::~html_printer): + Use a loose DTD. + +2003-04-24 Werner LEMBERG <wl@gnu.org> + + * src/preproc/pic/pic.man, doc/pic.ms: Explain how to get a + vbox with positive height and zero depth if in TeX mode. + + * NEWS: Document glyph name changes for grodvi and grolj4. + +2003-04-23 Werner LEMBERG <wl@gnu.org> + + * src/preproc/pic/tex.cpp (tex_output::start_picture): Fix TeX code. + * doc/pic.ms: Fixed. + +2003-04-21 Werner LEMBERG <wl@gnu.org> + + HP-UX 10.20 has `snprintf' but it isn't declared. + + * configure.ac: Add declaration test for snprintf. + * configure: Regenerated. + * src/include/lib.h: Handle `NEED_DECLARATION_SNPRINTF'. + * src/include/config.hin: Regenerated. + +2003-04-19 Werner LEMBERG <wl@gnu.org> + + Add keyword `figname' to pic, specifying the name of the picture + box in TeX mode. Based on a patch from William J Poser + <wjposer@unagi.cis.upenn.edu>. + + * src/preproc/pic/pic.y: New token `FIGNAME'. + (macro_name): New rule of type <str>. + (placeless_element): Handle `FIGNAME'. + * src/preproc/pic/lex.cpp (lookup_keyword): Add `figname'. + * src/preproc/pic/main.cpp (graphname): New global variable. + (do_picture): Initialize `graphname'. + * src/preproc/pic/pic.h: Updated. + * src/preproc/pic/tex.cpp (tex_output::start_picture): Use + `graphname'. + Simplify TeX code. + (tex_output::text): Beautify output. + * src/preproc/pic/object.cpp (object_spec::~object_spec): Deallocate + `shaded' and `outlined' unconditionally. + * NEWS, src/preproc/pic/pic.man, doc/pic.ms: Updated. + Minor improvements. + + * PROBLEMS, README.CVS: Mention that bison version 1.875b or + greater is necessary. + +2003-04-17 Hartmut Henkel <hartmut_henkel@gmx.de> + + Add option -r to soelim to avoid emission of `.lf' lines. + Add option -t to produces TeX comment lines instead of `.lf' lines. + + * src/preproc/soelim/soelim.cpp: New global variables `raw_flag' + and `tex_flag'. + (usage): Updated. + (main): Handle `-r' and `-t'. + (set_location): Handle `raw_flag' and `tex_flag'. + * src/preproc/soelim/soelim.man, NEWS: Updated. + +2003-04-17 Werner LEMBERG <wl@gnu.org> + + * tmac/hyphenex.sh: Replaced with... + * tmac/hyphenex.pl: This perl script to avoid sed compatibility + nightmares. + + * aclocal.m4 (GROFF_HTML_PROGRAMS): Emit useful warning message + if --quiet is used for the configure script. + * configure: Regenerated. + +2003-04-16 Werner LEMBERG <wl@gnu.org> + + * src/devices/grohtml/post-html.cpp (text_glob::text_glob): + Add `const' to second argument. + (html_printer::add_table_end): Add `const' to argument. + * src/devices/grohtml/html-text.cpp (html_text::issue_tag): Add + `const' to arguments. + * src/devices/grohtml/html-text.h: Updated. + + * src/devices/grolbp/charset.h (symset): Use `unsigned char'. + * src/devices/grolbp/lbp.h (lbpputc): Use `unsigned char' for + argument. + + * src/devices/grotty/tty.cpp (tty_printer::make_rgb_string): Use + cast for integer constant. + + * src/preproc/html/pre-html.cpp (image_device): Use `const'. + (writeNbytes): Add `const' to first argument. + (writeString): Add `const' to argument. + (char_buffer::can_see): Add `const' to third argument. + * src/preproc/html/pushback.cpp (pushBackBuffer::isString): Add + `const' to argument. + * src/preproc/html/pushback.h: Updated. + + * src/preproc/soelim/soelim.cpp (include_list): Add `const'. + (include_path_append): Add `const' to argument. + (do_file): Updated. + + * src/roff/troff/uniglyph.cpp (unicode_to_glyph_list): Use `const' + for `value'. + (unicode_to_glyph_init::unicode_to_glyph_init): Updated. + * src/roff/troff/uniuni.cpp (unicode_decompose_list): Use `const' + for `value'. + (unicode_decompose_init::unicode_decompose_init): Updated. + * src/roff/troff/glyphuni.cpp (glyph_to_unicode_list): Use `const' + for `value'. + (glyph_to_unicode_init::glyph_to_unicode_init): Updated. + * src/roff/troff/input.cc (process_startup_file): Add `const' to + argument. + + * tmac/hyphenex.sh: Make script more portable by using a here + document. + +2003-04-15 Werner LEMBERG <wl@gnu.org> + + Renamed all `*.cc' files to `*.cpp'. + Updated all configuration files, makefiles, and documentation. + +2003-04-14 Werner LEMBERG <wl@gnu.org> + + * tmac/hyphenex.sh: Slight improvements. + +2003-04-13 Werner LEMBERG <wl@gnu.org> + + * font/devascii/R.proto, font/devcp1037/R.proto, + font/devlatin1/R.proto, font/devutf8/R.proto: Fill up remaining + character slots with unnamed glyphs. + + * tmac/an-old.tmac: Fix hyphenation value if `cR' is active. + (an-first): New global variable. + (an-header): Emit vertical space between multiple man pages. + +2003-04-11 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo, man/groff_out.man: \S only accepts integer + values. + +2003-04-10 Werner LEMBERG <wl@gnu.org> + + * PROBLEMS: Revised. + +2003-04-10 Bernd Warken <bwarken@mayn.de> + + * doc/webpage.ms: Improved. + +2003-04-09 Werner LEMBERG <wl@gnu.org> + + Add register \n[.height] which returns the value of \H. + Add register \n[.slant] which returns the value of \S. + + * src/roff/troff/env.cc (init_env_requests): Implement. + * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo: + Document. + +2003-04-08 Werner LEMBERG <wl@gnu.org> + + * tmac/html.tmac: Move some of the data into html-end.tmac. + Remove most of the character translations for eqn since html fonts + now cover those characters. + Load www.tmac. + * tmac/html-end.tmac: New file. + * tmac/troffrc: Load html.tmac not www.tmac for -Thtml. + * tmac/troffrc-end: Load html-end.tmac not html.tmac for -Thtml. + * tmac/Makefile.sub (NORMALFILES): Add html-end.tmac. + +2003-04-07 Werner LEMBERG <wl@gnu.org> + + * man/groff_out.man: Document negative values of `N' if -Thtml is + used. + +2003-04-06 Werner LEMBERG <wl@gnu.org> + + * Makefile.comm (depend.temp): Check location of YTABC. + +2003-04-05 Maciej W. Rozycki <macro@ds2.pg.gda.pl> + + * doc/Makefile.in (TROFFBIN): New variable for troff + binary path. + (GROFFBIN): New variable for groff binary path. + (groff_bin_path): Rename to GROFF_BIN_PATH. + (TROFF): Use TROFFBIN. + (GROFF): Use GROFFBIN and GROFF_BIN_PATH. + * doc/Makefile.sub (GROFFBIN): New variable for groff + binary path. + (groff_bin_path): Rename to GROFF_BIN_PATH. + (GROFF): Use GROFFBIN and GROFF_BIN_PATH. + + * Makefile.comm (install_dev): Install scripts from DEVSCRIPTS + with INSTALL_SCRIPT. + (uninstall_dev): Uninstall scripts from DEVSCRIPTS. + * Makefile.dev (all): Depend on DEVSCRIPTS. + (install_dev): Likewise. + * font/devdvi/Makefile.sub (DEVSCRIPTS): New variable to hold + scripts. + * font/devps/Makefile.sub (DEVSCRIPTS): Likewise. + (DEVGENSCRIPTS): New variable to hold generated scripts. + +2003-04-05 Werner LEMBERG <wl@gnu.org> + + * src/libs/libdriver/input.cc (IntArray::operator[], + IntArray::get_data): Remove meaningless `const' in return value. + + * README.CVS: New file. + +2003-04-04 Werner LEMBERG <wl@gnu.org> + + Check for stdint.h in C++, not in C. + + * aclocal.m4 (GROFF_STDINT_H): New function, + * configure.ac: Check for stdint.h with GROFF_STDINT_H instead of + AC_CHECK_HEADERS. + * configure, src/include/config.hin: Regenerated. + * src/libs/libgroff/tmpname.cc: Use HAVE_CC_STDINT_H. + + + Fix handling of in grohtml. To do this, troff emits `N' + with a negative value, representing the width of the unbreakable + space (only for -Thtml). grohtml then converts this back to + and uses the value of N as its width. + + * src/roff/troff/node.cc (space_char_hmotion_node::tprint, + unbreakable_space_node::tprint): Emit `N-<width>'. + * src/include/printer.h (printer::set_numbered_char): Make it + virtual. + Make members `font_table' and `nfonts' protected instead of private. + * src/devices/grohtml/post-html.cc + (html_printer::set_numbered_char): New member function. + + + * src/libs/libgroff/maxfilename.cc: + s/HAVE_LIMITS_H/HAVE_CC_LIMITS_H/. + + * src/roff/troff/node.cc (unbreakable_space_node::tprint): Don't + emit word marker. + +2003-04-03 Sergey A. Osokin <osa@freebsd.org.ru> + + * man/roff.man: Small fixes. + +2003-04-03 Werner LEMBERG <wl@gnu.org> + + Make groff independent from locale's numeric settings. + + * configure.ac: Check for `setlocale'. + * configure, src/include/config.hin: Regenerated. + + * src/include/lib.h: Handle HAVE_SETLOCALE. + + * src/devices/grodvi/dvi.cc (main), src/devices/grolj4/lj4.cc + (main), src/devices/grops/ps.cc (main), src/preproc/grn/main.cc + (main), src/preproc/pic/main.cc (main): Call `setlocale'. + + + * doc/groff.texinfo: Change dir category to `Typesetting'. + (Man font macros): Mention that there is no space between arguments + of .BI and friends. + + * src/libs/libdriver/printer.cc, src/devices/grotty/tty.cc + (*printer::change_color, *printer::change_fill_color): Add missing + `const'. + +2003-04-02 Werner LEMBERG <wl@gnu.org> + + * src/devices/grohtml/html-table.cc (html_table::emit_col, + html_table::is_gap): Compute table widths after converting border + positions to avoid rounding errors. + +2003-04-01 Werner LEMBERG <wl@gnu.org> + + * src/devices/grohtml/html-text.cc (html_text::do_space): Handle + `space_emitted' properly. + +2003-03-31 Werner LEMBERG <wl@gnu.org> + + * src/devices/grohtml/html-table.cc: Fix column width calculation. + (html_table::set_linelength): Don't add 1. + (html_table::add_indent): Don't subtract 1. + + * tmac/html.tmac: Set default page offset to zero. + +2003-03-30 Werner LEMBERG <wl@gnu.org> + + Make groff emit ` ' for `\ ' and `\~' if `-Thtml' is used. + + * src/roff/troff/node.cc (space_char_hmotion_node::tprint, + unbreakable_space_node::tprint): New functions. + (troff_output_file): Make space_char_hmotion_mode::tprint and + unbreakable_space_node::tprint to friends. + * src/roff/troff/node.h: Updated. + + * font/devhtml/R.proto: Add ` ' at position 0xA0 (as defined + in the HTML standard). + +2003-03-29 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/env.cc (point_size): Fix emission of html tag. + Otherwise, the following code + + .di xxx + .ps 10 + a + .br + .di + x\*[xxx] + + produces `x a' instead of `xa'. This is a temporary fix, disabling + font changes in diversions for -Thtml. + + * tmac/an-old.tmac (TH, SH): Use `HTML-TAG-NS' instead of + `HTML-TAG'. + (an-do-tag-html): Merge with ... + (an-do-tag): This macro. + Change code slightly to circumvent grohtml bug. + * tmac/troffrc-end: Define dummy for HTML-TAG-NS. + + * src/devices/grohtml/html-table.cc (html_table::emit_col, + html_table::is_gap): Round `width' properly. + + * tmac/html.tmac: Provide some default layout parameters for + grohtml. + + * font/devhtml/DESC.proto: Don't use discrete values for `sizes' + command. + +2003-03-28 Werner LEMBERG <wl@gnu.org> + + src/devices/grops/ps.cc (ps_printer::do_import): Fix error message. + +2003-03-27 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac (BT): Don't call .tl if register `ps4html' is + defined. + +2003-03-20 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/env.cc (vertical_spacing): Allow zero value for + `.vs'. + * doc/groff.texinfo: Updated. + +2003-03-19 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc (process_input_stack) <TOKEN_BEGIN_TRAP, + TOKEN_END_TRAP>: Reset `have_input'. + +2003-03-18 Werner LEMBERG <wl@gnu.org> + + * src/roff/groff/groff.man: Mention groff_trace man page. + +2003-03-16 Werner LEMBERG <wl@gnu.org> + + * Makefile.in (LIBEXT): New variable to indicate the file extension + of library files. Computed heuristically from $(OBJEXT). + (MDEFINES): Add $(LIBEXT). + * Makefile.lib, Makefile.comm: Use it. + + * src/utils/pfbtops/pfbtops.c (get_text): New function. Split + overlong lines into smaller chunks. + (get_binary): New function. + (main): Use them. + * src/utils/pfbtops/pfbtops.man: Updated. + +2003-03-15 Colin Watson <cjwatson@debian.org> + + * src/roff/groff/groff.man: Minor syntax fix. + +2003-03-14 Egil Kvaleberg <egil@kvaleberg.no> + + * src/devices/grops/ps.cc (ps_printer::media_set, + ps_printer::~ps_printer): Handle zero paper width and length. + +2003-03-13 Werner LEMBERG <wl@gnu.org> + + Add options -p and -l to grodvi. + + * src/devices/grodvi/dvi.cc: Include paper.h. + (landscape_flag, user_paper_length, user_paper_width): New global + variables. + (dvi_printer::begin_page): Emit `papersize' special. + Set color after initialization of `cur_h' and `cur_v'. + (main): Add options `-l' and `-p'. + * font/devdvi/Makefile.sub (DESC): Set `papersize'. + * src/devices/grodvi/grodvi.man, NEWS: Updated. + + * src/devices/grops/psrm.cc (valid_input_table): Fixed. + +2003-03-12 Werner LEMBERG <wl@gnu.org> + + * src/devices/grops/grops.man: Move documentation of .PSPIC to... + * man/groff_tmac.man: This man page. + * man/groff_font.man: Declare `paperwidth' and `paperlength' as + deprecated. + + * tmac/X.tmac: Don't load pspic.tmac. + +2003-03-11 Werner LEMBERG <wl@gnu.org> + + Make variable `pr' local to libdriver/input.cc. Based on a patch + by Bernd Warken <bwarken@mayn.de>. + + * src/include/driver.h (pr): Removed. + + * src/libs/libdriver/input.cc (pr): New global variable. + (do_file): Deallocate `pr'. + * src/libs/libdriver/printer.cc (pr): Removed. + + * src/devices/grodvi/dvi.cc (main), src/devices/grohtml/post-html.cc + (main), src/devices/grolbp/lbp.cc (main), src/devices/grolj4/lj4.cc + (main), src/devices/grops/ps.cc (main), src/devices/grotty/tty.cc + (main): Don't delete `pr'. + +2003-03-10 Werner LEMBERG <wl@gnu.org> + + * tmac/a4.tmac, tmac/composite.tmac: Use `.do'. + * tmac/papersize.tmac: New file. + * tmac/troffrc: Include `papersize.tmac'. + * tmac/Makefile.sub (NORMALFILES): Add `papersize.tmac'. + * tmac/an-old.tmac: Set LT to LL by default. + + * NEWS, MANIFEST, tmac/groff_man.man, man/groff_tmac.man, + doc/groff.texinfo: Updated. + + * src/libs/libgroff/paper.cc (add_iso_paper): Fix very embarrassing + bug which caused all odd iso papers to have wrong dimensions. + + * src/devices/grops/ps.cc (user_paper_width): New global variable. + (main) <'p'>: Set `user_paper_width' also. + (ps_printer::media_width, ps_printer::media_height): Use values + given with option `-p'. + +2003-03-09 Werner LEMBERG <wl@gnu.org> + + * src/include/nonposix.h: Provide default for SET_BINARY. + + * src/devices/grodvi/dvi.cc, src/devices/grolbp/lbp.cc, + src/devices/grolj4/lj4.cc, src/devices/grops/ps.cc: Call SET_BINARY + unconditionally. + + * src/utils/pfbtops/pfbtops.c: Call SET_BINARY unconditionally. + (main): Treat \r\n as \n. + +2003-03-08 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac: Use register `HY' to control hyphenation. + * NEWS, tmac/groff_man.man, doc/groff.texinfo: Document it. + +2003-03-07 Werner LEMBERG <wl@gnu.org> + + Added support to access more than 256 glyphs in Type 1 fonts. + + * src/devices/grops/ps.cc (subencoding): New structure. + (style): Add `sub' field. + Updated all users. + (ps_printer): Add `subencodings' and `next_subencoding_index' fields. + Add `set_subencoding', `get_subfont' and `encode_subfont' member + functions. + Updated all users. + (ps_printer::set_char): Use `set_subencoding'. + (make_subencoding_name): New function. + (ps_printer::set_style): Handle case where `sty.sub' is not zero. + (ps_printer::~ps_printer): Emit subencoding definitions. + + * src/devices/grops/psrm.cc (valid_input_table): New array to + properly support EBCDIC. + (white_space): Add `\f'. + (ps_get_line): Change first argument to be of type `string &'. + Updated all callers. + This allows to get lines of arbitrary length. + Use `valid_input_table'. + Remove warning about non-conforming PS line length. This seems + not to be of great importance -- for example, dvips don't emit + a warning either. + (PS_LINE_MAX): Removed. + (matches_comment): Change first argument to be of type `string &'. + + * src/devices/grops/grops.man, src/devices/grops/TODO: Updated. + + * src/utils/afmtodit/afmtodit.pl (%unicode_decomposed, + %AGL_to_unicode, %default_ligatures): New hash tables. + Read all map entries. + Add unencoded characters. + Check for default ligatures if there are no `L' entries. + Print all kern entries. + Print all characters in charset. + * src/utils/afmtodit/afmtodit.man: Updated. + + * font/devps/*: Regerated all fonts. + + * tmac/latin[129].tmac, tmac/cp1047.tmac: Don't test for existence + of characters, just use `.trin'. Otherwise the mapping depends + on the font encoding. + * tmac/ps.tmac: Add `fi' and `fl'. + Improve `Fi' and `Fl'. + * tmac/X.tmac, tmac/lbp.tmac, tmac/tty.tmac: Improve `Fi' and `Fl'. + * tmac/Xps.tmac: Fix `em'. + + * NEWS: Updated. + +2003-03-04 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc (charinfo_to_node_list): Reset + `have_input'. + +2003-03-03 Werner LEMBERG <wl@gnu.org> + + * Makefile.sub (DISTCLEANFILES): Add gxditview._man. + + * font/devps/generate/textmap: Remove entry `similarequal'. + * font/devps/symbolmap: Updated. + +2003-03-02 Werner LEMBERG <wl@gnu.org> + + * src/libs/libgroff/font.cc (font::load): Fix error message for + bad character type. + + * src/devices/grops/grops.man: Improve documentation of the -b + flag. + + * tmac/tty.tmac: Load latin1.tmac for all TTY devices except + `ascii' and `cp1047'. + +2003-03-01 Werner LEMBERG <wl@gnu.org> + + Document composite glyphs and the `composite' request. + + * man/groff.man, man/groff_diff.man, doc/groff.texinfo: Do it. + +2003-02-28 Werner LEMBERG <wl@gnu.org> + + * font/devdvi/generate/ec.map: Add some more Unicode entities. + * font/devdvi/*EC: Updated. + + * tmac/composite.tmac, tmac/latin2.tmac, tmac/latin9.tmac: New files. + * tmac/latin1 (latin1-tr): Undo any previous mapping. + * tmac/troffrc: Load `composite.tmac'. + * tmac/Makefile.sub (NORMALFILES): Updated. + + * doc/groff.texinfo (Input Encodings): New section. + * NEWS: Updated. + +2003-02-27 Werner LEMBERG <wl@gnu.org> + + * doc/texinfo.tex: New version 2003-02-11.06. + + * tmac/doc-common (Dt): Don't emit warning for unknown section. + * tmac/groff_mdoc.man: Fix description of `Dt'. + +2003-02-26 Egil Kvaleberg <egil@kvaleberg.no> + + * font/devps/prologue.ps: Fix for included Postscript that does + a setpagedevice -- which is now safely ignored. + + * NEWS: Updated. + + * src/devices/grops/ps.cc: Now sets the page size in the generated + document. This is done in two ways: Via a %%-comment for gv and + the like, and via a PageSize and setpagedevice for programs that + understands Postscript proper, like ps2pdf. + + * src/devices/grops/ps.h: New broken-flag to avoid page size + definition, if required. + + * src/devices/grops/grops.man: New broken-flag 16 mentioned. + + * doc/Makefile.in: Added -nosetpage flag (via @pnmtops_nosetpage@). + Not really necessary due to the fix in prologue.ps, but cleaner: + Such information does not belong in an .eps file. + + * doc/Makefile.sub: See doc/Makefile.in. + +2003-02-26 Ralph Corderoy <ralph@inputplus.co.uk> + + * aclocal.m4 (GROFF_PNMTOPS_NOSETPAGE): Use P2 format for testing + instead of P1 since the latter is broken in some versions of netpbm. + * configure: Updated. + +2003-02-26 Larry Kollar <kollar@alltel.net> + + Make man pages more customizable. + + * tmac/an-old.tmac (FT): New register holding footer distance from + bottom. + (HF): New string holding the default heading font. + (TH): Handle registers `IN' and `SN' set on the command line. + Use `FT'. + (PT, BT): New strings to customize header and footer lines. + (an-header, an-footer): Use them. + (SH, SS): Use `HF'. + * tmac/groff_man.man: Document changes. + + * doc/groff.texinfo: Document man changes. + Document Ultrix extensions of man. + +2003-02-26 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc (do_width, do_if_request): Reset + `have_input' after changing back to old environment. + + * src/devices/grolbp/lbp.cc (lbp_printer::set_line_thickness): Move + function up to be defined before first call. This is necessary to + avoid a compilation problem with Sun's WorkShop 6 C++ compiler. + + * src/utils/afmtodit/afmtodit.pl: Make script search for files in + the default font directory also. Based on a patch from James + J. Ramsey <jjramsey_6x9eq42@yahoo.com>. + * src/utils/afmtodit/Makefile.sub (afmtodit): Handle @FONTDIR@. + * src/utils/afmtodit/afmtodit.man: Document it. + + * NEWS: Updated. + + * tmac/groff_man.man, doc/groff.texinfo: Many minor fixes. + +2003-02-25 Gaius Mulley <gaius@glam.ac.uk> + + * aclocal.m4 (GROFF_HTML_PROGRAMS): Add test for pnmtops. + (GROFF_PNMTOPS_NOSETPAGE): New macro. + * configure.ac: Use it. + * configure: Regenerated. + * Makefile.in: Updated. + + * tmac/Makefile.sub (NORMALFILES): Remove www.tmac. + (CLEANADD): Add www.tmac-sed. + (pnmtops_nosetpage): Define default. + (install_data): Handle www.tmac-sed and substitute + @PNMTOPS_NOSETPAGE@. + (stamp-sed): Add www.tmac. + * tmac/www.tmac: Rewritten, based on a patch by Bernd Warken. + It now breaks URLs at suitable places. + (www:substring_ok): New register set by... + (www:@test_substring): New macro. + (www:error): New alias to www-error. + (www:lenstr, www:splitstr, www:url_breaks, www:url_breaks_splitted): + New macros. + (URL): Use www:url_breaks. + (PIMG, MPIMG): Use @PNMTOPS_NOSETPAGE@. + (CDS, CDE): New macros. + +2003-02-25 Werner LEMBERG <wl@gnu.org> + + * src/devices/grops/ps.cc (ps_printer::define_encoding): Avoid + buffer overflow. + +2003-02-24 Werner LEMBERG <wl@gnu.org> + + Contrary to the PCL5 Developer's Guide, the ascenders in TFM files + can be negative also. + + * src/utils/hpftodit/hpftodit.cc (char_info): `ascent' must be + `int16'. + (read_char_table): Avoid negative ascenders. + (output_charset): Add cast. + * font/devlj4/*: Regenerated. + + Replace unnamed glyphs for DVI fonts with `uXXXX' glyph names where + possible. + + * font/devdvi/generate/{tc,texttt,ec,texmi,texsy,textex}.map: Do it. + * font/devdvi/generate/textex.map: Map glyph 23 to `u21C6' instead + of `<>'. + * font/devdvi/*: Regenerated. + + Map `la' and `ra' to U+27E8 and U+27E9. These two characters have + normal width, while the previously used characters (U+2329 and + U+232A) are classified as wide due to canonical equivalence with the + CJK punctuation characters U+3008 and U+3009. + + * font/devutf8/R.proto: Updated. + * src/roff/troff/uniglyph.cc, src/roff/troff/glyphuni.cc: Ditto. + + * man/groff_char.man: Simplify handling of table traps by + introducing `start block' and `end block' macros. + (Ns, Ne, 2s, 2e, Ds, De): New macros. + (DL): Make it work with Unix troff also. + Fix code values of `la' and `ra'. + + * tmac/dvi.tmac: Define `<>' for CW and CWI. + +2003-02-23 Gaius Mulley <gaius@glam.ac.uk> + + * src/devices/grohtml/post-html.cc (element_list::~element_list): + New destructor, fixing a major memory leak. + +2003-02-22 Werner LEMBERG <wl@gnu.org> + + * font/devhtml/R.proto, font/devutf8/R.proto: Flip `*f' and `+f' + to be in conformance with Unicode 3.0 and newer. + + * font/devlj4/generate/text.map: Add `Eu'. + * font/devlj4/generate/special.map: Flip `*e' and `+e'. + * font/devlj4/S: Regenerated. + + * man/groff_char.man: Completely rewritten. + + * doc/groff.texinfo: Fix description of request and macro arguments. + +2003-02-20 Gaius Mulley <gaius@glam.ac.uk> + + Valgrind fixes. + + * src/devices/grohtml/html-table.cc (html_table::~html_table): + Deallocate `columns' list. + * src/devices/grohtml/post-html.cc (char_block::~char_block): + New destructor. + (text_glob::text_glob_html, text_glob::text_glob_special, + text_glob::text_glob_line, text_glob::text_glob_auto_image, + text_glob::text_glob_tag): Avoid memory leaks. + (text_glob::remember_table): Free memory before reassigning. + +2003-02-19 Werner LEMBERG <wl@gnu.org> + + Add glyph `+e', greek lunate epsilon symbol, and `-h' (with the + alias `hbar'), the Planck constant over two pi. + + * font/devdvi/generate/texmi.map: Use `*e' for position 15 and + `+e' for position 34. + * font/devdvi/generate/texsy.map: Replace `DI' and `HE' with + `u2662' and `u2661'. + * font/devdvi/{MI,S}: Regenerated. + * font/devhtml/R.proto, font/devutf8/R.proto: Add `+e', `-h', `hbar'. + * font/devlbp/*: Add `hbar' alias. + * font/devlj4/generate/special.map: Ditto. + * font/devlj4/S: Regenerated. + * font/devps/generate/symbolchars: Add `+e'. + * font/devps/generate/textmap: Fix PS name for `-h'. + Add `hbar' alias. + * font/devps/symbolmap: Regenerated. + + * src/devices/grops/ps.cc (transform_fill): Removed since unused. + + * src/roff/troff/glyphuni.cc (glyph_to_unicode_list): Add `+e', + `-h', `hbar'. + * src/roff/troff/uniglyph.cc (unicode_to_glyph_list): Add `+e', + `-h'. + + * tmac/X.tmac, tmac/ps.tmac: Provide definitions for `-h' and + `hbar'. + * tmac/tty-char.tmac: Add `+e'. + +2003-02-17 Werner LEMBERG <wl@gnu.org> + + Another round trying to really fix problems with `have_input'. + + * src/roff/troff/input.cc (input_stack::get): Handle `have_input'. + (token::next) <'\n'>, <\'\n'>: Don't handle `have_input'. + + * src/devices/grotty/tty.cc (tty_printer::put_color): Fix color + handling if both foreground and background colors are default. + + * doc/groff.texinfo (Debugging): Document .lf differences to + AT&T troff. + +2003-02-16 Werner LEMBERG <wl@gnu.org> + + * src/devices/grotty/tty.cc (tty_printer::make_rgb_string): Avoid + null-bytes in created string. + + * src/roff/troff/input.cc (lookup_color, interpolate_macro, + alias_macro, lookup_request): Improve warning messages. + + * src/roff/troff/node.cc (suppress_node::tprint): Use `strsave', + not `strdup'. + Free `last_image_filename'. + + * src/preproc/html/pre-html.cc (char_block::char_block): Initialize + `buffer'. + (imageList::createPage, imageList::createImage): Use `free', not + `a_delete'. + (imageItem::~imageItem): Free `imageName'. + (addRegDef): Use `strsave', not `strdup'. + (get_resolution): Free `pathp'. + +2003-02-15 Werner LEMBERG <wl@gnu.org> + + * src/devices/grotty/tty.cc (tty_printer::tty_printer): Fix pointer + to `dummy'. + +2003-02-14 Werner LEMBERG <wl@gnu.org> + + Add memory management for colors to deallocate unnamed colors + properly. + + * src/include/color.h (color): New members `free_list' and `next'. + New member functions `new' and `delete'. + Add destructor. + * src/libs/libgroff/color.cc: Implement it. + + * src/libs/libgroff/font.cc (font::add_kern): Use integer cast + for array size of new operator. + + * src/libs/libdriver/input.cc (IntArray::operator[]): Remove + redundant comparison. + + * src/roff/troff/input.cc (word_space_node::reread, + hmotion_node::reread): Avoid warning about unused parameter. + (reset_output_registers): Remove redundant parameter. + (define_color): Undo change 2003-02-12. + + * src/roff/troff/reg.h: Updated. + + * src/roff/troff/node.cc (troff_output_file::really_print_line, + output_file::put_filename, real_output_file::really_put_filename, + ascii_output_file::really_print_line, + break_char_node::get_hyphen_list): Avoid warning about unused + parameter. + (suppress_node::tprint): Updated. + + * configure.ac: Check declaration for rand() and srand(). + * configure: Regenerated. + + * src/preproc/pic/pic.h: Declare fmod(), rand(), and srand() + conditionally. + * src/preproc/pic/pic.y: Remove declaration of fmod(), rand(), + and srand(). + + * src/preproc/eqn/delim.cc (delim_table): Add missing initializers + to avoid compiler warnings. + + * src/preproc/grn/hgraph.cc (HGPrintElt): Second parameter is + unused. + + * src/devices/grops/ps.cc (ps_printer::set_char): Last parameter + is unused. + * src/devices/grops/psrm.cc (skip_possible_newline): Remove first + (unused) parameter. + Updated all callers. + + * src/devices/grotty/tty.cc (tty_printer::set_char): Last parameter + is unused. + * src/devices/grodvi/dvi.cc (dvi_printer::set_char): Ditto. + * src/devices/grolj4/lj4.cc (lj4_printer::set_char): Ditto. + + * src/devices/grohtml/post-html.cc (html_printer::emit_line): + Parameter is unused. + (html_printer::add_table_end): Define parameter conditionally. + * src/devices/grohtml/output.cc (simple_output::special): Parameter + is unused. + + * src/devices/grolbp/lbp.cc: Define _GNU_SOURCE conditionally. + (lbp_printer::set_char): Last parameter is unused. + + * src/utils/indxbib/indxbib.cc (main): Remove redundant comparison. + +2003-02-13 Werner LEMBERG <wl@gnu.org> + + New commands \D'Fr ...', \D'Fc ...', etc. for orthogonality. + Make \D'f ...' move horizontally again for backwards compatibility. + Replace it with \D'Fg ...' where appropriate to avoid dependency + on horizontal resolution. + + * src/roff/troff/input.cc (do_get_long_name): New function. + (get_long_name): Call it. + + (read_draw_node): Handle `\D'Fx ...' by calling ... + (read_color_draw_node): New function. + + (read_rgb, read_cmy, read_cmyk, read_gray): New optional argument + `end'. + Pass it to `do_get_long_name' which is used instead of + `get_long_name'. + + * src/libs/libdriver/input.cc (color_from_Df_command): Remove + unnecessary value guard. + (parse_D_command) <'f'>: Add horizontal shift. + + * src/preproc/grn/hgraph.cc (HGPrintElt) <POLYGON>: Use \D'Fg ...'. + * src/preproc/pic/troff.cc (troff_output::set_fill): Ditto. + (FILL_MAX): Removed. + + * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo: + Updated. + +2003-02-12 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cc (do_name_test, do_expr_test, + do_zero_width): Push `\n' if closing delimiter is missing. + + (token::next) <ESCAPE_NEWLINE>, <'\n'>, <\'\n'>: Reset `have_input'. + <'F'>: Make \F non-transparent at the beginning of line. + (process_input_stack) <token::TOKEN_CHAR, token::TOKEN_NEWLINE, + token::TOKEN_REQUEST, token::TOKEN_BEGIN_TRAP>: Don't handle + `have_input'. + + (define_color): Free color in case of reassignment. + + * doc/groff.texinfo (@Defesc, @DefescList, @DefescItem, + @DefescListEnd): Use @Var, not @var. + Fix all calls. + + * src/preproc/grn/hgraph.cc (HGPrintElt): Fix typo. + + * src/preproc/pic/object.cc (object_spec::~object_spec): Free + `shaded' and `outlined' arrays. + (object_spec::object_spec): Initialize `shaded' and `outlined'. + (graphic_object::set_fill_color, graphic_object::set_outline_color): + Use strsave. + (closed_object::set_fill_color): Ditto. + * src/preproc/pic/troff.cc (troff_output::set_color): Use strsave + instead of strdup. + (troff_output::reset_color): Use a_delete instead of free. + * src/preproc/pic/main.cc (do_file): Free `out' in case of error. + +2003-02-11 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Improve documentation of `ad'. + Document that \D'f...' is dependent on the horizontal resolution. + * man/groff_diff.man: Improve documentation of \D'f...'. + + * src/preproc/grn/hgraph.cc (HGPrintElt) <POLYGON>: Don't emit + compensating \h'...' for \D'f ...' since the latter no longer moves + current position. + * src/preproc/pic/troff.cc (troff_output::set_fill): Ditto. + +2003-02-10 Werner LEMBERG <wl@gnu.org> + + Improve error messages for `x F' (and `F') commands. + + * src/include/error.h: Add declaration for + `current_source_filename'. + * src/libs/libgroff/filename.cc: Add `current_source_filename'. + * src/libs/libgroff/error.cc (do_error_with_file_and_line): Add + parameter for source file string. + Updated all callers. + + * src/libs/libdriver/input.cc: Add `current_source_filename'. + (remember_source_filename): New function. + (parse_x_command <'F'>, do_file <'F'>): Use it. + +2003-02-09 Werner LEMBERG <wl@gnu.org> + + Make grotty not emit warnings about unknown colors more than + necessary. + + * src/devices/grotty/tty.cc: Include `ptable.h'. + (TTY_MAX_COLORS): Removed. + (DEFAULT_COLOR_IDX): Defined to -1. + (glyph): Change `back_color_idx' and `fore_color_idx' to `char'. + (tty_printer): Change `curr_back_idx' and `curr_fore_idx' to `char'. + Change `tty_colors' to be a ptable. + First arg of `put_color' is now `char'. + New functions `make_rgb_string' and `tty_color'. + (tty_printer::tty_printer): Use `tty_color'. + (tty_printer::color_to_idx): Return value is now `char'. + Use `tty_color'. + + * src/include/color.h (color): Add `print_color' member function. + * src/libs/libgroff/color.cc (color::print_color): Implement it. + +2003-02-08 Werner LEMBERG <wl@gnu.org> + + Valgrind fixes. + + * src/devices/grops/ps.cc (ps_printer::define_encoding): Close + encoding file. + + * src/include/ptable.h (PTABLE::~PTABLE, PTABLE::define): Always + assume that value has been allocated with `new[]', thus use + `a_delete' for deallocation. + + * src/libs/libdriver/input.cc (get_integer_arg, + get_possibly_int_args, parse_x_command, do_file): Use `a_delete' + where appropriate. + + * src/libs/libgroff/new.cc (delete) [!COOKIE_BUG]: Define. + * src/libs/libgroff/nametoindex.cc + (character_indexer::named_char_index): Use `new <type>[1]'. + + * src/preproc/eqn/lex.cc (init_table, do_definition): Use `new + <type>[1]'. + * src/preproc/eqn/text.cc (set_special_char_type): Ditto. + (split_text): Use `a_delete'. + + * src/preproc/pic/pic.y (define_label, define_variable): Use `new + <type>[1]'. + + * src/roff/troff/env.cc (environment::choose_breakpoint): Avoid + harmless memory leak. + (hyphen_trie::read_patterns_file): Initialize `buf'. + * src/roff/troff/node.cc (troff_output_file::troff_output_file): + Initialize `current_fill_color'and `current_glyph_color'. + * src/roff/troff/glyphuni.cc + (glyph_to_unicode_init::glyph_to_unicode_init): Use `new <type>[1]'. + * src/roff/troff/uniuni.cc + (unicode_decompose_init::unicode_decompose_init): Ditto. + * src/roff/troff/uniglyph.cc + (unicode_to_glyph_init::unicode_to_glyph_init): Ditto. + +2003-01-26 Werner LEMBERG <wl@gnu.org> + + * src/utils/indxbib/indxbib.cc (main) [__EMX__]: Check with + `access' before calling `unlink'. + (do_file): Handle __EMX__. + + * src/include/nonposix.h: Handle __EMX__. + + * Makefile.in (SEP): New variable; set to @PATH_SEPARATOR@. + (fontpath,tmacpath): Use it. + (MDEFINES): Add it. + Sorted alphabetically. + + * src/preproc/eqn/neqn.sh, src/roff/nroff/nroff.sh: Use + @SEP@. + * src/preproc/eqn/Makefile.sub, src/roff/nroff/Makefile.sub: Handle + @SEP@. + +2003-01-27 Werner LEMBERG <wl@gnu.org> + + * src/libs/libgroff/strcasecmp.c, src/libs/libgroff/strncasecmp.c: + New files, copied from gnulib. + * src/libs/libgroff/Makefile.sub (CSRCS): Add them. + * configure.ac: Updated. + * configure: Regenerated. + + * src/include/config.hin: Regenerated. + * src/include/lib.h [!HAVE_STRCASECMP]: Declare `strcasecmp'. + Don't define `strcasecmp' as `strcmp'. + [!HAVE_STRNCASECMP]: Declare `strncasecmp'. + Dont define `strncasecmp' as `strncmp'. + + * src/roff/groff/pipeline.c [!HAVE_STRCASECMP, !HAVE_STRNCASECMP]: + Removed. + +2003-01-26 Werner LEMBERG <wl@gnu.org> + + * src/utils/indxbib/indxbib.cc (main) [__EMX__]: Fix typo: + s/unline/unlink/. + +2003-01-25 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo (Ligatures and Kerning): Mention limitations. + +2003-01-24 Werner LEMBERG <wl@gnu.org> + + Add US-english hyphenation exceptions (converted from Barbara + Beeton's hyphenation exception log reports which appear irregularly + in TUGBoat). + + * tmac/hyphen.us: Updated to latest version. + * tmac/README: Updated. + * tmac/hyphenex.us, tmac/hyphenex.sh: New files. + * tmac/troffrc: Load `hyphenex.us'. + * tmac/Makefile.sub (NORMALFILES): Add `hyphenex.us'. + * doc/groff.texinfo: Updated. + +2003-01-23 Werner LEMBERG <wl@gnu.org> + + Improve hyphenation slightly. This is a first step in redesigning + the hyphenation algorithm to make it more flexible (e.g. allowing + kerns and ligatures between the hyphenation character and the + following character -- while not used normally in English, other + languages like German would benefit). + + * src/roff/troff/env.cc (environment::hyphenate_line): Use + assertion instead of if-clause. + Let `get_hyphen_list' return the number of involved characters in + the hyphenation pattern instead of computing it directly (which + often yields too small values). + * src/roff/troff/node.h (*::get_hyphen_list): Add second parameter. + * src/roff/troff/node.cc (*::get_hyphen_list): Handle new second + parameter. + +2003-01-22 Werner LEMBERG <wl@gnu.org> + + Fixing a bug which caused groff to hang if the hyphenation exception + dictionary tried to grow. + + * src/roff/troff/env.cc (hyphen_trie::insert_hyphenation, + hyphen_trie::read_patterns_file, do_hyphenation_patterns_file): Use + pointer to dictionary. + +2003-01-20 Werner LEMBERG <wl@gnu.org> + + * src/utils/afmtodit/afmtodit.pl: Add switch `-m' to suppress + negative left italic correction. + * src/utils/afmtodit/afmtodit.man: Document it. + + * font/devps/generate/Makefile (RFLAG): Add `-m'. + * font/devps/{AB,AR,BMB,BMR,CB,CR,EURO,HB,HR,HNB,HNR,NB,NR,PB,PR, + S,TB,TR,ZD,ZDR}: Regenerated with afmtodit options `-i 0 -m'. + + * NEWS: Updated. + +2003-01-16 Werner LEMBERG <wl@gnu.org> + + * NEWS: Updated. + +2003-01-16 Jrgen Grahn <jgrahn@algonet.se> + + * src/preproc/refer/refer.man: Mention REFER environment variable. + +2003-01-05 Werner LEMBERG <wl@gnu.org> + + Similar to \[is], the square root glyph (\[sr]) and the square root + extension glyph (\[radicalex]) are now text symbols. The new + mathematical versions are called \[sqrt] and \[sqrtex], + respectively. + + * font/devX*/S: Regenerated. + * font/devdvi/generate/texex.map: Rename `sr[0123]' to `sqrt[0123]'. + * font/devdvi/generate/texsy.map: Rename `sr' to `sqrt'. + * font/devdvi/EX, font/devdvi/S: Regenerated. + * font/devhtml/R.proto, font/devutf8/R.proto: Add `sqrt'. + * font/devlj4/generate/special.map: Add `sqrt'. + * font/devlj4/S: Regenerated. + * font/devps/generate/textmap: Add `sqrt'. + * font/devps/S, font/devps/symbolmap: Regenerated. + + * src/preproc/eqn/sqrt.cc (SQRT_CHAR, RADICAL_EXTENSION_CHAR, + SQRT_CHAIN, BAR_CHAIN): Use `sqrt*' and `sqrtex*'. + * src/roff/troff/input.cc (init_charset_table): Make `sqrtex' + overlap horizontally. + + * tmac/X.tmac, tmac/ps.tmac, tmac/lj4.tmac: Add `sqrtex'. + * tmac/dvi.tmac: Add `sr', and `sqrtex'. + Fix `radicalex'. + + * doc/groff.texinfo, man/groff_diff.man: Document that `radicalex' + and `sqrtex' are overlapping glyphs. + +2003-01-04 Werner LEMBERG <wl@gnu.org> + + * font/devdvi/generate/texsy.map: Add `is'. + * font/devps/symbolmap: Regenerated. + * font/devdvi/*TC, MI, S: Regenerated. + + * tmac/dvi.tmac: Remove `is'. + +2003-01-03 Werner LEMBERG <wl@gnu.org> + + `is' is now a text symbol (only relevant for dvi). The math variant + can be accessed with `integral'. + + * font/devX*/S: Regenerated. + * font/devdvi/generate/texex.map: Remove `is'. + * font/devdvi/EX: Updated. + * font/devhtml/R.proto, font/devutf8/R.proto: Add `integral'. + * font/devlj4/generate/special.map: Ditto. + * font/devlj4/S: Regenerated. + * font/devps/generate/textmap: Add `integral'. + * font/devps/S: Regenerated. + + * tmac/dvi.tmac: Define `is'. + + * src/roff/troff/glyphuni.cc (glyph_to_unicode_list): Add `integral'. + + * src/preproc/tbl/main.cc (process_format): Fix error message. + +2003-01-02 Werner LEMBERG <wl@gnu.org> + + * font/devhtml/R.proto, font/devutf8/R.proto: Add `ne' and `nc'. + * font/devps/textmap: Fix entries for `ne' and `nc'. + * font/devps/symbolmap: Regenerated. + + * src/roff/troff/glyphuni.cc (glyph_to_unicode_list), + src/roff/troff/uniglyph.cc (unicode_to_glyph_list): Add `18', + `38', `58', `78', `-+', `|=', `nc', `ne'. + + * tmac/dvi.tmac: Add `nm', `ne', `nc'. + Use `schar' for `aq'. + * tmac/ps.tmac, tmac/X.tmac: Add `nc' and `ne'. + * tmac/ec.tmac: Add `SC' to special fonts for `CW' and `CWI'. + * tmac/tty.tmac: Add `ne'. + + * src/roff/troff/node.cc (make_glyph_node): Test with `get_macro' + for fallback glyphs. + +2002-12-29 Werner LEMBERG <wl@gnu.org> + + Add glyph `|='. + + * font/devX*/*: Regenerated. + * font/devdvi/generate/ec.map: Remove `eq'. + * font/devdvi/generate/texsy.map: Make `~=' the same as `~~'. + Assign `|=' to position 39. + * font/devdvi/*EC, S: Regenerated. + * font/devhtml/R.proto, font/devutf8/R.proto: Add `|='. + * font/devlj4/generate/special.map: Make `~=' the same as `~~'. + Assign `|=' to position 549. + * font/devps/generate/textmap, font/devps/enerate/symbolmap: Remove + `equalmath'. + Add `uni2243' for `|='. + + * tmac/ec.tmac: Add `eq'. + * tmac/dvi.tmac: Add `=~'. + * tmac/tty-char.tmac, tmac/ps.tmac, tmac/X.tmac, tmac/lbp.tmac: Add + `|='. + +2002-12-21 Werner LEMBERG <wl@gnu.org> + + * font/devdvi/generate/tc.map: Remove `**'. + * font/devdvi/*TC: Regenerated. + * font/devhtml/R.proto, font/devutf8/R.proto: Add `18', `38', `58', + `78', `<<', `>>'. + * font/devutf8/NOTES: Updated. + + * src/roff/troff/charinfo.h (charinfo): Add `setx_macro' function. + Don't give default parameter to `set_macro'. + * src/roff/troff/input.cc (do_define_character): Use `setx_macro' + instead of `set_macro'. + (charinfo::setx_macro): Implement it. + (charinfo::set_macro): Don't change `mode'. + + * tmac/tty.tmac: Add `18', `38', `58', `78', `<<', `>>'. + * tmac/ps.tmac, tmac/X.tmac: Add `<<', `>>'. + * tmac/dvi.tmac: Define `!=' with `.schar'. + +2002-12-20 Werner LEMBERG <wl@gnu.org> + + * font/devX*/S: Regenerated. + * font/devdvi/generate/ec.map: Remove `pl'. + * font/devdvi/generate/tc.map: Remove `mi', `14', `12', `34'. + * font/devdvi/*{TC,EC}: Regenerated. + * font/devhtml/R.proto: Add `-+'. + Remove double entries for `rk', `lk', `lt', `rt', `rb', `lb'. + * font/devlbp/*: Remove `or'. + * font/devlj4/generate/special.map: Remove `or'. + * font/devlj4/S: Regenerated. + * font/devps/generate/textmap: Add `fiveeighths', `oneeighth', + `seveneighths', `threeeighths'. + Remove `plusmath'. + Replace `minusplus' with `uni2213'. + * font/devps/symbolmap: Regenerated. + * font/devutf8/R.proto: Replace `shc' with unnamed glyph. + Add `-+'. + + * src/roff/troff/charinfo.h (charinfo): Add `is_normal' inline + function. + * src/roff/troff/node.cc (troff_output_file::put_char_width): + Call glyph_color and fill_color even if tcommand_flag isn't set. + (make_node, node::add_char): Check not ci->is_fallback but + ci->is_normal. + + * tmac/lj4.tmac, tmac/lbp.tmac: Define `or'. + * tmac/ec.tmac: Add .rchar entry for `f/'. + Don't remove `12', `14', `34'. + Define `pl' to be always roman. + * tmac/ps.tmac (ps-frac, ps-frac-mono): New macros. + Define `18', `38', `58', `78'. + * tmac/tty.tmac: Add `-+'. + * tmac/dvi.tmac: Define `f/'. + (dvi-frac): Use `f/'. + * tmac/X.tmac (X-frac, X-frac-mono): New macros. + Define `18', `38', `58', `78'. + +2002-12-15 Colin Watson <cjwatson@debian.org> + + * contrib/pic2graph/pic2graph.sh: Add missing `;;'. + +2002-12-10 Werner LEMBERG <wl@gnu.org> + + Add glyph `tno', a textual variant of `no'. + + * font/devX*/*: Regenerated. + * font/{devcp1047,devlatin1,devutf8,devhtml}/R.proto: Add `tno'. + * font/devdvi/generate/{tc.map: Replace `no' with `tno'. + * font/devdvi/generated/{texsy,textex}.map: Add `tno'. + * font/devdvi/*: Regenerated. + * font/devlbp/*: Add `tno'. + * font/devlj4/generate/tex.map: Replace `no' with `tno'. + * font/devlj4/*: Regenerated. + * font/devps/generate/textmap: Replace `no' with `tno'. + * font/devps/generate/symbolchars: Add `no'. + * font/devps/*: Regenerated. + + * src/roff/troff/glyphuni.cc (glyph_to_unicode_list): Add `tno'. + + * tmac/cp1047.tmac, tmac/latin1.tmac: Replace `no' with `tno'. + * tmac/tty-char.tmac: Add entry for `tno' and `3d'. + + * NEWS: Updated. + + * tmac/dvi.tmac: Replace most `\\' with `\E'. + Add definition for `sd'. + * tmac/X.tmac, tmac/ps.tmac: Replace most `\\' with `\E'. + + * tmac/eqnrc <dvi>: Use `integral' instead of `is' glyph. + +2002-12-08 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac (TH): Use integer value for `IN' if in nroff + mode to avoid rounding errors. + (an-do-tag, an-do-tag-html, RS, RE): Remove redundant `.br'. + + * src/roff/groff/groff.man, src/roff/nroff/nroff.man, + src/roff/troff/troff.man: Improve documentation of -T. + +2002-12-07 Jeff Conrad <jeff_conrad@msn.com> + + * src/roff/groff/pipeline.c: Don't define `const' for _WIN32. + (run_pipeline) [_WIN32]: Provide working function without `fork'. + +2002-12-06 Werner LEMBERG <wl@gnu.org> + + * font/devps/generate/freeeuro.sfd: Make dimensions of Euro.symbol + glyphs compatible to Adobe's Euro fonts (scaling them down a bit). + Scaling Euro.sansserif glyphs down to have the same height as + digits. + Removed unnecessary points; added some extrema. + + * font/devps/EURO, font/devps/freeeuro.afm, font/devps/freeeuro.pfa: + Regenerated. + +2002-12-04 Werner LEMBERG <wl@gnu.org> + + * font/devps/generate/freeeuro.sfd: Add glyphs `Euro.symbol.slanted' + and `Euro.symbol.bold.slanted'. + Improve some glyph offsets and widths. + * font/devps/EURO, font/devps/freeeuro.afm, font/devps/freeeuro.pfa: + Regenerated. + * font/devps/generate/Makefile (freeeuro.afm freeeuro.pfa): Fix + typo. + * font/devps/generate/sfdtopfa.pe: Generate PFA in current + directory. + + * tmac/europs.tmac: Updated to new glyph indices. + Use Euro.symbol for font family `A'. + + * doc/groff.texinfo: Minor improvements. + +2002-12-02 Werner LEMBERG <wl@gnu.org> + + * font/devdvi/generate.tc.map: s/%O/%0/. + * font/devdvi/*TC: Regenerated. + + * src/roff/troff/div.cc (init_div_requests): Sorted. + + * tmac/dvi.tmac: Remove `Ye'. + * tmac/ec.tmac: Remove `Ye'. + Add .rchar entry for `de'. + + * man/groff.man, man/groff_diff.man: Document register `.pe'. + * doc/groff.texinfo: Document registers `.pe', `.n', and `.w'. + * NEWS: Updated. + +2002-11-30 Werner LEMBERG <wl@gnu.org> + + Add PS font for various Euro glyphs. + + * font/devps/generate/freeeuro.sfd: New master font file for + pfaedit. + * font/devps/generate/sfdtopfa.pe: New conversion script for + pfaedit. + * font/devps/generate/Makefile (FONTS): Add `EURO'. + (EURO, freeeuro.afm, freeeuro.pfa): New rules. + * font/devps/freeeuro.pfa, font/devps/freeeuro.afm: Generated from + `freeeuro.sfd'. + * font/devps/EURO: Generated from `freeeuro.afm'. + * font/devps/download: Add `freeuro.pfa'. + * font/devps/Makefile.sub (NORMALFILES): Adde `EURO' and + `freeeuro.pfa'. + + * tmac/europs.tmac: New file. + * tmac/ps.tmac: Include `europs.tmac'. + * tmac/Makefile.sub (DISTFILES): Add `europs.tmac'. + +2002-11-29 Werner LEMBERG <wl@gnu.org> + + * font/devdvi/generate/texsy.map: Remove `lh' and `rh'. + * font/devdvi/S: Regenerated. + * font/devhtml/R.proto: Fix `CR' and `ci'. + Add `OK'. + * font/devps/generate/textmap: Fix `lh', `rh', and `sq'. + Remove `bs'. + * font/devps/symbolmap: Regenerated. + * font/devutf8/R.proto: Fix `CR' and `ci'. + Add `OK'. + * font/devutf8/NOTES: Updated. + + * src/roff/troff/uniglyph.cc (unicode_to_glyph_list): Fix `CR' and + `ci'. + Add `OK'. + * src/roff/troff/glyphuni.cc (glyph_to_unicode_list): Ditto. + + * tmac/dvi.tmac: Add `lh' and `rh'. + * tmac/Xps.tmac: Fix `lh' and `rh'. + * tmac/X.tmac: Add `OK'. + * tmac/lj4.tmac: Ditto. + +2002-11-24 Werner LEMBERG <wl@gnu.org> + + * font/devX*/S: Regenerated. + * font/devascii/R.proto, font/devcp1047/R.proto: Remove glyphs `lb', + `lc', `lf', `lk', `lt', `rb', `rc', `rf', `rk', and `rt'. + * font/devdvi/generate/texsy.map: Remove `or' glyph. + * font/devdvi/S: Regenerated. + * font/devhtml/R.proto, font/devutf8/R.proto: Add/fix glyphs + `parenlefttp', `parenleftex', `parenleftbt', `parenrighttp', + `parenrightex', `parenrightbt', `bracketlefttp', `bracketleftex', + `bracketleftbt', `bracketrighttp', `bracketrightex', + `bracketrightbt', `bracelefttp', `braceleftmid', `braceleftbt', + `braceex', `braceleftex', `bracerightex', `bracerighttp', + `bracerightmid', `bracerightbt', `lt', `lk', `lb', `rt', `rk', + `rb', and `bv'. + * src/roff/troff/glyphuni.cc, src/roff/troff/uniglyph.cc: Ditto. + * font/devutf8/NOTES: Updated. + * font/devlj4/generate/special.map: Add glyph `braceex'. + * font/devlj4/S: Regenerated. + + * tmac/tty-char.tmac: Add glyphs `lf', `rf', `lc', and `rc'. + +2002-11-14 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/uniglyph.cc (unicode_to_glyph_list): Add `va' + and `vA'. + Fix code for `an'. + * src/roff/troff/glyphuni.cc (glyph_to_unicode_list): Ditto. + + * doc/texinfo.tex: New version from texinfo 4.3. + * doc/groff.texinfo: Updated for texinfo 4.3. + Use @tie{} where appropriate. + * font/devdvi/generate/ec.map: Don't include `or' and `bv'. + * font/devdvi/generate/tc.map: Remove `rn'. + * font/devdvi/*TC, font/devdvi/*EC: Regenerated. + * font/devhtml/R.proto, font/devutf8/R.proto: Add `vA'. + Fix code for `an'. + * font/devX100/*, font/devX100-12/*, font/devX75/*, + font/devX75-12/*: Regenerated. + + * tmac/dvi.tmac: Add special fonts `SA' and `SB'. + Use .char (again) for `br', `ul', `rn', `or', and `ru'. + Improve definition of `an'. + * tmac/ps.tmac: Use .char (again) for `br', `ul', `rn', `or', and + `ru'. + * tmac/lj4.tmac: Use .char (again) for `br', `ul', `rn', and `ru'. + * tmac/X.tmac: Add definition for `or'. + * tmac/Xps.tmac: Undo change 2002-11-05. + * tmac/lbp.tmac: Add definitions for `br', `rn', `ul', and `ru'. + +2002-11-11 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/node.cc (troff_output_file::put_char): Always + call flush_tbuf. + +2002-11-10 Werner LEMBERG <wl@gnu.org> + + Added three new requests `schar', `fschar', and `rfschar'. `schar' + defines a glyph which is searched after the check for fonts declared + with `.special' (and before the check for all mounted special + fonts). `fschar' defines a glyph for a particular font which is + searched after the check for fonts declared with `.fspecial' (and + before the check for fonts declared with `.special'). `rfschar' + removes glyphs defined with `fschar'. + + * src/roff/troff/token.h (char_mode): New enum. + Declare do_define_character. + * src/roff/troff/charinfo.h (charinfo): Replace `fallback' with + `mode'. + (charinfo::is_fallback): Updated. + (charinfo::is_special): New method. + * src/roff/troff/input.cc (do_define_character): Add and use + optional second parameter used as a prefix for font-specific glyph + names. + (define_character, define_fallback_character): Updated. + (define_special_character): New function. + (init_input_requests): Add `schar'. + (charinfo::charinfo, charinfo::set_macro): Updated. + * src/roff/troff/node.cc: Include `stringclass.h'. + (make_glyph_node): Handle special glyphs defined with `.schar' and + `.fschar'. + (define_font_special_character, remove_font_special_character): New + functions. + (init_node_requests): Sorted. + Add `fschar' and `rfschar'. + * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo: + Document new requests. + + * font/devhtml/R.proto, font/devutf8/R.proto: Add `va'. + * tmac/dvi.tmac: Add `va' for CW and CWI (using `.fschar'). + +2002-11-08 Werner LEMBERG <wl@gnu.org> + + Added new font `SC' (cmtex10) to devdvi. + + * devdvi/generate/Makefile (FONTS): Add `SC'. + (SC): New rule. + * devdvi/generate/textex.map: New map file for cmtex. + * devdvi/SC: New. + * devdvi/Makefile.sub (DEVFILES): Updated. + * tmac/dvi.tmac: Add fspecial entries for SC. + Add `MI', `S' and `CW' to the `special' call. Otherwise, `SC' is + found before `S' since the font position of `SC' is lower due to the + gaps in DESC's `font' line. + * tmac/ec.tmac: Add a `special' call. + * NEWS: Updated. + + * font/devhtml/R.proto: Remove double entry for `ti'. + * tmac/tty.tmac: Add entries for `IJ', `ij', and `bq'. + * tmac/tty-char.tmac: Remove entry for `bq'. + * tmac/lbp.tmac: Add entries for `lq', `rq', `fo', `fc', and `em'. + * tmac/ec.tmac: Don't remove `aq' glyph. + * tmac/X.tmac: Fix entry for `em'. + Add entries for `fo' and `fc'. + * tmac/dvi.tmac: Add entries for `em', `en', `hy', `fo', and `fc'. + + * doc/groff.texinfo, man/groff.man, man/groff_diff.man: Fix + documentation of `special' and `fspecial' requests. + +2002-11-05 Werner LEMBERG <wl@gnu.org> + + * font/devascii/R.proto, font/devcp1047/R.proto, + font/devlatin1/R.proto: Remove entry for `.i'. + * font/devdvi/generate/textt.map: Add entry for `ad'. + * font/devdvi/generate/texr.map, font/devdvi/generate/texb.map, + font/devdvi/generate/texi.map: Add dummy glyph name `slash@for@l'. + We need this for getting kerning values to compose `/l' and `/L'. + * font/devdvi: Regenerated font definition files for CM fonts. + * font/devhtml/R.proto: Add entries for "'C", "'c", `IJ', and `ij'. + * font/devutf8/R.proto: Ditto. + Remove double entry for `ti'. + + * src/roff/troff/glyphuni.cc (glyph_to_unicode_list): Fix entries + for (groff) ligatures, `la', and `ra'. + Add "'C", "'c", `IJ', and `ij'. + Remove double entry for `ti'. + * src/roff/troff/uniglyph.cc (unicode_to_glyph_list): Remove all + double entries. + Add "'C", "'c", `IJ', and `ij'. + Fix entries for (groff) ligatures, `la', and `ra'. + + * tmac/ps.tmac (ps-achar): New macro. + Define "'c" and "'C". + * tmac/tty.tmac: Add entry for `.i'. + * tmac/X.tmac (X-achar): New macro. + Define "'c", "'C", and `:Y'. + Add entries for `IJ' and `ij'. + * tmac/Xps.tmac (Xps-achar): New macro. + Define "'c" and "'C". + Add entries for `IJ' and `ij'. + * tmac/lbp.tmac (lbp-achar): New macro. + Add fallback characters for all groff ligatures and many other + glyphs. + * tmac/dvi.tmac: Fix definitions of `_' and `ul'. + Add entries for `/l' and `/L'. + Define "'c" and "'C". + Add entries for `IJ' and `ij'. + +2002-11-02 Larry Kollar <kollar@alltel.net> + + * PROBLEMS: Document how to solve Mac OS X compilation problems. + +2002-11-02 Werner LEMBERG <wl@gnu.org> + + Adding support for composite glyphs: \[xxx yyy ...] and the + `composite' request. + + * src/roff/troff/glyphuni.cc: New file for mapping groff glyph names + to Unicode-based glyph names. + * src/roff/troff/uniglyph.cc: New file for mapping Unicode-based + glyph names to groff glyph names. + * src/roff/troff/uniuni.cc: New file for canonically decomposing + Unicode-based glyph names. + * src/roff/troff/unicode.cc, src/roff/troff/unicode.h: New files + for handling Unicode glyph names. + * src/roff/troff/input.cc: Include unicode.h. + (composite_glyph_name): New function. + (token::next) <'['>: Handle Unicode glyph names and composite + glyphs. + (composite_dictionary): New dictionary for the `composite' request. + (composite_request): Implement `composite' request. + (init_input_requests): Add `composite'. + Alphabetically sorted. + * src/roff/troff/env.cc (tabs_save, tabs_restore): Removed (already + commented out). + (init_env_requests): Alphabetically sorted. + Removed `tas' and `tar' (already commented out). + * src/roff/troff/Makefile.sub: Updated. + +2002-10-31 Ruslan Ermilov <ru@FreeBSD.org> + + * src/roff/nroff/nroff.man, src/roff/nroff/nroff.sh: Fix description + of options. + +2002-10-29 Werner LEMBERG <wl@gnu.org> + + Fix computation of .trunc register. Additionally, its value (and + the value of the .ne register) is now always set before entering the + trap. + + * src/roff/troff/div.cc (diversion::need): Set `truncated_space' and + `needed_space' before calling `space'. + (top_level_diversion::space): Remove special code for 'sp before the + first page. + Call `begin_page' with the discarded space as a parameter. + (top_level_diversion::begin_page): Add optional parameter to set + `truncated_space'. + * src/roff/troff/div.h: Updated. + + * doc/groff.texinfo: Improve documentation of .sp, \n[.trunc], and + \n[.ne]. + + * tmac/an-old.tmac (SH, SS, TP, IP, HP, TS): Undo change 2002-10-26. + (LP): Remove superfluous call to `br'. + * tmac/doc-common (doc-paragraph): Undo change 2002-10-26. + * tmac/doc.tmac (Bd, Bl, doc-set-vertical-and-indent): Ditto. + +2002-10-26 Werner LEMBERG <wl@gnu.org> + + * tmac/doc-ditroff: Remove useless switch/variable -rC. + (doc-setup-header): Don't set page register `%'. + * tmac/doc-nroff: Remove variable `C'. + (doc-setup-page-layout): Set doc-header-space to .5i unconditionally. + (doc-setup-header): Don't set page register `%'. + Don't call `bp'. + * tmac/doc-common (doc-header): Call `ns'. + (doc-paragraph): Protect .sp with .br so that it survives traps + possibly set by the user. + * tmac/doc.tmac (Bd, Bl, doc-set-vertical-and-indent): Ditto. + + * tmac/doc*: Replace ' with . for consistency if no effect. + +2002-10-26 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac (SH, SS, TP, IP, HP, TS): Protect .sp with .br + so that it survives traps possibly set by the user. + + * src/roff/troff/node.cc: Fix the changes from 2002-10-23. + (troff_output_file::set_font): Call flush_tbuf if necessary. + (troff_output_file::fill_color, troff_output_file::glyph_color): Call + flush_tbuf and do_motion only if necessary. + (troff_output_file::start_special, + troff_output_file::put_char_width, troff_output_file::put_char, + troff_output_file::draw): Updated. + (word_space_node::tprint, space_node::tprint, hmotion_node::tprint, + vmotion_node::tprint): Undo change 2002-10-23. + +2002-10-25 Werner LEMBERG <wl@gnu.org> + + * tmac/www.tmac (DC): Fix case of overlapping images. + +2002-10-23 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/node.cc (troff_output_file::fill_color, + troff_output_file::glyph_color): Set current color before testing + color_flag. + (troff_output_file::put_char_width, troff_output_file::put_char, + troff_output_file::draw): Don't call flush_tbuf and/or do_motion + before glyph_color. + (troff_output_file::file_color, troff_output_file::glyph_color): + Call do_motion. + (word_space_node::tprint, space_node::tprint, hmotion_node::tprint, + vmotion_node::tprint): Move first, then call fill_color. + +2002-10-20 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo, man/groff_tmac.man: Document that it is not + possible to use multiple main macro packages. + +2002-10-19 Werner LEMBERG <wl@gnu.org> + + * src/devices/grops/ps.cc (cmyk_flag): New global variable. + (ps_printer::set_color): Set `cmyk_flag' for CMY and CMYK colors. + (ps_printer::~ps_printer): Emit `%%Extensions: CMYK' if `cmyk_flag' + is set. + * font/devps/prologue.ps (Fk, Ck): Enclose definitions with a + `where' construction since `cmyksetcolor' is a PS Level 2 operator. + +2002-10-16 Werner LEMBERG <wl@gnu.org> + + * NEWS, doc/webpage.ms: Updated. + +2002-10-14 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/node.cc (troff_output_file::put_char_width, + troff_output_file::put_char, troff_output_file::fill_color, + troff_output_file::glyph_color): Handle case where color pointer + is null. + +2002-10-13 Ruslan Ermilov <ru@FreeBSD.org> + + Add the new -r option to grotty. It is similar to the -i option + except it tells grotty(1) to use the `reverse video' attribute to + render italic fonts. + + * src/devices/grotty/tty.cc (reverse_flag): New global variable. + (SGR_REVERSE, SGR_NO_REVERSE): New macros. + (tty_printer::make_underline, tty_printer::put_color, + tty_printer::end_page): Use it. + (main): Add -r switch. + (usage): Updated. + * src/devices/grotty/grotty.man: Document it. + +2002-10-11 Ruslan Ermilov <ru@FreeBSD.org> + + * src/roff/troff/env.cc (hyphen_trie::read_patterns_file): Add + cast to `unsigned char' to properly read patterns with 8bit + characters. + +2002-10-08 Werner LEMBERG <wl@gnu.org> + + * REVISION: Increased to 2. + +Copyright 2002-2005 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. + +Local Variables: +coding: latin-1 +fill-column: 72 +mode: change-log +version-control: never +End: +vim:set autoindent textwidth=72: diff --git a/ChangeLog.120 b/ChangeLog.120 new file mode 100644 index 0000000..0451689 --- /dev/null +++ b/ChangeLog.120 @@ -0,0 +1,3053 @@ + +Version 1.20.1 released +======================= + + `gnu.png' isn't needed any more. + + * doc/Makefile.in: Don't handle or create `gnu.png'. + Update all affected targets. + + * doc/Makefile.sub: Don't handle or create `gnu.png'. + Update alll affected targets. + + + `gnu.eps' was missing in the tarball. + Problem reported by Patrik Grser. + + (PROCESSEDEXAMPLEFILES): Remove `gnu.eps'. + (MOSTLYCLEANNOTSRCDIRADD): Fix names of info files. + (install_data): Handle `gnu.eps' specially. + + * MORE.STUFF: Mention texi2html's troff backend. + Mention http://groff.ffii.org/groff/contrib. + + * README: Mention `MORE.STUFF'. + + * NEWS, doc/webpage.ms, doc/groff.texinfo: Updated. + +2009-01-08 Werner LEMBERG <wl@gnu.org> + + * */Makefile.* (CLEANADD, CLEANNOTSRCDIRADD, CLEANDIRADD): Renamed + to... + (MOSTLYCLEANADD, MOSTLYCLEANNOTSRCDIRADD, MOSTLYCLEANDIRADD): This. + +2009-01-06 Werner LEMBERG <wl@gnu.org> + + Remove heuristics for LIBEXT. + + * configure.ac: Provide LIBEXT. + * Makefile.in: Use it. + + * configure: Regenerated. + +2009-01-05 Werner LEMBERG <wl@gnu.org> + +Version 1.20 released +===================== + +2009-01-05 Werner LEMBERG <wl@gnu.org> + + * */*: Update FDL 1.1 to FDL 1.3. + +2009-01-05 Werner LEMBERG <wl@gnu.org> + + * */*: Update copyright year. + +2009-01-05 Werner LEMBERG <wl@gnu.org> + + * MANIFEST: Updated. + +2009-01-05 Werner LEMBERG <wl@gnu.org> + + * doc/texinfo.tex (\key): Fix excessive whitespace. + (\texinfoversion): Tag file as patched. + +2009-01-05 Werner LEMBERG <wl@gnu.org> + + * tmac/s.tmac (@TS, TE, @EQ, @EN), tmac/an-old.tmac (TS, TE, EQ, + EN), tmac/e.tmac (TS, TE, EQ, EN): Set line length to a large value + if processed with -Thtml. + +2009-01-04 Werner LEMBERG <wl@gnu.org> + + * tmac/www.tmac (TS, TE, EQ, EN): Set line length to a large value + if processed with -Thtml to avoid warning messages (from code + inserted by tbl, for example). + +2009-01-04 Gunnar Florus <http://florus.no> + + * */*: Update GPL2 to GPL3. + +2009-01-04 Werner LEMBERG <wl@gnu.org> + + * Makefile.in (dist): Don't use soft links but copy files to + preserve the file's time stamps. + * Makefile.sub (configure): Remove `autom4te.cache'. + +2009-01-04 Werner LEMBERG <wl@gnu.org> + + * tmac/de.tmac: Fix German date strings. Reported by Axel Kielhorn. + +2009-01-04 Werner LEMBERG <wl@gnu.org> + + * doc/texinfo.tex: Updated from `texinfo' CVS repository. + * doc/txi-en.tex: New file from `texinfo' CVS repository. + +2009-01-04 Werner LEMBERG <wl@gnu.org> + + * font/make-Rproto: Moved to... + * font/util/make-Rproto: Here. + + * Makefile.in (NOMAKEDIRS): Add `m4', `font/devps/old', and + `font/util'. + +2009-01-04 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/TODO: Mention local variables. + +2009-01-03 Werner LEMBERG <wl@gnu.org> + + * 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/short_reference.roff: Minor improvements. + +2009-01-03 Werner LEMBERG <wl@gnu.org> + + * doc/webpage.ms: Updated. + +2009-01-03 Werner LEMBERG <wl@gnu.org> + + * NEWS, doc/groff.texinfo, font/devps/*, VERSION, REVISION: Prepare + for version 1.20. + +2009-01-03 Werner LEMBERG <wl@gnu.org> + + * src/preproc/tbl/table.cpp (table::compute_expand_width, + table::compute_separation_factor): In warning messages, don't refer + to pages but to input line numbers. + +2009-01-03 Werner LEMBERG <wl@gnu.org> + + * tmac/groff_ms.man: Improve formatting of tables. + +2009-01-03 Werner LEMBERG <wl@gnu.org> + + * tmac/www.tmac (www->): Handle XHTML. + (HTML</p>): Handle non-HTML devices. + (www:url_check_tag): Avoid warnings. + +2009-01-03 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac, tmac/doc.tmac: For -Tutf8, map \-, -, ', and ` + conservatively to ASCII for the sake of easy cut and paste. + +2009-01-03 Werner LEMBERG <wl@gnu.org> + + * NEWS: Mention hdtbl. + +2009-01-02 Werner LEMBERG <wl@gnu.org> + + * tmac/groff_mdoc.man: Update OS version string listing. + +2009-01-02 Werner LEMBERG <wl@gnu.org> + + * config.rpath, m4/codeset.m4, m4/glibc21.m4, m4/iconv.m4, + m4/lib-link.m4, m4/lib-prefix.m4, src/include/localcharset.h, + src/libs/libgroff/config.charset, src/libs/libgroff/localcharset.c, + src/libs/libgroff/ref-add.sin, src/libs/libgroff/ref-del.sin: + Updated from `gnulib' git repository. + + * configure: Regenerated. + +2009-01-02 Werner LEMBERG <wl@gnu.org> + + * tmac/ptx.tmac: New file. + + * NEWS, man/groff_tmac: man: Document it. + +2008-12-30 Werner LEMBERG <wl@gnu.org> + + Fix more quoting issues. + + * tmac/www.tmac (BCL, BGIMG, PIMG, MPIMG, LNS): For the sake of + XHTML, quote more arguments. + (IMG): Fix quoting. + +2008-12-30 Werner LEMBERG <wl@gnu.org> + + Fix quoting issues in www.tmac. + + * tmac/www.tmac (www:url_breaks_splitted): Renamed to... + (www:url_breaks_split): This. + (www->): New string to close tag singletons like <img> or <hr>. In + XHTML mode (not implemented yet), this has to be changed from `>' to + `/>'. + (IMG): Don't use </img> + Use www->. + (PIMG, MPIMG): Don't use </img> + Use www->. + Fix doublequote issues. + (HR): Don't use </hr>. + Use www->. + (LNS): Fix doublequote issues. + +2008-12-24 Michail Vidiassov <master@iaas.msu.ru> + + * tmac/doc-common: Add entries for Mac OS X and FreeBSD. + +2008-12-22 Alexey Gladkov <legion@altlinux.ru> + + * contrib/groffer/perl/roff2.pl: Fix syntax error. + +2008-12-15 Werner LEMBERG <wl@gnu.org> + + * NEWS: Mention `preconv'. + +2008-11-12 Werner LEMBERG <wl@gnu.org> + + Implement `x' specifier for expanded columns. Contrary to old DWB + tbl, more than a single `x' specifier can be used. At the same + time, remove most of the code from change 2007-02-09 which collides + with the new implementation. + + * src/preproc/tbl/main.cpp (format): Add `expand' array. + (format::format, format::~format): Updated. + (input_entry_format): Add `expand' field. + (input_entry_format::input_entry_format): Updated. + (input_entry_format::debug_print): Handle `expand'. + (process_format): Handle `x' specifier. + (process_data): Updated. + + * src/preproc/tbl/table.cpp (AVAILABLE_REG, COLCOUNT_REG): Remove. + (EXPAND_REG): New macro. + (table_entry::divert, block_entry::divert, + alphabetic_block_entry::divert): Add parameter to control whether + expanded columns shall be handled. + (block_entry::do_width): Remove. + (block_entry::do_divert): Add parameter to control whether expanded + columns shall be handled. + Treat expanded columns like columns with a minimum width. + Remove `experimental' code. + (table::table, table::~table, table::allocate): Updated. + (table::set_expand_column): New function. + (table::count_block_columns): Replace with... + (table::count_expand_columns): This function. + (table::divide_span): Handle expanded columns the same as equal + columns. + (table::sum_columns): Add parameter to control whether expanded + columns shall be handled. + (table::compute_available_block_width): Replace with... + (table::compute_expand_width): This function. + (table::compute_total_separation): New function, taking code from + `compute_separation_factor'. + (table::compute_separation_factor): Simpler code. The check for the + `EXPAND' flag has been moved to the caller. + (table::compute_widths): Add `top-level' changes to handle expanded + blocks. + + * src/preproc/tbl/table.h (table): New field `total_separation'. + Remove `blockflag' array. + Add `expand' array. + Update member function declarations. + + * src/preproc/tbl/tbl.man: Document `x' specifier. + Expand documentation to cover all aspects of Lesk's tbl reference. + + * NEWS: Document `x' specifier. + +2008-11-08 Werner LEMBERG <wl@gnu.org> + + * src/preproc/tbl/tbl.man: Restructuring. + Improve text block documentation. + +2008-11-07 Werner LEMBERG <wl@gnu.org> + + * src/preproc/tbl/table.cpp (table::compute_widths): Use default + scaling operator for minimum width. Without this fix, `lw3' (or + `lw(3)' would be handled as a column with a minimum width of 3u + instead of 3n. + +2008-11-05 Werner LEMBERG <wl@gnu.org> + + * tmac/doc-common (Dt): Start a new page if necessary and set up + headers. + + * tmac/andoc.tmac (reload-doc): Simplify due to change in + doc-common. + + * NEWS: Document it. + +2008-10-18 Werner LEMBERG <wl@gnu.org> + + * src/preproc/tbl/main.cpp (process_format): Rename `x' and `X' to + `m' and `M', respectively. + Sort entries in `switch' block. + * src/preproc/tbl/tbl.man: Updated. + Sort key entries; other minor improvements. + +2008-10-17 Werner LEMBERG <wl@gnu.org> + + * src/preproc/tbl/table.cpp (table::compute_available_block_width): + New function. + (table::compute_widths): Replace some code with new function + (shifted to a more appropriate place). + * src/preproc/tbl/table.h: Updated. + +2008-10-16 Werner LEMBERG <wl@gnu.org> + + * tmac/doc-common (doc-operating-system-*), tmac/groff_mdoc.man: Add + NetBSD 4.0.1. + +2008-10-13 Werner LEMBERG <wl@gnu.org> + + * tmac/groff_mdoc.man: Update documentation on BSD-like OS string + versions. + +2008-10-10 Werner LEMBERG <wl@gnu.org> + + * man/roff.man, doc/groff.texinfo: Improve the history part. This + is based on input from Tom Van Vleck <thvv@multicians.org>. + + + * src/preproc/eqn/sqrt.cpp (sqrt_box::compute_metrics): Assure that + value of `rst' register is not zero, as can happen for the HTML + output device. Otherwise, there are too many loops, and we get a + stack overflow because of recursion. + +2008-10-05 Stephen Gildea <http://www.gildea.com/stephen/> + + * src/preproc/ref/ref.cpp (reference::compute_sort_key): Do + not insert SORT_SEP before the first field, so that sort_key + has the same format as before the patch of 2003-08-23. + +2008-10-04 Werner LEMBERG <wl@gnu.org> + + * tmac/doc-common (doc-operating-system-*): Update releases. + + * tmac/an-old.tmac (an-extra1, an-extra2, an-extra3): Initialize. + + * tmac/andoc.tmac: Rewritten, based on a preliminary version from + Tadziu Hoffmann. It can now process multiple man pages with both + man and mdoc formats intermixed. + + * NEWS, tmac/groff_man.man, tmac/groff_mdoc.man, + man/groff_tmac.man: Document it. + +2008-10-04 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cpp (do_suppress): Make \O[3], \O[4], and + \O[5] non-transparent w.r.t. beginning-of-line recognition (similar + to the other \O variants). + + * tmac/www.tmac (TS, TE, EQ, EN): Don't use .als for setting up + default macros. This causes endless loops (at least for TE). + + * doc/groff.texinfo: Improve documentation of `.als'. + +2008-10-03 Werner LEMBERG <wl@gnu.org> + + * src/devices/grops/grops.man, src/roff/troff/troff.man, + src/preproc/soelim/soelim.man: Correct documentation of -I switch. + Reported by Larry Kollar. + Other minor formatting issues. + +2008-10-02 Werner LEMBERG <wl@gnu.org> + + * tmac/trace.tmac: Much improved. + (trace-full): New register to be set on the command line; it + controls whether number and string register assignments get traced + also. + (!!c): New macro for comments. + (rm): New traced macro. + (de, de1, am, am1): Use \\[xxx]\\ calling method to pass \$0 to + `!!xxx'; this makes doc.tmac completely traceable. + Trace call of .de and friends also. + + * tmac/groff_tmac.man, NEWS: Update. + +2008-09-30 Werner LEMBERG <wl@gnu.org> + + Restore behaviour of \$0 if a macro is called with string syntax + (problem caused by change on 2008-09-29). + + * src/roff/troff/input.cpp (input_iterator, input_stack, + macro_iterator): Add `get_macro_name' member function. + (interpolate_string): Use it. + +2008-09-29 Werner LEMBERG <wl@gnu.org> + + Make \\*[xxx]\\ within a macro (with `xxx' a macro too) work as + expected. Without the patch, + + .de aaa + \\*[bbb]\\ + . tm \\$* + .. + .de bbb + . shift + .. + .aaa 1 2 3 + + prints `2 3' instead of `1 2 3'. + + * src/roff/troff/input.cpp (input_iterator, input_stack, + macro_iterator): Add `get_arg_list' member function. + (macro): Add `is_a_string', `is_string', and `clear_string_flag' + members. + Update constructors and operators. + (arg_list): Add copy constructor. + (macro_iterator): Add optional argument to constructor to indicate + whether arguments shall be inherited from calling macro. + (interpolate_string): If string argument is a macro, push a macro + iterator on the stack. + (do_define_macro): Call clear_string_flag if macro data contains a + newline. + + * src/roff/troff/request.h: Updated. + +2008-09-29 Eric S. Raymond <esr@snark.thyrsus.com> + + * doc/pic.ms: Fold in documentation of pic2plot(1) capabilities. + Improve the documentation of text objects. + +2008-09-28 Eric S. Raymond <esr@snark.thyrsus.com> + + * contrib/pic2graph, contrib/pic2graph.man, contrib/eqn2graph, + contrib/eqn2graph.man: Tweak scripts to cope with incompatible + changes in ImageMagick crop options. Document the bugs. + +2008-09-28 Werner LEMBERG <wl@gnu.org> + + If a macro is called as a string, inherit value of \n[.br] from the + caller. This is useful for `trace.tmac'. + + * src/roff/troff/input.cpp (string_iterator): New members + `with_break' and `get_break_flag'. + (string_iterator::string_iterator): Updated. + + * doc/groff.texinfo: Improve documentation of \$0 and string syntax + calling of macros. + Document behaviour of \n[.br] within strings. + +2008-09-26 Werner LEMBERG <wl@gnu.org> + + * tmac/trace.tmac: Add copyright message. + Use `.de1' where possible to make source code more readable. + (so, mso, als, rn): Restore escape character before executing the + request. + (de, de1, am, am1): Trace `.foo' also if called as `\\[foo]'. + +2008-09-24 Werner LEMBERG <wl@gnu.org> + + Fix incompatibility between `.de1' and `.do'. Without this change, + the following snippet + + .de1 xx + . tm \\n(.C + .. + .cp 1 + .do xx + + prints 1 instead of 0. + + * src/roff/troff/input.cc (do_request): If a macro gets processed, + call tok.next(). + (interpolate_macro): Add optional argument. Update callers. + (request::invoke): Add optional argument. + (macro::invoke): Add optional argument to delay call of tok.next(). + + * src/roff/troff/request.h (request_or_macro): Add argument to + `invoke' member. Update all derived classes. + + * doc/groff.texinfo: Improve documentation of .do request. + +2008-09-09 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac (FT): Initialize properly. Reported by Tadziu + Hoffmann. + +2008-09-06 Werner LEMBERG <wl@gnu.org> + + * tmac/doc-common (Dd, Os, Dt): Reset `doc-command-name' to make + `.Nm' work properly if next manual page is printed. + +2008-08-20 Werner LEMBERG <wl@gnu.org> + + * src/preproc/tbl/tbl.man: Document computation of element widths. + +2008-08-20 Alexey Gladkov <legion@altlinux.ru> + Werner LEMBERG <wl@gnu.org> + + Add default encoding option -D to preconv and groff. + + * src/preproc/preconv/preconv.cpp (default_encoding): Make it an + array. + Update all users. + (main): Handle new option -D. + (usage): Updated. + * src/preproc/preconv/preconv.man: Updated. + + * src/roff/groff/groff.cpp (main): Handle new option -D. + (synopsis, help): Updated. + * src/roff/groff/groff.man: Updated. + +2008-07-26 Werner LEMBERG <wl@gnu.org> + + * tmac/eqnrc (.EQ, .EN): Provide default definitions. Reported + by Denis M. Wilson. + + * tmac/www.tmac (.EQ, .EN, .TS, .TE): Fix definitions. + +2008-07-24 Denis M. Wilson <dmw@oxytropis.plus.com> + + New options -f and -k for afmtodit. + + * src/afmtodit/afmtodit.pl: New options `-f NAME' sets the internal + name of the groff font. + New option `-k' disables output of kerning data. + * src/afmtodit/afmtodit.man, NEWS: Document new options. + +2008-07-18 Werner LEMBERG <wl@gnu.org> + + * src/preproc/tbl/table.cpp (table::compute_separation_factor): Emit + warning messages if table gets squeezed. + (table::compute_widths): Fix computation of AVAILABLE_REG. + Emit warning if table is wider than line length. + + * src/preproc/tbl/tbl.man: Minor improvements. + +2008-05-02 Larry Jones <lawrence.jones@siemens.com> + + * contrib/chem/Makefile.sub (README, examples/README): In makefiles, + the `$<' macro is only guaranteed to be defined in inference rules, + not in explicit target rules. Since there is only one input file in + the places where it is used, the `$?' macro (which is guaranteed to be + defined for both kinds of rules) is a suitable replacement. + + * hdtbl/examples/fonts_n.in, hdtbl/examples/fonts_n.in: Most + versions of ls don't have a `--color' option. + +2008-04-30 Larry Jones <lawrence.jones@siemens.com> + + * Makefile.comm (depend.temp): Add `EXTRA_CCFLAGS'. + +2008-04-29 Larry Jones <lawrence.jones@siemens.com> + + * src/eqn/script.cpp (script_box::output): Portability fix. + +2008-04-05 Dorai Sitaram <ds26gte@yahoo.com> + + Add better support for `.TAG #<label>' in non-HTML documents: In + case of a forward reference in a call to .URL, write `(see below)'. + In case of a backwards reference use the page number instead. The + reference gets stored in a string `TAG_<label>' and can be + overridden while calling `.TAG' with its new optional argument -- + this is useful for a second-pass system which resolves forward + references. + + * tmac/www.tmac (www:url_check_tag): New function. + (URL): Use it. + (TAG): Add optional argument to define string `TAG_<label>'. + +2008-03-24 Werner LEMBERG <wl@gnu.org> + + * tmac/trace.tmac (so, mso): Added. + + * tmac/www.tmac (PIMG): Replace `.ie' (without `.el') with `.if'. + If used with -mtrace, and this clause was active, the macro was + executed twice. + + * tmac/pspic.tmac (PSPIC): Accept option `-C' for orthogonality. + This makes `.PIMG -C <file>' (from www.tmac) work on non-HTML + devices. + * man/groff_tmac.man: Document it. + +2008-02-26 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cpp: s/safer_flag/unsafe_flag/. + Update all occurrences so that \n[.U] works as advertised. Bug + reported by Dorai Sitaram. + +2008-02-17 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Improve documentation of .cf request. + +2008-01-19 Werner LEMBERG <wl@gnu.org> + + * src/preproc/html/pre-html.cpp (usage): Don't describe options but + mention that it should never be called stand-alone. + + * tmac/groff_www.man, doc/groff.texinfo, man/groff_font.man, + man/groff_tmac.man, man/groff_out.man, README, README.MinGW, + src/roff/groff/groff.man: Mention -Txhtml. + + * man/groff_font.man, man/groff_tmac.man, man/roff.man: Revised. + +2008-01-16 Werner LEMBERG <wl@gnu.org> + + * src/libs/libgroff/font.cpp (font::contains, font::get_code): + Handle single-letter names correctly. + + * doc/groff.texinfo, man/groff_diff.man: Extend documentation of \^ + and \|. + * NEWS: Updated. + +2008-01-15 Werner LEMBERG <wl@gnu.org> + + * man/groff_font.man: Revised. + +2008-01-14 Werner LEMBERG <wl@gnu.org> + + * man/groff.man: Mention glyph and characters. + Minor other updates. + * man/groff_char.man: Minor updates. + * man/groff_diff.man: Better clarification between characters and + glyphs. + +2008-01-12 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Fix top-level structure to make it compilable + again with all texinfo modes. Reported by Jrg van den Hoff + <j.van_den_hoff@fzd.de>. + +2008-01-11 Werner LEMBERG <wl@gnu.org> + + * doc/pic.ms: Mention that compass points of line objects are + arbitrarily located. + +2008-01-06 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/node.cpp (left_italic_corrected_node::add_self): + Don't remove itself if there is no glyph associated with the node + yet. This happens, for example, in this situation: + + .ll 15000u + .ft I + x x + (\,f + +2008-01-05 Werner LEMBERG <wl@gnu.org> + + * man/groff_char.man, man/groff.man: Revised. + + * src/preproc/eqn/lex.cpp (troff_defs): Fix typo. + +2008-01-04 Werner LEMBERG <wl@gnu.org> + * */*: s/Osanna/Ossanna/. + + * */*.man: Replace .URL with .UR/.UE (except in groff_www.tmac). + Replace .MTO with .MT/.ME (except in groff_www.tmac). + Insert `\:' in URLs where appropriate. + Don't include www.tmac (except in groff_www.tmac). + + * man/groff.man (.ESC[]): Fix font of closing bracket. + (.ESCq): Fix font of closing quote character. + Many other improvements. + +2007-12-30 Bernhard Fisseni <bfi@ikp.uni-bonn.de> + + * src/devices/grohtml/post-html.cc + (html_printer::writeHeadMetaStyle): Fix CSS output. + +2007-12-29 Werner LEMBERG <wl@gnu.org> + + * tmac/ec.tmac: Add CM fonts to the .fspecial lines; those fonts + contain additional glyphs (like some uppercase Greek letters). + +2007-12-06 Werner LEMBERG <wl@gnu.org> + + * NEWS: Updated. + +2007-12-06 Colin Watson <cjwatson@debian.org> + + * src/roff/nroff/nroff.sh: Add options -w and -W. + * src/roff/nroff/nroff.man: Document them. + +2007-12-06 Karl Berry <karl@freefriends.org> + + * tmac/hyphenex.pl: Update header output. + +2007-11-29 Werner LEMBERG <wl@gnu.org> + + * src/devices/grotty/tty.cpp (tty_printer::line): Fix line lengths. + +2007-11-20 Werner LEMBERG <wl@gnu.org> + + * doc/pic.ms: Add Heinz-Jrgen's 3d boxes example. + +2007-11-17 Werner LEMBERG <wl@gnu.org> + + * src/roff/nroff/nroff.sh: Handle GROFF_TYPESETTER environment + variable. Problem reported by Michael G Schwern + <schwern@pobox.com>. + + * src/roff/nroff/nroff.man: Document it. + Other minor updates. + +2007-11-17 Heinz-Jrgen Oertel <hj.oertel@t-online.de> + + * src/groff/preproc/pic/lex.cpp (table): Add box attributes + `xslanted' and `yslanted'. + + * src/groff/preproc/pic/object.cpp (object_spec::object_spec): + Initialize `xslanted' and `yslanted'. + (graphic_object): Add methods `set_xlanted' and `set_yslanted'. + (closed_object): Ditto. + Add members `xslanted' and `yslanted'. + (box_object::print): Use them. + (object_spec::make_object): Handle slant values. + * src/groff/preproc/pic/object.h (IS_XSLANTED, IS_YSLANTED): New + constants. + (object_spec): Add members `xslanted' and `yslanted'. + * src/groff/preproc/pic/pic.y (XSLANTED, YSLANTED): New left-valued + tokens. + Add rules for them. + + * src/groff/preproc/pic/pic.man, NEWS, doc/pic.ms: Document above + changes. + +2007-11-16 Werner LEMBERG <wl@gnu.org> + + * tmac/hyphenex.pl: Generate copyright notice (this has been + approved by Barbara Beeton). + * tmac/hyphenex.us: Updated. + +2007-11-10 Michail Vidiassov <master@iaas.msu.ru> + + * tmac/doc-syms (doc-str-St--susv3): New string. + * tmac/groff_mdoc.man: Document it. + +2007-11-08 Werner LEMBERG <wl@gnu.org> + + * src/preproc/preconv/preconv.cpp (emacs_to_mime): Add `utf-16be', + `utf-16le', `utf-16be-with-signature', `utf-16le-with-signature'. + (is_comment_line): Handle '\" and '\# also. + + * src/preproc/preconv/preconv.man: Revise and make complete. + +2007-10-25 Werner LEMBERG <wl@gnu.org> + + * tmac/cs.tmac: New file holding Czech strings, contributed by + Marcela Maslanova <mmaslano@redhat.com>. + * tmac/hyphen.cs, tmac/hyphenex.cs: New hyphenation pattern files + for Czech, taken from CTAN. + * LICENSES: Updated. + * tmac/Makefile (NORMALFILES): Add Czech stuff. + * doc/groff_tmac.man: Mention cs.tmac. + +2007-10-21 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cpp (do_ps_file): Handle `%X' in header + comments correctly. Reported by Frank Jahnke + <jahnke@sonatabio.com>. + +2007-10-02 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/doc-common, tmac/groff_doc.man: Add FreeBSD 6.2, document + FreeBSD 5.5 and 7.0. + + * tmac/doc-syms: Give better names for System V releases. + +2007-09-25 Gaius Mulley <gaius@glam.ac.uk> + + * doc/Makefile.in, doc/Makefile.sub (.ms.html): Add -P-V switch to + the production of html files. + (pic.html): Ditto. + Remove background colour switch. + (.SUFFIXES, clean): Handle *.xhtml files. + + * src/devices/grohtml/grohtml.man: Document that -V option now + generates an HTML-4.01 validator or XHTML validator. + + * src/devices/grohtml/html-text.cpp (html_text::end_tag, + html_text::start_tag): Suppress <small>, <big>, and <color> tags if + we are inside a <pre> block. + + * src/devices/grohtml/post-html.cpp + (html_printer::handle_valid_flag): Add a parameter to indicate + whether it needs to generate a paragraph block. + (html_printer::write_navigation): Updated. + (html_printer::do_file_components): Generate an HTML-4.01 blue + validator button also. + +2007-09-23 Axel Kielhorn <A.Kielhorn@web.de> + + * man/groff.man: Fix URL of CSTR 54. + +2007-09-23 Werner LEMBERG <wl@gnu.org> + + * man/groff_char.man: Normalize character set names as defined + by IANA. Based on a patch from Axel Kielhorn. + + * src/preproc/refer/label.y: Undo change from 2007-09-19. + +2007-09-19 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cpp (interpolate_arg): Remove compiler + warning. + + * src/preproc/eqn/pile.cpp (pile_box::output, matrix_box::output): + Remove compiler warning. + + * src/preproc/refer/label.y: Remove compiler warning. + + * src/preproc/pic/pic.y: Remove doubled token entries. + +2007-09-19 Gaius Mulley <gaius@glam.ac.uk> + + * doc/groff.texinfo: Document new .O register and add cross + reference entries. + + * NEWS: Updated. + + * src/devices/grohtml/grohtml.man: Document new -V and -y options. + + * src/devices/grohtml/html-table.cpp: Add support for XHTML 1.1. + (html_table:: emit_colspan, html_table::emit_td): New methods. + (html_table::emit_col): Use html_table::emit_td. + (html_table::emit_table_header): Use html_table::emit_colspan if + dialect xhtml is specified. + (html_table::finish_row): Updated. + + * src/devices/grohtml/html-table.h (html_table): Declare + emit_colspan, emit_td. + + * src/devices/grohtml/html-text.cpp: Modified tags to comply with + xhtml if this dialect was requested. + + * src/devices/grohtml/html-text.h (html_dialect): New enumeration. + (html_text): Add new variable `dialect'. + + * src/devices/grohtml/post-html.cpp: Modify header tags to be XHTML + compliant. + (valid_flag, groff_sig, dialect): New global variables. + (html_printer::handle_valid_flag, html_printer::do_math, + html_printer::write_html_anchor, html_printer::write_xhtml_anchor, + html_printer::do_math, html_printer::handle_valid_flag): New + methods. + (html_printer::emit_line, html_printer::emit_raw, + html_printer::do_check_center, html_printer::write_title, + write_rule, html_printer::writeHeadMetaStyle, generate_img_src, + html_printer::begin_page): Altered to be XHTML compliant. + (html_printer::write_header): Updated. + (html_printer::troff_tag): Call do_math. + (html_printer::insert_split_file, html_printer::do_file_components, + html_printer::write_navigation): Create XHTML file components if + necessary and also produces a groff signature if requested. + (~html_printer): Call writeHeadMetaStyle at appropriate places + depending upon html_dialect. + (html_printer::special): Handle new tags `html<?p>' and `math<?p>'. + (main): Added options -x, -V, and -y. + (usage): Updated. + + * src/preproc/eqn/box.cpp: Create a distinction between + the MathML device and the XHTML device. + (do_text): Issue a newline at the end of the equation if XHTML was + specified. + (box::top_level): Prefix the output of an equation by the .MATHML + macro. + (output_string): Suppress \n if XHTML was specified. + + * src/preproc/eqn/main.cpp (xhtml): New global flag. + (inline_equation): Skip leading spaces after inline equation for + XHTML device. + (main): Set `xhtml' flag if `-Tmathml:xhtml' is specified. + + * src/preproc/eqn/eqn.h (xhtml): New external flag. + + * src/preproc/eqn/text.cpp (entity_table): Fix typo. + + * src/preproc/html/pre-html.cpp (html_dialect): New enumeration. + (dialect, eqn_flag): New global variables. + (html_system): Improve debugging support. + (alterDeviceTo): Test for -Txhtml when altering device to the image + device and reset to -Txhtml. + (addZ): Renamed to... + (addArg): This. + Introducea a general parameter. + (print_args): New debugging function. + (char_buffer::run_output_filter): Use print_args and addArg rather + than addZ. + (char_buffer::do_html, char_buffer::do_image): Add -rxhtml=1 command + line parameter as an argument to the html generation of text when + xhtml is needed. Include -e on the command line if mathml is + required. + (scanArguments): Allow -e, -V, -y and -x options. + -V, -y are handled by the back end. -e sets `eqn_flag'. + -x determines HTML dialect. + + * src/roff/groff/groff.cpp (possible_command): New method + `clear_name'. + (main): Set eflag if -e is present on command line. + Set is_xhtml if -Txhtml is present. + Pass `-x x' to the HTML pre and post processors. + Pass `-e' to the HTML pre processor if required. + Pass `-Tmathml:xhtml' to eqn if XHTML is requested. + + * src/roff/troff/input.cpp (init_input_requests): Introduce new + number register `\n[.O]'. + + * tmac/s.tmac: (LP): Use .nop for semantic sugar. + (cov*ab-init) reformat. + (@EQ): Use EQN-HTML-IMAGE and friends rather than HTML-IMAGE. + (CHECK-FOOTER-AND-KEEP): Define FS, FE such that they use + <cite></cite> for the html device rather than generate images for + footnotes. + + * tmac/troffrc-end: Define EQN-HTML-IMAGE, + EQN-HTML-IMAGE-END, EQN-HTML-IMAGE-RIGHT, + EQN-HTML-IMAGE-LEFT, EQN-HTML-IMAGE-INLINE, + EQN-HTML-DO-IMAGE, EQN-HTML-IMAGE-END as null strings. + + * tmac/www.tmac: (HTML<?p>): New macro. + (MATH<?p>): New macro. + (IMG, PIMG, MPIMG, HR): Use XHTML compliant syntax. + (www-emit-ltag): New macro. + (www-push-li): Updated. + (ULS): Ensure that tags are balanced in order by use of + www-emit-ltag. + (ULE): Likewise: Use www-emit-ltag and shut down paragraphs in + order. + (OLS, OLE, DLS, DLE): Ditto. + <global>: Define EQ and EN to EQN-HTML-IMAGE and EQN-HTML-IMAGE-END + respectively. + (www-li-ul, www-li-ol, www-li-dl): Updated. + (EQN-HTML-IMAGE, EQN-HTML-IMAGE-RIGHT, EQN-HTML-IMAGE-LEFT, + EQN-HTML-IMAGE-INLINE, EQN-HTML-DO-IMAGE, EQN-HTML-IMAGE-END, + MATHML): New macros. + +2007-09-17 Werner LEMBERG <wl@gnu.org> + + * man/groff_font.man: Document `unicode' keyword. + * doc/groff.texinfo (DESC File Format): Synchronize with + groff_font.man. + +2007-09-15 Werner LEMBERG <wl@nu.org> + + * man/groff.man: Document `\_'. + * doc/groff.texinfo: Ditto. + Remove references to `\@' which isn't a valid escape sequence in + groff. + + + * tmac/unicode.tmac: Add ` and '. + * tmac/html.tmac: Load unicode.tmac. + +2007-09-14 Werner LEMBERG <wl@gnu.org> + + * tmac/unicode.tmac: Make `-' a pure input character by mapping it + to `hy'. + + * src/roff/troff/input.cpp (init_charset_table): Handle `hy'. + +2007-09-11 Werner LEMBERG <wl@gnu.org> + + * src/libs/libgroff/string.cpp (string::remove_spaces): Fix memory + allocation. + + * src/preproc/tbl/table.cpp (table::allocate): Initialize + `blockflag' array. + +2007-09-10 Keith Marshall <keith.d.marshall@ntlworld.com> + + * README.MinGW: Add warnings about use of MSYS-RXVT, and about + defective GnuWin32 versions of netpbm/libpng. + +2007-07-15 Keith Marshall <keith.d.marshall@ntlworld.com> + + * tmac/s.tmac (cov*first-page-init): Remove invoking trap, to avoid + possible recursion. + +2007-07-11 Werner LEMBERG <wl@gnu.org> + + * gendef.sh: Add shebang. + +2007-07-05 Werner LEMBERG <wl@gnu.org> + + * tmac/papersize.tmac: Fix dimensions of executive paper format. + Reported by John Rupley <rupley@u.arizona.edu>. + +2007-07-02 Keith Marshall <keith.d.marshall@ntlworld.com> + + * tmac/s.tmac (cov*first-page-init): Emit error message if not in + top-level environment. + +2007-06-12 Werner LEMBERG <wl@gnu.org> + + * src/devices/xditview/TODO, NEWS: Updated. + * src/devices/xditview/Makefile.sub (install_data, uninstall_sub): + Handle `GXditview-color'. + * src/devices/xditview/gxditview.man: Updated. + + * m4/groff.m4 (GROFF_APPRESDIR_CHECK): Updated. + * m4/codeset.m4, m4/glibc21.m4, m4/iconv.m4, m4/lib-link.m4: Updated + from `gnulib' git repository. + + * configure.ac: Updated. + * configure: Regenerated (using autoconf 2.61). + + * config.guess, config.sub: Updated from `config' CVS repository. + * config.rpath, install-sh, mkinstalldirs: Updated from `gnulib' git + repository. + +2007-06-12 Tadziu Hoffmann <hoffmann@usm.uni-muenchen.de> + + * src/devices/xditview/GXditview.ad: Split off color definitions + into... + * src/devices/xditview/GXditview-color.ad: This new file. + +2007-06-08 Fabrice Mnard <menard.fabrice@wanadoo.fr> + + * tmac/fr.tmac: Handle chapter system for `me'. + +2007-06-05 Tadziu Hoffmann <hoffmann@usm.uni-muenchen.de> + + * src/devices/xditview/xditview.c (main): Add support for + accelerators. + + * src/devices/xditview/GXditview.ad: Updated. + Make widget more colourful. + +2007-05-30 Werner LEMBERG <wl@gnu.org> + + * tmac/groff_mdoc.man: Convert `-' to `\-' where appropriate. + Recommend `tbl' instead of `-column' lists for more complicated + cases. + +2007-05-21 Werner LEMBERG <wl@gnu.org> + + * src/devices/grops/ps.cpp (ps_printer::set_char): Handle subfonts + correctly. + +2007-04-10 Werner LEMBERG <wl@gnu.org> + + In pic, make rounded boxes work with colors. Reported by Urs Eggli + <Urs.Eggli@zuerich.ch>. + + * src/preproc/pic/common.h (common_output), src/preproc/pix/output.h + (output): Add color parameter to `rounded_box' member function. + + * src/preproc/pic/common.cpp (common_output::rounded_box): Use it. + + * src/preproc/pic/object.cpp (box_object::print): Pass `color_fill' + to `out->rounded_box'. + +2007-04-09 Michail Vidiassov <master@iaas.msu.ru> + + * font/devps/generate/textmap: Add Greek letters and some more. + + * src/utils/afmtodit/afmtodit.tables: Change values of `Delta', + `Omega', and `mu' to the ones from aglfn.txt. + +2007-04-08 Keith Marshall <keith.d.marshall@ntlworld.com> + + * tmac/s.tmac (SN): Define unconditionally. + (SN-STYLE): New string; define. + + * NEWS, tmac/groff_ms.man, doc/groff.texinfo (SN-STYLE): Document it. + +2007-03-22 Werner LEMBERG <wl@gnu.org> + + * tmac/pspic.tmac: Fix harmless numeric overflow warning. Reported + by Jrg van den Hoff <j.van_den_hoff@fzd.de>. + +2007-03-20 Werner LEMBERG <wl@gnu.org> + + * tmac/trace.tmac (rn): Added. + (nr, ds, ds1, as, as1, substring): Restore escape character while + executing the macro. + (nr): Remove dead code. + + * src/preproc/eqn/box.cpp (box::top_level): Use \E in string + definitions to make them traceable. + +2007-03-19 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cpp (get_copy): Add third argument to control + whether \E shall be expanded. + (get_char_for_escape_name): Allow \E. + +2007-03-15 Werner LEMBERG <wl@gnu.org> + + * tmac/s.tmac (MO, CH, pg*OH, pg*EH, pg*OF, pg*EF, *, [., .], + par*define-font-macro, \[hooko]): Use \E to make it traceable. + + (ref*field): Add argument to control the space between previous and + current argument. + Update all callers. + (ref*add-N): Fix handling of opening parenthesis. Problem reported + by Jrg van den Hoff <j.van_den_hoff@fzd.de>. + +2007-03-14 Werner LEMBERG <wl@gnu.org> + + * tmac/trace.tmac (als): Added. + (de, de1, am, am1): Make traced macros aliased with .als work. + +2007-02-25 Werner LEMBERG <wl@gnu.org> + + * src/devices/xditview/TODO: Add some more items. + + * Makefile.comm (.man.n): Add @APPRESDIR@. + Sort entries. + + * src/devices/xditview/gxditview.man: Document GXditview resource + file. + Other documentation enhancements based on a patch from Jrg. + +2007-02-25 Tadziu Hoffmann <hoffmann@usm.uni-muenchen.de> + Joerg van den Hoff <j.van_den_hoff@fzd.de> + + * src/devices/xditview/GXditview.ad: Make all keys work regardless + of the current mouse position. + +2007-02-20 Werner LEMBERG <wl@gnu.org> + + * tmac/groff_man.man: Revised to improve visual appearance. + Reduce use of future tense. + + * tmac/groff_trace.man: Revosed to improve visual appearance. + +2007-02-19 Eric S. Raymond <esr@snark.thyrsus.com> + + Make groff.man viewer-portable. + + * tmac/groff.man: Eliminate use of .eo/.ec. + (.REQ): Surround args 2 through N with quotes. This will enable us + not to rely on the shift request, which is nonportable. + (ExecFF): Remove. The code is simpler without it. + +2007-02-18 Eric S. Raymond <esr@snark.thyrsus.com> + + * tmac/groff_www.man: Viewer-portability fixes. + +2007-02-16 Eric S. Raymond <esr@snark.thyrsus.com> + + * man/groff.man: Remove some unneeded code and a no-longer-used + inclusion of the www macros. + +2007-02-12 Werner LEMBERG <wl@gnu.org> + + * src/preproc/tbl/table.cpp (compute_span_width): Fix use of + AVAILABLE_REG. + (table::compute_widths): Simplify. + +2007-02-11 Werner LEMBERG <wl@gnu.org> + + * src/preproc/tbl/table.h: Don't include `stdbool.h'. + (table): Replace `bool' type with `char' for orthogonality. + Update all users. + + * src/preproc/tbl/table.cpp (block_entry::do_divert): Fix usage of + AVAILABLE_REG and COLCOUNT_REG. + (table::table): Fix order call of initializers. + (table::~table): Deallocate `blockflag'. + +2007-02-09 Eric S. Raymond <esr@snark.thyrsus.com> + + A try at the new rule for block column allocation is now enabled by + the new `experimental' global option: The horizontal space up to the + right margin which is not used by columns without text blocks is + evenly distributed to the columns with text blocks. + + It doesn't work right as yet; there appears to be some error in the + computation of `3avail', the available line length. The purpose of + this patch is (a) to make experimenting with other formulas easy, + and (b) leave the infrastructure for flag `experimental' in place + for future experiments. Do not document any behavior associated + with this flag! + + * src/preproc/tbl/table.h: Include `stdbool.h'. + (table): Make `flags' public. + Add `count_block_columns' function. + Add `blockflag' array. + Add `EXPERIMENTAL' enumeration value. + + * src/preproc/tbl/table.cpp (AVAILABLE_REG, COLCOUNT_REG): New + macros. + (table_entry): New member `parent' so that class and subclass + members can set a parent field. Update all users. + (block_entry::do_divert): Handle `EXPERIMENTAL' flag. + (block_entry::do_width): Set the parent's `blockflag'. + (table::allocate): Handle `blockflag'. + (table::count_block_columns): New function. + (compute_span_width): Adjust AVAILABLE_REG. + (table::compute_widths): Handle COLCOUNT_REG and AVAILABLE_REG. + + * src/preproc/tbl/main.cpp (process_options): Handle `experimental' + option. + +2007-02-08 Zhao, Yu (William) <yzhao2@alcatel-lucent.com> + + * src/devices/grodvi/dvi.cpp (draw_dvi_printer::draw) <'e'>: Set + line thickness. + +2007-02-08 Werner LEMBERG <wl@gnu.org> + + * man/groff_out.man (offset): Make it work reliably. + +2007-02-07 Eric S. Raymond <esr@snark.thyrsus.com> + + * man/groff_out.man: Simplify some font changes so \fP is less + likely to do something surprising. + + * man/groff_out.man: We can simplify the command macros still + further if we stop trying to hide structural requests inside them. + Also, fix some instances of \} at start of line without a dot, and + make some font changes explicit in strings. + + * man/groff_out.man: Cleanup -- remove now-unneeded uses of .do and + .cp. + + * man/groff_out.man: Final step: Reduce x-command, get rid of eo/ec + calls and fix macros to do without them. File should now be + viewer-portable. + + * man/groff_out.man: Fourth step: Eliminate use of eqn in favor of + micromotions that produce the same visual result and can be lifted + to XML-DocBook. + + * man/groff_out.man: Third step: Reduce Da-comand, fix a + call-sequence bug in the original. + + * man/groff_out.man: Second step: Reduce D-commmand and D-command+, + move font-change escapes to portable form. + + * man/groff_out.man: First step in macro simplification; eliminate + list1..n, simplify .offset and .index_offset so they no longer + require groff-specific features or eqn (instead, use troff + micromotions for subscripting). + +2007-02-06 Eric S. Raymond <esr@snark.thyrsus.com> + + * src/preproc/eqn/eqn.man: Minor corrections. + + * tmac/an-ext.tmac: Change .UR/.UE and .MT/.ME so the start macro no + longer takes a second argument that is pasted to the end of the + generated text. Instead, the end macro takes an argument that does + the same thing. + + * man/ditroff.man, man/groff_diff.man, man/groff.man, + man/groff_out.man, man/groff_tmac.man, man/roff.man, + src/roff/groff/groff.man, src/roff/grog/grog.man, + tmac/groff_man.man, tmac/groff_trace.man: Update accordingly. + + * src/roff/troff/troff.man: .SY and .YS are canned macros now, + so we can use them here. + +2007-02-05 Eric S. Raymond <esr@snark.thyrsus.com> + + * src/preproc/eqn/lex.cpp, src/preproc/eqn/eqn.man: + By popular demand, make ... set three lower dots again + and introduce a new predefined macro 'cdots' to set + three centered dots. + +2007-02-05 Werner LEMBERG <wl@gnu.org> + + * src/preproc/eqn/eqn.man: Revised. + + * src/preproc/eqn/text.cpp (map, special_char_boc::output): Use + `const'. + (spacing_type): Fix typo. + (special_to_entity): Use `const'. + Remove unused variable. + * src/preproc/eqn/other.cpp (font_box::output): Use `const'. + +2007-02-05 Eric S. Raymond <esr@snark.thyrsus.com> + + * src/devices/grotty/grotty.man: \m[] and \M[] aren't portable, + which is a shame as the effect was cute. + +2007-02-04 Eric S. Raymond <esr@snark.thyrsus.com> + + * man/groff_tmac.man, man/groff_diff.man: Portability conversion; + rip out over-elaborate macrology, use .EX/.EE and .UR/.UE where + possible, remove preamble declarations and macros that are no + longer needed. Conversion checked using the protocol described in + tmac/TESTING-HINTS. + +2007-02-03 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac (LP, IP, HP): Use .ns to suppress additional + vertical space. + +2007-02-03 Eric S. Raymond <esr@snark.thyrsus.com> + + * tmac/groff_man.man: Documented the extension macros, and + added portability advice. + + * MORE.STUFF: More-stuff entries for doclifter and pic2plot. + + + Add support for MathML output to eqn. + + The strategy used is very simple and relies on the fact that the box + models of eqn and Presentation MathML differ in only trivial ways. + It leaves the grammar and existing internal object structures + unchanged. A new global, `output_format', is defined as an + enumerated type with values {troff, mathml}. Most of the functions + and methods that emit actual output acquire a top-level conditional, + dispatching on this global, which has one arm for troff mode and one + for MathML mode. In most cases the MathML arm is drastically + simpler. + + (This strategy could be easily generalized to support other output + formats. TeX is a possibility that leaps to mind.) + + The only even moderately tricky changes are in the lexer. Some of + the predefined macros used constructs like `up', `down', `fwd', + `back', and `vcenter' that have no equivalents in MathML. I + attacked this problem in these ways: + + 1. I eliminated three uses of `back' to compose characters in favor + of using equivalent groff specials `\(<<', `\(>>', and `\(<>' + that did not exist when these macros were written. (This will be + a quality improvement for troff users.) + + 2. I eliminated one use of `vcenter' by using \\(md. (Likewise...) + + 3. I then split the table of pre-definitions in three; one large + common table and two small troff-specific and MathML-specific + tables. Use of troff-only operations (up, down, back, fwd, + vcenter) is now confined to the former. The latter now uses + `size big' and drops out the explicit positioning operations, + counting on MathML processors to do them. + + POTENTIAL TROUBLE SPOTS: + + Here are notes for reviewers on places I'm not 100% sure I've done + the right thing: + + * In the process of preparing the troff table, I translated three + definitions (dot_def, dotdot_def, and utilde def) that previously + used explicit \v escapes to use `up' and `down' instead. I + modeled the new definitions on the way `vec' and `dyad' work, but + it's possible I got something subtle wrong. + + * I'm not certain the MathML implementation of font_box::output() is + right, because I don't quite get what the switcheroo between + `current_roman_font' and `old_roman_font' is supposed to + accomplish. It does seem to generare good MathML, though. + + Finally, I made one purely cosmetic change in `text.cpp'; I replaced + with an enum some magic numbers for spacing types that I thought + were too ugly to live. + + REMAINING ISSUES: + + The entirety of eqn is translated when `-TMathML' is specified, + with the following exceptions... + + Limitations that cannot be fixed include non-support for special, + up/down/fwd/back, and vcenter. + + Limitations that might be fixable include non-support for mark and + lineup. I will investigate further, but if these can be implemented + at all it's going to be in a very complicated and nasty way. + + The way character boxes are output means that each digit of a + multi-digit number gets its own <mn></mn> tag pair in the MathHTML. + While this is not technically wrong for Presentation MathML, it is + ugly and inefficient. Fixing this will require implementing a + little state machine in the `text.cpp' output method. + + * src/preproc/eqn/box.cpp, src/preproc/eqn/delim.cpp, + src/preproc/eqn/eqn.h, src/preproc/eqn/eqn.man, + src/preproc/eqn/lex.cpp, src/preproc/eqn/limit.cpp, + src/preproc/eqn/list.cpp, src/preproc/eqn/main.cpp, + src/preproc/eqn/other.cpp, src/preproc/eqn/over.cpp, + src/preproc/eqn/pile.cpp, src/preproc/eqn/script.cpp, + src/preproc/eqn/sqrt.cpp, src/preproc/eqn/text.cpp, + src/preproc/eqn/eqn.man: MathML output mode. + + * NEWS: Document it. + +2007-02-02 Eric S. Raymond <esr@snark.thyrsus.com> + + * src/roff/groff/groff.man: Converted to use .SY/.OP/.YS + and for cross-viewer portability. Conversion checked + using the protocol described in tmac/TESTING-HINTS. + +2007-02-02 Werner LEMBERG <wl@gnu.org> + + * tmac/an-ext.tmac (ME): Don't use `\:'. + + * src/roff/grog/grog.man: Further refinements and normalizations. + +2007-02-02 Eric S. Raymond <esr@snark.thyrsus.com> + + * src/roff/grog/grog.man: Converted to use .SY/.OP/.YS and for + cross-viewer portability. Conversion checked using the protocol + described in tmac/TESTING-HINTS. + +2007-02-01 Eric S. Raymond <esr@thyrsus.com> + + * tmac/TESTING-HINTS: Added. + +2007-02-01 Eric S. Raymond <esr@thyrsus.com> + + Enable the support for Bell archaisms on .SC, so the `-r bell' + switch is no longer needed to format old AT&T papers like + the EQN user guide. + + * tmac/s.tmac (.SC, .UC, .P1, .P2): Updated. + + * tmac/groff_ms.man, doc/groff.texinfo, NEWS: Updated. + +2007-02-01 Eric S. Raymond <esr@thyrsus.com> + + Add some Bell labs extensions to the -ms macros. + + * tmac/s.tmac (.SC, .UC, .P1, .P2) [bell]: New macros. + + * tmac/groff_ms.man, doc/groff.texinfo, NEWS: Document `-r bell'. + +2007-01-30 Werner LEMBERG <wl@gnu.org> + + * tmac/an-ext.tmac (\n[EX]): Rename to \n[mX]. + (\n[mH]): New register (set if grohtml is used). + (\n[SY]): Rename to \n[mS]. + (\n[a]): Rename to \n[mA]. + (\n[i]): Rename to \n[mI]. + (mU): New auxiliary input trap macro. + (UR, UE): Replace stub with real definition. + (URL): Remove. + (MT, ME): New macros. + (MTO): Remove. + (EX, EE): Don't insert vertical space. + Use a register to store (and restore) the current font. + + * man/ditroff.man, man/groff_diff.man, man/roff.man: Revised, based + on patches from Eric Raymond. + Fix URL addresses. + +2007-01-22 Gaius Mulley <gaius@glam.ac.uk> + + * tmac/an-old.tmac (an-trap, HP): Make `HP' work as expected. + +2007-01-22 Werner LEMBERG <wl@gnu.org> + + * tmac/an-ext.tmac: Protect against being sourced twice. + (URL, EE): Use always two backslashes. + (MTO): New macro. + +2007-01-16 Werner LEMBERG <wl@gnu.org> + + * tmac/an-ext.tmac: Remove code for grodvi. + (SY): Fix typos. + Don't insert empty line. + (URL, TQ): Fix typos. + +2007-01-14 Werner LEMBERG <wl@gnu.org> + + * tmac/an-ext.tmac: New file, containing extension macros + for -man. See discussion on the groff mailing list for + background information. + * tmac/an-old.tmac: Load an-ext.tmac. + Decorate .ds and as with comment escapes where appropriate. + * tmac/Makefile.sub (NORMALFILES): Add an-ext.tmac. + +2007-01-05 Werner LEMBERG <wl@gnu.org> + + * src/preproc/tbl/tbl.man: Document .T# and \n[TW]. + +2007-01-04 Gaius Mulley <gaius@glam.ac.uk> + + Make -me macros ready for grohtml. + + * tmac/e.tmac: Load devtag.tmac. + (need_eo_h, need_eo_tl, need_tl): New registers. + (check_need_title, (x-html, )x-html, xp-html): New macros. + (@h, hl, ip, @p, sh, (b, (l, EQ, EN, TS, TE, PS, PE, GS, GE, r, i, + b, rb, bi, bx, (x, )x, xp): Adapt for use with grohtml. + (bp): Rename to @b only if output device is not html. + +2007-01-01 Werner LEMBERG <wl@gnu.org> + + * man/groff_font.man: Document empty lines. + + * src/utils/afmtodit/afmtodit.pl: Always print a header comment at + the very beginning of the output. + [!$opt_x]: Fix typo. + + * font/devps/*: Regenerate font definition files. + +2007-01-01 Werner LEMBERG <wl@gnu.org> + + * font/devps/generate/Makefile (AFMTODIT): Use -c flag. + + * font/devps/*: Regenerate font definition files. + +2006-12-31 Werner LEMBERG <wl@gnu.org> + + * Makefile.in (oldfontdir): New variable. + (MDEFINES): Add $(oldfontdir). + (uninstall_dirs): Remove `current' link. + Remove $(oldfontdir). + + * Makefile.comm (oldfontsubdir): New variable. + (install_dev): Install files collected in $(OLDDEVFILES) into + $(oldfontsubdir). + (uninstall_dev): Remove data in $(oldfontsubdir). + (.man.n): Handle @OLDFONTDIR@. + + * src/devices/grodvi/grodvi.man, src/devices/grohtml/grohtml.man, + src/devices/grolbp/grolbp.man, src/devices/grolj4/grolj4.man, + src/devices/grotty/grotty.man, src/devices/xditview/gxditview.man: + Document GROFF_FONT_PATH. + + * src/devices/grops/grops.man: Document GROFF_FONT_PATH and + old font description files. + + * font/devps/Makefile.sub (OLDDISTFILES, OLDDEVFILES): New + variables. + + * font/devps/old/*: New directory, holding the previous version + of the 35 Adobe core font description files. + + * font/devps/*: Regenerated the 35 Adobe core fonts, using the + Adobe-Core35_AFMs-229.tar.bz2 bundle from ftp.dante.de. + + * NEWS: Document font update. + +2006-12-31 Werner LEMBERG <wl@gnu.org> + + * font/devps/generate/Makefile (symbolsl.afm): Use $(srcdir). + + * Makefile.comm (fonts): New (empty) target. + * Makefile.in (TARGETS): Add `fonts'. + + * MANIFEST: Add `chem'. + + * doc/groff.texinfo (Changing Fonts): Font translations with .ftr + can't be chained. + +2006-12-26 Werner LEMBERG <wl@gnu.org> + + * src/preproc/grn/hdb.cpp: Include gprint.h later. From NetBSD. + +2006-12-19 Werner LEMBERG <wl@gnu.org> + + Add support for German. For activation, simply use -mde or -mden + (for traditional and new orthgraphy, respectively) as the last + macro package. + + * tmac/de.tmac, tmac/den.tmac, tmac/hyphen.det, tmac/hyphen.den, + tmac/hyphenex.det: New files, partly taken from CTAN. + * LICENSES: Updated list of hyphenation patterns. + * man/groff_tmac.man: Mention de.tmac and den.tmac. + * NEWS: Updated. + +2006-12-11 Werner LEMBERG <wl@gnu.org> + + Support up to 32 macro arguments in pic (and up to 16 on EBCDIC + hosts). + + * src/preproc/pic/lex.cpp (ARG1): Redefine. Update all users. + (MAX_ARG): New macro. Use it everywhere to replace hard-coded + limit of 9 arguments. + (process_body): Handle argument numbers with more than a single + digit. + (interpolate_macro_with_args): Protect against exceeding number of + arguments. + + * NEWS, src/preproc/pic/pic.man, doc/pic.ms: Document it. + +2006-12-10 Werner LEMBERG <wl@gnu.org> + + * Makefile.in (site.exp, docheck): Commented out. Not working + currently. + (check): Just emit dummy message. + +2006-12-08 Werner LEMBERG <wl@gnu.org> + + During installation, create soft link from <version> to `current' in + <datadir>/groff. + + * Makefile.comm (install): Renamed to... + (do_install): This. + (prefix_must_exist): Removed. Code moved to Makefile.in. + + * Makefile.in (TARGETS): Remove `install'. + + (install): New target which first creates the directory given by + --prefix, then calling `make' to do the installation, and finishing + with the creation of the soft link. + +2006-11-21 Werner LEMBERG <wl@gnu.org> + + * doc/Makefile.sub (uninstall_sub): Fix names for info files. + +2006-11-18 Werner LEMBERG <wl@gnu.org> + + * man/roff.man, doc/groff.texinfo: Improve history of roff, based on + information from Tom Van Vleck <thvv@multicians.org>. + +2006-11-16 Werner LEMBERG <wl@gnu.org> + + * tmac/62bit.tmac: New macro package. + * tmac/Makefile.sub (NORMALFILES): Add it. + * NEWS: Document it. + + * tmac/trace.tmac: Protect against being loaded again. + (nr): Always show result. + + * doc/groff.texinfo (Input Encodings): Document latin-5. + + * man/grof_tmac.man: Document sv, latinX, cp1047, 60bit, ec. + +2006-11-13 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo (Page Location Traps) [.wh]: Give more details + on negative trap positions. + +2006-11-10 Werner LEMBERG <wl@gnu.org> + + * Makefile.comm (.man.n): Handle @DATASUBDIR@. + +2006-11-09 Werner LEMBERG <wl@gnu.org> + + * INSTALL: Move information about external installation from + INSTALL.gen into this file. + Updated. + + * INSTALL.gen: Update to new version (from texinfo CVS). + +2006-11-09 Bernd Warken <groff-bernd.warken-72@web.de> + + * INSTALL.gen: Extend the file by information on `external + installation'. Reorder the installation instruction as `normal + installation'. + +2006-11-08 Werner LEMBERG <wl@gnu.org> + + * doc/Makefile.sub (install_data): Take care of proper paths while + installing info files. Bug reported by + Bernd Warken <groff-bernd.warken-72@web.de>. + +2006-11-06 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/grog.pl: Rewrite. + - Call by `#! /usr/bin/env perl'. That isn't replaced. + - Rename usage() to version(). + - Use warnings. + - For `use strict', start all global variables with an upper case + character. Use `my' for all variables. Use several new variables. + - Add option `-h'. + - Add copyright to GPL and Emacs comment. + - Handle several `-m*' options. + - Fix handling of `-ms' and `-mm'. Add .TL and .NH. + - Allow options after file names. + - Allow only one `-' parameter (standard input). + - Add option abbreviations. + - Expand the usage information. + - Add `chem'. + - Add single quote "'" as additional first character and allow + arbitrary space after the first character. + + * src/roff/grog/grog.sh: Rewrite. + - Remove option `-e' of `sed'. + - Allow file names with space characters. + - Add option `-h'. + - Add copyright to GPL. + - Handle several `-m*' options. + - Fix handling of `-ms' and `-mm'. Add .TL and .NH. + - Allow options after file names. + - Allow only one `-' parameter (standard input). + - Add option abbreviations. + - Expand the usage information. + - Add `chem'. + - Add single quote "'" as additional first character and allow + arbitrary space after the first character. + + * src/roff/grog/Makefile.sub: + - Add copyright to GPL. + - Remove `grog:'. Move `grog.old:' to `grog:' in order to have a + fair chance to choose between the shell version and the Perl + version of `grog'. This is now again comparable to grog in groff + version 1.10. + + * src/roff/grog/grog.man: Rewrite. + - Move the license to GPL. + - New sections: OPTIONS, DETAILS, EXAMPLES, COPYING. + - Take over some setup and macros from `groffer'. + - Add information on options. + +2006-10-28 Werner LEMBERG <wl@gnu.org> + + * tmac/trace.tmac: Improve tracing of `.nr'. + Trace `.substring' also. + + * NEWS: Updated. + +2006-10-28 Bernd Warken <groff-bernd.warken-72@web.de> + + * man/roff.man, src/roff/groff/groff.man: Add `chem', fix position + of groff development site, fix fonts. + + * News: Add information on `chem' and `groffer'. + +2006-10-26 Bernd Warken <groff-bernd.warken-72@web.de> + + * Makefile.in (OTHERDIRS, NOMAKEDIRS): Add `chem' bundle. + +2006-10-26 Werner LEMBERG <wl@gnu.org> + + Add `\$^' escape to handle the parameters to a macro as a string + argument. + + * src/roff/troff/input.h (DOUBLE_QUOTE): New special character. + + * src/roff/troff/input.cpp (input_iterator, input_stack, + macro_iterator): Add `space_follows_arg' member function. + (macro_iterator::add_arg): Add parameter to set the `space_follows' + flag. + (arg_list): Add member `space_follows'. + Update constructor and all callers. + (decode_args): Store discarded double quotes. + (interpolate_args): Handle DOUBLE_QUOTE. + Add `\$^' escape. + (get_copy, token::next, composite_glyph_name): Handle DOUBLE_QUOTE. + + * tmac/trace.tmac: Trace .nr, .ds, .ds1, .as, .as1. + + * docs/groff.texinfo (Parameters), man/groff.man, + man/groff_diff.man, NEWS: Document it. + +2006-10-24 Bernd Warken <groff-bernd.warken-72@web.de> + + * Makefile.in (NOMAKEDIRS): Add groffer subdirectories. + +2006-10-24 Werner LEMBERG <wl@gnu.org> + + * tmac/groff_trace.man: Mention problem with `\\\\'. + +2006-10-23 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo (Expressions): Improve documentation of `!'. + + * tmac/trace.tmac (return): Don't call `substring'. + +2006-09-10 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cpp (read_size): Revert previous change + w.r.t. `\s-[-...]'. + + * doc/groff.texinfo (Fractional Size Types): Clarify syntax of \s. + +2006-09-09 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cpp (read_size): Fix `\s[-\n[.s]]' so that it + behave the same as `\s-[\n[.s]]' (this is, emit a warning and set + point size to 1). Reported by Gunnar Ritter. + Also catch `\s-[-...]' and friends (causing an error). + +2006-09-06 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/env.cpp (environment::do_break): Insert zero-width + space only if there is no previous space. This fixes a bug which + caused unwanted filling of the last line in a paragraph. Thanks to + Gunnar Ritter for an analysis. + +2006-09-03 Werner LEMBERG <wl@gnu.org> + + * src/roff/groff/groff.cpp (main): Pass -U flag to pic also. + Reported by Jennifer Sayers <jenjen@isu.usyd.edu.au>. + +2006-09-01 Nick Stoughton <nick@msbit.com> + Werner LEMBERG <wl@gnu.org> + + Add a request `pev' to print environment information (similar to + `pnr' and `ptr' to print number registers and traps). + + * src/roff/troff/env.h (environment): Add member function print_env. + + * src/roff/troff/env.cpp: (environment::print_env): New function to + print a given environment state. + (print_env): New global function to iterate through the + environments, printing each one. + (init_env_requests): Register `pev'. + + * doc/groff.texinfo (Debugging), man/groff.man, man/groff_diff.man, + NEWS: Document `pev' request. + +2006-09-01 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/preproc/soelim/soelim.cpp (usage): Fix option argument of + `-I' to `dir'. + +2006-09-01 Werner LEMBERG <wl@gnu.org> + + * src/preproc/pic/main.cpp (usage): Add missing options. + +2006-08-25 Werner LEMBERG <wl@gnu.org> + + * src/preproc/soelim/soelim.man: Document how to insert `\' and ` ' + in file names. + +2006-08-19 Werner LEMBERG <wl@gnu.org> + + * configure: Regenerated. + +2006-08-18 Keith Marshall <keith.d.marshall@ntlworld.com> + + * m4/groff.m4 (GROFF_MAKEINFO): Correct `makeinfo version testing + logic; it previously caused an `expr' syntax error, if no version of + `makinfo' was present. Also, remove dependency on `makeinfo' in VPATH + builds, if an up to date `groff.info' is present in either `builddir' + or in `srcdir'. + +2006-08-12 Tadziu Hoffmann <hoffmann@usm.uni-muenchen.de> + + * font/devps/prologue.ps: Add BPhook. + + * src/devices/grops/grops.man: Document BPHook. + Reorder some sections for better readability. + +2006-08-12 Werner LEMBERG <wl@gnu.org> + + * src/include/lib.h (getlocale): New macro. + (setlocale, LC_ALL, LC_CTYPE) [!HAVE_SETLOCALE]: Define, as + suggested by Bruno. + + * src/preproc/preconv/preconv.cpp (main): Use getlocale. + +2006-08-11 Werner LEMBERG <wl@gnu.org> + + Add new flag to .cflags to enable hyphenation without looking at + hcode values. + + * src/roff/troff/charinfo.h (charinfo): New enumeration value + `IGNORE_HCODES'. + New member function `ignore_hcodes'. + + * src/roff/troff/node.cpp (break_char_node::add_self, + node::add_char): Updated. + + * doc/groff.texinfo, man/groff_diff.man, NEWS: Document it. + +2006-08-09 Werner LEMBERG <wl@gnu.org> + + Support composite Unicode characters again. Reported by Colin. + + * font/devhtml/R.proto: Renamed to... + * font/devhtml/R.in: This. + + * font/devutf8/R.proto: Renamed to... + * font/devutf8/R.in: This. + Add `charset' line. + + * font/make-Rproto: New script. + * font/devhtml/R.proto, font/devutf8/R.proto: Generated. + +2006-07-26 Werner LEMBERG <wl@gnu.org> + + * README: Fix description of CVS access. Reported by Joachim. + +2006-07-11 Werner LEMBERG <wl@gnu.org> + + Add a request `.fzoom' and a number register `.zoom' to magnify + fonts. + + * src/include/font.h (font): Add member variable `zoom'. + Add member functions `set_zoom' and `get_zoom'. + Remove `static' attribute from `scale' member function. + + * src/libs/libgroff/font.cpp (font::font): Updated. + (scale_round): New version with three parameters to handle zoom + factor. + (font::scale, font::get_width): Handle zoom factor. + (font::set_zoom, font::get_zoom): New functions. + (font::load): Handle `zoom' while computing `space_width'. + + * src/roff/troff/env.h: Declare `env_get_zoom'. + (environment): Add member function `get_zoom'. + + * src/roff/troff/env.cpp (environment::get_zoom): New function. + (init_env_requests): Initialize `.zoom' register. + + * src/roff/troff/node.cpp (font_info): New member functions + `set_zoom' and `get_zoom'. + (tfont): New member function `get_zoom'. + (env_get_zoom): New function. + (troff_output_file::set_font): Handle zoom factor. + (font_zoom_request): New function. + (init_node_requests): Initialize `fzoom' request. + + * docs/groff.texinfo (Changing Fonts), man/groff.man, + man/groff_diff.man, NEWS: Document `fzoom' request and `.zoom' + register. + + * src/roff/troff/TODO: Updated. + +2006-07-10 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo (Drawing Requests): Improve documentation of + \D'P ...'. + +2006-07-02 Werner LEMBERG <wl@gnu.org> + + * man/groff_tmac.man: Document usage of .PSPIC within diversions. + +2006-07-01 Werner LEMBERG <wl@gnu.org> + + * tmac/pspic.tmac: Make .PSPIC work for all devices. + Print image file name for devices which don't support PS image + inclusion. + Handle multiple inclusions. + Add lots of comments. + + * tmac/dvi.tmac, tmac/html.tmac, tmac/ps.tmac: Don't load + pspic.tmac. + + * tmac/troffrc: Load pspic.tmac. + + * man/groff_tmac.man: Update .PSPIC documentation. + + * NEWS: Updated. + +2006-06-29 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cpp (interpolate_macro): + s/probably/possibly/, as suggested by Keith. + +2006-06-28 Werner LEMBERG <wl@gnu.org> + + Add support for \D'p...' to grotty. + + * src/devices/grotty/grotty.cpp (tty_printer::draw): Move most of + its code to... + (tty_printer::line): This function. + (tty_printer::draw): Rewritten; just call either draw_line or + draw_polygon. + (tty_printer::draw_line, tty_printer::draw_polygon): New functions. + + * src/devices/grotty/grotty.man, NEWS: Document it. + +2006-06-27 Werner LEMBERG <wl@gnu.org> + + * src/preproc/refer/command.h (have_bibliography): New variable + declaration. + + * src/preproc/refer/command.cpp (bibliography_command): Set + `have_bibliography'. + + * src/preproc/refer/refer.cpp: Initialize `have_bibliography'. + (output_references): Emit warning only if `have_bibliography' is + set. + +2006-06-15 Michail Vidiassov <master@iaas.msu.ru> + + * font/devps/Makefile.sub (DISTFILES): Add freeeuro.afm. + * font/devps/generate/Makefile (clean): Don't remove symbolsl.afm + and zapfdr.afm. + +2006-06-15 Werner LEMBERG <wl@gnu.org> + + * src/preproc/tbl/tbl.man: Document limitations of .TS/.TE within a + macro (as suggested by Tadziu Hoffmann). + +2006-06-12 Werner LEMBERG <wl@gnu.org> + + * src/preproc/tbl/tbl.man: Add example for use of .TS/.TE within a + macro (as suggested by Tadziu Hoffmann). + +2006-06-05 Werner LEMBERG <wl@gnu.org> + + * tmac/strip.sed: Strip `\#' also. + + * doc/groff.texinfo (Operators in Conditionals): Document usage of + \? for string comparison. + +2006-06-04 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Add more index entries for copy-in mode. + (Changing Fonts) <.ft>: Document that a font definition file must + not be called `DESC'. + +2006-05-31 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/input.cpp (token::next) <\N>: Catch negative values + here. + + * doc/Makefile.sub (EXAMPLEFILES): Move gnu.eps to... + (PROCESSEDEXAMPLEFILES): Here. + +2006-05-30 Werner LEMBERG <wl@gnu.org> + + * src/libs/libgroff/font.cpp (font::load): Reject fonts called + `DESC'. + Reduce number of false positives for `.if F ...' conditionals. + Improve warning messages. + +2006-05-29 Werner LEMBERG <wl@gnu.org> + + * tmac/Makefile.sub: Add copyright notice. + (NORMALFILES): Add man.tmac and ms.tmac. + (SPECIALFILES): Remove man.tmac and ms.tmac. + (CLEANADD): Remove man.tmac-sed and ms.tmac-sed. + (install_data, uninstall_sub): Don't handle man.tmac and ms.tmac + specially. + (stamp-sed): Don't handle man.tmac and ms.tmac. + Remove obsolete components in sed's regexp. + + * doc/Makefile.sub (EXAMPLEFILES): Add gnu.eps. + + * Makefile.in (OTHERDIRS, NOMAKEDIRS): Add hdtbl. + +2006-05-28 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo (History): Correct death circumstances of Joe + Ossanna. + +2006-05-27 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac (an-do-tag): Simplify. + +2006-05-26 Werner LEMBERG <wl@gnu.org> + + * tmac/an-old.tmac (an-do-tag): Make margin characters work. + (an-header, an-p-footer): Use named environment. + + * src/roff/troff/env.cpp (environment::copy): Copy margin character + node. + +2006-05-21 Werner LEMBERG <wl@gnu.org> + + * tmac/trace.tmac (de1): Fix serious typo (.di -> .do) and minor + omissions. + +2006-05-11 Keith Marshall <keith.d.marshall@ntlworld.com> + + * src/roff/groff/groff.man: Remove superfluous word `intermediate'. + +2006-05-10 Keith Marshall <keith.d.marshall@ntlworld.com> + + * src/roff/groff/groff.man: Update copyright notice. + Improved wording to describe effect of `-Z' option. + +2006-05-06 Werner LEMBERG <wl@gnu.org> + + * tmac/www.tmac: Decorate `.ds' with trailing `\"' where missing. + Normalize handling of `"' in arguments. + (PIMG): Remove debug message. + Simplify code. + +2006-05-05 Werner LEMBERG <wl@gnu.org> + + * src/devices/grohtml/post-html.cpp (page::add_and_encode): Don't + swallow character immediately after `\[...]'. + Simplify code. + +2006-05-02 Gaius Mulley <gaius@glam.ac.uk> + + * tmac/www.tmac (PIMG): Fix the HTML device specific components. + +2006-05-02 Larry Kollar <kollar@alltel.net> + + * tmac/www.tmac (PIMG): Really default to `-C' if the alignment + option is missing. + +2006-04-30 Michail Vidiassov <master@iaas.msu.ru> + + * src/utils/afmtodit/afmtodit.pl: New option `-c' to add font + information as a comment in output. + * src/utils/afmtodit/afmtodit.man, NEWS: Document it. + +2006-04-26 Werner LEMBERG <wl@gnu.org> + + * src/devices/grohtml/post-html.cpp (html_printer::~html_printer): + Handle current_paragraph only if it is non-NULL. + + * src/libs/libdriver/input.cpp (parse_x_command <'F'>, do_file + <'F'>): Use `get_extended_arg' to behave as documented. Reported by + Bill Ward <william.a.ward.jr@erdc.usace.army.mil>. + + + Surround the (pseudo) file name for the .pso request with `<' and + `>'. + + * src/roff/troff/node.cpp (real_output_file, troff_output_file): Add + second parameter to `really_put_filename' and `put_filename'. + (troff_output_file::really_put_filename): Emit `<' and `>' around + filename if second argument is set. + * src/roff/troff/node.h: Updated. + + * src/roff/troff/input.cpp (file_iterator::file_iterator, + file_iterator::set_location): Update to changes in node.cpp. + +2006-04-25 Tetsurou Okazaki <okazaki@FreeBSD.org> + + * src/preproc/preconv/preconv.cpp (do_file): Fix conditional + preprocessor expression (I18N -> HAVE_ICONV). + (main): Fix handling of option `-h'. + Fix conditional preprocessor expression. + +2006-04-04 Werner LEMBERG <wl@gnu.org> + + Implement new number register `.br' which is set to 1 if a macro has + been called as .foo and to 0 if called as 'bar. This is useful for + -mtrace so that requests can be reliably traced too. + + * src/roff/troff/input.cpp (input_iterator): Add virtual function + `get_break_flag'. + (macro_iterator): Add `with_break' member and `get_break_flag' + function. + Update constructors. + (input_stack): Add function `get_break_flag'. + (break_flag_reg): New number register class. + (input_init_requests): Register `.br'. + + * src/roff/troff/TODO: Updated. + + * tmac/trace.tmac: s/!!sp/!!!sp/. + Modify definitions of `de', `de1', `am', and `am1' to use \n[.br]. + + * docs/groff.texinfo (Requests), man/groff.man, man/groff_diff.man, + NEWS: Document it. + +2006-03-29 Werner LEMBERG <wl@gnu.org> + + * src/devices/grops/ps.cpp: s/must not/should not/ in warning + messages where appropriate. + +2006-03-28 Werner LEMBERG <wl@gnu.org> + + * configure.ac: Call AC_PROG_EGREP. + * configure: Regenerated. + + * Makefile.in (EGREP): New variable. + (MDEFINES): Add $(EGREP). + + * src/roff/grog/grog.sh: Treat .TH between .TS and .TE properly + (bug reported by Robert Goulding <Goulding.2@nd.edu>). + Use @EGREP@. + + * src/roff/grog/Makefile.sub (grog, grog.old): Use $(EGREP). + +2006-03-27 Werner LEMBERG <wl@gnu.org> + + Add two requests `.device' and `.devicem' which are equivalent to + `\X' and `\Y', respectively. + + * src/roff/troff/input.cpp (device_request, device_macro_request): + New functions. + (init_input_requests): Register them. + + * doc/groff.texinfo (Postprocessor Access), man/groff_diff.man, + man/groff.man, NEWS: Document them. + +2006-03-27 Gaius Mulley <gaius@glam.ac.uk> + + * src/roff/troff/input.cpp (encode_char): Emit special characters + for -Thtml as `\[...]'. + * src/devices/grohtml/post-html.cpp (page::add_and_encode): Updated. + + * doc/groff.texinfo (Postprocessor Access) <\X>: Updated. + +2006-03-27 Werner LEMBERG <wl@gnu.org> + + * tmac/Makefile.sub (NORMALFILES, SPECIALFILES): Add various missing + files. + +2006-03-26 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo (Writing Macros): More documentation on + end-of-macro symbol of `.de'. + (Diversions): Minor addition to `.di' description. + + * src/devices/grops/grops.man: Some clarifications regarding + insertion of PostScript snippets. + +2006-03-25 Michail Vidiassov <master@iaas.msu.ru> + + Add rules to generate `symbolsl.afm'. + + * font/devps/generate/zapfdr.sed, + font/devps/generate/symbolsl.awk: New files. + + * font/devps/generate/Makefile (symbolfont, PRINTAFM): New + variables. + (SS, clean): Updated. + (freeeuro.afm): Use $(srcdir). + (symbolsl.afm): New rule. + (zapfdr.afm): Use zapfdr.sed. + +2006-03-22 Dwight Aplevich <aplevich@uwaterloo.ca> + + * src/preproc/pic/pic.y (expr <INT>): Fix code. + +2006-03-22 Jrgen Grahn <jgrahn@algonet.se> + + * tmac/sv.tmac: Add missing translations and activate support for + other macro packages. + +2006-03-21 Francis GUDIN <fgudin@nerim.net> + + * tmac/doc-syms (Dx): New macro to identify DragonFly. + (doc-str-St--ieee1275-94, doc-str-St--isoC-amd1, + doc-str-St--isoC-tcor1, doc-str-St--isoC-tcor2): New standard + strings. + (doc-operating-system-FreeBSD-5.5, doc-operating-system-FreeBSD-7.0, + doc-operating-system-NetBSD-1.6.3, doc-operating-system-NetBSD-4.0 + doc-operating-system-DragonFly-*): New operating system strings. + + * tmac/groff_mdoc.man, NEWS: Document `Dx'. + +2006-03-21 Werner LEMBERG <wl@gnu.org> + + * src/preproc/pic/pic.y (object_spec THEN): For compatibility with + both DWB pic and dpic, make + + right; + line then down; + + equal to + + right; + line right then down; + + instead of + + right; + line 0 then down; + + * doc/pic.ms: Document this. + +2006-03-20 Werner LEMBERG <wl@gnu.org> + + * doc/pic.ms: With permission of Eric Raymond, put it under the + GPL. + + * NEWS: Updated. + +2006-03-19 Werner LEMBERG <wl@gnu.org> + + * src/preproc/pic/pic.y (expr <INT>): Really return integer part. + + * src/preproc/pic/objects.cpp (object_spec::make_line): Handle `at' + attribute in combination with `with'. Bug reported by Jennifer + Sayers <jenjen@mail.usyd.edu.au>. + +2006-03-19 Miklos Somogyi <msom@netspace.net.au> + + * doc/groff.texinfo (Manipulating Spacing): Improve documentation of + `.sp'. + +2006-03-18 Werner LEMBERG <wl@gnu.org> + + * LICENSE: Renamed to... + * LICENSES: This. Collect all licensing information in this file. + * tmac/README, src/libs/snprintf/README: Removed. + + * src/devices/grops/grops.man: Add section how to install fonts. + + * src/utils/xtotroff/xtotroff.c: Add GPL. + +2006-03-17 Werner LEMBERG <wl@gnu.org> + + * Makefile.comm (.y.cpp): Fix #line arguments in output. + +2006-03-13 Werner LEMBERG <wl@gnu.org> + + * src/preproc/tbl/tbl.man: Mention default length of text blocks. + + * tmac/doc-common (Os): Add more Darwin versions. + * tmac/groff_mdoc.man: Document them. + + * doc/groff.texinfo (Operators in Conditionals): Mention that `c' + works with \N'...' also. + * man/groff_diff.man: Ditto. Remove use of future tense where + possible. + +2006-03-12 Michail Vidiassov <master@iaas.msu.ru> + + * font/devps/generate/make-zapfdr, font/devps/symbolsl.ps, + font/devps/zapfdr.ps: Add `%%EndComments' line. + +2006-03-10 Larry Kollar <kollar@alltel.net> + + * doc/groff.texinfo (Headers and footers): Document PT, HD, and BT. + +2006-03-10 Werner LEMBERG <wl@gnu.org> + + * src/devices/grops/ps.cpp (ps_printer::do_exec, ps_printer::do_def, + ps_printer::do_mdef): Overlong lines now cause a warning message, + not an error. + +2006-03-09 Werner LEMBERG <wl@gnu.org> + + * font/devps/generate/make-zapfdr: New script for generating + `zapfdr.ps'. + +2006-03-08 Werner LEMBERG <wl@gnu.org> + + * doc/groff.css (pre): Fix `background-color' value. + +2006-03-04 Larry Kollar <kollar@alltel.net> + + * tmac/groff_ms.man: Document PT, HD, and BT. + +2006-03-04 Werner LEMBERG <wl@gnu.org> + + * src/roff/troff/node.cpp (make_glyph_node): Improve warning message + for single-letter glyph names. + +2006-03-02 Werner LEMBERG <wl@gnu.org> + + * tmac/sv.tmac: New file; currently holding only the Swedish strings + for -mm. + * tmac/hyphen.sv: New hyphenation pattern file for Swedish, taken + from CTAN. + * tmac/README: Updated. + +2006-02-27 Werner LEMBERG <wl@gnu.org> + + * tmac/trans.tmac (Liec, Letdate, Letns!14): Add it (for -mm). + * tmac/fr.tmac: Add French translations. + + * tmac/composite.tmac: Add entry for `:'. + +2006-02-26 Werner LEMBERG <wl@gnu.org> + + * doc/Makefile.sub (HTMLEXAMPLEFILESALL): New variable. + (CLEANADD): Use it. + (install_html, uninstall_sub): Updated. + +2006-02-26 Bruno Haible <bruno@clisp.org> + + Introduce Unicode fonts. + + * font/devhtml/DESC.proto: Mark as unicode. + * font/devhtml/R.proto: Remove all charset entries that are already + in glyphuni.cpp. + * font/devutf8/DESC.proto: Mark as unicode. + * font/devutf8/R.proto: Remove all charset entries. + * src/include/font.h (font): New static field `is_unicode'. + Change order of fields. + * src/libs/libgroff/font.cpp: Include unicode.h. + (font::font): Update for changed order of fields. + (font::contains, font::get_width, font::get_height, font::get_depth, + font::get_italic_correction, font::get_left_italic_correction, + font::get_subscript_correction, font::get_character_type, + font::get_code, font::get_special_device_encoding): Handle both the + explicitly enumerated glyphs and use general code for Unicode fonts. + (font::load): Make the charset section optional when the font is + declared unicode. + (font::load_desc): Recognize the `unicode' attribute. + * src/libs/libgroff/fontfile.cpp (font::is_unicode): New variable. + +2006-02-26 Claudio Fontana <claudio@gnu.org> + + * Makefile.in: Add comment about DESTDIR. + + * Makefile.sub: Add DESTDIR to install and uninstall targets + to support staged installations. + * Makefile.comm: Likewise. + * doc/Makefile.sub: Likewise. + * contrib/eqn2graph/Makefile.sub: Likewise. + * contrib/grap2graph/Makefile.sub: Likewise. + * contrib/pic2graph/Makefile.sub: Likewise. + * src/devices/xditview/Makefile.sub: Likewise. + * src/preproc/eqn/Makefile.sub: Likewise. + * src/roff/grog/Makefile.sub: Likewise. + * src/roff/nroff/Makefile.sub: Likewise. + * src/utils/afmtodit/Makefile.sub: Likewise. + * src/utils/indxbib/Makefile.sub: Likewise. + * tmac/Makefile.sub: Likewise. + +2006-02-24 Werner LEMBERG <wl@gnu.org> + + * src/libs/libgroff/glyphuni.cpp (glyph_to_unicode_list): Use entry + for \-. + Remove commented out entries for \' and \` (there are no such glyph + names). + + * src/libs/libgroff/uniglyph.cpp (unicode_to_glyph_list): Remove + commented out entries for \' and \`. + + + * */*: s/legal/valid/ where appropriate. + +2006-06-23 Werner LEMBERG <wl@gnu.org> + + * font/devhtml/R.proto, font/devutf8/R.proto: Remove incorrect \' + and \` entries. + +2006-02-22 Werner LEMBERG <wl@gnu.org> + + Remove all remaining traces from the `shc' glyph. + + * src/libs/libgroff/glyphuni.cpp (glyph_to_unicode_list), + src/libs/libgroff/uniglyph.cpp (unicode_to_glyph_list): Remove + entry for `shc'. + + * font/devlatin1/R.proto, font/devcp1046/R.proto: Replace `shc' + entry with unnamed glyph. + + * tmac/html/tmac: Remove `shc' entry from call to `.cflags'. + + * src/preproc/preconv/preconv.cpp (unicode_entity): Handle U+00AD + specially. + +2006-02-22 Bruno Haible <bruno@clisp.org> + + Concretize the `glyph' datatype. + + * src/include/font.h (glyph): Remove class. + (glyph): Renamed from struct `glyphinfo'. + (glyph_to_index): New inline function. + (glyph_to_name): Make extern, not inline. + (glyph_to_number): Update. + (font): Use `glyph *' instead of `glyph'. + + * src/libs/libgroff/nametoindex.cpp (charinfo): Inherit from class + `glyph'. Make `name' field public. + (character_indexer, number_to_glyph, name_to_glyph): Use `glyph *' + instead of `glyph'. + (glyph_to_name): Renamed from `glyph::glyph_name'. + + * src/roff/troff/charinfo.h (charinfo): Inherit from class `glyph'. + Use `glyph *' instead of `glyph'. + + * src/roff/troff/input.cpp (name_to_glyph, number_to_glyph): Use + `glyph *' instead of `glyph'. + (glyph_to_name): Renamed from `glyph::glyph_name'. + + * src/libs/libgroff/font.cpp: Use `glyph *' instead of `glyph', + and `glyph_to_index' instead of `glyph::glyph_index'. + + * src/include/printer.h (printer): Use `glyph *' instead of `glyph'. + * src/libs/libdriver/printer.cpp: Likewise. + * src/devices/grodvi/dvi.cpp: Likewise. + * src/devices/grohtml/post-html.cpp: Likewise. + * src/devices/grolbp/lbp.cpp: Likewise. + * src/devices/grolj4/lj4.cpp: Likewise. + * src/devices/grops/ps.cpp: Likewise. + * src/devices/grotty/tty.cpp: Likewise. + +2006-02-22 Werner LEMBERG <wl@gnu.org> + + * font/devdvi/generate/tc.map: Add `sr' glyph. + * font/devdvi/*TC: Regenerated. + + * src/libs/libgroff/glyphuni.cpp (glyph_to_unicode_list): Use entry + for `sqrt'. + +2006-02-21 Werner LEMBERG <wl@gnu.org> + + * man/groff_char.man: Explain `***' marker. + +2006-02-17 Bruno Haible <bruno@clisp.org> + + * src/libs/libgroff/nametoindex.cpp (character_indexer): Rename + methods and fields from *_index to *_glyph. + (character_indexer::named_char_glyph): Test for `charNNN' name + here... + (name_to_glyph): ... not here. + +2006-02-17 Bruno Haible <bruno@clisp.org> + + * src/include/font.h (name_to_glyph): Renamed from + font::name_to_index. + (number_to_glyph): Renamed from font::number_to_index. + (glyph_to_name): Renamed from font::index_to_name. + (glyph_to_number): Renamed from font::index_to_number. + * src/libs/libgroff/nametoindex.cpp: Likewise. + * src/roff/troff/charinfo.h (charinfo::as_glyph): Renamed from + charinfo::get_index. + + * src/roff/troff/input.cpp: All callers changed. + * src/roff/troff/node.cpp: Likewise. + * src/libs/libgroff/font.cpp: Likewise. + * src/devices/grops/ps.cpp: Likewise. + * src/devices/grohtml/post-html.cpp: Likewise. + * src/libs/libdriver/printer.cpp: Likewise. + +2006-02-17 Werner LEMBERG <wl@gnu.org> + + * src/include/ptable.h, src/include/itable.h + (NEXT_PTABLE_SIZE_DEFINED): Use it to avoid multiple declaration + of external symbol `next_ptable_size' (used by both header files). + +2006-02-15 Bruno Haible <bruno@clisp.org> + + * src/include/font.h (glyphinfo): New class. + (glyph): Change internal representation. + Change constructor signature. + New method glyph::glyph_number(). + (glyph::glyph, glyph glyph::undefined_glyph, glyph::glyph_index, + glyph::operator==, glyph::operator!=): Update. + (font::index_to_name, font::index_to_number): New functions. + + * src/include/itable.h: New file, based on src/include/ptable.h. + + * src/libs/libgroff/nametoindex.cpp: Include itable.h. + (class charinfo): New class. + (class character_indexer): Change table result type from `int' to + `class charinfo'. + Add table with integer key. + (character_indexer::character_indexer): Update. + (character_indexer::ascii_char_index): Update. + (character_indexer::numbered_char_index): Use NULL as name, not a + string starting with a space. + (character_indexer::named_char_index): Update. + (font::number_to_index, font::name_to_index): Remove no-op cast. + (glyph::glyph_name): New method. + * src/roff/troff/charinfo.h (class charinfo): Inherit from class + glyphinfo. + (NUMBERED): Remove flag bit. + (charinfo::numbered, charinfo::get_index): Update. + + * src/roff/troff/input.cpp (charinfo::charinfo): Update. + (charinfo::set_number, charinfo::get_number): Update. + (glyph::glyph_name): New method. + +2006-02-15 Werner LEMBERG <wl@gnu.org> + + * src/libs/libgroff/glyphuni.cpp (glyph_to_unicode_list): Fix + entries for `>>', `<<', `*f', and `+f'. Reported by Bruno. + +2006-02-13 Werner LEMBERG <wl@gnu.org> + + * font/devps/prologue.ps (RE): Check `UniqueID' also, similar to + dvips. + +2006-02-11 Werner LEMBERG <wl@gnu.org> + + * src/include/font.h: s/glyph_t/glyph/. + Update all callers. + + * src/devices/grotty/tty.cpp: s/glyph/tty_glyph/. + s/output_character_t/output_character/. + +2006-02-11 Bruno Haible <bruno@clisp.org> + + New accessor method glyph_t::glyph_name(). + + * src/include/ptable.h (declare_ptable): Add a return value to the + `define' method, and declare a `lookupassoc' method. + (implement_ptable): Return the stored key in `define'. Implement + lookupassoc. + * src/include/font.h (glyph_t): Add `name' field. Add an argument + to the constructor. + (glyph_t::glyph_name): New method. + + * src/libs/libgroff/nametoindex.cpp (character_indexer): Change + return type of methods and field member type to glyph_t. + (character_indexer::character_indexer): Update. + (character_indexer::ascii_char_index): Allocate a name for the + glyph. + Return a glyph_t with name. + (character_indexer::numbered_char_index): Return a glyph_t without a + name. + (character_indexer::named_char_index): Return a glyph_t with a name. + (font::number_to_index, font::name_to_index): Update. + + * src/roff/troff/input.cpp (charinfo::charinfo): Use the symbol as + the glyph's name. + +2006-02-11 Bruno Haible <bruno@clisp.org> + + * src/devices/grotty/tty.cpp (output_character_t): New type. + (tty_printer::make_bold, tty_printer::add_char, + tty_printer::put_char): Change argument type to output_character_t. + (crossings): Change element type to output_character_t. + +2006-02-11 Bruno Haible <bruno@clisp.org> + + Make the glyph data type abstract. + + * src/include/font.h (glyph_t): New class. + (name_to_index, number_to_index): Change return type to glyph_t. + (font::contains, font::get_width, font::get_height, font::get_depth, + font::get_character_type, font::get_kern, font::get_skew, + font::get_italic_correction, font::get_left_italic_correction, + font::get_subscript_correction, font::get_code, + font::get_special_device_encoding, font::add_entry, + font::copy_entry, font::add_kern, font::hash_kern): Change argument + type to glyph_t. + + * src/libs/libgroff/font.cpp (font_kern_list): Change members + type and constructor argument types to glyph_t. + (font::contains, font::get_width, font::get_height, font::get_depth, + font::get_character_type, font::get_kern, font::get_skew, + font::get_italic_correction, font::get_left_italic_correction, + font::get_subscript_correction, font::get_code, + font::get_special_device_encoding, font::add_entry, + font::copy_entry, font::add_kern, font::hash_kern): Change argument + type to glyph_t. + (font::load): Use glyph_t variables. + + * src/libs/libgroff/nametoindex.cpp (name_to_index, + number_to_index): Change return type to glyph_t. + + * src/roff/troff/charinfo.h (charinfo::index): Change type to + glyph_t. + (charinfo::get_index): Change return type to glyph_t. + + * src/roff/troff/env.cpp: Include font.h. + + * src/roff/troff/node.cpp: Include font.h before charinfo.h. + + * src/roff/troff/input.cpp: Include font.h before charinfo.h. + (charinfo::charinfo): Update. + (name_to_index, number_to_index): Change return type to glyph_t. + + * src/include/printer.h (printer::set_char_and_width): Change return + type to glyph_t. + + * src/libs/libdriver/printer.cpp (printer::set_char_and_width): + Change return type to glyph_t. + + * src/devices/grodvi/dvi.cpp (dvi_printer::set_char): Change + argument type to glyph_t. + + * src/devices/grohtml/post-html.cpp (page::add_and_encode): Update. + (html_printer::space_glyph): Renamed from space_char_index. + (html_printer::add_to_sbuf, html_printer::sbuf_continuation, + html_printer::overstrike, html_printer::set_char): Change argument + type to glyph_t. + (html_printer::set_char_and_width): Change return type to glyph_t. + + * src/devices/grolbp/lbp.cpp (lbp_printer::set_char): Change + argument type to glyph_t. + + * src/devices/grolj4/lj4.cpp (lj4_printer::set_char): Change + argument type to glyph_t. + + * src/devices/grops/ps.cpp (ps_printer::space_glyph): Renamed from + space_char_index. + (ps_printer::set_subencoding, ps_printer::set_char): Change argument + type to glyph_t. + + * src/devices/grotty/tty.cpp (tty_printer::set_char): Change + argument type to glyph_t. + +2006-02-11 Bruno Haible <bruno@clisp.org> + + * src/roff/troff/input.cpp (font::name_to_index): Never return a + negative value. + + * src/libs/libgroff/font.cpp (font::load): Remove failure tests for + font::name_to_index. + +2006-02-10 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo (Assigning Formats): Number registers are always + interpolated. + Apply some rephrasing, contributed by Michael Burt. + +2006-02-07 Werner LEMBERG <wl@gnu.org> + + * tmac/fr.tmac <ms>: Set `HY' register. + +2006-02-07 Werner LEMBERG <wl@gnu.org> + + Add framework for simple adaptation of the main macro packages (mm, + me, ms, mom) to different locales. In particular, add support for + French. For activation, simply use `-mfr' as the last macro + package. This feature has been contributed by Fabrice Mnard + <menard.fabrice@wanadoo.fr>. + + * tmac/fr.tmac, tmac/trans.tmac, tmac/hyphen.fr, tmac/LOCALIZATION: + New files. + * tmac/README: Mention hyphen.fr. + * man/groff_tmac.man: Mention fr.tmac. + * NEWS: Updated. + +2006-01-27 Werner LEMBERG <wl@gnu.org> + + * man/groff_font.man: Updated documentation of `entity_name' field. + Avoid future tense. + +2006-01-27 Bruno Haible <bruno@clisp.org> + + * font/devhtml/R.proto: Remove the entity names from the font's + special_encoding_encoding column. + * src/devices/grohtml/post-html.cpp (get_html_entity): New function, + handling the entity names here. + (get_html_translation): Use it. Change return type to `const + char *'. + (page::add_and_encode): Update, removing a useless cast. + +2006-01-26 Werner LEMBERG <wl@gnu.org> + + This change is based on a patch by Bruno Haible <bruno@clisp.org>. + + * src/include/device.h: Add comments. + * src/include/font.h: Add comments. + * src/include/unicode.h: Likewise. + * src/include/ptable.h, src/libs/libgroff/ptable.cpp: Likewise. + +2006-01-26 Keith Marshall <keith.d.marshall@ntlworld.com> + + Suppress `.st' request emission by `grn'. + + * src/preproc/grn/main.cpp (USE_ST_REQUEST): New macro. + (conv): Use it. + +2006-01-22 Werner LEMBERG <wl@gnu.org> + + * install-sh: New version; taken from texinfo CVS. + +2006-01-21 Werner LEMBERG <wl@gnu.org> + + * src/preproc/preconv/preconv.cpp (main): Set program_name. Bug + reported by Alexander E. Patrakov <patrakov@ums.usu.ru>. + +2006-01-19 Bruno Haible <bruno@clisp.org> + + Let `make -k install' install more files. + + * Makefile.in (MAKE_K_FLAG): New variable. Use it everywhere where + $(MAKE) and $(MDEFINES) are used. + (CPROGDIRS): Remove $(XPROGDIRS). Treat $(XPROGDIRS) like + $(CPROGDIRS) everywhere. + ($(DEVDIRS) $(XDEVDIRS) $(OTHERDEVDIRS) $(TTYDEVDIRS)): Don't depend + on $(XPROGDIRS). + ($(OTHERDIRS)): Likewise. + + + * src/devices/grohtml/post-html.cpp (get_html_translation): Remove + failure test for font::name_to_index -- it can never fail. + +2006-01-19 Werner LEMBERG <wl@gnu.org> + + * src/devices/grops/grops.man: Fix section on creating EPS files. + Don't use future time in manual. + Other minor fixes. + +2006-01-15 Gaius Mulley <gaius@glam.ac.uk> + + * tmac/www.tmac: New macro LINKSTYLE which allows users to set + various typographical URL attributes for non-HTML devices. + + * tmac/groff_www.man: Document LINKSTYLE. + +2006-01-11 Werner LEMBERG <wl@gnu.org> + + * configure.ac: Test for getc_unlocked (needed for localcharset). + * configure, src/include/config.hin: Regenerated. + + * src/libs/libgroff/Makefile.sub (EXTRA_CFLAGS): Define + ENABLE_RELOCATABLE. + + * src/libs/libgroff/relocatable.h: New dummy header file for + localcharset.c. + + * src/libs/libgroff/localcharset.c: Updated to (unchanged) CVS + gnulib version. + +2006-01-10 Bruno Haible <bruno@clisp.org> + + Work around unportability of nl_langinfo(CODESET). + + * m4/glibc21.m4: New file, from gnulib. + * Makefile.sub (M4MACROS): Add m4/glibc21.m4. + * configure.ac: Also test for stddef.h, and invoke jm_GLIBC21. + * Makefile.in (HOST, GLIBC21): New variables. + (MDEFINES): Pass them to subdirectories. + * src/include/relocate.h (relocatep): Define with C linkage. + * src/include/localcharset.h: New file, from gnulib. + * src/libs/libgroff/localcharset.c: New file, from gnulib with a + modification for relocate(). + * src/libs/libgroff/config.charset: New file, from gnulib. + * src/libs/libgroff/ref-add.sin: New file, from gnulib. + * src/libs/libgroff/ref-del.sin: New file, from gnulib. + * src/libs/libgroff/Makefile.sub (EXTRA_CFLAGS): Also define LIBDIR. + (OBJS): Add localcharset.o. + (CSRCS): Add localcharset.c. + (all): Add dependencies to charset.alias, ref-add.sed, ref-del.sed. + (charset.alias): New rule. + (PACKAGE): New variable. + (ref-add.sed, ref-del.sed): New rules. + (MKINSTALLDIRS): New variable. + (install_data): Depend on install_charset_data. + (install_charset_data): New rule for creating or updating + charset.alias. + (uninstall_sub): Depend on uninstall_charset_data. + (uninstall_charset_data): New rule for uninstalling or updating + charset.alias. + * src/preproc/preconv/preconv.cpp: Include localcharset.h instead + of <langinfo.h>. + (main): Initialize default_encoding from locale_charset() instead of + nl_langinfo(CODESET). + + * aclocal.m4, configure, src/include/config.hin: Regenerated. + +2006-01-10 Werner LEMBERG <wl@gnu.org> + + * src/preproc/preconv/preconv.cpp (conversion_iconv): Use + ICONV_CONST in call to iconv. Reported by Robert Goulding. + +2006-01-07 Werner LEMBERG <wl@gnu.org> + + * font/devps/generate/freeeuro.sfd: Run auto-hinter with recent + fontforge version. + Bump font version to 001.001. + + * font/devps/generate/Makefile (freeeuro.afm, freeeuro.pfa): + Call fontforge, not pfaedit. + + * font/devps/freeeuro.afm, font/devps/freeeuro.pfa: Regenerated. + +2006-01-05 Ruslan Ermilov <ru@FreeBSD.org> + + * tmac/doc-common: Add new FreeBSD and NetBSD versions. + * tmac/groff_mdoc.man: Updated. + +2006-01-05 Werner LEMBERG <wl@gnu.org> + + * src/preproc/preconv/preconv.cpp: s/debug/debug_flag/. + (raw_flag): New global variable. + (do_file): Use .lf to set file name (if `raw_flag' isn't set). + Don't pass BOM to `conversion_utf8'. + (usage): Updated. + (main): Handle `-r' command line switch to set `raw_flag'. + (get_BOM): Fix encodings in `BOM_table'. + + * src/preproc/preconv/preconv.man: New file. Not complete yet. + * src/preproc/proconv/Makefile.sub (MAN1): New variable. + +2006-01-04 Werner LEMBERG <wl@gnu.org> + + * src/preproc/preconv/preconv.cpp (emacs_to_mime): As suggested by + Bruno, comment out most encodings to support only a small set of + coding tags, thus reducing potential problems with legacy encodings + and character sets in the future. + Add many XEmacs coding tags (now commented out). + Add `cp1047'. + (check_encoding_tag): Renamed to... + (check_coding_tag): This. + (get_BOM): Return encoding as specified by BOM. + Test for UTF32-LE too. + (do_file): Don't check for coding tag if a BOM has been found. + +2006-01-03 Bruno Haible <bruno@clisp.org> + + * m4/groff.m4: Renamed from aclocal.m4. + * m4/codeset.m4: New file, from gnulib. + * m4/iconv.m4: New file, from gnulib. + * m4/lib-ld.m4, m4/lib-link.m4, m4/lib-prefix.m4: New files, from + gnulib. + * config.rpath: New file, from gnulib. + * config.guess, config.sub: New files, from gnulib. + * Makefile.sub (M4MACROS): New variable. + (configure): Fix typo. + (aclocal.m4): New rule. + (stamp-h.in): Depend on aclocal.m4. + * configure.ac: Invoke AM_ICONV and AM_LANGINFO_CODESET. + * Makefile.in (LIBICONV): New variable. + (MDEFINES): Pass it to recursive makes. + * src/preproc/preconv/preconv.cpp: Use HAVE_LANGINFO_CODESET and + HAVE_ICONV instead of I18N macro. + * src/preproc/preconv/Makefile.sub (EXTRA_LDFLAGS): New variable. + + * aclocal.m4, configure, src/include/config.hin: (Re)generated. + +2006-01-03 Werner LEMBERG <wl@gnu.org> + + * doc/Makefile.in (webpage.html): Simplify. + * doc/Makefile.sub (webpage.html): Synchronize with doc/Makefile.in. + * doc/webpage.ms, tmac/groff_www.man, tmac/www.tmac: Minor updates. + +2006-01-01 Werner LEMBERG <wl@gnu.org> + + * tmac/doc-common (Os): Add some Darwin versions. + * tmac/groff_mdoc.man: Document them. + +2006-01-01 Bruno Haible <bruno@clisp.org> + + * src/preproc/preconv/preconv.cpp (emacs_to_mime): Various + corrections: + . Don't map ascii to latin-1. + . Don't use IBMxxx encodings but cpxxx for portability. + . Map cp932, cp936, cp949, cp950 to itself. + (emacs2mime): Protect calls to strcasecmp. + (conversion_iconv): Add missing call to iconv_close. + (do_file): Emit error message in case of unsupported encoding. + +2005-12-31 Werner LEMBERG <wl@gnu.org> + + Integrate preconv into the groff binary. Changes based on a patch + from Michail Vidiassov. + + * src/roff/groff/pipeline.h (MAX_COMMANDS): Increase by 1. + + * src/roff/groff/groff.cpp (PRECONV_INDEX): New macro. + (SOELIM_INDEX): Updated. + (help, synopsis): Updated. + (main): Add command line options `-k' and `-K enc' to select + encoding. + Add support for GROFF_ENCODING environment variable. + + * src/roff/groff/groff.man: Updated and revised. + + + Start with autoconf support for preconv. + + * configure.ac: Call AC_C_BIGENDIAN. + * configure, src/include/config.hin: Regenerated. + +2005-12-30 Werner LEMBERG <wl@gnu.org> + + New preprocessor `preconv' to convert input encodings to something + groff can understand. Not yet integrated within groff. Proper + autoconf stuff is missing too. + + Tomohiro Kubota has written a first draft of this program, and some + ideas have been reused (while almost no code has been taken + actually). + + * src/preproc/preconv/preconv.cpp. src/preproc/preconv/Makefile.sub: + New files. + + * MANIFEST, Makefile.in (CCPROGDIRS), test-groff.in + (GROFF_BIN_PATH): Add preconv. + +2005-12-12 Werner LEMBERG <wl@gnu.org> + + * aclocal.m4 (GROFF_MAKEINFO): Fix regexps to be POSIX conformant. + In particular, don't use `\+' since it is a GNU sed extension. + + * configure: Regenerated. + +2005-12-09 Werner LEMBERG <wl@gnu.org> + + * src/libs/libgroff/make-uniuni: New script to generate uniuni.cpp. + + * src/libs/libgroff/uniuni.cpp: Regenerated, using data from Unicode + 4.1.0. + + + * src/utils/afmtodit/make-afmtodit-tables: New script to generate + afmtodit.tables. + + * src/utils/afmtodit/afmtodit.tables: New file, representing Unicode + 4.1.0 data. + + * src/utils/afmtodit/afmtodit.pl (%unicode_decomposed, + %AGL_to_unicode): Removed. Replace it with a tag. + + * src/utils/afmtodit/Makefile.sub (afmtodit): Adjust sed expression + to replace tag with actual file contents. + +2005-12-08 Werner LEMBERG <wl@gnu.org> + + The change 2005-06-20 can indeed cause problems, so we follow the + advice by using marks. + + * font/devps/prologue.ps (PBEGIN): Use `mark'. + (PEND): Use `cleartomark'. + +2005-12-07 Michail Vidiassov <master@iaas.msu.ru> + + * src/utils/afmtodit.pl: Fix kerning output to avoid warnings for + glyphs which have kern values but aren't handled (glyph variants, + for example). + +2005-12-02 Werner LEMBERG <wl@gnu.org> + + * src/devices/grops/ps.cpp (ps_printer::get_subfont): Use correct + subfont index. Reported by Michail Vidiassov <master@iaas.msu.ru>. + +2005-11-28 Gaius Mulley <gaius@glam.ac.uk> + + * doc/Makefile.in: Separate rule for webpage.html so that extra + command line options can be passed to grohtml. + * doc/groff.css: Change all margins to 0%. + * doc/webpage.ms: Now use new macros ALN, LNS, and LNE so that left + navigation is exploited. Also update webpage to contain new + sections on licenses, mailing lists, cvs/ftp access, groff + dependencies, and bug reports. + * tmac/groff_www.man: Document the new macros ALN, LNS, and LNE. + * tmac/www.tmac: Implement the new macros ALN, LNS, and LNE. + +2005-11-25 Gaius Mulley <gaius@glam.ac.uk> + + * src/devices/grohtml/post-html.cpp + (html_printer::do_file_components): Add fputs calls to emit the + head contents and shut down the head tag whenever a new file + component is generated. + +2005-11-22 Gaius Mulley <gaius@glam.ac.uk> + + * src/devices/grohtml/post-html.cpp (html_printer::flush_page): Add + call to flush_text to flush any outstanding html tags on the + paragraph stack. + +2005-11-18 Werner LEMBERG <wl@gnu.org> + + * aclocal.m4 (GROFF_MAKEINFO): Use `groff.info' in tests. + Announce makeinfo version. + * configure: Regenerated. + +2005-11-18 Mike Frysinger <vapier@gentoo.org> + + * Makefile.in: Declare proper dependencies between make targets. + + * doc/Makefile.in: Rename groff info page to `groff.info'. + * doc/Makefile.sub: Likewise. + * doc/groff.texinfo: Likewise. + +2005-11-17 Peter O'Gorman <mlists@thewrittenword.com> + + * src/utils/pfbtops/pfbtops.c, src/utils/xtotroff/xtotroff.c: Move + definition of __GETOPT_PREFIX to the beginning of file to ensure + that it is defined even on platforms where getopt.h is already + included by other header files. + +2005-11-10 Gaius Mulley <gaius@glam.ac.uk> + + * src/devices/grohtml/post-html.cpp (html_printer::do_heading): + Reset font to NULL to ensure that a font block is recreated during + the next paragraph. + +2005-11-04 Werner LEMBERG <wl@gnu.org> + + * aclocal.m4 (GROFF_MAKEINFO): Fix sed expression. + * configure: Regenerated. + +2005-10-27 Werner LEMBERG <wl@gnu.org> + + * aclocal.m4 (GROFF_MAKEINFO): New function for checking whether + makeinfo 4.8 or newer is available. + * configure.ac: Call GROFF_MAKEINFO. + * configure: Regenerated. + + * Makefile.in (MAKEINFO): Use autoconf variable. + (MDEFINES): Add MAKEINFO. + + * doc/Makefile.in (MAKEINFO): Use autoconf variable. + * doc/Makefile.sub (MAKEINFO): Remove. + +2005-10-26 Werner LEMBERG <wl@gnu.org> + + * REVISION: Set to 3. + +2005-10-17 Werner LEMBERG <wl@gnu.org> + + Mention $MANPAGER variable used with some `man' systems. + + * doc/webpage.ms, src/devices/grotty/grotty.man, NEWS: Updated. + +2005-09-13 Werner LEMBERG <wl@gnu.org> + + * tmac/hyphenex.us: New version (`ushyphex.tex' from ftp.dante.de). + +Copyright 2005-2009 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. + +Local Variables: +coding: latin-1 +fill-column: 72 +mode: change-log +version-control: never +End: +vim:set autoindent textwidth=72: diff --git a/ChangeLog.121 b/ChangeLog.121 new file mode 100644 index 0000000..80f4197 --- /dev/null +++ b/ChangeLog.121 @@ -0,0 +1,788 @@ + +Version 1.21 released +===================== + + * NEWS, REVISION, VERSION, doc/groff.texinfo, doc/webpage.ms: + Updated. + * aclocal.m4, configure: Regenerated. + +2010-12-31 Werner LEMBERG <wl@gnu.org> + + * doc/webpage.ms: Updated. + +2010-12-31 Werner LEMBERG <wl@gnu.org> + + * configure: Regenerate with autoconf 2.67. + +2010-12-31 Werner LEMBERG <wl@gnu.org> + + Update various scripts. + + * config.guess, config.sub: Update from `config' repository. + * install-sh, mkinstalldirs: Update from `gnulib' repository. + +2010-12-31 Werner LEMBERG <wl@gnu.org> + + Update texinfo.tex. + + * doc/texinfo.tex: Update from `texinfo' repository. + +2010-12-30 Werner LEMBERG <wl@gnu.org> + + Call texi2dvi with correct makeinfo binary. + + * doc/Makefile.in (.texinfo.dvi, .texinfo.pdf): Use $(MAKEINFO). + +2010-12-30 Werner LEMBERG <wl@gnu.org> + + Documentation updates. + + * NEWS, PROBLEMS, MANIFEST: Update. + +2010-12-26 Werner LEMBERG <wl@gnu.org> + + Speed up troff. + + * src/include/ptable.h (PTABLE): Make hash tables much more sparse + by changing the ratio `FULL_NUM/FULL_DEN' from 2/3 to 1/4. This + increases the allocated memory by about 200kByte (which is nothing + today) but assures that there aren't extremely long searches for a + free hash slot in case that the hash function doesn't return a free + one. Due to the nature of the entries in uniuni.cpp, the used hash + function in ptable.cpp is not optimal, but using a sparse array + compensates this. + +2010-12-20 Werner LEMBERG <wl@gnu.org> + + Replace patch from 2010-12-18 with a much faster implementation. + + * src/roff/troff/node.h (node): Add virtual function + `get_break_code'. + + * src/roff/troff/node.cpp (inter_char_space_node): Remove class + completely. + (glyph_node::merge_glyph_node): Restore previous version. + + (break_char_node): Add `prev_break_code' field and update + constructors. + (node::get_break_code, break_char_node::get_break_code): Implement. + + (node::add_char): Pass remaining cflags values. + + (break_char_node::add_self): Use the logic of the now deleted + `inter_char_space_node::add_self' function to insert a space node if + necessary. + +2010-12-20 Daiki Ueno <ueno@unixuser.org> + + A new try to not changing srcdir if building in separate builddir. + + Makefile.in ($GNULIBDIRS): Disable calls to autoconf and friends. + +2010-12-20 Werner LEMBERG <wl@gnu.org> + + Speed up access to cflags values. + + We now recompute the cflags values for all charinfo objects if + `.class' has been called. + + * src/roff/troff/charinfo.h: Add external references to `class_flag' + and `get_flags'. + (charinfo): `get_flags' no longer has a return value. + (charinfo::overlaps_horizontally, charinfo::overlaps_vertically, + charinfo::can_break_before, charinfo::can_break_after, + charinfo::can_break_after, charinfo::ends_sentence, + charinfo::transparent,, charinfo:ignore_hcodes, + charinfo::prohibit_break_before, charinfo::prohibit_break_after, + charinfo::inter_char_space): Call global `get_flags' only if + necessary. + (charinfo::add_to_class): Set `class_flag'. + + * src/roff/troff/input.cpp (class_flag): New global flag. + (charinfo::charinfo): Call `get_flags' member function. + (get_flags): New global function which iterates over all entries in + the charinfo dictionary. + (charinfo::get_flags): Set `flags' directly. + +2010-12-19 Werner LEMBERG <wl@gnu.org> + + Protect `.class' against cyclic nesting. + + * src/roff/troff/charinfo.h (charinfo::contains): Add optional + boolean argument. + * src/roff/troff/input.cpp (define_class, charinfo::contains): Check + for cyclic nesting. + +2010-12-18 Werner LEMBERG <wl@gnu.org> + + Improve CJK support with new values for `.cflags'. + + This patch introduces three new values to `.cflags': + + don't break before character: 128 + don't break after character: 256 + allow inter-character break: 512 + + They are handled differently if compared to other cflags values: + + (1) hcode values are completely ignored + (2) similar to kern values, and contrary to the other cflags + values, troff looks at pairs of characters to decide whether a + break gets inserted + + A yet-to-be-written patch should add inter-character spacing if + those flags are active; currently, only zero-width breakpoints are + inserted. + + * src/roff/troff/charinfo.h (charinfo): Change type of `flags' to + `int'. Update callers accordingly. + New enum values `DONT_BREAK_BEFORE', `DONT_BREAK_AFTER', and + `INTER_CHAR_SPACE'. + New member functions `prohibit_break_before', + `prohibit_break_after', and `inter_char_space'. + * src/roff/troff/input.cpp: Updated. + + * src/roff/troff/node.cpp (inter_char_space_node): New class similar + to kern_pair_node, collecting charinfo entities with the + abovementioned cflags values. + (break_char_type): Add new enum values. + (glyph_node::merge_glyph_node): Handle abovementioned cflags values + and emit an `inter_char_space_node' if necessary. + + * tmac/ja.tmac: Use new cflags values. + + * doc/groff.texinfo, NEWS, man/groff_diff.man: Document new values. + +2010-12-18 Werner LEMBERG <wl@gnu.org> + + Remove compiler warning. + + * src/libs/libgroff/relocate.cpp (msw2posixpath): Remove redundant + dereferencing. + +2010-12-16 Daiki Ueno <ueno@unixuser.org> + + Don't change srcdir if building in a separate builddir. + + * Makefile.in ($GNULIBDIRS): Copy configuring stuff of gnulib if + necessary. + +2010-12-15 Werner LEMBERG <wl@gnu.org> + + Fix compilation problem. + + This issue happens with gcc 4.2.4. + + * src/roff/troff/node.cpp (node::~node): Move to... + * src/roff/troff/node.h: Here. This ensures that the inline + member function is publicly visible. + +2010-12-15 Werner LEMBERG <wl@gnu.org> + + Remove unused code. + + * src/roff/troff/node.cpp, src/roff/troff/node.h + (space_node::space_node): Remove unused constructor. + +2010-12-15 Werner LEMBERG <wl@gnu.org> + + Use enum to increase readability. + + * src/roff/troff/node.cpp (break_char_type): New enum. + (break_char_node::add_self, node::add_char): Use it. + +2010-12-13 Daiki Ueno <ueno@unixuser.org> + Werner LEMBERG <wl@gnu.org> + + Add wide character support to grotty. + + This is a huge patch, mainly by adding the gnulib infrastructure in + a separate directory tree (in `src/libs/gnulib/lib') for its + `wcwidth' module. However, the actual changes to native groff + source files are just a few lines. + + * Makefile.comm (INCLUDES): Updated. + (LIBGNU): Define. + + * Makefile.in (NOMAKEDIRS): Updated. + (GNULLIBDIRS): Define. + (DISTDIRS): Add GNULLIBDIRS. + ($LIBDIRS): Depend on GNULLIBDIRS. + ($GNULLIBDIRS): New target. + + * src/libs/libgroff/font.cpp (font::get_width, font::load) + [is_unicode]: Use `wcwidth'. + + * src/roff/troff/Makefile.sub (XLIBS): Add LIBGNU. + * src/roff/troff/input.cpp (main): Set LC_CTYPE. + + * src/devices/grotty/Makefile.sub (XLIBS): Add LIBGNU. + * src/devices/grotty/tty.cpp (main): Set LC_CTYPE. + + * src/libs/gnulib/*: New files. The import was done as follows: + + . Call + + gnulib-tool --create-testdir \ + --dir=src/libs/gnulib \ + wcwidth + + to get a testbed. + + . Manually move directories src/libs/gl{lib,m4} to + src/libs/{lib,m4}, and do s/gllib/lib/ and s/glm4/m4/ everywhere + to `convert' the gnulib testbed to a standard gnulib + configuration as maintained by gnulib-tool. + + . Call + + gnulib-tool --add-import \ + --dir=src/libs/gnulib \ + wcwidth + + to update everything. + +2010-12-13 Werner LEMBERG <wl@gnu.org> + + `.class' must not emit empty lines. + + * src/roff/troff/input.cpp (define_class): Add missing `skip_line' + calls. + +2010-12-06 UKAI Fumitoshi <ukai@debian.or.jp> + Colin Watson <cjwatson@debian.org> + + Add Japanese localization. + + * tmac/ja.tmac: New file. + * tmac/Makefile.sub (NORMALFILES): Updated. + +2010-12-06 Colin Watson <cjwatson@debian.org> + Daiki Ueno <ueno@unixuser.org> + + Implement support for character classes. + + This patch uses standard C++ headers, contrary to the rest of groff. + Ideally, everything in groff should be updated to do the same. + + * src/include/font.h (glyph_to_unicode): New function. + + * src/libs/libgroff/font.cpp (glyph_to_unicode): Implement it. + (font::contains, font::get_code): Use it. + + * src/roff/troff/charinfo.h: Include <vector> and <utility>. + (charinfo): New members `ranges' and `nested_classes'. + New member functions `get_unicode_code' and `get_flags'. + New member functions `add_to_class', `is_class', and `contains'. + (charinfo::overlaps_horizontally, charinfo::overlaps_vertically, + charinfo::can_break_before, charinfo::can_break_after, + charinfo::can_break_after, charinfo::ends_sentence, + charinfo::transparent,, charinfo:ignore_hcodes): Use `get_flags', + which handles character classes also. + + * src/roff/troff/input.cpp (char_class_dictionary): New global + variable. + (define_class): New function. + (init_input_requests): Register `class'. + + (charinfo::get_unicode_code, charinfo::get_flags, + charinfo::contains): Implement it. + + * NEWS, doc/groff.texinfo (Character Classes), man/groff_diff.man, + man/groff.man: Document it. + +2010-11-11 Anton Shepelev <anton.txt@gmail.com> + + [grohtml]: Improve texinfo documentation. + + * doc/groff.texinfo (grohtml): Insert man page description, slightly + extended. + +2010-11-11 Werner LEMBERG <wl@gnu.org> + + Fix crash in tbl with option `nospaces'. + Reported by Louis Guillaume <louis@zabrico.com>. + + * src/libs/libgroff/string.cpp (string::remove_spaces): If input + data consists of spaces only and thus reduces to nothing, set `sz' + to 0. + +2010-11-02 Ulrich Spörlein <uqs@spoerlein.net> + + [mdoc]: Complete previous patch and document OpenBSD releases. + + * tmac/doc-common (doc-operating-system-NetBSD): Add versions 5.0, + 5.0.1, and 5.0.2. + (doc-operating-system-OpenBSD-*): New strings. + (doc-operating-system-FreeBSD-*): Add version 8.1. + (doc-operating-system-DragonFly-*): Add versions 2.2, 2.4, 2.6, and + 2.8. + (Os): Handle DragonFly and OpenBSD. + + * tmac/groff_mdoc.man: Document OpenBSD releases. + Add DragonFly release 2.8. + +2010-11-02 Ulrich Spörlein <uqs@spoerlein.net> + + [mdoc]: Improve man page. + + * tmac/groff_tmac.man: Fix prologue macro order. + Update NetBSD, FreeBSD, and DragonflyBSD version numbers. + Other minor layout improvements. + +2010-11-02 Anton Shepelev <anton.txt@gmail.com> + + [grohtml] Improve man page. + + * src/devices/grohtml/grohtml.man: Document two-pass handling of + input data. + +2010-09-19 Werner LEMBERG <wl@gnu.org> + + [groff] Don't use prefix for preconv. + Reported by Dorai Sitaram <ds26gte@yahoo.com> + + * src/roff/groff/groff.cpp (main): Fix it. + +2010-07-28 Larry Kollar <kollar@windstream.net> + + * doc/groff.texinfo, man/groff.man: Document `!' operator better. + +2010-06-28 Jan Vcelak <jvcelak@redhat.com> + + * src/roff/troff/node.cpp (make_node): Adding missing `%'. + Reported in + http://lists.gnu.org/archive/html/bug-groff/2010-06/msg00022.html + +2010-06-05 Larry Jones <lawrence.jones@siemens.com> + + * man/groff_diff.man: Document \n[.P]. + +2010-06-04 Werner LEMBERG <wl@gnu.org> + + * NEWS: Updated. + +2010-06-04 Denis M. Wilson <dmw@oxytropis.plus.com> + + afmtodit: Add option `-o' to specify an output file. + + * src/utils/afmtodit.pl: Implement it. + * src/utils/afmtodit.man: Document it. + +2010-06-04 Larry Jones <lawrence.jones@siemens.com> + + * man/groff_diff.man: Document \n[.O]. + +2010-05-30 Werner LEMBERG <wl@gnu.org> + + Fix metric files for devps families A, BM, and font ZCMI. + Problem reported by Denis M. Wilson <dmw@oxytropis.plus.com>. + + * font/devps/{AB, ABI, AI, AR, BMB, BMBI, BMI, BMR, ZCMI}: + Regenerated, using correct AFM files (from the Adobe Core 35 fonts + with 229 glyphs). + +2010-05-28 Werner LEMBERG <wl@gnu.org> + + Don't use obsolete intermediate output command `F'. + Reported by Krzysztof Zelechowski <giecrilj@stegny.2a.pl> + + * src/roff/troff/nodes.cpp (troff_output_file::really_put_filename): + Replace `F' command with `x F'. + +2010-05-24 Werner LEMBERG <wl@gnu.org> + + * PROBLEMS: Document that mdoc doesn't work with test-groff. + Reported by Krzysztof Zelechowski <giecrilj@stegny.2a.pl> + +2010-05-22 Werner LEMBERG <wl@gnu.org> + + Document preconv in texinfo. + + * doc/groff.texinfo: Mention preconv and its related command line + options for groff. + Add stubs for direct preconv documentation. + Sort groff options and environment variables. + +2010-05-22 Werner LEMBERG <wl@gnu.org> + + Use DESC's `unicode' keyword for grotty. + + Consequently, no longer check directly for the `utf8' device name + which prevented the creation of arbitrarily called output device + directories like `devunicode'. + + Problem reported by Christopher Yeleighton <giecrilj@stegny.2a.pl> + in Savannah bug #29895. + + * src/devices/grotty/tty.cpp (tty_printer): Remove `is_utf8' member. + Replace all occurrences with `font::is_unicode'. + (tty_printer::tty_printer): Remove argument. + + * src/devices/grotty/grotty.man: Document `unicode' keyword. + +2010-05-19 Werner LEMBERG <wl@gnu.org> + + Update symbol tables for devps font generation. + + * font/devps/generate/textmap: Sort alphabetically. + Replace tabs with spaces. + + * font/devps/generate/symbolchars: Update list to remove duplicates + which have already been added to `textmap' on 2007-04-09. + + * font/devps/symbolmap: Regenerated. + + * font/devps/*: Regenerate font definition files. + +2010-05-09 Colin Watson <cjwatson@debian.org> + + Handle ditroff command `Dt' without argument gracefully. + + Without this patch, grotty goes into an infinite loop if it tries to + process + + x T utf8 + x res 240 24 40 + x init + p1 + Dt + + * src/libs/libdriver/input.cpp (get_integer_arg): Emit a fatal error + on a non-integer argument, bringing the code into line with the + behaviour documented in the header comment. + (get_possibly_integer_args): Terminate the loop on a non-integer + argument. + (next_arg_begin): Return newline or EOF after emitting the + corresponding error, rather than continuing on to the next line. + +2010-05-01 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Improve documentation of \R escape. + +2010-03-10 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Document \n[DD] register. + Updated version stuff. + +2010-03-10 Larry Kollar <kollar@windstream.net> + + * tmac/groff_ms.man: Document \n[DD] register. + Problem reported by Ted. + +2010-02-25 Colin Watson <cjwatson@debian.org> + + Use named signals for `trap' in shell scripts. + + * contrib/eqn2graph/eqn2graph.sh, contrib/grap2graph/grap2/graph.sh, + contrib/pic2graph/pic2graph.sh: Do it. + +2010-02-25 Werner LEMBERG <wl@gnu.org> + + Fix angle brackets in grohtml. + Reported by Colin Watson <cjwatson@debian.org>. + + * src/devices/grohtml/post-html.cpp (get_html_entity): Add U+27E8 + and U+27E9. + +2010-02-24 Colin Watson <cjwatson@debian.org> + + Add new FreeBSD and Posix versions. + + * tmac/doc-common: Add FreeBSD versions 7.2, 7.3, and 8.0 + * tmac/doc-syms: Add Posix 2008. + * tmac/groff_mdoc.man: Document it. + +2010-02-16 Larry Kollar <kollar@windstream.net> + + tbl: Add `nowarn' option. + + * src/preproc/tbl/table.h (table): Add `NOWARN' enumeration value. + + * src/preproc/tbl/main.cpp (process_options), + src/preprox/tbl/table.cpp (table::compute_expand_width, + table::compute_separation_factor): Handle `NOWARN'. + + * src/preproc/tbl/tbl.man, NEWS: Document it. + +2010-02-08 Larry Kollar <kollar@windstream.net> + + * tmac/www.tmac (www-li-ol): Fix indentation if more than 10 items. + +2010-02-04 Larry Kollar <kollar@windstream.net> + + Improve `tbl' warnings. + + * src/preproc/tbl/table.cpp (table::compute_expand_width, + table::compute_separation_factor): Add file name strings to + warnings. + +2010-01-23 Bjarni Ingi Gislason <bjarniig@rhi.hi.is> + + Fix `MC' macro of the ms package. + + * tmac/s.tmac (@MC): Define `pg*col-top' after the paragraph has + been initialized. Otherwise, using this example, + + .nh + .nf + .kern 0 + .pl 6c + .ll 70n + .MC 30n + Text for multiple columns. + Text for multiple columns. + Text for multiple columns. + Text for multiple columns. + Text for multiple columns. + + the columns start at different vertical positions. + +2010-01-23 Larry Kollar <kollar@alltel.net> + + * tmac/www.tmac (www-li-{ul,ol,dl}): Handle `PORPHANS' register. + +2010-01-23 Larry Kollar <kollar@alltel.net> + + PROBLEMS: Document some Mac OS issues. + +2010-01-02 Deri James <deri@chuzzlewit.demon.co.uk> + + Don't hardcode `ps' device. + This is needed for cooperation with gropdf. + + * src/preproc/pic/troff.cpp (troff_output::text): Use GROPS_REG. + +2009-12-31 Werner LEMBERG <wl@gnu.org> + + Make patterns with uppercase letters work. + Problem reported by Bjarni Ingi Gislason <bjarniig@rhi.hi.is>. + + * src/roff/troff/input.cpp (init_hpf_code_table): Use `cmlower'. + * doc/groff.texinfo, man/groff_diff.man: Update documentation of + `hpfcode' request. + +2009-11-24 Maurice van der Pot <griffon26@kfk4ever.com> + + Fix double frees and memory leaks. + + * src/roff/troff/env.cpp (environment::make_tag): Use local object. + * src/roff/troff/input.cpp (input_stack::check_end_diversion): Free + `diversion_state' here. + (interpolate_arg): Fix memory leaks. + * src/roff/troff/mtsm.cpp (mtsm::pop_state): Don't free `sp->state'. + +2009-11-20 Paulo Ricardo Zanoni <pzanoni@mandriva.com> + + * */*.cpp: Replace `printf(string);' with `printf("%s", string);'. + +2009-10-28 Werner LEMBERG <wl@gnu.org> + + Document limitations with `#' characters, tbl, and eqn. + Problem reported by Michael Kain <mcain6925@comcast.net>. + + * src/preproc/eqn/eqn.man, src/preproc/tbl/tbl.man: Do it. + +2009-10-26 Werner LEMBERG <wl@gnu.org> + + * tmac/doc-common (Dx): Define register. + +2009-10-26 Jörg Sonnenberger <joerg@britannica.bec.de> + + Implement `%U' in mdoc for URL references. + + * tmac/doc-common (%U): New register. + (Rd): Handle `doc-url-count' and `doc-url-name'. + + * tmac/doc.tmac (doc-url-count, doc-url-name): New registers. + (doc-save-global-vars, doc-restore-global-vars, doc-reset-reference, + doc-print-reference): Handle `doc-url-count' and `doc-url-name'. + (%U): New macro. + + * NEWS, tmac/groff_mdoc.man: Document `%U' macro. + +2009-09-09 Jari Aalto <jari.aalto@cante.net> + + * src/roff/groff/groff.man: Point to troff(1) for `-w' and `-W'. + +2009-09-08 Werner LEMBERG <wl@gnu.org> + + [troff]: Fix hyphenation problem with kerned letters. + Problem reported by Steve Izma <sizma@golden.net>. + + * src/roff/troff/node.cpp + (kern_pair_node::add_discretionary_hyphen): Compute `tf' using the + first node, `n1'. `n2' might be another kerning node, and the + `get_tfont' member function isn't defined then. + +2009-09-01 Michael Cain <mcain6925@comcast.net> + + [pic] Fix a border case for arc computation. + + * src/preproc/pic/object.cpp (object_spec::make_arc): It can happen + that test `radius < d' in the loop is satisfied, but the difference + in the two values is on the order of 1e-10. If `radius' is small, + doubling the value can lead to a fairly gross error. + + The original code appears to have been intended to deal with the + situation when radius is orders of magnitude less than `d'. The + replacement code simply assigns `radius' the smallest value that + avoids problems with the floating point code further on in the + routine. + +2009-08-14 Roger Leigh <rleigh@debian.org> + + * man/groff_char.man: Fix white heart and diamond unicode values. + +2009-07-29 Werner LEMBERG <wl@gnu.org> + + * tmac/hyphen.fr: Fix typo which prevents hyphenation. + Reported by Seb <sbb@tuxfamily.org>. + +2009-06-25 Werner LEMBERG <wl@gnu.org> + + Make groff compile on Interix. + Reported by Jay Krell <jay.krell@cornell.edu>. + + * configure.ac: Call AC_USE_SYTEM_EXTENSIONS. + + * src/include/lib.h [__INTERIX]: Define _ALL_SOURCE. + + * configure: Regenerated. + +2009-05-29 Werner LEMBERG <wl@gnu.org> + + pic: Fix handling of nested positions. + Reported by Doug McIlroy <doug@cs.dartmouth.edu>. + + * src/preproc/pic/pic.y: Split `expr' into `expr_lower_than' and + `expr_not_lower_than' so that we can handle + + (1/3)<(1/2)<foo,bar>,baz> + + correctly. Without the patch, `(1/3)<(1/2)' is handled prematurely + as a comparison. + +2009-05-07 Werner LEMBERG <wl@gnu.org> + + Accept \0 and friends within \o. + Reported by Doug McIlroy <doug@cs.dartmouth.edu>. + + * src/roff/troff/token.h (token): Add TOKEN_HORIZONTAL_SPACE + enumeration value together with `horizontal_space' member function. + Add `do_overstrike' as a friend. + + * src/roff/troff/input.cpp: Use TOKEN_HORIZONTAL_SPACE for \0, \|, + \^, and \h. + Update all affected places. + (do_overstrike): Remove `static' attribute. + Accept all escapes which produce a fixed horizontal space. + +2009-04-24 Werner LEMBERG <wl@gnu.org> + + Use straight quotes where appropriate. + Reported by Reuben Thomas <rrt@sc3d.org>. + + * man/groff.man: Do it. + +2009-04-14 Werner LEMBERG <wl@gnu.org> + + Fix documentation of `em' request. + Reported by Joachim Walsdorff + <Joachim.Walsdorff@urz.uni-heidelberg.de>. + + * doc/groff.texinfo (End-of-input Traps): Rewrite. + +2009-04-10 Werner LEMBERG <wl@gnu.org> + + Fix a memory leak in troff for -Thtml. + Reported by Urs Eggli <Urs.Eggli@zuerich.ch>. + + * src/roff/troff/node.h (node::~node): Move to... + * src/roff/troff/node.cpp: Here. Free `state' and `push_state'. + +2009-04-01 Werner LEMBERG <wl@gnu.org> + + * tmac/doc.tmac: Call `ec' before mapping characters. + +2009-03-07 Werner LEMBERG <wl@gnu.org> + Gunnar Florus <http://florus.no> + + Improve configuration. + + * configure.ac: Read `VERSION' and `REVISION' files to provide + proper values for AC_INIT. + * Makefile.in: Use `@datarootdir@' and `@docdir@' so that + configure's `--datarootdir' and `--docdir' options are honoured. + Documentation is now by default installed into something like + `/usr/local/share/doc/groff-1.20.1'. + + * configure: Regenerated. + +2009-02-21 Colin Watson <cjwatson@debian.org> + Werner LEMBERG <wl@gnu.org> + + Add a new `file' warning category. + + * src/roff/troff/troff.h (warning_type): Add WARN_FILE. + * src/roff/troff/input.cpp (DEFAULT_WARNING_MASK): Include + WARN_FILE. + (warning_table): Add `file' category. + (macro_source): Convert error on missing macro file to a + warning. + * NEWS, doc/groff.texinfo (I/O, Warnings), man/groff_diff.man, + src/roff/troff/troff.man: Document new warning category. + +2009-02-18 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Improve documentation of `lsm' request. + +2009-02-14 Werner LEMBERG <wl@gnu.org> + + Implement a leading spaces macro request, `lsm', in analogy to + `blm'. + Implement two new number registers, \n[lsn] and \n[lss], which hold + the number of spaces and the horizontal space, respectively, which + would be inserted if the macro registered by `lsm' wasn't called. + + * src/roff/troff/input.cpp (leading_spaces_macro_name, + leading_spaces_number, leading_spaces_space): New global + variables. + (leading_spaces_macro): New function. + (process_input_stack) <token::TOKEN_SPACE>: Handle `lsm'. + (init_input_requests): Register `lsm', \n[lsn], and \n[lss]. + + * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo + (Leading Spaces Traps): Document new requests and registers. + +2009-02-10 Denis M. Wilson <dmw@oxytropis.plus.com> + + * man/groff.man: Document missing number registers (`$$', `.b', + `.F', `.j', `.k', `.L', `.O', `.P', `.R', `opmaxx', `opmaxy', + `opminx', `opminy'). + + * doc/groff.texinfo: Document missing `.R' register. + Add `.U' to register index. + +2009-01-19 Werner LEMBERG <wl@gnu.org> + + Fix incorrect grops color state before \X'...'. + Problem reported by Miklos Somogyi <msom@netspace.net.au>. + + * src/devices/grops/ps.cpp (ps_printer::special): Check color state + before doing a PS special and flush buffer. + Update called functions. + +Copyright 2009-2010 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. + +Local Variables: +coding: utf-8 +fill-column: 72 +mode: change-log +version-control: never +End: +vim:set autoindent textwidth=72: diff --git a/ChangeLog.122 b/ChangeLog.122 new file mode 100644 index 0000000..b33249b --- /dev/null +++ b/ChangeLog.122 @@ -0,0 +1,5331 @@ +Version 1.22.4 released +======================= + +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-14 G. Branden Robinson <g.branden.robinson@gmail.com> + + * doc/groff.texi: Drop documentation of "man" macro package from + our Texinfo manual. The mdoc, me, mm, and mom packages all + maintain their documentation externally to this manual as + well. Exception: portions not about man proper--which are not + duplicated from groff_man(7)--on use of man.local (including + examples of Ultrix-compatible macros) are retained. + +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. + + * bootstrap.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 dropped 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: substitute `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 explicit 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 implicit space is added between an unary operator and its + operand when an explicit 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 explicit 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 MS-DOS 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. + +2014-11-04 Werner LEMBERG <wl@gnu.org> + +Version 1.22.3 released +======================= + + * NEWS, README, doc/webpage.ms: Updated. + + * doc/texinfo.tex: Updated from `texinfo' repository. + +2014-10-29 Bertrand Garrigues <bertrand.garrigues@laposte.net> + + * Makefile.in (OTHERDIRS): Mention `afmtodit' first. + + Otherwise, some fonts in `devpdf' (`U-*') are not built. + +2014-10-26 Eli Zaretskii <eliz@gnu.org> + Werner LEMBERG <wl@gnu.org> + + Add Windows `.cmd' wrapper files. + + * arch/mingw/*: New files, provided by Eli. + + * Makefile.in (make_winscripts, make_install_winscripts, + make_uninstall_winscripts): New target variables. + (MDEFINES): Add them. + (OTHERDIRS): Add `arch/mingw'. + + * m4/groff.m4 (GROFF_CMD_FILES): New macro + * configure.ac: Call it. + * configure: Regenerated. + +2014-10-23 Bertrand Garrigues <bertrand.garrigues@laposte.net> + + Fix `install' and `uninstall' issues. + + * contrib/chem/Makefile.sub (install_data): Fix build with option + --with-doc=no passed to configure (target `install_examples' + should not be executed). + + * contrib/chem/Makefile.sub (uninstall_sub): `uninstall' failed + if directories to be removed were not present. + + * contrib/gpinyin/Makefile.sub (uninstall_sub): Ditto. + + * contrib/hdtbl/Makefile.sub (GENFILES): generated files should + depend on the creation of the `examples' directory. + +2014-10-23 Daiki Ueno <ueno@gnu.org> + + * m4/iconv.m4: Really avoid false detection of non-working iconv. + +2014-10-21 Daiki Ueno <ueno@gnu.org> + + iconv: avoid false detection of non-working iconv + + The INBUF/OUTBUF arguments of iconv can be either 'const char **' + or 'char **'. If CC is g++, the difference causes a compile error + and thus leads to a false detection of non-working iconv. + Reported by Eli Zaretskii and Werner LEMBERG in: + <https://lists.gnu.org/archive/html/bug-gnulib/2014-10/msg00023.html>. + + * m4/iconv.m4 (AM_ICONV_LINK): Try all possible argument types of + iconv. Bump serial number. + +2014-10-20 Werner LEMBERG <wl@gnu.org> + + * src/libs/gnulib/lib/wctype.in.h: Include `config.h'. + + Problem reported by Eli Zaretskii <eliz@gnu.org>. + + This is a temporary hack to make groff compile with MinGW. After + the switch to an automake infrastructure, together with proper use + of `gnulib', we can safely replace the patched file with a standard + version. + +2014-10-19 Doug McIlroy <doug@cs.dartmouth.edu> + + Fix Savannah bug #42151. + + * src/preproc/eqn/lex.cpp (file_input::read_line): Handle CR/LF. + * src/preproc/pic/pic.cpp (file_input::read_line): Ditto. + +2014-10-18 Werner LEMBERG <wl@gnu.org> + + [mdoc] Add Darwin version string for OS X 10.10. + + * tmac/doc-common (doc-operating-system-Darwin-14.0.0): New string. + + * tmac/groff_mdoc.man: Updated. + +2014-10-15 Werner LEMBERG <wl@gnu.org> + + * doc/webpage.ms: Remove obsolete references to tarballs and diffs. + + Reported by Dave Kemper <saint.snit@gmail.com>. + +2014-10-15 Colin Watson <cjwatson@debian.org> + + Always distribute the parts of groff that require X11. + + * Makefile.in (ALLLIBDIRS): Clone from `LIBDIRS', but include + src/devices/libxutil unconditionally. + (ALLPROGDIRS): Clone from `PROGDIRS', but include + src/devices/xditview and src/utils/xtotroff unconditionally. + (DISTDIRS): Use `ALLLIBDIRS' and `ALLPROGDIRS' rather than `LIBDIRS' + and `PROGDIRS'. + +2014-10-14 Keith Marshall <keith.d.marshall@ntlworld.com> + + Minor update to NEWS for pdfroff. + + * NEWS (pdfroff): Note use of PHASE register, and not pdf:href.map, + to choose when to emit toc_relocation control record. + +2014-10-13 Keith Marshall <keith.d.marshall@ntlworld.com> + + For pdfroff, deduce "--no-toc-relocation" from input stream. + + * NEWS: Add notification; document the effect of changes, as recorded + in contrib/pdfmark/ChangeLog. + +2014-10-12 Ingo Schwarze <schwarze@openbsd.org> + + [mdoc] Support `Mdocdate' CVS keyword substitution. + This fixes Savannah bug #42968. + + This feature is used for OpenBSD manuals. + + * tmac/doc-common (Dd): Handle `$Mdocdate:' argument. + + * tmac/groff_mdoc.man: Document it. + +2014-10-12 Ingo Schwarze <schwarze@openbsd.org> + + [mdoc] Add `.At III' and `.St -iso8601'. + This fixes Savannah bug #42971. + + * tmac/doc-syms: Add corresponding version strings. + + * tmac/groff_mdoc.man: Synchronize. + +2014-10-12 Ingo Schwarze <schwarze@openbsd.org> + + [mdoc] Update operating system release numbers. + This fixes Savannah bug #42969. + + * tmac/doc-common: Update NetBSD, OpenBSD, FreeBSD, and DragonFly + version strings. + + * tmac/groff_mdoc.man: Synchronize. + +2014-10-12 Werner LEMBERG <wl@gnu.org> + + * doc/Makefile.in: Use `LC_ALL' in addition to `LANG'. + Suggested by Steffen. + +2014-10-12 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Make PDF version compilable with makeinfo 5.x. + + makeinfo 5.x handles macro expansion better, which changes the way + how an \LE macro (for a less-than sign) has to be defined. However, + since we can't be sure that the latest version of `texinfo.tex' gets + used with makeinfo 5.x only, we would have to support both 4.x and + 5.x. No idea whether this is possible at all... For this reason, + we now simply use @value directly instead of wrapping it into a + macro, avoiding any issues. + +2014-10-12 Werner LEMBERG <wl@gnu.org> + + [doc] Protect against picky `sed' programs. + Problem reported by Axel Kielhorn <tex@axelkielhorn.de>. + + * doc/Makefile.in (GROFF_BIN_PATH, GROFF): Add `LANG=' to avoid + interpretation of non-ASCII characters by sed. + +2014-10-12 Michail Vidiassov <master@iaas.msu.ru> + + * tmac/doc-common: Add new Darwin versions. + +2014-10-12 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: s/which/that/ where appropriate. + +2014-10-12 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Various minor fixes. + + Most of those glitches have been found by comparing the info output + from makeinfo 4.13 and the current SVN development version (of + makeinfo). + +2014-10-12 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Improve indexing. + + Change @DefXXXItem and @DefXXXListEnd macros to not insert an index + entry. New macro variants with a trailing `x' (like `@DefreqItemx') + can override this. + + Update macro calls where necessary. + +2014-10-12 Werner LEMBERG <wl@gnu.org> + + [doc] Improve call to generation of `groff.pdf'. + Problem reported by Axel Kielhorn <tex@axelkielhorn.de>. + + Since `groff.texinfo' contains latin-1 characters, some sed + implementations (like the one used on Mac OS 10.8) fail if called + with the wrong locale. Basically, this is a `texi2dvi' bug, but we + can set `LANG' by ourselves to improve the situation. + + * doc/Makefile.in (.texinfo.dvi, .texinfo.pdf): Set `LANG' + environment variable to empty string. + +2014-10-12 Werner LEMBERG <wl@gnu.org> + + [doc] Correctly handle `MAKEINFO' environment variable. + Bug introduced in commit from 2014-03-29. + + * m4/groff.m4 (GROFF_MAKEINFO): Don't set MAKEINFO to empty string + before actually testing it. + + * configure: Regenerated. + +2014-10-11 Bertrand Garrigues <bertrand.garrigues@laposte.net> + + Fix an issue on `make dist'. + + In order to make the tarball, `make dist' copies src/libs/gnulib + directories into the `tmp' directory without the `.deps' + directories, causing the failure of `make distclean' in + tmp/src/libs/gnulib. Forcing a call to `config.status' recreates + the `.deps' directories. + + * Makefile.in (dist): For gnulib, call `config.status' before `make + distclean'. + +2014-10-11 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/*.pl: Remove call from `IPC', use normal system + `instead'. + +2014-10-11 Guillem Jover <guillem@hadrons.org> + + Add support for various BSD versions. + + * tmac/doc-common: Add new FreeBSD and DragonFly versions. + +2014-10-11 Keith Marshall <keith.d.marshall@ntlworld.com> + + Refactor .psbb request handling code. + + * src/roff/troff/input.cpp (do_ps_file): Reimplement it, using... + (psbb_locator): ...this new locally declared and implemented class; + its constructor replaces all `do_ps_file()' capability, delegating + to other class methods, as appropriate. + (assign_registers): Encapsulate it, as a `psbb_locator' method. + (ps_get_line): Likewise, also renaming it to become... + (get_line): ...this class method; its internally defined `lastc' + static variable also becomes a non-static class member variable. + (PSBB_RANGE_IS_BAD, PSBB_RANGE_IS_SET, PSBB_RANGE_AT_END): New + manifest constants; define them. They are now used by... + (parse_bounding_box): ...this function, now also encapsulated as + a `psbb_locator' class method, to convey parsing status. + (bounding_box): Struct obsoleted by `psbb_locator'; delete it. + (ps_bbox_request): Delegate to `psbb_locator'. + +2014-10-11 Werner LEMBERG <wl@gnu.org> + + Various clean-ups. + + * NEWS: More updates. + + * REVISION: Set to 3. + + * doc/groff.texinfo: Update version and year. + + * configure: Regenerated. + + * src/roff/groff/groff.cpp (main) <'v'>: Update copyright year. + +2014-10-11 Werner LEMBERG <wl@gnu.org> + + Update generic GNU files to recent versions. + + * INSTALL.gen, config.guess, config.rpath, config.sub, + contrib/groff_filenames/Makefile.sub, doc/fdl.texi, doc/texinfo.tex, + doc/txi-en.tex, install-sh, m4/ax_prog_perl_version.m4, + m4/codeset.m4, m4/fcntl-o.m4, m4/glibc21.m4, m4/iconv.m4, + m4/lib-ld.m4, m4/lib-link.m4, m4/lib-prefix.m4, m4/localcharset.m4, + src/include/localcharset.h, src/libs/gnulib/Makefile.in, + src/libs/gnulib/aclocal.m4, src/libs/gnulib/build-aux/compile, + src/libs/gnulib/build-aux/config.guess, + src/libs/gnulib/build-aux/config.sub, + src/libs/gnulib/build-aux/depcomp, + src/libs/gnulib/build-aux/install-sh, + src/libs/gnulib/build-aux/snippet/arg-nonnull.h, + src/libs/gnulib/build-aux/snippet/c++defs.h, + src/libs/gnulib/build-aux/snippet/warn-on-use.h, + src/libs/gnulib/configure, src/libs/gnulib/lib/Makefile.in, + src/libs/gnulib/lib/config.charset, src/libs/gnulib/lib/intprops.h, + src/libs/gnulib/lib/localcharset.c, + src/libs/gnulib/lib/localcharset.h, src/libs/gnulib/lib/ref-add.sin, + src/libs/gnulib/lib/ref-del.sin, src/libs/gnulib/lib/stdbool.in.h, + src/libs/gnulib/lib/stddef.in.h, src/libs/gnulib/lib/streq.h, + src/libs/gnulib/lib/unitypes.in.h, + src/libs/gnulib/lib/uniwidth.in.h, + src/libs/gnulib/lib/uniwidth/cjk.h, + src/libs/gnulib/lib/uniwidth/width.c, src/libs/gnulib/lib/verify.h, + src/libs/gnulib/lib/wchar.in.h, src/libs/gnulib/lib/wctype-h.c, + src/libs/gnulib/lib/wctype.in.h, src/libs/gnulib/lib/wcwidth.c, + src/libs/gnulib/m4/00gnulib.m4, src/libs/gnulib/m4/Makefile.in, + src/libs/gnulib/m4/codeset.m4, src/libs/gnulib/m4/configmake.m4, + src/libs/gnulib/m4/extensions.m4, src/libs/gnulib/m4/fcntl-o.m4, + src/libs/gnulib/m4/glibc21.m4, src/libs/gnulib/m4/gnulib-tool.m4, + src/libs/gnulib/m4/inttypes-pri.m4, + src/libs/gnulib/m4/localcharset.m4, src/libs/gnulib/m4/longlong.m4, + src/libs/gnulib/m4/onceonly.m4, src/libs/gnulib/m4/wchar_t.m4, + src/libs/gnulib/m4/wint_t.m4, src/libs/libgroff/config.charset, + src/libs/libgroff/localcharset.c, src/libs/libgroff/ref-add.sin, + src/libs/libgroff/ref-del.sin, src/preproc/refer/refer.man: Do it. + +2014-10-11 Werner LEMBERG <wl@gnu.org> + + * NEWS, MANIFEST: Updated. + +2014-10-11 Werner LEMBERG <wl@gnu.org> + + * Makefile.in (OTHERDIRS, NOMAKEDIRS): Remove `ideal' references. + +2014-10-10 Bernd Warken <groff-bernd.warken-72@web.de> + + * contrib/gideal: Temporarily remove this directory, because the + documentation and the preprocessor are not yet finished for + groff-1.2.23. + +2014-10-10 Werner LEMBERG <wl@gnu.org> + + * Makefile.in (dist): Clean up `src/libs/gnulib'. + +2014-10-10 Werner LEMBERG <wl@gnu.org> + + * doc/webpage.ms: Updates. + + The README and NEWS sections are not yet synchronized, though. + +2014-10-09 Ingo Schwarze <schwarze@openbsd.org> + + * Makefile.in: Let `clean' and `distclean' descend into gnulib. + + This fixes Savannah bug #42970. + +2014-10-02 Bertrand Garrigues <bertrand.garrigues@laposte.net> + + Set default X11 resources dir to `$prefix/lib/X11/app-defaults'. + + Previously, X11 resources for gxditview were installed in + `/usr/X11/lib/X11/app-defaults', no matter which prefix was set. + + Now, gxditview resources are installed in + `appresdir=$prefix/lib/X11/app-defaults'. If `appresdir' is not a + standard X11 resource directory, the environment variable + `XFILESEARCHPATH' should be set to this path. + + The behaviour of `--with-appresdir' is unchanged: This option can + still be used to set `appresdir', and its value will not be modified + by the prefix. + + * m4/groff.m4 (GROFF_APPRESDIR_DEFAULT): Implement new behaviour. + Fix detection app-defaults location on the system. + (GROFF_APPRESDIR_CHECK): Updated. + + * configure.ac: Improve output of configuration. + * configure: Regenerated. + + * NEWS: Mention it. + +2014-09-27 Werner LEMBERG <wl@gnu.org> + + Set `transparent' flag for `\[cq]. + Problem reported by Dave Kemper <saint.snit@gmail.com>. + + * src/roff/troff/input.cpp (init_charset_table): Do it. + + * doc/groff.texinfo (Sentences, Using Symbols), man/groff_diff.man: + Document it. + +2014-09-25 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/*.pl: Program more reasonable subs (functions). + Repair details in many places. + +2014-09-24 Keith Marshall <keith.d.marshall@ntlworld.com> + + Refactor psbb line input function; avoid a buffer overrun. + + * src/roff/troff/input.cpp (ps_get_line): Declare it as `static'. + Refactor, to avoid the overhead of character look-ahead and push-back + on CR stream input. Add new `dscopt' parameter, in place of internal + `err' variable; update all call references, passing value of... + (DSC_LINE_MAX_ENFORCE): ...this new manifest constant; define it. + (DSC_LINE_MAX_IGNORED): Likewise; currently unused, but intended for + future use as an alternative to `DSC_LINE_MAX_ENFORCE'. + (DSC_LINE_MAX_CHECKED): New manifest constant; used internally only. + (PS_LINE_MAX): Manifest constant, renamed for notional consistency... + (DSC_LINE_MAX): ...to this; defined value remains as 255. + (do_ps_file): Increase stack allocation for `buf' char array; former + allocation of PS_LINE_MAX (now DSC_LINE_MAX) bytes exposed a potential + buffer overrun, after reading DSC_LINE_MAX bytes; two additional bytes + are required, to accommodate a terminating LF and NUL. Add `dscopt' + parameter, with value `DSC_LINE_MAX_ENFORCE', in each of three calls + to `ps_get_line()'. + +2014-09-20 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/groff/Makefile.sub: Remove too much deleting while + running `make'. + +2014-09-20 Bernd Warken <groff-bernd.warken-72@web.de> + + * `Makefile.sub' in the whole groff source tree: Add $(RM) and + change all `rm -f'. Add directory test before `rmdir'. + +2014-09-20 Bernd Warken <groff-bernd.warken-72@web.de> + + * Man-pages (*.man) in the whole groff source tree: Improve + documents by adding \[co], \[cq], \[aq] instead of ` or ' and use + also \[co] as long as it makes sense. Remove \[en] in the years + date in order to allow the automatic license year increasing. + +2014-09-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * <groff-source-top>/*: Improve the license information and Emacs + setup. + +2014-09-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * tmac/*: Improve the license information and Emacs setup. + +2014-09-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/utils/xtotroff/*: Improve the license information and Emacs + setup. + +2014-09-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/utils/tfmtodit/*: Improve the license information and Emacs + setup. + +2014-09-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/utils/pfbtops/*: Improve the license information and Emacs + setup. + +2014-09-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/utils/lookbib/*: Improve the license information and Emacs + setup. + +2014-09-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/utils/lkbib/*: Improve the license information and Emacs + setup. + +2014-09-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/utils/indxbib/*: Improve the license information and Emacs + setup. + +2014-09-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/utils/hpftodit/*: Improve the license information and Emacs + setup. + +2014-09-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/utils/afmtodit/*: Improve the license information and Emacs + setup. + +2014-09-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/utils/addftinfo/*: Improve the license information and Emacs + setup. + +2014-09-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/troff/*: Improve the license information and Emacs + setup. + +2014-09-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/nroff/*: Improve the license information and Emacs + setup. + +2014-09-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/*: Improve the license information and Emacs + setup. + +2014-09-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/groff/*: Improve the license information and Emacs + setup. + +2014-09-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/preproc/tbl/*: Improve the license information and Emacs + setup. + +2014-09-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/preproc/soelim/*: Improve the license information and Emacs + setup. + +2014-09-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/preproc/refer/*: Improve the license information and Emacs + setup. + +2014-09-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/preproc/preconv/*: Improve the license information and Emacs + setup. + +2014-09-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/preproc/pic/*: Improve the license information and Emacs + setup. + +2014-09-17 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/preproc/html/*: Improve the license information and Emacs + setup. + +2014-09-17 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/preproc/grn/*: Improve the license information and Emacs + setup. + +2014-09-17 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/preproc/eqn/*: Improve the license information and Emacs + setup. + +2014-09-17 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/libs/libxutil/*: Improve the license information and Emacs + setup. + +2014-09-17 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/libs/libgroff/*: Improve the license information and Emacs + setup. + +2014-09-17 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/libs/libdriver/*: Improve the license information and Emacs + setup. + +2014-09-17 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/libs/libbib/*: Improve the license information and Emacs + setup. + +2014-09-17 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/libs/gnulib/*: Improve the license information and Emacs + setup. The former run of that was not yet complete. + +2014-09-17 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/libs/gnulib/*: Improve the license information and Emacs + setup. + +2014-09-17 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/include/*: Improve the license information and Emacs setup. + +2014-09-17 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/devices/grotty/*: Improve the license information and Emacs + setup. + +2014-09-17 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/devices/grops/*: Improve the license information and Emacs + setup. + +2014-09-17 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/devices/gropdf/*: Improve the license information and Emacs + setup. + +2014-09-17 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/devices/grolj4/*: Improve the license information and Emacs + setup. + +2014-09-17 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/devices/grolbp/*: Improve the license information and Emacs + setup. + +2014-09-17 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/devices/grohtml/*: Improve the license information and Emacs + setup. + +2014-09-17 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/devices/grodvi/*: Improve the license information and Emacs + setup. + +2014-09-15 Bernd Warken <groff-bernd.warken-72@web.de> + + * man/*.man: Improve the license information (definition of .co + and .au). + +2014-09-15 Bernd Warken <groff-bernd.warken-72@web.de> + + * m4/*.m4: Improve the license information without changing the + related information. + +2014-09-06 Werner LEMBERG <wl@gnu.org> + + Fix build issues. + + * m4/groff.m4: Fix typo. + s/refer_dir/referdir/ for consistency. + + * configure: Regenerated. + + * Makefile.in: s/refer_dir/referdir/ for consistency. + + * src/preproc/refer/Makefile.sub (install_data, uninstall_sub): + Don't handle binaries or manpages; this is handled elsewhere + already. Right now, only install and uninstall the `refer' data + directory. + +2014-09-04 Bernd Warken <groff-bernd.warken-72@web.de> + + * configure: When I change the `configure' file manually, the + refer data dir is created. But when running aclocal/autoreconf, + the dir is again not created. + +2014-09-04 Bernd Warken <groff-bernd.warken-72@web.de> + + * m4/groff.m4, configure.ac, Makefile.in, + src/preproc/refer/Makefile.sub: Add information to create a refer + data directory by installing. That dir is not yet generated + anyway. + +2014-09-05 Werner LEMBERG <wl@gnu.org> + + Regenerate configure files with correct parameters. + + * configure.ac: Comment out m4 macros still missing. + + * aclocal.m4, config.hin, configure: Regenerated. + +2014-09-04 Bernd Warken <groff-bernd.warken-72@web.de> + + * some files in doc: Change the copying years to package form. + But many files have strange or no copying information. + +2014-09-04 Bernd Warken <groff-bernd.warken-72@web.de> + + * contrib/pic2graph/Makefile.sub: Change the copying years to + package form. + +2014-09-04 Bernd Warken <groff-bernd.warken-72@web.de> + + * FDL: Replace the changed actual file by the original `fdl.txt' + from <http://www.gnu.org/licenses/>. + +2014-09-03 Bernd Warken <groff-bernd.warken-72@web.de> + + * contrib/grap2graph/Makefile.sub: Remove `Last updates' from all + files. Add and repair copyright. Write Emacs setup. + +2014-09-03 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/preproc/refer/refer.man: Include more distances for better + reading of the source file. Add `%' for documentation of + bibliographic database lines. + +2014-09-03 Bernd Warken <groff-bernd.warken-72@web.de> + + * tree contrib/eqn2graph: Remove `Last updates' from all files. + Add and repair copyright. Write Emacs setup. + +2014-09-03 Bernd Warken <groff-bernd.warken-72@web.de> + + * tree `arch': Remove `Last updates' from all files. Add + and repair copyright. Write Emacs seetup. + +2014-09-03 Bernd Warken <groff-bernd.warken-72@web.de> + + * <groff top source directory>: Remove `Last updates' from all + files. Only `timestamp' values are left. + +2014-09-03 Bernd Warken <groff-bernd.warken-72@web.de> + + * <groff top source directory>: Repair copyright years from + starting year to actual year for almost all files. + +2014-09-03 Bernd Warken <groff-bernd.warken-72@web.de> + + * autom4te.cache: Remove that tree after running + `autoconf' or `autoreconf'. + + * .gitignore: Add all files within `autom4te.cache' to get rid of + them automatically. Not sure so far, if this works. + +2014-09-03 Bernd Warken <groff-bernd.warken-72@web.de> + + * BUG-REPORT, FDL, INSTALL*, MANIFEST, MORE.STUFF, NEWS, PROBLEMS, + PROJECTS, README*: Remove Emacs settings for coding style. Change + copyright years from 1989-2014 and 1993-2014 into 2014 only. + +2014-09-03 Bernd Warken <groff-bernd.warken-72@web.de> + + * configure.ac, Makefile.in: Try to use /usr/local/share directory + for `refer'. Does not work so far. + +2014-09-02 Bernd Warken <groff-bernd.warken-72@web.de> + + * All Makefile*: Add Emacs settings and lacking licenses. + +2014-09-02 Bernd Warken <groff-bernd.warken-72@web.de> + + * BUG-REPORT, FDL, INSTALL*, MANIFEST, MORE.STUFF, NEWS, PROBLEMS, + PROJECTS, README*: Add Emacs settings. + +2014-09-02 Bernd Warken <groff-bernd.warken-72@web.de> + + * PROJECTS: Add TODO for `refer'. + +2014-08-31 Bernd Warken <groff-bernd.warken-72@web.de> + + * man/roff.man (roff.7): Replace Heirloom links to more actual + places. Create macro definitions for authors (.au) and copying + (.co). + +2014-08-30 Bernd Warken <groff-bernd.warken-72@web.de> + + * man/groff_font.man (groff_font.7): Restructure + file format, but keep content. + +2014-08-30 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/utils/addftinfo/addftinfo.man (addftinfo.1): Restructure + file format, but keep content. + +2014-08-30 Bernd Warken <groff-bernd.warken-72@web.de> + + * man/roff.man (roff.7): Repair documentation of heirloom. + +2014-08-28 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/grog.pl, src/roff/grog/subs.pl: Add `gpinyin'. + + * src/roff/grog/grog.man: Restructure `SEE ALSO'. + +2014-08-28 Bernd Warken <groff-bernd.warken-72@web.de> + + * contrib/gpinyin: Make it runnable, version 1.0.0. + +2014-08-20 Bernd Warken <groff-bernd.warken-72@web.de> + + * groff.7 (man/groff.man): Add further preprocessor regions. + Repair documentation for Unicode. + +2014-08-08 Bernd Warken <groff-bernd.warken-72@web.de> + + * configure.ac, configure, Makefile.in, m4/groff.m4: Install paths + for implementing contrib/gpinyin's sub.pl. + +2014-08-06 Bernd Warken <groff-bernd.warken-72@web.de> + + * man/groff_char.man: Add description for displaying `uxxxx' as + `\[uxxxx]'. + +2014-08-05 Bernd Warken <groff-bernd.warken-72@web.de> + + * man/groff.man (groff.7): Replace \[rs] to \e as far as useful. + +2014-08-05 Bernd Warken <groff-bernd.warken-72@web.de> + + * man/groff.man (groff.7): Add documentation for the Unicode + escapes \[u....] and \[u.....]. + +2014-08-02 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/groff/groff.man: Improve documentation for `utf8'. + +2014-08-01 Bernd Warken <groff-bernd.warken-72@web.de> + + * contrib/gpinyin: New preprocessor for having the European-style + writing `pinyin' for the Chinese language. + +2014-07-22 Bernd Warken <groff-bernd.warken-72@web.de> + + * groff.7 (man/groff.man): Add some useful special characters. + +2014-07-21 Bernd Warken <groff-bernd.warken-72@web.de> + + * tbl.1 (src/preproc/tbl/tbl.man): Add simple examples. + +2014-07-12 Bernd Warken <groff-bernd.warken-72@web.de> + + * groff.7 (man/groff.man): Add section about underlining. + +2014-07-07 Bernd Warken <groff-bernd.warken-72@web.de> + + * man/groff.man (groff.7): Add some basic special characters + `\(xy'. + +2014-07-06 Bernd Warken <groff-bernd.warken-72@web.de> + + * grog, groffer: Minor repairing. + +2014-07-06 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/subs.pl: Repair ligatures handling. + +2014-07-06 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/subs.pl: Correct handling of standard input. + +2014-07-06 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/groff/groff.man: Minor correction. + +2014-07-06 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/*: Minor corrections. + +2014-07-05 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/groff/groff.cpp: In `usage()' and `help()' order + alphabetically. + +2014-07-05 Bernd Warken <groff-bernd.warken-72@web.de> + + * grog.pl, subs.pl: Heavily improve argument handling and `groff' + command line creation. + +2014-07-05 Bernd Warken <groff-bernd.warken-72@web.de> + + * grog.man: Make file runnable for `doclifter'. + +2014-07-05 Bernd Warken <groff-bernd.warken-72@web.de> + + * grog.man: Replace all .de by copying. Restrict all .char names + to length 2 only. + +2014-07-04 Bernd Warken <groff-bernd.warken-72@web.de> + + * grog.man: Minor optimization. + +2014-07-04 Bernd Warken <groff-bernd.warken-72@web.de> + + * grog.man: Transform in classical man-page style. + +2014-07-04 Bernd Warken <groff-bernd.warken-72@web.de> + + * grog.pl, subs.pl: Add option `--warnings'. Rename + `--with_ligatures' to `--ligatures', but keep `--with_ligatures' + for compatibility. + +2014-07-03 Bernd Warken <groff-bernd.warken-72@web.de> + + * Makefile.in: Remove directories `groffer/perl' and + `groffer.shell', which don't exist any more. + +2014-07-03 Bernd Warken <groff-bernd.warken-72@web.de> + + * PROJECTS: Mention the start of the `ideal' project. + +2014-06-21 Ingo Schwarze <schwarze@openbsd.org> + + * Makefile.in: Unbreak make install: + Add missing gideal dirs to the dist tarball. + +2014-06-19 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/groff/groff.man: Correct the collection of the + installation directories. + +2014-06-19 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/groff/groff.man: Add the installation file and + directory positions of the whole package with @...@. + +2014-06-19 Bernd Warken <groff-bernd.warken-72@web.de> + + * man/groff.man, src/roff/groff/groff.man: Add file position + before and after installation and the latest update. + +2014-06-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/grog.pl: Corrections about `require' and `our' + definitions. + + * src/roff/grog/subs.pl: In the `groff' output command line, split + the single character options collections into different + 1-character options, each with a leading minus `-'.. +2014-06-20 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/subs.pl: Repair call of `push'. + +2014-06-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/subs.pl: Minor correction at `do_first_line'. + +2014-06-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/subs.pl: Adjust for first lines with non-preproc + and not-tmac names to be ignored. + +2014-06-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/grog.pl, src/roff/grog/subs.pl: Add new first line + of roff files with the names of the needed preprocessors and the + actual tmac, see 2014-06-17 Ulrich Lauther. Replace the + word `ideal' by `gideal', when the preprocessor is meant. + +2014-06-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/Makefile.sub: Add $(RM). + + * src/roff/grog/grog.pl: Remove call to perl_test.pl. `require + 5.6;' is enough as Perl test. + + * src/roff/grog/perl_test.pl: Remove this file. + +2014-06-18 Bernd Warken <groff-bernd.warken-72@web.de> + + * ChangeLog: Add Emacs-mode and a separator for the license. + +2014-06-17 Ulrich Lauther <ulrich.lauther@t-online.de> + + * grog: Invent new first comment line of roff files with long + names of needed preprocessors and the tmac. + +2014-06-17 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/subs.pl: Correct handling of option `-J' for + ideal. + +2014-06-17 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/groff/groff.cpp, src/roff/groff/pipeline.h, + * src/roff/grog/subs.pl: Add `groff' option `-J' for `gideal'. + +2014-06-16 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/subs.pl: Remove too early listing of 3 `groff' + preprocessors options: gideal, glilypond, gperl. + +2014-06-16 Bernd Warken <groff-bernd.warken-72@web.de> + + * contrib/gideal: New project for installing `ideal' for `groff'. + + * Makefile.in: Add `gideal' for `OTHERDIRS'. + +2014-06-15 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/grog.pl, src/roff/grog/subs.pl: Repair argument + handling for output `groff' line. + +2014-06-15 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/grog.pl, src/roff/grog/grog.man: Correct and add + the documentation for filespec options. + +2014-06-14 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/subs.pl: Activate handling of `--run', such that + now the generated `groff' command line can run. + +2014-06-14 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/subs.pl: Repair handling of filespec arguments. + +2014-06-12 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/grog.pl, src/roff/grog/subs.pl: Add testing + methods of Ralph Corderoy's `grog.sh' of 2006. Add primary usage + of file name extensions. + +2014-06-10 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/grog.pl: Totally rewrite the `grog' version, + starting at the last stable version. Write many parts as `sub' + functions. + + * src/roff/grog/subs.pl: New file by splitting the src file + `grog.pl', such that all functions get into the new file + `subs.pl'. + + * src/roff/grog/Makefile.sub: Add file `subs.pl', which goes into + the `grog' libdir. + +2014-06-03 James Cloos <cloos@jhcloos.com> + + * src/roff/grog/grog.pl: The errors with `ligatures' come also + from `TeX GYRE' fonts. Print this information, when `grog' should + work with the `pdf' device. + +2014-06-02 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/grog.pl: The `grog' version of yesterday has many + bugs. So reinstall an old version of `grog'. + +2014-06-01 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/Makefile.sub: Remove changing of first line + `#! ...'. + +2014-06-01 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/grog.pl: Remove `$Sp' mostly. Reorder script. + Check and repair requests. Add final character `$' to many + checked requests. + +2014-06-01 Bernd Warken <groff-bernd.warken-72@web.de> + + * man/roff.man: Move .TH at the beginning. + +2014-05-29 Bernd Warken <groff-bernd.warken-72@web.de> + + * man/groff.man: In special characters, add the mentioning of the + `groff' writing `\[xy]'. + +2014-05-27 Bernd Warken <groff-bernd.warken-72@web.de> + + * man/groff_char.man: Finish notes in all tables. + +2014-05-26 Bernd Warken <groff-bernd.warken-72@web.de> + + * man/groff_char.man: Add notes in some tables, more will come. + +2014-05-26 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/grog.pl: Add further first line characters for + single character `groff' options. + + * src/roff/grog/grog.man: make generated options more readable. + +2014-05-26 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/grog.pl: Add detection of `.\" [eprt]' as first + line to `grog'. Change usage of `$Sp' to reasonable efforts in + `groff'. + + * src/roff/grog/grog.man, man/groff_char.man: Add website for + license text, not only the postal address. + +2014-04-03 Steffen Nurpmeso <sdaoden@yandex.com> + + * */Makefile.*: Path quoting fixes, whitespace, formatting. + + Remove many quotes (and introduce a few as additional guards) + since groff's build system is generally not set up to properly + handle paths that need quoting. + +2014-04-03 Steffen Nurpmeso <sdaoden@yandex.com> + + * Makefile.comm (extraclean): Don't delete `old'. + + The rule calling `rm -f' was originally thought to remove private, + temporary files. However, we now have a subdirectory called `old' + in `fonts/devps' that may not be removed, and trying so now causes + an error because we no longer ignore the returned error code of + `rm'. + +2014-04-03 Steffen Nurpmeso <sdaoden@yandex.com> + + * Makefile.in (OTHERDIRS): Fix directory order. + + This has been accidentally broken in commit 51476bee from + 2014-02-25. + +2014-04-03 Steffen Nurpmeso <sdaoden@yandex.com> + + * src/devices/gropdf/pdfmom.pl: Fix perl(1) warning. + +2014-03-30 Werner LEMBERG <wl@gnu.org> + + * configure: Regenerated. + +2014-03-30 Steffen Nurpmeso <sdaoden@yandex.com> + + * */Makefile.*: Put straight error-prevention prefixes for `rm'. + +2014-03-30 Steffen Nurpmeso <sdaoden@yandex.com> + + `uninstall' target: Avoid spurious and misleading error messages. + + * Makefile.comm (uninstall_dev): Improve. + + * font/devpdf/Makefile.sub (install_data): Remove superfluous `rm'. + (uninstall_sub): Improve. + + * src/roff/groff/Makefile.sub (uninstall_sub): Fix. + +2014-03-30 Steffen Nurpmeso <sdaoden@yandex.com> + + Fixes for `uninstall' target. + + * Makefile.in (uninstall_dirs): Use `DESTDIR'. + + * src/libs/libgroff/Makefile.sub (uninstall_charset_data): Typo. + + * src/roff/groff/Makefile.sub (uninstall_sub): Typo. + + * src/roff/grog/Makefile.sub (uninstall_sub): Minor. + +2014-03-30 Steffen Nurpmeso <sdaoden@yandex.com> + + * src/roff/grog/Makefile.sub (install_data): Typo. + +2014-03-29 Steffen Nurpmeso <sdaoden@yandex.com> + + Add fine-tuning of doc generation to `configure'. + + * m4/groff.m4 (GROFF_DOC_CHECK): New macro, handling option + `--with-doc' and its new arguments. It sets + `docadd_{html,info,other,pdf,examples}' and exports + `make{_,_install_,_uninstall_}{otherdoc,examples}'. + (GROFF_MAKEINFO): Extended to export + `make{_,_install_,_uninstall_}infodoc'. + (GROFF_HTML_PROGRAMS): Extended to export + `make{_,_install_,_uninstall_}{htmldoc,htmlexamples}'. + (GROFF_PDFDOC_PROGRAMS): Extended to export + `make{_,_install_,_uninstall_}{pdfdoc,pdfexamples}'. + (GROFF_INSTALL_INFO): Guard test with `docadd_info'. + + * configure.ac: Use GROFF_DOC_CHECK. + * Makefile.in: Updated. + + * doc/Makefile.sub: Handle examples separately, controlled by + $(make{_,_install_,_uninstall_}examples). + +2014-03-27 Bjarni Ingi Gislason <bjarniig@rhi.hi.is> + + * tmac/www.tmac (TAG): Define register `PN'. + +2014-03-27 Bjarni Ingi Gislason <bjarniig@rhi.hi.is> + + * tmac/an-ext.tmac (EX, EE): Preserve font family. + +2014-03-17 Werner LEMBERG <wl@gnu.org> + + * src/preproc/eqn/box.cpp (set_script_size): Fix minimum test. + + Problem reported by Ted Harding <ted.harding@wlandres.net> in a + thread starting with + + http://lists.gnu.org/archive/html/groff/2014-03/msg00181.html + +2014-03-16 Werner LEMBERG <wl@gnu.org> + + Fix previous commit. + + Problem reported (with a patch) by Ingo Schwarze + <schwarze@openbsd.org>. + + * doc/Makefile.sub (groff_bin_dirs): Add `preconv'. + + * doc/Makefile.in (groff_bin_dirs): Add `preconv'. + (.me.txt): Call preconv. Use UTF8 as output encoding. + (.me.ps): Call preconv. + +2014-03-14 Werner LEMBERG <wl@gnu.org> + + [me] Add translation of `meintro.me' to French. + + Contributed by Grégoire Babey <gibux@gmx.ch>. + + * doc/meintro_fr.me: New file. + * LICENSES, doc/Makefile.sub: Updated. + +2014-03-13 Ingo Schwarze <schwarze@openbsd.org> (tiny change) + + man: Correctly reset margins. + + See + + http://lists.gnu.org/archive/html/groff/2013-11/msg00026.html + + for more. + + * tmac/an-old.tmac (set-an-margin): Whenever (re)setting + `\n[an-level]' to 1 (which happens when encountering `.TH', `.SH', + and `.SS') make sure to also (re)set `\n[an-saved-margin1]' and + `\n[an-saved-prevailing-indent1]' to a sane value such that an + immediate `.RE' cannot wreak havoc. + (TH, SH, SS): Updated. + +2014-03-11 Ingo Schwarze <schwarze@openbsd.org> (tiny change) + + * Makefile.in: Do not forget to install gropdf manuals. + + This got broken in 290eaaac6cfc33856cd683838accc72ccf3e5a84: + src/devices/gropdf was split out of OTHERDIRS into SHPROGDIRS, and + consequently, Makefile.man was no longer used there. Note that + Makefile.dev is *not* needed, even though it's below /devices/. + +2014-03-11 Ingo Schwarze <schwarze@openbsd.org> (tiny change) + + * src/roff/groff/Makefile.sub: POSIX conformance. + + - POSIX says that the meaning of the make(1) `$<' macro shall be + unspecified except in inference rules. Consequently, use `$?' + for portability. + + That's safe because the rules have only one prerequisite and + are not `.PHONY', so `$?' will always expand to one item. + + - While here, clean up two instances of superfluous use of cat(1). + +2014-03-11 Ingo Schwarze <schwarze@openbsd.org> (tiny change) + + * Makefile.in (dist): Improve. + + - Bugfix: Do not error out if one of the DISTDIRS + contains a subdirectory. + - Make debugging easier by splitting the huge "cd tmp; ...; ..." + command sequence into several independent shell commands, + such that one can see which command actually fails. + +2014-03-06 Deri James <deri@chuzzlewit.myzen.co.uk> + + Missing RE escape in grep. + + * src/devices/gropdf/pdfmom.pl: Escape '\' dot in grep RE. + +2014-02-26 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/grog.pl: Add detection of `gperl' to `grog'. + +2014-02-25 Bernd Warken <groff-bernd.warken-72@web.de> + + * contrib/gperl: New preprocessor for Perl parts in groff files. + +2014-02-15 Ingo Schwarze <schwarze@openbsd.org> + + * tmac/groff_mdoc.man: Improve the manual page template. + + - Add the EXIT STATUS section. It is widely used in at least + NetBSD, FreeBSD, OpenBSD, and DragonFly manuals. + - Recommend the DIAGNOSTICS section for section 4 manuals. Such + usage is very widespread, in particular for kernel printf + messages emitted by device drivers. + - Do not recommend the DIAGNOSTICS section for command return + values to the shell any longer. While such usage historically + existed, it does not seem common nowadays, and in any case, using + the now well-established EXIT STATUS section seems preferable to + me. + - Mention the possibility to use ERRORS for section 4 manuals. + While most section 4 manuals have a DIAGNOSTICS section, only + some will need an ERRORS section, but these cases aren't exactly + rare, either. Quite some device driver manuals explain how to + use the device using system calls like ioctl(2), open(2), read(2) + or write(2), in which case the ERRORS section is the natural + place to explain which errno values the driver may set during + such system calls. + - Mentioning signal handling as a content of the ERRORS section + seems redundant, it is already covered by talking about the + errno. The case of errno == EINTR should be handled just like + all other errno cases. For an example showing that there is no + need to single out error handling in any way, please look at a + typical read(2) manual page. + - Mention the CAVEATS section. It first appeared in the 4.2BSD + execve(2) manual in 1983, was already used by several manuals by + the time of 4.4BSD-Lite2 in 1995, and is in whidespread use + today, not just in BSD base system manuals, but for example in + Perl manuals as well. + +2014-02-14 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/grog.pl: Add detection of glilypond-parts in groff + files. For example `grog example.groff' from the glilypond source + gets `glilypond example.groff | groff'. + +2014-02-12 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/grog.pl: With the former bugfix of 2014-02-12, + it's now possible to run `grog meref.me' etc., which wasn't + possible before. That addition of the macro handling was + necessary for the automatic for `groffer'. + +2014-02-12 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/grog/grog.pl: Add handling of macro definition and fix + problems with @VERSION@. + +2014-02-12 Rich Burridge <rich.burridge@oracle.com> + + [grn] Prevent crash if more than 50 command line arguments. + + * src/preproc/grn/main.cpp (INIT_FILE_SIZE, FILE_SIZE_INCR): New + macros. + (add_file): New function. + (main): Use it to add file arguments. + +2014-01-29 Ulrich Spörlein <uqs@FreeBSD.org> + + * tmac/doc-common: Add even more DragonFlyBSD releases. + +2014-01-28 Ulrich Spörlein <uqs@FreeBSD.org> + + * tmac/doc-common: Add some new *BSD version strings. + +2014-01-06 Bernd Warken <groff-bernd.warken-72@web.de> + + * man/roff.man: Add information of new archives for RUNOFF and + roff_classical. + + * Makefile.in: Replace `contrib/RUNOFF' by + `contrib/groff_filenames'. + +2014-01-05 Bernd Warken <groff-bernd.warken-72@web.de> + Werner LEMBERG <wl@gnu.org> + + * groff/tmac/groff_man.man: Minor typos, formatting, reordering. + +2014-01-05 Werner LEMBERG <wl@gnu.org> + + Revert recent changes to `an-ext.tmac' and `groff_man.man'. + + * groff/tmac/an-ext.tmac (.FONT): Remove. This doesn't belong into + this file. + + * groff/tmac/groff_man.man: Reset to state previous to 2014-01-04. + Useful changes will be re-committed in smaller, logical chunks. + +2014-01-05 Bernd Warken <groff-bernd.warken-72@web.de> + + * groff/tmac/an-ext.tmac: in .FONT change variable name `result' + to `an_ext_FONT_result'. + +2014-01-04 Bernd Warken <groff-bernd.warken-72@web.de> + + * groff/tmac/an-ext.tmac: add new request .FONT for using + different font names on a single line. + + * groff/tmac/groff_man.man: put under GPL2, reordered and enhanced. + +2014-01-02 Deri James <deri@chuzzlewit.myzen.co.uk> + + * src/devices/gropdf/gropdf.pl: gropdf use to fail when handling + output from preconv, now works. + + * src/devices/gropdf/pdfmom.pl: can now be used as a pipeline, and + improvements made to its switch handling and use with preconv. + + * tmac/pdf.tmac: changes to support preconv. + +2014-01-02 Colin Watson <cjwatson@debian.org> + + * font/devascii/Makefile.sub ($(FONTS)): Convert extended regex + syntax to basic for sed. + * font/devcp1047/Makefile.sub ($(FONTS)): Likewise. + * font/devhtml/Makefile.sub ($(FONTS)): Likewise. + * font/devlatin1/Makefile.sub ($(FONTS)): Likewise. + * font/devutf8/Makefile.sub ($(FONTS)): Likewise. + +2013-12-23 Bernd Warken <groff-bernd.warken-72@web.de> + + * groff/src/roff/groff/groff.cpp: add groff option `-G' to the + documentation in `synopsis()'. + +2013-12-06 Mike Frysinger <vapier@gentoo.org> + + Fix parallel build with gropdf and mom examples. + + The `contrib/mom/examples/' directory uses the helper script from + `src/devices/gropdf/'. Currently though, parallel builds might fail + like so: + + ... + make[2]: Entering directory `.../groff-1.22.2/contrib/mom' + <groff command> examples/letter.mom >examples/letter.pdf + <groff command> examples/mom-pdf.mom >examples/mom-pdf.pdf + /bin/sh: .../groff-1.22.2/src/devices/gropdf/pdfmom: No such file or directory + make[2]: *** [examples/letter.pdf] Error 127 + /bin/sh: .../groff-1.22.2/src/devices/gropdf/pdfmom: No such file or directory + make[2]: *** [examples/mom-pdf.pdf] Error 127 + make[2]: Leaving directory `.../groff-1.22.2/contrib/mom' + make[1]: *** [contrib/mom] Error 2 + ... + make[2]: Entering directory `.../groff-1.22.2/src/devices/gropdf' + sed -f .../groff-1.22.2/arch/misc/shdeps.sed \ + -e "s|@VERSION@|1.22.2|" \ + -e "s|@PERLPATH@|/usr/bin/perl|" ./pdfmom.pl >pdfmom + + The top level makefile tries to account for this in general with + OTHERDIRS, but looks like `src/devices/gropdf/' was added to this + variable (which holds `contrib/mom/' too) because gropdf installs a + shell script, and the other prog vars require it to be a dir of + things to compile. + + URL: http://crbug.com/324116 + URL: https://bugs.gentoo.org/487276 + + * Makefile.in (SHPROGDIRS): Declare. + (PROGDIRS): Add $(SHPROGDIRS). + (OTHERDIRS): Delete src/devices/gropdf. + ($(SHPROGDIRS):): Add to existing rule. + ($(OTHERDIRS):): Depend on $(SHPROGDIRS). + +2013-12-08 Eric S. Raymond <esr@thyrsus.com> + + Repository fully converted to git. + +2013-11-21 Werner LEMBERG <wl@gnu.org> + + * config.guess, config.sub: Updated from `config' repository. + +2013-11-06 Werner LEMBERG <wl@gnu.org> + + * src/libs/libgroff/tmpname.cpp (gen_tempname): Use O_BINARY. + + Problem reported by Charlie Van Dien <charlie@vandien.com>; see + + http://lists.gnu.org/archive/html/groff/2013-10/msg00006.html + +2013-11-06 Werner LEMBERG <wl@gnu.org> + + * Makefile.comm (.man.n): Use C locale. + + Problem reported by Petr Man <petr@madnetwork.org>; fix suggested by + Ralph Corderoy <ralph@inputplus.co.uk>. + +2013-07-24 Ingo Schwarze <schwarze@openbsd.org> + + [mdoc] Implement `.%C'. + + * tmac/doc.tmac, tmac/doc-common: Do it. + * tmac/groff_mdoc.man: Updated. + +2013-07-31 Deri James <deri@chuzzlewit.myzen.co.uk> + + Fix overprinting issue with Acrobat reader. + + Problem reported by Heinz-Jürgen Oertel <hj.oertel@t-online.de>. + + * src/devices/gropdf/gropdf.pl (do_t, FindChar): Use ascii octal + notation (i.e., \015) when outputting characters with value < 32. + This fixes a bug which affected acroread when control-M (cr) was + embedded in a text string. + +2013-07-16 Werner LEMBERG <wl@gnu.org> + + * tmac/fallbacks.tmac: Make it work in compatibility mode. + + Problem reported by Y T <doarhop@hotmail.com>. + +2013-07-16 Werner LEMBERG <wl@gnu.org> + + * src/roff/grog/Makefile.sub (install_data, uninstall_sub): Typos. + +2013-07-16 Werner LEMBERG <wl@gnu.org> + + * Makefile.in (GREP, MDEFINES): Define and use plain grep. + + Necessary for Bernd's code to extract groff options. + +2013-07-16 Ingo Schwarze <schwarze@openbsd.org> + + * tmac/an-old.tmac (TP): Do not clobber line length after double + call to `.TP'. + +2013-07-02 Colin Watson <cjwatson@debian.org> + + * doc/groff.texinfo: Fix syntax error in documentation of `\z'. + +2013-07-02 Colin Watson <cjwatson@debian.org> + + * src/devices/grolbp/lbp.cpp (main): Don't write trailer if no + printer was created. + +2013-06-19 Eric S. Raymond <esr@thyrsus.com> + + * src/utils/lkbib/lbib.man: Move running text out of synopsis. + +2013-05-06 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/groff/Makefile.sub: Replace `cpp' by `groff.cpp'. + +2013-05-06 Bernd Warken <groff-bernd.warken-72@web.de> + + * Makefile.in: Add new `contrib' directory `RUNOFF'. + +2013-05-01 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/groff/Makefile.sub: Remove all `.PHONY:' lines. + +2013-04-30 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/groff/Makefile.sub: Replace `egrep' by `$(GREP)'. + commands. Don't use $(CCSRCS) any more. + +2013-04-30 Bernd Warken <groff-bernd.warken-72@web.de> + + * Makefile.in, m4/groff.m4: Add `@libprogramdir@' and + `$libprogramdir' (usually `/usr/local/lib/groff'). Change + `$libdir/groff' into $libprogramdir for several `groff' programs. + Run `autoreconf -I m4'. + + * src/roff/groff/MAkefile.sub: Add $(DESTDIR) and $(srcdir) in + order to support installation outside of source code. + + * contrib/glilypond/Makefile.sub, contrib/glilypond/glilypond.pl: + Correct the install directories. + +2013-04-29 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/groff/Makefile.sub: Replace some variables by shell + commands. Improve the output for the `make' runs. + +2013-04-28 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/groff/Makefile.sub: Make this Makefile compatible. + +2013-04-28 Bernd Warken <groff-bernd.warken-72@web.de> +2013-04-28 Werner LEMBERG <wl@gnu.org> + + * src/roff/groff/Makefile.sub: Use `make' variables to get + `groff' options from `getopt' in `groff.cpp'. Create 2 files + `groff_opts_no_arg.txt' and `groff_opts_with_arg.txt'. + +2013-04-26 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/groff/read_groff_options.pl: Remove this file. It's + no longer needed. + + * src/roff/groff/Makefile.sub: Get the `groff' options from the + use of `getopt...' in `groff.cpp' using `$(EGREP)' and `sed'. + Store this information in a new file `groff_options.txt', which + is copied to `groff libdir' during the installation. + +2013-04-26 Werner LEMBERG <wl@gnu.org> + + Various minor fixes. + + * INSTALL.gen: Take the newest version from the `gnulib' + repository. + + * configure: Regenerated. + +2013-04-26 Bernd Warken <groff-bernd.warken-72@web.de> + + * INSTALL.gen: Restore an older version from `2006' in + `groff-1.21'. + + * FOR-RELEASE: New file which describes how to prepare `groff' + for a new release. + +2013-04-26 Bernd Warken <groff-bernd.warken-72@web.de> + + * src/roff/groff/read_groff_options.pl: Reads `groff' options + from `groff.cpp' and writes them into the file `groff_options.info'. + + * src/roff/groff/Makefile.sub: Have the generated file + `groff_options.info' be installed into the `groff libdir'. + +2013-04-16 Bernd Warken <groff-bernd.warken-72@web.de> + + * INSTALL.gen: Replace this file by the daily `git' version of + `automake' `INSTALL' file. + + * INSTALL.autotools: Remove file. + + * INSTALL.CVS: New file, moved from `INSTALL.autotools'. + + * m4/ax_prog_perl_version.m4: New file, taken from package + `autoconf-archive-2013.04.06'. + + * m4/groff.m4: Remove unnecessary blank line. + + * Makefile.in: Add `$(PERLVERSION)'. + + * aclocal.m4: Run `autoreconf -I m4' (this includes + `aclocal -I m4'). This creates a suitable `aclocal.m4'. Remove + generated subdirectory `autom4te.cache'. + + * src/roff/grog/Makefile.sub: Correct `sed' command. Use `tabs' + that are needed by `GNU make'. + +2013-04-16 Bernd Warken <groff-bernd.warken-72@web.de> + + * Makefile.sub: Add `m4/ax_compare_version.m4'. + + * aclocal.m4: Run the latest `aclocal -I m4' which generates a + suitable content in that file. + + * INSTALL.autotools: Information of the usage of `GNU autotools' + with `groff'. + + * INSTALL.gen: Move `autotool' parts to file `INSTALL.autotools'. + +2013-04-15 Bernd Warken <groff-bernd.warken-72@web.de> + + * m4/groff.m4: Replace tabs by spaces. Use a double line between + AC_DEFUNs. + +2013-04-15 Bernd Warken <groff-bernd.warken-72@web.de> + + In the whole `groff' system, rename autoconf variable `$PERLPATH' + to `$PERL', which has the same content. But `$PERL' suits to + `AX_PROG_PERL_VERSION' in m4 macro `GROFF_PERL' in `m4/groff.m4'. + + * src/utils/afmtodit/Makefile.sub, + * src/devices/gropdf/gropdf.pl, + * src/devices/gropdf/Makefile.sub, + * src/devices/gropdf/pdfmom.pl, + * arch/djgpp/config.site, + * font/devpdf/Makefile.sub, + * contrib/mm/Makefile.sub, + * m4/groff.m4, + * Makefile.in: Replace `$PERLPATH' by `$PERL'. + + * m4/ax_compare_version.m4: New file, copied from daily version of + `GNU autoconf-archive'. + + `autoconf' was not yet run, a newer version is needed. + +2013-04-15 Bernd Warken <groff-bernd.warken-72@web.de> + + * README, INSTALL, INSTALL.gen, MANIFEST: Add documentation in the + top directory about some parts of `autotools' and `glilypond'. + +2013-04-15 Bernd Warken <groff-bernd.warken-72@web.de> + + * configure.ac: Add information of the macro `GROFF_PERL'. + + * Makefile.in: Add definitions of the macro variables and their + `@...@' counterparts. + + Run `autoreconf -I m4'. + +2013-04-15 Bernd Warken <groff-bernd.warken-72@web.de> +2013-04-15 Werner LEMBERG <wl@gnu.org> +2013-04-15 Ralph Corderoy <ralph@inputplus.co.uk> + + Add Perl test to configuration. During the run of `configure' the + program is broken with error when there is no `Perl' or the `perl' + program is too old. + + * m4/groff.m4: Add macro `GROFF_PERL' that tests the availability + of the `perl' program and tests whether this has a version of at + most `v5.6.1'. Define variables $PERL and $PERLPATH for the full + name of the `perl' program and $PERLVERSION as the lest version. + +2013-04-13 Keith Marshall <keithmarshall@users.sourceforge.net> + + Avoid consideration of autotool cache for CVS inclusion. + + * .cvsignore (autom4te.cache): Add reference. + +2013-04-13 Bernd Warken <groff-bernd.warken-72@web.de> + + * `autotools': During the run of `autoconf' and `autoreconf' a + subdirectory `autom4te.cache' was created. I first added this to + groff CVS and removed it again after an email-discussion. + +2013-04-12 Bernd Warken <groff-bernd.warken-72@web.de> + + * `grog': Remove the shell version of `grog'. Now there is only + Perl version. + + * src/roff/grog/perl.sh: Remove this file. + + * src/roff/grog/Makefile.sub: This file handles the removement of + the shell version. + + * src/roff/grog/perl_test.pl: New file for testing the available + Perl version in the system to be installed into. This file will + be installed into the grog lib-directory. + +2013-04-12 Bernd Warken <groff-bernd.warken-72@web.de> + + * `grog': In the following, the file `grog.pl' will be split. For + the coming files, a lib-directory is needed for storage. + + * m4/groff.m4, configure.ac: Add libdir information for `grog'. + + * Makefile.in: Add @grog_dir@. + + Run `autoconf'. + + `grog' has now a lib-directory at `$prefix/lib/groff/grog'. + +2013-04-11 Bernd Warken <groff-bernd.warken-72@web.de> + + * contrib/groffer/: There is a free `git' package containing all + old `groffer' versions `v0.*' and `v1.*'. The new versions + `groffer 2.*' will actually not be included. This package can be + got at: + + $ git clone git@github.com:RUNOFF/groffer.git + +2013-04-11 Bernd Warken <groff-bernd.warken-72@web.de> + + * contrib/glilypond/: There is a free `git' package containing all + old versions of the former name `groff_lilypond v0.*'. They work + with `lilypond' parts in `roff' files, but were not installed. + This package can be got at: + + $ git clone git@github.com:RUNOFF/groff_lilypond.git + + The new versions `glilypond v1.*' are not included there. + +2013-04-11 Bernd Warken <groff-bernd.warken-72@web.de> + + * man/roff.man: For roff(7), add information about the free git + package RUNOFF.git with documentation about historical RUNOFF and + the available files written in the classical RUNOFF language.. + +2013-03-29 Bernd Warken <groff-bernd.warken-72@web.de> + + Rename `groff_lilypond' to `glilypond'. So remove the former + source directory `<groff_src_dir>/contrib/lilypond' and newly + install `<groff_src_dir>/contrib/glilypond', which now has many + files. The new version starts at `v1.0'. + + * m4/groff.m4, configure.ac: Add libdir information for + `glilypond'. + + * Makefile.in: Add `<groff_src_dir>/contrib/glilypond'. + + Run `autoconf'. + + `glilypond' can now be installed to the system. + +2013-03-17 Ingo Schwarze <schwarze@openbsd.org> + + * font/devpdf/Makefile.sub: Build system fixes. + + (GROFF_FONT_FILES): Avoid installing Makefile.sub.orig when it's + around. + (install): Create $(DESTDIR)$(fontsubdir)/util when missing. + +2013-03-05 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Improve documentation of `\s'. + + Reported by Jim Avera <james_avera@yahoo.com>. + +2013-02-16 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Improve documentation of `.substring'. + + Reported by Jim Avera <james_avera@yahoo.com>. + +2013-02-13 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Fix if-else example. + + Reported by Jim Avera <james_avera@yahoo.com>. + +2013-02-10 Werner LEMBERG <wl@gnu.org> + + [grops] Make binary `%%BeginData' work; support `fontset' resource. + + * src/devices/grops/psrm.cpp (resource_table): Add `fontset'. + + (resource_manager::read_resource_arg): Do a case insensitive + comparison. The PostScript Reference Manual gives the following + example for a CFF resource (example 5.7): + + %!PS-Adobe-3.0 Resource-FontSet + %%DocumentNeedResources: ProcSet (FontSetInit) + %%Title: (FontSet/CFFRoman27) + %%Version: 1.000 + %%EndComments + %%IncludeResource: ProcSet (FontSetInit) + %%BeginResource: FontSet (CFFRoman27) + /FontSetInit /ProcSet findresource begin + %%BeginData: 622532 Binary Bytes + /CFFRoman27 622503 StartData + ... 622,503 bytes of binary data ... + %%EndData + %%EndResource + %%EOF + + Note the `ProcSet' and `FontSet' keywords. While the old DSC + (Document Structure Convention) documentation doesn't cover + `FontSet' at all (the DSC documentation predates the invention of + CFF), it describes only `procset' (all letters downcase), and it + also says that the DSC parser works in a case sensitive manner. + + In other words, `ProcSet' is not valid according to the DSC + documentation, only `procset' is. So much about today's validity + of DSC... This patch adapts grops's code to the PostScript + reality. + + (resource_manager::do_begin_data): Fix typo (present since the + beginning) which prevented correct handling of binary data. + + * src/devices/grops/ps.h (resource_type): Add RESOURCE_FONTSET. + +2013-02-10 Bernd Warken <groff-bernd.warken-72@web.de> + + * contrib/lilypond: New files for adding lilypond parts into groff + files. + +2013-02-07 Werner LEMBERG <wl@gnu.org> + +Version 1.22.2 released +======================= + + * NEWS, REVISION, doc/groff.texinfo, doc/webpage.ms: Updated. + + * configure: Regenerated. + + * doc/texinfo.tex: Updated from `texinfo' repository. + + * src/roff/groff/groff.cpp (main) <'v'>: Update copyright year. + +2013-02-07 Werner LEMBERG <wl@gnu.org> + + * src/libs/gnulib/*: Update `gnulib' files. + +2013-02-02 Gilles Espinasse <g.esp@free.fr> + + [grohtml] Don't ignore return value of `dup'. + + * src/preproc/html/pushback.cpp (pushBackBuffer::pushBackBuffer, + pushBackBuffer::~pushBackBuffer): Abort if `dup' fails. + +2013-01-30 Bernd Warken <groff-bernd.warken-72@web.de> + + * tmac/groff_man.man: Fix wrong connection for tbl(1). + +2013-01-29 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Fix documentation of .LP macro in ms. + Problem reported by Omari Norman <omari@smileystation.com>. + +2013-01-29 Werner LEMBERG <wl@gnu.org> + + * doc/Makefile.sub (uninstall_sub): Handle `gnu.eps'. + +2013-01-29 Werner LEMBERG <wl@gnu.org> + + Building clean-ups. + + * Makefile.in: Use $(top_srcdir) where appropriate. + * Makefile.sub (M4MACROS): Add `fcntl-o.m4' and `localcharset.m4'. + + * font/devpdf/Makefile.sub (UTILFILES): Removed, unused. + (MOSTLYCLEANADD): Add `BuildFoundries'. + * src/devices/gropdf/Makefile.sub (MOSTLYCLEANADD): Add `pdfmom'. + +2013-01-24 Bernd Warken <groff-bernd.warken-72@web.de> + + * Add a shell command to 'MANIFEST' that displays all man source + files and their section. + +2013-01-22 Bernd Warken <groff-bernd.warken-72@web.de> + + * Add email address in all files having the name. + +2013-01-14 Deri James <deri@chuzzlewit.myzen.co.uk> + + * src/devices/gropdf/gropdf.pl (do_x, do_p, do_s, Set_LWidth): The + grops driver defaults to round linecaps and linejoins, gropdf + incorrectly used butt caps and miter joins. + + (Since the MOM package expects to use butt caps and miter joins + (emitting the necessary postscript code to change the caps and + joins), gropdf now parses the same postscript commands.) + + * src/devices/gropdf/gropdf.man: Document the handling of linecaps + and linejoins. + + * tmac/pdf.tmac (pdfbookmark): Fix bug where the current + PDFOUTLINE.FOLDLEVEL may not be honoured if warnings of the type + + macro warning: adjusted level n bookmark; should be <= n + + Added copyright and mention debt owed to Keith Marshall for + original `pdfmark.tmac', upon which `pdf.tmac' is largely based. + + * font/devpdf/Foundry.in, font/devpdf/util/BuildFoundries.pl + (LocateFile): The font for EURO had the wrong entry in the + `download' file (it pointed to The font in the build directory, + which is wrong). It has always been permissible to include a + path along with the font name in the Foundry file, but until now + the font had to exist to be valid. It is now permitted to start + the path with an asterisk which tells BuildFoundry to use the + path/filename in the download file without checking if the font + exists. This allows the font to be found in `../devps' even + though it is not there during the build (if source and build are + different), but will be there after the install. + +2013-01-13 Werner LEMBERG <wl@gnu.org> + + [eqn] Fix display of matrices in nroff output. + + Problem reported by Andy Spencer <andy753421@gmail.com>. + + * src/preproc/eqn/pile.cpp (pile_box::compute_metrics, + matrix_box::compute_metrics): Fix rounding. + +2013-01-07 Deri James <deri@chuzzlewit.myzen.co.uk> + + * tmac/europs.tmac: Protect against missing fonts. + +2013-01-07 Deri James <deri@chuzzlewit.myzen.co.uk> + + * font/devpdf/util/BuildFoundries.pl (LoadFoundry): Improve + warning. + +2013-01-07 Werner LEMBERG <wl@gnu.org> + + [tbl] Allow characters #, `, and ' as eqn delimiters. + + While problems ` and ' have been unintentionally introduced rather + recently, the limitation regarding # was there from the beginning. + + At the same time, fix a small bug causing `.lf' requests not + starting a line. + + * src/preproc/tbl/table.cpp (table::init_output) + (table::compute_expand_width, table::compute_separation_factor) + (table::define_bottom_macro, table::do_bottom): Temporarily switch + off eqn delimiters, wrapping the code into a `.ig' block. This + uses the new functionality just added to eqn. + + * src/preproc/eqn/eqn.man, src/preproc/tbl/tbl.man: Updated. + +2013-01-06 Werner LEMBERG <wl@gnu.org> + + [eqn] Add `delim on'. + + * src/preproc/eqn/lex.cpp (start_delim_saved, end_delim_saved): + New global variables. + (do_delim): Handle `delim on' to restore previous start and end + delimiters. + + * src/preproc/eqn/eqn.man, NEWS: Document it. + +2013-01-02 Deri James <deri@chuzzlewit.myzen.co.uk> + + [gropdf] Various minor fixes. + + * src/devices/gropdf/gropdf (do_x) <'X'> <'pdfpic'>: Using + + \X'pdf: pdfpic' + + with a zero width now works correctly. + + (LoadPDF): Scale width in proportion to given height. + + (do_s): In some circumstances a font size change is emitted before + current font is established. Fix handles this situation. + +2012-12-30 Werner LEMBERG <wl@gnu.org> + +Version 1.22.1 released +======================= + + Due to CVE-2012-3386, ftp.gnu.org rejected uploading of version + 1.22 -- in other words, 1.22 has never been released. + + * NEWS, REVISION, doc/groff.texinfo, doc/webpage.ms: Updated. + + * Makefile.in (NOMAKEDIRS): Updated. + +2012-12-30 Werner LEMBERG <wl@gnu.org> + + * src/libs/gnulib/*: Update `gnulib' files. + + Because we currently don't support `gnulib-tool' directly but add + everything to the CVS repository, and many internal details of the + gnulib setup has changed, it is necessary to do redo the import. + + . Temporarily rename `src/libs/gnulib' to `src/libs/gnulib.old'. + + . Call + + gnulib-tool --create-testdir \ + --dir=src/libs/gnulib \ + wcwidth + + . Manually move directories `src/libs/gnulib/gl{lib,m4}' to + `src/libs/gnulib/{lib,m4}', and do `s/gllib/lib/' and `s/glm4/m4/' + in all files to `convert' the gnulib testbed to a standard gnulib + configuration as maintained by gnulib-tool. Additionally, remove + the directory `src/libs/gnulib/gltests' and the references to + `gltests' in all files. + + (All of this could be done with a script, but I hope that this is + eventually replaced with migrating groff as a whole to gnulib and + its setup). + + . Call + + gnulib-tool --add-import \ + --dir=src/libs/gnulib \ + wcwidth + + to update everything. + + . Merge the changed, new, and deleted files into `gnulib.old', + delete `gnulib', rename `gnulib.old' to `gnulib', then commit. + +2012-12-28 Werner LEMBERG <wl@gnu.org> + + [doc] More documentation generation rules. + + * doc/Makefile.in (.texinfo.txt): New rule. + (.texinfo.html): Use `LANG='. + (split-html): New target. + +2012-12-28 Werner LEMBERG <wl@gnu.org> + + * doc/fixinfo.sh: Make it work with makinfo 4.13 also. + +2012-12-28 Werner LEMBERG <wl@gnu.org> + + Split ChangeLog. + + * ChangeLog: Split off older entries into... + * ChangeLog.121: this new file. + +2012-12-28 Werner LEMBERG <wl@gnu.org> + +Version 1.22 released +===================== + + * NEWS, VERSION, doc/groff.texinfo, doc/webpage.ms: Updated. + + * config.guess, config.sub: Updated from `config' repository. + + * INSTALL.gen: Updated from `gnulib' repository (file `INSTALL'). + + * aclocal.m4, configure: Regenerated. + + * doc/texinfo.tex: Updated from `texinfo' repository. + + * src/roff/groff/groff.cpp (main) <'v'>: Update copyright year. + +2012-12-27 Bjarni Ingi Gislason <bjarniig@rhi.hi.is> + + * man/groff_font.man: Typographical improvements and typos. + +2012-12-27 Bjarni Ingi Gislason <bjarniig@rhi.hi.is> + + * man/ditroff.man: Typographical improvements and typos. + +2012-12-18 Bjarni Ingi Gislason <bjarniig@rhi.hi.is> + + * man/groff_diff.man: Typographical improvements and typos. + +2012-12-16 Bjarni Ingi Gislason <bjarniig@rhi.hi.is> + + * man/groff.man: Typographical improvements (and one typo). + * man/groff_char.man: Typographical improvements. + +2012-10-17 Deri James <deri@chuzzlewit.myzen.co.uk> + + * src/devices/gropdf/gropdf.pl (do_D): The command \D't N' moves + horizontal position by 'N'. gropdf now obeys this rule. + (do_t): Fixed kerning issue where width of non-kerned text could + be wrongly calculated using previous kern factor. + +2012-09-21 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Improve documentation of `.ad'. + +2012-09-20 Werner LEMBERG <wl@gnu.org> + + * doc/Makefile.sub (uninstall_sub): Fix removal of info files. + +2012-09-20 Werner LEMBERG <wl@gnu.org> + + Simplify environment handling. + + Suggested by Ivan Shmakov <oneingray@gmail.com>. + + * doc/Makefile.in, doc/Makefile.sub (GROFF): Don't use export. + +2012-09-20 Deri James <deri@chuzzlewit.myzen.co.uk> + + [gropdf] Various minor fixes. + + * font/devpdf/Foundry.in: Add font path to debian `gsfonts' + package. + + * font/devpdf/util/BuildFoundries.pl: Handle missing fonts in a + more sane way, do NOT abort the complete make run! + + * src/devices/gropdf/gropdf: Accept papersize names (i.e. A4) as + either upper or lower case. The -p (papersize) option should be + length,width (currently reversed - width,length) + + * src/devices/gropdf/pdfmom.pl: Support use of GROFF_BIN_PATH. + +2012-09-11 Ralph Corderoy <ralph@inputplus.co.uk> + Werner LEMBERG <wl@gnu.org> + + * src/preproc/tbl/tbl.man: Better document `d' column specifier. + +2012-08-31 Deri James <deri@chuzzlewit.myzen.co.uk> + + Add `pdfmom' to handle mom documents with gropdf. + + * Makefile.in (OTHERDIRS): Move contrib/mom to be run after + devices/gropdf. + + * src/devices/gropdf/gropdf.pl: Various fixes: + + . Correct image scaling issue. + . Handle relative horizontal movement 'h' followed by absolute + vertical movement 'V'. + . Correct handling of track kerning. + + * src/devices/gropdf/pdfmom.pl: New wrapper for mom (pdfmom) + using gropdf or grops driver. + * src/devices/gropdf/pdfmom.man: New man page. + * src/devices/gropdf/Makefile.sub: Updated to handle new files. + +2012-08-31 Deri James <deri@chuzzlewit.myzen.co.uk> + + * Makefile.in (OTHERDIRS): Move contrib/mom to be run after + devices/gropdf. + + * src/devices/gropdf/gropdf.pl: Various fixes: + + . Correct image scaling issue. + . Handle relative horizontal movement 'h' followed by absolute + vertical movement 'V'. + . Correct handling of track kerning. + + * src/devices/gropdf/pdfmom.pl: New wrapper for mom (pdfmom) + using gropdf or grops driver. + * src/devices/gropdf/pdfmom.man: New man page. + * src/devices/gropdf/Makefile.sub: Updated to handle new files. + +2012-08-31 Julien Moutinho <julm+groff@autogeree.net> + + * tmac/www.tmac (www-push-li): Fix indentation. + + See + + http://lists.gnu.org/archive/html/bug-groff/2012-08/msg00009.html + + for the full report. + +2012-08-08 Eric S. Raymond <esr@thyrsus.com> + + TBLization, as discussed on the list. There's a rewrite of + this file in planning, but this gets the content clean for now. + + * tmac/groff_mdoc.man: In this file. + +2012-08-09 Werner LEMBERG <wl@gnu.org> + + Provide proper Unicode mapping from and to dotless j. + + * src/libs/libgroff/glyphuni.cpp (glyph_to_unicode_list), + src/libs/libgroff/uniglyph.cpp (unicode_to_glyph_list): Add it. + +2012-08-08 Eric S. Raymond <esr@thyrsus.com> + + Added Unicode code point for dotless j. + + * man/groff_char.man: In this file. + +2012-08-08 Werner LEMBERG <wl@gnu.org> + + * man/groff_char.man: Clean-ups. + +2012-08-08 Eric S. Raymond <esr@thyrsus.com> + + Elimination of nasty presentation-level macro tangles makes + structural translation to XML possible. + + * man/groff_char.man: Clean up the mess, use real TBL tables. + +2012-07-23 Eric S. Raymond <esr@thyrsus.com> + + More elimination of low-level troff hackery in the documentation + so it can be lifted to structural markup. + + * tmac/groff_me.man: Use TBL rather than wacky diversions and .ti + requests. + +2012-07-24 Werner LEMBERG <wl@gnu.org> + + Fix appearance of groff.texinfo's HTML output. + + Cartouches within an `example' environment don't work. + + * doc/groff.texinfo (CartoucheExample, endCartoucheExample): New + macros. Use them where appropriate. + +2012-07-17 Ingo Schwarze <schwarze@usta.de> + + [mdoc] Make `Fl' correctly restore fonts. + + * tmac/doc.tmac (doc-flag-recursion): Do it. + +2012-07-07 Eric S. Raymond <esr@thyrsus.com> + + * src/preproc/eqn/eqn.man, src/preproc/grn/grnn.man, + src/devices/grodvi/grodvi.man, src/devices/grolj4/grolj4.man, + src/devices/grops/grops.man, src/utils/lkbib/lkbib.man, + src/utils/indxbib/indxbib.man, src/utils/tfmtodit/tfmtodit.man, + src/utils/xtotroff/xtotroff.man: + Remove running text in the synopses of various manual pages, + as it badly screws up attempts to mechanically parse them. + + * contrib/mom/groff_mom.man: Use .URL rather than .UR/.UE, as this + is now preferred for manual pages. + +2012-07-03 Werner LEMBERG <wl@gnu.org> + + Fix Unicode mapping of Greek stroked and curly phi. + + Problem reported by Alkis Georgopoulos <alkisg@gmail.com>; + see + + https://bugs.launchpad.net/ubuntu/+source/groff/+bug/1008115 + + * src/libs/libgroff/uniglyph.cpp (unicode_to_glyph_list): Flip + values of U+03C6 and U+03D5. + +2012-06-13 Deri James <deri@chuzzlewit.demon.co.uk> + + * src/devices/gropdf/gropdf.pl: When using variable page + sizes (with \X'papersize ...') ensure final page is correct + size. + +2012-05-24 Werner LEMBERG <wl@gnu.org> + + * src/roff/grog/grog.pl (process): Fix .so handling. + + This does the same as the previous commit. + +2012-05-24 Denis M. Wilson <dmw@oxytropis.plus.com> + + * src/roff/grog/grog.sh: Fix .so handling. + + See + + http://lists.gnu.org/archive/html/bug-groff/2012-05/msg00000.html + + for the report and the bug fix. + +2012-05-24 Ivan Shmakov <oneingray@gmail.com> + + Add some generic fallback characters. + + * tmac/fallbacks.tmac: New file. + * tmac/troffrc: Include it. + * tmac/Makefile.sub (NORMALFILES): Include it. + +2012-05-20 Deri James <deri@chuzzlewit.demon.co.uk> + + * doc/groff.texinfo: Add extra info about `.asciify'. + Document new gropdf options -u and -s. + + * src/devices/gropdf/gropdf.man: Remove references to Type 42 + fonts, they do not work in PDFs. + + Document new option -s which adds `statistics' line to end of PDF + file showing number of pages in document. This has always been + the default behaviour (to add this line), all other software seems + to ignore it as intended, but `gs' sometimes complains, so the + default is now to omit the statistics. + + Document new option -u[cmapfilename] to allow a user ToUnicode + CMap instead of gropdf's default. If no `cmapfilename' given then + do not include any ToUnicode CMap. + + * src/devices/gropdf/gropdf.pl <top>: Allow `bundled' flags on + command line (i.e. -de = -d -e). + + Use $RT_SEP as multi path separator, not hard coded `:'. Update + all users. + + New flags -u and -s. Once a custom papersize has been set as + \X'papersize x,y' make it sticky so all following pages use custom + size. When importing pdf with \X'pdf: pdfpic ...' do not compress + objects which are already compressed! This caused problems with + PDFs created with ImageMagick, now fixed. + + (IsText, PutLine, do_t): The troff `u' command can contain a + kerning adjustment number, this was not being handled, now fixed. + + (do_c): The troff `c' command was not being handled correctly, now + fixed. + (FindChar, RemapChr, do_N): Handle fonts with more than 255 glyphs. + ($ucmap): Define CMap ToUnicode to convert ligatures + (fl,fi,ff,ffl,ffi) back to individual characters, useful for + cut'n'paste and text searching. + (LoadFont): Handle it. + (ToPoints, GetPoints): Handle `z' unit. + (do_x, FixPDFColour, PutHotSpot): Allow Annotation colour to be + groff colour, i.e. 0-65535 *3, or #rrggbb, or #rrrrbbbbgggg. + (do_p):The papersize width/length in switch -p were reversed, + corrected. + + * src/devices/gropdf/Makefile.sub (gropdf): Use $RT_SEP. + Use $fontpath rather than $fontdir (this ensures site-font is + included in searches). + + * tmac/pdf.tmac (PDFBOOKMARK.VIEW, PDFHREF.VIEW, PDFPAGE.Y): Fix + strings. + (pdfbookmark): Correct handling of bookmark levels. + Convert \[em] to hyphen in bookmarks + + Rather use -N than -T for "named" bookmarks (-T already used for + "tag" in pdfmark.tmac) + + (.pdfclean): New macro which attempts to asciify bookmark text. + (.pdfpagename): New wrapper macro for \X'pdf: pagename'. + (.pdfswitchtopage): New wrapper macro for \X'pdf: switchtopage'. + +2012-03-10 Werner LEMBERG <wl@gnu.org> + + Fix compiler warnings. + + * src/preproc/html/pre-html.cpp (alterDeviceTo): Avoid ambiguous + if-else clause. + + * src/preproc/grn/main.cpp (sccsid): Comment out. + + * src/roff/troff/number.cpp (parse_expr) <case '*'>: Add cast. + + * src/devices/xditview/Makefile.sub (EXTRA_CFLAGS): Add `-Dlint' + so that unused static ID arrays don't cause a warning. + + (Some) problems reported by Bjarni Ingi Gislason + <bjarniig@rhi.hi.is>. + +2012-03-05 Werner LEMBERG <wl@gnu.org> + + * tmac/an-ext.tmac (SY): Handle argument with spaces correctly. + + Problem reported by Bjarni Ingi Gislason <bjarniig@rhi.hi.is>. + +2012-03-01 Bjarni Ingi Gislason <bjarniig@rhi.hi.is> + + [an-old] Fix warnings. + + * tmac/an-old.tmac (an-init): Insert missing braces. + +2012-02-26 Werner LEMBERG <wl@gnu.org> + + Update configuration files from `gnulib' and `config' repositories. + + This also fixes a problem with `iconv' on Solaris 10, as reported + in + + http://lists.gnu.org/archive/html/bug-groff/2012-02/msg00007.html + + * configure.ac: Call `gl_LOCALCHARSET. + Call `AM_ICONV' as C++. + + * config.guess, config.rpath, config.sub, install-sh, mkinstalldir: + Updated. + + * m4/codeset.m4, m4/glib21.m4, m4/iconv.m4, m4/lib-ld.m4, + m4/lib-link.m4, m4/lib-prefix.m4: Updated. + * m4/fcntl-o.m4, m4/localcharset.m4: New files. + + * Makefile.in: Updated. + + * src/include/localcharset.h, src/libs/libgroff/config.charset, + src/libs/libgroff/localcharset.c: Updated. + + * aclocal.m4, configure, src/include/config.hin: Regenerated. + +2012-02-20 Werner LEMBERG <wl@gnu.org> + + Update `gnulib' files. + + The invocation was + + gnulib-tool --add-import \ + --dir=src/libs/gnulib \ + wcwidth + + Additionally, src/libs/gnulib/configure.ac was adjusted from a + `test' run as described in the change from 2010-12-13. + + * src/libs/gnulib/*: Updated. + +2012-02-15 Deri James <deri@chuzzlewit.demon.co.uk> + + [gropdf] Fixes and omissions. + + * src/devices/gropdf/gropdf.pl (<top>, do_u): Add facility to + handle track kerning (.tkf). + + (do_x, do_p, do_t): If pages are reordered using `pagename' and + `switchtopage' keep track of outline bookmarks. + (do_x): Handle multiple files on gropdf command line, stitch + multiple groff_out files together. In the main read loop any argc + values not consumed by options are taken as input files and + processed in order. What prevented it working properly before is + the way an `x i' (initialize) record has been handled. It now + processes the initialization code only in the first file. + + (PutHotSpot): Allow user to control size of hotspot bounding box + on clickable links by setting PDFHREF.LEADING + + * tmac/pdf.tmac (PDFHREF.LEADING): Adjust value. + (pdf*href): Pass value of PDFHREF.LEADING to gropdf. + +2012-02-10 Deri James <deri@chuzzlewit.demon.co.uk> + + [gropdf] Fix compatibility issues with pdfmark. + + * tmac/pdf.tmac (PDFHREF.VIEW.LEADING): Fix value. + (pdf:href.opt-X): Add check for -X option for .pdfhref. + +2012-02-08 Werner LEMBERG <wl@gnu.org> + + * src/preproc/pic/main.cpp (do_file): Check for invalid characters. + + Problem reported by Doug McIlroy <doug@cs.dartmouth.edu>. + +2012-01-25 Ingo Schwarze <schwarze@usta.de> + + [mdoc] * tmac/doc-syms: Fix meaning of XBD acronym. + +2012-01-25 Tadziu Hoffmann <hoffmann@usm.uni-muenchen.de> + + * tmac/e.tmac (bl): Make it work inside blocks. + + See threads starting with + + http://lists.gnu.org/archive/html/groff/2011-12/msg00055.html + http://lists.gnu.org/archive/html/groff/2012-01/msg00000.html + +2012-01-10 Bruno Haible <bruno@clisp.org> + + Fix handling of MAKEFLAGS variable. + + * Makefile.in (MAKE_K_FLAGS): Improved definition, + as explained and discussed in + + http://lists.gnu.org/archive/html/groff/2012-01/msg00039.html + +2012-01-03 Ingo Schwarze <schwarze@usta.de> + + Improve parallel builds. + + Some hdtbl and mom examples want PostScript formatting which + requires the `DESC' file to be ready; however, the top-level + `Makefile.in' doesn't currently enforce the proper order of + building of `font/dev' before `contrib/hdtbl', `contrib/mom', and + so on. + + Given that `font/dev' and the contrib examples are in different + child processes of the recursive make system, it doesn't seem + possible to solve this using clean Makefile dependencies. We now + enforce the order by splitting the shell command invoking + recursive make in the top level `Makefile.in'. + + * Makefile.in (ALLDIRS): Remove `OTHERDIRS'. + (dodirs): Updated. + (`$(TARGETS)'): Handle `OTHERDIRS' separately. + +2012-01-03 Kristaps Dzonsons <kristaps@bsd.lv> + + [mdoc] Add `-isoC-2011'. + + * tmac/doc-syms (doc-str-St--isoC-2011): Add it. + * tmac/groff_mdoc.man: Document it. + +2011-12-26 Deri James <deri@chuzzlewit.demon.co.uk> + + * font/devpdf/Makefile.sub: Only build fonts on first `make'. + +2011-12-08 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo (.tl): Improve documentation. + Wording suggested by Keith Marshall + <keithmarshall@users.sourceforge.net>. + +2011-12-01 Werner LEMBERG <wl@gnu.org> + + [me] Fix behaviour of centered block. + Problem and possible fix reported in thread starting at + + http://lists.gnu.org/archive/html/groff/2011-11/msg00002.html + + * tmac/e.tmac (`(c'): Always start with a new line. + +2011-12-01 Ingo Schwarze <schwarze@usta.de> + + [man] Print volume headers like mdoc. + + * tmac/an-old.tmac (an-init): Add default volume name if fifth + argument to `.TH' is missing. + +2011-11-22 Werner LEMBERG <wl@gnu.org> + + * tmac/groff_man.man: Minor documentation improvements. + Suggested by Jeff Conrad <jeff_conrad@msn.com>. + +2011-11-14 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Improve doc for calling undefined identifiers. + +2011-11-14 Werner LEMBERG <wl@gnu.org> + + * src/preproc/tbl/tbl.man: Improve documentation of `_' and + friends. + +2011-10-31 Werner LEMBERG <wl@gnu.org> + + Fix compiler warnings. + + * src/preproc/eqn/main.cpp (do_file), src/roff/troff/env.cpp + (environment::print_env), src/roff/troff/mtsm.cpp + (statem::display_state): Add syntactical sugar. + + * src/utils/tfmtodit/tfmtodit.cpp (char_info_word): Use `unsigned + char' for all members. + + * src/devices/grohtml/html-text.cpp (html_text::remove_def): + Remove unused variable `q'. + + * src/devices/grohtml/post-html.cpp + (html_printer::lookahead_for_tables): Remove unused variable `left' + and `seen_text'. + +2011-10-23 Ingo Schwarze <schwarze@openbsd.org> + + [mdoc] Synchronize string tables with the mandoc(1) utility. + + * tmac/doc-common: Add many architecture names used in NetBSD and + OpenBSD (and "arm" from FreeBSD) and remove the duplicate OS + version entry for Darwin-10.6.0. + + * tmac/doc-syms: Add many library names used in NetBSD and FreeBSD. + + * tmac/groff_mdoc.man: Document all supported architecture names) + (OS versions, and library names. + +2011-09-11 Joseph Koshy <jkoshy@users.sourceforge.net> + + [mdoc] Add some library strings. + + * tmac/doc-syms: Add `libdwarf' and `libelf'. + * tmac/groff_mdoc.man: Document them. + +2011-08-14 Deri James <deri@chuzzlewit.demon.co.uk> + + [gropdf] More minor fixes. + + * font/devpdf/Makefile.sub (MOSTLYCLEANADD): Don't attempt to + install 'util/BuildFoundries', only used in 'make'. + + * src/devices/gropdf/gropdf.pl (<top>, GetType1): Make STDOUT and + any font files read to be accessed in binary rather than text mode. + Prevents errors when running on systems set up for UTF-8. + +2011-08-10 Deri James <deri@chuzzlewit.demon.co.uk> + + [gropdf] Minor updates and fixes. + + * src/devices/gropdf/gropdf.pl: Change command line option `-fy' + to `-y' for consistency. + + Better support for Windows platform. + (do_x): Handle keywords `pagename' and `switchtopage'. + + * doc/groff.texinfo, src/devices/gropdf/gropdf.man: Updated. + + * font/devpdf/Foundry: Renamed to... + * font/devpdf/Foundry.in: This. + Add default alias font names. + + * font/devpdf/util/BuildFoundries.pl: This is now an installation + helper script and gets not longer installed. + Support alternative font file names (separated with `!'). + + * font/devpdf/Makefile.sub: Fixes to work with a separate build + directory. + Font files are now build at `make' time; this makes `test-groff' + work with -Tpdf. + + * font/devpdf/util/Makefile.sub: Removed. + + * Makefile.in (DEVDIRS, OTHERDIRS, EXTRADIRS): Handle devpdf + specially. + +2011-07-29 Daiki Ueno <ueno@unixuser.org> + + Fix cross building. Problem reported by Christophe Jarry + <christophe.jarry@ouvaton.org>. + + * Makefile.in ($GNULIBDIRS): Pass original config arguments to + src/libs/gnulib/configure. + +2011-06-25 Deri James <deri@chuzzlewit.demon.co.uk> + + Add new output device `gropdf'. + + * font/devpdf/*: New device files for gropdf. + * src/devices/gropdf/*: New device. + + * Makefile.comm (install_dev, uninstall_dev): Handle more + subdirectories. + * Makefile.in (DEVDIRS, OTHERDIRS, EXTRADIRS): Add directories + related to gropdf. + * MANIFEST: Updated. + * test-groff.in (GROFF_BIN_PATH): Updated. + + * tmac/Makefile.sub (NORMALFILES): Updated. + * tmac/pdf.tmac: New file. + * tmac/troffrc: Updated. + + * doc/groff.texinfo: Document it. + * doc/Makefile.in, doc/Makefile.sub (groff_bin_dirs): Updated. + * doc/pic.ms: Updated. + + * man/groff_out.man, src/devices/grops/grops.man, + src/preproc/pic/pic.man, src/roff/groff/groff.man, + src/utils/afmtodit/afmtodit.man, src/utils/pfbtops/pfbtops.man: + Updated. + + * contrib/pdfmark/pdfmark.ms: Updated. + +2011-07-20 George HELFFRICH <ghfbsd@gmail.com> + + Improve line numbering support in tbl and with me macros. + + * tmac/e.tmac (n1, n2, TH, PS): Implement it. + (@h, @n, @o, @t, @k, )b, (c, (q, )q, (l, )l, (f, @q, PE): Updated. + * doc/meref.me: Document changes. + + * src/preproc/tbl/table.cpp (ROW_START_LINE_REG) + (ROW_SAVE_LINE_REG, ROW_MAX_LINE_REG, REPEATED_NM_SET_MACRO) + (REPEATED_NM_SUS_MACRO): New macros. + + (table::init_output): Define REPEATED_NM_SET_MACRO and + REPEATED_NM_SUS_MACRO. + (table::print_single_hline, table::print_double_hline, + table::define_bottom_macro, table::do_row, table::do_top, + table::do_bottom): Updated. + + * doc/webpage.ms: Updated. + +2011-07-12 Ted Harding <ted.harding@wlandres.net> + Werner LEMBERG <wl@gnu.org> + + * src/preproc/tbl/tbl.man: Mention trick to get abutting rules. + +2011-07-03 Ben Laurie <benl@FreeBSD.org> + + Fix clang warnings. + + * src/libs/libdriver/input.cpp (odd): Use parentheses. + + * src/roff/troff/mtsm.cpp (state_set::is_in): Fix parentheses; + previous code always tested for bit 0. + +2011-07-03 Guillem Jover <guillem@debian.org> + + mdoc: Update more OS versions strings. + + * tmac/doc-common: Add versions strings for NetBSD, OpenBSD, + FreeBSD, and DragonFly. + +2011-04-08 Michail Vidiassov <master@iaas.msu.ru> + + mdoc: Update various strings related to Mac OS X and FreeBSD. + + * tmac/doc-common: Add strings for FreeBSD 8.2 and Darwin 9.7-11.0. + * tmac/doc-syms: Add strings -lbsm and -lSystem. + +2011-03-29 Christian Weisgerber <naddy@mips.inka.de> + + Fix compilation issues with gcc 2.95. + + * src/roff/troff/input.cpp (my_input_iterator): Define as an alias + for `input_iterator' which is predefined by an old libstdc++. + +2011-03-29 Ingo Schwarze <schwarze@usta.de> + + Add another POSIX standard. + + * tmac/doc-syms: Add POSIX 1003.1b. + +2011-03-29 Christian Weisgerber <naddy@mips.inka.de> + + Fix build with non-GNU make. + + * Makefile.in ($TARGETS): We must not pass `$MDEFINES' recursively + down to the sub-makes started in src/libs/gnulib, because that + directory has its own values for `$top_srcdir' etc., and + overriding those from the command line will cause the build to + fail. Currently, `$MAKEOVERRIDES' will prevent the recursive + passing of those overrides with GNU make, but not with other + make(1) implementations. It looks like all targets that require + `$MDEFINES' set them explicitly anyway, so we shouldn't need to + set `$MDEFINES' on the top level. + +2011-03-21 Jan Vcelak <jvcelak@redhat.com> + Bernd Warken <groff-bernd.warken-72@web.de> + + [groffer] Remove hardcoded path to 'libdir/groff/groffer' + directory. + + * configure.ac: add GROFFERDIR variables. + + * Makefile.in: add and handle variable groffer_dir + + * m4/groff.m4: set up the --with-grofferdir command line option. + +2011-03-18 Werner LEMBERG <wl@gnu.org> + + [troff] Improve error message. + + * src/roff/troff/input.cc (token::delimiter): Improve error + message. Suggested by Doug McIlroy <doug@cs.dartmouth.edu>. + +2011-03-04 Werner LEMBERG <wl@gnu.org> + + [mdoc] Within .An, .Aq, .Ao, and .Ac now use `<' and `>'. + Problem reported by Ulrich Spörlein <uqs@spoerlein.net> + + * tmac/doc.tmac (Aq, Ao, Ac): Implement it to follow RFC 822 and + RFC 2822. + +2011-02-14 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Add another example for .em request + Based on a patch from Anton Shepelev <anton.txt@gmail.com>. + +2011-01-31 Werner LEMBERG <wl@gnu.org> + + More fixes for Savannah bug #32301. + + * src/devices/grops/Makefile.sub (XLIBS), + src/devices/grodvi/Makefile.sub, src/devices/grolj4/Makefile.sub, + src/devices/grohtml/Makefile.sub, src/devices/grolbp/Makefile.sub: + Add $(LIBGNU). + +2011-01-31 Werner LEMBERG <wl@gnu.org> + + Fix Savannah bug #32301. + + * src/roff/groff/Makefile.sub (XLIBS), + src/preproc/grn/Makefile.sub, src/preproc/html/Makefile.sub: Add + $(LIBGNU). + +2011-01-29 Krzysztof Żelechowski <giecrilj@stegny.2a.pl> + + * doc/groff.texinfo: Complete documentation on output devices. + +2011-01-28 Werner LEMBERG <wl@gnu.org> + + Handle `refer*.tmac'. + + * tmac/Makefile.sub (NORMALFILES): Add `refer*.tmac'. + * tmac/refer-mm.tmac: Moved to contrib/mm. + +2011-01-28 Werner LEMBERG <wl@gnu.org> + + Improve `refer' support of -me. + + * tmac/refer.tmac, tmac/refer-me.tmac, tmac/refer-ms.tmac, + tmac/refer-mm.tmac: New files. The code in refer.tmac is + based on the old code from `s.tmac'. + + * tmac/s.tmac: Remove direct refer support and include + `refer-ms.tmac' instead. + * tmac/e.tmac: Remove direct refer support and include + `refer-me.tmac' instead. + + * NEWS: Updated. + +2011-01-22 Werner LEMBERG <wl@gnu.org> + + [groff.texinfo]: Updates. + + * doc/groff.texinfo: Document groff's `-j' option. + Add dummy section for `chem' preprocessor. + +2011-01-22 Werner LEMBERG <wl@gnu.org> + + Update `grog'. + + * src/roff/grog/{groff.sh,groff.pl}: `groff' now calls `pic' + automatically if `grap' or `chem' is used. + `chem' has been folded into `groff'. + * src/roff/grog/grog.man: Updated. + +2011-01-22 Werner LEMBERG <wl@gnu.org> + + Make `groff -G' imply `-p'. + + * src/roff/groff/groff.cpp (main): Implement it. + * src/roff/groff/groff.man: Updated. + +2011-01-22 Werner LEMBERG <wl@gnu.org> + + Integrate `chem' into `groff' (new option -j). + + * src/roff/groff/groff.cpp (CHEM_INDEX): New constant. + (main) ['j']: Add `chem'. + (synopsis, help): Updated. + * src/roff/troff/pipeline.h (MAX_COMMANDS): Increase to 14. + + * src/roff/groff/groff.man: Document new command line option. + * NEWS: Updated. + +2011-01-22 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: `chem' is now part of groff. + +2011-01-22 Werner LEMBERG <wl@gnu.org> + + * doc/groff.texinfo: Improve description of `.de'. + + Based on suggestions by Ted Harding and Deri James. + +2011-01-20 Colin Watson <cjwatson@debian.org> + + Fix handling of wide characters in no-SGR mode. + + * src/devices/grotty/tty.cpp (tty_printer::make_underline): Only + emit a single backspace in no-SGR mode. less (at least) + backspaces over a character at a time. + (tty_printer::make_bold): Likewise. + +2011-01-19 Werner LEMBERG <wl@gnu.org> + + * src/preproc/pic/pic.man: Add pic manual to `SEE ALSO' section. + +2011-01-14 Werner LEMBERG <wl@gnu.org> + + Split ChangeLog. + + * ChangeLog: Split off older entries into... + * ChangeLog.119, ChangeLog.120: these new files. + +2011-01-15 Colin Watson <cjwatson@debian.org> + + * Makefile.comm (INCLUDES): Fix typo. + +2011-01-05 Werner LEMBERG <wl@gnu.org> + + * doc/webpage.ms: Fix rendering of title image. + + +________________________________________________________________________ + +##### License + +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 +notice and this notice are preserved. + + +##### Editor settings +Local Variables: +fill-column: 72 +mode: change-log +version-control: never +End: +vim:set autoindent textwidth=72: |