...lacking a shell or grep conforming to POSIX Issue 4 (1994).
* src/roff/groff/tests/msoquiet-request-works.sh:
* src/roff/groff/tests/soquiet-request-works.sh:
* tmac/tests/an_UR-works.sh: Do it.
* tmac/tests/an_UR-works.sh: Also cope with versions of pdftotext(1)
that transcribe "fi" as a ligature.
* HACKING:
* PROBLEMS: Update advice.
Add item and document workaround under "groff 1.22.4" because it likely
affected that release as well; Bertrand added uchardet as an optional
dependency in 2017, and the next groff release was in December 2018.
Fixes <https://savannah.gnu.org/bugs/?66143>. Thanks to Sven Schober
for the report and for determining the workaround.
* contrib/gdiffmk/tests/runtests.sh: Test for "diff -D" support as
gdiffmk itself does, and skip test if such support is lacking.
* ANNOUNCE:
* PROBLEMS: Drop caveat about potential test failures.
* contrib/gdiffmk/gdiffmk.sh (RequiresArgument): Refactor to use shell
parameter expansion instead of expr(1), to avoid potential use of
external command and quirk in FreeBSD's implementation.
* ANNOUNCE:
* PROBLEMS: Drop caveat.
Drop tmac/fixmacros.sed. We hadn't ever actually installed it; it was
provided only in our distribution archives, as far back as our history
indicates.
* tmac/fixmacros.sed: Delete.
* tmac/tmac.am (EXTRA_DIST): Stop shipping it.
* PROBLEMS: Recast and update relevant item description. This is the
only place the file was documented.
Use contemporary terminology and reflect modern output driver
repertoire. Clarify (I hope). Elaborate cross references to man pages.
Admit to the variation in macro packages' handling of related matters.
* Say "GNU troff" instead of "gtroff".
* Use quotation marks when inlining formatter instructions.
* Tighten wording.
* Say "AT&T troff" instead of "Unix troff". BSD Unix was Unix (it's
right there in the name!) and it adopted groff as its troff in 1990.
* Migrate terminology: "point size" -> "type size".
* Correct claim: GNU troff throws an error, not a warning, when reading
a tab after a request or macro name on a control line, and this action
is not potential, but real.
* Use more idiomatic English.
* 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.
* 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.
Per Bruno Haible, GNU/Hurd is passing all tests as of 1.23.0.rc4.
Regarding shebangs, groff has unfortunately done its part in spreading a
myth. See <https://savannah.gnu.org/bugs/?64058>.
Explain the order that it's in, to aid readers and, I hope, help
maintainers keep it in order.
Still to do: replace Git commit info with groff release info.
* 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.