summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorEric Blake <ebb9@byu.net>2008-12-24 14:34:06 -0700
committerEric Blake <ebb9@byu.net>2008-12-24 14:34:06 -0700
commitc557201fd9771b93dd5b3193af322d7d86a4cf45 (patch)
tree8c21ac989bceb3c1af68d01394b11edb59f1c148 /modules
parent268aa74a4cd66160d4c589572294e50f455c2069 (diff)
downloadm4-c557201fd9771b93dd5b3193af322d7d86a4cf45.tar.gz
Relax eval as allowed by POSIX 2008.
* modules/evalparse.c (m4_evaluate): Warn, not error, on invalid operator. Quote expression in warning. * modules/mpeval.c (includes): Add quotearg.h. * doc/m4.texinfo (Eval, Improved forloop): Update tests. * NEWS: Update to reflect 1.6 support for `?:'. Signed-off-by: Eric Blake <ebb9@byu.net>
Diffstat (limited to 'modules')
-rw-r--r--modules/evalparse.c5
-rw-r--r--modules/mpeval.c2
2 files changed, 5 insertions, 2 deletions
diff --git a/modules/evalparse.c b/modules/evalparse.c
index 9927e13a..ac30cfe9 100644
--- a/modules/evalparse.c
+++ b/modules/evalparse.c
@@ -940,6 +940,8 @@ m4_evaluate (m4 *context, m4_obstack *obs, size_t argc, m4_macro_args *argv)
err = EXCESS_INPUT;
}
+ if (err != NO_ERROR)
+ str = quotearg_style_mem (locale_quoting_style, str, M4ARGLEN (1));
switch (err)
{
case NO_ERROR:
@@ -967,8 +969,7 @@ m4_evaluate (m4 *context, m4_obstack *obs, size_t argc, m4_macro_args *argv)
break;
case INVALID_OPERATOR:
- /* POSIX requires an error here, unless XCU ERN 137 is approved. */
- m4_error (context, 0, 0, me, _("invalid operator: %s"), str);
+ m4_warn (context, 0, me, _("invalid operator: %s"), str);
break;
case DIVIDE_ZERO:
diff --git a/modules/mpeval.c b/modules/mpeval.c
index 63cd56a4..2d63d6ec 100644
--- a/modules/mpeval.c
+++ b/modules/mpeval.c
@@ -32,6 +32,8 @@
# include <gmp.h>
#endif
+#include "quotearg.h"
+
/* Rename exported symbols for dlpreload()ing. */
#define m4_builtin_table mpeval_LTX_m4_builtin_table
#define m4_macro_table mpeval_LTX_m4_macro_table