} func;
/* I/O stream */
-@@ -1420,7 +1425,8 @@ static void parse_program(char *p)
+@@ -1424,7 +1429,8 @@ static void parse_program(char *p)
next_token(TC_FUNCTION);
g_pos++;
f = newfunc(t_string);
f->nargs = 0;
while (next_token(TC_VARIABLE | TC_SEQTERM) & TC_VARIABLE) {
v = findvar(ahash, t_string);
-@@ -1429,7 +1435,7 @@ static void parse_program(char *p)
+@@ -1433,7 +1439,7 @@ static void parse_program(char *p)
if (next_token(TC_COMMA | TC_SEQTERM) & TC_SEQTERM)
break;
}
chain_group();
clear_array(ahash);
-@@ -2408,7 +2414,8 @@ static var *evaluate(node *op, var *res)
+@@ -2446,7 +2452,8 @@ static var *evaluate(node *op, var *res)
break;
case XC( OC_FUNC ):
+ !op->r.f->x.body.first)
syntax_error(EMSG_UNDEF_FUNC);
- X.v = R.v = nvalloc(op->r.f->nargs+1);
-@@ -2425,7 +2432,10 @@ static var *evaluate(node *op, var *res)
+ X.v = R.v = nvalloc(op->r.f->nargs + 1);
+@@ -2463,7 +2470,10 @@ static var *evaluate(node *op, var *res)
fnargs = X.v;
L.s = g_progname;
g_progname = L.s;
nvfree(fnargs);
-@@ -2788,6 +2798,143 @@ static rstream *next_input_file(void)
+@@ -2829,6 +2839,143 @@ static rstream *next_input_file(void)
#undef files_happen
}
int awk_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int awk_main(int argc, char **argv)
{
-@@ -2853,6 +3000,9 @@ int awk_main(int argc, char **argv)
+@@ -2894,6 +3041,9 @@ int awk_main(int argc, char **argv)
*s1 = '=';
}
}