diff options
Diffstat (limited to 'builtin.c')
-rw-r--r-- | builtin.c | 22 |
1 files changed, 20 insertions, 2 deletions
@@ -4152,7 +4152,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; @@ -4317,7 +4320,7 @@ format_nan_inf(NODE *n, char format) goto fmt; } else if (mpfr_inf_p(n->mpg_numbr)) { - strcpy(buf, mpfr_sgn(n->mpg_numbr) < 0 ? "-inf" : "+inf"); + strcpy(buf, mpfr_signbit(n->mpg_numbr) ? "-inf" : "+inf"); goto fmt; } else @@ -4362,6 +4365,21 @@ check_symtab_functab(NODE *dest, const char *fname, const char *msg) 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); +} + /* reverse --- reverse the contents of a string in place */ static void |