aboutsummaryrefslogtreecommitdiffstats
path: root/builtin.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2015-03-20 10:31:49 +0200
committerArnold D. Robbins <arnold@skeeve.com>2015-03-20 10:31:49 +0200
commit59514868fde1190f719e78d4c4b91bd14a321541 (patch)
tree9ec586a545a2ea215e896aec77d9fcfea8ed04b5 /builtin.c
parent925f9363c4b0a5bb9375298afcdcf404efb32587 (diff)
downloadegawk-59514868fde1190f719e78d4c4b91bd14a321541.tar.gz
egawk-59514868fde1190f719e78d4c4b91bd14a321541.tar.bz2
egawk-59514868fde1190f719e78d4c4b91bd14a321541.zip
Start on testing/fixing indirect calls of builtins.
Diffstat (limited to 'builtin.c')
-rw-r--r--builtin.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/builtin.c b/builtin.c
index 1383572a..4dd08eb1 100644
--- a/builtin.c
+++ b/builtin.c
@@ -2994,6 +2994,29 @@ done:
return make_number((AWKNUM) matches);
}
+/* call_sub_func --- call do_sub indirectly */
+
+NODE *
+call_sub_func(const char *name, int nargs)
+{
+ unsigned int flags = 0;
+ NODE *tmp;
+
+ if (name[0] == 'g') {
+ if (name[1] == 'e')
+ flags = GENSUB;
+ else
+ flags = GSUB;
+ }
+
+ tmp = PEEK(1);
+ if (tmp->type == Node_val) {
+ flags |= LITERAL;
+ }
+
+ return do_sub(nargs, flags);
+}
+
/* make_integer - Convert an integer to a number node. */