aboutsummaryrefslogtreecommitdiffstats
path: root/builtin.c
diff options
context:
space:
mode:
Diffstat (limited to 'builtin.c')
-rw-r--r--builtin.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/builtin.c b/builtin.c
index 7156601e..dc811022 100644
--- a/builtin.c
+++ b/builtin.c
@@ -458,6 +458,21 @@ do_int(int nargs)
return make_number((AWKNUM) d);
}
+/* do_isarray --- check if argument is array */
+
+NODE *
+do_isarray(int nargs)
+{
+ NODE *tmp;
+ int ret = 1;
+
+ tmp = POP();
+ if (tmp->type != Node_var_array) {
+ ret = 0;
+ DEREF(tmp);
+ }
+ return make_number((AWKNUM) ret);
+}
/* do_length --- length of a string, array or $0 */
@@ -468,10 +483,11 @@ do_length(int nargs)
size_t len;
tmp = POP();
-
if (tmp->type == Node_var_array) {
static short warned = FALSE;
+ if (do_posix)
+ fatal(_("length: received array argument"));
if (do_lint && ! warned) {
warned = TRUE;
lintwarn(_("`length(array)' is a gawk extension"));