diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2011-05-23 22:05:10 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2011-05-23 22:05:10 +0300 |
commit | 7586c955f6e1b4c50614ca59c880369860298134 (patch) | |
tree | 424dc37ee71de5352d340c29738291644073982f /extension/testarg.c | |
parent | 57ae4f7df01dc9254912e6b6a71f2602eb8217c5 (diff) | |
download | egawk-7586c955f6e1b4c50614ca59c880369860298134.tar.gz egawk-7586c955f6e1b4c50614ca59c880369860298134.tar.bz2 egawk-7586c955f6e1b4c50614ca59c880369860298134.zip |
Fixes for extension code and tests.
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 */ |