OpenBSD CVS

CVS log for src/share/man/man7/roff.7


[BACK] Up to [local] / src / share / man / man7

Request diff between arbitrary revisions


Default branch: MAIN


Revision 1.102 / (download) - annotate - [select for diffs], Mon Oct 23 20:07:18 2023 UTC (7 months, 1 week ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_7_5_BASE, OPENBSD_7_5, HEAD
Changes since 1.101: +4 -3 lines
Diff to previous 1.101 (colored)

Support some escape sequences, in particular character escape sequences,
inside \w arguments, and skip most other escape sequences when measuring
the output length in this way because most escape sequences contribute
little or nothing to text width: for example, consider font escapes in
terminal output.

This implementation is very rudimentary.  In particular, it assumes that
every character has the same width.  No attempt is made to detect
double-width or zero-width Unicode characters or to take dependencies on
output devices or fonts into account.  These limitations are hard to
avoid because mandoc has to interpolate \w at the parsing stage when the
output device is not yet known.  I really do not want the content of the
syntax tree to depend on the output device.

Feature requested by Paul <Eggert at cs dot ucla dot edu>, who also
submitted a patch, but i chose to commit this very different patch
with almost the same functionality.
His input was still very valuable because complete support for \w is
out of the question, and consequently, the main task is identifying
subsets of the feature that are needed for real-world manual pages
and can be supported without uprooting the whole forest.

Revision 1.101 / (download) - annotate - [select for diffs], Tue May 31 20:21:40 2022 UTC (2 years ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_7_4_BASE, OPENBSD_7_4, OPENBSD_7_3_BASE, OPENBSD_7_3, OPENBSD_7_2_BASE, OPENBSD_7_2
Changes since 1.100: +19 -4 lines
Diff to previous 1.100 (colored)

Rudimentary implementation of the \A escape sequence, following groff
semantics (test identifier for syntactical validity), not at all
following the completely unrelated Heirloom semantics (define
hyperlink target position).

The main motivation for providing this implementation is to get \A
into the parsing class ESCAPE_EXPAND that corresponds to groff parsing
behaviour, which is quite similar to the \B escape sequence (test
numerical expression for syntactical validity).  This is likely
to improve parsing of nested escape sequences in the future.

Validation isn't perfect yet.  In particular, this implementation
rejects \A arguments containing some escape sequences that groff
allows to slip through.  But that is unlikely to cause trouble even
in documents using \A for non-trivial purposes.  Rejecting the nested
escapes in question might even improve robustnest because the rejected
names are unlikely to really be usable for practical purposes - no
matter that groff dubiously considers them syntactically valid.

Revision 1.100 / (download) - annotate - [select for diffs], Tue May 31 18:08:02 2022 UTC (2 years ago) by schwarze
Branch: MAIN
Changes since 1.99: +4 -3 lines
Diff to previous 1.99 (colored)

Trivial patch to put the roff(7) \g (interpolate format of register)
escape sequence into the correct parsing class, ESCAPE_EXPAND.
Expansion of \g is supposed to work exactly like the expansion
of the related escape sequence \n (interpolate register value),
but since we ignore the .af (assign output format) request,
we just interpolate an empty string to replace the \g sequence.

Surprising as it may seem, this actually makes a formatting difference
for deviate input like ".O\gNx" which used to raise bogus "escaped
character not allowed in a name" and "skipping unknown macro" errors
and printed nothing, whereas now it correctly prints "OpenBSD".

Revision 1.99 / (download) - annotate - [select for diffs], Mon May 30 22:50:40 2022 UTC (2 years ago) by schwarze
Branch: MAIN
Changes since 1.98: +8 -4 lines
Diff to previous 1.98 (colored)

Dummy implementation of the roff(7) \V (interpolate environment variable)
escape sequence.  This is needed to get \V into the correct parsing
class, ESCAPE_EXPAND.

It is intentional that mandoc(1) output is *not* influenced by environment
variables, so interpolate the name of the variable with some decorating
punctuation rather than interpolating its value.

Revision 1.98 / (download) - annotate - [select for diffs], Fri May 20 13:06:27 2022 UTC (2 years ago) by schwarze
Branch: MAIN
Changes since 1.97: +5 -5 lines
Diff to previous 1.97 (colored)

Re-classify the roff(7) \r (reverse line feed) escape sequence
from "ignore" to "unsupported" because when an input file uses it,
mandoc(1) is likely to significantly misformat the output,
usually showing parts of the output in a different order
than the author intended.

Revision 1.97 / (download) - annotate - [select for diffs], Sat Jan 1 03:59:22 2022 UTC (2 years, 5 months ago) by jsg
Branch: MAIN
CVS Tags: OPENBSD_7_1_BASE, OPENBSD_7_1
Changes since 1.96: +3 -3 lines
Diff to previous 1.96 (colored)

eascape -> escape

Revision 1.96 / (download) - annotate - [select for diffs], Wed Oct 28 21:07:01 2020 UTC (3 years, 7 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_7_0_BASE, OPENBSD_7_0, OPENBSD_6_9_BASE, OPENBSD_6_9
Changes since 1.95: +3 -3 lines
Diff to previous 1.95 (colored)

Correct an embarrassing spelling mistake:
The last name of the author of groff is "Clark".

Revision 1.95 / (download) - annotate - [select for diffs], Thu Apr 23 21:28:09 2020 UTC (4 years, 1 month ago) by jmc
Branch: MAIN
CVS Tags: OPENBSD_6_8_BASE, OPENBSD_6_8, OPENBSD_6_7_BASE, OPENBSD_6_7
Changes since 1.94: +3 -3 lines
Diff to previous 1.94 (colored)

 ce examples of "Ar arg Ar arg" with "Ar arg arg" and stop the spread;

Revision 1.94 / (download) - annotate - [select for diffs], Mon Jul 15 19:20:18 2019 UTC (4 years, 10 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_6_6_BASE, OPENBSD_6_6
Changes since 1.93: +8 -2 lines
Diff to previous 1.93 (colored)

explain escaping of end-of-sentence characters;
missing info reported by Ian <ropers at gmail dot com> on misc@

Revision 1.93 / (download) - annotate - [select for diffs], Mon Jul 1 23:29:50 2019 UTC (4 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.92: +3 -3 lines
Diff to previous 1.92 (colored)

use the standard spelling of the word "idiosyncrasy";
suggested by Michal Nowak <mnowak at startmail dot com>

Revision 1.92 / (download) - annotate - [select for diffs], Sun Apr 21 22:43:00 2019 UTC (5 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.91: +3 -4 lines
Diff to previous 1.91 (colored)

Implement the roff .break request (break out of a .while loop).
Jan Stary <hans at stare dot cz> found it in an ancient groffer(1)
manual page (version 1.19) on MacOS X Mojave.
Having .break not implemented wasn't a particularly bright idea
because obviously, it tended to cause infinite loops.

Revision 1.91 / (download) - annotate - [select for diffs], Tue Jan 1 03:44:48 2019 UTC (5 years, 5 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_6_5_BASE, OPENBSD_6_5
Changes since 1.90: +36 -13 lines
Diff to previous 1.90 (colored)

Now that .nf and .fi are implemented in the roff(7) parser and formatters
rather than in the man(7) parser and formatters, document them in the
roff(7) manual, where they belong, rather than in the man(7) manual.
Mention that they imply an output line break, and mention which macros
imply these requests.

Revision 1.90 / (download) - annotate - [select for diffs], Sun Dec 16 01:34:34 2018 UTC (5 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.89: +29 -21 lines
Diff to previous 1.89 (colored)

minor polishing, in parts related to functional improvements in the past,
and also adding some cross references for important escape sequences

Revision 1.89 / (download) - annotate - [select for diffs], Sat Dec 15 23:33:20 2018 UTC (5 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.88: +79 -41 lines
Diff to previous 1.88 (colored)

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.

Revision 1.88 / (download) - annotate - [select for diffs], Sat Dec 15 19:30:19 2018 UTC (5 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.87: +44 -1 lines
Diff to previous 1.87 (colored)

Several improvements to escape sequence handling.

* Add the missing special character \_ (underscore).
* Partial implementations of \a (leader character)
and \E (uninterpreted escape character).
* Parse and ignore \r (reverse line feed).
* Add a WARNING message about undefined escape sequences.
* Add an UNSUPP message about unsupported escape sequences.
* Mark \! and \? (transparent throughput)
and \O (suppress output) as unsupported.
* Treat the various variants of zero-width spaces as one-byte escape
sequences rather than as special characters, to avoid defining bogus
forms with square brackets.
* For special characters with one-byte names, do not define bogus
forms with square brackets, except for \[-], which is valid.
* In the form with square brackets, undefined special characters do not
fall back to printing the name verbatim, not even for one-byte names.
* Starting a special character name with a blank is an error.
* Undefined escape sequences never abort formatting of the input
string, not even in HTML output mode.
* Document the newly handled escapes, and a few that were missing.
* Regression tests for most of the above.

Revision 1.87 / (download) - annotate - [select for diffs], Thu Oct 4 15:31:40 2018 UTC (5 years, 8 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_6_4_BASE, OPENBSD_6_4
Changes since 1.86: +19 -20 lines
Diff to previous 1.86 (colored)

update DESCRIPTION and COMPATIBILITY, mostly correcting statements
from the past that are no longer true

Revision 1.86 / (download) - annotate - [select for diffs], Thu Oct 4 15:16:07 2018 UTC (5 years, 8 months ago) by schwarze
Branch: MAIN
Changes since 1.85: +103 -97 lines
Diff to previous 1.85 (colored)

Stop abusing subsections to represent the list of escape sequences;
instead, use .Bl -tag like everywhere else.  The same was already
done for requests quite some time ago.  Also, consistently mark up
escape sequences with .Ic, just like requests.

Revision 1.85 / (download) - annotate - [select for diffs], Sat Aug 25 16:43:52 2018 UTC (5 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.84: +12 -5 lines
Diff to previous 1.84 (colored)

Rudimentary implementation of the roff(7) .char (output glyph
definition) request, used for example by groff_hdtbl(7).

This simplistic implementation may interact incorrectly
with the .tr (input character translation) request.
But come on, you are not only using .char *and* .tr, but you do so
with respect to the same character in the same manual page?

Revision 1.84 / (download) - annotate - [select for diffs], Fri Aug 24 22:56:37 2018 UTC (5 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.83: +9 -9 lines
Diff to previous 1.83 (colored)

Rudimentary implementation of the roff(7) .while request.
Needed for example by groff_hdtbl(7).

There are two limitations:
It does not support nested .while requests yet,
and each .while loop must start and end in the same scope.

The roff_parseln() return codes are now more flexible
and allow OR'ing options.

Revision 1.83 / (download) - annotate - [select for diffs], Thu Aug 23 14:16:11 2018 UTC (5 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.82: +9 -6 lines
Diff to previous 1.82 (colored)

Implement the roff(7) .shift and .return requests,
for example used by groff_hdtbl(7) and groff_mom(7).

Also correctly interpolate arguments during nested macro execution
even after .shift and .return, implemented using a stack of argument
arrays.

Note that only read.c, but not roff.c can detect the end of a macro
execution, and the existence of .shift implies that arguments cannot
be interpolated up front, so unfortunately, this includes a partial
revert of roff.c rev. 1.209, moving argument interpolation back into
the function roff_res().

Revision 1.82 / (download) - annotate - [select for diffs], Tue Aug 21 18:15:17 2018 UTC (5 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.81: +7 -2 lines
Diff to previous 1.81 (colored)

Implement the \\$@ escape sequence (insert all macro arguments,
quoted) in addition to the already supported \\$* (similar, but
unquoted).  Then use \\$@ to improve the implementation of
the .als request (macro alias).

Needed by groff_hdtbl(7).
Gosh, it feels like the manual pages of the groff package are
exercising every bloody roff(7) feature under the sun.  In the
manual page source code itself, not merely in the implementation
of the used macro packages, that is.

Revision 1.81 / (download) - annotate - [select for diffs], Sun Aug 19 17:43:39 2018 UTC (5 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.80: +19 -6 lines
Diff to previous 1.80 (colored)

Mostly complete implementation of the 'c' (character available)
roff conditional, except that the .char request still isn't supported
and that behaviour differs from groff in many edge cases.
But at least valid character names and numbers are now distinguished
from invalid ones.
This also fixes the bug that parsing of the 'c' conditional was
incomplete, which resulted in leaking the tested character to the
input parser at the beginning of the body when the condition was
inverted.

Revision 1.80 / (download) - annotate - [select for diffs], Sat Aug 18 21:36:53 2018 UTC (5 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.79: +8 -2 lines
Diff to previous 1.79 (colored)

support the highly surprising escape sequence \# (line continuation
with comment); used for example by gropdf(1)

Revision 1.79 / (download) - annotate - [select for diffs], Thu Aug 16 14:01:35 2018 UTC (5 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.78: +23 -40 lines
Diff to previous 1.78 (colored)

Document \*(.T.
While here, delete the section about predefined strings.
For manual pages, the concept is not important enough to be discussed
in such a prominent place, and some aspects of the text were also
misleading.  Add a shorter version of the relevant parts to the
description of the \* escape sequence instead.

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

The groff man-ext macros define fonts CB, CI, and CR,
and some groff manual pages actually use them in .ft requests.
It's easy enough to handle these .ft requests in mandoc, too.

Revision 1.77 / (download) - annotate - [select for diffs], Fri Aug 10 04:41:21 2018 UTC (5 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.76: +9 -6 lines
Diff to previous 1.76 (colored)

Implement the roff(7) .nop (no operation) request.
Examples of manual pages (ab)using it
include groff(7), chem(1), groff_mom(7), and groff_hdtbl(7).

Revision 1.76 / (download) - annotate - [select for diffs], Tue Apr 10 00:52:21 2018 UTC (6 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.75: +19 -5 lines
Diff to previous 1.75 (colored)

Two new low-level roff(7) features:
* .nr optional third argument (auto-increment step size)
* \n+ and \n- numerical register auto-increment and -decrement
bentley@ reported on Dec 9, 2013 that lang/sbcl(1) uses these.

Revision 1.75 / (download) - annotate - [select for diffs], Fri Dec 15 18:08:47 2017 UTC (6 years, 5 months ago) by jmc
Branch: MAIN
CVS Tags: OPENBSD_6_3_BASE, OPENBSD_6_3
Changes since 1.74: +3 -3 lines
Diff to previous 1.74 (colored)

typo; from alexander kuleshov

Revision 1.74 / (download) - annotate - [select for diffs], Wed Jul 5 12:23:46 2017 UTC (6 years, 11 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_6_2_BASE, OPENBSD_6_2
Changes since 1.73: +15 -15 lines
Diff to previous 1.73 (colored)

nits about trailing punctuation found with mandoc -Tlint

Revision 1.73 / (download) - annotate - [select for diffs], Wed Jun 14 23:23:51 2017 UTC (6 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.72: +6 -3 lines
Diff to previous 1.72 (colored)

implement so-called absolute horizontal motion: \h'|...',
used for example by zoem(1)

Revision 1.72 / (download) - annotate - [select for diffs], Wed Jun 14 22:50:37 2017 UTC (6 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.71: +10 -3 lines
Diff to previous 1.71 (colored)

Naive implementation of the roff(7) .po (page offset) request.

This clearly works when .po is called on the top level, but might
not be sophisticated enough if people call .po inside indentation-changing
contexts, but i haven't seen that in manual pages (yet :).

Revision 1.71 / (download) - annotate - [select for diffs], Wed Jun 14 19:39:05 2017 UTC (6 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.70: +1 -2 lines
Diff to previous 1.70 (colored)

simple implementation of the roff(7) .als (macro alias) request,
sufficient for pages using po4a(1)

Revision 1.70 / (download) - annotate - [select for diffs], Wed Jun 14 14:01:34 2017 UTC (6 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.69: +10 -3 lines
Diff to previous 1.69 (colored)

implement the roff(7) d (macro or string defined) conditional

Revision 1.69 / (download) - annotate - [select for diffs], Wed Jun 14 13:00:13 2017 UTC (6 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.68: +5 -3 lines
Diff to previous 1.68 (colored)

implement roff(7) .rj (right justify) request

Revision 1.68 / (download) - annotate - [select for diffs], Wed Jun 14 01:31:19 2017 UTC (6 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.67: +4 -2 lines
Diff to previous 1.67 (colored)

implement the roff(7) \p (break output line) escape sequence

Revision 1.67 / (download) - annotate - [select for diffs], Sat Jun 10 16:32:08 2017 UTC (6 years, 11 months ago) by schwarze
Branch: MAIN
Changes since 1.66: +3 -3 lines
Diff to previous 1.66 (colored)

minor markup simplifications

Revision 1.66 / (download) - annotate - [select for diffs], Wed Jun 7 00:50:30 2017 UTC (7 years ago) by schwarze
Branch: MAIN
Changes since 1.65: +13 -4 lines
Diff to previous 1.65 (colored)

Implement the roff(7) .rn (rename macro or string) request.
Renaming a user-defined macro is very simple: just copy
the definition to the new name and delete the old name.
Renaming high-level macros is a bit tricky: use a dedicated
key-value-table, with non-standard names as keys and standard
names as values.  When a macro is found that is not user-defined,
look it up in the "renamed" table and translate it back to the
standard name before passing it on to the high-level parsers.

Revision 1.65 / (download) - annotate - [select for diffs], Tue Jun 6 15:00:56 2017 UTC (7 years ago) by schwarze
Branch: MAIN
Changes since 1.64: +5 -2 lines
Diff to previous 1.64 (colored)

Minimal implementation of the roff(7) .ce request (center a number
of input lines without filling).
Contrary to groff, high-level macros abort .ce mode for now.

Revision 1.64 / (download) - annotate - [select for diffs], Sun Jun 4 22:43:50 2017 UTC (7 years ago) by schwarze
Branch: MAIN
Changes since 1.63: +5 -3 lines
Diff to previous 1.63 (colored)

Implement the roff(7) .mc (right margin character) request.
The Tcl/Tk manual pages use this extensively.
Delete the TERM_MAXMARGIN hack, it breaks .mc inside .nf;
instead, implement a proper TERMP_BRNEVER flag.

Revision 1.63 / (download) - annotate - [select for diffs], Sun Jun 4 00:08:56 2017 UTC (7 years ago) by schwarze
Branch: MAIN
Changes since 1.62: +7 -5 lines
Diff to previous 1.62 (colored)

Pure preprocessor implementation of the roff(7) .ec and .eo requests
(escape character control), touching nothing after the preprocessing
stage and keeping even the state variable local to the preprocessor.
Since the escape character is also used for line continuation, this
requires pulling the implementation of line continuation from the
input reader to the preprocessor, which also considerably shortens
the code required for that.

When the escape character is changed, simply let the preprocessor
replace bare by escaped backslashes and instances of the non-standard
escape character with bare backslashes - that's all we need.

Oh, and if anybody dares to use these requests in OpenBSD manuals,
sending a medium-sized pack of axe-murderes after them might be a
worthwhile part of the punishment, but probably insuffient on its own.

Revision 1.62 / (download) - annotate - [select for diffs], Fri Jun 2 19:21:03 2017 UTC (7 years ago) by schwarze
Branch: MAIN
Changes since 1.61: +7 -5 lines
Diff to previous 1.61 (colored)

Partial implementation of \h (horizontal line drawing function).
A full implementation would require access to output device properties
and state variables (both only available after the main parser has
finalized the parse tree) before numerical expansions in the roff
preprocessor (i.e., before the main parser is even started).

Not trying to pull that stunt right now because the static-width
implementation committed here is sufficient for tcl-style manual pages
and already more complicated than i would have suspected.

Revision 1.61 / (download) - annotate - [select for diffs], Thu Jun 1 19:05:15 2017 UTC (7 years ago) by schwarze
Branch: MAIN
Changes since 1.60: +5 -4 lines
Diff to previous 1.60 (colored)

Minimal implementation of the \h (horizontal motion) escape sequence.
Good enough to cope with the average DocBook insanity.

Revision 1.60 / (download) - annotate - [select for diffs], Mon May 8 15:33:43 2017 UTC (7 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.59: +12 -6 lines
Diff to previous 1.59 (colored)

Basic implementation of the roff(7) .ti (temporary indent) request.
Needed by about four dozen ports (thanks to naddy@ for the research).

Revision 1.59 / (download) - annotate - [select for diffs], Mon May 8 03:55:09 2017 UTC (7 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.58: +414 -429 lines
Diff to previous 1.58 (colored)

Convert REQUEST REFERENCE from using .Ss to .Bl -tag, allowing to
specify request arguments and supporting tag searching in less(1).
Improve some entries and document .ta.

Revision 1.58 / (download) - annotate - [select for diffs], Fri May 5 15:54:28 2017 UTC (7 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.57: +12 -2 lines
Diff to previous 1.57 (colored)

Shorten the description of .sp and move it to roff(7).
If is not a macro but a low-level roff request
and not recommended for use in manual pages.

Revision 1.57 / (download) - annotate - [select for diffs], Fri May 5 02:31:23 2017 UTC (7 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.56: +4 -10 lines
Diff to previous 1.56 (colored)

Clean up docs after today's .br and .ft code cleanup; simpler.

Revision 1.56 / (download) - annotate - [select for diffs], Tue Feb 21 23:44:39 2017 UTC (7 years, 3 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_13, OPENBSD_6_1_BASE, OPENBSD_6_1
Changes since 1.55: +3 -3 lines
Diff to previous 1.55 (colored)

fix spelling error;
found by Michael <Stapelberg at debian dot org> with Lintian

Revision 1.55 / (download) - annotate - [select for diffs], Wed Sep 23 09:23:49 2015 UTC (8 years, 8 months ago) by sobrado
Branch: MAIN
CVS Tags: OPENBSD_6_0_BASE, OPENBSD_6_0, OPENBSD_5_9_BASE, OPENBSD_5_9
Changes since 1.54: +6 -6 lines
Diff to previous 1.54 (colored)

typos.

Revision 1.54 / (download) - annotate - [select for diffs], Sat Aug 29 22:39:59 2015 UTC (8 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.53: +9 -3 lines
Diff to previous 1.53 (colored)

Parse and ignore the escape sequences \, and \/ (italic corrections).
Actually using these is very stupid because they are groff extensions
and other roff(7) implementations typically print unintended characters
at the places where they are used.
Nevertheless, some manuals contain them, for example ocserv(8).
Problem reported by Kurt Jaeger <pi at FreeBSD>.

Revision 1.53 / (download) - annotate - [select for diffs], Sat Aug 29 21:37:11 2015 UTC (8 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.52: +4 -2 lines
Diff to previous 1.52 (colored)

Implement the escape sequence \\$*, expanding to all arguments
of the current user-defined macro.
This is another missing feature required for ocserv(8).
Problem reported by Kurt Jaeger <pi at FreeBSD>.

Revision 1.52 / (download) - annotate - [select for diffs], Sun May 31 23:12:16 2015 UTC (9 years ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_5_8_BASE, OPENBSD_5_8
Changes since 1.51: +7 -4 lines
Diff to previous 1.51 (colored)

Implement the roff(7) `r' (register exists) conditional.
Missing feature found by Markus <Waldeck at gmx dot de>
in Debian's bash(1) manual page.

Revision 1.51 / (download) - annotate - [select for diffs], Wed Apr 29 18:32:57 2015 UTC (9 years, 1 month ago) by schwarze
Branch: MAIN
Changes since 1.50: +3 -6 lines
Diff to previous 1.50 (colored)

Replace the kludge for the \z escape sequence by an actual
implementation.  As a side effect, minus ten lines of code.

As another side effect, this also fixes the assertion failure that
used to be triggered by "\z\o'ab'c" at the beginning of an output
line, found by jsg@ with afl (test case 022/Apr27).

Revision 1.50 / (download) - annotate - [select for diffs], Tue Feb 17 17:16:11 2015 UTC (9 years, 3 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_5_7_BASE, OPENBSD_5_7
Changes since 1.49: +11 -6 lines
Diff to previous 1.49 (colored)

Let .it accept numerical expressions, not just numerical constants.
For .it, ignore scaling units in roff_getnum().
Inside parentheses, skip whitespace after a sign in roff_getnum().
Parse and ignore unary plus in roff_getnum().
As a bonus, get rid of the only call to mandoc_strntoi() in roff.c.

Revision 1.49 / (download) - annotate - [select for diffs], Thu Jan 29 00:33:14 2015 UTC (9 years, 4 months ago) by schwarze
Branch: MAIN
Changes since 1.48: +47 -31 lines
Diff to previous 1.48 (colored)

Radical cleanup of COMPATIBILITY sections:
Remove lots of lies, dozens of irrelevant implementation details,
and all references to groff versions older than 1.17.  Move relevant
information to the pages where it belongs, and out of mandoc(1) in
particular.  Add some missing general remarks to roff(7), where it
fits the character and purpose of the page much better.

Revision 1.48 / (download) - annotate - [select for diffs], Fri Jan 23 20:17:25 2015 UTC (9 years, 4 months ago) by schwarze
Branch: MAIN
Changes since 1.47: +4 -4 lines
Diff to previous 1.47 (colored)

While ignoring the .ta (set tab stops) and .ti (temp indent) requests
is sometimes harmless, it often causes seriously ugly output,
so flag these requests as unsupported rather than ignoring them.
Discussed with naddy@.

Revision 1.47 / (download) - annotate - [select for diffs], Fri Jan 23 07:41:16 2015 UTC (9 years, 4 months ago) by jmc
Branch: MAIN
Changes since 1.46: +3 -3 lines
Diff to previous 1.46 (colored)

zap trailing whitespace;

Revision 1.46 / (download) - annotate - [select for diffs], Fri Jan 23 00:38:42 2015 UTC (9 years, 4 months ago) by schwarze
Branch: MAIN
Changes since 1.45: +9 -1 lines
Diff to previous 1.45 (colored)

Wonders of roff(7): Integer numbers in numerical expressions can carry
scaling units, and some manuals (e.g. in devel/grcs) actually use that,
so let's support it.  Missing feature reported by naddy@.

Revision 1.45 / (download) - annotate - [select for diffs], Wed Jan 21 23:48:05 2015 UTC (9 years, 4 months ago) by jmc
Branch: MAIN
Changes since 1.44: +3 -3 lines
Diff to previous 1.44 (colored)

tweak previous; ok schwarze

Revision 1.44 / (download) - annotate - [select for diffs], Wed Jan 21 20:20:49 2015 UTC (9 years, 4 months ago) by schwarze
Branch: MAIN
Changes since 1.43: +6 -5 lines
Diff to previous 1.43 (colored)

Rudimentary implementation of the roff(7) \o escape sequence (overstrike).
This is of some relevance because the pod2man(1) preamble abuses it
for the icelandic letter Thorn, instead of simply using \(TP and \(Tp.
Missing feature found by sthen@ in DateTime::Locale::is_IS(3p).

Revision 1.43 / (download) - annotate - [select for diffs], Tue Jan 20 22:34:15 2015 UTC (9 years, 4 months ago) by jmc
Branch: MAIN
Changes since 1.42: +4 -4 lines
Diff to previous 1.42 (colored)

tweak previous; ok schwarze

Revision 1.42 / (download) - annotate - [select for diffs], Tue Jan 20 21:12:46 2015 UTC (9 years, 4 months ago) by schwarze
Branch: MAIN
Changes since 1.41: +725 -55 lines
Diff to previous 1.41 (colored)

Split the -Werror message level into -Werror (broken manual, probably
using mandoc is better than using groff) and -Wunsupp (manual using
unsupported low-level roff(7) feature, probably using groff is better
than using mandoc).  Once this feature is complete, it is intended
to help porting, making the decision whether to USE_GROFF easier.

As a first step, distinguish four classes of roff(7) requests:
1. Supported (currently 24 requests)
2. Currently ignored because unimportant (120)  ->  no message
3. Ignored for good because insecure (14)  ->  -Werror
4. Currently unsupported (68)  ->  these trigger the new -Wunsupp messages

Revision 1.41 / (download) - annotate - [select for diffs], Tue Jan 20 18:54:33 2015 UTC (9 years, 4 months ago) by tedu
Branch: MAIN
Changes since 1.40: +3 -3 lines
Diff to previous 1.40 (colored)

change spelling of centre to center. consistent with other man pages,
the name of the macro being described, and look(1).
ok jmc

Revision 1.40 / (download) - annotate - [select for diffs], Thu Dec 25 17:18:40 2014 UTC (9 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.39: +6 -4 lines
Diff to previous 1.39 (colored)

Reduce memory and time consumption on certain malformed input files
by limiting the length of expanded input lines during the
(usually recursive) expansion of user defined strings.
Resource hogging found by jsg@ with afl.

Revision 1.39 / (download) - annotate - [select for diffs], Tue Dec 2 10:07:17 2014 UTC (9 years, 6 months ago) by schwarze
Branch: MAIN
Changes since 1.38: +6 -4 lines
Diff to previous 1.38 (colored)

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.38 / (download) - annotate - [select for diffs], Wed Nov 19 01:20:18 2014 UTC (9 years, 6 months ago) by schwarze
Branch: MAIN
Changes since 1.37: +5 -3 lines
Diff to previous 1.37 (colored)

Support the ".if v" conditional operator (vroff mode, always false)
for groff compatibility because pod2man(1) uses it that way.
Weirdly, groff documents it as "for compatibility with other
troff versions" but neither Heirloom nor Plan 9 have it.
Issue reported by giovanni@ via sthen@.

Revision 1.37 / (download) - annotate - [select for diffs], Sun Sep 7 00:21:23 2014 UTC (9 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.36: +7 -2 lines
Diff to previous 1.36 (colored)

Parse and ignore the .pl (page length) request;
Daniel Levai reports that Slackware Linux uses this.

Revision 1.36 / (download) - annotate - [select for diffs], Thu Aug 14 20:06:41 2014 UTC (9 years, 9 months ago) by jmc
Branch: MAIN
Changes since 1.35: +2 -2 lines
Diff to previous 1.35 (colored)

double word fix-o;

Revision 1.35 / (download) - annotate - [select for diffs], Wed Aug 13 22:09:28 2014 UTC (9 years, 9 months ago) by schwarze
Branch: MAIN
Changes since 1.34: +11 -5 lines
Diff to previous 1.34 (colored)

Begin cleanup of scaling units.
Note that we use 240u := 1i for all devices, even -Tps and -Tpdf.
Big fix of -Tascii rendering of f, m, and u.
Small fix of -Tascii rendering of c.
Big fix of -Thtml rendering of u.
Big fix of -Tps rendering of m, p, and u.
Clarify -Tps rendering of c.
Correct documentation of scaling units, in particular with respect to u.
This for example improves rendering of the OpenGL manuals.
Joint work with kristaps@.

Revision 1.34 / (download) - annotate - [select for diffs], Mon Jul 7 11:34:41 2014 UTC (9 years, 11 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_5_6_BASE, OPENBSD_5_6
Changes since 1.33: +15 -14 lines
Diff to previous 1.33 (colored)

implement .dei and .ami

Revision 1.33 / (download) - annotate - [select for diffs], Tue Apr 8 01:36:50 2014 UTC (10 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.32: +17 -8 lines
Diff to previous 1.32 (colored)

Fully implement the \B (validate numerical expression) and
partially implement the \w (measure text width) escape sequence
in a way that makes them usable in numerical expressions and in
conditional requests, similar to how \n (interpolate number register)
and \* (expand user-defined string) are implemented.

This lets mandoc(1) handle the baroque low-level roff code
found at the beginning of the ggrep(1) manual.
Thanks to pascal@ for the report.

Revision 1.32 / (download) - annotate - [select for diffs], Mon Apr 7 15:05:12 2014 UTC (10 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.31: +81 -18 lines
Diff to previous 1.31 (colored)

Almost complete implementation of roff(7) numerical expressions.
Support all binary operators except ';' (scale conversion).
Fully support chained operations and nested parentheses.
Use this for the .nr, .if, and .ie requests.
While here, fix parsing of integer numbers in roff_getnum().

Revision 1.31 / (download) - annotate - [select for diffs], Sat Apr 5 20:33:38 2014 UTC (10 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.30: +11 -7 lines
Diff to previous 1.30 (colored)

Implement the roff(7) .rr (remove register) request.
As reported by sthen@, the perl-5.18 pod2man(1) preamble
thinks cool kids use that in manuals.  I hope *you* know better.

Revision 1.30 / (download) - annotate - [select for diffs], Sun Mar 30 21:27:59 2014 UTC (10 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.29: +5 -3 lines
Diff to previous 1.29 (colored)

Support relative arguments to .ll (increase or decrease line length).

Revision 1.29 / (download) - annotate - [select for diffs], Sun Mar 30 19:47:32 2014 UTC (10 years, 2 months ago) by schwarze
Branch: MAIN
Changes since 1.28: +17 -2 lines
Diff to previous 1.28 (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.28 / (download) - annotate - [select for diffs], Sat Mar 8 04:43:38 2014 UTC (10 years, 3 months ago) by schwarze
Branch: MAIN
Changes since 1.27: +72 -41 lines
Diff to previous 1.27 (colored)

Improve .if/.ie condition handling.
* Support string comparisons.
* Support negation not only for numerical, but for all conditions.
* Switch the `o' condition from false to true.
* Handle the `c', `d', and `r' conditions as false for now.
* Use int for boolean data instead of rolling our own "enum roffrule";
needed such that we can use the standard ! and == operators.

Havard Eidnes reported via the NetBSD bug tracking system that some
Tcl*(3) manuals need this, and Thomas Klausner <wiz at NetBSD>
forwarded the report to me.  This doesn't make the crazy Tcl*(3)
macrology maze happy yet, but brings us a bit closer.

Revision 1.27 / (download) - annotate - [select for diffs], Fri Feb 14 23:50:49 2014 UTC (10 years, 3 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_5_5_BASE, OPENBSD_5_5
Changes since 1.26: +15 -3 lines
Diff to previous 1.26 (colored)

document .as and .ce

Revision 1.26 / (download) - annotate - [select for diffs], Thu Dec 26 02:43:12 2013 UTC (10 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.25: +255 -9 lines
Diff to previous 1.25 (colored)

The roff language really has two groups of basic building blocks:
Requests and escape sequences.  Consequently, supplement the
REQUEST REFERENCE by an ESCAPE SEQUENCE REFERENCE, such that people
no longer need to guess or experiment what mandoc(1) implements,
what it parses and ignores, and what it doesn't handle at all.

Revision 1.25 / (download) - annotate - [select for diffs], Sun Dec 15 21:18:00 2013 UTC (10 years, 5 months ago) by schwarze
Branch: MAIN
Changes since 1.24: +9 -6 lines
Diff to previous 1.24 (colored)

The "value" argument to the roff(7) .nr requests ends right before
the first non-digit character.  While here, implement and document
an optional sign, requesting increment or decrement, as documented
in the Ossanna/Kernighan/Ritter troff manual and supported by groff.

Reported by bentley@ on discuss at mdocml.

Revision 1.24 / (download) - annotate - [select for diffs], Tue Oct 22 20:37:54 2013 UTC (10 years, 7 months ago) by schwarze
Branch: MAIN
Changes since 1.23: +5 -2 lines
Diff to previous 1.23 (colored)

Parse and ignore .hw (hyphenation points in words); this is safe because
we don't do hyphenation anyway, so there is no point in throwing an ERROR
when encountering .hw.
Real-world usage of the request found by naddy@ in sysutils/dwdiff(1).

Revision 1.23 / (download) - annotate - [select for diffs], Mon Oct 14 01:42:25 2013 UTC (10 years, 7 months ago) by schwarze
Branch: MAIN
Changes since 1.22: +8 -2 lines
Diff to previous 1.22 (colored)

Parse and ignore the .fam (font family) request.
Fixes irunner(1) in devel/ipython and uim-xim(1) in inputmethods/uim.
Thanks to naddy@ for bringing these to my attention.

Revision 1.22 / (download) - annotate - [select for diffs], Thu Aug 8 20:07:24 2013 UTC (10 years, 10 months ago) by schwarze
Branch: MAIN
Changes since 1.21: +11 -4 lines
Diff to previous 1.21 (colored)

Implement the roff(7) font-escape sequence \f(BI "bold+italic".
This improves the formatting of about 40 base manuals
and reduces groff-mandoc formatting differences in base by about 5%.

Revision 1.21 / (download) - annotate - [select for diffs], Sat Jul 13 19:44:14 2013 UTC (10 years, 10 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_5_4_BASE, OPENBSD_5_4
Changes since 1.20: +4 -6 lines
Diff to previous 1.20 (colored)

For citing the names and email addresses of authors,
consistently use the style ".An name Aq Mt email".

Triggered by a question from Jan Stary <hans at stare dot cz>.
Somehow, i missed these two files, jmc@ agrees with the principle.

Revision 1.20 / (download) - annotate - [select for diffs], Sat Apr 27 17:15:01 2013 UTC (11 years, 1 month ago) by jmc
Branch: MAIN
Changes since 1.19: +3 -3 lines
Diff to previous 1.19 (colored)

- (mdoc.7) fix Xr to self
- double word fix

Revision 1.19 / (download) - annotate - [select for diffs], Sun Jul 29 12:57:45 2012 UTC (11 years, 10 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_5_3_BASE, OPENBSD_5_3
Changes since 1.18: +15 -3 lines
Diff to previous 1.18 (colored)

Two improvements from kristaps@:
Document .cc (bsd.lv rev. 1.39)
and fix a typo (bsd.lv rev. 1.38).

Revision 1.18 / (download) - annotate - [select for diffs], Sun Dec 11 00:38:08 2011 UTC (12 years, 5 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_5_2_BASE, OPENBSD_5_2, OPENBSD_5_1_BASE, OPENBSD_5_1
Changes since 1.17: +18 -2 lines
Diff to previous 1.17 (colored)

Explain where .so paths are rooted, and why, and discourage its use;
feedback and ok jmc@, suggested by and ok kristaps@.

Revision 1.17 / (download) - annotate - [select for diffs], Wed Nov 23 02:12:22 2011 UTC (12 years, 6 months ago) by schwarze
Branch: MAIN
Changes since 1.16: +4 -4 lines
Diff to previous 1.16 (colored)

typo reported by Steffen Daode Nurpmeso <sdaoden at googlemail dot com>
and remove a trailing blank noticed by jmc@

Revision 1.16 / (download) - annotate - [select for diffs], Mon Nov 21 23:29:03 2011 UTC (12 years, 6 months ago) by schwarze
Branch: MAIN
Changes since 1.15: +17 -9 lines
Diff to previous 1.15 (colored)

Correct several factual errors in the HISTORY section that crept in by
relying on random texts found on various websites.  Kristaps now found
out what really happened by talking to the people involved, see
http://manpages.bsd.lv/history.html for details.
from kristaps@, and ok jmc@ according to kristaps@

Revision 1.15 / (download) - annotate - [select for diffs], Mon Sep 26 23:07:20 2011 UTC (12 years, 8 months ago) by schwarze
Branch: MAIN
Changes since 1.14: +292 -28 lines
Diff to previous 1.14 (colored)

Reorganize part of the content:

1) Move the LANGUAGE SYNTAX from mdoc(7) and man(7) to roff(7),
it's common to both and it's actually roff syntax.
2) Move the MACRO SYNTAX down to the bottom, such that the less
technical parts MANUAL STRUCTURE and MACRO OVERVIEW get to the top.

Getting everything to again fit together after the reshuffling
required various adjustments; also adjust and improve
the DESCRIPTIONS while there.

feedback and "go ahead"  jmc@ kristaps@

Revision 1.14 / (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.13: +17 -6 lines
Diff to previous 1.13 (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.13 / (download) - annotate - [select for diffs], Sun Sep 18 10:38:57 2011 UTC (12 years, 8 months ago) by schwarze
Branch: MAIN
Changes since 1.12: +33 -8 lines
Diff to previous 1.12 (colored)

sync to mandoc 1.11.5:
document eqn(7) and many other improvements
from kristaps@

no objection from deraadt@ against adding an eqn.7 page

Revision 1.12 / (download) - annotate - [select for diffs], Tue Jun 7 23:40:10 2011 UTC (13 years ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_5_0_BASE, OPENBSD_5_0
Changes since 1.11: +14 -9 lines
Diff to previous 1.11 (colored)

bring in lots of improvements from kristaps@;
jmc@ agrees that it's easiest to first commit it,
then tweak it in the tree

Revision 1.11 / (download) - annotate - [select for diffs], Tue Jan 25 01:09:51 2011 UTC (13 years, 4 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_4_9_BASE, OPENBSD_4_9
Changes since 1.10: +16 -2 lines
Diff to previous 1.10 (colored)

Mention .ns, .ps, .ta; related to mandoc/roff.c rev. 1.31.

Revision 1.10 / (download) - annotate - [select for diffs], Tue Jan 25 00:37:39 2011 UTC (13 years, 4 months ago) by schwarze
Branch: MAIN
Changes since 1.9: +2 -6 lines
Diff to previous 1.9 (colored)

As noticed by deraadt@, it goes without saying that text files
on a UNIX system use UNIX conventions, and UNIX tools working
on them expect that.
ok jmc@

Revision 1.9 / (download) - annotate - [select for diffs], Mon Jan 24 23:13:56 2011 UTC (13 years, 4 months ago) by schwarze
Branch: MAIN
Changes since 1.8: +37 -8 lines
Diff to previous 1.8 (colored)

Better explain roff(7) macro argument quoting;
ok jmc@.

Revision 1.8 / (download) - annotate - [select for diffs], Sun Jan 9 15:24:57 2011 UTC (13 years, 4 months ago) by schwarze
Branch: MAIN
Changes since 1.7: +17 -2 lines
Diff to previous 1.7 (colored)

Add and install tbl(7);
written by kristaps@, looked over by jmc@.

Revision 1.7 / (download) - annotate - [select for diffs], Thu Dec 9 23:01:18 2010 UTC (13 years, 6 months ago) by schwarze
Branch: MAIN
Changes since 1.6: +8 -2 lines
Diff to previous 1.6 (colored)

Abort endless loops during roff macro and string expansion.
For now, use the simplest conceivable approach, like groff does:
Just a fixed, ugly input stack limit.
Kristaps@ agrees.

Revision 1.6 / (download) - annotate - [select for diffs], Thu Dec 9 20:56:30 2010 UTC (13 years, 6 months ago) by schwarze
Branch: MAIN
Changes since 1.5: +4 -1 lines
Diff to previous 1.5 (colored)

Roff only interpolates \* strings when the leading backslash is not escaped.
Kristaps@ agrees with the idea, even though he didn't review the final patch.

Revision 1.5 / (download) - annotate - [select for diffs], Tue Nov 30 22:40:13 2010 UTC (13 years, 6 months ago) by jmc
Branch: MAIN
Changes since 1.4: +12 -16 lines
Diff to previous 1.4 (colored)

various clean up; ok schwarze

Revision 1.4 / (download) - annotate - [select for diffs], Tue Nov 30 21:17:52 2010 UTC (13 years, 6 months ago) by schwarze
Branch: MAIN
Changes since 1.3: +127 -76 lines
Diff to previous 1.3 (colored)

General cleanup of the roff(7) manual, and install it.
Be more careful to not confuse requests, macros and escape sequences.
Add more info at various places, including new SEE ALSO and HISTORY sections.
Reads fine to jmc@.

Revision 1.3 / (download) - annotate - [select for diffs], Mon Nov 29 00:12:02 2010 UTC (13 years, 6 months ago) by schwarze
Branch: MAIN
Changes since 1.2: +30 -2 lines
Diff to previous 1.2 (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.2 / (download) - annotate - [select for diffs], Sun Nov 28 01:00:41 2010 UTC (13 years, 6 months ago) by schwarze
Branch: MAIN
Changes since 1.1: +17 -1 lines
Diff to previous 1.1 (colored)

Parse and ignore the .ad, .hy, .nh, and .ne roff requests.
Ignoring these can neither cause information loss nor serious
formatting issues.  As they are frequently used by pod2man(1),
this considerably reduces ERROR noise from mandoc -Tlint
for the Perl manuals.

Revision 1.1 / (download) - annotate - [select for diffs], Sat Nov 27 21:57:23 2010 UTC (13 years, 6 months ago) by schwarze
Branch: MAIN

Move our partial roff language manual to the right place,
such that, after some more improvements, we will eventually
be able to install it.
jmc@ agrees with the plan.

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.