]> git.cameronkatri.com Git - mandoc.git/log
mandoc.git
3 years agomerge OpenBSD commit by jmc@:
Ingo Schwarze [Mon, 6 Dec 2021 16:26:08 +0000 (16:26 +0000)]
merge OpenBSD commit by jmc@:
sytle -> style; adapted from changes by SAITOH masanobu (NetBSD)

3 years agoMake sure that the configuration file is always read, even when
Ingo Schwarze [Fri, 5 Nov 2021 18:03:08 +0000 (18:03 +0000)]
Make sure that the configuration file is always read, even when
running with the -M option or with a MANPATH environment variable
that has neither a leading or trailing ":" nor any "::".  If -M or
MANPATH override the configuration file rather than adding to it,
just ignore any "manpath" directives while processing the configuration
file.

This fixes a bug reported by Jan Stary <hans at stare dot cz>
on misc@.

3 years agoCommit and commit message by deraadt@:
Ingo Schwarze [Fri, 5 Nov 2021 17:04:10 +0000 (17:04 +0000)]
Commit and commit message by deraadt@:
For open/openat, if the flags parameter does not contain O_CREAT, the
3rd (variadic) mode_t parameter is irrelevant.  Many developers in the past
have passed mode_t (0, 044, 0644, or such), which might lead future people
to copy this broken idiom, and perhaps even believe this parameter has some
meaning or implication or application. Delete them all.
This comes out of a conversation where tb@ noticed that a strange (but
intentional) pledge behaviour is to always knock-out high-bits from
mode_t on a number of system calls as a safety factor, and his bewilderment
that this appeared to be happening against valid modes (at least visually),
but no sorry, they are all irrelevant junk.  They could all be 0xdeafbeef.
ok millert

3 years agosimplify a few accesses to fields of structs, using auxiliary pointer
Ingo Schwarze [Sun, 17 Oct 2021 21:05:54 +0000 (21:05 +0000)]
simplify a few accesses to fields of structs, using auxiliary pointer
variables that are already present (and used nearby) in the code;
no functional change

3 years agoSimplify the code building lists of spans, no output change intended.
Ingo Schwarze [Sun, 17 Oct 2021 20:48:28 +0000 (20:48 +0000)]
Simplify the code building lists of spans, no output change intended.

A comment in the code claimed that the list of spans would be sorted,
but the sorting did not actually work.  The layout "LSSS,LLSL" resulted
in the list "0-3, 1-2", whereas the layout "LLSL,LSSS" resulted
in the list "1-2, 0-3".  Since sorting serves no purpose, just leave
the list unsorted.

3 years agobetter error message if mandocd is not found
Ingo Schwarze [Fri, 15 Oct 2021 15:04:02 +0000 (15:04 +0000)]
better error message if mandocd is not found

3 years agoClean up memory handling in spawn_pager(), free(3)ing everything
Ingo Schwarze [Mon, 4 Oct 2021 21:29:17 +0000 (21:29 +0000)]
Clean up memory handling in spawn_pager(), free(3)ing everything
that is malloc(3)ed.  In addition to being less confusing, the new
code is also shorter by two lines.

3 years agoIn man(1) mode, properly clean up the resn[] result array
Ingo Schwarze [Mon, 4 Oct 2021 20:24:06 +0000 (20:24 +0000)]
In man(1) mode, properly clean up the resn[] result array
after processing each name given on the command line.

Failure to do so resulted in a memory leak of about 50 kilobytes
per name given on the command line.  Since man(1) uses a few
Megabytes of memory anyway and people rarely give hundreds of names
on the command line, this leak did not cause practical problems,
but cleaning up properly is better in any case.

3 years agoProvide a cleanup function for the term_tab module, freeing memory
Ingo Schwarze [Mon, 4 Oct 2021 18:56:31 +0000 (18:56 +0000)]
Provide a cleanup function for the term_tab module, freeing memory
and resetting the internal state to the initial state.
Call this function from the proper place in term_free().

With the way the module is currently used, this does not imply any
functional change, but doing proper cleanup is more robust, makes
it easier during code review to understand what is going on, and
makes it explicit that there is no memory leak.

3 years agostore the operating system name obtained from uname(3) in the adequate
Ingo Schwarze [Mon, 4 Oct 2021 14:19:14 +0000 (14:19 +0000)]
store the operating system name obtained from uname(3) in the adequate
struct together with similar state date rather than in a function-scope
static variable, such that it can be free(3)d in roff_man_free();
no functional change

3 years agoDo not leak 64 bytes of heap memory every time a manual page calls
Ingo Schwarze [Mon, 4 Oct 2021 10:12:27 +0000 (10:12 +0000)]
Do not leak 64 bytes of heap memory every time a manual page calls
a user-defined macro.  Calls of standard mdoc(7) and man(7) macros
were unaffected, so the effect on OpenBSD manual pages was small,
about 80 Kilobytes grand total for a full run of "makewhatis
/usr/share/man".

Argument expansion contexts for user-defined macros are stored on
a stack that grows as needed if calls of user-defined macros are
nested or recursive.  Individual stack entries contain dynamically
allocated arrays of pointers to arguments; these argument arrays
also grow as needed if user-defined macros take more than eight
arguments.  The mistake was that argument arrays of already
initialized expansion contexts were leaked rather than reused on
subsequent macro calls.

I found this issue in a systematic hunt for memory leaks after
Michael <Stapelberg at Debian> reported memory exhaustion problems
on the production server manpages.debian.org.  This sub-Megabyte
leak is not the cause of Michael's trouble, though, where Gigabytes
of memory are being wasted.  We are still investigating whether the
original problem may be related to his supervisor process, which is
written in Go, rather than to mandoc.

3 years agotagging issues from weerd@ regarding hyphens
Ingo Schwarze [Fri, 1 Oct 2021 08:58:37 +0000 (08:58 +0000)]
tagging issues from weerd@ regarding hyphens

3 years agoRevert part of the previous diff to fix a regression (another endless loop)
Ingo Schwarze [Tue, 28 Sep 2021 17:06:59 +0000 (17:06 +0000)]
Revert part of the previous diff to fix a regression (another endless loop)
reported by Michael <Stapelberg at Debian> in the Linux md(4) manual.

The reason the colwidth[] array is needed is not that it stores widths
different from those in tbl->cols[].width, but that only part of the
columns participate in the comparisons, i.e. only those intersecting
at least one span the still requires width distribution.

3 years agotwo typos; patch from Raf Czlonka <rczlonka at gmail dot com>
Ingo Schwarze [Tue, 28 Sep 2021 15:41:41 +0000 (15:41 +0000)]
two typos; patch from Raf Czlonka <rczlonka at gmail dot com>

3 years agoSevan Janiyan resigned from the NetBSD project and pkgsrc in 2020.
Ingo Schwarze [Sat, 25 Sep 2021 15:42:08 +0000 (15:42 +0000)]
Sevan Janiyan resigned from the NetBSD project and pkgsrc in 2020.
He is now busy with the early stages of development of Viewpoint Linux.

3 years agorelease 1.14.6 VERSION_1_14_6
Ingo Schwarze [Thu, 23 Sep 2021 18:03:00 +0000 (18:03 +0000)]
release 1.14.6

3 years agocredits for release testing
Ingo Schwarze [Thu, 23 Sep 2021 17:12:00 +0000 (17:12 +0000)]
credits for release testing

3 years agohandle man3c/fopen.3c in main.c/fs_*()
Ingo Schwarze [Tue, 21 Sep 2021 17:58:13 +0000 (17:58 +0000)]
handle man3c/fopen.3c in main.c/fs_*()

3 years agoPOSIX make(1) does not support prerequisites on suffix rules.
Ingo Schwarze [Tue, 21 Sep 2021 11:04:40 +0000 (11:04 +0000)]
POSIX make(1) does not support prerequisites on suffix rules.
For HTML generation, the "mandoc" prerequisite isn't needed anyway
because ${WWW_MANS} already explicitly depends on mandoc.
Issue reported by Sevan Janiyan and Leah Neukirchen.

This is not critical for release because it is only used for
a maintainer target.  While here, i also fixed the associated
shell command to use the freshly built mandoc binary rather
than whatever may be in the $PATH.

3 years agomore details about Mac OS X; information from Sevan Janiyan
Ingo Schwarze [Mon, 20 Sep 2021 13:25:42 +0000 (13:25 +0000)]
more details about Mac OS X; information from Sevan Janiyan

3 years agomake the path to ar(1) configurable, needed by NixOS;
Ingo Schwarze [Mon, 20 Sep 2021 10:19:51 +0000 (10:19 +0000)]
make the path to ar(1) configurable, needed by NixOS;
suggested by Lukas Epple <sternenseemann at systemli dot org>

3 years agoCreate the link from ./man to ./mandoc in the "all" target rather than
Ingo Schwarze [Mon, 20 Sep 2021 10:14:34 +0000 (10:14 +0000)]
Create the link from ./man to ./mandoc in the "all" target rather than
in the "regress" target.  That makes manual "cd regress && ./regress.pl"
a bit less fragile.
The idea came up in a conversation with Thomas Klausner <wiz at NetBSD>.

3 years agoisspace(3) requires an unsigned argument;
Ingo Schwarze [Sun, 19 Sep 2021 18:14:24 +0000 (18:14 +0000)]
isspace(3) requires an unsigned argument;
bug reported by Thomas Klausner <wiz at NetBSD>

3 years agoclarify the meaning of a complicated mixed signed/unsigned expression;
Ingo Schwarze [Sun, 19 Sep 2021 18:07:09 +0000 (18:07 +0000)]
clarify the meaning of a complicated mixed signed/unsigned expression;
Thomas Klausner <wiz at NetBSD> reported a compiler warning

3 years agodo not ship with an old OpenBSD version number
Ingo Schwarze [Sun, 19 Sep 2021 16:19:09 +0000 (16:19 +0000)]
do not ship with an old OpenBSD version number

3 years agosome more portability improvements
Ingo Schwarze [Sun, 19 Sep 2021 15:21:13 +0000 (15:21 +0000)]
some more portability improvements

3 years agoTest availability of mkstemps(3) and provide a fallback implementation
Ingo Schwarze [Sun, 19 Sep 2021 15:05:39 +0000 (15:05 +0000)]
Test availability of mkstemps(3) and provide a fallback implementation
in case it is missing; needed for SUN Solaris 10.

3 years agoTwo minor improvements:
Ingo Schwarze [Sun, 19 Sep 2021 15:02:55 +0000 (15:02 +0000)]
Two minor improvements:
1. If mktemp(3) fails, do not overwrite the errno because
all errors mktemp(3) might return are also valid for mkdtemp(3).
2. If mkdir(2) fails, always put back the Xes, even if
the error is fatal and the function is about to return NULL.

3 years agodo not use the echo(1) -n option, it is not portable;
Ingo Schwarze [Sun, 19 Sep 2021 12:28:04 +0000 (12:28 +0000)]
do not use the echo(1) -n option, it is not portable;
issue found on SUN Solaris 10

3 years agodo not use the sed(1) -i option, it is not portable;
Ingo Schwarze [Sun, 19 Sep 2021 12:15:34 +0000 (12:15 +0000)]
do not use the sed(1) -i option, it is not portable;
issue found on Oracle Solaris 11

3 years agobump VERSION
Ingo Schwarze [Sun, 19 Sep 2021 11:03:40 +0000 (11:03 +0000)]
bump VERSION

3 years agotiny update
Ingo Schwarze [Sun, 19 Sep 2021 11:02:56 +0000 (11:02 +0000)]
tiny update

3 years agoupdate some Copyright years
Ingo Schwarze [Sun, 19 Sep 2021 11:02:09 +0000 (11:02 +0000)]
update some Copyright years

3 years agoupdate Makefile.depend
Ingo Schwarze [Sat, 18 Sep 2021 15:38:43 +0000 (15:38 +0000)]
update Makefile.depend

3 years agocorrect whitespace in the title of the Lesk paper to match the original;
Ingo Schwarze [Sat, 18 Sep 2021 12:34:27 +0000 (12:34 +0000)]
correct whitespace in the title of the Lesk paper to match the original;
patch from jsg@

3 years agoreplace "Ar arg Ar arg" with "Ar arg arg"; patch from jmc@
Ingo Schwarze [Sat, 18 Sep 2021 12:23:06 +0000 (12:23 +0000)]
replace "Ar arg Ar arg" with "Ar arg arg"; patch from jmc@

3 years agodocument mandoc_recallocarray(3);
Ingo Schwarze [Fri, 17 Sep 2021 18:50:21 +0000 (18:50 +0000)]
document mandoc_recallocarray(3);
patch found in my tree, apparently forgotten years ago

3 years agoupdate
Ingo Schwarze [Fri, 17 Sep 2021 18:27:39 +0000 (18:27 +0000)]
update

3 years agoQuirk-compatibility with GNU tbl(1):
Ingo Schwarze [Fri, 10 Sep 2021 13:24:38 +0000 (13:24 +0000)]
Quirk-compatibility with GNU tbl(1):
With the "nospaces" option, skip space characters before and after "T{",
in addition to skipping those at the beginning and end of data cells.

Minor issue reported by <Oliver dot Corff at email dot de>.

3 years agoadd two newly reported bugs,
Ingo Schwarze [Fri, 10 Sep 2021 12:48:19 +0000 (12:48 +0000)]
add two newly reported bugs,
and remove two feature requests that were recently implemented

3 years agoIn a tbl(7) having the "nospaces" option, skip space characters
Ingo Schwarze [Fri, 10 Sep 2021 12:07:21 +0000 (12:07 +0000)]
In a tbl(7) having the "nospaces" option, skip space characters
not only at the end of data cells, but also after "T}",
aligning the behaviour of the parser with GNU tbl(1).

Issue reported by <Oliver dot Corff at email dot de>.

3 years agoIn HTML output, in cells with an "n" (number) layout, pad numbers
Ingo Schwarze [Thu, 9 Sep 2021 16:52:52 +0000 (16:52 +0000)]
In HTML output, in cells with an "n" (number) layout, pad numbers
on the right side with UTF-8 punctuation and figure spaces such
that numbers in different tbl(7) rows align at the decimal point.

The exact HTML output format was suggested
by <Oliver dot Corff at email dot de>;
the implementation in C is mine.

3 years agoIf the layout or data of an individual cell in a tbl(7) contains
Ingo Schwarze [Thu, 9 Sep 2021 14:47:24 +0000 (14:47 +0000)]
If the layout or data of an individual cell in a tbl(7) contains
only "_", "-", or "=", requesting a horizontal line to be drawn
across the middle of the cell, print <hr/> in that cell in HTML
output.

That is arguably slightly ugly because HTML 5 regards <hr/> as
semantic markup, meaning "thematic break".  If somebody knowns
a better way to render a horizontal line across the middle of a
table cell with pure HTML and CSS, and without implying a specific
meaning, please tell me.

Missing feature reported by <Oliver dot Corff at email dot de>.

3 years agoFix an infinite loop that could occur during some cases of horizontally
Ingo Schwarze [Tue, 7 Sep 2021 17:07:58 +0000 (17:07 +0000)]
Fix an infinite loop that could occur during some cases of horizontally
overlapping horizontal spans.  One span would calculate a desired
target width and start preparations for applying it to some columns,
then the other span would overwrite the target width with a different
value and also start preparations for applying that one to some
columns, which could sometimes confuse the code doing the final
distribution to the point of not doing anything at all before
entering the next iteration.

Fix this by making sure the distribution is done step by step, doing
one step at a time rather than allowing multiple steps to conflict.
Specifically, always do the smallest useful step first.  This change
also simplifies the code.  For example, the local "colwidth" array
is no longer needed.

Note that the algorithm still differs from the one implemented in
GNU tbl(1), which appears to not even try to harmonize column widths
but seems to simply distribute the same amount to all constituent
columns, no matter whether their intrinsic width is narrow or wide.
Adopting a GNU-compatible algorithm might allow further simplifiction
in addition to yielding even more similar output, but i do not want
to implement any major changes of the algorithm at this time.

The infinite loop was reported by <Oliver dot Corff at email dot de>.

3 years agoCorrectly calculate required column widths for tables containing
Ingo Schwarze [Tue, 7 Sep 2021 14:56:35 +0000 (14:56 +0000)]
Correctly calculate required column widths for tables containing
cells that horizontally span columns which contains "n" (number)
formatted cells on other rows.  This requires updating total column
widths from "n" formatted cells before starting width distribution
from the spanning cells to their constituent columns.

3 years agowe already parse the GNU tbl(7) "nospaces" option,
Ingo Schwarze [Tue, 7 Sep 2021 11:48:19 +0000 (11:48 +0000)]
we already parse the GNU tbl(7) "nospaces" option,
so let it have the intended effect, too

3 years agodo not crash when a tbl(7) cell uses roman font
Ingo Schwarze [Tue, 7 Sep 2021 10:59:18 +0000 (10:59 +0000)]
do not crash when a tbl(7) cell uses roman font

3 years agoTODO: let makewhatis(8) follow symbolic links to dirs
Ingo Schwarze [Mon, 6 Sep 2021 14:32:07 +0000 (14:32 +0000)]
TODO: let makewhatis(8) follow symbolic links to dirs

3 years agoduring prioritization for man(1), correctly extract the section name
Ingo Schwarze [Sat, 4 Sep 2021 22:38:46 +0000 (22:38 +0000)]
during prioritization for man(1), correctly extract the section name
from the file name extension of gzipped manual page files; bug found
on Alpine Linux by Soeren Tempel <soeren at soeren hyphen tempel dot net>,
who also tested this patch

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@