[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[groff] 126/127: ChangeLog{,.123}: Split off groff 1.23 history.
From: |
G. Branden Robinson |
Subject: |
[groff] 126/127: ChangeLog{,.123}: Split off groff 1.23 history. |
Date: |
Mon, 10 Jul 2023 04:31:10 -0400 (EDT) |
gbranden pushed a commit to branch master
in repository groff.
commit ccceef77af0aee5d72feca26d3e64a921f5741cb
Author: G. Branden Robinson <g.branden.robinson@gmail.com>
AuthorDate: Mon Jul 10 03:14:52 2023 -0500
ChangeLog{,.123}: Split off groff 1.23 history.
---
ChangeLog | 18647 +------------------------------------------
ChangeLog => ChangeLog.123 | 1183 +--
2 files changed, 3 insertions(+), 19827 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index f866d99a4..4fe12d080 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1180,18658 +1180,13 @@
Fixes <https://savannah.gnu.org/bugs/?64037>.
-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.
+Copyright 2023 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/ChangeLog b/ChangeLog.123
similarity index 94%
copy from ChangeLog
copy to ChangeLog.123
index f866d99a4..2b937f79e 100644
--- a/ChangeLog
+++ b/ChangeLog.123
@@ -1,1184 +1,5 @@
-2023-06-26 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [eqn]: Clarify diagnostic message.
-
- * src/preproc/eqn/lex.cpp (do_delim): Do it.
-
- Thanks to Doug McIlroy for the report <https://lists.gnu.org/\
- archive/html/groff/2023-06/msg00158.html>.
-
-2023-06-23 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [troff]: Add unit tests for drawing commands.
-
- * src/roff/groff/tests/draw-arc.sh:
- * src/roff/groff/tests/draw-circle.sh:
- * src/roff/groff/tests/draw-ellipse.sh:
- * src/roff/groff/tests/draw-filled-circle.sh:
- * src/roff/groff/tests/draw-filled-ellipse.sh:
- * src/roff/groff/tests/draw-filled-polygon.sh:
- * src/roff/groff/tests/draw-line.sh:
- * src/roff/groff/tests/draw-polygon.sh:
- * src/roff/groff/tests/draw-spline.sh:
- * src/roff/groff/tests/set-stroke-thickness.sh: Do it.
-
- * src/roff/groff/groff.am (groff_TESTS): Run tests.
-
-2023-06-08 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [man, mdoc]: Parameterize page offset.
-
- * tmac/mdoc/doc-ditroff (doc-setup-page-layout):
- * tmac/mdoc/doc-nroff (doc-setup-page-layout): Stop forcing the
- page offset to the device defaults, redundantly.
-
- * tmac/an.tmac:
- * tmac/mdoc/doc-ditroff (doc-setup-page-layout):
- * tmac/mdoc/doc-nroff (doc-setup-page-layout): Honor `PO`
- register if set at startup.
-
- * tmac/groff_man.7.man.in (Options):
- * tmac/groff_mdoc.7.man (Options): Document it.
-
- * NEWS: Add item.
-
-2023-06-02 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- Slightly refactor.
-
- [grodvi, grops, xditview, libbib, libgroff, eqn, pre-grohtml,
- preconv, refer, troff, tfmtodit]: Store return value of
- `strlen()` in a `size_t` (or `ptrdiff_t` if we're performing
- subtraction on it) instead of an `int`. Change temporaries
- {loop indices and similar} to use the same types.
-
- * src/devices/grodvi/dvi.cpp (dvi_printer::do_special):
- * src/devices/grops/ps.cpp (ps_output::comment_arg):
- (ps_output::put_string, ps_output::put_number):
- (ps_output::put_float, ps_output::put_color):
- * src/devices/grops/ps.cpp (class ps_output) <put_string, col>:
- <max_line_length>:
- * src/devices/xditview/Dvi.c (ClassInitialize):
- * src/include/symbol.h (class symbol) <block_size>:
- * src/libs/libbib/index.cpp (index_search_item::munge_filename):
- (index_search_item::search_item):
- * src/libs/libgroff/fontfile.cpp (font::open_file):
- * src/libs/libgroff/string.cpp (string::operator=):
- (string::operator+):
- * src/libs/libgroff/symbol.cpp (symbol::symbol):
- (symbol::block_size):
- * src/preproc/eqn/delim.cpp (define_extensible_string):
- * src/preproc/html/pre-html.cpp (char_buffer::can_see):
- * src/preproc/html/pushback.cpp (pushBackBuffer::isString):
- * src/preproc/preconv/preconv.cpp (emacs2mine):
- * src/preproc/refer/label.ypp (format_expr::evaluate):
- * src/roff/troff/input.cpp (make_temp_iterator, pipe_source):
- * src/utils/tfmtodit/tfmtodit.cpp (main): Do it.
-
- * src/preproc/html/pushback.cpp (pushBackBuffer::isString): Drop
- `while` loop that is now tautologically true due to comparison
- of unsigned types.
-
-2023-05-30 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * src/roff/troff/env.cpp (font_change): Trivially refactor.
- Simplify conditionals.
-
-2023-05-30 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [eqn]: Trivially refactor. Rename `check_tabs` member functions
- to `diagnose_tab_stop_usage`, to be more expressive and to
- prepare for the diagnosis of leaders in the input as well.
-
- * src/preproc/eqn/box.cpp (box::check_tabs):
- (box_list::list_check_tabs):
- (pointer_box::check_tabs):
- (tab_box::check_tabs):
- * src/preproc/eqn/box.h (box::check_tabs):
- (box_list::list_check_tabs):
- (list_box::check_tabs):
- (pile_box::check_tabs):
- (matrix_box::check_tabs):
- (pointer_box::check_tabs):
- (tab_box::check_tabs):
- * src/preproc/eqn/delim.cpp (delim_box::check_tabs):
- * src/preproc/eqn/limit.cpp (limit_box::check_tabs):
- * src/preproc/eqn/list.cpp (list_box::check_tabs):
- * src/preproc/eqn/other.cpp (accent_box::check_tabs):
- (uaccent_box::check_tabs):
- * src/preproc/eqn/over.cpp (over_box::check_tabs):
- * src/preproc/eqn/pile.cpp (pile_box::check_tabs):
- (matrix_box::check_tabs):
- * src/preproc/eqn/script.cpp (script_box::check_tabs):
- * src/preproc/eqn/sqrt.cpp (sqrt_box::check_tabs):
- Rename these...
- * src/preproc/eqn/box.cpp (box::check_tabs):
- (box::diagnose_tab_stop_usage):
- (box_list::list_diagnose_tab_stop_usage):
- (pointer_box::list_diagnose_tab_stop_usage):
- (tab_box::diagnose_tab_stop_usage):
- * src/preproc/eqn/box.h (box::diagnose_tab_stop_usage):
- (box_list::list_diagnose_tab_stop_usage):
- (list_box::diagnose_tab_stop_usage):
- (pile_box::diagnose_tab_stop_usage):
- (matrix_box::diagnose_tab_stop_usage):
- (pointer_box::diagnose_tab_stop_usage):
- (tab_box::diagnose_tab_stop_usage):
- * src/preproc/eqn/delim.cpp
- (delim_box::diagnose_tab_stop_usage):
- * src/preproc/eqn/limit.cpp
- (limit_box::diagnose_tab_stop_usage):
- * src/preproc/eqn/list.cpp (list_box::diagnose_tab_stop_usage):
- * src/preproc/eqn/other.cpp
- (accent_box::diagnose_tab_stop_usage):
- (uaccent_box::diagnose_tab_stop_usage):
- * src/preproc/eqn/over.cpp (over_box::diagnose_tab_stop_usage):
- * src/preproc/eqn/pile.cpp (pile_box::diagnose_tab_stop_usage):
- (matrix_box::diagnose_tab_stop_usage):
- * src/preproc/eqn/script.cpp
- (script_box::diagnose_tab_stop_usage):
- * src/preproc/eqn/sqrt.cpp (sqrt_box::diagnose_tab_stop_usage):
- ...to these.
-
- * src/preproc/eqn/box.cpp (box::top_level)
- (box_list::list_diagnose_tab_stop_usage):
- (pointer_box::diagnose_tab_stop_usage):
- * src/preproc/eqn/delim.cpp
- (delim_box::diagnose_tab_stop_usage):
- * src/preproc/eqn/limit.cpp
- (limit_box::diagnose_tab_stop_usage):
- * src/preproc/eqn/list.cpp (list_box::diagnose_tab_stop_usage):
- * src/preproc/eqn/other.cpp
- (accent_box::diagnose_tab_stop_usage):
- (uaccent_box::diagnose_tab_stop_usage):
- * src/preproc/eqn/over.cpp (over_box::diagnose_tab_stop_usage):
- * src/preproc/eqn/pile.cpp (pile_box::diagnose_tab_stop_usage):
- (matrix_box::diagnose_tab_stop_usage):
- * src/preproc/eqn/script.cpp
- (script_box::diagnose_tab_stop_usage):
- * src/preproc/eqn/sqrt.cpp (sqrt_box::diagnose_tab_stop_usage):
- Update call sites.
-
-2023-05-25 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [eqn]: Trivially refactor. Boolify `tab_box` member variable
- `disabled`.
-
- * src/preproc/eqn/box.cpp (tab_box::tab_box)
- (tab_box::check_tabs):
- * src/preproc/eqn/box.h (class tab_box): Do it.
-
- * src/preproc/eqn/box.cpp (tab_box::check_tabs): Also recast
- diagnostic message to clarify what "level" we're talking about:
- it's lexical. Which, sadly, probably won't help any but
- CS/SWeng people...
-
-2023-05-25 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [troff]: Validate a font family before trying to use it.
-
- * src/roff/troff/env.cpp (is_family_valid): New function checks
- for all text styles (R, I, B, BI) and returns true only if the
- given family supports them all.
- (family_change): Call `is_family_valid()` on given argument.
- If invalid, throw diagnostic and ignore `fam` request.
- * src/roff/troff/env.h (is_family_valid): Declare; make visible.
- * src/roff/troff/input.cpp (main): Call `is_family_valid()` on
- `-f` option argument. Its invalidity is a fatal error.
-
- Fixes <https://savannah.gnu.org/bugs/?64155>. Thanks to Dave
- Kemper for the report.
-
-2023-05-25 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * src/roff/troff/env.h (read_hyphen_file): Drop relic prototype
- for undeclared function. Should have been disposed of on
- 1992-09-21, per ChangeLog.115.
-
-2023-05-23 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * src/roff/troff/input.cpp (do_error): Describe vertical page
- locations in output warning diagnostics in terms of lines on
- nroff devices.
- * doc/groff.texi (Debugging) <warnscale>:
- * man/groff.7.man (Request short reference) <warnscale>:
- Document this change.
- * NEWS: Add item.
-
-2023-05-19 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [tbl]: Refactor handling of type size and vertical spacing.
-
- * src/preproc/tbl/table.h (struct inc_number): Rename this...
- (struct size_expression): ...to this, and change its member
- types. The `inc` `short` becomes a `relativity` enum
- because it only ever takes 3 values. The `val` short becomes an
- `int`, undoing what I suspect to be premature optimization.
- * src/preproc/tbl/main.cpp (entry_modifier::entry_modifier)
- (entry_format::debug_print, process_format):
- * src/preproc/tbl/table.cpp (set_modifier, set_inline_modifier)
- (restore_inline_modifier): Update to reflect new types and
- enum literals.
-
-2023-05-19 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * src/preproc/tbl/main.cpp (process_format): Check for EOF after
- eating spaces and tabs when processing [pPvVwW] column
- modifiers, and emit an appropriate error diagnostic. This was
- already being done for [fFmM].
-
-2023-05-19 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * src/preproc/tbl/main.cpp (process_format): Accept (and
- discard) space and tab characters after [pPvV] in a column
- descriptor, as is already done for [fFmMwW]. Modify [wW] to use
- the same loop style as the others, for consistency.
-
-2023-05-19 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * src/preproc/eqn/box.cpp (half_space_box::output)
- (full_space_box::output, thick_space_box::output)
- (half_space_box::output): Add assertions to catch unexpected
- flow of control.
-
-2023-05-19 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [eqn]: Implement tunable "half_space" and "full_space"
- parameters. They default to the same widths as "thin_space" and
- "thick_space", respectively, but control the widths of the '^'
- and '~' input tokens.
-
- * src/preproc/eqn/box.cpp: Add globals `half_space`,
- `full_space`.
- (struct S): Recognize "half_space" and "full_space" as
- parameters to the "set" primitive, and map them to the globals.
- (half_space_box::output): Format the half space width.
- (full_space_box::output): Format the full space width.
- (full_space_box::output, thick_space_box::output): Drop
- workaround for Firefox 1.5 MathML bug (November 2005). Emit
- "  " entity instead of " ".
-
- * src/preproc/eqn/eqn.1.man (Customization): Document feature.
-
- * NEWS: Add item.
-
- Fixes <https://savannah.gnu.org/bugs/?64216>. Thanks to Doug
- McIlroy for the report and Damian McGuckin for the discussion.
-
-2023-05-19 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [eqn]: Add `thick_space` and `thin_space` classes.
-
- * src/preproc/eqn/box.cpp:
- * src/preproc/eqn/box.h: Do it.
-
-2023-05-18 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [eqn]: Trivially refactor. Rename "space_box" class to
- "full_space_box" for clarity and to prepare for adding distinct
- thin and thick space box classes.
-
- * src/preproc/eqn/box.cpp (space_box::space_box)
- (space_box::output, space_box::debug_print):
- * src/preproc/eqn/box.h (class space_box): Rename these...
- * src/preproc/eqn/box.cpp (full_space_box::full_space_box)
- (full_space_box::output, full_space_box::debug_print):
- * src/preproc/eqn/box.h (class full_space_box): ...to these.
- * src/preproc/eqn/eqn.ypp (simple): Construct item using new
- type name.
-
-2023-05-18 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * src/roff/troff/hvunits.h: Boolify.
- (class vunits, class hunits, vunits::is_zero, hunits::is_zero):
- Do it.
-
-2023-05-13 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * src/roff/troff/node.cpp: Rename request-handling functions to
- better describe their operation.
- (font_translate, font_position, style, underline_font)
- (define_font_special_character, remove_font_special_character)
- (font_special_request, special_request, font_zoom_request)
- (bold_font, track_kern, constant_space, ligature, kern_request)
- (set_soft_hyphen_char): Rename these...
- (translate_font, mount_font_at_position)
- (associate_style_with_font_position, select_underline_font)
- (define_font_specific_character, remove_font_specific_character)
- (set_font_specific_special_fonts, set_special_fonts, zoom_font)
- (embolden_font, configure_track_kerning, constantly_space_font)
- (set_ligature_mode, set_kerning_mode)
- (set_soft_hyphen_character): ...to these.
-
-2023-05-13 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * src/roff/troff/node.cpp (font_translate, font_position, style)
- (underline_font, define_font_special_character)
- (remove_font_special_character, font_special_request)
- (special_request, font_zoom_request, bold_font, track_kern)
- (constant_space, ligature, kern_request, set_soft_hyphen_char):
- Declare functions as `static`.
-
-2023-05-13 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [troff]: Fix Savannah #64166.
-
- * src/roff/troff/node.cpp (bold_font): Add `WARN_MISSING`
- diagnostic if request given no arguments; it does nothing, and
- the behavior of this request is sufficiently complex that it's
- worth saying so. Stop throwing font lookup error if second
- argument cannot be resolved as a font name; it might be an
- emboldening amount instead.
-
-2023-05-10 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * tmac/s.tmac (PE): Turn on no-space mode after a pic(1)
- display, when not flying back with `PF`. Continues fix for
- Savannah #62688.
-
-2023-05-08 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [troff]: Trivially refactor.
-
- * src/roff/troff/input.cpp (token::~token, token::operator=):
- Drop workaround for bug in compiler (SGI C++) that dates back to
- groff 1.07 (March 1993). But don't go back to using the ternary
- operator.
-
-2023-05-07 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [troff]: Fix Savannah #64104.
-
- * src/roff/troff/input.cpp (set_escape_char): Rename this...
- (assign_escape_character): ...to this. Don't permit the escape
- character to be set to the same thing as the control or no-break
- control characters.
- * doc/groff.texi (Using Escape Sequences): Document
- restrictions.
-
- * src/roff/troff/env.h (class environment): Slightly refactor.
- Rename fields `control_char` and `no_break_control_char` to
- `control_character` and `no_break_control_character`,
- respectively, and make them private. Add public getters and
- setters for them.
- (get_control_character): New public member function returns
- `unsigned char`.
- (set_control_character): New public member function takes an
- `unsigned char` and returns a `bool`.
- (get_no_break_control_character):
- (set_no_break_control_character): Similar.
- * src/roff/troff/env.cpp (environment::environment): Update
- constructors to use new field names and initialize them in their
- new order of declaration.
- (environment::copy): Similar. (Not to be confused with a copy
- constructor, this member function implements the operation of a
- valid `evc` GNU troff request.)
- (environment::get_control_character):
- (environment::set_control_character):
- (environment::get_no_break_control_character):
- (environment::set_no_break_control_character): Implement.
-
- * src/roff/troff/env.cpp: Drop handling of `cc` and `c2`
- requests.
- (control_char, no_break_control_char): Drop implementations.
- (init_env_requests): Drop `init_request` calls for them.
-
- * src/roff/troff/input.cpp: Resurrect handling of `cc` and `c2`
- requests here, with more error handling.
- (assign_escape_character, process_input_stack): Use the new
- getters defined above in environment object since the relevant
- fields are now private.
- (assign_control_character): New function assumes the former
- responsibilities of env.cpp:control_char and rejects the request
- if the desired character is already the escape or no-break
- control character.
- (assign_no_break_control_character): New function assumes the
- former responsibilities of env.cpp:no_break_control_char and
- rejects the request if the desired character is already the
- escape or control character.
- (process_input_stack): Reorder comparisons to avoid inadvertent
- lvalue assignment. Add parentheses to assignment with complex
- RHS.
- (init_input_requests): Attach `cc` and `c2` requests to new
- functions above.
- * doc/groff.texi (Control Characters): Document restrictions.
-
-2023-05-07 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [troff]: Don't quote a character with itself in diagnostics.
-
- * src/roff/troff/input.cpp (token::description)
- (input_char_description): When quoting the ' character in
- diagnostics, use double-quotes, not apostrophes.
-
-2023-05-06 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [troff]: Trivially refactor.
-
- * src/roff/troff/input.cpp (top level, warnscale_request, main,
- do_error): Rename global `warn_scaling_indicator` to
- `warn_scaling_unit`, to align with our documentation.
-
-2023-05-06 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [troff]: Revise output warning diagnostic format.
-
- * src/roff/troff/input.cpp (do_error): For the `OUTPUT_WARNING`
- value of the `error_type` enum, spell out the words "page" and
- "diversion" instead of abbreviating them, and place the
- diversion information (if present) in parentheses.
-
-2023-05-02 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [troff]: Trivially refactor.
-
- * src/roff/troff/reg.cpp (set_number_reg): Rename to...
- (set_register): ...this.
- * src/roff/troff/reg.h: Update extern reference.
- * src/roff/troff/div.cpp (mark):
- * src/roff/troff/input.cpp (length_request, do_register)
- (token::add_to_zero_width_node_list, do_register_assignment)
- (init_registers): Update call sites.
-
- * src/roff/troff/div.cpp (interpolate_number_reg): Rename to...
- (interpolate_register): ...this.
- (get_copy, token::next, length_request, read_title_parts):
- Update call sites.
- * src/roff/troff/token.h: Update extern reference. Explicitly
- declare as `extern`.
-
- * src/roff/troff/reg.cpp (define_number_reg): Rename to...
- (define_register): ...this.
- (init_reg_requests): Update call site.
- (set_number_reg): Rename to...
- (set_register): ...this.
- (print_number_regs): Rename to...
- (print_registers): ...this.
-
- * src/roff/troff/reg.cpp (lookup_number_reg): Rename to...
- (look_up_register): ...this.
- * src/roff/troff/input.cpp (interpolate_register): Update call
- site.
- * src/roff/troff/reg.h: Update extern reference. Explicitly
- declare as `extern`.
-
-2023-04-30 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [eqn]: Improve tests of line number accuracy.
-
- * src/preproc/eqn/tests/\
- diagnostics-report-correct-line-numbers.sh: Add cases to check
- behavior of valid input, not just error cases. Also add some
- unexecuted test cases for future use.
-
-2023-04-29 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * src/include/lf.h (interpret_lf_args):
- * src/libs/libgroff/lf.cpp (interpret_lf_args): Boolify.
-
-2023-04-28 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [tbl]: Fix Savannah #64122.
-
- * src/preproc/tbl/table.cpp (table::init_output): Specify
- scaling unit when using `hym` and `hys` requests. Continues
- commit cee547e883, 30 January 2021.
-
- Thanks to Frederic Chartier and Peter Schaffter for the report.
-
-2023-04-28 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [tbl]: Regression-test Savannah #64122.
-
- * src/preproc/tbl/tests/\
- save-and-restore-hyphenation-parameters.sh: Update input and add
- check.
-
-2023-04-25 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [troff]: Drop `POPEN_MISSING` preprocessor macro.
-
- 3 source files test this macro but nothing appears to define it.
- It dates back to (at least) 1994. I suspect this of being
- bitrot. Reasons include: (1) We test for a declaration of
- `popen` in our "configure.ac" file; (2) our gxditview command
- uses `popen` _without_ #ifdef-guarding it (perhaps the
- assumption was that any system that supported X11 also had a
- working `popen`); (3) our "nonposix.h" header file defines a
- macro aliasing `popen` to `_popen`, which is its typical name on
- Windows systems, and is the most likely build host candidate for
- which support might have been missing as late as 1994.
- Microsoft end-of-lifed MS-DOS in 2000. If someone wants to
- start up a FreeDOS port, talk to us. Maybe even that has a
- functional `popen()`. Here's hopin'.
-
- * src/roff/troff/input.cpp ([global], file_iterator::close)
- (pipe_source, pipe_output, init_input_requests):
- * src/roff/troff/node.cpp (class real_output_file)
- (output_file::real_output_file, output_file::~real_output_file):
- * src/roff/troff/node.h: Do it.
-
-2023-04-14 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [eqn]: Implement new "gifont" primitive.
-
- * src/preproc/eqn/eqn.ypp: Add token "GFONT" (to supplement
- "GIFONT", already renamed from "GFONT".
- * src/preproc/eqn/lex.cpp (struct token_table): Map "gifont" and
- "gfont" inputs to "GIFONT" and "GFONT" tokens.
- (do_gfont, do_gifont): Employ parallel implementations,
- differing only in diagnostic message text.
- (yylex): Handle token "GFONT" by calling `do_gfont()`.
-
- * src/preproc/eqn/eqn.1.man (New primitives, Fonts, Options)
- (Bugs): Document it.
- * NEWS: Add item.
-
- Fixes <https://savannah.gnu.org/bugs/?63967>. Thanks to Damian
- McGuckin, Doug McIlroy, and Ralph Corderoy for support and
- suggestions.
-
-2023-04-07 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * src/preproc/eqn/lex.cpp (do_include, do_undef, do_gsize)
- (do_gifont, do_grfont, do_gbfont, do_space, do_chartype)
- (do_set): Recast diagnostic messages to use terminology
- established in man page, and use more idiomatic English in
- phrasing. Distinguish which argument has the problem when
- lexical analysis of "chartype" and "set" commands fails.
-
-2023-04-07 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * src/preproc/eqn/lex.cpp (do_include, ignore_definition)
- (do_definition, do_undef, do_gsize, do_gifont, do_grfont)
- (do_gbfont, do_sprintf, do_ifdef, do_chartype, do_set): Recast
- diagnostic messages to characterize input as "invalid" rather
- than "bad".
-
-2023-04-07 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [eqn]: Trivially refactor, renaming various globals from
- containing "gfont" to "gifont", to make it clearer that they
- deal with the italic font used by equations.
-
- * src/preproc/eqn/box.cpp (gfont): Rename global char pointer
- from this...
- (gifont): ...to this.
- * src/preproc/eqn/box.cpp (get_gfont, set_gfont):
- * src/preproc/eqn/box.h (get_gfont, set_gfont):
- * src/preproc/eqn/lex.cpp (do_gfont): Rename functions from
- these...
- * src/preproc/eqn/box.cpp (get_gifont, set_gifont):
- * src/preproc/eqn/box.h (gifont, get_gifont, set_gifont):
- * src/preproc/eqn/lex.cpp (do_gifont): ...to these.
- * src/preproc/eqn/box.cpp (get_gifont, set_gifont): Update
- global `gfont` access sites.
- * src/preproc/eqn/box.cpp (box::top_level):
- * src/preproc/eqn/eqn.ypp (simple):
- * src/preproc/eqn/lex.cpp (do_gifont, yylex):
- * src/preproc/eqn/main.cpp (main): Update call sites.
- * src/preproc/eqn/eqn.ypp:
- * src/preproc/eqn/lex.cpp (token_table, yylex): Rename "GFONT"
- token type to "GIFONT".
-
-2023-04-07 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * src/preproc/eqn/main.cpp (main): Prefix generated *roff
- diagnostics with name of input file (the document). Use
- `tmc`/`tm1` to coalesce multi-line diagnostic onto one line of
- output to stderr. Tighten wording. Continues the long process
- of fixing Savannah #52463.
-
-2023-04-03 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * src/roff/troff/input.cpp (temp_iterator::temp_iterator):
- Skip allocation of zero-length arrays. Resolves "-Walloc-zero"
- warning from GCC.
-
- Fixes <https://savannah.gnu.org/bugs/?62398>. Thanks to Bjarni
- Ingi Gislason for the report.
-
-2023-04-02 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * src/roff/troff/input.cpp (token::description): Revise
- construction of description of printable ordinary input
- characters (U+0021 through U+007E). This is to faciliate better
- diagnostics from the `rchar` request in the future. See
- Savannah #63985.
-
-2023-04-01 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * src/roff/troff/input.cpp (chop_macro)
- (do_string_case_transform, substring_request, asciify_macro):
- (unformat_macro, write_macro_request): When diagnosing
- impossible operations on request names, report the name of the
- request they were attempted upon.
- * src/roff/groff/tests/string_case_xform_errors.sh: Update test
- expectations.
-
-2023-04-01 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [troff]: Make futile aliasing an error.
-
- * src/roff/troff/input.cpp (alias_macro): Promote diagnostic
- when attempting to alias a nonexistent macro/string/diversion
- from warning to error; this aligns with the handling of the
- requests `chop`, `stringup`, `stringdown`, `substring`,
- `asciify`, `unformat`, and `writem` when they are regarded as
- impossible. Further, attempting to alias a nonexistent object
- does not create an empty one, unlike interpolating it; try ".als
- baz qux", then ".pm".
- * src/roff/troff/reg.cpp (alias_reg): Promote diagnostic when
- attempting to alias a nonexistent register from warning to
- error. Attempting to alias a nonexistent register does not
- create an empty one, unlike interpolating it; try ".aln q r",
- then ".pnr".
-
-2023-03-07 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [tbl]: Trivially refactor. Rename variables and functions to
- use the term "rule" rather than "line". The value of the term
- "rule" is that it is not confusable with "lines" of (text) input
- or output.
-
- * src/preproc/tbl/main.cpp (struct format) <vline>:
- (format::format) <vline>:
- (format::add_rows) <old_vline, vline>:
- (format::~format) <vline>:
- (struct input_entry_format) <vline, vline_count>:
- (input_entry_format::input_entry_format) <vline, vline_count>:
- (input_entry_format::debug_print) <vline, vline_count>:
- (process_format) <vline_count>:
- (process_data) ([anonymous] enum) <SINGLE_HLINE, DOUBLE_HLINE>:
- * src/preproc/tbl/table.cpp:
- * src/preproc/tbl/table.h (enum format_type) <FORMAT_HLINE,
- FORMAT_DOUBLE_HLINE>
- (class table) <vline, vline_spanned, ([anonymous] enum)
- <HAS_TOP_VLINE, HAS_TOP_HLINE>, add_single_hline,
- add_double_hline, add_vlines, print_single_hline,
- print_double_hline: Rename these...
-
- * src/preproc/tbl/main.cpp (struct format) <vrule>:
- (format::format) <vrule>:
- (format::add_rows) <old_vrule, vrule>:
- (format::~format) <vrule>:
- (struct input_entry_format) <vrule, vrule_count>:
- (input_entry_format::input_entry_format) <vrule, vrule_count>:
- (input_entry_format::debug_print) <vrule, vrule_count>:
- (process_format) <vrule_count>:
- (process_data) ([anonymous] enum) <SINGLE_HRULE, DOUBLE_HRULE>:
- * src/preproc/tbl/table.cpp:
- * src/preproc/tbl/table.h (enum format_type) <FORMAT_HRULE,
- FORMAT_DOUBLE_HRULE>
- (class table) <vrule, vrule_spanned, ([anonymous] enum)
- <HAS_TOP_VRULE, HAS_TOP_HRULE>, add_single_hrule,
- add_double_hrule, add_vrules, print_single_hrule,
- print_double_hrule: ...to these.
-
-2023-02-25 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [tbl]: Fix Savannah #63838.
-
- * src/preproc/tbl/table.cpp (table::add_entry): Throw error
- diagnostic if table entry ends in the zero-motion escape
- sequence `\z`. This is nonsense and provokes baffling
- diagnostics from the formatter. Stick user's nose directly into
- the problem.
-
- Fixes <https://savannah.gnu.org/bugs/?63838>. Thanks to the
- mandoc(1) project for documenting the issue in a regression
- test.
-
-2023-04-16 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [build]: Improve portability to non-GNU, non-LLVM compilers.
-
- * bootstrap.conf (gnulib_modules): Add "attribute".
- * src/libs/libgroff/getopt.c:
- * src/libs/libgroff/new.cpp: Include gnulib's "attribute.h"
- header file.
- * src/libs/libgroff/getopt.c (_getopt_initialize):
- * src/libs/libgroff/new.cpp (operator delete): Replace GNU C
- unused attribute syntax with gnulib's "MAYBE_UNUSED".
-
- Thanks to Bruno Haible for the report and suggested remedy.
-
-2023-03-16 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * src/libs/libxutil/XFontName.c (utoa): Rename function from
- this...
- (xu_utoa): ...to this, to avoid name collision when using
- "newlib" portability library.
- (XFormatFontName): Update call site.
- * PROBLEMS: Drop item.
-
- Fixes <https://savannah.gnu.org/bugs/?63831>. Thanks to Brian
- Inglis for the report.
-
-2023-05-13 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [man]: Preserve user-selected font family.
-
- * tmac/an.tmac: When initializing, save the currently selected
- font family as `an*body-family` instead of forcing 'T' (Times,
- which is the formatter's default, even on nroff-mode devices
- that can't switch families). This change makes the formatter's
- `-f` option work on man(7) documents again (important for
- Japanese man pages, but there is now once again nothing stopping
- you from viewing man pages in Palatino or Helvetica on the 'ps'
- and 'pdf' devices where these families are available). It also
- reopens an avenue for rogue pages to affect the rendering of
- unrelated documents later in batch rendering, but there are many
- other, and worse, ways for rogue pages to do damage. Problem
- introduced by me in commit e0e16d8e65, 15 March 2022.
-
- Fixes <https://savannah.gnu.org/bugs/?64130>. Thanks to Deri
- James for the report.
-
-2023-05-01 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [man]: Stop `HP` producing excess vertical space.
-
- * tmac/an.tmac (HP): Fix thinko/typo when expanding macro as
- string to call `an-deprecation-warn`.
- * tmac/an-ext.tmac (SY): Put 1v of vertical space on the output
- if we are starting a (non-nested) synopsis.
-
- Thanks to Alex Colomar for the report. Problem introduced by me
- in commit aea1dfb11b, 6 March 2022.
-
-2023-04-28 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [ms]: Default vertical spacing to 120% of type size, not 2
- points larger.
-
- * tmac/s.tmac (par@load-init, par@init): Do it.
- * NEWS: Add item.
-
-2023-04-26 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [pdfpic]: Refactor.
-
- * tmac/pdfpic.tmac: Migrate gathering of image dimensions from
- `sy` and a temporary file to `pso`.
- (pdfpic@cleanup): Drop `pdfpic*temporary-file` string.
- (pdfpic@get-image-dimensions): Remove redirection. Invoke
- `pso`, not `sy`.
- (PDFPIC): Stop constructing `pdfpic*temporary-file` string.
- Stop testing `systat` register. Stop sourcing and deleting
- temporary file.
-
-2023-04-21 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * tmac/pdfpic.tmac: Refactor to make comprehensible some
- woefully undocumented cleverness and improve efficiency.
- (PDFPIC): Break out flaming-hoop-leaping "clever" bit of `sy`
- usage into its own macro, calling from here and relocating its
- requests from here...
- (pdfpic@get-image-dimensions): ...to here. When using `sy`
- request to collect and munge output of pdfinfo(1), (a) disable
- the escape character while defining the macro; (b) construct the
- command in a roff string, appending to it in discrete, hopefully
- comprehensible chunks; (c) disable the escape character during
- macro interpretation wherever possible (most of it); (d) retain
- doubled backslashes so that they survive subsequent string
- interpolation; (e) stop using grep(1) in the pipeline when
- sed(1) is perfectly capable of performing its own input
- filtering; (f) invoke sed with '-n' option and emit output only
- upon a successful substitution; (g) replace unportable(!) POSIX
- BRE character class '[:digit:]' in substitution match text with
- '[0-9]'; and most importantly (h) replace multi-line sed 's'
- replacement text (see below for the reason we can't use it) with
- single roff control line employing the groff extension escape
- sequence `\R` to assign multiple registers. Annotate
- portability and escaping challenges. Tested on GNU/Linux, macOS
- 12, and (with simulated pdfinfo(1) output) Solaris 11.
-
- There is a problem with trying to embed true newlines into the
- arguments of a `sy` request. The C++ function that GNU troff
- uses to assemble the command string (character by character)
- _does not recognize C/C++ string literal escape sequences_.
- This means that you _cannot_ embed "\n" in `sy`'s arguments and
- have it survive, as a newline character, into the command string
- passed to the standard C library's system(3) function. ("A\nB"
- gets encoded as 'A', '\\', 'n', 'B', not 'A', '\n', 'B'.)
- Unfortunately, this appears to be AT&T troff-compatible
- behavior. But it means that you _cannot_ portably construct
- multi-line replacement text for sed's 's' command. (Other sed
- commands like 'a', 'c', and 'i' will be similarly affected.)
- See Savannah #64071.
-
- * PROBLEMS: Drop item.
-
- Fixes <https://savannah.gnu.org/bugs/?64061>. Thanks to Bruno
- Haible for the report, and to him and Ralph Corderoy for the
- discussion of portable and efficient sed constructs.
-
-2023-04-27 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [pdfpic]: Clean up better.
-
- * tmac/pdfpic.tmac (PDFPIC): Call `pdfpic@cleanup` before
- returning when falling back to `PSPIC` for non-PDF documents.
-
-2023-04-05 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * tmac/tty.tmac: Add angle bracket fallbacks.
-
- Thanks to Mike Fulton for the report, and to Ralph Corderoy and
- Dave Kemper for the discussion.
-
-2023-03-13 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [tests]: Add Spanish language support (5/5).
-
- * src/roff/groff/tests/localization_works.sh:
- * tmac/tests/e_ld-works.sh: Test it.
-
- Fixes <https://savannah.gnu.org/bugs/?63921>. Thanks to Eloi
- Montañés.
-
-2023-03-13 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [docs]: Add Spanish language support (4/5).
-
- * doc/groff.texi (Manipulating Hyphenation):
- * doc/ms.ms (Language and localization):
- * man/groff_tmac.5.man (Localization files): Document it.
-
- * NEWS: Add item.
-
-2023-03-13 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [tmac]: Add Spanish language support (3/5).
-
- * tmac/hyphen.es:
- * tmac/es.tmac: Update editor aids.
-
-2023-03-13 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [tmac]: Add Spanish language support (2/5).
-
- * tmac/es.tmac: Spell weekday and month names in lowercase;
- every style authority I could find online mandates this, and it
- meshes with my half-remembered formal instruction in the
- language. Fix groff composite special character escape
- sequences to place the base character first. Replace one
- Unicode special character escape sequence with a composite
- special character escape sequence, for consistency.
-
-2023-03-13 Eloi Montañés <em@ilsrv.com>
-
- [tmac]: Add Spanish language support (1/5).
-
- * tmac/hyphen.es: Add hyphenation patterns (encoded in Latin-9).
- * tmac/es.tmac: Add groff locale for Spanish.
- * tmac/tmac.am (TMACNORMALFILES): Ship new files.
- * doc/groff.texi (Manipulating Hyphenation): Add file/package
- index entry for "es.tmac".
- * LICENSES: Update for CTAN Spanish hyphenation patterns.
-
-2023-03-09 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [tests]: Add Russian language support (7/7).
-
- * src/roff/groff/tests/localization_works.sh:
- * tmac/tests/e_ld-works.sh: Test it.
-
- Fixes <https://savannah.gnu.org/bugs/?63076>. Thanks to Nikita
- Ivanov.
-
-2023-03-08 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [docs]: Add Russian language support (6/7).
-
- * doc/groff.texi (Input Encodings, Manipulating Hyphenation):
- * doc/ms.ms (Language and localization):
- * man/groff_tmac.5.man (Localization packages, Input encodings):
- Document support for KOI8-R encoding and Russian language.
-
-2023-03-08 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [tmac]: Add Russian language support (5/7).
-
- * tmac/tmac.am (TMACNORMALFILES): Ship new Russian language
- support files.
-
-2023-03-08 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [tmac]: Add Russian language support (4/7).
-
- * tmac/koi8-ru.tmac: Rename this file...
- * tmac/koi8-r.tmac: ...to this. There _is_ a "KOI8-RU"
- encoding, which appears to subsume KOI8-B and KOI8-U (by
- replacing more box drawing characters), but this file does not
- remap their values to applicable Unicode code points.
- * tmac/ru.tmac: Load the encoding file under its new name.
-
-2023-03-08 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [tmac]: Add Russian language support (3/7).
-
- * tmac/hyphen.ru:
- * tmac/ru.tmac: Update editor aids so these files can be edited
- more intelligibly using GNU Emacs. Annotate apparent problem
- with Vim's KOI8-R support.
-
-2023-03-08 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- Add Russian language support (2/7).
-
- LICENSES: Update for CTAN Russian hyphenation patterns.
-
-2023-03-08 Nikita Ivanov <nikita.vyach.ivanov@gmail.com>
-
- [tmac]: Add Russian language support (1/7).
-
- * tmac/hyphen.ru: Add hyphenation patterns (encoded in KOI8-R).
- * tmac/koi8-ru.tmac: Add character encoding support.
- * tmac/ru.tmac: Add groff locale for Russian.
-
-2023-04-07 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * tmac/s.tmac (@EQ): Trivially refactor. Shift valid
- pseudo-enumeration type values from 0..2 to 1..3 so that they
- more idiomatically test for truth values in roff (where zero and
- negative values are false). Simplify a conditional accordingly.
-
-2023-04-07 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [ms]: Fix Savannah #64013.
-
- * tmac/s.tmac (@EQ): Revise argument handling. If there is only
- one argument and it is not a recognized alignment, warn and
- treat it as an equation label. If there are two arguments but
- the first is not a recognized alignment, throw a warning
- diagnostic (but still use default alignment with the second
- argument as label). An explicitly empty first argument is
- synonymous with "C".
-
- Fixes <https://savannah.gnu.org/bugs/?64013>.
-
-2023-04-07 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [ms]: Regression-test Savannah #64013.
-
- * tmac/tests/s_EQ-handles-empty-first-arg.sh: Do it.
- * tmac/tmac.am (tmac_TESTS): Run test.
-
-2023-04-05 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [ms]: Fix Savannah #64005.
-
- * tmac/s.tmac (@break-page, bp): Define alias for `bp` request
- and wrapper for `bp` to (if needed) temporarily disable no-space
- mode, so that a document's `bp` requests are honored even if
- no-space mode is on, as can happen after displays. Fixes a
- regression from groff 1.22.4 and historical ms implementations
- introduced by me on 6 July when resolving Savannah #62688.
-
- Fixes <https://savannah.gnu.org/bugs/?64005>. Thanks to Michał
- Kruszewski for reporting the problem and Dave Kemper for
- identifying the cause.
-
-2023-04-05 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [ms]: Regression-test Savannah #64005.
-
- * tmac/tests/s_honor-page-break-after-display.sh: Do it.
- * tmac/tmac.am (tmac_TESTS): Run test.
-
-2023-03-24 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * tmac/mdoc/doc-common (Sh): Restore hyphenation configured with
- `HY` register upon entry to any new section. Disable adjustment
- and hyphenation when in the "Synopsis" section.
-
- Fixes <https://savannah.gnu.org/bugs/?63957>. Thanks to Alex
- Colomar for reporting an issue that brought this one to light.
-
-2023-03-24 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [mdoc]: Regression-test Savannah #63957.
-
- * tmac/tests/doc_synopsis_is_not_adjusted.sh: Do it.
- * tmac/tmac.am (tmac_TESTS): Run test.
-
-2023-03-14 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * tmac/tmac.am (tmac/stamp-wrap): Stop prepending groff's man(7)
- package wrapper ("-man") on hosts with a system man package with
- a request to source itself; this was search-and-replace damage
- from resolving Savannah #60789. The wrapper still worked, but
- reported any errors inside the wrapped macro package many times
- until the process ran out of file descriptors. Problem
- introduced by me in commit fdac25937f, 2021-07-05.
-
- Fixes <https://savannah.gnu.org/bugs/?63924>.
-
-2023-05-13 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * tmac/tests/an-ext_SY-and-YS-work.sh: Add test.
- * tmac/tmac.am (tmac_TESTS): Run test.
-
-2023-04-28 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [build]: Skip an Autoconf check if not necessary.
-
- * m4/groff.m4 (GROFF_PNMTOPS_NOSETPAGE): Skip check if no
- "pnmtops" command was found.
-
-2023-04-06 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [doc]: Abstract document dependencies on the mom package.
-
- * doc/doc.am (doc/automake.pdf): Replace dependency with new
- macro `TMAC_PACKAGE_MOM`.
-
- Aligns with <https://savannah.gnu.org/bugs/?62541> (4/4).
-
-2023-04-03 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [doc]: Add document dependencies on the ms package.
-
- * tmac/tmac.am (TMAC_PACKAGE_MS): Define new macro comprising
- the files of the ms package.
- * doc/doc.am (doc/ms.ps, doc/webpage.ps, doc/pic.html)
- (doc/pic.ps): Add dependency on new macro.
-
- Fixes <https://savannah.gnu.org/bugs/?62541> (2/4).
-
-2023-04-03 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [doc]: Add document dependencies on the "me" package.
-
- * tmac/tmac.am (TMAC_PACKAGE_ME): Define new macro comprising
- the files of the "me" package.
- * doc/doc.am (doc/grnexmpl.ps, doc/meintro.ps)
- (doc/meintro_fr.ps, doc/meref.ps): Add dependency on new macro.
-
- Fixes <https://savannah.gnu.org/bugs/?62541> (1/4).
-
-2023-04-03 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [build]: Install PDF documents better. Ship only one copy of
- "automake.pdf", and install it and the new "groff-man-pages.pdf"
- in the "pdf/" subdirectory of the destination "doc" directory.
-
- * doc/doc.am (PROCESSEDDOCFILES): Drop
- "$(PROCESSEDDOCFILES_PDF)" from macro definition.
- (nodist_docpdfdoc_DATA) [USE_GROPDF]: Use it here instead,
- replacing a literal "doc/automake.pdf".
- (mostlyclean-doc) [USE_GROPDF]: Clean these same files.
-
-2023-04-03 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [build]: Ship groff.dvi (our Texinfo manual in DVI format).
-
- * doc/doc.am (install-dvi-local, uninstall-dvi): Add targets.
- (uninstall-local): Depend on "uninstall-dvi".
-
-2023-04-03 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [build]: Resume shipping pic.html.
-
- * m4/groff.m4 (GROFF_CHECK_GROHTML_PROGRAMS)
- (GROFF_GROHTML_PROGRAM_NOTICE, GROFF_PNMTOOLS_CAN_BE_QUIET):
- Rename "make_htmldoc" to "use_grohtml" as expected by
- "configure.ac". Also stop `AC_SUBST`ing it; we don't need
- "@use_grohtml@" in our Makefiles since an `AM_CONDITIONAL` in
- configure.ac already does an equivalent thing. Continues commit
- aa5787c1eb by me from 20 May.
- (PROCESSEDDOCFILES): Drop "$(PROCESSEDDOCFILES_HTML)" from macro
- definition; annotate why.
-
-2023-03-13 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- m4/groff.m4 (GROFF_TMAC): Eliminate garbage leading space from
- contents of `tmac_wrap` shell variable.
-
-2023-03-13 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [build]: Clarify output of `GROFF_TMAC` Autoconf test.
-
- * configure.ac: Correct characterization of the list of macro
- packages reported. It is not the list of macro packages
- receiving a "g" prefix, but the list of macro packages reciving
- a wrapper macro file in groff's macro directory, each of which
- sources the corresponding system (likely AT&T-descended troff)
- macro package. Fixes wording I introduced in commit 4d30dd7424,
- 31 May.
- * m4/groff.m4 (GROFF_TMAC): Clarify first "checking" message:
- we are looking for a file name prefix on existing system macro
- packages (like "tmac."). This has nothing to do with the prefix
- applied to groff commands, or the "g" prefixed to groff
- implementations of the man, mm, and ms packages. Tighten
- wording of second "checking" message. Consistently say "(none)"
- instead of "none" or "none found".
-
- Fixes <https://savannah.gnu.org/bugs/?63900>.
-
-2023-03-11 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * doc/doc.am (install-txt): Look for "groff.txt" in the source
- and build directories in sequence; it could be in either place
- depending on whether the build is from the Git repository or
- from a distribution archive. Annotate this. Fixes
- "install-doc" target when building from Git repository. Problem
- introduced by me in commit 691fc70108, 22 February. Thanks to
- Nikita Ivanov for the report.
- (install-pdf-local, install-html-local): Similar.
-
- Also fixes <https://savannah.gnu.org/bugs/?64059>, later
- reported anonymously.
-
-2023-03-10 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * doc/doc.am (maintainer-clean-local): Remove temporary "*.t2d"
- and "*.t2p" directories created by texi2dvi.
-
-2023-04-20 Bruno Haible <bruno@clisp.org>
-
- [build]: Fix gxditview linking on AIX.
-
- * m4/groff.m4 (GROFF_X11): Add macro dependency on
- `AC_CANONICAL_HOST`. Introduce new variable `X_AW_DEPS`, empty
- on most hosts. If we otherwise have Athena widget library
- support, and the host is AIX, force linkage against Xpm and Xext
- libraries to reflect modern Athena dependencies, which AIX's
- linker doesn't figure out on its own. `AC_SUBST` this variable,
- exposing it to Automake files.
- * src/devices/xditview/xditview.am (gxditview_LDADD): Use it.
-
- {A similar change might also be useful for HP-UX, another Unix
- System V descendant; see
- <http://hpux.connect.org.uk/hppd/cgi-bin/wwwtar?/hpux/Gnu/\
- groff-1.23.0/groff-1.23.0-src-11.31.tar.gz+groff-1.23.0/\
- HPUX.Install+text>. --GBR, 2023-07-10}
-
-2023-04-20 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * bootstrap.conf (gnulib_modules): Add "sys_wait" module. MinGW
- does not provide "sys/wait.h", which we require in
- src/preproc/html/pre-html.cpp since commit 11137209ed, 27 June.
-
-2023-04-20 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- * Makefile.am: Initialize (as empty) Automake variables that we
- don't use but which gnulib modules expect to be defined.
- (AUTOMAKE_OPTIONS, SUBDIRS, noinst_HEADERS, noinst_LTLIBRARIES)
- (pkgdata_DATA, MOSTLYCLEANDIRS, AM_CFLAGS): Do it.
-
- Thanks to Bruno Haible for the advice.
-
-2023-04-22 G. Branden Robinson <g.branden.robinson@gmail.com>
-
- [mdoc]: Regression-test Savannah #57665, but for mdoc.
-
- * tmac/tests/doc_TS-do-not-keep-tables-when-cR-set.sh: Do it.
- * tmac/tmac.am (tmac_TESTS): Run test.
-
- Fixes <https://savannah.gnu.org/bugs/?64037>.
+Version 1.23.0 released 2023-07-05
+==================================
2023-06-21 G. Branden Robinson <g.branden.robinson@gmail.com>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [groff] 126/127: ChangeLog{,.123}: Split off groff 1.23 history.,
G. Branden Robinson <=