]> git.cameronkatri.com Git - mandoc.git/commitdiff
Trivial patch to put the roff(7) \g (interpolate format of register)
authorIngo Schwarze <schwarze@openbsd.org>
Tue, 31 May 2022 18:09:57 +0000 (18:09 +0000)
committerIngo Schwarze <schwarze@openbsd.org>
Tue, 31 May 2022 18:09:57 +0000 (18:09 +0000)
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".

roff.7
roff.c
roff_escape.c

diff --git a/roff.7 b/roff.7
index 6ebde4fff15ce35f3a665c459b144c4a75424a86..cafa5287640fd345280b97a0b3c4ea37d840cedb 100644 (file)
--- a/roff.7
+++ b/roff.7
@@ -1,4 +1,4 @@
-.\" $Id: roff.7,v 1.118 2022/05/30 23:03:47 schwarze Exp $
+.\" $Id: roff.7,v 1.119 2022/05/31 18:09:57 schwarze Exp $
 .\"
 .\" Copyright (c) 2010-2019, 2022 Ingo Schwarze <schwarze@openbsd.org>
 .\" Copyright (c) 2010, 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
@@ -15,7 +15,7 @@
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\"
-.Dd $Mdocdate: May 30 2022 $
+.Dd $Mdocdate: May 31 2022 $
 .Dt ROFF 7
 .Os
 .Sh NAME
@@ -2085,7 +2085,8 @@ defaults to
 .Ic \efP .
 .It Ic \eg[ Ns Ar name Ns Ic \&]
 Interpolate the format of a number register; ignored by
-.Xr mandoc 1 .
+.Xr mandoc 1 ,
+which interpolates an empty string instead.
 For short names, there are variants
 .Ic \eg Ns Ar c
 and
diff --git a/roff.c b/roff.c
index 59e2644f94ae1e4c875f155af312cbe62b6443f3..0c36e08e24bcacfa8e9268c9b23634ae924a1c0a 100644 (file)
--- a/roff.c
+++ b/roff.c
@@ -1,4 +1,4 @@
-/* $Id: roff.c,v 1.389 2022/05/30 23:03:47 schwarze Exp $ */
+/* $Id: roff.c,v 1.390 2022/05/31 18:09:57 schwarze Exp $ */
 /*
  * Copyright (c) 2010-2015, 2017-2022 Ingo Schwarze <schwarze@openbsd.org>
  * Copyright (c) 2008-2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
@@ -1535,6 +1535,8 @@ roff_expand(struct roff *r, struct buf *buf, int ln, int pos, char ec)
                        roff_expand_patch(buf, iendarg, "}", iend);
                        roff_expand_patch(buf, iesc, "${", iarg);
                        continue;
+               case 'g':
+                       break;
                case 'n':
                        if (iendarg > iarg)
                                (void)snprintf(ubuf, sizeof(ubuf), "%d",
index 51e3d897f28b8bdb0d2d3f21db175d2f973b41f7..3c38ced711a2c77e95fd4d7028fc67a3d8668708 100644 (file)
@@ -158,6 +158,7 @@ roff_escape(const char *buf, const int ln, const int aesc,
        case '$':
        case '*':
        case 'V':
+       case 'g':
        case 'n':
                rval = ESCAPE_EXPAND;
                break;
@@ -165,7 +166,6 @@ roff_escape(const char *buf, const int ln, const int aesc,
        case 'M':
        case 'O':
        case 'Y':
-       case 'g':
        case 'k':
        case 'm':
                rval = ESCAPE_IGNORE;