]> git.cameronkatri.com Git - mandoc.git/log
mandoc.git
3 years agomdoc(7): improve output of .At 32v
Ingo Schwarze [Sat, 4 Sep 2021 20:26:43 +0000 (20:26 +0000)]
mdoc(7): improve output of .At 32v

The official designation by AT&T was "UNIX/32V", so use that in the output.
That also makes sense because "system/architecture" is a widespread
convention to refer to the port of an operating system to a specific
architecture, in this case 32V (32bit DEC VAX).

The former wording "Version 32V AT&T UNIX" was misleading
because 32V is not a version number.

Even though UNIX/32V was not officially designated as Version 7 by AT&T,
prepend "Version 7" because it was in fact a straightforward port of
Version 7 AT&T UNIX.  That makes it easier to understand for 21st
century readers of manual pages.

Suggested by nabijaczleweli at nabijaczleweli dot xyz.
Same change as in GNU troff commit 21d30728.
OK  G dot Branden dot Robinson at gmail dot com  (gbranden@ in groff)

3 years agoIn the fallback code to look for manual pages without using mandoc.db(5),
Ingo Schwarze [Sat, 4 Sep 2021 12:52:57 +0000 (12:52 +0000)]
In the fallback code to look for manual pages without using mandoc.db(5),
accept files "man<one-digit-section>/<name>.<full-section>"
in addition to the already supported "man<full-section>/name.[01-9]*".
Needed for example on Alpine Linux which puts its Perl manuals
into "man3/<name>.3pm" and the POSIX manuals into "man3/<name>.3p".

While here, allow the glob(3) at the end of fs_lookup() to add multiple
matches to the result set.  This improves man -w output and may also
help some cases of plain man(1), allowing main() to prioritize properly
rather than fs_lookup() picking a random match.

Issue reported and patch tested
by Soeren Tempel <soeren at soeren hyphen tempel dot net>.

3 years agodo not crash when a manpath directory contains a symbolic link
Ingo Schwarze [Thu, 19 Aug 2021 16:55:31 +0000 (16:55 +0000)]
do not crash when a manpath directory contains a symbolic link
that points to a directory rather than to a regular file;
bug reported by Lukas Epple <sternenseemann at systemli dot org>,
and my patch also tested by him on NixOS

3 years agofix the section number in the <title> element for preformatted pages;
Ingo Schwarze [Thu, 19 Aug 2021 15:23:36 +0000 (15:23 +0000)]
fix the section number in the <title> element for preformatted pages;
minibug reported by Ian <Ropers at gmail dot com> on misc@

3 years agoprint a BAGARG message if -T markdown is requested on man(7) input;
Ingo Schwarze [Sat, 14 Aug 2021 13:53:08 +0000 (13:53 +0000)]
print a BAGARG message if -T markdown is requested on man(7) input;
suggested by Michael Stapelberg at debian dot org

3 years agoSupport two-character font names (BI, CW, CR, CB, CI)
Ingo Schwarze [Tue, 10 Aug 2021 12:55:03 +0000 (12:55 +0000)]
Support two-character font names (BI, CW, CR, CB, CI)
in the tbl(7) layout font modifier.

Get rid of the TBL_CELL_BOLD and TBL_CELL_ITALIC flags and use
the usual ESCAPE_FONT* enum mandoc_esc members from mandoc.h instead,
which simplifies and unifies some code.

While here, also support CB and CI in roff(7) \f escape sequences
and in roff(7) .ft requests for all output modes.  Using those is
certainly not recommended because portability is limited even with
groff, but supporting them makes some existing third-party manual
pages look better, in particular in HTML output mode.

Bug-compatible with groff as far as i'm aware, except that i consider
font names starting with the '\n' (ASCII 0x0a line feed) character
so insane that i decided to not support them.

Missing feature reported by nabijaczleweli dot xyz in
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=992002.
I used none of the code from the initial patch submitted by
nabijaczleweli, but some of their ideas.
Final patch tested by them, too.

3 years agoRename the compile-time configuration variable $HOMEBREWDIR to
Ingo Schwarze [Sat, 7 Aug 2021 13:02:10 +0000 (13:02 +0000)]
Rename the compile-time configuration variable $HOMEBREWDIR to
$READ_ALLOWED_PATH, allow it to contain more than one directory,
and explain how to use it for NixOS and for GNU Guix Linux.

Feature improvement based on observations, input, and earlier patches
from Lukas Epple <sternenseemann at systemli dot org>, and final
patch also tested by Lukas.

3 years ago.OP is not a GNU extension but first appeared in the Documenter's Workbench,
Ingo Schwarze [Thu, 5 Aug 2021 14:31:14 +0000 (14:31 +0000)]
.OP is not a GNU extension but first appeared in the Documenter's Workbench,
see https://github.com/n-t-roff/DWB3.3/blob/master/macros/man/an.sr#L33

from g dot branden dot robinson at gmail dot com
via GNU troff commit e3459327 2 Aug 2021 10:49:46 -0400

3 years agomanually tag the macro names that have false positives master origin/master
Ingo Schwarze [Thu, 29 Jul 2021 17:32:01 +0000 (17:32 +0000)]
manually tag the macro names that have false positives

3 years agoImprove the description of .Fl in multiple respects and in paricular
Ingo Schwarze [Thu, 29 Jul 2021 16:25:20 +0000 (16:25 +0000)]
Improve the description of .Fl in multiple respects and in paricular
improve the .Fl examples in multiple respects, including better
demonstrating long options.
Prompted by a question from espie@.
Feedback and OK jmc@.

3 years agoSupport auto-tagging for ".It Va".
Ingo Schwarze [Sun, 18 Jul 2021 11:41:23 +0000 (11:41 +0000)]
Support auto-tagging for ".It Va".

This combination is somewhat rare because few libraries expose so many
global variables that they need a list to enumerate them, but when the
idiom does occur, tagging the variable names is generally useful.
For example, this helps awk(1), dc(1), make(1), rc.subr(8), ...

Missing feature reported and patch reviewed, tested, and OK'ed by kn@.

3 years agos/The arguments are as follows:/The options are as follows:/
Ingo Schwarze [Sun, 4 Jul 2021 16:33:04 +0000 (16:33 +0000)]
s/The arguments are as follows:/The options are as follows:/
because that's what the example is talking about;
patch from kn@

3 years agoThe mandoc(1) manual already mentions that -T man output mode
Ingo Schwarze [Sun, 4 Jul 2021 15:38:26 +0000 (15:38 +0000)]
The mandoc(1) manual already mentions that -T man output mode
neither supports tbl(7) nor eqn(7) input.
If an input file contains such code anyway, tell the user
rather than failing an assert(3)ion.

Fixing a crash reported by Bjarni Ingi Gislason <bjarniig at rhi dot hi dot is>
in https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=901636 which the
Debian maintainer of mandoc, Michael at Stapelberg dot ch, forwarded to me.

3 years agodelete the two pairs of extra blank lines from expected man(7) terminal
Ingo Schwarze [Mon, 28 Jun 2021 20:12:05 +0000 (20:12 +0000)]
delete the two pairs of extra blank lines from expected man(7) terminal
output that are no longer printed since man_term.c rev. 1.236

3 years agoIn terminal output of man(7) documents, stop printing two extra blank
Ingo Schwarze [Mon, 28 Jun 2021 19:50:15 +0000 (19:50 +0000)]
In terminal output of man(7) documents, stop printing two extra blank
lines before the NAME section and before the page footer.  While these
blank lines had a long tradition, they didn't really serve any purpose
and merely wasted screen real estate.  Besides, this makes output from
man(7) more similar to output from mdoc(7).

This commit keeps mandoc compatible with groff-current,
where G. Branden Robinson committed the same change
on June 16 (groff commit 2278d6ed).

3 years agoadd a style message about overlong text lines,
Ingo Schwarze [Sun, 27 Jun 2021 17:57:54 +0000 (17:57 +0000)]
add a style message about overlong text lines,
trying very hard to avoid false positives,
not at all trying to catch as many cases as possible;

feature originally suggested by tb@,
OK tb@ kn@ jmc@

3 years agonew TODO entry: HTML formatting of .nf
Ingo Schwarze [Sun, 27 Jun 2021 17:29:02 +0000 (17:29 +0000)]
new TODO entry: HTML formatting of .nf

3 years agothree new TODO items
Ingo Schwarze [Sat, 26 Jun 2021 11:09:06 +0000 (11:09 +0000)]
three new TODO items

3 years agoIn -W style mode, check .Xr links along the full manpath because
Ingo Schwarze [Wed, 2 Jun 2021 18:28:19 +0000 (18:28 +0000)]
In -W style mode, check .Xr links along the full manpath because
that is more useful for validating manuals of non-base software.
Nothing changes in -W all mode: by default for -T lint, we still
assume we want to check base system conventions, including usually
not wanting to link to non-base manual pages.

The use case, a partial idea how to handle it, and a preliminary
patch was originally presented by kn@, then refined by me.
Final patch tested and OK'ed by kn@.

3 years agotbl(7) layout "n" specifier for HTML output
Ingo Schwarze [Wed, 2 Jun 2021 18:23:34 +0000 (18:23 +0000)]
tbl(7) layout "n" specifier for HTML output

3 years agoIn revision 1.157 of cgi.c, a meta viewport element was added to
Ingo Schwarze [Wed, 2 Jun 2021 17:51:38 +0000 (17:51 +0000)]
In revision 1.157 of cgi.c, a meta viewport element was added to
the HTML output.  Let `mandoc -Thtml' behave the same, making the
generated HTML a bit more pleasant to view on a mobile device.
Patch from anton@.

3 years agotest private use areas some more as they have proven fragile
Ingo Schwarze [Wed, 2 Jun 2021 17:39:00 +0000 (17:39 +0000)]
test private use areas some more as they have proven fragile

3 years agoCleanup:
Ingo Schwarze [Wed, 2 Jun 2021 16:38:29 +0000 (16:38 +0000)]
Cleanup:
1. Move invalid two-byte sequences after valid ones
and make their descriptions easier to understand.
2. Replace the wrong and confusing expression "middle byte"
with the correct term "start byte".
3. Add test lines for U+EFFFF and U+F0000.
4. Replace the unhelpful word "strange" with more descriptive terms.
Arguably, nothing about this (or maybe everything?) is strange.

3 years agoThe wcwidth(3) of Plane 15 and Plane 16 Private Use Characters
Ingo Schwarze [Wed, 2 Jun 2021 15:29:01 +0000 (15:29 +0000)]
The wcwidth(3) of Plane 15 and Plane 16 Private Use Characters
was changed from 0 to 1. Adjust the test results accordingly.
Issue reported by bluhm@

3 years agoWhen looking for column separators on tbl(7) data lines, properly skip
Ingo Schwarze [Tue, 18 May 2021 13:22:43 +0000 (13:22 +0000)]
When looking for column separators on tbl(7) data lines, properly skip
escape sequences; do not misinterpret bytes from the middle of escape
sequence names or arguments as column separators.
Bug reported and patch tested by Oliver dot Corff at email dot de.

3 years agoImplement the layout specification "a" (left justify with 1em indentation)
Ingo Schwarze [Sun, 16 May 2021 23:18:35 +0000 (23:18 +0000)]
Implement the layout specification "a" (left justify with 1em indentation)
in HTML output mode; before this patch, the indentation was missing.
Terminal output already supported the "a" specifier since 2010.
Issue reported and patch tested by Oliver dot Corff at email dot de.

3 years agotest font modifiers in the layout; related to tbl_html.c rev. 1.34
Ingo Schwarze [Sun, 16 May 2021 22:28:27 +0000 (22:28 +0000)]
test font modifiers in the layout; related to tbl_html.c rev. 1.34

3 years agoimplement the tbl(7) layout modifiers "b" (bold) and "i" (italic)
Ingo Schwarze [Sun, 16 May 2021 18:11:20 +0000 (18:11 +0000)]
implement the tbl(7) layout modifiers "b" (bold) and "i" (italic)
in HTML output mode, similar to tbl_term.c, function tbl_word();
issue reported by Oliver dot Corff at email dot de

3 years agoWhen looking for the last layout row used, we need to look at the layout
Ingo Schwarze [Sat, 15 May 2021 17:19:04 +0000 (17:19 +0000)]
When looking for the last layout row used, we need to look at the layout
row used for the previous data line containing data, not at the previous
data line outright, which might be a horizontal ruler.  If it is, do not
restart from the first layout row but still proceed to the next data row,
which may have been just read from T&.

Bug originally reported by Oliver dot Corff at email dot de
on groff at gnu dot org:
https://lists.gnu.org/archive/html/groff/2021-03/msg00003.html
and forwarded to me by bentley@.

Patch OK'ed by bentley@ back in April.

3 years agoAdd OpenBSD riscv64 architecture; patch from jsg@.
Ingo Schwarze [Thu, 13 May 2021 13:33:11 +0000 (13:33 +0000)]
Add OpenBSD riscv64 architecture; patch from jsg@.
While here, retire sgi and socppc.

3 years agoremove stray byte from broken escape sequence; diff from jmc@
Ingo Schwarze [Wed, 12 May 2021 17:13:01 +0000 (17:13 +0000)]
remove stray byte from broken escape sequence; diff from jmc@

3 years agotypo; diff from fcambus@
Ingo Schwarze [Wed, 12 May 2021 08:51:01 +0000 (08:51 +0000)]
typo; diff from fcambus@

3 years ago\s with arbitrary arg delimiters
Ingo Schwarze [Wed, 12 May 2021 08:34:46 +0000 (08:34 +0000)]
\s with arbitrary arg delimiters

3 years agoIn HTML output, correctly render .Bd -unfilled in proportionally-spaced
Ingo Schwarze [Tue, 30 Mar 2021 19:26:20 +0000 (19:26 +0000)]
In HTML output, correctly render .Bd -unfilled in proportionally-spaced
font, rather than with the monospace font appropriate for .Bd -literal.
This fixes a minibug reported by anton@.

Implemented by no longer relying on the typical browser default of
"pre { font-family: monospace }" but instead letting <pre> elements
inherit the font family from their parent, then adding an explicit CSS .Li
class only for those displays where the manual page author requested it
by using the -literal option on the .Bd macro.

3 years agoAppend .html suffix to temporary files enabling browsers to recognise it.
Ingo Schwarze [Tue, 30 Mar 2021 17:16:55 +0000 (17:16 +0000)]
Append .html suffix to temporary files enabling browsers to recognise it.

Occasionally one might read a manual page in a webbrowser, e.g.
"MANPAGER=firefox man -T html jq", however temporary files created for
pagers lack file extensions and most web browsers are unable to detect a
file's content without it.

Special case mandoc(1)'s HTML output format by appending the ".html" suffix
to file names such that browsers will actually render HTML as such instead
of showing it as plain text.

Idea and patch from kn@, with minor help from me.

3 years agodouble .TH in man(7)
Ingo Schwarze [Sun, 28 Mar 2021 18:45:43 +0000 (18:45 +0000)]
double .TH in man(7)

3 years agomore about .Bd -unfilled
Ingo Schwarze [Sun, 28 Mar 2021 15:33:34 +0000 (15:33 +0000)]
more about .Bd -unfilled

4 years agoRename syntax test of the \O escape sequence (suppress output groff
Ingo Schwarze [Mon, 21 Dec 2020 15:13:09 +0000 (15:13 +0000)]
Rename syntax test of the \O escape sequence (suppress output groff
extension; mandoc only implements syntax checking but ignores the
sequence) to please Bill Gates and didickman@: avoid path names that
only differ by case, like o.in vs. O.in.

4 years agoMANWIDTH
Ingo Schwarze [Fri, 13 Nov 2020 11:24:37 +0000 (11:24 +0000)]
MANWIDTH

4 years agoold groff_char(7) reported by kamil at NetBSD
Ingo Schwarze [Thu, 12 Nov 2020 20:46:28 +0000 (20:46 +0000)]
old groff_char(7) reported by kamil at NetBSD

4 years agoDelete a sentence pointing to "the Predefined Strings subsection
Ingo Schwarze [Sat, 31 Oct 2020 11:45:16 +0000 (11:45 +0000)]
Delete a sentence pointing to "the Predefined Strings subsection
of the roff(7) manual."  Such a subsection does not exist, and i
do not see why it should.  Predefined strings are an obsolete
feature of macro packages, not a feature of the roff language.

4 years agoFinally get rid of the "overflow: auto" property of ".Bl-tag > dd"
Ingo Schwarze [Fri, 30 Oct 2020 21:34:30 +0000 (21:34 +0000)]
Finally get rid of the "overflow: auto" property of ".Bl-tag > dd"
which has long been know to cause ugly and pointless scroll bars.

Matthew Martin <phy1729 at gmail dot com>
helpfully explained the following two points to me:
1. What we need to do here is establish a new block formatting
context such that the first line of the <dd> content moves down
rather than to the right if the preceding <dt> is wide.
2. A comprehensive list of methods
to establish block formatting context is available in:
https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context

In that list, i found that "column-count: 1" does the job.
It is part of CSS Multi-column Layout Level 1.
While that is still in Working Draft status according to
https://www.w3.org/Style/CSS/current-work ,
it is fully supported by all browsers according to
https://developer.mozilla.org/en-US/docs/Web/CSS/column-count ,
probably because it was already part of the second draft of this
standard almost 20 years ago: WD-css3-multicol-20010118.

4 years agoPromote section headers that can can be used unmodified as fragment
Ingo Schwarze [Fri, 30 Oct 2020 13:24:33 +0000 (13:24 +0000)]
Promote section headers that can can be used unmodified as fragment
identifiers from TAG_WEAK to TAG_STRONG,
such that for example ...#DESCRIPTION always works.
Suggested by Aman Verma on the discuss@ list.

4 years agoCorrect an embarrassing spelling mistake:
Ingo Schwarze [Wed, 28 Oct 2020 21:07:47 +0000 (21:07 +0000)]
Correct an embarrassing spelling mistake:
The last name of the author of groff is "Clark".

4 years agoImprove the HISTORY and AUTHORS sections, using information
Ingo Schwarze [Wed, 28 Oct 2020 15:31:37 +0000 (15:31 +0000)]
Improve the HISTORY and AUTHORS sections, using information
received from Douglas McIlroy in private mail:
https://manpages.bsd.lv/history/mcilroy_26_10_2020.txt

4 years agoerror message simplifications requested by deraadt@
Ingo Schwarze [Mon, 26 Oct 2020 13:30:46 +0000 (13:30 +0000)]
error message simplifications requested by deraadt@

4 years agoThe GNU tbl(1) program contained in the groff package internally
Ingo Schwarze [Sun, 25 Oct 2020 18:28:23 +0000 (18:28 +0000)]
The GNU tbl(1) program contained in the groff package internally
uses roff(7) tabulator settings to implement tables, and it used
to leak the changed tabulator settings from tables to the subsequent
roff(7) code.  In mandoc/tbl_term.c rev. 1.54 (June 17, 2017), code
was added to be bug-compatible with groff.

In commit d0e03cf6 (Oct 20, 2020), GNU tbl(1) changed behaviour
to save the tabulator settings before starting a table and restore
them afterwards.  Adjust mandoc for compatibility.

Since mandoc implements tables without using roff(7) tabulator
settings, saving and restoring tabulator settings is not needed in
mandoc.  Simply deleting the code that changed tabulator settings
by reverting tbl_term.c rev. 1.54 is sufficient in mandoc.
Also adjust the desired output of the regression tests
to match the new behaviour of both groff and mandoc.

4 years agoTreat \*[.T] in the same way as \*(.T rather than calling abort(3).
Ingo Schwarze [Sat, 24 Oct 2020 22:57:39 +0000 (22:57 +0000)]
Treat \*[.T] in the same way as \*(.T rather than calling abort(3).
Bug found because the groff-current manual pages started using the
variant form of this predefined string.

4 years agoIn HTML output, avoid printing a newline right after <pre>
Ingo Schwarze [Fri, 16 Oct 2020 17:22:43 +0000 (17:22 +0000)]
In HTML output, avoid printing a newline right after <pre>
and right before </pre> because that resulted in vertical
whitespace not requested by the manual page author.

Formatting bug reported by
Aman Verma <amanraoverma plus vim at gmail dot com> on discuss@.

4 years agoadd missing mention of Werner Lemberg,
Ingo Schwarze [Wed, 14 Oct 2020 14:22:54 +0000 (14:22 +0000)]
add missing mention of Werner Lemberg,
noticed by Werner himself on <groff at gnu dot org>;
while here, add missing .An macros

4 years agoadd example to apropos.1 to list all manuals in a given section;
Ingo Schwarze [Thu, 1 Oct 2020 22:50:00 +0000 (22:50 +0000)]
add example to apropos.1 to list all manuals in a given section;
patch from ians@

4 years agoElement next-line scopes can nest. Consequently, even when closing
Ingo Schwarze [Wed, 9 Sep 2020 17:01:10 +0000 (17:01 +0000)]
Element next-line scopes can nest.  Consequently, even when closing
one element next-line scope, the MAN_ELINE flag must not yet be
cleared if the parent macro is another element macro having next-line
scope, or an assertion failure is caused if all this is wrapped in
another macro that has block next-line scope, for example .TP.
Bug found in an afl run performed by Jan Schreiber <jes at posteo dot de>.

4 years agoDo not abuse assert(3) to react to absurd input; the purpose of assert(3)
Ingo Schwarze [Wed, 9 Sep 2020 13:45:05 +0000 (13:45 +0000)]
Do not abuse assert(3) to react to absurd input; the purpose of assert(3)
only is to catch internal inconsistencies in the program itself.
Issue found in an afl run performed by Jan Schreiber <jes at posteo dot de>.

Instead, just cut down unreasonably wide spacing requested by the document
to a narrower width.

4 years agoassertion found in jes@'es afl run: .TS .if n .ce
Ingo Schwarze [Mon, 7 Sep 2020 14:18:49 +0000 (14:18 +0000)]
assertion found in jes@'es afl run: .TS .if n .ce

4 years agoAfter .ti, there are many reasons why the offset may change, so setting
Ingo Schwarze [Sun, 6 Sep 2020 14:45:22 +0000 (14:45 +0000)]
After .ti, there are many reasons why the offset may change, so setting
it back later requires a guard against underflow, or subsequent assertions
may fail.
Issue found in an afl run performed by Jan Schreiber <jes at posteo dot de>.

4 years agoFix two issues with .po (page offset) formatting:
Ingo Schwarze [Thu, 3 Sep 2020 20:43:15 +0000 (20:43 +0000)]
Fix two issues with .po (page offset) formatting:
1. Truncate excessive offsets to a width reasonable in the context
of manual pages instead of printing excessively long lines
and sometimes causing assertion failures;
found in an afl run performed by Jan Schreiber <jes at posteo dot de>.
2. Remember both the requested and the applied page offset; otherwise,
subtracting an excessive width, then adding it again, would end up
with an incorrectly large offset.
While here, simplify the code by reverting the previous offset up front,
and also add some comments to make the general ideas easier to understand.

4 years agoIf .ti had an excessive argument, using it was attempted, in some
Ingo Schwarze [Thu, 3 Sep 2020 17:42:15 +0000 (17:42 +0000)]
If .ti had an excessive argument, using it was attempted, in some
cases resulting in an assertion failure.  Instead, truncate the
temporary indent to a width reasonable in a manual page.

I found the issue in an afl run
that was performed by Jan Schreiber <jes at posteo dot de>.

4 years agoDo not indent by SIZE_MAX/2 when .ce occurs inside explicit no-fill mode.
Ingo Schwarze [Wed, 2 Sep 2020 16:40:36 +0000 (16:40 +0000)]
Do not indent by SIZE_MAX/2 when .ce occurs inside explicit no-fill mode.
While here, drop two unused arguments from the function term_field();
the related work was already done by term_fill() before this commit.

I found the bug in an afl run
that was performed by Jan Schreiber <jes at posteo dot de>.

4 years agoIgnore unreasonably large spacing modifiers in tbl layouts.
Ingo Schwarze [Tue, 1 Sep 2020 18:25:27 +0000 (18:25 +0000)]
Ignore unreasonably large spacing modifiers in tbl layouts.

Jan Schreiber <jes at posteo dot de> ran afl on mandoc and it turned
out mandoc tried to use spacing modifiers so large that they would
trigger assertion failures in term_ascii.c, function locale_advance().

4 years agomore info from John Gardner about ASCII control chars in roff(7) input
Ingo Schwarze [Tue, 1 Sep 2020 18:10:28 +0000 (18:10 +0000)]
more info from John Gardner about ASCII control chars in roff(7) input

4 years agoRemove a lie reported by Jamie Landeg-Jones <jamie at catflap dot org>:
Ingo Schwarze [Thu, 27 Aug 2020 15:55:34 +0000 (15:55 +0000)]
Remove a lie reported by Jamie Landeg-Jones <jamie at catflap dot org>:
The times when -T man may have expanded .so requests are long gone,
nor would such a feature be useful.  Use soelim(1) if you need that.

4 years agoFix a regression caused by the insertion of two new tokens,
Ingo Schwarze [Thu, 27 Aug 2020 14:59:47 +0000 (14:59 +0000)]
Fix a regression caused by the insertion of two new tokens,
which unintentionally made the -O tag= argument mandatory,
breaking commands like "man -akO tag Ic=ulimit".
Noticed while answering questions from Ian Ropers.

4 years agoMake it more explicit that the statement "-O tag does not work with less(1)"
Ingo Schwarze [Thu, 27 Aug 2020 14:28:11 +0000 (14:28 +0000)]
Make it more explicit that the statement "-O tag does not work with less(1)"
only applies to -T html output mode, and why.  Of course, -O tag works
just fine with less(1) in the -T ascii and -T utf8 output modes.
Potential for confusion pointed out by Ian Ropers.

4 years agoAvoid artifacts in the most common case of closing conditional blocks
Ingo Schwarze [Thu, 27 Aug 2020 12:59:02 +0000 (12:59 +0000)]
Avoid artifacts in the most common case of closing conditional blocks
when no arguments follow the closing brace, \}.
For example, the line "'br\}" contained in the pod2man(1) preamble
would throw a bogus "escaped character not allowed in a name" error.
This issue was originally reported by Chris Bennett on ports@,
and afresh1@ noticed it came from the pod2man(1) preamble.

4 years agoadd a forgotten "#if HAVE_PLEDGE";
Ingo Schwarze [Fri, 7 Aug 2020 20:56:55 +0000 (20:56 +0000)]
add a forgotten "#if HAVE_PLEDGE";
patch sent in by <alexander dot gromnitsky at gmail dot com>
who found the problem the hard way on Fedora 32

4 years agoPut the code handling \} into a new function roff_cond_checkend()
Ingo Schwarze [Mon, 3 Aug 2020 11:02:57 +0000 (11:02 +0000)]
Put the code handling \} into a new function roff_cond_checkend()
and call that function not only from both places where copies
existed - when processing text lines and when processing request/macro
lines in conditional block scope - but also when closing a macro
definition request, such that this construction works:

.if n \{.de macroname
macro content
.. \} ignored arguments
.macroname

This fixes a bug reported by John Gardner <gardnerjohng at gmail dot com>.

While here, avoid a confusing decrement of the line scope counter
in roffnode_cleanscope() for conditional blocks that do not have
line scope in the first place (no functional change for this part).
Also improve validation of an internal invariant in roff_cblock()
and polish some comments.

4 years agotrivial sync with OpenBSD
Ingo Schwarze [Thu, 30 Jul 2020 21:42:27 +0000 (21:42 +0000)]
trivial sync with OpenBSD
in parts of these files that are not used by -portable;
consequently, no functional change

4 years agotrivial adjustment of the desired test results
Ingo Schwarze [Tue, 21 Jul 2020 15:17:21 +0000 (15:17 +0000)]
trivial adjustment of the desired test results
after getting rid of the "copyless" crutch

4 years agoadjust test framework to not require a tty
Ingo Schwarze [Tue, 21 Jul 2020 15:14:20 +0000 (15:14 +0000)]
adjust test framework to not require a tty

4 years agoundocumented options -O outfilename and -O tagfilename
Ingo Schwarze [Tue, 21 Jul 2020 15:10:01 +0000 (15:10 +0000)]
undocumented options -O outfilename and -O tagfilename
to support regression testing without a tty;
no user visible change intended

4 years agoSwitch the default pager from "more -s" to "less".
Ingo Schwarze [Mon, 20 Jul 2020 16:57:29 +0000 (16:57 +0000)]
Switch the default pager from "more -s" to "less".

POSIX explicitly allows using a different default pager if that is
documented.  Nowadays, the pager provided in most operating systems
is less(1).  Our man(1) implementation uses less(1) features that
traditional more(1) did not provide, in particular tagging.  Besides,
as noted by deraadt@, the user interface of less(1) is slightly
more refined and preferable over the user inferface of more(1).
This switch was originally suggested by Ian Ropers.

In ./configure, test whether less(1) is available.  If not, fall
back to more(1).  In ./configure.local, support overriding the
automatic test by setting BINM_PAGER.

As explained by jmc@ and deraadt@, the -s flag was added a very
long time ago when an antique version of groff(1) had an annoying
bug in terminal output that would randomly display blank lines in
the middle of pages.  Clearly, -s has no longer been needed for
many years, so drop it from the default pager invocation.

OK deraadt@ jmc@ martijn@ job@ on the OpenBSD version of this patch.

4 years agoSupport the "powerpc64" architecture name.
Ingo Schwarze [Mon, 29 Jun 2020 19:22:09 +0000 (19:22 +0000)]
Support the "powerpc64" architecture name.
The first file using it in .Dt was just committed by kettenis@.

4 years agoBriefly mention groff_mdoc(7) below SEE ALSO. While both authoritative
Ingo Schwarze [Thu, 25 Jun 2020 20:45:09 +0000 (20:45 +0000)]
Briefly mention groff_mdoc(7) below SEE ALSO.  While both authoritative
manual pages document the same content, comparing can occasionally help
in cases of doubt, and some people may prefer one style, some the other.
While here, modernize a few .Lks from http:// to https://.
OK jmc@

4 years agomore details about ASCII control characters
Ingo Schwarze [Wed, 24 Jun 2020 12:09:29 +0000 (12:09 +0000)]
more details about ASCII control characters

4 years agoProvide a real feature test for __attribute__().
Ingo Schwarze [Mon, 22 Jun 2020 20:00:38 +0000 (20:00 +0000)]
Provide a real feature test for __attribute__().
Looking at version numbers like __GNUC__ is always a bad idea.
Believe it or not, this even makes ./configure shorter by one line.

4 years agoBecause mandoc_aux.h and mandoc.h use __attribute__, all files that
Ingo Schwarze [Mon, 22 Jun 2020 19:20:40 +0000 (19:20 +0000)]
Because mandoc_aux.h and mandoc.h use __attribute__, all files that
include mandoc_aux.h or mandoc.h need to include config.h, too.
It is suspected that for example IRIX needs this, or it is likely
to throw errors in these files because the system compiler doesn't
understand __attribute__.
Issue reported by Kazuo Kuroi <kazuo at irixnet dot org>.

4 years agoJohn Gardner: handling of ASCII control characters during input
Ingo Schwarze [Mon, 22 Jun 2020 18:00:30 +0000 (18:00 +0000)]
John Gardner: handling of ASCII control characters during input

4 years agoManually tag the section option.
Ingo Schwarze [Wed, 17 Jun 2020 19:42:32 +0000 (19:42 +0000)]
Manually tag the section option.
Automatic tagging does not work because the [-s] flag is optional.
Patch from Martin Vahlensieck.

4 years agoSync stringlist implementation with NetBSD.
Ingo Schwarze [Mon, 15 Jun 2020 21:48:09 +0000 (21:48 +0000)]
Sync stringlist implementation with NetBSD.
Various improvements of security, functionality, and style.

4 years agosync with OpenBSD, no functional change intended
Ingo Schwarze [Mon, 15 Jun 2020 20:49:57 +0000 (20:49 +0000)]
sync with OpenBSD, no functional change intended

4 years agoupdate millert@'s email address
Ingo Schwarze [Mon, 15 Jun 2020 20:19:39 +0000 (20:19 +0000)]
update millert@'s email address

4 years agodocument -T html -O tag as implemented in main.c rev. 1.350
Ingo Schwarze [Mon, 15 Jun 2020 18:05:18 +0000 (18:05 +0000)]
document -T html -O tag as implemented in main.c rev. 1.350

4 years agoSupport -T html -O tag by passing a file:// URI to the pager.
Ingo Schwarze [Mon, 15 Jun 2020 17:25:42 +0000 (17:25 +0000)]
Support -T html -O tag by passing a file:// URI to the pager.
Feature suggested by and implementation based on a patch
from Abel Romero Perez <romeroperezabel at gmail dot com>.

4 years agoadd missing compat_stringlist.o to ALL_COBJS, useful for make clean
Ingo Schwarze [Mon, 15 Jun 2020 16:58:24 +0000 (16:58 +0000)]
add missing compat_stringlist.o to ALL_COBJS, useful for make clean

4 years agoOnly compile compat_*.c implementations that are actually needed.
Ingo Schwarze [Mon, 15 Jun 2020 01:37:14 +0000 (01:37 +0000)]
Only compile compat_*.c implementations that are actually needed.
That's cleaner and it is supposed to fix compiler warnings with gcc 10
reported by Wynn Wolf Arbor <wolf at oriole dot systems> on discuss@.

4 years agoMake the ./configure script simpler, more robust, and 23 lines shorter:
Ingo Schwarze [Sun, 14 Jun 2020 23:40:31 +0000 (23:40 +0000)]
Make the ./configure script simpler, more robust, and 23 lines shorter:
* three rather than four arguments for singletest()
* let runtest() support testing two variants of compiler flags
* always report a failed test, even when another test follows
* run all tests before detecting fatal conditions
* rename HAVE_CMSG_XPG42 to NEED_XPG4_2 for consistency
* consistently use braces for shell variable interpolation
* drop archaic "X${" syntax and unusual "==" in string comparisons

4 years agomerge rev. 1.58 from OpenBSD (deraadt@):
Ingo Schwarze [Sun, 14 Jun 2020 23:08:35 +0000 (23:08 +0000)]
merge rev. 1.58 from OpenBSD (deraadt@):
recallocarray() the string buffer, to avoid leaving such contents
around in the address space.  Don't bother doing so for the buffer
which contains aslr'd pointers...
OK millert@

4 years agoGive the fts_compar struct member a real prototype.
Ingo Schwarze [Sun, 14 Jun 2020 22:49:36 +0000 (22:49 +0000)]
Give the fts_compar struct member a real prototype.
This adds clarity and avoids compiler warnings.

4 years agoFix a regression in rev. 1.319 (2019/03/03):
Ingo Schwarze [Sun, 14 Jun 2020 16:24:18 +0000 (16:24 +0000)]
Fix a regression in rev. 1.319 (2019/03/03):
Pass the right object to html_reset() or it will crash
when rendering more than one manual page to HTML in a row.
Bug reported by Abel Romero Perez <romeroperezabel at gmail dot com>.
Patch from otto@.

4 years agoWhile we do not recommend the idiom ".Fl Fl long" for long options
Ingo Schwarze [Sun, 26 Apr 2020 21:41:07 +0000 (21:41 +0000)]
While we do not recommend the idiom ".Fl Fl long" for long options
because it is an abuse of semantic macros for device-specific
presentational effects, this idiom is so widespread that it makes
sense to convert it to the recommended ".Fl \-long" during the
validation phase.  For example, this improves HTML formatting
in pages where authors have used the dubious .Fl Fl.

Feature suggested by Steffen Nurpmeso <steffen at sdaoden dot eu>
on freebsd-hackers.

4 years agoResurrect the documentation of the print_otag() 's' attribute specifier,
Ingo Schwarze [Fri, 24 Apr 2020 13:13:06 +0000 (13:13 +0000)]
Resurrect the documentation of the print_otag() 's' attribute specifier,
reverting a minor part of rev. 1.21.  Contrary to what i thought, that
attribute *is* still supported for a small number of unusual cases.

4 years agoprovide a STYLE message when mandoc knows the file name and the extension
Ingo Schwarze [Fri, 24 Apr 2020 12:02:33 +0000 (12:02 +0000)]
provide a STYLE message when mandoc knows the file name and the extension
disagrees with the section number given in the .Dt or .TH macro;
feature suggested and patch tested by jmc@

4 years agoIn fragment identifiers, use ~%d for ordinal suffixes,
Ingo Schwarze [Mon, 20 Apr 2020 13:07:24 +0000 (13:07 +0000)]
In fragment identifiers, use ~%d for ordinal suffixes,
and reserve the character '~' for that purpose.

Bug found by validator.w3.org in openssl(1), which contains both a
tag "tls1_2" and a second instance of a tag "tls1", which also resulted
in "tls1_2", causing a clash.  Now, the second instance of "tls1" is
rendered as "tls1~2" instead, employing the newly reserved '~'.

4 years agoWhen .Bd, .D1, or .Dl is tagged, attach the permalink
Ingo Schwarze [Sun, 19 Apr 2020 16:36:16 +0000 (16:36 +0000)]
When .Bd, .D1, or .Dl is tagged, attach the permalink
to the first few letters, similar to what was earlier done for .Pp.

4 years agoCorrectly handle non-unique tags even when NODE_ID and NODE_HREF fall
Ingo Schwarze [Sun, 19 Apr 2020 15:16:56 +0000 (15:16 +0000)]
Correctly handle non-unique tags even when NODE_ID and NODE_HREF fall
apart, NODE_ID occurring earlier than NODE_HREF.

4 years agoMajor update:
Ingo Schwarze [Sat, 18 Apr 2020 20:44:09 +0000 (20:44 +0000)]
Major update:
Complete includes, add several functions, no more <?xml?>,
no more style attributes, NODE_HREF flag, mention roff_html.c.

4 years agoWhen a .Tg is attached to a paragraph, attach the permalink
Ingo Schwarze [Sat, 18 Apr 2020 20:40:10 +0000 (20:40 +0000)]
When a .Tg is attached to a paragraph, attach the permalink
to the first word, or the first few words if they are short.

4 years agoUse a separate node->tag attribute rather than abusing the node->string
Ingo Schwarze [Wed, 8 Apr 2020 11:56:03 +0000 (11:56 +0000)]
Use a separate node->tag attribute rather than abusing the node->string
attribute for the purpose.  No functional change intended.
The purpose is to make it possible to later attach tags to text nodes.

4 years agoSeparate the place to put the <a href> permalink (now marked
Ingo Schwarze [Tue, 7 Apr 2020 22:56:02 +0000 (22:56 +0000)]
Separate the place to put the <a href> permalink (now marked
with NODE_HREF) from the target element of the link (still marked
with NODE_ID).  In many cases, use this to move the target to the
beginning of the paragraph, such that readers don't get dropped
into the middle of a sentence.

4 years agoSupport manual tagging of .Pp, .Bd, .D1, .Dl, .Bl, and .It.
Ingo Schwarze [Mon, 6 Apr 2020 10:16:17 +0000 (10:16 +0000)]
Support manual tagging of .Pp, .Bd, .D1, .Dl, .Bl, and .It.
In HTML output, improve the logic for writing inside permalinks:
skip them when there is no child content or when there is a risk
that the children might contain flow content.