aboutsummaryrefslogtreecommitdiffstats
path: root/extension/arrayparm.c
diff options
context:
space:
mode:
Diffstat (limited to 'extension/arrayparm.c')
-rw-r--r--extension/arrayparm.c21
1 files changed, 6 insertions, 15 deletions
diff --git a/extension/arrayparm.c b/extension/arrayparm.c
index ddf1c8c4..281b50a2 100644
--- a/extension/arrayparm.c
+++ b/extension/arrayparm.c
@@ -41,8 +41,7 @@
*/
static NODE *
-do_mkarray(tree)
-NODE *tree;
+do_mkarray(int args)
{
int ret = -1;
NODE *var, *sub, *val;
@@ -51,13 +50,9 @@ NODE *tree;
if (do_lint && get_curfunc_arg_count() > 3)
lintwarn("mkarray: called with too many arguments");
- var = get_argument(tree, 0);
- if (var == NULL)
- var = stack_ptr[0];
-
- var = get_array(var);
- sub = get_argument(tree, 1);
- val = get_argument(tree, 2);
+ var = get_array_argument(0, FALSE);
+ sub = get_scalar_argument(1, FALSE);
+ val = get_scalar_argument(2, FALSE);
printf("var->type = %s\n", nodetype2str(var->type));
printf("sub->type = %s\n", nodetype2str(sub->type));
@@ -69,12 +64,8 @@ NODE *tree;
*elemval = dupnode(val);
ret = 0;
-
/* Set the return value */
- set_value(tmp_number((AWKNUM) ret));
-
- /* Just to make the interpreter happy */
- return tmp_number((AWKNUM) 0);
+ return make_number((AWKNUM) ret);
}
/* dlload --- load new builtins in this library */
@@ -86,5 +77,5 @@ void *dl;
{
make_builtin("mkarray", do_mkarray, 3);
- return tmp_number((AWKNUM) 0);
+ return make_number((AWKNUM) 0);
}