CVS log for mandoc/man_html.c

[BACK] Up to [cvsweb.bsd.lv] / mandoc

Request diff between arbitrary revisions


Default branch: MAIN
Current tag: MAIN


Revision 1.187 / (download) - annotate - [select for diffs], Tue Oct 24 20:53:12 2023 UTC (5 months ago) by schwarze
Branch: MAIN
CVS Tags: HEAD
Changes since 1.186: +50 -2 lines
Diff to previous 1.186 (unified) to selected 1.137 (unified)

Implement the man(7) .MR macro, a 2023 GNU extension.
The syntax and semantics is almost identical to mdoc(7) .Xr.

This will be needed for reading the groff manual pages once our port
will be updated to 1.23, and the Linux Manual Pages Project is also
determined to start using it sooner or later.  I did not advocate for
this new macro, but since we want to remain able to read all manual
pages found in the wild, there is little choice but to support it.
At least it is easy to do, they basically copied .Xr.

Revision 1.186 / (download) - annotate - [select for diffs], Wed Oct 18 16:11:33 2023 UTC (5 months, 1 week ago) by schwarze
Branch: MAIN
Changes since 1.185: +5 -3 lines
Diff to previous 1.185 (unified) to selected 1.137 (unified)

Support the GNU-specific syntax ".IP \\[bu]" for bullet lists in man(7)
pages that Alejandro Colomar recommends in the "Lists" subsection of
https://man7.org/linux/man-pages/man7/man-pages.7.html#STYLE_GUIDE .

For example, this will improve HTML formatting of the first list in
the subsection "Feature test macros understood by glibc" on the page
https://manpages.debian.org/bookworm/manpages/ftm.7.en.html .

Issue reported by Alejandro Colomar <alx at kernel dot org>.

Revision 1.185 / (download) - annotate - [select for diffs], Fri Apr 28 20:23:19 2023 UTC (11 months ago) by schwarze
Branch: MAIN
Changes since 1.184: +4 -11 lines
Diff to previous 1.184 (unified) to selected 1.137 (unified)

Do not rewrite MAN_LP and MAN_P to MAN_PP because doing that causes
confusing warning messages complaining about macros that don't even
appear in the input file.
As a welcome side effect, this also shortens the code...

Fixing a minibug
reported by Alejandro Colomar <alx dot manpages at gmail dot com>.

Revision 1.184 / (download) - annotate - [select for diffs], Wed Jul 6 16:05:40 2022 UTC (20 months, 3 weeks ago) by schwarze
Branch: MAIN
Changes since 1.183: +3 -3 lines
Diff to previous 1.183 (unified) to selected 1.137 (unified)

https://www.w3.org/WAI/ARIA/apg/practices/names-and-descriptions/ says:
"Start names with a capital letter;
it helps some screen readers speak them with appropriate inflection."
Anna Vyalkova already did that correctly when sending patches,
but i ruined it when committing, so fix it now.

Revision 1.183 / (download) - annotate - [select for diffs], Wed Jul 6 14:34:59 2022 UTC (20 months, 3 weeks ago) by schwarze
Branch: MAIN
Changes since 1.182: +3 -3 lines
Diff to previous 1.182 (unified) to selected 1.137 (unified)

While the HTML standard allows multiple <h1> elements in the same
document, <h1> is intended for top level headers, and most of the
sections in a manual page can hardly be considered top-level.
It is more usual to use <h1> only for the main title of the document
of for the site name.

Consequently, move .Sh/.SH from <h1> to <h2> and .Ss/.SS from <h2>
to <h3>, freeing <h1> for use by header.html in man.cgi(8).

Discussed with Anna Vyalkova <cyber at sysrq dot in>.

Revision 1.182 / (download) - annotate - [select for diffs], Tue Jul 5 21:25:29 2022 UTC (20 months, 3 weeks ago) by schwarze
Branch: MAIN
Changes since 1.181: +19 -16 lines
Diff to previous 1.181 (unified) to selected 1.137 (unified)

Finally get rid of the archaic <table> markup for header and footer lines
and use flexbox CSS instead.  Improve accessibility by adding role
and aria-label attributes to these header and footer lines.
Using ideas from both Anna Vyalkova <cyber at sysrq dot in> and myself.

As a welcome side effect, this also resolves the long-standing issue
that the rendering was always 65em wide, requiring horizontal scrolling
when the window was narrower.  Now, rendering nicely adapts to browser
windows of arbitrary narrowness.

Revision 1.181 / (download) - annotate - [select for diffs], Mon Jul 4 14:37:33 2022 UTC (20 months, 3 weeks ago) by schwarze
Branch: MAIN
Changes since 1.180: +3 -3 lines
Diff to previous 1.180 (unified) to selected 1.137 (unified)

Put the HTML comment containing the Copyright header (if any)
between the <head> and the <body> rather than before the <head>
because the <meta charset="utf-8"/> element ought to be within
the first 1024 bytes of the HTML code.
Issue found with validator.w3.org.

Revision 1.180 / (download) - annotate - [select for diffs], Sun Jul 3 14:29:45 2022 UTC (20 months, 3 weeks ago) by schwarze
Branch: MAIN
Changes since 1.179: +2 -2 lines
Diff to previous 1.179 (unified) to selected 1.137 (unified)

Instead of the custom <div class="manual-text">, use the standard
HTML <main> element.  The benefit is that it has the ARIA landmark
role "main" by default.  To ease the transition for people using
their own CSS file instead of mandoc.css, retain the custom class
for now.

I had this idea in a discussion with Anna Vyalkova <cyber at sysrq dot in>.
Patch from Anna, slightly tweaked by me.

Revision 1.179 / (download) - annotate - [select for diffs], Fri Oct 16 17:22:43 2020 UTC (3 years, 5 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_14_6
Changes since 1.178: +7 -9 lines
Diff to previous 1.178 (unified) to selected 1.137 (unified)

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@.

Revision 1.178 / (download) - annotate - [select for diffs], Sat Apr 4 20:33:33 2020 UTC (3 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.177: +1 -2 lines
Diff to previous 1.177 (unified) to selected 1.137 (unified)

automatically tag .SH and .SS in man(7) terminal output
in the same way as it was done for .Sh and .Ss in mdoc(7)

Revision 1.177 / (download) - annotate - [select for diffs], Fri Mar 13 15:32:28 2020 UTC (4 years ago) by schwarze
Branch: MAIN
Changes since 1.176: +7 -9 lines
Diff to previous 1.176 (unified) to selected 1.137 (unified)

Split tagging into a validation part including prioritization
in tag.{h,c} and {mdoc,man}_validate.c
and into a formatting part including command line argument checking
in term_tag.{h,c}, html.c, and {mdoc|man}_{term|html}.c.

Immediate functional benefits include:
* Improved prioritization of automatic tags for .Em and .Sy.
* Avoiding bogus automatic tags when .Em, .Fn, or .Sy are explicitly tagged.
* Explicit tagging of .Er and .Fl now works in HTML output.
* Automatic tagging of .IP and .TP now works in HTML output.
But mainly, this patch provides clean earth to build further improvements on.

Technical changes:
* Main program: Write a tag file for ASCII and UTF-8 output only.
* All formatters: There is no more need to delay writing the tags.
* mdoc(7)+man(7) formatters: No more need for elaborate syntax tree inspection.
* HTML formatter: If available, use the "string" attribute as the tag.
* HTML formatter: New function to write permalinks, to reduce code duplication.

Style cleanup in the vicinity while here:
* mdoc(7) terminal formatter: To set up bold font for children,
defer to termp_bold_pre() rather than calling term_fontpush() manually.
* mdoc(7) terminal formatter: Garbage collect some duplicate functions.
* mdoc(7) HTML formatter: Unify <code> handling, delete redundant functions.
* Where possible, use switch statements rather than if cascades.
* Get rid of some more Yoda notation.

The necessity for such changes was first discussed with kn@, but i didn't
bother him with a request to review the resulting -673/+782 line patch.

Revision 1.176 / (download) - annotate - [select for diffs], Thu Feb 27 01:43:52 2020 UTC (4 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.175: +8 -6 lines
Diff to previous 1.175 (unified) to selected 1.137 (unified)

Introduce the concept of nodes that are semantically transparent:
they are skipped when looking for previous or following high-level
macros.  Examples include roff(7) .ft, .ll, and .ta, mdoc(7) .Sm
and .Tg, and man(7) .DT and .PD.  Use this concept for a variety
of improved decisions in various validators and formatters.

While here,
* remove a few const qualifiers on struct arguments that caused trouble;
* get rid of some more Yoda notation in the vicinity;
* and apply some other stylistic improvements in the vicinity.

I found this class of issues while considering .Tg patches from kn@.

Revision 1.175 / (download) - annotate - [select for diffs], Wed Feb 12 21:15:53 2020 UTC (4 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.174: +3 -3 lines
Diff to previous 1.174 (unified) to selected 1.137 (unified)

In roff, a space character at the beginning of an input line requires
starting a new output line, and merely starting a new line of HTML
code isn't sufficient to achieve that.  Solve this in the same way
as mdoc_html.c already does it, by printing a <br/> element.
Fixing a bug reported by Jason A. Donenfeld <Jason at zx2c4 dot com>
in the wg-quick(8) manual page on manpages.debian.org.

Revision 1.174 / (download) - annotate - [select for diffs], Tue Apr 30 15:53:00 2019 UTC (4 years, 10 months ago) by schwarze
Branch: MAIN
Changes since 1.173: +3 -3 lines
Diff to previous 1.173 (unified) to selected 1.137 (unified)

In HTML output, allow switching the desired font for subsequent
text without printing an opening tag right away, and use that in
the .ft request handler.  While here, garbage collect redundant
enum htmlfont and reduce code duplication in print_text().
Fixing an assertion failure reported by Michael <Stapelberg at Debian>
in pmRegisterDerived(3) from libpcp3-dev.

Revision 1.173 / (download) - annotate - [select for diffs], Sat Mar 2 16:30:53 2019 UTC (5 years ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_14_5
Changes since 1.172: +68 -16 lines
Diff to previous 1.172 (unified) to selected 1.137 (unified)

Represent multiple subsequent .IP blocks having a consistent
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>.

Revision 1.172 / (download) - annotate - [select for diffs], Fri Mar 1 10:57:18 2019 UTC (5 years ago) by schwarze
Branch: MAIN
Changes since 1.171: +14 -7 lines
Diff to previous 1.171 (unified) to selected 1.137 (unified)

Wrap .Sh/.SH sections and .Ss/.SS subsections in HTML <section> elements
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>.

Revision 1.171 / (download) - annotate - [select for diffs], Thu Feb 28 16:36:13 2019 UTC (5 years ago) by schwarze
Branch: MAIN
Changes since 1.170: +29 -3 lines
Diff to previous 1.170 (unified) to selected 1.137 (unified)

Format multiple subsequent .IP or multiple subsequent .TP/.TQ
as a single <dl> list rather than opening a new list for each item;
feature suggested by Pali dot Rohar at gmail dot com.

Revision 1.170 / (download) - annotate - [select for diffs], Fri Jan 18 14:36:21 2019 UTC (5 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.169: +10 -8 lines
Diff to previous 1.169 (unified) to selected 1.137 (unified)

The .UR and .MT blocks in man(7) are represented by <a> elements
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.

Revision 1.169 / (download) - annotate - [select for diffs], Fri Jan 11 16:36:19 2019 UTC (5 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.168: +2 -2 lines
Diff to previous 1.168 (unified) to selected 1.137 (unified)

do not access a NULL pointer when formatting a completely empty document

Revision 1.168 / (download) - annotate - [select for diffs], Fri Jan 11 12:56:43 2019 UTC (5 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.167: +6 -6 lines
Diff to previous 1.167 (unified) to selected 1.137 (unified)

Remove the HTML title= attributes which harmed accessibility and
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.

Revision 1.167 / (download) - annotate - [select for diffs], Mon Jan 7 07:26:29 2019 UTC (5 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.166: +12 -11 lines
Diff to previous 1.166 (unified) to selected 1.137 (unified)

Represent mdoc(7) .Pp (and .sp, and some SYNOPSIS and .Rs features)
by the <p> HTML element and use the html_fillmode() mechanism
for .Bd -unfilled, just like it was done for man(7) earlier, finally
getting rid both of the horrible <div class="Pp"></div> hack and
of the worst HTML syntax violations caused by nested displays.

Care is needed because in some situations, paragraphs have to remain
open across several subsequent macros, whereas in other situations,
they must get closed together with a block containing them.

Some implementation details include:
* Always close paragraphs before emitting HTML flow content.
* Let html_close_paragraph() also close <pre> for extra safety.
* Drop the old, now unused function print_paragraph().
* Minor adjustments in the top-level man(7) node formatter for symmetry.
* Bugfix: .Ss heads suspend no-fill mode, even though .Ss doesn't end it.
* Bugfix: give up on .Op semantic markup for now, see the comment.

Revision 1.166 / (download) - annotate - [select for diffs], Sun Jan 6 04:55:09 2019 UTC (5 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.165: +55 -70 lines
Diff to previous 1.165 (unified) to selected 1.137 (unified)

Finally, represent the man(7) .PP and .HP macros by the natural
choice, which is the <p> HTML element.  On top of the previous
fill-mode improvements, the key to making this possible is to
automatically close the <p> when required: before headers, subsequent
paragraphs, lists, indented blocks, synopsis blocks, tbl(7) blocks,
and before blocks using no-fill mode.

In man(7) documents, represent the .sp request by a blank line in
no-fill mode and in the same way as .PP in fill mode.

Revision 1.165 / (download) - annotate - [select for diffs], Sat Jan 5 21:55:11 2019 UTC (5 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.164: +3 -3 lines
Diff to previous 1.164 (unified) to selected 1.137 (unified)

In no-fill mode, avoid bogus blank lines in two situations:
1. After the last child; the parent will take care of the line break.
2. At the .YS macro; the end of the preceding .SY already broke the line.

Revision 1.164 / (download) - annotate - [select for diffs], Sat Jan 5 09:46:34 2019 UTC (5 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.163: +16 -24 lines
Diff to previous 1.163 (unified) to selected 1.137 (unified)

minor cleanup, no functional change:
* delete one irrelevant FIXME; no more fixed lengths in HTML, please
* simplify some conditions
* avoid testing pointers as truth values, use "!= NULL"
* sort some declarations
* delete some pointless blank lines

Revision 1.163 / (download) - annotate - [select for diffs], Sat Jan 5 09:14:44 2019 UTC (5 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.162: +18 -117 lines
Diff to previous 1.162 (unified) to selected 1.137 (unified)

Now that the NODE_NOFILL flag in the syntax tree is accurate,
use it in the man(7) HTML formatter rather than keeping fill mode
state locally, resulting in massive simplification (minus 40 LOC).

Move the html_fillmode() state handler function to the html.c module
such that both the man(7) and the roff(7) formatter (and in the future,
also the mdoc(7) formatter) can use it.  Give it a query mode, to be
invoked with TOKEN_NONE.

Revision 1.162 / (download) - annotate - [select for diffs], Mon Dec 31 07:08:12 2018 UTC (5 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.161: +17 -19 lines
Diff to previous 1.161 (unified) to selected 1.137 (unified)

Move parsing of the .nf and .fi (fill mode) requests from the man(7)
parser to the roff(7) parser.  As a side effect, .nf and .fi are
now also parsed in mdoc(7) input, though the mdoc(7) formatters
still ignore most of their effect.

Revision 1.161 / (download) - annotate - [select for diffs], Sun Dec 30 00:49:55 2018 UTC (5 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.160: +6 -6 lines
Diff to previous 1.160 (unified) to selected 1.137 (unified)

Cleanup, no functional change:

The struct roff_man used to be a bad mixture of internal parser
state and public parsing results.  Move the public results to the
parsing result struct roff_meta, which is already public.  Move the
rest of struct roff_man to the parser-internal header roff_int.h.

Since the validators need access to the parser state, call them
from the top level parser during mparse_result() rather than from
the main programs, also reducing code duplication.

This keeps parser internal state out of thee main programs (five
in mandoc portable) and out of eight formatters.

Revision 1.160 / (download) - annotate - [select for diffs], Sun Dec 16 00:17:02 2018 UTC (5 years, 3 months ago) by schwarze
Branch: MAIN
Changes since 1.159: +2 -1 lines
Diff to previous 1.159 (unified) to selected 1.137 (unified)

Yet another round of improvements to manual font selection.

Unify handling of \f and .ft.
Support \f4 (bold+italic).
Support ".ft BI" and ".ft CW" for terminal output.
Support the .ft request in HTML output.
Reject the bogus fonts \f(C1, \f(C2, \f(C3, and \f(CP.
In regress.pl, only strip leading whitespace in math mode.

Revision 1.159 / (download) - annotate - [select for diffs], Thu Dec 13 11:55:46 2018 UTC (5 years, 3 months ago) by schwarze
Branch: MAIN
Changes since 1.158: +1 -2 lines
Diff to previous 1.158 (unified) to selected 1.137 (unified)

Cleanup, no functional change:
Split the top level parser interface out of the utility header
mandoc.h, into a new header mandoc_parse.h, for use in the main
program and in the main parser only.
Move enum mandoc_os into roff.h because struct roff_man is the
place where it is stored.
This allows removal of mandoc.h from seven files in low-level
parsers and in formatters.

Revision 1.158 / (download) - annotate - [select for diffs], Mon Dec 3 21:00:10 2018 UTC (5 years, 3 months ago) by schwarze
Branch: MAIN
Changes since 1.157: +12 -7 lines
Diff to previous 1.157 (unified) to selected 1.137 (unified)

In the validators, translate obsolete macro aliases (Lp, Ot, LP, P)
to the standard forms (Pp, Ft, PP) up front, such that later code
does not need to look for the obsolete versions.
This reduces the risk of incomplete handling.

Revision 1.157 / (download) - annotate - [select for diffs], Tue Oct 23 17:18:01 2018 UTC (5 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.156: +6 -3 lines
Diff to previous 1.156 (unified) to selected 1.137 (unified)

Input lines that are not blank but generate no output,
for example lines containing nothing but "\&", are significant
in no-fill mode and can be represented by blank lines inside <pre>.
Fixing a bug that Pali dot Rohar at gmail dot com found
in pod2man(1) output, for example Email::Address::XS(3p).

While here, inside no-fill mode, there is no need to encode
totally blank input lines by emulating .PP - just let them
through as we are inside <pre> anyway.

Revision 1.156 / (download) - annotate - [select for diffs], Sat Aug 18 02:08:27 2018 UTC (5 years, 7 months ago) by schwarze
Branch: MAIN
Changes since 1.155: +25 -1 lines
Diff to previous 1.155 (unified) to selected 1.137 (unified)

implement the GNU man-ext .SY/.YS (synopsis block) macro in man(7),
used in most manual pages of the groff package

Revision 1.155 / (download) - annotate - [select for diffs], Fri Aug 17 20:33:37 2018 UTC (5 years, 7 months ago) by schwarze
Branch: MAIN
Changes since 1.154: +6 -6 lines
Diff to previous 1.154 (unified) to selected 1.137 (unified)

Remove more pointer arithmetic passing via regions outside the array
that is undefined according to the C standard.  Robert Elz <kre at
munnari dot oz dot au> pointed out i wasn't quite done yet.

Revision 1.154 / (download) - annotate - [select for diffs], Thu Aug 16 23:43:37 2018 UTC (5 years, 7 months ago) by schwarze
Branch: MAIN
Changes since 1.153: +14 -13 lines
Diff to previous 1.153 (unified) to selected 1.137 (unified)

implement the GNU man-ext .TQ macro in man(7),
used for example by groff_diff(7)

Revision 1.153 / (download) - annotate - [select for diffs], Fri Jul 27 17:49:31 2018 UTC (5 years, 8 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_14_4
Changes since 1.152: +1 -3 lines
Diff to previous 1.152 (unified) to selected 1.137 (unified)

garbage collect the unused "#define INDENT"

Revision 1.152 / (download) - annotate - [select for diffs], Mon Jun 25 13:33:04 2018 UTC (5 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.151: +3 -21 lines
Diff to previous 1.151 (unified) to selected 1.137 (unified)

Ignore author-specified indentation for .RS; it harms responsive
design.  Use the existing @media-dependent indent instead.
This removes the last style= attribute from man(7) output.

Revision 1.151 / (download) - annotate - [select for diffs], Mon Jun 25 13:01:19 2018 UTC (5 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.150: +5 -16 lines
Diff to previous 1.150 (unified) to selected 1.137 (unified)

For -man -Thtml, ignore author-specified .HP widths because they
harm responsive design; use @media-dependent defaults instead.

Revision 1.150 / (download) - annotate - [select for diffs], Fri May 25 20:23:51 2018 UTC (5 years, 10 months ago) by schwarze
Branch: MAIN
Changes since 1.149: +3 -5 lines
Diff to previous 1.149 (unified) to selected 1.137 (unified)

Do not write duplicate id= attributes, they violate HTML syntax.
Append suffixes for disambiguation.  Issue first reported by Jakub
Klinkovsky <j dot l dot k at gmx dot com> (Arch Linux).

Revision 1.149 / (download) - annotate - [select for diffs], Tue May 8 21:42:34 2018 UTC (5 years, 10 months ago) by schwarze
Branch: MAIN
Changes since 1.148: +3 -3 lines
Diff to previous 1.148 (unified) to selected 1.137 (unified)

Eliminate the class=It-* attributes.
Cleaner HTML, more idiomatic CSS, and minus 30 lines of C code.
Suggested by John Gardner <gardnerjohng at gmail dot com>.

Revision 1.148 / (download) - annotate - [select for diffs], Tue Apr 24 00:36:53 2018 UTC (5 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.147: +3 -3 lines
Diff to previous 1.147 (unified) to selected 1.137 (unified)

replace my vague and idiosyncratic term "selflink"
with the clearer and more usual "permalink";
suggested by John Gardner <gardnerjohng at gmail dot com>

Revision 1.147 / (download) - annotate - [select for diffs], Fri Apr 13 16:28:07 2018 UTC (5 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.146: +21 -14 lines
Diff to previous 1.146 (unified) to selected 1.137 (unified)

preserve comments before .Dd and .TH (typically Copyright and license)
in full HTML output, but not with -Ofragment, e.g. in man.cgi(8);
suggested by Thomas Klausner <wiz at NetBSD>

Revision 1.146 / (download) - annotate - [select for diffs], Wed Apr 11 17:11:13 2018 UTC (5 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.145: +3 -1 lines
Diff to previous 1.145 (unified) to selected 1.137 (unified)

preserve comments before .Dd when converting mdoc(7) to man(7)
with mandoc -Tman; suggested by Thomas Klausner <wiz at NetBSD>

Revision 1.145 / (download) - annotate - [select for diffs], Sun Jun 25 11:42:02 2017 UTC (6 years, 9 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_14_3, VERSION_1_14_2
Changes since 1.144: +11 -2 lines
Diff to previous 1.144 (unified) to selected 1.137 (unified)

add support for the MT and ME mailto macros, used for example in wg(8);
patch from bentley@

Revision 1.144 / (download) - annotate - [select for diffs], Sat Jun 24 14:38:32 2017 UTC (6 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.143: +2 -1 lines
Diff to previous 1.143 (unified) to selected 1.137 (unified)

Split -Wstyle into -Wstyle and the even lower -Wbase, and add
-Wopenbsd and -Wnetbsd to check conventions for the base system of
a specific operating system.  Mark operating system specific messages
with "(OpenBSD)" at the end.

Please use just "-Tlint" to check base system manuals (defaulting
to -Wall, which is now -Wbase), but prefer "-Tlint -Wstyle" for the
manuals of portable software projects you maintain that are not
part of OpenBSD base, to avoid bogus recommendations about base
system conventions that do not apply.

Issue originally reported by semarie@, solution using
an idea from tedu@, discussed with jmc@ and jca@.

Revision 1.143 / (download) - annotate - [select for diffs], Thu Jun 8 12:54:58 2017 UTC (6 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.142: +2 -6 lines
Diff to previous 1.142 (unified) to selected 1.137 (unified)

make the internal a2roffsu() interface more powerful by returning
a pointer to the end of the parsed data, making it easier to
parse subsequent bytes

Revision 1.142 / (download) - annotate - [select for diffs], Tue May 9 14:10:01 2017 UTC (6 years, 10 months ago) by schwarze
Branch: MAIN
Changes since 1.141: +3 -2 lines
Diff to previous 1.141 (unified) to selected 1.137 (unified)

Trailing \c suppresses the output line break even if
the next line is a text line starting with whitespace.
Quirk found in the sysutils/rancid port.

Revision 1.141 / (download) - annotate - [select for diffs], Fri May 5 15:17:32 2017 UTC (6 years, 10 months ago) by schwarze
Branch: MAIN
Changes since 1.140: +2 -22 lines
Diff to previous 1.140 (unified) to selected 1.137 (unified)

Move .sp to the roff modules.  Enough infrastructure is in place
now that this actually saves code: -70 LOC.

Revision 1.140 / (download) - annotate - [select for diffs], Fri May 5 13:17:54 2017 UTC (6 years, 10 months ago) by schwarze
Branch: MAIN
Changes since 1.139: +1 -2 lines
Diff to previous 1.139 (unified) to selected 1.137 (unified)

move .ll to the roff modules

Revision 1.139 / (download) - annotate - [select for diffs], Fri May 5 02:06:19 2017 UTC (6 years, 10 months ago) by schwarze
Branch: MAIN
Changes since 1.138: +1 -2 lines
Diff to previous 1.138 (unified) to selected 1.137 (unified)

Move handling of the roff(7) .ft request from the man(7)
modules to the new roff(7) modules.  As a side effect,
mdoc(7) now handles .ft, too.  Of course, do not use that.

Revision 1.138 / (download) - annotate - [select for diffs], Thu May 4 22:16:09 2017 UTC (6 years, 10 months ago) by schwarze
Branch: MAIN
Changes since 1.137: +8 -18 lines
Diff to previous 1.137 (unified)

Start roff formatter modules for HTML and termininal output,
used by both the mdoc and man formatters, with the ultimate
goal of reducing code duplication between the two macro formatters.
Made possible by the parser unification.
Add the first formatting function (for the .br request).

Revision 1.137 / (download) - annotate - [selected], Thu May 4 17:48:28 2017 UTC (6 years, 10 months ago) by schwarze
Branch: MAIN
Changes since 1.136: +13 -2 lines
Diff to previous 1.136 (unified)

Parser reorg:
Generate the first node on the roff level: .br
Fix some column numbers in diagnostic messages while here.

Revision 1.136 / (download) - annotate - [select for diffs], Mon Apr 24 23:06:18 2017 UTC (6 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.135: +4 -3 lines
Diff to previous 1.135 (unified) to selected 1.137 (unified)

Continue parser unification:
* Make enum rofft an internal interface as enum roff_tok in "roff.h".
* Represent mdoc and man macros in enum roff_tok.
* Make TOKEN_NONE a proper enum value and use it throughout.
* Put the prologue macros first in the macro tables.
* Unify mdoc_macroname[] and man_macroname[] into roff_name[].

Revision 1.135 / (download) - annotate - [select for diffs], Fri Mar 17 12:10:16 2017 UTC (7 years ago) by schwarze
Branch: MAIN
Changes since 1.134: +5 -3 lines
Diff to previous 1.134 (unified) to selected 1.137 (unified)

Fix regression in mdoc_html.c 1.275, man_html 1.134:
For .Sh, .Ss, .SH, .SS, only write selflink if an id could be constructed.
Crash reported by Raf Czlonka <rczlonka at gmail dot com>,
analysis of root cause by natano@

Revision 1.134 / (download) - annotate - [select for diffs], Wed Mar 15 11:29:53 2017 UTC (7 years ago) by schwarze
Branch: MAIN
Changes since 1.133: +18 -6 lines
Diff to previous 1.133 (unified) to selected 1.137 (unified)

Minimal support for deep linking into man(7) pages.
As the man(7) language does not provide semantic markup,
only .SH, .SS, and .UR become anchors for now.

Revision 1.133 / (download) - annotate - [select for diffs], Sun Feb 5 18:15:39 2017 UTC (7 years, 1 month ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_14_1, VERSION_1_13
Changes since 1.132: +1 -2 lines
Diff to previous 1.132 (unified) to selected 1.137 (unified)

Improve <table> syntax:
The <col> element can only appear inside <colgroup>, so use <colgroup>.
The <tbody> element is optional and useless, so don't use it.
Even if we would ever need <thead> or <tfoot>, <tbody> would still be
optional and useless; besides, we will likely never need <thead> or <tfoot>,
simply because our languages don't support such functionality.

Revision 1.132 / (download) - annotate - [select for diffs], Mon Jan 30 20:24:02 2017 UTC (7 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.131: +134 -69 lines
Diff to previous 1.131 (unified) to selected 1.137 (unified)

Rework fill mode handling for -man -Thtml.

Basically, open <pre> whenever printing text in no-fill mode and it is
not already open, and close it whenever printing something that cannot
be inside <pre>.

This fixes a crash reported by Michael <Stapelberg at debian dot org>
in the French Linux chroot(2) manual and also improves rendering
for OpenBSD pages like DPMSGetTimeouts(3) and GLwDrawingArea(3).

These changes also permitted retiring struct mhtml.

Revision 1.131 / (download) - annotate - [select for diffs], Sun Jan 29 14:02:42 2017 UTC (7 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.130: +3 -3 lines
Diff to previous 1.130 (unified) to selected 1.137 (unified)

eliminate one useless struct and one level of indirection;
no functional change

Revision 1.130 / (download) - annotate - [select for diffs], Thu Jan 26 18:28:18 2017 UTC (7 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.129: +47 -58 lines
Diff to previous 1.129 (unified) to selected 1.137 (unified)

Fix -man -Thtml formatting after .nf (which has nothing to do
with "literal", by the way, it means "no fill"):

* Use <pre> such that whitespace is preserved.
* Preserve lines breaks.
* For font alternating macros, avoid node recursion which required
scary juggling with the fill state.  Instead, simply print the text
children directly.

Missing feature first noticed by kristaps@ in 2011,
the again reported by afresh1@ in 2016,
and finally reported here: https://github.com/Debian/debiman/issues/21 ,
which i only found because of Shane Kerr's comment here:
https://plus.google.com/110314300533310775053/posts/H1eaw9Yskoc

Revision 1.129 / (download) - annotate - [select for diffs], Sat Jan 21 01:20:32 2017 UTC (7 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.128: +4 -4 lines
Diff to previous 1.128 (unified) to selected 1.137 (unified)

clean up the remaining class attributes

Revision 1.128 / (download) - annotate - [select for diffs], Fri Jan 20 23:51:00 2017 UTC (7 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.127: +3 -3 lines
Diff to previous 1.127 (unified) to selected 1.137 (unified)

Standardize class attributes for semantic macros.
Correct markup for .Va and iprove markup for .Dv, .Er, .Ev while here.

Revision 1.127 / (download) - annotate - [select for diffs], Thu Jan 19 15:27:34 2017 UTC (7 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.126: +9 -13 lines
Diff to previous 1.126 (unified) to selected 1.137 (unified)

Clean up CSS rules for sections and paragraphs.
Start using real macro names for CSS classes.

Revision 1.126 / (download) - annotate - [select for diffs], Thu Jan 19 13:35:02 2017 UTC (7 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.125: +8 -10 lines
Diff to previous 1.125 (unified) to selected 1.137 (unified)

Start cleanup: trim useless HTML comments, <div> elements,
and CSS rules on the <html> and <body> levels.

Revision 1.125 / (download) - annotate - [select for diffs], Thu Jan 19 01:00:14 2017 UTC (7 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.124: +1 -3 lines
Diff to previous 1.124 (unified) to selected 1.137 (unified)

Implement line breaking of the generated HTML code at space characters
in filled text.  This does not affect HTML semantics, but makes the
HTML code even more humanly readable.

While here,
- collapse multiple consecutive space characters in filled text
- and insert a blank between style entries.

Revision 1.124 / (download) - annotate - [select for diffs], Wed Jan 18 19:22:22 2017 UTC (7 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.123: +1 -2 lines
Diff to previous 1.123 (unified) to selected 1.137 (unified)

Make HTML output more human readable by overhauling line break logic
around tags and by introducing some simple indentation.
No change of HTML semantics intended.

Revision 1.123 / (download) - annotate - [select for diffs], Tue Jan 17 15:32:44 2017 UTC (7 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.122: +5 -6 lines
Diff to previous 1.122 (unified) to selected 1.137 (unified)

Completely delete the buf field of struct html and all the buf*()
interfaces.  Such a static buffer was a bad idea in the first place,
causing unfixable truncation that was only prevented by triggering
an assertion failure.  Instead, let the small number of remaining
users allocate and free their own, temporary dynamic buffers,
or for the case of .Xr and .In, pass the original data to be
assembled in print_otag().

Revision 1.122 / (download) - annotate - [select for diffs], Tue Jan 17 01:47:51 2017 UTC (7 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.121: +47 -92 lines
Diff to previous 1.121 (unified) to selected 1.137 (unified)

Simplify the usage of print_otag() by making it accept a variable
number of arguments.

Delete struct htmlpair and all the PAIR_*() macros.
Delete enum htmlattr, handle that in print_otag() instead.

Minus 190 lines of code; no functional change except better ordering
of attributes (class before style) in three cases.

Revision 1.121 / (download) - annotate - [select for diffs], Tue Jan 10 13:47:00 2017 UTC (7 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.120: +4 -4 lines
Diff to previous 1.120 (unified) to selected 1.137 (unified)

unify names of AST node flags; no change of cpp output

Revision 1.120 / (download) - annotate - [select for diffs], Fri Jan 8 17:48:09 2016 UTC (8 years, 2 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_13_4
Changes since 1.119: +3 -3 lines
Diff to previous 1.119 (unified) to selected 1.137 (unified)

Delete the redundant "nchild" member of struct roff_node, replacing
most uses by one, a few by two pointer checks, and only one by a
tiny loop - not only making data smaller, but code shorter as well.

This gets rid of an implicit invariant that confused both static
analysis tools and human auditors.  No functional change.

Revision 1.119 / (download) - annotate - [select for diffs], Tue Oct 6 18:32:19 2015 UTC (8 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.118: +31 -31 lines
Diff to previous 1.118 (unified) to selected 1.137 (unified)

modernize style: "return" is not a function

Revision 1.118 / (download) - annotate - [select for diffs], Sat Sep 26 00:54:03 2015 UTC (8 years, 6 months ago) by schwarze
Branch: MAIN
Changes since 1.117: +1 -2 lines
Diff to previous 1.117 (unified) to selected 1.137 (unified)

/* NOTREACHED */ after abort() is silly, delete it

Revision 1.117 / (download) - annotate - [select for diffs], Sat Apr 18 17:53:21 2015 UTC (8 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.116: +8 -14 lines
Diff to previous 1.116 (unified) to selected 1.137 (unified)

Delete the wrapper functions mdoc_meta(), man_meta(), mdoc_node(),
man_node() from the mandoc(3) semi-public interface and the internal
wrapper functions print_mdoc() and print_man() from the HTML formatters.
Minus 60 lines of code, no functional change.

Revision 1.116 / (download) - annotate - [select for diffs], Sat Apr 18 16:06:40 2015 UTC (8 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.115: +2 -2 lines
Diff to previous 1.115 (unified) to selected 1.137 (unified)

Replace the structs mdoc and man by a unified struct roff_man.
Almost completely mechanical, no functional change.
Written on the train from Exeter to London returning from p2k15.

Revision 1.115 / (download) - annotate - [select for diffs], Thu Apr 2 23:48:19 2015 UTC (8 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.114: +4 -4 lines
Diff to previous 1.114 (unified) to selected 1.137 (unified)

Third step towards parser unification:
Replace struct mdoc_meta and struct man_meta by a unified struct roff_meta.
Written of the train from London to Exeter on the way to p2k15.

Revision 1.114 / (download) - annotate - [select for diffs], Thu Apr 2 22:48:17 2015 UTC (8 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.113: +9 -9 lines
Diff to previous 1.113 (unified) to selected 1.137 (unified)

Second step towards parser unification:
Replace struct mdoc_node and struct man_node by a unified struct roff_node.
To be able to use the tok member for both mdoc(7) and man(7) without
defining all the macros in roff.h, sacrifice a tiny bit of type safety
and make tok an int rather than an enum.
Almost mechanical, no functional change.
Written on the Eurostar from Bruxelles to London on the way to p2k15.

Revision 1.113 / (download) - annotate - [select for diffs], Thu Apr 2 21:36:49 2015 UTC (8 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.112: +28 -27 lines
Diff to previous 1.112 (unified) to selected 1.137 (unified)

First step towards parser unification:
Replace enum mdoc_type and enum man_type by a unified enum roff_type.
Almost mechanical, no functional change.
Written on the ICE train from Frankfurt to Bruxelles on the way to p2k15.

Revision 1.112 / (download) - annotate - [select for diffs], Tue Mar 3 21:11:34 2015 UTC (9 years ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_13_3
Changes since 1.111: +3 -1 lines
Diff to previous 1.111 (unified) to selected 1.137 (unified)

If an eqn(7) starts on a new input line, be sure to output whitespace
in front of it.  Issue found by tedu@ in glOrtho(3).

There are also cases of excessive whitespace before and after
equations.  This patch neither fixes them nor makes them worse.

Revision 1.111 / (download) - annotate - [select for diffs], Tue Feb 10 08:05:30 2015 UTC (9 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.110: +2 -2 lines
Diff to previous 1.110 (unified) to selected 1.137 (unified)

trim trailing white space, no code change;
from Svyatoslav Mishyn <juef at openmailboxd dot org>, Crux Linux

Revision 1.110 / (download) - annotate - [select for diffs], Fri Jan 30 22:04:44 2015 UTC (9 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.109: +6 -5 lines
Diff to previous 1.109 (unified) to selected 1.137 (unified)

Have pity on the poor stack.
Replace tail recursion by iteration when walking the syntax trees.
No functional change.

Revision 1.109 / (download) - annotate - [select for diffs], Sat Jan 24 02:41:49 2015 UTC (9 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.108: +1 -2 lines
Diff to previous 1.108 (unified) to selected 1.137 (unified)

Strangely, ignoring the roff(7) .na request was implemented in the man(7)
parser.  Simplify the code by moving it into the roff(7) parser, also
making it work for mdoc(7).

Revision 1.108 / (download) - annotate - [select for diffs], Tue Dec 23 09:31:46 2014 UTC (9 years, 3 months ago) by schwarze
Branch: MAIN
Changes since 1.107: +2 -2 lines
Diff to previous 1.107 (unified) to selected 1.137 (unified)

some scaling unit fixes:
- .sp with an invalid argument is .sp 1v, not .sp 0v
- in man(1), trailing garbage doesn't make scaling units invalid

Revision 1.107 / (download) - annotate - [select for diffs], Thu Dec 4 02:05:42 2014 UTC (9 years, 3 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_13_2
Changes since 1.106: +2 -2 lines
Diff to previous 1.106 (unified) to selected 1.137 (unified)

fix handling of roff requests having a default scale other than "n",
in particular .sp which uses "v", when the scale is not specified;
cures groff-mandoc differences in about a dozen Xenocara manuals

Revision 1.106 / (download) - annotate - [select for diffs], Tue Dec 2 10:08:06 2014 UTC (9 years, 3 months ago) by schwarze
Branch: MAIN
Changes since 1.105: +4 -11 lines
Diff to previous 1.105 (unified) to selected 1.137 (unified)

Fix the implementation and documentation of \c (continue text input line).
In particular, make it work in no-fill mode, too.
Reminded by Carsten dot Kunze at arcor dot de (Heirloom roff).

Revision 1.105 / (download) - annotate - [select for diffs], Mon Dec 1 08:05:52 2014 UTC (9 years, 3 months ago) by schwarze
Branch: MAIN
Changes since 1.104: +2 -3 lines
Diff to previous 1.104 (unified) to selected 1.137 (unified)

header cleanup:
* add missing forward declarations
* remove needless header inclusions
* some style unification

Revision 1.104 / (download) - annotate - [select for diffs], Sat Sep 27 11:17:19 2014 UTC (9 years, 6 months ago) by kristaps
Branch: MAIN
Changes since 1.103: +2 -2 lines
Diff to previous 1.103 (unified) to selected 1.137 (unified)

Don't pretend we have a separate XHTML and HTML mode any more.

Revision 1.103 / (download) - annotate - [select for diffs], Sat Sep 27 10:56:18 2014 UTC (9 years, 6 months ago) by kristaps
Branch: MAIN
Changes since 1.102: +7 -6 lines
Diff to previous 1.102 (unified) to selected 1.137 (unified)

Remove <p> in favour of <div class="spacer">.
This is good because <p> is brittle: it can't appear within other block
macros.
This fixes a regression of the original HTML5 patch as noted by schwarze@
on the tech@ list, 14/8/2014.

Revision 1.102 / (download) - annotate - [select for diffs], Sat Sep 27 09:26:01 2014 UTC (9 years, 6 months ago) by kristaps
Branch: MAIN
Changes since 1.101: +1 -8 lines
Diff to previous 1.101 (unified) to selected 1.137 (unified)

Remove last hard-coded width attribute.

Revision 1.101 / (download) - annotate - [select for diffs], Sat Sep 27 09:20:03 2014 UTC (9 years, 6 months ago) by kristaps
Branch: MAIN
Changes since 1.100: +24 -25 lines
Diff to previous 1.100 (unified) to selected 1.137 (unified)

HTML5-isation: remove more alignments.

Revision 1.100 / (download) - annotate - [select for diffs], Sat Sep 27 09:13:39 2014 UTC (9 years, 6 months ago) by kristaps
Branch: MAIN
Changes since 1.99: +3 -5 lines
Diff to previous 1.99 (unified) to selected 1.137 (unified)

Continue in HTML5-ing by kicking out some hard-coded alignments.

Revision 1.99 / (download) - annotate - [select for diffs], Sat Sep 27 09:05:57 2014 UTC (9 years, 6 months ago) by kristaps
Branch: MAIN
Changes since 1.98: +5 -7 lines
Diff to previous 1.98 (unified) to selected 1.137 (unified)

Kick out "summary" attribute, which isn't HTML5.

Revision 1.98 / (download) - annotate - [select for diffs], Sat Sep 27 09:02:19 2014 UTC (9 years, 6 months ago) by kristaps
Branch: MAIN
Changes since 1.97: +5 -7 lines
Diff to previous 1.97 (unified) to selected 1.137 (unified)

First, add space for default styling for HTML5 (non-fragment) output.
This uses a <style /> block right before the <link /> for the stylesheet.
Use this to kick out hardcoded header and footer table widths.

Revision 1.97 / (download) - annotate - [select for diffs], Sun Aug 10 23:54:41 2014 UTC (9 years, 7 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_12_4, VERSION_1_12
Changes since 1.96: +1 -3 lines
Diff to previous 1.96 (unified) to selected 1.137 (unified)

Get rid of HAVE_CONFIG_H, it is always defined; idea from libnbcompat.
Include <sys/types.h> where needed, it does not belong in config.h.
Remove <stdio.h> from config.h; if it is missing somewhere, it should
be added, but i cannot find a *.c file where it is missing.

Revision 1.96 / (download) - annotate - [select for diffs], Fri Aug 1 19:25:52 2014 UTC (9 years, 7 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_13_1
Changes since 1.95: +2 -2 lines
Diff to previous 1.95 (unified) to selected 1.137 (unified)

Clarity with respect to floating point handling:
Write double constants as double rather than integer literals.
Remove useless explicit (double) cast done at one place and nowhere else.
No functional change.

Revision 1.95 / (download) - annotate - [select for diffs], Wed Apr 23 16:08:33 2014 UTC (9 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.94: +3 -7 lines
Diff to previous 1.94 (unified) to selected 1.137 (unified)

Audit strlcpy(3)/strlcat(3) usage.

* Repair three instances of silent truncation, use asprintf(3).
* Change two instances of strlen(3)+malloc(3)+strlcpy(3)+strlcat(3)+...
to use asprintf(3) instead to make them less error prone.
* Cast the return value of four instances where the destination
buffer is known to be large enough to (void).
* Completely remove three useless instances of strlcpy(3)/strlcat(3).
* Mark two places in -Thtml with XXX that can cause information loss
and crashes but are not easy to fix, requiring design changes of
some internal interfaces.
* The file mandocdb.c remains to be audited.

Revision 1.94 / (download) - annotate - [select for diffs], Sun Apr 20 20:18:12 2014 UTC (9 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.93: +6 -3 lines
Diff to previous 1.93 (unified) to selected 1.137 (unified)

fix unchecked snprintf(3) in page header printing:
the length of the title is unknown, and speed doesn't matter here,
so use asprintf/free rather than a static buffer

Revision 1.93 / (download) - annotate - [select for diffs], Sun Apr 20 16:46:04 2014 UTC (9 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.92: +23 -48 lines
Diff to previous 1.92 (unified) to selected 1.137 (unified)

KNF: case (FOO):  ->  case FOO:, remove /* LINTED */ and /* ARGSUSED */,
remove trailing whitespace and blanks before tabs, improve some indenting;
no functional change

Revision 1.92 / (download) - annotate - [select for diffs], Sun Mar 30 19:47:48 2014 UTC (10 years ago) by schwarze
Branch: MAIN
Changes since 1.91: +2 -1 lines
Diff to previous 1.91 (unified) to selected 1.137 (unified)

Implement the roff(7) .ll (line length) request.
Found by naddy@ in the textproc/enchant(1) port.
Of course, do not use this in new manuals.

Revision 1.91 / (download) - annotate - [select for diffs], Sat Mar 8 15:50:41 2014 UTC (10 years ago) by schwarze
Branch: MAIN
Changes since 1.90: +11 -6 lines
Diff to previous 1.90 (unified) to selected 1.137 (unified)

To find out whether .TP head arguments are same-line or next-line arguments,
use the MAN_LINE flag instead of the man_node line member.
This is required such that user-defined macros wrapping .TP work correctly.

Issue found by Havard Eidnes in Tcl_NewStringObj(3), reported via
the NetBSD bug tracking system and Thomas Klausner <wiz at NetBSD>.

Revision 1.90 / (download) - annotate - [select for diffs], Thu Oct 17 20:54:58 2013 UTC (10 years, 5 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_12_3
Changes since 1.89: +29 -1 lines
Diff to previous 1.89 (unified) to selected 1.137 (unified)

Implement the .UR/.UE block (uniform resource identifier) introduced in the
man-ext macros by Eric S. Raymond, enabled by default in groff_man(7).
Usual disclaimer: You don't write new man(7) code, so you are not going
to use these, either.
Improves e.g. the bzr(1) and etherape(1) manuals.
Thanks to naddy@ for bringing these to my attention.

Revision 1.89 / (download) - annotate - [select for diffs], Sat Nov 17 00:26:33 2012 UTC (11 years, 4 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_12_2
Changes since 1.88: +28 -28 lines
Diff to previous 1.88 (unified) to selected 1.137 (unified)

Cleanup naming of local variables to make the code easier on the eye:
Settle for "struct man *man", "struct mdoc *mdoc", "struct meta *meta"
and avoid the confusing "*m" which was sometimes this, sometimes that.
No functional change.

ok kristaps@ some time ago

Revision 1.88 / (download) - annotate - [select for diffs], Sat Jun 2 20:16:23 2012 UTC (11 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.87: +4 -2 lines
Diff to previous 1.87 (unified) to selected 1.137 (unified)

Minimal implementation of .EX and .EE for GNU compatibility.
Do not use this, it is not portable and only defined in esr's man-ext.
For example, sox(1) wants these macros.

Revision 1.87 / (download) - annotate - [select for diffs], Sun May 27 17:39:28 2012 UTC (11 years, 10 months ago) by schwarze
Branch: MAIN
Changes since 1.86: +2 -2 lines
Diff to previous 1.86 (unified) to selected 1.137 (unified)

update Copyright years according to the CVS logs; no code change

Revision 1.86 / (download) - annotate - [select for diffs], Tue Jan 3 15:16:24 2012 UTC (12 years, 2 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_12_1
Changes since 1.85: +42 -11 lines
Diff to previous 1.85 (unified) to selected 1.137 (unified)

Add support for `OP', one of the extended man macros.  This also requires
some man(7) changes to accomodate for the an-ext compatibility.

Revision 1.85 / (download) - annotate - [select for diffs], Sun Dec 4 00:44:12 2011 UTC (12 years, 3 months ago) by schwarze
Branch: MAIN
Changes since 1.84: +8 -5 lines
Diff to previous 1.84 (unified) to selected 1.137 (unified)

Jumping out of man_unscope() for the root node is a bad idea
because that will skip root node validation, potentially entering
rendering modules will NULL pointers lurking in the meta data.
Instead, always validate the root node and (as suggested by joerg@)
assert validity of the meta data before using it in the renderers.
ok joerg@

Revision 1.84 / (download) - annotate - [select for diffs], Fri Nov 18 17:05:50 2011 UTC (12 years, 4 months ago) by joerg
Branch: MAIN
Changes since 1.83: +5 -3 lines
Diff to previous 1.83 (unified) to selected 1.137 (unified)

Don't depend on snprintf to handle NULL strings. Deal with missing date.

Revision 1.83 / (download) - annotate - [select for diffs], Sun Oct 9 22:10:53 2011 UTC (12 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.82: +18 -36 lines
Diff to previous 1.82 (unified) to selected 1.137 (unified)

Always print <table> column widths in -T[x]html;
if desired, they can be overridden in the CSS file.
Suggested by kristaps@, and i always like to simplify code.

Revision 1.82 / (download) - annotate - [select for diffs], Wed Oct 5 21:35:17 2011 UTC (12 years, 5 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_12_0
Changes since 1.81: +17 -18 lines
Diff to previous 1.81 (unified) to selected 1.137 (unified)

Add the -Ofragment option to -T[]x]html.  This accomodates for embedding
manual output in existing HTML or XHTML documents, e.g., when invoking
mandoc from an SSI or CGI.

Revision 1.81 / (download) - annotate - [select for diffs], Thu Aug 18 09:16:01 2011 UTC (12 years, 7 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_11_7
Changes since 1.80: +1 -2 lines
Diff to previous 1.80 (unified) to selected 1.137 (unified)

Align `-offset indent' and `D1' by forcing BLOCKQUOTE to have a 5ex
margin.  This is dubious: the HTML4 spec specifically says that
BLOCKQUOTE shouldn't be abused for indentation, which is exactly what we
do.  However, `D1' needs indentation and it's the only way to force text
browsers to do so.  Alternatives?

Also remove the unused HALFINDENT defines while here.

Revision 1.80 / (download) - annotate - [select for diffs], Sat Jul 23 22:57:13 2011 UTC (12 years, 8 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_11_6, VERSION_1_11_5
Changes since 1.79: +2 -5 lines
Diff to previous 1.79 (unified) to selected 1.137 (unified)

Flip on equation printing for -T[x]html.

Revision 1.79 / (download) - annotate - [select for diffs], Thu Jul 21 11:34:53 2011 UTC (12 years, 8 months ago) by kristaps
Branch: MAIN
Changes since 1.78: +3 -3 lines
Diff to previous 1.78 (unified) to selected 1.137 (unified)

Flip eqn into using parsed nodes.  I've temporarily disabled printing
these in the front-ends except for -Ttree, which will display the parsed
tree.

While here, fix that quoted strings aren't scanned for replacement parts.

Revision 1.78 / (download) - annotate - [select for diffs], Thu Jul 7 13:54:36 2011 UTC (12 years, 8 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_11_4
Changes since 1.77: +20 -18 lines
Diff to previous 1.77 (unified) to selected 1.137 (unified)

Considerably fix up -man -T[x]html's handling of verbatim spaces (`nf'),
which before were being handled erratically.

Revision 1.77 / (download) - annotate - [select for diffs], Thu Jul 7 13:26:25 2011 UTC (12 years, 8 months ago) by kristaps
Branch: MAIN
Changes since 1.76: +15 -79 lines
Diff to previous 1.76 (unified) to selected 1.137 (unified)

Clean up how -man -T[x]html handles TP, IP, and HP (dd lists and
indented paragraph macros, respectively).  This cleans up code and also
cleans up the output quite a lot.

Revision 1.76 / (download) - annotate - [select for diffs], Sun Jul 3 22:57:32 2011 UTC (12 years, 8 months ago) by kristaps
Branch: MAIN
Changes since 1.75: +3 -1 lines
Diff to previous 1.75 (unified) to selected 1.137 (unified)

Fix a TODO noted by schwarze@, originally by Christian Weisgerber:
literal mode (`nf') is ended by SH (and, it turns out, SS as well).
Noted the updated behaviour in man.7 as well.

Revision 1.75 / (download) - annotate - [select for diffs], Wed Jun 29 15:38:09 2011 UTC (12 years, 9 months ago) by kristaps
Branch: MAIN
Changes since 1.74: +4 -3 lines
Diff to previous 1.74 (unified) to selected 1.137 (unified)

First fix how `sp 1' doesn't imply `1v' (it now does) and that 1
followed by non-digits, e.g. `1g', really means `1'.  Next, fix some
spacing issues where `sp' was invoked in -man after sections or
subsections.  Make sure this behaviour is mirrored in -Thtml.

Revision 1.74 / (download) - annotate - [select for diffs], Sat Jun 18 20:34:08 2011 UTC (12 years, 9 months ago) by kristaps
Branch: MAIN
Changes since 1.73: +29 -5 lines
Diff to previous 1.73 (unified) to selected 1.137 (unified)

Make -T[x]html in -man also be aware of the vertical-space issues in the
last few commits.

Revision 1.73 / (download) - annotate - [select for diffs], Sat Jun 18 17:58:48 2011 UTC (12 years, 9 months ago) by kristaps
Branch: MAIN
Changes since 1.72: +1 -2 lines
Diff to previous 1.72 (unified) to selected 1.137 (unified)

Fix two TODOs with one check-in.  Both of these relate to vertical space
before paragraphs and/or within `RS' blocks.

Revision 1.72 / (download) - annotate - [select for diffs], Tue May 17 11:34:31 2011 UTC (12 years, 10 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_11_3
Changes since 1.71: +6 -6 lines
Diff to previous 1.71 (unified) to selected 1.137 (unified)

Cleanups in -T[x]html: make html_idcat() use the buffer and be called
bufcat_id(), then collapse it into a little function without so much
crap.  Next, make bufinit() only be called when we really need to do so,
and not simply before pre/post calls.

Revision 1.71 / (download) - annotate - [select for diffs], Tue May 17 11:19:45 2011 UTC (12 years, 10 months ago) by kristaps
Branch: MAIN
Changes since 1.70: +2 -2 lines
Diff to previous 1.70 (unified) to selected 1.137 (unified)

Clean-ups in -T[x]html: inline print_num(), as it was just a single
conditional; same for print_xmltype() and print_doctype(), same reason;
make bufncat() be static, as it was only being called from html.c;
have bufcat() simply call through to strlcat().  Finally, assert()
whenever we truncate.

Also rename buffmt() -> bufcat_fmt() to differentiate from buffmt_man et
al., which do not concatenate.

Revision 1.70 / (download) - annotate - [select for diffs], Mon Mar 7 01:35:51 2011 UTC (13 years ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_11_2, VERSION_1_11_1, VERSION_1_10_10
Changes since 1.69: +3 -9 lines
Diff to previous 1.69 (unified) to selected 1.137 (unified)

Clean up date handling,
as a first step to get rid of the frequent petty warnings in this area:
 - always store dates as strings, not as seconds since the Epoch
 - for input, try the three most common formats everywhere
 - for unrecognized format, just pass the date though verbatim
 - when there is no date at all, still use the current date
Originally triggered by a one-line patch from Tim van der Molen,
<tbvdm at xs4all dot nl>, which is included here.
Feedback and OK on manual parts from jmc@.
"please check this in" kristaps@

Revision 1.69 / (download) - annotate - [select for diffs], Wed Feb 9 09:52:47 2011 UTC (13 years, 1 month ago) by kristaps
Branch: MAIN
Changes since 1.68: +8 -2 lines
Diff to previous 1.68 (unified) to selected 1.137 (unified)

EQN blocks are now printed in all modes.  This is simply a printing of
the concatenated string (in -T[x]html, it gets a SPAN, too).

Revision 1.68 / (download) - annotate - [select for diffs], Sun Feb 6 21:44:36 2011 UTC (13 years, 1 month ago) by kristaps
Branch: MAIN
Changes since 1.67: +3 -1 lines
Diff to previous 1.67 (unified) to selected 1.137 (unified)

Add initial libmdoc and libman top-most machinery for accepting TBL
directives.  For now this will just ignore them (except for -Ttree,
which just notes that an EQN's been accepted).

Revision 1.67 / (download) - annotate - [select for diffs], Mon Jan 17 00:21:29 2011 UTC (13 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.66: +3 -3 lines
Diff to previous 1.66 (unified) to selected 1.137 (unified)

Refrain from throwing fatal errors for
* .br .sp .nf .fi .na with arguments - just skip the arguments
* .TH lacking arguments - use empty strings instead like groff
* .TH with excessive arguments - skip those
Reminded by joerg@, ok kristaps@.

Revision 1.66 / (download) - annotate - [select for diffs], Thu Jan 13 14:30:13 2011 UTC (13 years, 2 months ago) by kristaps
Branch: MAIN
Changes since 1.65: +17 -3 lines
Diff to previous 1.65 (unified) to selected 1.137 (unified)

Change how -Thtml behaves with tables: use multiple rows, with widths
set by COL, until an external macro is encountered.  At this point in
time, close out the table and process the macro.  When the first table
row is again re-encountered, re-start the table.  This requires a bit of
tracking added to "struct html", but the change is very small and
follows the logic of meta-fonts.  This all follows a bug-report by
joerg@.

Revision 1.65 / (download) - annotate - [select for diffs], Wed Jan 12 15:41:09 2011 UTC (13 years, 2 months ago) by kristaps
Branch: MAIN
Changes since 1.64: +16 -6 lines
Diff to previous 1.64 (unified) to selected 1.137 (unified)

Bring in -Tascii comments for -Thtml MANH_LITERAL line-breaking stuff.

Revision 1.64 / (download) - annotate - [select for diffs], Wed Jan 12 15:31:17 2011 UTC (13 years, 2 months ago) by kristaps
Branch: MAIN
Changes since 1.63: +6 -14 lines
Diff to previous 1.63 (unified) to selected 1.137 (unified)

Make sure that -Thtml doesn't break within literal lines.  This is the
same logic as the -Tascii case.  Also remove the TODO.

Revision 1.63 / (download) - annotate - [select for diffs], Wed Jan 12 10:43:22 2011 UTC (13 years, 2 months ago) by kristaps
Branch: MAIN
Changes since 1.62: +10 -1 lines
Diff to previous 1.62 (unified) to selected 1.137 (unified)

If the first character of free-form text is whitespace, then a newline
shall precede outputted text (surprise!).

Revision 1.62 / (download) - annotate - [select for diffs], Fri Jan 7 13:20:58 2011 UTC (13 years, 2 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_10_9
Changes since 1.61: +3 -5 lines
Diff to previous 1.61 (unified) to selected 1.137 (unified)

Quiesce lint with some type handling.  Does not change anything.

Revision 1.61 / (download) - annotate - [select for diffs], Tue Jan 4 10:31:15 2011 UTC (13 years, 2 months ago) by kristaps
Branch: MAIN
Changes since 1.60: +11 -4 lines
Diff to previous 1.60 (unified) to selected 1.137 (unified)

Protect tbl nodes from getting a post call.

Revision 1.60 / (download) - annotate - [select for diffs], Tue Jan 4 10:29:41 2011 UTC (13 years, 2 months ago) by kristaps
Branch: MAIN
Changes since 1.59: +3 -2 lines
Diff to previous 1.59 (unified) to selected 1.137 (unified)

Add skeleton for -T[x]html tbl stuff.  Also start to put in some bits about
the up-coming version, although we're not quite there yet.

Revision 1.59 / (download) - annotate - [select for diffs], Tue Jan 4 01:23:18 2011 UTC (13 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.58: +10 -22 lines
Diff to previous 1.58 (unified) to selected 1.137 (unified)

Multiple man(7) .IP and .TP fixes started during p2k10:

Affecting both -Tascii and -Thtml:
* The .IP HEAD uses the second argument as the width, not the last one.
* Only print the first .IP HEAD argument, not all but the last.

Affecting only -Tascii:
* The .IP and .TP HEADs must be printed without literal mode,
but literal mode must be restored afterwards.
* After the .IP and .TP bodies, we only want term_newln(), not
term_flushln(), or we would get two blank lines in literal mode.
* The .TP HEAD does not use TWOSPACE, just like .IP doesn't either.
* In literal mode, clear NOLPAD after each line, or subsequent lines
would get no indentation whatsoever.

Affecting only -Thtml:
* Only print next-line .TP children, instead of all but the first.

OK kristaps@ on the -Tascii part; and:
"Can you work this into man_html.c, too?"

Revision 1.58 / (download) - annotate - [select for diffs], Sat Jan 1 12:59:17 2011 UTC (13 years, 2 months ago) by kristaps
Branch: MAIN
Changes since 1.57: +6 -13 lines
Diff to previous 1.57 (unified) to selected 1.137 (unified)

Add -man support for tables.  Like -mdoc, this consists of an
external-facing function man_addspan() (this required shuffling around
the descope routine) and hooks elsewhere.

Also fixed mdoc.c's post-validation of tables.

Revision 1.57 / (download) - annotate - [select for diffs], Fri Dec 24 00:46:49 2010 UTC (13 years, 3 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_10_8
Changes since 1.56: +24 -29 lines
Diff to previous 1.56 (unified) to selected 1.137 (unified)

Drastically fix -T[x]html's handling of font-escape mode changes (i.e.,
using \fI or \fP).  Now, using these modes will cause a font to be
rendered for each word; furthermore, setting mode within a word will do
the correct thing.

Second, make -man use real font tags (B, I, SMALL) to set its font
instead of using font modes and fix up the pre-macro unsetting of the
current mode.

This fixes how roff.7 wasn't validating (<P> closing out a font mode)
and has been checked against gcc.1 (more will come).  I considered
failure to validate OUR manual to be a show-stopper for the up-coming
release.

Revision 1.56 / (download) - annotate - [select for diffs], Wed Dec 22 09:51:27 2010 UTC (13 years, 3 months ago) by kristaps
Branch: MAIN
Changes since 1.55: +79 -97 lines
Diff to previous 1.55 (unified) to selected 1.137 (unified)

Throw out negative margin garbage in -man -T[x]html in favour of using
TABLE and P and so on.  Now renders in text-based browsers.

Revision 1.55 / (download) - annotate - [select for diffs], Fri Dec 17 08:26:42 2010 UTC (13 years, 3 months ago) by kristaps
Branch: MAIN
Changes since 1.54: +19 -32 lines
Diff to previous 1.54 (unified) to selected 1.137 (unified)

Banished -man -Thtml header and footer to example.style.css as well.

Revision 1.54 / (download) - annotate - [select for diffs], Fri Dec 17 00:18:29 2010 UTC (13 years, 3 months ago) by kristaps
Branch: MAIN
Changes since 1.53: +13 -57 lines
Diff to previous 1.53 (unified) to selected 1.137 (unified)

Significantly clean up Sh, Ss, SH, and SS handling in -Thtml.  Now a
top-level DIV is used with only an H1 or H2 as the section header.  This
makes manuals much more readable in lynx, less complicated, and
relegates left-margin widths to example.style.css.

Revision 1.53 / (download) - annotate - [select for diffs], Wed Dec 15 17:19:41 2010 UTC (13 years, 3 months ago) by kristaps
Branch: MAIN
Changes since 1.52: +2 -9 lines
Diff to previous 1.52 (unified) to selected 1.137 (unified)

Use a single P tag for paragraph breaks (which can be configured for
paragraph breaking in CSS).

Use -man's handling of `sp' and `br', which accomodates for scaling
widths (-mdoc wasn't).

Revision 1.52 / (download) - annotate - [select for diffs], Wed Dec 8 10:58:22 2010 UTC (13 years, 3 months ago) by kristaps
Branch: MAIN
Changes since 1.51: +1 -3 lines
Diff to previous 1.51 (unified) to selected 1.137 (unified)

Remove `i' and `r' macro handlers.  These macros, originally part of the
me package, aren't recognised by "groff -mandoc" so we don't need to do
so either.  Discussed on tech@ with schwarze@.

While at it, remove references to `b' in man.7.  As far as I know, this
was never supported anyway.

Revision 1.51 / (download) - annotate - [select for diffs], Mon Dec 6 15:31:44 2010 UTC (13 years, 3 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_10_7
Changes since 1.50: +2 -2 lines
Diff to previous 1.50 (unified) to selected 1.137 (unified)

Typo: man_in_pre -> man_ign_pre for `ft'.

Revision 1.50 / (download) - annotate - [select for diffs], Mon Dec 6 15:31:19 2010 UTC (13 years, 3 months ago) by kristaps
Branch: MAIN
Changes since 1.49: +2 -1 lines
Diff to previous 1.49 (unified) to selected 1.137 (unified)

Add support for `ft' macro found in groff(7).  Based on a patch by
schwarze@, but without the -T[x]html handling, which structurally does
not work.  Also add man.7 documentation (not in original patch).

Revision 1.49 / (download) - annotate - [select for diffs], Mon Dec 6 14:12:48 2010 UTC (13 years, 3 months ago) by kristaps
Branch: MAIN
Changes since 1.48: +3 -7 lines
Diff to previous 1.48 (unified) to selected 1.137 (unified)

Small merges from schwarze@'s man_html.c edits.

Revision 1.48 / (download) - annotate - [select for diffs], Mon Dec 6 14:07:01 2010 UTC (13 years, 3 months ago) by kristaps
Branch: MAIN
Changes since 1.47: +3 -7 lines
Diff to previous 1.47 (unified) to selected 1.137 (unified)

Let some man_term.c cleanups bleed into man_html.c.

Revision 1.47 / (download) - annotate - [select for diffs], Mon Dec 6 13:53:07 2010 UTC (13 years, 3 months ago) by kristaps
Branch: MAIN
Changes since 1.46: +5 -2 lines
Diff to previous 1.46 (unified) to selected 1.137 (unified)

Header for `PP', `P', and `LP' should never be printed.

Revision 1.46 / (download) - annotate - [select for diffs], Sun Dec 5 16:14:16 2010 UTC (13 years, 3 months ago) by kristaps
Branch: MAIN
Changes since 1.45: +2 -10 lines
Diff to previous 1.45 (unified) to selected 1.137 (unified)

Remove `Sp', `Vb', and `Ve' (as per schwarze@'s changes in OpenBSD),
which are now accomodated for the new libroff modifications.

Revision 1.45 / (download) - annotate - [select for diffs], Fri Jul 23 12:27:28 2010 UTC (13 years, 8 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_10_6, VERSION_1_10_5_PREPDF, VERSION_1_10_5
Changes since 1.44: +65 -19 lines
Diff to previous 1.44 (unified) to selected 1.137 (unified)

Enable literal contexts (Vb/nf) in -T[x]html -man.  This requires that a
new struct pass down in the call-tree (as also in man_term.c).

Also add a line-break for `in', which isn't otherwise supported (yet).

Now -Thtml -man cvs.1 for GNU's cvs.1 isn't as ugly.

Revision 1.44 / (download) - annotate - [select for diffs], Thu Jul 22 23:53:54 2010 UTC (13 years, 8 months ago) by kristaps
Branch: MAIN
Changes since 1.43: +2 -2 lines
Diff to previous 1.43 (unified) to selected 1.137 (unified)

Fix broken compilation, hopefully before anybody notices.

Revision 1.43 / (download) - annotate - [select for diffs], Thu Jul 22 23:03:15 2010 UTC (13 years, 8 months ago) by kristaps
Branch: MAIN
Changes since 1.42: +2 -1 lines
Diff to previous 1.42 (unified) to selected 1.137 (unified)

Added `in' macro support for -man -Tascii.  This is not yet supported in
-Thtml (I'm surprised to note that neither is LITERAL mode).

Revision 1.42 / (download) - annotate - [select for diffs], Tue Jul 13 23:53:20 2010 UTC (13 years, 8 months ago) by schwarze
Branch: MAIN
Changes since 1.41: +2 -2 lines
Diff to previous 1.41 (unified) to selected 1.137 (unified)

correct lots of copyright notices;
ok kristaps@

Revision 1.41 / (download) - annotate - [select for diffs], Wed Jul 7 15:04:54 2010 UTC (13 years, 8 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_10_4
Changes since 1.40: +1 -2 lines
Diff to previous 1.40 (unified) to selected 1.137 (unified)

Re-constitution of `ds' symbol processing.  First, push the
roff_getstr() family of functions into roff.c with the "first_string"
directly in struct roff.  Second, pre-process each line for reserved
words in libroff, splicing and re-running a line if it has one (this
allows defined symbols to be macros).  Remove term.c's invocation of the
roff_getstrn() function.  Removed function documentation in roff.3 and
added roff.7 `ds' documentation.

Revision 1.40 / (download) - annotate - [select for diffs], Sun Jun 27 16:18:13 2010 UTC (13 years, 9 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_10_3
Changes since 1.39: +2 -1 lines
Diff to previous 1.39 (unified) to selected 1.137 (unified)

Following clue-stick applied by schwarze@, back out const-ness of regset
passed in to libmdoc and libman.

Fix mdoc.3 and man.3 EXAMPLE sections to include regset.

Add MDOC_SYNPRETTY flag cueing front-end to nicely format certain values
as if SEC_SYNOPSIS were the current section.

Revision 1.39 / (download) - annotate - [select for diffs], Sun Jun 27 15:52:41 2010 UTC (13 years, 9 months ago) by kristaps
Branch: MAIN
Changes since 1.38: +1 -2 lines
Diff to previous 1.38 (unified) to selected 1.137 (unified)

Downstream maintainers: this removes UGLY!  I don't want diverging
functionality and UGLY works quite well thanks to schwarze@'s careful
attention.

This also backs out function-prototype changes for struct regset,
instead stuffing a pointer to the regset directly into struct
mdoc/man/roff.

Revision 1.38 / (download) - annotate - [select for diffs], Sat Jun 26 15:36:37 2010 UTC (13 years, 9 months ago) by kristaps
Branch: MAIN
Changes since 1.37: +2 -1 lines
Diff to previous 1.37 (unified) to selected 1.137 (unified)

Churn-ish check-in getting mdoc_parseln() and man_parseln() to accept a
const struct regset pointer.  No functionality.

Revision 1.37 / (download) - annotate - [select for diffs], Sat Jun 19 20:46:28 2010 UTC (13 years, 9 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_10_2
Changes since 1.36: +2 -2 lines
Diff to previous 1.36 (unified) to selected 1.137 (unified)

Churn as I finish email address migration kth.se -> bsd.lv.

Revision 1.36 / (download) - annotate - [select for diffs], Wed May 26 14:03:54 2010 UTC (13 years, 10 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_10_1
Changes since 1.35: +5 -2 lines
Diff to previous 1.35 (unified) to selected 1.137 (unified)

Allow bad -man dates to flow verbatim into the front-ends.  Noted by
Ulrich Spoerlein.

Revision 1.35 / (download) - annotate - [select for diffs], Mon May 17 22:11:42 2010 UTC (13 years, 10 months ago) by kristaps
Branch: MAIN
Changes since 1.34: +2 -1 lines
Diff to previous 1.34 (unified) to selected 1.137 (unified)

Enable the unified error/warning enumeration in mandoc.h that's
stringified in main.c.

Allow `An' to handle an argument and child (with a warning).

Allow `Rv' and `Ex' to work without a prior `Nm' as groff does (with a
warning).

Allow inconsistent column syntax to only raise a warning.

Revision 1.34 / (download) - annotate - [select for diffs], Mon May 17 10:50:32 2010 UTC (13 years, 10 months ago) by joerg
Branch: MAIN
Changes since 1.33: +2 -1 lines
Diff to previous 1.33 (unified) to selected 1.137 (unified)

Add support for .AT. Properly implement .UC. Add regress tests.

Revision 1.33 / (download) - annotate - [select for diffs], Sat May 15 22:44:04 2010 UTC (13 years, 10 months ago) by kristaps
Branch: MAIN
Changes since 1.32: +1 -6 lines
Diff to previous 1.32 (unified) to selected 1.137 (unified)

Remove `am', `ami', `de', `dei', and `.' from -man, as they're now in the roff preprocessor.

Revision 1.32 / (download) - annotate - [select for diffs], Sat May 15 20:51:40 2010 UTC (13 years, 10 months ago) by kristaps
Branch: MAIN
Changes since 1.31: +1 -2 lines
Diff to previous 1.31 (unified) to selected 1.137 (unified)

Pull `ig' out of -man and leave it the roff preparser.

Revision 1.31 / (download) - annotate - [select for diffs], Sat May 15 15:54:39 2010 UTC (13 years, 10 months ago) by kristaps
Branch: MAIN
Changes since 1.30: +3 -3 lines
Diff to previous 1.30 (unified) to selected 1.137 (unified)

Removed restriction on integer manual sections in -man.

Revision 1.30 / (download) - annotate - [select for diffs], Wed Mar 24 20:10:53 2010 UTC (14 years ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_9_25, VERSION_1_9_24, VERSION_1_9_23, VERSION_1_9_22, VERSION_1_9_21, VERSION_1_9_20, VERSION_1_9_19, VERSION_1_9_18, VERSION_1_9_17
Changes since 1.29: +8 -2 lines
Diff to previous 1.29 (unified) to selected 1.137 (unified)

Using man_node_delete() instead of man_node_free()/man_node_freelist() and friends (much simpler).
Split blk_imp() into blk_exp() (explicit macros), blk_dotted() (roff macros), and the original.
Added de, dei, am, ami, and ig roff macros (for now, these are discarded within the parse).

Revision 1.29 / (download) - annotate - [select for diffs], Tue Mar 23 11:30:48 2010 UTC (14 years ago) by kristaps
Branch: MAIN
Changes since 1.28: +15 -4 lines
Diff to previous 1.28 (unified) to selected 1.137 (unified)

Support for pod2man standard header macros (Vb, Ve, Sp).  Based largely on a set of patches by Ingo Schwarze.

Revision 1.28 / (download) - annotate - [select for diffs], Mon Mar 22 14:03:03 2010 UTC (14 years ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_9_16
Changes since 1.27: +23 -5 lines
Diff to previous 1.27 (unified) to selected 1.137 (unified)

Clarify -man -T[x]html handling of `br' within `B'.
Consolidated node unlinking in -man.
Conclude nested next-line scope issues noted by Ingo Schwarze.

Revision 1.27 / (download) - annotate - [select for diffs], Mon Mar 22 05:59:32 2010 UTC (14 years ago) by kristaps
Branch: MAIN
Changes since 1.26: +8 -2 lines
Diff to previous 1.26 (unified) to selected 1.137 (unified)

Accomodate (libman) for next-line macros followed by non-text macros `na', `sp', and `br'.
Based on a patch by Ingo Schwarze.

Revision 1.26 / (download) - annotate - [select for diffs], Fri Jan 29 14:39:38 2010 UTC (14 years, 2 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_9_15
Changes since 1.25: +2 -2 lines
Diff to previous 1.25 (unified) to selected 1.137 (unified)

Fixed Makefile for `make lint' dep. on config.h
Added -Txhtml for XHTML output (minimal increase to programme logic).  Because groff has it and it bothers me that we don't.

Revision 1.25 / (download) - annotate - [select for diffs], Fri Jan 1 17:14:28 2010 UTC (14 years, 2 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_9_15-pre2
Changes since 1.24: +5 -6 lines
Diff to previous 1.24 (unified) to selected 1.137 (unified)

Big check-in of compatibility layer.  This should work on most major architectures. Thanks to Joerg Sonnenberger.

Revision 1.24 / (download) - annotate - [select for diffs], Mon Nov 16 08:46:59 2009 UTC (14 years, 4 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_9_15-pre1, VERSION_1_9_14
Changes since 1.23: +9 -3 lines
Diff to previous 1.23 (unified) to selected 1.137 (unified)

Enabled -Thtml -mdoc to work with \f (see compat notes in mandoc.1).

Revision 1.23 / (download) - annotate - [select for diffs], Mon Nov 16 06:07:49 2009 UTC (14 years, 4 months ago) by kristaps
Branch: MAIN
Changes since 1.22: +13 -20 lines
Diff to previous 1.22 (unified) to selected 1.137 (unified)

Abstraction of -Thtml -man font setting (still experimental).

Revision 1.22 / (download) - annotate - [select for diffs], Sun Nov 15 06:53:59 2009 UTC (14 years, 4 months ago) by kristaps
Branch: MAIN
Changes since 1.21: +7 -7 lines
Diff to previous 1.21 (unified) to selected 1.137 (unified)

Fixed -Thtml -man PP left- and top-margin.

Revision 1.21 / (download) - annotate - [select for diffs], Sun Nov 15 06:45:31 2009 UTC (14 years, 4 months ago) by kristaps
Branch: MAIN
Changes since 1.20: +19 -12 lines
Diff to previous 1.20 (unified) to selected 1.137 (unified)

\f escapes appear to work properly for -Thtml -man.  Needs more testing.

Revision 1.20 / (download) - annotate - [select for diffs], Sat Nov 14 19:23:58 2009 UTC (14 years, 4 months ago) by kristaps
Branch: MAIN
Changes since 1.19: +6 -4 lines
Diff to previous 1.19 (unified) to selected 1.137 (unified)

Initial check-in of -man -Thtml \f support (needs testing).

Revision 1.19 / (download) - annotate - [select for diffs], Sat Nov 14 11:58:36 2009 UTC (14 years, 4 months ago) by kristaps
Branch: MAIN
Changes since 1.18: +2 -5 lines
Diff to previous 1.18 (unified) to selected 1.137 (unified)

Fixed \c handling in -Thtml.

Revision 1.18 / (download) - annotate - [select for diffs], Tue Nov 10 12:03:30 2009 UTC (14 years, 4 months ago) by kristaps
Branch: MAIN
Changes since 1.17: +4 -1 lines
Diff to previous 1.17 (unified) to selected 1.137 (unified)

Noted that -man text decoration is re-set when exiting a macro invocation.

Revision 1.17 / (download) - annotate - [select for diffs], Fri Oct 30 18:53:08 2009 UTC (14 years, 5 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_9_13, VERSION_1_9_12
Changes since 1.16: +1 -2 lines
Diff to previous 1.16 (unified) to selected 1.137 (unified)

More lint fixes.
Removed err.h from inclusions (less main.c--still in progress).

Revision 1.16 / (download) - annotate - [select for diffs], Wed Oct 28 08:00:18 2009 UTC (14 years, 5 months ago) by kristaps
Branch: MAIN
Changes since 1.15: +4 -1 lines
Diff to previous 1.15 (unified) to selected 1.137 (unified)

Fixed `sp', `br', `Pp', etc. so as not to have an empty div (-Thtml, -man, -mdoc).
Made html_idcat be completely correct (messy standard) (-Thtml).
Fixed warnings about -ohang and -item lists (-Thtml, -mdoc).
Fixed typo in index.sgml.

Revision 1.15 / (download) - annotate - [select for diffs], Tue Oct 27 04:50:15 2009 UTC (14 years, 5 months ago) by kristaps
Branch: MAIN
Changes since 1.14: +9 -5 lines
Diff to previous 1.14 (unified) to selected 1.137 (unified)

Added "summary" tag to tables in order to silence HTML-tidy's complaints.

Revision 1.14 / (download) - annotate - [select for diffs], Mon Oct 26 08:18:16 2009 UTC (14 years, 5 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_9_11, VERSION_1_9_10
Changes since 1.13: +2 -3 lines
Diff to previous 1.13 (unified) to selected 1.137 (unified)

Portability: replaced queue macros in html.c (Joerg Sonnenberger).
Fixed "-o" residue.
Added "-O" to usage() (-o didn't appear there either).

Revision 1.13 / (download) - annotate - [select for diffs], Sat Oct 24 05:45:04 2009 UTC (14 years, 5 months ago) by kristaps
Branch: MAIN
Changes since 1.12: +3 -1 lines
Diff to previous 1.12 (unified) to selected 1.137 (unified)

Added `PD' to -man (doesn't do anything, yet).

Revision 1.12 / (download) - annotate - [select for diffs], Thu Oct 22 18:55:32 2009 UTC (14 years, 5 months ago) by kristaps
Branch: MAIN
Changes since 1.11: +3 -7 lines
Diff to previous 1.11 (unified) to selected 1.137 (unified)

Fixed maddening mismatch between groff and strftime mismatch of day ("%e").  Noted by Ulrich Sporlein.

Revision 1.11 / (download) - annotate - [select for diffs], Sun Oct 18 19:03:36 2009 UTC (14 years, 5 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_9_9
Changes since 1.10: +5 -7 lines
Diff to previous 1.10 (unified) to selected 1.137 (unified)

Made sure devices and formats recognise that -man and -mdoc have different syntax for scaling widths: -mdoc assumes no unit means that the value is a string literal while -man instead uses the default vertical/horizontal scale.

Revision 1.10 / (download) - annotate - [select for diffs], Tue Oct 13 10:57:25 2009 UTC (14 years, 5 months ago) by kristaps
Branch: MAIN
Changes since 1.9: +2 -1 lines
Diff to previous 1.9 (unified) to selected 1.137 (unified)

Moved output definitions into main.h.
Pushed terminal_{mdoc,man} into {mdoc,man}_term.c.

Revision 1.9 / (download) - annotate - [select for diffs], Fri Oct 9 07:10:37 2009 UTC (14 years, 5 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_9_8, VERSION_1_9_7
Changes since 1.8: +34 -2 lines
Diff to previous 1.8 (unified) to selected 1.137 (unified)

RS tags implemented for -Tman -Thtml.

Revision 1.8 / (download) - annotate - [select for diffs], Thu Oct 8 23:00:15 2009 UTC (14 years, 5 months ago) by kristaps
Branch: MAIN
Changes since 1.7: +129 -15 lines
Diff to previous 1.7 (unified) to selected 1.137 (unified)

Consolidated some -man -Tascii functions.
Added many -man -Thtml functions (almost complete).

Revision 1.7 / (download) - annotate - [select for diffs], Wed Oct 7 12:35:23 2009 UTC (14 years, 5 months ago) by kristaps
Branch: MAIN
Changes since 1.6: +137 -144 lines
Diff to previous 1.6 (unified) to selected 1.137 (unified)

Additions to -Tman -Thtml: all structural components tested & in place.
Fitted both -Thtml with handling of arbitrary vertical and horizontal scaling units (see groff(7)).  Undocumented until fitted into -Tascii (next release).

Revision 1.6 / (download) - annotate - [select for diffs], Sun Oct 4 15:24:54 2009 UTC (14 years, 5 months ago) by kristaps
Branch: MAIN
Changes since 1.5: +78 -21 lines
Diff to previous 1.5 (unified) to selected 1.137 (unified)

Structural components of -man -Thtml in place (note that HP is the same as IP, as HTML doesn't "do" this construction without fixed page widths).

Revision 1.5 / (download) - annotate - [select for diffs], Sun Oct 4 10:24:31 2009 UTC (14 years, 5 months ago) by kristaps
Branch: MAIN
Changes since 1.4: +93 -6 lines
Diff to previous 1.4 (unified) to selected 1.137 (unified)

Initial IP implementation in -Thtml -man.

Revision 1.4 / (download) - annotate - [select for diffs], Sun Oct 4 09:35:26 2009 UTC (14 years, 5 months ago) by kristaps
Branch: MAIN
Changes since 1.3: +303 -10 lines
Diff to previous 1.3 (unified) to selected 1.137 (unified)

SS, SH, PP, P, LP, br, sp tags in -man -Thtml.

Revision 1.3 / (download) - annotate - [select for diffs], Sat Oct 3 19:57:53 2009 UTC (14 years, 5 months ago) by kristaps
Branch: MAIN
Changes since 1.2: +97 -2 lines
Diff to previous 1.2 (unified) to selected 1.137 (unified)

Added initial -man framework for -Thtml.

Revision 1.2 / (download) - annotate - [select for diffs], Sat Oct 3 15:08:09 2009 UTC (14 years, 5 months ago) by kristaps
Branch: MAIN
Changes since 1.1: +2 -1 lines
Diff to previous 1.1 (unified) to selected 1.137 (unified)

Element tag buffer is now part of struct html.
buffmt() can be called in sequence.
Noted BUFSIZ-sized buffer in CAVEATS (attribute length for link formats).
Added -oman=FMT -Thtml option for `Xr' manual links.
Removed -obase=URI -Thtml option (obsolete).

Revision 1.1 / (download) - annotate - [select for diffs], Mon Sep 21 14:56:57 2009 UTC (14 years, 6 months ago) by kristaps
Branch: MAIN
CVS Tags: VERSION_1_9_6, VERSION_1_9_5
Diff to selected 1.137 (unified)

Split html.c into html.h, mdoc_html.c, man_html.c.

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.




CVSweb