OpenBSD CVS

CVS log for src/usr.bin/mandoc/man.c


[BACK] Up to [local] / src / usr.bin / mandoc

Request diff between arbitrary revisions


Default branch: MAIN


Revision 1.137 / (download) - annotate - [select for diffs], Tue Aug 16 22:59:48 2022 UTC (21 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_7_5_BASE, OPENBSD_7_5, OPENBSD_7_4_BASE, OPENBSD_7_4, OPENBSD_7_3_BASE, OPENBSD_7_3, OPENBSD_7_2_BASE, OPENBSD_7_2, HEAD
Changes since 1.136: +10 -11 lines
Diff to previous 1.136 (colored)

Restore the traditional behaviour of the man(7) single-font
macros .B, .I, .SM, and .SB that the next-line scope extends
to the end of the next logical input line and is not extended
if that line ends with a \c (no-space) escape sequence.

While improving a loosely related feature in the man(7) .TP
macro, a regression entered the groff codebase in groff
commit 3549fd9f (28-Apr-2017) caused by the usual sloppiness
of Bjarni Ingi Gislason.  Since that time, groff wrongly had \c
extend next-line scope to a second line for these macros.
In man.c rev. 1.127 (25-Aug-2018) i synched mandoc behaviour
with groff in this respect, unfortunately failing to notice
the recent regression in groff.  The groff regression was
finally fixed by gbranden@ in commit 09c028f3 (07-Jun-2022).

With the present commit, mandoc is back in sync with both GNU and
Heirloom roff regarding the interaction of single-font macros with \c.

Revision 1.136 / (download) - annotate - [select for diffs], Thu Apr 28 10:17:37 2022 UTC (2 years ago) by schwarze
Branch: MAIN
Changes since 1.135: +18 -6 lines
Diff to previous 1.135 (colored)

Element next-line scopes may nest, so man_breakscope() may have to
break multiple element next-line scopes at the same time, similar to
what man_descope() already does for unconditional rewinding.

This fixes an assertion failure that tb@ found with afl(1), caused
by .SH .I .I .BI and similar sequences of macros without arguments.

Revision 1.135 / (download) - annotate - [select for diffs], Sat Jan 5 00:36:46 2019 UTC (5 years, 4 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_7_1_BASE, OPENBSD_7_1, OPENBSD_7_0_BASE, OPENBSD_7_0, OPENBSD_6_9_BASE, OPENBSD_6_9, OPENBSD_6_8_BASE, OPENBSD_6_8, OPENBSD_6_7_BASE, OPENBSD_6_7, OPENBSD_6_6_BASE, OPENBSD_6_6, OPENBSD_6_5_BASE, OPENBSD_6_5
Changes since 1.134: +6 -6 lines
Diff to previous 1.134 (colored)

Some high-level block macros have an effect similar to temporarily
suspending no-fill mode during their head.  Model this with an
additional roff parser state flag ROFF_NONOFILL.  That is much
simpler than it would be to save and restore the ROFF_NOFILL flag
itself, in particular since the latter can be switched (with lasting
effect) by the .nf and .fi requests even while its effect is
temporarily suspended.

This commit does not change formatting yet, but prepares for future
formatting simplifications and improvements.

Revision 1.134 / (download) - annotate - [select for diffs], Mon Dec 31 10:03:38 2018 UTC (5 years, 4 months ago) by schwarze
Branch: MAIN
Changes since 1.133: +1 -20 lines
Diff to previous 1.133 (colored)

Cleanup, no functional change:
Since the man(7) and roff(7) validators no longer use the parser
state flag ROFF_NOFILL, we can finally get rid of the function
man_state(), resulting in a better separation of parsing and validation.

Revision 1.133 / (download) - annotate - [select for diffs], Mon Dec 31 08:38:17 2018 UTC (5 years, 4 months ago) by schwarze
Branch: MAIN
Changes since 1.132: +1 -6 lines
Diff to previous 1.132 (colored)

Use the new flag NODE_NOFILL in the validators, which is sometimes
simpler and always more robust.  In particular, move the nesting
warnings for .EX and .EE from man_state(), where they were misplaced,
to the man(7) validator.

Revision 1.132 / (download) - annotate - [select for diffs], Mon Dec 31 07:07:43 2018 UTC (5 years, 4 months ago) by schwarze
Branch: MAIN
Changes since 1.131: +12 -12 lines
Diff to previous 1.131 (colored)

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.131 / (download) - annotate - [select for diffs], Mon Dec 31 04:55:42 2018 UTC (5 years, 4 months ago) by schwarze
Branch: MAIN
Changes since 1.130: +1 -10 lines
Diff to previous 1.130 (colored)

Cleanup, minus 15 LOC, no functional change:
Simplify the way the man(7) and mdoc(7) validators are called.
Reset the parser state with a common function before calling them.
There is no need to again reset the parser state afterwards,
the parsers are no longer used after validation.
This allows getting rid of man_node_validate() and mdoc_node_validate()
as separate functions.

Revision 1.130 / (download) - annotate - [select for diffs], Sun Dec 30 00:48:47 2018 UTC (5 years, 4 months ago) by schwarze
Branch: MAIN
Changes since 1.129: +2 -2 lines
Diff to previous 1.129 (colored)

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.129 / (download) - annotate - [select for diffs], Fri Dec 14 05:17:45 2018 UTC (5 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.128: +11 -19 lines
Diff to previous 1.128 (colored)

Almost mechanical diff to remove the "struct mparse *" argument
from mandoc_msg(), where it is no longer used.
While here, rename mandoc_vmsg() to mandoc_msg() and retire the
old version:  There is really no point in having another function
merely to save "%s" in a few places.
Minus 140 lines of code.

Revision 1.128 / (download) - annotate - [select for diffs], Sun Aug 26 16:18:38 2018 UTC (5 years, 8 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_6_4_BASE, OPENBSD_6_4
Changes since 1.127: +18 -20 lines
Diff to previous 1.127 (colored)

Support nesting of elements with next-line scope.
For example, ksh93(1) needs this for .B\n.SM.

Revision 1.127 / (download) - annotate - [select for diffs], Sat Aug 25 12:28:52 2018 UTC (5 years, 8 months ago) by schwarze
Branch: MAIN
Changes since 1.126: +31 -18 lines
Diff to previous 1.126 (colored)

If man(7) next-line scope is open and the line ends with \c,
the scope remains open.  Needed for example for groff_man(7).

Revision 1.126 / (download) - annotate - [select for diffs], Thu Aug 23 19:32:03 2018 UTC (5 years, 8 months ago) by schwarze
Branch: MAIN
Changes since 1.125: +1 -9 lines
Diff to previous 1.125 (colored)

The upcoming .while request will have to re-execute roff(7) lines
parsed earlier, so they will have to be saved for reuse - but the
read.c preparser does not know yet whether a line contains a .while
request before passing it to the roff parser.  To cope with that,
save all parsed lines for now.  Even shortens the code by 20 lines.

Revision 1.125 / (download) - annotate - [select for diffs], Fri Aug 17 20:31:52 2018 UTC (5 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.124: +10 -10 lines
Diff to previous 1.124 (colored)

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.124 / (download) - annotate - [select for diffs], Wed Jun 28 12:52:27 2017 UTC (6 years, 10 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_6_3_BASE, OPENBSD_6_3, OPENBSD_6_2_BASE, OPENBSD_6_2
Changes since 1.123: +7 -4 lines
Diff to previous 1.123 (colored)

fix incomplete handling of roff(7) nodes in man(7) block next-line scope;
assertion failure in tclsh(1) reported by deraadt@ via bentley@

Revision 1.123 / (download) - annotate - [select for diffs], Sat Jun 17 13:05:47 2017 UTC (6 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.122: +27 -8 lines
Diff to previous 1.122 (colored)

correct handling of blank lines after \c

Revision 1.122 / (download) - annotate - [select for diffs], Sat Jun 3 15:54:09 2017 UTC (6 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.121: +7 -6 lines
Diff to previous 1.121 (colored)

ignore blank lines in man(7) next line scope;
strange groff edge case behaviour found in multimedia/mjpegtools

Revision 1.121 / (download) - annotate - [select for diffs], Mon May 8 20:33:40 2017 UTC (7 years ago) by schwarze
Branch: MAIN
Changes since 1.120: +6 -7 lines
Diff to previous 1.120 (colored)

Line-breaking roff(7) requests also break man(7) next-line scope.
Considering that real roff implements next-line scope using input
line traps, that isn't all that surprising.
Issue found in the games/xbattle port.

Revision 1.120 / (download) - annotate - [select for diffs], Fri May 5 15:16:25 2017 UTC (7 years ago) by schwarze
Branch: MAIN
Changes since 1.119: +2 -2 lines
Diff to previous 1.119 (colored)

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

Revision 1.119 / (download) - annotate - [select for diffs], Mon May 1 23:27:23 2017 UTC (7 years ago) by schwarze
Branch: MAIN
Changes since 1.118: +16 -2 lines
Diff to previous 1.118 (colored)

A few days ago, a patch from <G dot Branden dot Robinson at gmail dot com>
got committed to groff which changed .TP from using .it to using .itc,
such that groff now supports more than one man(7) macro line in the .TP
head if all but the last line in the head end with \c.

Of course, relying on that behaviour is utterly non-portable, but if
authors are reckless enough to use that idiom, let's do what they want.

Revision 1.118 / (download) - annotate - [select for diffs], Sat Apr 29 12:43:55 2017 UTC (7 years ago) by schwarze
Branch: MAIN
Changes since 1.117: +11 -18 lines
Diff to previous 1.117 (colored)

Parser unification: use nice ohashes for all three request and macro tables;
no functional change, minus two source files, minus 200 lines of code.

Revision 1.117 / (download) - annotate - [select for diffs], Mon Apr 24 23:06:09 2017 UTC (7 years ago) by schwarze
Branch: MAIN
Changes since 1.116: +5 -20 lines
Diff to previous 1.116 (colored)

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.116 / (download) - annotate - [select for diffs], Fri Mar 3 13:55:06 2017 UTC (7 years, 2 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_6_1_BASE, OPENBSD_6_1
Changes since 1.115: +2 -2 lines
Diff to previous 1.115 (colored)

remove a few redundant conditions that jsg@ found with cppcheck

Revision 1.115 / (download) - annotate - [select for diffs], Tue Jan 10 13:46:53 2017 UTC (7 years, 4 months ago) by schwarze
Branch: MAIN
Changes since 1.114: +5 -5 lines
Diff to previous 1.114 (colored)

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

Revision 1.114 / (download) - annotate - [select for diffs], Thu Oct 22 21:53:49 2015 UTC (8 years, 6 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_6_0_BASE, OPENBSD_6_0, OPENBSD_5_9_BASE, OPENBSD_5_9
Changes since 1.113: +36 -1 lines
Diff to previous 1.113 (colored)

move man(7) validation into the dedicated validation phase, too

Revision 1.113 / (download) - annotate - [select for diffs], Tue Oct 6 18:30:43 2015 UTC (8 years, 7 months ago) by schwarze
Branch: MAIN
Changes since 1.112: +11 -11 lines
Diff to previous 1.112 (colored)

modernize style: "return" is not a function; ok cmp(1)

Revision 1.112 / (download) - annotate - [select for diffs], Fri Sep 4 21:24:26 2015 UTC (8 years, 8 months ago) by schwarze
Branch: MAIN
Changes since 1.111: +15 -1 lines
Diff to previous 1.111 (colored)

Fill mode changes don't break next-line scope in all cases,
in particular not for tagged paragraphs.
Issue found by Christian Neukirchen <chneukirchen at gmail dot com>
in the exiv2(1) manual page.

Revision 1.111 / (download) - annotate - [select for diffs], Thu Apr 23 16:17:04 2015 UTC (9 years ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_5_8_BASE, OPENBSD_5_8
Changes since 1.110: +1 -47 lines
Diff to previous 1.110 (colored)

Unify mdoc_deroff() and man_deroff() into a common function deroff().
No functional change except that for mdoc(7), it now skips leading
escape sequences just like it already did for man(7).
Escape sequences rarely occur in mdoc(7) code and if they do,
skipping them is an improvement in this context.
Minus 30 lines of code.

Revision 1.110 / (download) - annotate - [select for diffs], Thu Apr 23 15:35:39 2015 UTC (9 years ago) by schwarze
Branch: MAIN
Changes since 1.109: +1 -8 lines
Diff to previous 1.109 (colored)

Get rid of two empty wrapper functions.  No functional change.

Revision 1.109 / (download) - annotate - [select for diffs], Sun Apr 19 14:57:16 2015 UTC (9 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.108: +2 -22 lines
Diff to previous 1.108 (colored)

Unify trickier node handling functions.
* man_elem_alloc() -> roff_elem_alloc()
* man_block_alloc() -> roff_block_alloc()
The functions mdoc_elem_alloc() and mdoc_block_alloc() remain for
now because they need to do mdoc(7)-specific argument processing.

Revision 1.108 / (download) - annotate - [select for diffs], Sun Apr 19 14:25:05 2015 UTC (9 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.107: +3 -59 lines
Diff to previous 1.107 (colored)

Unify some node handling functions that use TOKEN_NONE.
* mdoc_word_alloc(), man_word_alloc() -> roff_word_alloc()
* mdoc_word_append(), man_word_append() -> roff_word_append()
* mdoc_addspan(), man_addspan() -> roff_addtbl()
* mdoc_addeqn(), man_addeqn() -> roff_addeqn()
Minus 50 lines of code, no functional change.

Revision 1.107 / (download) - annotate - [select for diffs], Sun Apr 19 13:59:37 2015 UTC (9 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.106: +11 -11 lines
Diff to previous 1.106 (colored)

Decouple the token code for "no request or macro" from the individual
high-level parsers to allow further unification of functions that
only need to recognize this code, but that don't care about different
high-level macrosets beyond that.

Revision 1.106 / (download) - annotate - [select for diffs], Sun Apr 19 13:50:10 2015 UTC (9 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.105: +18 -180 lines
Diff to previous 1.105 (colored)

Unify node handling functions:
* node_alloc() for mdoc and man_node_alloc() -> roff_node_alloc()
* node_append() for mdoc and man_node_append() -> roff_node_append()
* mdoc_head_alloc() and man_head_alloc() -> roff_head_alloc()
* mdoc_body_alloc() and man_body_alloc() -> roff_body_alloc()
* mdoc_node_unlink() and man_node_unlink() -> roff_node_unlink()
* mdoc_node_free() and man_node_free() -> roff_node_free()
* mdoc_node_delete() and man_node_delete() -> roff_node_delete()
Minus 130 lines of code, no functional change.

Revision 1.105 / (download) - annotate - [select for diffs], Sat Apr 18 17:50:02 2015 UTC (9 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.104: +1 -15 lines
Diff to previous 1.104 (colored)

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.104 / (download) - annotate - [select for diffs], Sat Apr 18 17:28:08 2015 UTC (9 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.103: +1 -63 lines
Diff to previous 1.103 (colored)

Unify {mdoc,man}_{alloc,reset,free}() into roff_man_{alloc,reset,free}().
Minus 80 lines of code, no functional change.
Written on the train from Koeln to Wolfsburg returning from p2k15.

Revision 1.103 / (download) - annotate - [select for diffs], Sat Apr 18 17:01:28 2015 UTC (9 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.102: +1 -3 lines
Diff to previous 1.102 (colored)

Move mdoc_hash_init() and man_hash_init() to libmandoc.h
and call them from mparse_alloc() and choose_parser(),
preparing unified allocation of struct roff_man.

Revision 1.102 / (download) - annotate - [select for diffs], Sat Apr 18 16:34:03 2015 UTC (9 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.101: +2 -1 lines
Diff to previous 1.101 (colored)

Profit from the unified struct roff_man and reduce the number of
arguments of mparse_result() by one.  No functional change.
Written on the ICE Bruxelles-Koeln on the way back from p2k15.

Revision 1.101 / (download) - annotate - [select for diffs], Sat Apr 18 16:04:40 2015 UTC (9 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.100: +54 -52 lines
Diff to previous 1.100 (colored)

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.100 / (download) - annotate - [select for diffs], Thu Apr 2 23:47:43 2015 UTC (9 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.99: +4 -4 lines
Diff to previous 1.99 (colored)

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.99 / (download) - annotate - [select for diffs], Thu Apr 2 22:06:17 2015 UTC (9 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.98: +34 -35 lines
Diff to previous 1.98 (colored)

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.98 / (download) - annotate - [select for diffs], Thu Apr 2 21:03:18 2015 UTC (9 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.97: +32 -31 lines
Diff to previous 1.97 (colored)

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.97 / (download) - annotate - [select for diffs], Fri Jan 30 21:28:21 2015 UTC (9 years, 3 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_5_7_BASE, OPENBSD_5_7
Changes since 1.96: +66 -59 lines
Diff to previous 1.96 (colored)

starting a tbl(7) breaks man(7) next-line scope;
triggered by a bug report from jsg@

Revision 1.96 / (download) - annotate - [select for diffs], Sat Jan 24 02:41:32 2015 UTC (9 years, 3 months ago) by schwarze
Branch: MAIN
Changes since 1.95: +2 -2 lines
Diff to previous 1.95 (colored)

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.95 / (download) - annotate - [select for diffs], Thu Jan 15 04:26:06 2015 UTC (9 years, 4 months ago) by schwarze
Branch: MAIN
Changes since 1.94: +2 -3 lines
Diff to previous 1.94 (colored)

Fatal errors no longer exist.
If a file can be opened, mandoc will produce some output;
at worst, the output may be almost empty.
Simplifies error handling and frees a message type for future use.

Revision 1.94 / (download) - annotate - [select for diffs], Sun Dec 28 14:39:08 2014 UTC (9 years, 4 months ago) by schwarze
Branch: MAIN
Changes since 1.93: +4 -2 lines
Diff to previous 1.93 (colored)

mdoc(7) already uses the mandoc(1) -Ios argument in the footer line
when .Os has no argument, so do the same for man(7) when .TH has less
than four arguments; there is no reason to treat both differently.
Issue found following a question from Thomas Klausner <wiz at NetBSD>.

Revision 1.93 / (download) - annotate - [select for diffs], Fri Nov 28 06:26:46 2014 UTC (9 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.92: +3 -5 lines
Diff to previous 1.92 (colored)

Simplify by making the eqn and tbl steering functions void;
no functional change, minus 15 lines of code.

Revision 1.92 / (download) - annotate - [select for diffs], Fri Nov 28 05:51:29 2014 UTC (9 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.91: +70 -118 lines
Diff to previous 1.91 (colored)

Simplify by making many functions in the man(7) parser void,
and some cleanup; no functional change, minus 70 lines.

Revision 1.91 / (download) - annotate - [select for diffs], Wed Nov 19 03:07:43 2014 UTC (9 years, 6 months ago) by schwarze
Branch: MAIN
Changes since 1.90: +22 -7 lines
Diff to previous 1.90 (colored)

Escape sequences terminate high-level macro names, and when doing so,
they are ignored, just in the same way as for request names
and for low-level macro names.
This also cures a warning in the pod2man(1) preamble.

Revision 1.90 / (download) - annotate - [select for diffs], Mon Nov 3 23:17:21 2014 UTC (9 years, 6 months ago) by schwarze
Branch: MAIN
Changes since 1.89: +16 -1 lines
Diff to previous 1.89 (colored)

Allow the five man(7) font macros to concatenate their line arguments,
the same way the mdoc(7) macros marked MDOC_JOIN do it.
In -Thtml, this removes bogus <br/> when the font macros are used
in no-fill mode; issue found by jsg@ in the Xcursor(3) SYNOPSIS.
As a bonus, this slightly reduces the size of the syntax tree.

Revision 1.89 / (download) - annotate - [select for diffs], Mon Oct 20 15:49:45 2014 UTC (9 years, 7 months ago) by schwarze
Branch: MAIN
Changes since 1.88: +3 -2 lines
Diff to previous 1.88 (colored)

correct the spacing after in-line equations
that start at the beginning of an input line
but end before the end of an input line

Revision 1.88 / (download) - annotate - [select for diffs], Mon Oct 20 02:31:44 2014 UTC (9 years, 7 months ago) by schwarze
Branch: MAIN
Changes since 1.87: +3 -1 lines
Diff to previous 1.87 (colored)

correct spacing before inline equations

Revision 1.87 / (download) - annotate - [select for diffs], Sat Sep 6 23:24:27 2014 UTC (9 years, 8 months ago) by schwarze
Branch: MAIN
Changes since 1.86: +1 -8 lines
Diff to previous 1.86 (colored)

Simplify by handling empty request lines at the one logical place
in the roff parser instead of in three other places in other parsers.
No functional change.

Revision 1.86 / (download) - annotate - [select for diffs], Fri Aug 8 16:05:42 2014 UTC (9 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.85: +5 -4 lines
Diff to previous 1.85 (colored)

Simplify man(7) validation:
Drop pre-handlers, they were almost unused.
Drop the needless complexity of allowing more than one post-handler.

This saves one internal interface function, one static function, one
private struct definition, sixteen static arrays, and 45 lines of code.
No functional change.

Revision 1.85 / (download) - annotate - [select for diffs], Fri Aug 8 15:54:10 2014 UTC (9 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.84: +3 -3 lines
Diff to previous 1.84 (colored)

mention requests and macros in more messages

Revision 1.84 / (download) - annotate - [select for diffs], Fri Aug 8 15:32:17 2014 UTC (9 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.83: +13 -55 lines
Diff to previous 1.83 (colored)

Simplify: replace one global flag by one local variable
and remove three unused global flags.  No functional change.

Revision 1.83 / (download) - annotate - [select for diffs], Mon Jul 7 21:35:42 2014 UTC (9 years, 10 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_5_6_BASE, OPENBSD_5_6
Changes since 1.82: +3 -3 lines
Diff to previous 1.82 (colored)

Clean up ERROR messages related to document structure and macros:
Hierarchical naming and mention macro names in messages.

Revision 1.82 / (download) - annotate - [select for diffs], Mon Jul 7 19:17:39 2014 UTC (9 years, 10 months ago) by schwarze
Branch: MAIN
Changes since 1.81: +4 -4 lines
Diff to previous 1.81 (colored)

Simplify man_unscope(), removing 18 lines of code, that is,
removing one function argument, one function definition,
three function invocations and two pointless assert()s.
No functional change.

Revision 1.81 / (download) - annotate - [select for diffs], Sun Jul 6 19:08:56 2014 UTC (9 years, 10 months ago) by schwarze
Branch: MAIN
Changes since 1.80: +7 -4 lines
Diff to previous 1.80 (colored)

Clean up messages related to plain text and to escape sequences.
* Mention invalid escape sequences and string names, and fallbacks.
* Hierarchical naming.

Revision 1.80 / (download) - annotate - [select for diffs], Wed May 7 14:11:24 2014 UTC (10 years ago) by schwarze
Branch: MAIN
Changes since 1.79: +7 -4 lines
Diff to previous 1.79 (colored)

Do not segfault in makewhatis -Q if the next .SH after .SH NAME
does not have any arguments.  Crash found by nigel@ in kermit(1).

Revision 1.79 / (download) - annotate - [select for diffs], Sun Apr 20 16:44:44 2014 UTC (10 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.78: +30 -46 lines
Diff to previous 1.78 (colored)

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

Revision 1.78 / (download) - annotate - [select for diffs], Sun Mar 30 19:47:32 2014 UTC (10 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.77: +2 -2 lines
Diff to previous 1.77 (colored)

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.77 / (download) - annotate - [select for diffs], Sun Mar 23 20:57:23 2014 UTC (10 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.76: +11 -4 lines
Diff to previous 1.76 (colored)

Skip leading escape sequences in man_deroff().  Helps indexing of
some manuals containing overzealous escaping in their NAME section.

Revision 1.76 / (download) - annotate - [select for diffs], Sat Mar 22 00:56:07 2014 UTC (10 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.75: +41 -1 lines
Diff to previous 1.75 (colored)

If a man(7) NAME section contains macros, avoid truncated or empty
entries for .Nd in mandocdb(8), instead use the macro content
recursively.  This improves indexing of more than 200 manuals
in Xenocara, i.e. more than 15%, in particular GL and some Xkb.

Revision 1.75 / (download) - annotate - [select for diffs], Fri Mar 21 22:17:01 2014 UTC (10 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.74: +2 -1 lines
Diff to previous 1.74 (colored)

The files mandoc.c and mandoc.h contained both specialised low-level
functions used for multiple languages (mdoc, man, roff), for example
mandoc_escape(), mandoc_getarg(), mandoc_eos(), and generic auxiliary
functions.  Split the auxiliaries out into their own file and header.
While here, do some #include cleanup.

Revision 1.74 / (download) - annotate - [select for diffs], Mon Jan 6 00:53:14 2014 UTC (10 years, 4 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_5_5_BASE, OPENBSD_5_5
Changes since 1.73: +2 -1 lines
Diff to previous 1.73 (colored)

Joerg Sonnenberger contributed copyrightable amounts of text to
some files.  To make it clear that he also put his contributions
under the ISC license, with his explicit permission, add his
Copyright notice to the relevant files.  No code change.

Revision 1.73 / (download) - annotate - [select for diffs], Sun Jan 5 20:26:27 2014 UTC (10 years, 4 months ago) by schwarze
Branch: MAIN
Changes since 1.72: +10 -2 lines
Diff to previous 1.72 (colored)

Add an option -Q (quick) to mandocdb(8)
for accelerated generation of reduced-size databases.

Implement this by allowing the parsers to optionally
abort the parse sequence after the NAME section.

While here, garbage collect the unused void *arg attribute
of struct mparse and mparse_alloc().

This reduces the processing time of mandocdb(8) on /usr/share/man
by a factor of 2 and the database size by a factor of 4.
However, it still takes 5 times the time and 6 times the space
of makewhatis(8), so more work is clearly needed.

Revision 1.72 / (download) - annotate - [select for diffs], Mon Dec 30 00:52:18 2013 UTC (10 years, 4 months ago) by schwarze
Branch: MAIN
Changes since 1.71: +2 -2 lines
Diff to previous 1.71 (colored)

Simplify: Remove an unused argument from the mandoc_eos() function.
No functional change.

Revision 1.71 / (download) - annotate - [select for diffs], Sun Nov 10 22:53:58 2013 UTC (10 years, 6 months ago) by schwarze
Branch: MAIN
Changes since 1.70: +12 -6 lines
Diff to previous 1.70 (colored)

Ignore blank lines right after .SH and .SS.
Improves the rendering of gpg(1); issue reported by jca on ports.

Revision 1.70 / (download) - annotate - [select for diffs], Thu Oct 17 20:51:28 2013 UTC (10 years, 7 months ago) by schwarze
Branch: MAIN
Changes since 1.69: +3 -2 lines
Diff to previous 1.69 (colored)

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.69 / (download) - annotate - [select for diffs], Sat Nov 17 00:25:20 2012 UTC (11 years, 6 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_5_4_BASE, OPENBSD_5_4, OPENBSD_5_3_BASE, OPENBSD_5_3
Changes since 1.68: +126 -126 lines
Diff to previous 1.68 (colored)

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.68 / (download) - annotate - [select for diffs], Sat Jul 14 10:43:48 2012 UTC (11 years, 10 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_5_2_BASE, OPENBSD_5_2
Changes since 1.67: +4 -3 lines
Diff to previous 1.67 (colored)

Translate blank input lines to .sp just like in mdoc(7),
and ignore .sp after .PP.  This fixes vertical spacing
for blank lines after .PP and for .sp after .PP.

Revision 1.67 / (download) - annotate - [select for diffs], Sat Jul 7 18:27:36 2012 UTC (11 years, 10 months ago) by schwarze
Branch: MAIN
Changes since 1.66: +2 -2 lines
Diff to previous 1.66 (colored)

Support the .cc request; code by kristaps@, tests by me.
Needed for sqlite3(1) as reported by espie@.

Revision 1.66 / (download) - annotate - [select for diffs], Sat Jun 2 20:07:09 2012 UTC (11 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.65: +2 -2 lines
Diff to previous 1.65 (colored)

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.65 / (download) - annotate - [select for diffs], Sun Feb 26 19:41:27 2012 UTC (12 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.64: +2 -2 lines
Diff to previous 1.64 (colored)

Support .OP, one of the extended man macros; from kristaps@.
Do not use this GNU extension, we take it for compatibility only.

Revision 1.64 / (download) - annotate - [select for diffs], Wed Nov 16 17:21:15 2011 UTC (12 years, 6 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_5_1_BASE, OPENBSD_5_1
Changes since 1.63: +8 -3 lines
Diff to previous 1.63 (colored)

When a .TP block is broken but already contains a head element,
do not abort(), but delete the head together with the block itself.
Problem found and patch provided by joerg@, thanks!

Revision 1.63 / (download) - annotate - [select for diffs], Sat Nov 5 16:02:18 2011 UTC (12 years, 6 months ago) by schwarze
Branch: MAIN
Changes since 1.62: +29 -2 lines
Diff to previous 1.62 (colored)

When the HEAD scope of .TP is broken by another block macro,
do not abort with a FATAL error, but report a regular ERROR,
remove the broken .TP from the syntax tree, and prod on.
Reported repeatedly by ports people, at least by brad@ and jeremy@.
Also fixes rendition(4) in Xenocara.

Revision 1.62 / (download) - annotate - [select for diffs], Sun Oct 9 17:59:56 2011 UTC (12 years, 7 months ago) by schwarze
Branch: MAIN
Changes since 1.61: +9 -1 lines
Diff to previous 1.61 (colored)

Sync to version 1.12.0; all code by kristaps@:
Implement .Rv in -Tman.
Let -man -Tman work a bit like cat(1).
Add the -Ofragment option to -T[x]html.
Minor fixes in -T[x]html.
Lots of apropos(1) and -Tman code cleanup.

Revision 1.61 / (download) - annotate - [select for diffs], Sun Sep 18 15:54:48 2011 UTC (12 years, 8 months ago) by schwarze
Branch: MAIN
Changes since 1.60: +2 -9 lines
Diff to previous 1.60 (colored)

sync to version 1.11.7 from kristaps@
main new feature: support the roff(7) .tr request
plus various bugfixes and some refactoring

regressions are so minor that it's better to get this in
and fix them in the tree

Revision 1.60 / (download) - annotate - [select for diffs], Sun Sep 18 10:25:28 2011 UTC (12 years, 8 months ago) by schwarze
Branch: MAIN
Changes since 1.59: +5 -5 lines
Diff to previous 1.59 (colored)

sync to version 1.11.5:
adding an implementation of the eqn(7) language
by kristaps@

So far, only .EQ/.EN blocks are handled, in-line equations are not, and
rendering is not yet very pretty, but the parser is fairly complete.

Revision 1.59 / (download) - annotate - [select for diffs], Sun Apr 24 16:22:02 2011 UTC (13 years ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_5_0_BASE, OPENBSD_5_0
Changes since 1.58: +47 -68 lines
Diff to previous 1.58 (colored)

Merge version 1.11.1:
Again lots of cleanup and maintenance work by kristaps@.
- simplify error reporting: less function pointers, more mandoc_[v]msg
- main: split document parsing out of main.c into read.c
- roff, mdoc, man: improved recognition of control characters
- roff: better handling of if/else stack overflows
- roff: add some predefined strings for backward compatibility
- mdoc, man: empty sections are not errors
- mdoc: move delimiter handling to libmdoc
- some header restructuring and some minor features and fixes
This merge causes two minor regressions
that i will fix in separate commits right afterwards.

Revision 1.58 / (download) - annotate - [select for diffs], Thu Apr 21 22:59:54 2011 UTC (13 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.57: +3 -3 lines
Diff to previous 1.57 (colored)

Merge version 1.10.10:
lots of cleanup and maintenance work by kristaps@.
- move some main.c globals into struct curparse
- move mandoc_*alloc to mandoc.h such that all code can use them
- make mandoc_isdelim available to formatting frontends
- dissolve mdoc_strings.c, move the code where it is used
- make all error reporting functions void, their return values were useless
- and various minor cleanups and fixes

Revision 1.57 / (download) - annotate - [select for diffs], Sun Mar 20 23:36:42 2011 UTC (13 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.56: +17 -1 lines
Diff to previous 1.56 (colored)

Import the foundation for eqn(7) support.
Written by kristaps@.

For now, i'm adding one line to each of the four frontends
to just pass the input text through to the output,
not yet interpreting any of then eqn keywords.

Revision 1.56 / (download) - annotate - [select for diffs], Mon Mar 7 01:35:33 2011 UTC (13 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.55: +3 -3 lines
Diff to previous 1.55 (colored)

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.55 / (download) - annotate - [select for diffs], Thu Feb 10 00:06:30 2011 UTC (13 years, 3 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_4_9_BASE, OPENBSD_4_9
Changes since 1.54: +10 -21 lines
Diff to previous 1.54 (colored)

Tbl code maintenance by kristaps@.
- Remember the line-number of a tbl_span, and use it in messages.
- Put *_span_alloc() functions right into the *_addspan() ones,
  since these are the only places they are called from.

Revision 1.54 / (download) - annotate - [select for diffs], Sun Jan 16 02:56:47 2011 UTC (13 years, 4 months ago) by schwarze
Branch: MAIN
Changes since 1.53: +16 -9 lines
Diff to previous 1.53 (colored)

If the first character of a free-form text input line is whitespace,
then it will start a new output line;
from kristaps@.

Revision 1.53 / (download) - annotate - [select for diffs], Sun Jan 9 13:16:48 2011 UTC (13 years, 4 months ago) by schwarze
Branch: MAIN
Changes since 1.52: +10 -10 lines
Diff to previous 1.52 (colored)

Make sure coding errors cannot make us miss fatal parsing errors
by assert(3)ing valid parser state in the main parsing functions;
from kristaps@.

Revision 1.52 / (download) - annotate - [select for diffs], Tue Jan 4 22:28:17 2011 UTC (13 years, 4 months ago) by schwarze
Branch: MAIN
Changes since 1.51: +60 -43 lines
Diff to previous 1.51 (colored)

Merge kristaps@' cleaner tbl integration, removing mine;
there are still a few bugs, but fixing these will be easier in tree.

Revision 1.51 / (download) - annotate - [select for diffs], Sat Jan 1 17:38:11 2011 UTC (13 years, 4 months ago) by schwarze
Branch: MAIN
Changes since 1.50: +7 -7 lines
Diff to previous 1.50 (colored)

Clean up {mdoc,man}_{p,v}msg invocations:
Ignore the return values, they are constant anyway.
From kristaps@.

Revision 1.50 / (download) - annotate - [select for diffs], Sun Dec 19 07:53:12 2010 UTC (13 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.49: +5 -6 lines
Diff to previous 1.49 (colored)

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.  Besides, they are not used in base or Xenocara, and only at
two or three places in one single port, which are probably typos.
From kristaps@.

Revision 1.49 / (download) - annotate - [select for diffs], Tue Dec 7 00:08:52 2010 UTC (13 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.48: +4 -3 lines
Diff to previous 1.48 (colored)

Complete the merge of bsd.lv version 1.10.7:
No more functional changes, just sync ordering, comments and white space.

Revision 1.48 / (download) - annotate - [select for diffs], Wed Dec 1 23:02:59 2010 UTC (13 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.47: +1 -3 lines
Diff to previous 1.47 (colored)

Merge man_action.c into man_validate.c.
Same as for mdoc_action.c, but much simpler.
Work by kristaps@, re-applying OpenBSD changes on top.

Revision 1.47 / (download) - annotate - [select for diffs], Mon Nov 29 02:26:45 2010 UTC (13 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.46: +2 -2 lines
Diff to previous 1.46 (colored)

Now that we have proper .de support in the roff(7) library,
it is time to remove the .Sp, .Vb, and .Ve kludge
that was added to the man(7) library to build Perl manuals.

Revision 1.46 / (download) - annotate - [select for diffs], Mon Nov 29 01:44:41 2010 UTC (13 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.45: +8 -23 lines
Diff to previous 1.45 (colored)

Downgrade the easier of the two cases of MANDOCERR_SYNTLINESCOPE
to MANDOCERR_LINESCOPE, i.e. from FATAL to ERROR.

That is, when an element next line scope is empty except for one
or more NSCOPED macros (like in .B .br .br .B), throw away the
empty element including its NSCOPED children such that the parser
can prod on.

While here, improve the error message and tell the user which element
has been thrown away.

Revision 1.45 / (download) - annotate - [select for diffs], Mon Nov 29 00:12:02 2010 UTC (13 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.44: +2 -2 lines
Diff to previous 1.44 (colored)

Implement the roff .ft (change font) request for man(7).
Of course, we don't want to encourage low-level physical markup,
but pod2man(1) writes such requests, so Perl manuals contain them,
and some Xenocara and lots and lots of ports manuals use them as well.
In base and Xenocara, this will reduce mandoc -Tlint ERROR noise;
in ports, it will improve rendering of many manuals.

Revision 1.44 / (download) - annotate - [select for diffs], Sun Nov 28 19:35:33 2010 UTC (13 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.43: +2 -4 lines
Diff to previous 1.43 (colored)

To avoid FATAL errors, we have been parsing and ignoring the roff
requests .am, .ami, .am1, .dei, and .rm for a long time.
Since ignoring them can (rarely) cause information loss and serious
misformatting, throw an ERROR: NOT IMPLEMENTED when finding them.
Implementing them would not be too difficult, but they are so rare
in practice that i can find better use for my time right now.

In this context,
- Put the string "NOT IMPLEMENTED" into two other error messages
as well, to distinguish them from those caused by broken input.
- Print the string "unknown macro" once, not twice in the error message
associated with MANDOCERR_MACRO, and begin printing the buffer at the
point where the unknown macro really is, not at the start of line.

Revision 1.43 / (download) - annotate - [select for diffs], Sat Oct 16 20:49:37 2010 UTC (13 years, 7 months ago) by schwarze
Branch: MAIN
Changes since 1.42: +5 -3 lines
Diff to previous 1.42 (colored)

Do not abort() on tbl errors, reduce the risk that tbl stuff kills a build,
and provide more useful tbl error messages in a non-intrusive way.

Revision 1.42 / (download) - annotate - [select for diffs], Fri Oct 15 21:33:47 2010 UTC (13 years, 7 months ago) by schwarze
Branch: MAIN
Changes since 1.41: +3 -1 lines
Diff to previous 1.41 (colored)

Move tbl output from plain stdio to mandoc terminal output routines.
This fixes (1) all escape sequences and (2) some aspects of indentation.
Table column widths are still way off, though.
"move forward" deraadt@

Revision 1.41 / (download) - annotate - [select for diffs], Fri Oct 15 20:45:03 2010 UTC (13 years, 7 months ago) by schwarze
Branch: MAIN
Changes since 1.40: +16 -2 lines
Diff to previous 1.40 (colored)

Minimal glue to integrate tbl into the mandoc man(7) parser and formatter.
The output dosn't look nice yet, escape handling is still missing,
but will follow soon.
"move forward aggressively :-)" deraadt@

Revision 1.40 / (download) - annotate - [select for diffs], Fri Aug 20 00:53:35 2010 UTC (13 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.39: +7 -27 lines
Diff to previous 1.39 (colored)

Implement a simple, consistent user interface for error handling.
We now have sufficient practical experience to know what we want,
so this is intended to be final:
- provide -Wlevel (warning, error or fatal) to select what you care about
- provide -Wstop to stop after parsing a file with warnings you care about
- provide consistent exit status codes for those warnings you care about
- fully document what warnings, errors and fatal errors mean
- remove all other cruft from the user interface, less is more:
- remove all -f knobs along with the whole -f option
- remove the old -Werror because calling warnings "fatal" is silly
- always finish parsing each file, unless fatal errors prevent that
This commit also includes a couple of related simplifications behind
the scenes regarding error handling.
Feedback and OK  kristaps@;  Joerg Sonnenberger (NetBSD) and
Sascha Wildner (DragonFly BSD) agree with the general direction.

Revision 1.39 / (download) - annotate - [select for diffs], Wed Aug 18 01:17:44 2010 UTC (13 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.38: +8 -18 lines
Diff to previous 1.38 (colored)

Simplify and sync the code and comments for copying the macro name
in man_pmacro() and mdoc_pmacro().  In particular, no need to use
isgraph(3) here, that has already been done in main.c.
Joint work by Kristaps and myself, ok kristaps@.

Revision 1.38 / (download) - annotate - [select for diffs], Sun Jul 25 18:05:54 2010 UTC (13 years, 9 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_4_8_BASE, OPENBSD_4_8
Changes since 1.37: +2 -1 lines
Diff to previous 1.37 (colored)

Sync to bsd.lv; in particular, pull in lots of bug fixes.
new features:
* support the .in macro in man(7)
* support minimal PDF output
* support .Sm in mdoc(7) HTML output
* support .Vb and .nf in man(7) HTML output
* complete the mdoc(7) manual
bug fixes:
* do not let mdoc(7) .Pp produce a newline before/after .Sh; reported by jmc@
* avoid double blank lines related to man(7) .sp and .br
* let man(7) .nf and .fi flush the line; reported by jsg@ and naddy@
* let "\ " produce a non-breaking space; reported by deraadt@
* discard \m colour escape sequences; reported by J.C. Roberts
* map undefined 1-character-escapes to the literal character itself
maintenance:
* express mdoc(7) arguments in terms of an enum for additional type-safety
* simplify mandoc_special() and a2roffdeco()
* use strcspn in term_word() in place of a manual loop
* minor optimisations in the -Tps and -Thtml formatting frontends

Revision 1.37 / (download) - annotate - [select for diffs], Fri Jul 16 00:34:33 2010 UTC (13 years, 10 months ago) by schwarze
Branch: MAIN
Changes since 1.36: +2 -2 lines
Diff to previous 1.36 (colored)

Text ending in a full stop, exclamation mark or question mark
should not flag the end of a sentence if:

1) The punctuation is followed by closing delimiters
and not preceded by alphanumeric characters, like in
"There is no full stop (.) in this sentence"

or

2) The punctuation is a child of a macro
and not preceded by alphanumeric characters, like in
"There is no full stop
.Pq \&.
in this sentence"

jmc@ and sobrado@ like this

Revision 1.36 / (download) - annotate - [select for diffs], Tue Jul 13 01:09:13 2010 UTC (13 years, 10 months ago) by schwarze
Branch: MAIN
Changes since 1.35: +2 -3 lines
Diff to previous 1.35 (colored)

Merge release 1.10.4 (all code by kristaps@), providing four new features:
1) Proper .Bk support: allow output line breaks at input line breaks,
but keep input lines together in the output, finally fixing
synopses like aucat(1), mail(1) and tmux(1).
2) Mostly finished -Tps (PostScript) output.
3) Implement -Thtml output for .Nm blocks and .Bk -words.
4) Allow iterative interpolation of user-defined roff(7) strings.
Also contains some minor bugfixes and some performance improvements.

Revision 1.35 / (download) - annotate - [select for diffs], Sun Jun 27 21:54:42 2010 UTC (13 years, 10 months ago) by schwarze
Branch: MAIN
Changes since 1.34: +6 -3 lines
Diff to previous 1.34 (colored)

Full .nr nS support, unbreaking the kernel manuals.

Kristaps coded this from scratch after reading my .nr patch;
it is simpler and more powerful.

Registers live in struct regset in regs.h, struct man and struct mdoc
contain pointers to it.  The nS register is cleared when parsing .Sh.
Frontends respect the MDOC_SYNPRETTY flag set in mdoc node_alloc.

Revision 1.34 / (download) - annotate - [select for diffs], Sun Jun 6 18:08:41 2010 UTC (13 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.33: +3 -1 lines
Diff to previous 1.33 (colored)

Merge bsd.lv release 1.10.0,
which is mostly the post-hackathon release,
bringing in the OpenBSD changes to bsd.lv,
but which also has a few additional minor fixes:

* .Lb is an in-line macro, not in_line_eoln
* .Bt, .Ud now warn when discarding arguments
* allow bad -man dates to flow verbatim into the front-ends
- so far all reported by Ulrich Spoerlein
* .Ar, .Fl and .Li starting with closing punctuation emit an empty element
* empty .Li macros print nothing, but may cause spacing
* proper EOS handling for .Bt, .Ex, .Rv, and .Ud.
* cleanup: collapse posts_xr into posts_wtext (which is the same)
* efficiency: very simple table lookup for roff.c

Revision 1.33 / (download) - annotate - [select for diffs], Sun May 23 22:45:00 2010 UTC (13 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.32: +30 -85 lines
Diff to previous 1.32 (colored)

Unified error and warning message system for all of mandoc,
featuring three message levels, as agreed during the mandoc hackathon:
* FATAL parser failure, cannot produce any output from this input file:
  eventually, we hope to convert most of these to ERRORs.
* ERROR, meaning mandoc cannot cope fully with the input syntax and will
  probably lose information or produce structurally garbled output;
  it will try to produce output anyway but exit non-zero at the end,
  which is eventually intended to make the ports infrastructure happy.
* WARNING, meaning you should clean up the input file, but output
  is probably mostly OK, so this will not cause error-exit at the end.
This commit is mostly just converting the old system to the new one; before
the classification will become really reliable, we must check all messages.

In particular,
* set up a new central message string table in main.c
* drop the old message string tables from man.c and mdoc.c
* get rid of the piece-meal merr enums in libman and libmdoc
* reduce number of error/warning functions from 16 to 6 (still a lot...)

While here, handle a few problems more gracefully:
* allow .Rv and .Ex to work without a prior .Nm
* allow .An to ignore extra arguments
* allow undeclared columns in .Bl -column

Written by kristaps@.

Revision 1.32 / (download) - annotate - [select for diffs], Sun May 23 20:57:16 2010 UTC (13 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.31: +2 -2 lines
Diff to previous 1.31 (colored)

implement .AT and .UC; from Joerg Sonnenberger

Revision 1.31 / (download) - annotate - [select for diffs], Thu May 20 00:58:02 2010 UTC (14 years ago) by schwarze
Branch: MAIN
Changes since 1.30: +30 -42 lines
Diff to previous 1.30 (colored)

Support nested roff instructions:
* allow roff_parseln() to be re-run
* allow roff_parseln() to manipulate the line buffer offset
* support the offset in the man and mdoc libraries
* adapt .if, .ie, .el, .ig, .am* and .de* support
* interpret some instructions even in conditional-negative context
Coded by kristaps during the last day of the mandoc hackathon.

To avoid regressions in the OpenBSD tree, commit this together
with some small local additions:
* detect roff block end "\}" even on macro lines
* actually implement the ".if n" conditional
* ignore .ds, .rm and .tr in libroff

Also back my old .if/.ie/.el-handling out of libman, reverting:
man.h 1.15 man.c 1.25 man_macro.c 1.15 man_validate.c 1.19
man_action.c 1.15 man_term.c 1.28 man_html.c 1.9.

Revision 1.30 / (download) - annotate - [select for diffs], Sun May 16 00:54:03 2010 UTC (14 years ago) by schwarze
Branch: MAIN
Changes since 1.29: +3 -9 lines
Diff to previous 1.29 (colored)

In theory, Kristaps never intended to write a roff parser,
but in practice, most real legacy man(7)uals are using so much
low level roff that we can't really get away without at least
partially handling some roff instructions.

As doing this in man(7) only has become messy and as even some
mdoc(7) pages need it, start a minimal partial roff preprocessor.
As a first step, move handling of .am[i], .de[i] and .ig there.
Do not use the roff preprocessor for new manuals!

Now that we have three main parser libraries - roff, man and mdoc -
each one having its own error handling is becoming messy, too.
Thus, start unifying message handling in one central place,
introducing a new generic function mmsg().

coded by kristaps@

Revision 1.29 / (download) - annotate - [select for diffs], Sat May 15 18:06:02 2010 UTC (14 years ago) by schwarze
Branch: MAIN
Changes since 1.28: +3 -2 lines
Diff to previous 1.28 (colored)

removed restriction on integer manual sections in -man;
by kristaps@

Revision 1.28 / (download) - annotate - [select for diffs], Fri May 14 19:52:43 2010 UTC (14 years ago) by schwarze
Branch: MAIN
Changes since 1.27: +12 -1 lines
Diff to previous 1.27 (colored)

Integrate kristaps@' end-of-sentence (EOS) framework
which is simpler and more powerful than mine, and remove mine.

* man(7) now has EOS handling, too
* put EOS detection into its own function in libmandoc
* use node and termp flags to communicate the EOS condition
* no more EOS pseudo-macro
* no more non-printable EOS marker character on the formatter level

This slightly breaks EOS detection after trailing punctuation
in mdoc(7) macros, but that will be restored soon.

Revision 1.27 / (download) - annotate - [select for diffs], Fri May 14 01:54:37 2010 UTC (14 years ago) by schwarze
Branch: MAIN
Changes since 1.26: +32 -55 lines
Diff to previous 1.26 (colored)

merge 1.9.24, keeping local patches; some changes:
* preserve multiple consecutive space characters in input
* do not restrict .Cd and .Rv to certain sections (requested by Joerg)
* do not run lookup() on quoted words
* enum return types for mdoc_args and mdoc_argv
* fix auto-closing of LINK tag in -Txhtml (from Daniel Friesel)
* various lint and manual fixes

Revision 1.26 / (download) - annotate - [select for diffs], Sat May 8 01:52:07 2010 UTC (14 years ago) by schwarze
Branch: MAIN
Changes since 1.25: +7 -1 lines
Diff to previous 1.25 (colored)

handle text lines beginning with \." as comments, like groff does,
even though this is not correct comment syntax (so warn, too)
reported by Claus Assmann on misc@, fix by kristaps@

Revision 1.25 / (download) - annotate - [select for diffs], Sun Apr 25 16:32:19 2010 UTC (14 years ago) by schwarze
Branch: MAIN
Changes since 1.24: +22 -5 lines
Diff to previous 1.24 (colored)

Implement roff conditional instructions .if .ie .el, in man(7) only for now;
fixing OpenBSD::PackageName(3p) and friends for espie@.

Revision 1.24 / (download) - annotate - [select for diffs], Fri Apr 2 11:37:07 2010 UTC (14 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.23: +17 -10 lines
Diff to previous 1.23 (colored)

merge 1.9.20, keeping local patches
* prevent roff instructions in man(7) from clobbering scopes and line modes
  (noted by Sascha Wildner)
* handle leading punctuation in mdoc(7) blocks and line macros
  (looks good in principle, but is causing some fallout in OpenBSD,
   so i will disable it locally for now with the next commit)

Revision 1.23 / (download) - annotate - [select for diffs], Mon Mar 29 22:56:52 2010 UTC (14 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.22: +13 -7 lines
Diff to previous 1.22 (colored)

merge 1.9.19, keeping local patches
 * scoping fixes for roff instructions
 * accept apostroph in place of dot as a macro control character
 * accept tabs between the control character and the macro name
 * check that man(7) .TH titles use capital letters

Revision 1.22 / (download) - annotate - [select for diffs], Fri Mar 26 01:22:05 2010 UTC (14 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.21: +67 -40 lines
Diff to previous 1.21 (colored)

merge 1.9.17, keeping local patches

* much improved pod2man support and low-level roff robustness
* have -Tlint imply -Wall and -fstrict
* use fewer macros and more enum in libman
* and various bug fixes

Revision 1.21 / (download) - annotate - [select for diffs], Thu Mar 25 23:23:01 2010 UTC (14 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.20: +70 -18 lines
Diff to previous 1.20 (colored)

merge 1.9.16, keeping local patches

This is mostly cleanup by kristaps@ after my rather hackish patch
to tolerate the non-text macros .na, .sp, .br in next-line scope;
plus some nesting issues fixed by him, all in man(7).
This survived a full  cd /usr/src; make man.

Revision 1.20 / (download) - annotate - [select for diffs], Tue Mar 2 01:00:39 2010 UTC (14 years, 2 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_4_7_BASE, OPENBSD_4_7
Changes since 1.19: +3 -2 lines
Diff to previous 1.19 (colored)

Accept the non-standard macros .Sp (similar to .sp)
and .Vb/.Ve (similar to .nf/.fi) in man(7) mode.
These are not intended to be used manually, but they allow us to
properly render man(7) code autogenerated by pod2man(1),
making Perl and OpenSSL happy in our tree.

Revision 1.19 / (download) - annotate - [select for diffs], Fri Feb 26 12:42:29 2010 UTC (14 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.18: +3 -2 lines
Diff to previous 1.18 (colored)

The groff_man(7) manual says "the first line of text following" .TP is
used as a label, not "the first line following", so allow (some kinds of)
intervening macros - some people actually put macros in between.

On the other hand, when there is no text line before the next block macro,
that is, when the .TP block ends without any text line, then something *is*
broken, so still error out in that case.

Revision 1.18 / (download) - annotate - [select for diffs], Thu Feb 18 02:11:26 2010 UTC (14 years, 3 months ago) by schwarze
Branch: MAIN
Changes since 1.17: +33 -6 lines
Diff to previous 1.17 (colored)

sync to release 1.9.15:
 * corrected .Vt handling (spotted by Joerg Sonnenberger)
 * corrected .Xr argument handling (based on my patch)
 * removed \\ escape sequence (because it is for low-level roff only)
 * warn about trailing whitespace (suggested by jmc@)
 * -Txhtml support
 * and some general cleanup and doc improvements

Revision 1.17 / (download) - annotate - [select for diffs], Wed Dec 23 22:30:17 2009 UTC (14 years, 4 months ago) by schwarze
Branch: MAIN
Changes since 1.16: +4 -4 lines
Diff to previous 1.16 (colored)

sync to 1.9.13: minor fixes:

correctness/functionality:
 - bugfix: properly ignore lines with only a dot in -man
 - bugfix: .Bl -ohang doesn't allow -width, warn about this
 - improve date string handling by new function mandoc_a2time
 - some HTML improvements
 - significant documentation additions in man.7 and mdoc.7

portability:
 - replace __dead by __attribute__((noreturn))
 - bugfix: correct .Dx rendering
 - some more library names for NetBSD

simplicity:
 - replace hand-rolled putchar(3)-loops by fwrite(3)
 - replace single-character printf(3) by putchar(3)

Revision 1.16 / (download) - annotate - [select for diffs], Tue Dec 22 23:58:00 2009 UTC (14 years, 4 months ago) by schwarze
Branch: MAIN
Changes since 1.15: +15 -40 lines
Diff to previous 1.15 (colored)

sync to 1.9.12, mostly portability and refactoring:

correctness/functionality:
- bugfix: do not die when overstep hits the right margin
- new option: -fign-escape
- and various HTML features

portability:
- replace bzero(3) by memset(3), which is ANSI C
- replace err(3)/warn(3) by perror(3)/exit(3), which is ANSI C
- iuse argv[0] instead of __progname
- add time.h to various files for FreeBSD compilation

simplicity:
- do not allocate header/footer data dynamically in *_term.c
- provide and use malloc frontends that error out on failure

for full changelogs, see http://bsd.lv/cgi-bin/cvsweb.cgi/

Revision 1.15 / (download) - annotate - [select for diffs], Tue Oct 27 21:40:07 2009 UTC (14 years, 6 months ago) by schwarze
Branch: MAIN
Changes since 1.14: +16 -8 lines
Diff to previous 1.14 (colored)

sync to 1.9.11: adapt printing of dates to groff conventions,
NetBSD portability fixes and some minor bugfixes and feature enhancements;
also checked that my hyphenation code still works on top of this

Revision 1.14 / (download) - annotate - [select for diffs], Mon Oct 19 10:20:24 2009 UTC (14 years, 7 months ago) by schwarze
Branch: MAIN
Changes since 1.13: +3 -1 lines
Diff to previous 1.13 (colored)

sync to 1.9.6: u_char lives in <sys/types.h>
noticed by uqs at spoerlein dot net on FreeBSD,
where <stdlib.h> does not include <sys/types.h>

Revision 1.13 / (download) - annotate - [select for diffs], Mon Sep 21 21:11:37 2009 UTC (14 years, 8 months ago) by schwarze
Branch: MAIN
Changes since 1.12: +4 -10 lines
Diff to previous 1.12 (colored)

sync to 1.9.5: lookup hashes are now static tables
shortening the code, and, according to kristaps@, speeding it up

Revision 1.12 / (download) - annotate - [select for diffs], Fri Sep 18 22:46:14 2009 UTC (14 years, 8 months ago) by schwarze
Branch: MAIN
Changes since 1.11: +2 -2 lines
Diff to previous 1.11 (colored)

sync to 1.9.2: Add .UC libman macro for compatibility, has no effect.
Correct .UC and .DT to not print their arguments.
Document that .UC and .DT should not be used.

Revision 1.11 / (download) - annotate - [select for diffs], Fri Sep 18 22:37:05 2009 UTC (14 years, 8 months ago) by schwarze
Branch: MAIN
Changes since 1.10: +7 -1 lines
Diff to previous 1.10 (colored)

sync to 1.9.2: non-printable characters in macro names are errors;
from joerg at netbsd dot org

Revision 1.10 / (download) - annotate - [select for diffs], Sat Aug 22 23:17:39 2009 UTC (14 years, 8 months ago) by schwarze
Branch: MAIN
Changes since 1.9: +118 -25 lines
Diff to previous 1.9 (colored)

another large chunk of -man updates,
among others regarding .DT, .HP, .RS, .RE, .SH, .SS, and scoping,
now in sync vith release 1.9.1

Revision 1.9 / (download) - annotate - [select for diffs], Sat Aug 22 20:14:37 2009 UTC (14 years, 8 months ago) by schwarze
Branch: MAIN
Changes since 1.8: +113 -46 lines
Diff to previous 1.8 (colored)

Kristaps@ significantly overhauled libman.
I'm committing this in one large chunk because in contrast to -mdoc, -man
is mostly untested in OpenBSD anyway, so any fallout can be fixed in-tree.
Among others, improved support for .IP, .HP, and .TP.
Now in sync with release 1.9.0.

Revision 1.8 / (download) - annotate - [select for diffs], Sat Aug 22 15:15:37 2009 UTC (14 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.7: +3 -2 lines
Diff to previous 1.7 (colored)

sync to 1.8.4: support .sp in -man

Revision 1.7 / (download) - annotate - [select for diffs], Sun Jul 12 20:30:27 2009 UTC (14 years, 10 months ago) by schwarze
Branch: MAIN
Changes since 1.6: +16 -36 lines
Diff to previous 1.6 (colored)

sync to 1.7.23: unify the various "enum merr" into libman.h and libmdoc.h,
use it as a new argument to mdoc_err(), the same way as for for man_err(),
and use string tables instead of switch statements to select error messages

Revision 1.6 / (download) - annotate - [select for diffs], Tue Jul 7 00:54:46 2009 UTC (14 years, 10 months ago) by schwarze
Branch: MAIN
Changes since 1.5: +4 -1 lines
Diff to previous 1.5 (colored)

sync to 1.7.21: provide WESCAPE and MAN_IGN_ESCAPE,
to be used soon in man_validate.c

Revision 1.5 / (download) - annotate - [select for diffs], Tue Jun 23 22:31:26 2009 UTC (14 years, 10 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_4_6_BASE, OPENBSD_4_6
Changes since 1.4: +6 -1 lines
Diff to previous 1.4 (colored)

sync to 1.7.20: root and text validation for -man

Revision 1.4 / (download) - annotate - [select for diffs], Tue Jun 23 22:05:42 2009 UTC (14 years, 10 months ago) by schwarze
Branch: MAIN
Changes since 1.3: +44 -1 lines
Diff to previous 1.3 (colored)

sync to 1.7.20: error reporting functions for -man

Revision 1.3 / (download) - annotate - [select for diffs], Thu Jun 18 23:34:53 2009 UTC (14 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.2: +3 -7 lines
Diff to previous 1.2 (colored)

sync to 1.7.19: improved comment handling

Revision 1.2 / (download) - annotate - [select for diffs], Sun Jun 14 23:00:57 2009 UTC (14 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.1: +12 -14 lines
Diff to previous 1.1 (colored)

sync to 1.7.16: comments, whitespace and spelling fixes; no functional change

Revision 1.1 / (download) - annotate - [select for diffs], Mon Apr 6 20:30:40 2009 UTC (15 years, 1 month ago) by kristaps
Branch: MAIN

Initial check-in of mandoc for formatting manuals. ok deraadt@

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.