Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/m4 m4 -g: { and } aren't supported in patsubst() or ...



details:   https://anonhg.NetBSD.org/src/rev/1f96b22843b3
branches:  trunk
changeset: 375989:1f96b22843b3
user:      lukem <lukem%NetBSD.org@localhost>
date:      Wed May 24 21:58:19 2023 +0000

description:
m4 -g: { and } aren't supported in patsubst() or regexp()

When running in -g (GNU m4) emulation, patsubst() and regexp()
use the GNU m4 emacs-like regexes as implemented by gnulib,
which don't support {..} intervals.
When converting a GNU m4 regex to a POSIX ERE, escape raw { and }.

Autoconf relies on the GNU m4 regex behaviour.

See:
- https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Redefined-M4-Macros.html
- https://www.gnu.org/software/gnulib/manual/html_node/emacs-regular-expression-syntax.html

This fixes the tools/compat/configure regen.

PR toolchain/57431

diffstat:

 usr.bin/m4/gnum4.c |  6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diffs (27 lines):

diff -r 309a798fb206 -r 1f96b22843b3 usr.bin/m4/gnum4.c
--- a/usr.bin/m4/gnum4.c        Wed May 24 21:49:38 2023 +0000
+++ b/usr.bin/m4/gnum4.c        Wed May 24 21:58:19 2023 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: gnum4.c,v 1.11 2021/12/07 20:24:07 rillig Exp $ */
+/* $NetBSD: gnum4.c,v 1.12 2023/05/24 21:58:19 lukem Exp $ */
 /* $OpenBSD: gnum4.c,v 1.39 2008/08/21 21:01:04 espie Exp $ */
 
 /*
@@ -33,7 +33,7 @@
 #include "nbtool_config.h"
 #endif
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: gnum4.c,v 1.11 2021/12/07 20:24:07 rillig Exp $");
+__RCSID("$NetBSD: gnum4.c,v 1.12 2023/05/24 21:58:19 lukem Exp $");
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -438,7 +438,7 @@ twiddle(const char *p)
                        p+=2;
                        continue;
                }
-               if (*p == '(' || *p == ')' || *p == '|')
+               if (*p == '(' || *p == ')' || *p == '|' || *p == '{' || *p == '}')
                        addchar('\\');
 
                addchar(*p);



Home | Main Index | Thread Index | Old Index