=================================================================== RCS file: /cvs/mandoc/TODO,v retrieving revision 1.267 retrieving revision 1.313 diff -u -p -r1.267 -r1.313 --- mandoc/TODO 2018/08/19 17:46:14 1.267 +++ mandoc/TODO 2021/06/02 18:23:34 1.313 @@ -1,6 +1,6 @@ ************************************************************************ * Official mandoc TODO. -* $Id: TODO,v 1.267 2018/08/19 17:46:14 schwarze Exp $ +* $Id: TODO,v 1.313 2021/06/02 18:23:34 schwarze Exp $ ************************************************************************ Many issues are annotated for difficulty as follows: @@ -33,6 +33,21 @@ Obviously, as the issues have not been solved yet, the are mere guesses, and some may be wrong. ************************************************************************ +* assertion failures +************************************************************************ + +- .if n .ce in the middle of .TS data + afl case f1/id:000103,sig:06,src:009024+009105,op:splice,rep:2 (jes@) + While roff_parseln() prevents .ce and similar requests in the middle + of a tbl, the guard is no longer effective when the .ce is wrapped + in a roff block, for example a conditional. The resulting assertion + has never been seen in any real-world manual page. + This is too dangerous to fix before release because it requires + reorganizing the very delicate internals of roff_parseln(), + which risks causing more severe bugs. + loc * exist *** algo *** size * imp * + +************************************************************************ * missing features ************************************************************************ @@ -57,36 +72,65 @@ are mere guesses, and some may be wrong. reported by brad@ Sat, 15 Jan 2011 15:45:23 -0500 loc *** exist *** algo *** size ** imp * -- .while and .shift - found by jca@ in ratpoison(1) Sun, 30 Jun 2013 12:01:09 +0200 - loc * exist ** algo ** size ** imp ** - - \w'' improve width measurements would not be very useful without an expression parser, see below needed for Tcl_NewStringObj(3) via wiz@ Wed, 5 Mar 2014 22:27:43 +0100 loc ** exist *** algo *** size * imp *** -- \\ in high-level macro arguments - Currently, \\ is expanded in two situations: - 1) macro and string definition (roff.c setstrn()) - 2) macro argument parsing (mandoc.c mandoc_getarg()) - For user defined macros, the second happens in time because of ROFF_REPARSE. - But for standard high-level macros, it only happens after entering the - high level parsers, which is too late because the code doesn't get - back to roff.c roff_res() from that point. Because this requires - distinguishing requests, user-defined macros and standard macros - on the roff_res() level, it is hard to solve without the parser reorg. - Found by naddy@ in devel/cutils cobfusc(1) Mon, 16 Feb 2015 19:10:52 +0100 - loc *** exist *** algo *** size ** imp * +- .als only works for macros in mandoc, not for user-defined strings. + Also, the "val" field in struct roffkv would have to be replaced + with a pointer to a reference-counted wrapper, and an alias + would have to point to the same wrapper as the original. + .als to undefined does nothing; the alias is not created. + .rm'ing the original leaves the alias to point to the old value. + .de .als .de changes both, but + .de .als .rm .de only changes the new value, not the alias. + Found in groffer(1) version 1.19 + Jan Stary 20 Apr 2019 20:16:54 +0200 + loc * exist ** algo ** size ** imp * -- check for missing roff escape sequences, implement those that are - trivial even if not usually appearing in manual pages, gracefully - ignore the non-trivial ones, document what they are supposed to do - and what mandoc does instead - loc * exist ** algo * size * imp * +- roff string condition comparisons fail when vars contain quotes: + .ds s ' + .if '\*s'' \&... + hard to fix because of the basic architecture (string replacement + happens before roff(7) syntax parsing) + Found in groffer(1) version 1.19 + Jan Stary 20 Apr 2019 20:16:54 +0200 + loc * exist *** algo *** size ** imp * +- mandoc replaces all ASCII control characters except tab and line feed + with '?' during input. It would be better to replace them with + Unicode escapes in preconv_encode() or somewhere in the vicinity, + such that the already existing better replacement strings show + up in the output. Emulating groff is not desirable: groff replaces + 0x00, 0x0b, and 0x0d to 0x1f with the empty string (bad because + that's easy to overlook for the document author), 0x01 with '.' + (very confusing), and passes through 0x02 to 0x08, 0x0c, and 0x7f + raw (bad because that is insecure output). Remember that 0x07 may + need special handling because it is sometimes used for certain + delimiters, so it may need handling *after* roff.c rather than before. + reminded by John Gardner 16 Jun 2020 14:26:28 +1000 + Actually, more ASCII control characters than just 0x07 may need + later handling because they can for example be used in macro names. + So they may need handling after roff(7) processing. + pointed out by John Gardner 23 Jun 2020 18:28:08 +1000 + more info from John Gardner 29 Jun 2020 19:54:04 +1000 + loc ** exist ** algo ** size ** imp * + +- many missing features used in old groff_char(7), + some can possibly be supported + kamil at netbsd 12 Nov 2020 17:27:09 +0100 + reply + +- \s with arbitrary arg delimiters as already supported for other escapes + found following jmc@'s mail 28 Apr 2021 18:31:41 +0100 + loc * exist * algo * size * imp * + --- missing mdoc features ---------------------------------------------- +- .Sh and .Ss should be parsed and partially callable, see groff_mdoc(7) + reed at reedmedia dot net Sat, 21 Dec 2019 17:13:07 -0600 + loc ** exist ** algo ** size ** imp * + - .Bl -column .Xo support is missing ultimate goal: restore .Xr and .Dv to @@ -100,13 +144,6 @@ are mere guesses, and some may be wrong. from jmc@ Wed, 14 Jul 2010 18:10:32 +0100 loc * exist *** algo *** size ** imp ** -- .Bd -centered implies -filled, not -unfilled, which is not - easy to implement; it requires code similar to .ce, which - we don't have either. - Besides, groff has bug causing text right *before* .Bd -centered - to be centered as well. - loc *** exist *** algo ** size ** imp ** (parser reorg would help) - - .Bd -filled should not be the same as .Bd -ragged, but align both the left and right margin. In groff, it is implemented in terms of .ad b, which we don't have either. Found in cksum(1). @@ -162,6 +199,13 @@ are mere guesses, and some may be wrong. --- missing man features ----------------------------------------------- +- MANWIDTH + Markus Waldeck 9 Jun 2015 05:49:56 +0200 + Laura Morales 26 Apr 2018 08:15:55 +0200 + Kamil Rytarowski 13 Nov 2020 00:19:36 +0100 + patch from Kamil 13 Nov 2020 22:37:07 +0100 + loc * exist * algo * size * imp * + - groff_www(7) .MTO and .URL These macros were used by the GNU grep(1) man page. The groff_www(7) manual page itself uses them, too. @@ -172,11 +216,6 @@ are mere guesses, and some may be wrong. --- missing tbl features ----------------------------------------------- -- the "s" layout column specifier is used for placement of data - into columns, but ignored during column width calculations - synaptics(4) found by tedu@ Mon, 17 Aug 2015 21:17:42 -0400 - loc * exist ** algo *** size * imp ** - - vertical centering in cells vertically spanned with ^ pali dot rohar at gmail dot com 16 Jul 2018 13:03:35 +0200 loc * exist *** algo *** size ** imp * @@ -188,35 +227,24 @@ are mere guesses, and some may be wrong. loc *** exist ** algo *** size ** imp *** - look at the POSIX manuals in the books/man-pages-posix port, - they use some unsupported tbl(7) features. + they use some unsupported tbl(7) features, mostly macros in tbl(7). loc * exist ** algo ** size ** imp *** - look what Joerg Schilling manual pages use Thu, 19 Mar 2015 18:31:48 +0100 -- use Unicode U+2500 to U+256C for table borders - in tbl(7) -Tutf-8 output - suggested by bentley@ Tue, 14 Oct 2014 04:10:55 -0600 - loc * exist ** algo * size * imp ** - -- implement horizontal and vertical alignment in HTML output - pali dot rohar at gmail dot com 16 Jul 2018 13:03:35 +0200 - loc * exist * algo * size * imp *** - -- implement cell spanning in HTML output - pali dot rohar at gmail dot com 16 Jul 2018 13:03:35 +0200 - loc * exist * algo ** size ** imp ** - -- implement table borders in HTML output - pali dot rohar at gmail dot com 16 Jul 2018 13:03:35 +0200 - loc * exist * algo ** size ** imp ** - --- missing eqn features ----------------------------------------------- - In a matrix, break the output line after each matrix line. - Found in the discussion at CDBUG 2015. - Suggested by Avi Weinstock. - loc * exist * algo * size * imp ** + Found in the discussion at CDBUG 2015. Suggested by Avi Weinstock. + This may not be the ideal solution after all: eqn(7) matrices + are lists of columns, so Avi's proposal would show each *column* + on its own *line*, which is likely to cause confusion. + A better solution, but much harder to implement, would be to + actually show the coordinates of column vectors on different + terminal output lines, using the clumnated output facilities + developed for .Bl -tag, .Bl -column, and also used for tbl(7). + loc * exist * algo ** size ** imp ** - The "size" keyword is parsed, but ignored by the formatter. loc * exist * algo * size * imp * @@ -242,6 +270,10 @@ are mere guesses, and some may be wrong. --- missing misc features ---------------------------------------------- +- -T man does not handle eqn(7) and tbl(7) + Stephen Gregoratto 16 Feb 2020 01:28:07 +1100 + loc ** exist ** algo ** size *** imp ** + - man -ks 1,8 route; kn@ Jul 13, 2018 orally - italic correction (\/) in PostScript mode @@ -310,6 +342,9 @@ are mere guesses, and some may be wrong. https://github.com/schmonz/ikiwiki/compare/mandoc Amitai Schlair Mon, 19 May 2014 14:05:53 -0400 +- check compatibility with + https://git.sr.ht/~sircmpwn/scdoc + - check features of the Slackware man.conf(5) format Carsten Kunze Wed, 11 Mar 2015 17:57:24 +0100 @@ -373,6 +408,8 @@ are mere guesses, and some may be wrong. - a line starting with "\fB something" counts as starting with whitespace and triggers a line break; found in audio/normalize-mp3(1) + This will become easier once escape sequences are represented + by syntax tree nodes. loc ** exist * algo ** size * imp ** - formatting /usr/local/man/man1/latex2man.1 with groff and mandoc @@ -390,20 +427,18 @@ are mere guesses, and some may be wrong. add a new <> block to the PDF files with /BaseFont /Courier and change the /Name from /F0 to the new font (/F5 (?)). re-reported by tb@ Mon, 16 Mar 2015 16:47:21 +0100 - loc * exist ** algo ** size * imp ** + loc ** exist ** algo ** size * imp ** --- HTML issues -------------------------------------------------------- -- wrap Sh and Ss content into
- Laura Morales 21 Apr 2018 18:10:48 +0200 - (Evaluate whether this is really useful and has no adverse - side effects before implementing; if it is possible, - it does seem cleaner.) - loc ** exist ** algo * size * imp *** +- .Bd -unfilled should not use monospaced font + anton@ 4 Mar 2021 08:19:35 +0100 + loc ** exist * algo * size * imp ** -- format ".IP *" etc. as
    rather than
    - https://github.com/Debian/debiman/issues/67 - loc ** exist ** algo ** size * imp *** +- get rid of the last handful of style= attributes such that + Content-Security-Policy: can be enabled without unsafe-inline + suggested by bentley@ Nov 10, 2019 at 06:02:49AM -0700 + loc * exist * algo * size * imp ** - .Bf at the beginning of a paragraph inserts a bogus 1ex horizontal space, see for example random(3). Introduced in @@ -417,6 +452,11 @@ are mere guesses, and some may be wrong. https://github.com/Debian/debiman/issues/15 loc * exist * algo ** size ** imp ** +- space characters can end up in href= attributes, for example coming + from the first .Xr argument (where they make no sense, but still); + does this affect other characters, other source macros...? + Jackson Pauls 29 Aug 2017 16:56:27 +0100 + - The tables used to render the three-part page headers actually force the width of the to the max-width given for . Not yet sure how to fix that... @@ -424,6 +464,12 @@ are mere guesses, and some may be wrong. http://undeadly.org/cgi?action=article&sid=20140925064244&pid=1 loc * exist * algo ** size * imp *** +- implement the tbl(7) layout "n" specifier for HTML output, + probably by manual alignment, inserting adequate numbers of + digit-width spaces, similar to tbl_term.c, tbl_number() + Oliver Corff 16 May 2021 20:29:00 +0200 + loc ** exist ** algo ** size * imp ** + - generate tags in HTML idea from florian@ Tue, 7 Apr 2015 00:26:28 +0000 may be possible to implement with .Lk img://something.png alt_text @@ -501,14 +547,9 @@ are mere guesses, and some may be wrong. * warning issues ************************************************************************ -- When a man(1) command returns no result and there was an -S - argument, check the -S argument against the list of valid - architectures and say "Unknown architecture AAA" rather than - "No entry for NNN in the manual" if there is no match. - Requires moving the lists of valid architectures out of - mdoc_validate.c such that they can be used by main.c. - Discussed with jmc@ 10 Aug 2018 19:20:12 +0100. - loc ** exist * algo * size * imp ** +- shorten/simplify error messages for usage errors + To: deraadt@ 25 Oct 2020 23:37:01 +0100 + loc ** exist * algo * size ** imp *** - warn about duplicate .Sh/.Ss heads gre(4): Rename duplicate sections 20 Apr 2018 15:27:33 +0200 @@ -540,17 +581,14 @@ are mere guesses, and some may be wrong. all over mdoc_macro.c and all subtly different. loc ** exist ** algo ** size ** imp ** -- style message about suspicious uses of - vs. \- vs. \(mi - e.g. -1 is likely wrong (from the mdoclint TODO) - - warn about punctuation - e.g. ',' and ';' - at the beginning of a text line, if it is likely intended to follow the preceding output without intervening whitespace, in particular after a macro line (from the mdoclint TODO) -- mandoc_special does not really check the escape sequence, - but just the overall format - loc ** exist ** algo *** size ** imp ** +- report double .TH in man(7) as an ERROR and let the first win + kristaps@ 28 Mar 2021 13:30:41 +0200 + loc * exist * algo * size * imp * - makewhatis -p complains about language subdirectories: /usr/local/man//ru: Unknown directory part @@ -560,9 +598,6 @@ are mere guesses, and some may be wrong. * documentation issues ************************************************************************ -- dashes, hyphens, and minus signs in manual pages - jmc@ Fri, 28 Mar 2014 07:19:27 +0000 - - mark macros as: page structure domain, manual domain, general text domain is this useful? @@ -588,10 +623,6 @@ are mere guesses, and some may be wrong. Found by Aaron M. Ucko in the GNU Hurd via Bdale Garbee, https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=829624 -- We use the input line number at several places to distinguish - same-line from different-line input. That plainly doesn't work - with user-defined macros, leading to random breakage. - - Is it possible to further simplify ENDBODY_SPACE? - Find better ways to prevent endless loops @@ -607,16 +638,26 @@ are mere guesses, and some may be wrong. * CGI issues ************************************************************************ + - Inspect httpd(8) logs on man.openbsd.org and consider + whether logging can be improved, where bad syntax comes from, + and what needs to be done to get rid of COMPAT_OLDURI. - Enable HTTP compression by detecting gzip encoding and filtering output through libz. - Privilege separation (see OpenSSH). - Enable caching support via HTTP 304 and If-Modified-Since. - - Have Mac OSX systems automatically disable -static compilation of the - CGI: -static isn't supported. ************************************************************************ * to improve in the groff_mdoc(7) macros ************************************************************************ + +- delete OS release verification from .Dx, .Fx, .Nx, .Ox etc. + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=629161 + also Branden Robinson 18 Dec 2019 00:59:52 +1100 + +- Can the distinction between .Vt and .Va be made stricter, + recommending .Vt extern char * Ns Va optarg ; ? + What about the block macro properties of .Vt in the SYNOPSIS? + zeurkous 25 Dec 2019 08:48:36 +0100 - .Cd # arch1, arch2 in section 4 pages: find better way to indicate multiple architectures, maybe: