groff/ChangeLog
G. Branden Robinson 35f5a8fd9b Makefile.am: Ship old groff ChangeLog files.
* Makefile.am (EXTRA_DIST): Ship ancient groff ChangeLog files split off
  from ChangeLog.115 (.old, .111, .112, .113, .114).
2023-08-28 09:53:30 -05:00

1859 lines
71 KiB
Plaintext

2023-08-28 G. Branden Robinson <g.branden.robinson@gmail.com>
* Makefile.am (EXTRA_DIST): Ship ancient groff ChangeLog files
split off from ChangeLog.115 (.old, .111, .112, .113, .114).
2023-08-27 G. Branden Robinson <g.branden.robinson@gmail.com>
* src/roff/troff/node.cpp (translate_font): Validate arguments.
2023-08-27 G. Branden Robinson <g.branden.robinson@gmail.com>
[troff]: Trivially refactor; add utility function.
* src/roff/troff/node.cpp (is_nonnegative_integer): New function
tests C-style string for validity as such; promoted from open
code because I just spotted a second place we can use it.
2023-08-27 G. Branden Robinson <g.branden.robinson@gmail.com>
[troff]: Trivially refactor; demote `int`-returning functions to
Boolean-returning ones and rename.
- check_font -> is_font_name
- check_style -> is_abstract_style
* src/roff/troff/node.h:
* src/roff/troff/node.cpp: Do it.
* src/roff/troff/env.cpp (is_family_valid):
* src/roff/troff/input.cpp (do_if_request): Update call sites.
2023-08-27 G. Branden Robinson <g.branden.robinson@gmail.com>
* src/preproc/eqn/main.cpp (main): Trivially refactor; demote
`int` `load_startup_file` to Boolean `want_startup_file`.
2023-08-25 G. Branden Robinson <g.branden.robinson@gmail.com>
[eqn]: Implement "reset" keyword.
* src/preproc/eqn/box.cpp: Use `static` storage class for
parametric defaults, moving them to file scope from global.
Rename `param_table` array of structs to `default_param_table`.
Use the length of this array for iteration since it is known at
compile time. Convert `param_table` to a null pointer.
(set_param): Update diagnostic message text.
(reset_param): New function restores a rendering parameter in
`param_table` to its corresponding value in
`default_param_table`.
(get_param): New function accesses `param_table` entries via a C
string rather than integer lvalues. Use `assert()` to dump
core; this function is never called by the parser, but only by
static logic. Add `fatal()` under this same circumstance, in
case anyone `#define`s `NDEBUG`.
(init_param_table): New function populates the (mutable)
`param_table` from the (immutable) `default_param_table` using
heap storage.
(free_param_table): New function avoids memory leak by freeing
the heap storage allocated for `param_table`.
* src/preproc/eqn/eqn.h: Drop external declaration of `nroff`.
* src/preproc/eqn/eqn.ypp: Add new token `RESET`.
* src/preproc/eqn/lex.cpp: Map C string "reset" to token `RESET`
in untagged struct `token_table`.
(do_reset): Handle new keyword; if argument valid, call
`reset_param()` with it.
(yylex): Hook up token `RESET` to `do_reset()`.
* src/preproc/eqn/box.h: Declare `reset_param()`, `get_param()`,
`init_param_table()`, and `free_param_table()`.
* src/preproc/eqn/main.cpp (main): Call `init_param_table()`
when starting up. Register `free_param_table()` with
`std::atexit()`.
* src/preproc/eqn/pbox.h: Drop external declarations of
rendering parameters.
* src/preproc/eqn/delim.cpp (build_extensible)
(define_extensible_string, delim_box::compute_metrics):
* src/preproc/eqn/lex.cpp (yylex):
* src/preproc/eqn/limit.cpp (limit_box::compute_metrics):
* src/preproc/eqn/list.cpp (compute_spacing):
* src/preproc/eqn/other.cpp (accent_box::compute_metrics)
(overline_char_box::overline_char_box):
(overline_box::compute_metrics, overline_box::output):
(underline_char_box::underline_char_box):
(underline_box::compute_metrics, underline_box::output):
(fat_box::compute_metrics, fat_box::output):
(vcenter_box::compute_metrics):
* src/preproc/eqn/over.cpp (over_box::compute_metrics):
(over_box::output):
* src/preproc/eqn/pile.cpp (pile_box::compute_metrics):
(matrix_box::compute_metrics, matrix_box::output):
* src/preproc/eqn/script.cpp (script_box::compute_metrics):
* src/preproc/eqn/sqrt.cpp (sqrt_box::compute_metrics): Migrate
from lvalue access to `get_param()` for parameter retrieval.
* src/preproc/eqn/eqn.1.man (Customization): Document it.
* src/preproc/eqn/tests/parameters-can-be-set-and-reset.sh: Test
it.
* src/preproc/eqn/eqn.am (eqn_TESTS): Run test.
* NEWS: Add item.
Fixes <https://savannah.gnu.org/bugs/?62692>.
2023-08-24 G. Branden Robinson <g.branden.robinson@gmail.com>
* src/preproc/eqn/box.cpp (set_param): Migrate iteration style
to use new `array_size()` instead of null pointer guards at the
end of an array of structs.
2023-08-24 G. Branden Robinson <g.branden.robinson@gmail.com>
[src]: Add template function for obtaining the length of an
array.
* src/include/lib.h (array_size) [__cplusplus]: Do it.
2023-08-22 Dave Kemper <saint.snit@gmail.com>
* doc/pic.ms: Document `PY` macro, new to groff 1.23.0.
Fixes <https://savannah.gnu.org/bugs/?64575>.
2023-08-22 Dave Kemper <saint.snit@gmail.com>
* tmac/pic.tmac (PY): Call `PF` rather than duplicating its
{three bytes of} code. This is almost too trivial to DRY, but
{1} the new form is a cue to the human reader that .PY is meant
to be an alias of .PF; and {2} .PE was already defined as a
variant of .PF with an explicit call to it, so this makes the
.PY definition conform to that precedent.
2023-08-22 G. Branden Robinson <g.branden.robinson@gmail.com>
* tmac/an.tmac: Stop setting `an*can-hyperlink` if formatting
for PDF; we don't yet have support for this implemented, leading
to vanishing text when the `U` register is true and, for
instance, `UR`/`UE` are called with no link text.
Fixes <https://savannah.gnu.org/bugs/?64572>.
2023-08-21 G. Branden Robinson <g.branden.robinson@gmail.com>
* doc/doc.am (PROCESSEDFILES_DEPS_HTML): Depend on
tmac/html{,-end}.tmac.
(PROCESSEDFILES_DEPS_PDF): Depend on tmac/pdf.tmac.
(PROCESSEDFILES_DEPS_PS): Depend on tmac/ps.tmac.
(PROCESSEDFILES_DEPS_TXT): Depend on tmac/tty.tmac.
2023-08-21 G. Branden Robinson <g.branden.robinson@gmail.com>
* src/devices/grops/ps.cpp (ps_printer::define_encoding):
* src/devices/grops/psrm.cpp (resource_manager::output_prolog)
(resource_manager::supply_resource): Report more intelligible
diagnostics when libgroff's `font::open_file()` returns a null
pointer without setting `errno`. The only way this can happen
is if it rejected the file name for containing a slash, thus
attempting directory traversal (recall Savannah #61424). Also
fix code style nits: explicitly `#include` errno.h C standard
library header, align style of null pointer checks, and stop
explicitly setting `errno` to zero before (indirectly) calling
`fopen()`; we inspect `errno`'s value only under a documented
error condition (a null stream pointer). See errno(3).
* NEWS: Add item; we should have mentioned this (and produced
these better diagnostics) when 1.23.0 was released.
Distributors may find this change desirable to backport.
Fixes <https://savannah.gnu.org/bugs/?64577>. Thanks to Phil
Chadwick for the report and Deri James for swiftly finding a
correct workaround that suited the reporter.
2023-08-19 G. Branden Robinson <g.branden.robinson@gmail.com>
* src/roff/troff/node.cpp (class tfont_spec): Stop declaring
copy constructor. The implicitly defined one suffices.
Resolves "-Wdeprecated-copy" warning from GCC.
Fixes <https://savannah.gnu.org/bugs/?57515>. Thanks to Bjarni
Ingi Gislason for the report.
2023-08-16 G. Branden Robinson <g.branden.robinson@gmail.com>
* configure.ac: Include paper format in configuration report.
* m4/groff.m4 (GROFF_PAGE): Slightly refactor, and help users to
figure out how the "configure" script decided upon the paper
format it did by supplementing the `AC_MSG_RESULT` message. If
not falling back to the "letter" default or honoring a
command-line setting (e.g., "./configure PAGE=a4"), report which
file or command was used to infer the paper locale. Apply DRY
principle by using shell variables more.
Prompted by discussion with Damian McGuckin on the groff list.
<https://lists.gnu.org/archive/html/groff/2023-07/msg00072.html>
2023-08-12 G. Branden Robinson <g.branden.robinson@gmail.com>
Our "Makefile.am" defines an `RM` macro if make(1) itself does
not, and our Automake files employ it extensively; sweep up the
stragglers.
* font/devpdf/devpdf.am (mostlyclean_devpdf_extra)
(uninstall_devpdf):
* src/devices/xditview/xditview.am (uninstall_xditview):
* src/libs/libgroff/libgroff.am (install_charset_data):
* src/roff/nroff/nroff.am (nroff):
* src/utils/indxbib/indxbib.am (install_indxbib):
(uninstall_indxbib): Do it.
2023-08-12 G. Branden Robinson <g.branden.robinson@gmail.com>
* src/utils/indxbib/indxbib.am (install_indxbib): Use `$(LN_S)`,
not `ln -s`.
2023-08-11 G. Branden Robinson <g.branden.robinson@gmail.com>
[eqn]: Trivially refactor.
* src/preproc/eqn/main.cpp (input_char_description): Migrate to
`const`-qualified object to size an array of length computed at
compile time and avoid repeating lengthy expression.
2023-08-10 G. Branden Robinson <g.branden.robinson@gmail.com>
[man]: Add new `TS` register to configure required separation
between a (`IP`, `TP`) paragraph's tag and its body, and change
the default amount used for this purpose from 1n to 2n. Retire
private register `an-tag-separation` in favor of `TS`.
* tmac/an.tmac: Assign `TS` value of 2n if not already defined.
(TH): Stop setting the default here.
(an-write-paragraph-tag): Use it.
Fixes <https://savannah.gnu.org/bugs/?64539>. Thanks to Alex
Colomar for the report.
2023-08-09 G. Branden Robinson <g.branden.robinson@gmail.com>
[man,mdoc]: Change base paragraph indentation to 5n. This
corresponds to the amount used by historical man(7) and mdoc(7)
implementations going back to Unix Version 7 and 4.3BSD-Reno,
respectively.
* tmac/an.tmac: Introduce new interface register, `BP`, to
control the base paragraph indentation amount. Formerly, `IN`
determined it, the default relative inset amount, and the
default amount of additional indentation used by `IP`, `TP`, and
the deprecated `HP`.
(an-reset-margin-and-inset-level, SH, SS): Use it.
* tmac/doc.tmac: Introduce `BP` register, replacing `IN`.
* tmac/mdoc/doc-common (Sh): Use it.
* src/preproc/tbl/tests/save-and-restore-tab-stops.sh:
* tmac/tests/an-ext_SY-and-YS-work.sh:
* tmac/tests/an_TH-repairs-hy-damage.sh:
* tmac/tests/an_UE-breaks-before-long-URIs.sh:
* tmac/tests/an_adjust-link-text-correctly.sh:
* tmac/tests/an_link-macros-work-in-paragraph-tags.sh:
* tmac/tests/an_use-input-traps-correctly.sh:
* tmac/tests/andoc_flush-between-packages.sh:
* tmac/tests/doc_Mt-works.sh:
* tmac/tests/doc_indents-correctly.sh:
* tmac/tests/doc_synopsis_is_not_adjusted.sh: Update amount of
indentation expected in output.
* tmac/groff_man.7.man.in:
* tmac/groff_mdoc.7.man: Document it.
Fixes <https://savannah.gnu.org/bugs/?64018>. Thanks to
Thorsten Glaser and Ingo Schwarze for the discussion.
2023-08-05 G. Branden Robinson <g.branden.robinson@gmail.com>
[troff]: Add paranoia to `token::description()`.
* src/roff/troff/input.cpp (token::description): Clear static
buffer on entry to function to avoid another problem like
Savannah #62813.
2023-08-05 G. Branden Robinson <g.branden.robinson@gmail.com>
[troff]: Trivially refactor (`define_color`).
* src/roff/troff/input.cpp (define_color): Throw more helpful
diagnostics when arguments from this 3-5-argument-taking request
is not given enough of them. Rename internal variable `style`
to `color_space` to make it less opaque.
2023-08-05 G. Branden Robinson <g.branden.robinson@gmail.com>
[troff]: Trivially refactor.
* src/roff/troff/input.cpp (input_char_description): Migrate to
`const`-qualified object to size an array of length computed at
compile time and avoid repeating lengthy expression.
2023-08-04 G. Branden Robinson <g.branden.robinson@gmail.com>
* man/groff_diff.7.man: Drop displayed examples. Man pages'
honor as references, not tutorials, has been vigorously
championed on the groff mailing list. Accordingly, drop
displayed examples from this page; all are available in groff's
Texinfo manual.
* NEWS: Add item in case people wonder where they've gone.
2023-08-04 G. Branden Robinson <g.branden.robinson@gmail.com>
[tbl]: Fix staggering of text block entries.
* src/preproc/tbl/table.cpp: Add C preprocessor macro storing a
"text block staggering macro" name.
(block_entry::position_vertically): Call it in generated output
with a negative half-vee motion.
(block_entry::position_vertically, left_block_entry::print)
(right_block_entry::print, center_block_entry::print)
(alphabetic_block_entry::print): Call it in generated output
with a positive half-vee motion.
(table::init_output): Write out its definition in generated
output. It wraps the `sp` request. If we're in a diversion,
use the `\!` technique to recursively call ourselves and bubble
up the spacing request a diversion level (spacing requests of
anything other than 1v are ignored in diversions). Otherwise,
invoke the request.
Fixes <https://savannah.gnu.org/bugs/?64454> a.k.a. Debian
#1038391. Thanks to наб for the report and a good test case.
2023-08-04 G. Branden Robinson <g.branden.robinson@gmail.com>
[tbl]: Regression-test Debian #1038391.
* src/preproc/tbl/tests/\
align-staggered-text-blocks-correctly.sh: Do it.
* src/preproc/tbl/tbl.am (tbl_TESTS): Run test.
2023-08-04 G. Branden Robinson <g.branden.robinson@gmail.com>
[man]: Deprecate `SB` macro. It is a SunOS 4.0 (1988) extension
that in most contexts, does nothing you can't achieve with `SM`
and `B` together (in either order).
Study of the SunOS 4 man page corpus suggests a reason for its
introduction of this macro: use of `SB` immediately after `TP`
was common (610 out of 2,111 occurrences). The problem with
`TP` and the mechanism suggested above is that input traps in
troff normally ignore the `\c` escape sequence, the use of which
would be necessary to get the desired effect. In groff since
1.22.4, the man(7) `TP` macro uses GNU troff's `itc` request,
which _does_ respect `\c`. (mandoc(1) 1.14.2 and later behave
compatibly with groff man >= 1.22.4.) Solaris 11 switched to
groff as its troff implementation, so there is no reason for
newly written or currently maintained man pages to employ `SB`.
* tmac/an.tmac (SB): Throw deprecation warning.
* tmac/groff_man.7.man.in (Description): Move macro from table
to deprecation list.
(Font style macros): Move description from here...
(Deprecated features): ...to here.
(Portability): Drop mention, since we don't encourage people to
use it at all.
Fixes <https://savannah.gnu.org/bugs/?64515>.
2023-08-03 G. Branden Robinson <g.branden.robinson@gmail.com>
* src/roff/troff/node.cpp (zoom_font): Validate arguments more.
Invalid inputs could have bizarre consequences.
Fixes <https://savannah.gnu.org/bugs/?64505>.
2023-08-02 G. Branden Robinson <g.branden.robinson@gmail.com>
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.
2023-07-31 G. Branden Robinson <g.branden.robinson@gmail.com>
* tmac/doc.tmac (doc-parse-args): Set ellipses in roman.
Thanks to Lennart Jablonka for reminding me of this issue on the
linux-man mailing list.
2023-07-29 G. Branden Robinson <g.branden.robinson@gmail.com>
* src/libs/libgroff/fontfile.cpp: Update `#include`s.
(font::open_file): Do more parameter validation. Don't
construct a file name for opening from components that are null
pointers. Also `assert()` this since it should be an invariant.
Migrate from `sprintf()` to `snprintf()`; we have the size of
the destination buffer handy.
Fixes <https://savannah.gnu.org/bugs/?64485>. Thanks to Bjarni
Ingi Gislason for the report.
2023-07-29 G. Branden Robinson <g.branden.robinson@gmail.com>
* src/preproc/pic/troff.cpp (troff_output::set_location): Do
more parameter validation. Generate the two-argument form of
the `lf` request only if the C string holding the new file name
to write isn't a null pointer. Also `assert()` this since it
should be an invariant.
Fixes <https://savannah.gnu.org/bugs/?64488>. Thanks to Bjarni
Ingi Gislason for the report.
2023-07-28 G. Branden Robinson <g.branden.robinson@gmail.com>
[gxditview]: Add accelerators for "Print" action.
An apparent bug in a support library affects some users; it
disables gxditview's pop-up menu. (The menu pops up, but no
item can be selected.) Also, "Print" was the only action for
which no keyboard accelerator was defined. "p" (unmodified) is
already bound to `PreviousPage()`; bind "p" with any of the
modifiers Shift, Ctrl, Alt, or Meta to `Print()`.
* src/devices/xditview/GXditview.ad: Do it.
* src/devices/xditview/gxditview.1.man: Document it.
2023-07-28 G. Branden Robinson <g.branden.robinson@gmail.com>
* tmac/es.tmac: Scream the entire word "BIBLIOGRAPHÍA", instead
of dying off to a murmur at the last two letters.
2023-07-26 G. Branden Robinson <g.branden.robinson@gmail.com>
[troff]: Add new `.trap` built-in register.
* src/roff/troff/div.h (class diversion, class macro_diversion,
class top_level_diversion): Declare new member function
`get_next_trap_name`.
* src/roff/troff/div.cpp (macro_diversion::get_next_trap_name):
New member function returns name of diversion trap if any, and
if its position is greater than the vertical drawing position,
otherwise an empty string.
(top_level_diversion::get_next_trap_name): New member function
returns the name of the next vertical position trap, if any,
otherwise an empty string.
(class next_trap_name_reg): New class has one member, a
`get_string()` function.
(next_trap_name_reg::get_string): New function.
(init_div_requests): Add `.trap` to the register dictionary and
wire it up to `next_trap_name_reg`.
* doc/groff.texi (Page Location Traps):
* man/groff.7.man (Read-only registers):
* man/groff_diff.7.man (New registers): Document it.
* src/roff/groff/tests/dot-trap_register_works.sh: Test it.
* src/roff/groff/groff.am (groff_TESTS): Run test.
* NEWS: Add item.
Fixes <https://savannah.gnu.org/bugs/?64212>. Thanks to Dave
Kemper for feedback.
2023-07-21 G. Branden Robinson <g.branden.robinson@gmail.com>
* src/roff/troff/node.cpp (unbreakable_space_node::tprint):
Write word marker ('w' command) to output.
* NEWS: Add item.
Fixes <https://savannah.gnu.org/bugs/?64356>.
2023-07-21 G. Branden Robinson <g.branden.robinson@gmail.com>
* tmac/papersize.tmac: Set register `#R_MARGIN` for mom(7)'s
benefit, not `R_MARGIN`, which it neither tests nor interpolates
as a register. Continues commit bed42a77cb, 2022-11-16.
2023-07-21 G. Branden Robinson <g.branden.robinson@gmail.com>
* tmac/papersize.tmac: If the `paper` string is defined when
this macro file is loaded, set the `O` (mm page offset register)
independently of the `W` (mm line length ["width"] register).
2023-07-21 G. Branden Robinson <g.branden.robinson@gmail.com>
[docs]: Revise material in our Texinfo manual.
* doc/groff.texi (Manipulating Filling and Adjustment): Document
a CSTR #54 erratum; the arguments to the `ss` request are in
12ths of the selected font's `spacewidth` parameter, not 36ths
of an em. Drop false claim of rounding of `.ss` and `.sss`
register values on terminal devices. (Rounding of any resulting
adjustment quantities might still occur, but this is part of the
usual application of motion quanta and not particular to the
`ss` request.) Characterize "undiscardable space" as
"horizontal motion" to help the reader acquire this essential
distinction between horizontal spaces and motions.
(Manipulating Spacing): Clarify behavior. Distinguish `sp`
request from `\v` escape sequence and cross reference the
latter. Recast to squeeze presentation of `ss` request onto one
U.S. letter page when typeset. Drop (commented-out) trivial
example of `ls` usage in favor of new example illustrating some
macros using `vs` instead, for pedagogical purposes and to eat
up a lot of dead space on the page caused by a later lengthy
example. (Knuth-Plass for the...uh...win.)
(Page Control): Stop (arguably) mis-applying the term "widow",
in favor of less metaphorical language. Extend Woolf example to
narrow the seas of vertical space produced by TeX's formatting
of the page it occupies. (Our blanched discourse can use the
purple prose.)
(Page Motion): Fix straggling use of "escape" as a noun; we
prefer "escape sequence".
* man/groff.7.man (Request short reference) <ss>: Sync.
Fixes <https://savannah.gnu.org/bugs/?64440>. Thanks to Dave
Kemper for the report and review.
2023-07-25 G. Branden Robinson <g.branden.robinson@gmail.com>
* src/roff/troff/env.cpp (environment::print_env): Fix error in
report. The units of {minimum inter-word, additional
inter-sentence} space size are 12ths of the font's "spacewidth"
parameter, not 36ths of an em.
Consider the following input.
.\" groff -T ps -Z
.nf
foo bar1
.ss 12
foo bar2 \" cases 1 and 2 are the same
foo\h'1m/3u'bar3 \" wider than 1 & 2
foo\h'1m/36u*12u'bar4 \" slightly narrower than case 3
.ss 11
foo bar5 \" narrower than case 1 (as expected)
foo\h'1m/36u*11u'bar6 \" between cases (1,2) and 4
2023-07-19 G. Branden Robinson <g.branden.robinson@gmail.com>
* tmac/papersize.tmac: If not already defined, set `PO` register
to one inch to integrate with ms(7), man(7), and mdoc(7).
2023-07-18 G. Branden Robinson <g.branden.robinson@gmail.com>
[ms]: Improve documentation of pic(1) usage.
* tmac/groff_ms.7.man
(Tables, figures, equations, and references): Document the
mandatory arguments to `PS`. Explain that pic(1) will supply
them. (This is documentation of the _package's_ interface.)
* doc/groff.texi: As above, and add example of pic(1) input.
Also tighten wording.
* doc/ms.ms: As above, and supply pic output corresponding to
example (if typesetting). Add a keep.
* doc/doc.am (doc/ms.ps): Preprocess with pic; call groff with
`-p` option when generating document.
* src/utils/grog/tests/smoke-test.sh: Drop a test case; we no
longer have an ms(7) document in the tree that uses tbl and eqn
but not pic.
2023-07-17 G. Branden Robinson <g.branden.robinson@gmail.com>
[tbl]: Fix post-1.23.0 regression.
* src/preproc/tbl/main.cpp (process_format): Fix thinkos
introduced in commit ba420961c3, 19 May, which caused the first
character after [PpVv] column modifiers to be ignored. Problem
visible in typeset renderings of our "ms.ms" document, where
some table entries were getting rendered at a type size of 1p.
2023-07-17 G. Branden Robinson <g.branden.robinson@gmail.com>
[ms]: Fix Savannah #64438.
* tmac/s.tmac (@PS): Stop treating excess arguments as
erroneous, foregoing preparation for pic(1) output. Fixes
regression from groff 1.22.4.
Fixes <https://savannah.gnu.org/bugs/?64438>. Thanks to Doug
McIlroy for the report, Dave Kemper for root-cause analysis, and
Deri James for usability feedback.
2023-07-17 G. Branden Robinson <g.branden.robinson@gmail.com>
* arch/djgpp/config.site:
* arch/misc/shdeps.sh:
* bootstrap:
* font/devdvi/generate/CompileFonts:
* font/devps/generate/afmname:
* font/devps/generate/make-zapfdr:
* font/util/make-Rproto:
* gendef.sh:
* m4/groff.m4:
* mdate.pl:
* src/devices/grops/grops.1.man:
* src/devices/xditview/ad2c:
* src/libs/libgroff/config.charset:
* src/libs/libgroff/make-uniuni:
* src/preproc/eqn/neqn.sh:
* src/roff/nroff/nroff.sh:
* src/utils/afmtodit/make-afmtodit-tables:
* test-groff.in:
* tmac/hyphenex.pl: Stop endorsing shebang line space myth.
Fixes <https://savannah.gnu.org/bugs/?64058>.
2023-07-16 G. Branden Robinson <g.branden.robinson@gmail.com>
* m4/groff.m4 (GROFF_PROG_YACC): Behave more like `AC_PROG_YACC`
where useful, seeking "bison" first. Drop comment claiming that
"Bison-generated parsers have problems with C++ compilers other
than g++", which dates back to groff 1.10, 26 November 1995.
Let us optimistically assume that GNU Bison (and C++ compilers)
have improved since then.
2023-07-16 G. Branden Robinson <g.branden.robinson@gmail.com>
* src/roff/groff/groff.cpp (main): Update copyright notice and
warranty disclaimer. Bump year. Lead with declaration as free
software (join us now); specify GPL version and user's option to
upgrade to later version. Use a warranty disclaimer inspired by
GNU Bison. Drop mention of "COPYING" file, which is not
installed by groff's "install" make(1) target and not sufficient
information to aid users of groff packages prepared by
distributors (which neverless are legally bound to provide
licensing information via some means, and do so with high
reliability). After almost 35 years, we can have some hope that
people have heard of the GNU GPL and can locate a copy of it
without great difficulty. Also drop use of term "subprogram".
2023-07-16 G. Branden Robinson <g.branden.robinson@gmail.com>
* tmac/man.local: Stop disabling hyperlinks on non-HTML output
devices. less(1) version 566 and later are in wide distribution
now and will be more so by the time of the next groff release.
* tmac/tests/an_UE-breaks-before-long-URIs.sh: Force hyperlinks
off with `-rU0` to preserve test validity.
* NEWS: Add item.
Thanks to Colin Watson for pioneering these changes in Debian's
groff 1.23.0-1 package.
2023-07-12 G. Branden Robinson <g.branden.robinson@gmail.com>
* src/preproc/html/pushback.cpp (pushBackBuffer::isString):
Partially revert commit 411b42f4ec, 2 June. This member
function needs a signed type to iterate backwards for internal
validation purposes, so use `ptrdiff_t` instead of `size_t`.
Fixes post-1.23.0 problem with pre-grohtml infinitely looping on
complex documents like groff_char(7). Mea culpa.
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
"&ThickSpace;" entity instead of "&ensp;".
* 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 facilitate
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>.
________________________________________________________________________
##### License
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
notice and this notice are preserved.
##### Editor settings
Local Variables:
fill-column: 72
mode: change-log
version-control: never
End:
vim:set autoindent textwidth=72: