[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] m4sh: protect LINENO against stray macro
From: |
Eric Blake |
Subject: |
[PATCH] m4sh: protect LINENO against stray macro |
Date: |
Fri, 27 Aug 2010 11:02:21 -0600 |
* lib/m4sugar/m4sh.m4 (_AS_LINENO_PREPARE): Double quote entire
sed script, to avoid issue uncovered by automake testsuite where
'b' was an m4 macro that broke execution on dash.
Reported by Stefano Lattarini.
Signed-off-by: Eric Blake <address@hidden>
---
> Hmm - that means that m4sh is not robust to a macro named [b] in the
> environment. I can probably fix this particular failure with some
> additional quoting.
Like this.
ChangeLog | 6 ++++++
lib/m4sugar/m4sh.m4 | 10 +++++-----
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 236bfcd..5a11ab3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2010-08-27 Eric Blake <address@hidden>
+ m4sh: protect LINENO against stray macro
+ * lib/m4sugar/m4sh.m4 (_AS_LINENO_PREPARE): Double quote entire
+ sed script, to avoid issue uncovered by automake testsuite where
+ 'b' was an m4 macro that broke execution on dash.
+ Reported by Stefano Lattarini.
+
m4sh: assume ${a:-b} support
* tests/m4sh.at (Null variable substitution): New test.
* doc/autoconf.texi (Shell Substitutions) <${var:-value}>: Mention
diff --git a/lib/m4sugar/m4sh.m4 b/lib/m4sugar/m4sh.m4
index 8343b25..ef99cb5 100644
--- a/lib/m4sugar/m4sh.m4
+++ b/lib/m4sugar/m4sh.m4
@@ -1138,23 +1138,23 @@ dnl trailing '-' during substitution so that $LINENO is
not a special
dnl case at line end. (Raja R Harinath suggested sed '=', and Paul
dnl Eggert wrote the scripts with optimization help from Paolo Bonzini).
[_AS_LINENO_WORKS || {
- # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
+[ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
sed -n '
p
- /[[$]]LINENO/=
+ /[$]LINENO/=
' <$as_myself |
sed '
- s/[[$]]LINENO.*/&-/
+ s/[$]LINENO.*/&-/
t lineno
b
:lineno
N
:loop
- s/[[$]]LINENO\([[^'$as_cr_alnum'_]].*\n\)\(.*\)/\2\1\2/
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
t loop
s/-\n.*//
' >$as_me.lineno &&
- chmod +x "$as_me.lineno" ||
+ chmod +x "$as_me.lineno"] ||
AS_ERROR([cannot create $as_me.lineno; rerun with a POSIX shell])
# Don't try to exec as it changes $[0], causing all sort of problems
--
1.7.2.2
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH] m4sh: protect LINENO against stray macro,
Eric Blake <=