Follow-up Comment #34, bug #63074 (group groff):
commit 9e9c5139b8a16f5614727e3e0b08ef3378fe96e1 Author: G. Branden Robinson <g.branden.robin...@gmail.com> Date: Fri Aug 30 20:53:22 2024 -0500 [troff]: Reject some nonsense in `\X` arguments. * src/roff/troff/input.cpp (encode_special_character_for_device_output): Reject tab, leader, and backspace characters in a `\X` device extension escape sequence argument. Silently ignore hyphen indicator `\%`, dummy character `\&`, and zero-width break `\:` escape sequences in such arguments. Continues fixing Savannah #63074. commit b4389abb267c36b3ca3b32c5643e4ab7e0fa8324 Author: G. Branden Robinson <g.branden.robin...@gmail.com> Date: Fri Aug 30 01:22:00 2024 -0500 [troff]: Detect special chars in `\X` arg better. * src/roff/troff/input.cpp (encode_special_character_for_device_output): Improve detection of non-Unicode special character escape sequences. Continues fixing Savannah #63074. Exhibit: $ printf '\\X@\\[notdef]\\[bs]\\[u1000]\\[bracketrighttp]\\[u23A4]@\n.pl 1v\n' | ./build/test-groff -ww -Z | grep '^x X' troff:<standard input>:1: error: special character 'notdef' is unusable within a device control escape sequence troff:<standard input>:1: error: special character 'bs' is unusable within a device control escape sequence x X \[u1000]\[u23A4]\[u23A4] You can still get an error (though I plan to make that a warning in the 'char' category since input processing continues), but only for the small handful of groff special character identifiers that lack a mapping to a Unicode character--like the Bell System logo, shown above. ...or if it just plain doesn't exist, as with 'notdef'. commit 74fb463c61267a05945308d1c092667c9c26fb6c Author: G. Branden Robinson <g.branden.robin...@gmail.com> Date: Fri Aug 30 03:57:57 2024 -0500 [troff]: Demote some errors to 'char' warnings. * src/roff/troff/input.cpp (encode_special_character_for_device_output): Demote diagnostics arising from non-encodable items from errors to warnings in category "char", since unlike most (all?) errors, GNU troff continues processing the input. Clarify language to make it clearer what is wrong with the rejected input. Continues fixing Savannah #63074. commit 663ac037d98b8a2428b11fd7811226ff60d6451c Author: G. Branden Robinson <g.branden.robin...@gmail.com> Date: Fri Aug 30 04:25:55 2024 -0500 [groff]: Test diags on invalid grout attempts. [groff]: Add test of diagnostics for attempts to write invalid things to device-independent output. We don't generally write tests for invalid or incorrect input, but this particular area has been a sore and poorly understood point for a long time. * src/roff/groff/tests/unencodable-things-in-grout.sh: Do it. * src/roff/groff/groff.am (groff_TESTS): Run test. Continues fixing Savannah #63074. commit 6d970eeed411493dd7dbb2439495a19aaed4bd6e Author: G. Branden Robinson <g.branden.robin...@gmail.com> Date: Fri Aug 30 15:46:48 2024 -0500 [groff]: Revise `\X` spec char test expectations. * src/roff/groff/tests/device-control-special-character-handling.sh: * src/roff/groff/tests/device_control_escapes_express_basic_latin.sh: Revise test expectations. Continues fixing Savannah #63074. commit dcae60b0fb1ad3fa3314fdfdbecb973961a40410 Author: G. Branden Robinson <g.branden.robin...@gmail.com> Date: Fri Aug 30 16:10:34 2024 -0500 [troff]: \X maps some basic Latin chars to specs. * src/roff/troff/input.cpp (encode_character_for_device_output): In device-independent output, represent ordinary characters that normally map to non-basic Latin code points ('-^`~) in a way that is compatible with how they're typeset, to avoid confusion when these characters are used in ways that are ultimately visible, as in tag names for PDF bookmarks, which can appear in a viewer's navigation pane. * src/roff/groff/tests/device-control-special-character-handling.sh: Test conversions of basic Latin input characters to Unicode code points. Continues fixing Savannah #63074. commit a9df692a94a2f5019765658af1c7d697ab3ca074 Author: G. Branden Robinson <g.branden.robin...@gmail.com> Date: Fri Aug 30 16:16:50 2024 -0500 [docs]: Update \X & `char` warning category descs. * doc/groff.texi.in (Postprocessor Access): * man/groff.7.man (Escape sequence short reference): * man/groff_diff.7.man (Escape sequences): Update discussion of `\X` escape sequence behavior. * doc/groff.texi.in (Warnings): * src/roff/troff/troff.1.man (Warnings): Update description of `char` warning category. Continues fixing Savannah #63074. _______________________________________________________ Reply to this item at: <https://savannah.gnu.org/bugs/?63074> _______________________________________________ Message sent via Savannah https://savannah.gnu.org/
signature.asc
Description: PGP signature