diff options
author | Steve Bennett <steveb@workware.net.au> | 2021-04-03 14:00:22 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2021-04-03 14:06:53 +1000 |
commit | 3703a49423578649b67abe0e0457842e4ff911a2 (patch) | |
tree | f40294cad6b7f25cce1a68db8193e91e3ff19d4e /jim.c | |
parent | c3df59264eb27d4914c21f0901350a6d9eeb1807 (diff) | |
download | jimtcl-3703a49423578649b67abe0e0457842e4ff911a2.zip jimtcl-3703a49423578649b67abe0e0457842e4ff911a2.tar.gz jimtcl-3703a49423578649b67abe0e0457842e4ff911a2.tar.bz2 |
expr: allow existing multiple argument support with --compat
Some users may not be ready to immediately move to the single-argument
expr, so provide a --compat option to configure to support the
previous behaviour as a transition strategy.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'jim.c')
-rw-r--r-- | jim.c | 26 |
1 files changed, 23 insertions, 3 deletions
@@ -13598,11 +13598,31 @@ static int Jim_UplevelCoreCommand(Jim_Interp *interp, int argc, Jim_Obj *const * /* [expr] */ static int Jim_ExprCoreCommand(Jim_Interp *interp, int argc, Jim_Obj *const *argv) { + int retcode; + if (argc == 2) { - return Jim_EvalExpression(interp, argv[1]); + retcode = Jim_EvalExpression(interp, argv[1]); } - Jim_WrongNumArgs(interp, 1, argv, "expression"); - return JIM_ERR; +#ifndef JIM_COMPAT + else { + Jim_WrongNumArgs(interp, 1, argv, "expression"); + retcode = JIM_ERR; + } +#else + else if (argc > 2) { + Jim_Obj *objPtr; + + objPtr = Jim_ConcatObj(interp, argc - 1, argv + 1); + Jim_IncrRefCount(objPtr); + retcode = Jim_EvalExpression(interp, objPtr); + Jim_DecrRefCount(interp, objPtr); + } + else { + Jim_WrongNumArgs(interp, 1, argv, "expression ?...?"); + return JIM_ERR; + } +#endif + return retcode; } /* [break] */ |