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

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

Revision 1.1, Thu Aug 23 14:29:42 2018 UTC (5 years, 9 months ago) by schwarze
Branch: MAIN
CVS Tags: VERSION_1_14_6, VERSION_1_14_5

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: bad.in,v 1.1 2018/08/23 14:16:12 schwarze Exp $
.TH SHIFT_BAD 1 "August 23, 2018"
.SH NAME
.B shift-bad
\(en wrong usage of macro arguments
.SH DESCRIPTION
initial text
.de mym
in macro: "\\$1"
.PP
invalid argument number 'x': "\\$x"
..
.PP
argument used before call: "\$1"
.shift
.PP
.mym argument
.PP
argument used after call: "\$1"
.shift 2
.PP
.de mym
.shift badarg
after shift badarg: "\\$1"
.shift 2
after excessive shift: \\n(.$ "\\$1"
..
.mym arg1 arg2
.PP
final text