X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/e53ecb012ec4b2b87bb9ab35741241590b552a68..683db7ad2549834d6d4e28b3161203a31d7579ee:/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 7284bbcac..07f28c9de 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
+@@ -70,9 +71,14 @@ typedef struct chain_s {
  } chain;
  
  /* Function */
@@ -15,7 +20,7 @@
  } func;
  
  /* I/O stream */
-@@ -1423,7 +1428,8 @@ static void parse_program(char *p)
+@@ -1453,7 +1459,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);
-@@ -1432,7 +1438,7 @@ static void parse_program(char *p)
+@@ -1462,7 +1469,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);
  
-@@ -2397,7 +2403,8 @@ static var *evaluate(node *op, var *res)
- 			break;
+@@ -2547,7 +2554,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);
-@@ -2414,7 +2421,10 @@ static var *evaluate(node *op, var *res)
- 			fnargs = X.v;
+ 			vbeg = v = nvalloc(op->r.f->nargs + 1);
+@@ -2564,7 +2572,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);
-@@ -2777,6 +2787,143 @@ static rstream *next_input_file(void)
+@@ -2942,6 +2953,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)
  {
-@@ -2842,6 +2989,9 @@ int awk_main(int argc, char **argv)
+@@ -3007,6 +3155,9 @@ int awk_main(int argc, char **argv)
  			*s1 = '=';
  		}
  	}