summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* fix a NULL pointer access on empty tbl(7) data cellsIngo Schwarze2019-03-181-2/+4
| | | | that bentley@ found in syncthing-bep(7)
* The header file "html.h" uses enum roff_tok,Ingo Schwarze2019-03-174-43/+64
| | | | | | so "roff.h" must be included before it. Diff from bcallah@ tweaked by me; he found the bug by compiling with pcc.
* When drawing a horizontal line in tbl(7) UTF-8 output, it is notIngo Schwarze2019-03-161-12/+17
| | | | | | | | | | | | | sufficient to look at two data rows, but up to three are needed: the one above to identify vertical lines branching off upward, the row itself (in case the line is in a data row rather than a layout line) to figure out the horizontal line style, and the row below to identify vertical lines branching off downward. As an example, bentley@ reported from the mpv(1) manual page that in a tbl(7) having a vertical line in the middle and a horizontal line in the bottom data row, the vertical line extended below the bottom horizontal line.
* Contrary to what the NetBSD attribute(3) manual page suggests,Ingo Schwarze2019-03-132-4/+4
| | | | | | | | | | | | | using __dead instead of __attribute__((__noreturn__)) actually hinders portability rather than helping it. Given that mandoc already uses __attribute__ in several files and that in the portable version, ./configure already contains rudimentary support for ignoring it on platforms that do not support it, use __attribute__ directly. This is expected to fix build failures that Stephen Gregoratto <dev at sgregoratto dot me> reported from Arch and Debian Linux.
* mark check_abort() and post_abort() as __dead;Ingo Schwarze2019-03-112-4/+4
| | | | based on a patch by Christos@ Zoulas at NetBSD
* release 1.14.5VERSION.1.14.5Ingo Schwarze2019-03-101-4/+9
|
* Automatically detect whether diff(1) supports the -a option.Ingo Schwarze2019-03-101-0/+1
| | | | | Useful on illumos and on Oracle Solaris, where it doesn't. Patch written based on a report from Sevan Janiyan.
* Mention mandoc.db(5), makewhatis(8), and weekly(8).Ingo Schwarze2019-03-091-0/+12
| | | | Omission noticed by espie@ long ago, and wording tweaked by jmc@.
* new dist-install maintainer targetIngo Schwarze2019-03-061-0/+4
|
* while $() is more modern than ``, it does not work with theIngo Schwarze2019-03-061-1/+1
| | | | default /bin/sh on Solaris 10, so use the classical form
* mention Solaris BUGS in regress.pl(1)Ingo Schwarze2019-03-062-2/+21
|
* this file needs to #include "config.h" because it calls getprogname();Ingo Schwarze2019-03-061-0/+2
| | | | found while testing on Debian jessie
* drop redundant '0' flag from "%02.2X" format string;Ingo Schwarze2019-03-061-1/+1
| | | | found by a compiler warning from gcc 4.9.2 on Linux
* work towards 1.14.5, mostly updating WWW_INCSIngo Schwarze2019-03-061-6/+9
|
* add arch.oIngo Schwarze2019-03-061-0/+1
|
* draft 1.14.5 NEWS entryIngo Schwarze2019-03-061-0/+69
|
* autoconfiguration test whether less(1) supports the -T option;Ingo Schwarze2019-03-063-0/+21
| | | | | needed for Alpine Linux because it uses busybox less(1) by default; based on a patch from Daniel Sabogal explained to me by Natanael Copa
* For TIOCGWINSZ, #include <termios.h> rather than <sys/termios.h>Ingo Schwarze2019-03-041-1/+1
| | | | | | like almost all other userland programs. This also improves portability: for example, it looks like <sys/termios.h> does not work on FreeBSD, or at least bapt@ did the same change over there.
* add libbe; from kevans@ via FreeBSD rev. 337663Ingo Schwarze2019-03-041-0/+1
|
* When the -S option is given to man(1) and the requested manual pageIngo Schwarze2019-03-048-55/+114
| | | | | | | | | | | | name is not found and the requested architecture is unknown, complain about the architecture rather than about the manual page name: $ man -S vax cpu man: Unknown architecture "vax". $ man -S sparc64 foobar man: No entry for foobar in the manual. Friendlier error message suggested by jmc@, who also OK'ed the patch.
* Fix the last straggler where the struct roff_node "line" memberIngo Schwarze2019-03-042-5/+1
| | | | | was abused to detect an input line break; instead, use the NODE_LINE flag to improve robustness.
* additional comments on two TODO itemsIngo Schwarze2019-03-041-3/+11
|
* Reset HTML formatter state, in particular the id_unique hash,Ingo Schwarze2019-03-034-8/+24
| | | | | | | | after processing each manual page, such that the next page starts from a clean state and doesn't continue suffix numbering. Issue found while looking at https://github.com/Debian/debiman/issues/48 which was brought up by Orestis Ioannou <oorestisime at github>.
* add forgotten mparse options to two rarely used programsIngo Schwarze2019-03-032-3/+4
|
* Do not open a subsection for each and every macro.Ingo Schwarze2019-03-021-176/+163
| | | | | | Instead, use a tagged list and the canonical .Ic macro as it is natural for such purposes. While here, also delete heaps of needless escaping.
* remove a few words to improve flow; from tedu@Ingo Schwarze2019-03-021-2/+2
|
* Represent multiple subsequent .IP blocks having a consistentIngo Schwarze2019-03-022-20/+67
| | | | | | | | | head argument of *, \-, or \(bu as <ul> rather than as <dl>, using a bit of heuristics. Basic idea suggested by Dagfinn Ilmari Mannsaker <ilmari at github> in https://github.com/Debian/debiman/issues/67 and independently by <Pali dot Rohar at gmail dot com> on <discuss at mandoc dot bsd dot lv>.
* Wrap .Sh/.SH sections and .Ss/.SS subsections in HTML <section> elementsIngo Schwarze2019-03-0112-23/+47
| | | | | | as recommended for accessibility by the HTML 5 standard. Triggered by a similar, but slightly different suggestion from Laura Morales <lauretas at mail dot com>.
* Format multiple subsequent .IP or multiple subsequent .TP/.TQIngo Schwarze2019-02-282-7/+28
| | | | | as a single <dl> list rather than opening a new list for each item; feature suggested by Pali dot Rohar at gmail dot com.
* Explain the ASCII rendering of single quotes because that repeatedlyIngo Schwarze2019-02-231-0/+11
| | | | | | | | | | | caused confusion in the past. People plainly do not expect that there are limits to the compatibility between Unicode and ASCII, but there are. The information belongs here and not into mandoc_char(7) because it explains how the specific output device (-T ascii) works and because it has nothing to do with the question of how characters are represented on the input side.
* The horizontal line in a data cell containing only "_" or "="Ingo Schwarze2019-02-091-47/+44
| | | | | connects to the horizontally adjacent vertical line or cell; fixing a bug reported by bentley@.
* add a BUGS section explaining the situation with box and line drawingIngo Schwarze2019-02-091-1/+15
| | | | in UTF-8 output; suggested by bentley@
* ignore empty request lines in the table data reader;Ingo Schwarze2019-02-091-9/+22
| | | | fixing a minibug reported by bentley@
* fix typo: "a data cells" -> "a data cell"; from bentley@Ingo Schwarze2019-02-081-1/+1
|
* style improvement from jmc@, no output change;Ingo Schwarze2019-02-071-4/+2
| | | | | | | | | | original commit message: .Pp .Bd ... -compact is better written as .Bd ...
* Remove the misleading statement ".No takes no arguments".Ingo Schwarze2019-02-061-2/+2
| | | | | In facts, i works very similarly to .Em and .Sy. Triggered by a question from Kurt Mosiejczuk <kurt at cranky dot work>.
* Let roff_getname() end the roff identifier at a tab characterIngo Schwarze2019-02-0618-22/+217
| | | | | | | | | | | | | | | | | | | | | | and audit all its callers whether termination is handled correctly. Resulting improvements: * An escape or tab ending the macro name in a macro invocation is discarded, and argument processing is started after it. * An escape or tab ending a name in ".if d" and ".if r" is preserved. * An escape ending a name in ".ds" causes the whole request to be ignored. * A tab ending a name in ".ds" becomes part of the string. * An escape or tab ending a name in ".rm" causes the rest of the line to be ignored. * An escape or tab ending the first name in ".als", ".rn", or ".nr" causes the whole request to be ignored. Kurt Jaeger <pi at FreeBSD> made me aware of https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=235456#c0 and in that bug report, comment 0 item (3) is a special case of this class of issues. Yes, the "mh" manual pages are no doubt among the worst on the planet.
* adjust style and comments in roff_getname(); no functional changeIngo Schwarze2019-02-061-11/+14
|
* Relax overzealous PATH_INFO validation.Ingo Schwarze2019-01-311-1/+1
| | | | | | | URIs like https://man.openbsd.org/OpenBSD-2.2/cat1/cat.0 are still required to work because they result from apropos searches for old releases (up to 5.0) which used to install preformatted manual pages. Regression reported by jj@.
* Since resetting of offsets works quite differently in man(7) and mdoc(7),Ingo Schwarze2019-01-313-2/+29
| | | | | test table centering in an mdoc(7) document as well. Related to tbl_term.c rev. 1.67.
* Fix tbl(7) centering in mdoc(7) documents.Ingo Schwarze2019-01-311-3/+7
| | | | | | | | | | Since resetting of offsets works quite differently in the mdoc(7) and man(7) formatters, the tbl(7) formatter needs to save the global offset on entry and restore it on exit. The additional indentation needed for table centering has to be added to its own offset variable and applied to each line of the table, rather than only to the first. Bug found by bentley@ in emulators/fceux(6).
* The .UR and .MT blocks in man(7) are represented by <a> elementsIngo Schwarze2019-01-184-55/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | which establish phrasing context, but they can contain paragraph breaks (which is relevant for terminal formatting, so we can't just change the structure of the syntax tree), which are respresented by <p> elements and cannot occur inside <a>. Fix this by prematurely closing the <a> element in the HTML formatter. This menas that the clickable text in HTML output is shorter than what is represented as the link text in terminal output, but in HTML, it is frankly impossible to have the clickable area of a hyperlink extend across a paragraph break. The difference in presentation is not a major problem, and besides, paragraph breaks inside .UR are rather poor style in the first place. The implementation is quite tricky. Naively closing out the <a> prematurely would result in accessing a stale pointer when later reaching the physical end of the .UR block. So this commit separates visual and structural closing of "struct tag" stack items. Visual closing means that the HTML element is closed but the "struct tag" remains on the stack, to avoid later access to a stale pointer and to avoid closing the same HTML element a second time later. This also needs reference counting of pointers to "struct tag" stack items because often more than one child holds a pointer to the same parent item, and only the outermost child can safely do the physical closing. In the whole corpus of nearly half a million manual pages on man.openbsd.org, this problem occurs in exactly one page: the groff(1) version 1.20.1 manual contained in DragonFly-3.8.2, which contains a formatting error triggering the bug.
* Delete several entries that were already fixed.Ingo Schwarze2019-01-171-28/+1
| | | | | The two entries about dashes, hyphens, and minus signs are no longer relevant because we decided on a policy that is now documented.
* Test handling of escaped backslashes because the code related toIngo Schwarze2019-01-175-2/+97
| | | | copy mode is complicated and prone to regressions.
* In PostScript and PDF output, one AFM unit is not nearly enoughIngo Schwarze2019-01-151-2/+3
| | | | | | inter-word spacing, let's try again with 250 AFM units. Regression caused during my recent term_flushln() reorg in rev. 1.278, reported by brynet@ (sorry and many thanks for reporting).
* Improve error reporting when a file given on the command lineIngo Schwarze2019-01-112-3/+5
| | | | | | cannot be opened: * Mention the filename. * Report the errno for the file itself, not the one with .gz appended.
* do not access a NULL pointer when formatting a completely empty documentIngo Schwarze2019-01-112-3/+3
|
* Remove the HTML title= attributes which harmed accessibility andIngo Schwarze2019-01-1111-78/+140
| | | | | | | violated the principle of separation of content and presentation. Instead, implement the tooltips purely in CSS. Thanks to John Gardner <gardnerjohng at gmail dot com> for suggesting most of the styling in the new ::before rules.
* After years of gnashing of teeth, i finally found a way to avoidIngo Schwarze2019-01-102-13/+6
| | | | | | | | | | | | | | | | | | having to write empty list elements for non-compact .Bl -tag lists: 1. Add margin-bottom to the <dd>. Note that margin-top on the <dt> doesn't work because it would put a short <dt> lower than the <dd>; margin-bottom on the <dt> doesn't work because it would put vertical space before the <dd> for a long <dt>; and margin-top on the <dd> doesn't work because it would put a short <dt> higher than the <dd>. Only margin-bottom on the <dd> has none of these adverse effects. 2. Of course, margin-bottom on the <dd> fails to take care of the vertical spacing before the first list element, so implement that separately by margin-top on the <dl>. 3. For .Bl -tag -compact, reset both to zero.
* Initializers for file-scope static variables should be compile-timeIngo Schwarze2019-01-102-2/+3
| | | | | | | | constants, and while stderr is a compile-time constant in OpenBSD, Kelvin Sherlock <ksherlock at gmail dot com> reports that it isn't on some other systems, for example on FreeBSD or Linux. So do the initialization by calling mandoc_msg_setoutfile() from main() instead.