[BACK]Return to infinite.in CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc / regress / roff / de

File: [cvsweb.bsd.lv] / mandoc / regress / roff / de / infinite.in (download)

Revision 1.4, Thu Aug 23 14:29:41 2018 UTC (6 years, 1 month ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_14_6, VERSION_1_14_5, HEAD
Changes since 1.3: +4 -4 lines

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.337, moving argument interpolation back into
the function roff_res().

.\" $OpenBSD: infinite.in,v 1.4 2018/08/23 14:16:12 schwarze Exp $
.Dd $Mdocdate: August 23 2018 $
.Dt DE-INFINITE 1
.Os
.Sh NAME
.Nm de-infinite
.Nd inifinte recursion in a user-defined macro
.Sh DESCRIPTION
initial text
.de mym
.Op \\$1 \\$2
..
.mym $1 \$1 end
.mym \$1 middle end
middle text
.de mym
.mym
not printed
..
.mym
final text