diff options
author | Eric Blake <ebb9@byu.net> | 2008-12-24 14:34:06 -0700 |
---|---|---|
committer | Eric Blake <ebb9@byu.net> | 2008-12-24 14:34:06 -0700 |
commit | c557201fd9771b93dd5b3193af322d7d86a4cf45 (patch) | |
tree | 8c21ac989bceb3c1af68d01394b11edb59f1c148 /modules | |
parent | 268aa74a4cd66160d4c589572294e50f455c2069 (diff) | |
download | m4-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.c | 5 | ||||
-rw-r--r-- | modules/mpeval.c | 2 |
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 |