diff options
Diffstat (limited to 'builtin.c')
-rw-r--r-- | builtin.c | 24 |
1 files changed, 23 insertions, 1 deletions
@@ -2924,6 +2924,10 @@ do_sub(int nargs, unsigned int flags) } } + if ((target->flags & BOOL) != 0) + fatal(_("%s: target cannot be of type bool"), + (flags & GSUB) != 0 ? "gsub" : "sub"); + global = (how_many == -1); rep_node = POP_STRING(); /* replacement text */ @@ -4112,7 +4116,10 @@ do_typeof(int nargs) } break; case Node_val: - switch (fixtype(arg)->flags & (STRING|NUMBER|USER_INPUT|REGEX)) { + switch (fixtype(arg)->flags & (STRING|NUMBER|USER_INPUT|REGEX|BOOL)) { + case NUMBER|BOOL: + res = "number|bool"; + break; case NUMBER: res = "number"; break; @@ -4321,3 +4328,18 @@ check_symtab_functab(NODE *dest, const char *fname, const char *msg) else if (dest == func_table) fatal(msg, fname, "FUNCTAB"); } + +/* do_mkbool --- create boolean values */ + +NODE * +do_mkbool(int nargs) +{ + NODE *tmp; + bool result; + + tmp = POP_SCALAR(); + result = boolval(tmp); + DEREF(tmp); + + return make_bool_node(result); +} |