diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2015-03-20 10:31:49 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2015-03-20 10:31:49 +0200 |
commit | 59514868fde1190f719e78d4c4b91bd14a321541 (patch) | |
tree | 9ec586a545a2ea215e896aec77d9fcfea8ed04b5 /builtin.c | |
parent | 925f9363c4b0a5bb9375298afcdcf404efb32587 (diff) | |
download | egawk-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.c | 23 |
1 files changed, 23 insertions, 0 deletions
@@ -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. */ |