diff options
Diffstat (limited to 'extension/testarg.c')
-rw-r--r-- | extension/testarg.c | 59 |
1 files changed, 38 insertions, 21 deletions
diff --git a/extension/testarg.c b/extension/testarg.c index c1a8dc96..ba4d56ff 100644 --- a/extension/testarg.c +++ b/extension/testarg.c @@ -5,27 +5,44 @@ int plugin_is_GPL_compatible; static NODE * do_check_arg(int nargs) { - int ret = 0, argc; - NODE *arg1, *arg2, *arg3; - - argc = get_curfunc_arg_count(); - printf("arg count: defined = %d, supplied = %d\n", - nargs, argc); - - arg1 = get_scalar_argument(0, FALSE); - arg2 = get_array_argument(1, FALSE); - arg3 = get_scalar_argument(2, TRUE); /* optional */ - if (argc > 3) { /* try to use an extra arg */ - NODE *arg4; - arg4 = get_array_argument(3, TRUE); - } - if (arg3 != NULL) - printf("3rd arg present\n\n"); - else - printf("no 3rd arg\n\n"); - - /* Set the return value */ - return make_number((AWKNUM) ret); + int ret = 0, argc; + NODE *arg1, *arg2, *arg3; + + argc = get_curfunc_arg_count(); + printf("arg count: defined = %d, supplied = %d\n", + nargs, argc); + + arg1 = get_scalar_argument(0, FALSE); + arg2 = get_array_argument(1, FALSE); + arg3 = get_scalar_argument(2, TRUE); /* optional */ + if (argc > 3) { + /* try to use an extra arg */ + NODE *arg4; + arg4 = get_array_argument(3, TRUE); + printf("Shouldn't see this line\n"); + } + if (arg3 != NULL) { + printf("3rd arg present\n"); + if (arg3->type != Node_val) + printf("3nd arg type = %s (*** NOT OK ***)\n", nodetype2str(arg3->type)); + } else + printf("no 3rd arg\n"); + + if (arg2 != NULL) { + if (arg2->type != Node_var_array) + printf("2nd arg type = %s (*** NOT OK ***)\n", nodetype2str(arg2->type)); + } else + printf("2nd arg missing (NULL) (*** NOT OK ***)\n"); + + if (arg1 != NULL) { + if (arg1->type != Node_val) + printf("1st arg type = %s (*** NOT OK ***)\n", nodetype2str(arg1->type)); + } else + printf("1st arg missing (NULL) (*** NOT OK ***)\n"); + printf("\n"); + + /* Set the return value */ + return make_number((AWKNUM) ret); } /* dlload --- load new builtins in this library */ |