X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/396dbf68b1cfdce2e6f455b5ec646b4c5b65c55e..b2e1bfb056bca17d81fdcbf020d9948a88d17304:/package/busybox/patches/510-awk_include.patch?ds=sidebyside diff --git a/package/busybox/patches/510-awk_include.patch b/package/busybox/patches/510-awk_include.patch index b185408a9..9465cdad8 100644 --- a/package/busybox/patches/510-awk_include.patch +++ b/package/busybox/patches/510-awk_include.patch @@ -1,6 +1,11 @@ --- a/editors/awk.c +++ b/editors/awk.c -@@ -53,9 +53,14 @@ typedef struct chain_s { +@@ -1,3 +1,4 @@ ++ + /* vi: set sw=4 ts=4: */ + /* + * awk implementation for busybox +@@ -74,9 +75,14 @@ typedef struct chain_s { } chain; /* Function */ @@ -15,7 +20,7 @@ } func; /* I/O stream */ -@@ -1400,7 +1405,8 @@ static void parse_program(char *p) +@@ -1466,7 +1472,8 @@ static void parse_program(char *p) next_token(TC_FUNCTION); g_pos++; f = newfunc(t_string); @@ -25,38 +30,38 @@ f->nargs = 0; while (next_token(TC_VARIABLE | TC_SEQTERM) & TC_VARIABLE) { v = findvar(ahash, t_string); -@@ -1409,7 +1415,7 @@ static void parse_program(char *p) +@@ -1475,7 +1482,7 @@ static void parse_program(char *p) if (next_token(TC_COMMA | TC_SEQTERM) & TC_SEQTERM) break; } -- seq = &(f->body); -+ seq = &(f->x.body); +- seq = &f->body; ++ seq = &f->x.body; chain_group(); clear_array(ahash); -@@ -2374,7 +2380,8 @@ static var *evaluate(node *op, var *res) - break; +@@ -2573,7 +2580,8 @@ static var *evaluate(node *op, var *res) + var *vbeg, *v; + const char *sv_progname; - case XC( OC_FUNC ): - if (!op->r.f->body.first) + if ((op->r.f->type == AWKFUNC) && + !op->r.f->x.body.first) syntax_error(EMSG_UNDEF_FUNC); - X.v = R.v = nvalloc(op->r.f->nargs+1); -@@ -2391,7 +2398,10 @@ static var *evaluate(node *op, var *res) - fnargs = X.v; + vbeg = v = nvalloc(op->r.f->nargs + 1); +@@ -2590,7 +2598,10 @@ static var *evaluate(node *op, var *res) + fnargs = vbeg; + sv_progname = g_progname; - L.s = g_progname; - res = evaluate(op->r.f->body.first, res); + if (op->r.f->type == AWKFUNC) + res = evaluate(op->r.f->x.body.first, res); + else if (op->r.f->type == CFUNC) + res = op->r.f->x.cfunc(res, fnargs, op->r.f->nargs); - g_progname = L.s; + g_progname = sv_progname; nvfree(fnargs); -@@ -2754,6 +2764,143 @@ static rstream *next_input_file(void) +@@ -2984,6 +2995,143 @@ static rstream *next_input_file(void) #undef files_happen } @@ -200,7 +205,7 @@ int awk_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int awk_main(int argc, char **argv) { -@@ -2819,6 +2966,9 @@ int awk_main(int argc, char **argv) +@@ -3049,6 +3197,9 @@ int awk_main(int argc, char **argv) *s1 = '='; } }