packages: gawk/gawk.spec, gawk/gawk-gsub_regenarate.patch (NEW) - fix from ...

draenog draenog at pld-linux.org
Thu Jul 14 21:08:56 CEST 2011


Author: draenog                      Date: Thu Jul 14 19:08:56 2011 GMT
Module: packages                      Tag: HEAD
---- Log message:
- fix from upstream for gsub rebuilding $0 when no substiution was done
  http://lists.gnu.org/archive/html/bug-gawk/2011-07/msg00016.html

---- Files affected:
packages/gawk:
   gawk.spec (1.103 -> 1.104) , gawk-gsub_regenarate.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: packages/gawk/gawk.spec
diff -u packages/gawk/gawk.spec:1.103 packages/gawk/gawk.spec:1.104
--- packages/gawk/gawk.spec:1.103	Sun Jul  3 09:35:49 2011
+++ packages/gawk/gawk.spec	Thu Jul 14 21:08:51 2011
@@ -11,7 +11,7 @@
 Summary(uk.UTF-8):	GNU версія утиліти обробки текстів awk
 Name:		gawk
 Version:	4.0.0
-Release:	1
+Release:	2
 License:	GPL v3+
 Group:		Applications/Text
 Source0:	http://ftp.gnu.org/gnu/gawk/%{name}-%{version}.tar.bz2
@@ -21,6 +21,7 @@
 Patch0:		%{name}-info.patch
 Patch1:		%{name}-shutup.patch
 Patch2:		%{name}-pl.po-update.patch
+Patch3:		%{name}-gsub_regenarate.patch
 URL:		http://www.gnu.org/software/gawk/
 BuildRequires:	autoconf >= 2.68
 BuildRequires:	automake >= 1:1.11
@@ -118,6 +119,7 @@
 %patch0 -p1
 %patch1 -p1
 %patch2 -p1
+%patch3 -p1
 
 %{__rm} po/stamp-po
 
@@ -186,6 +188,10 @@
 All persons listed below can be reached at <cvs_login>@pld-linux.org
 
 $Log$
+Revision 1.104  2011/07/14 19:08:51  draenog
+- fix from upstream for gsub rebuilding $0 when no substiution was done
+  http://lists.gnu.org/archive/html/bug-gawk/2011-07/msg00016.html
+
 Revision 1.103  2011/07/03 07:35:49  qboosh
 - added pl.po-update patch
 - package TODO

================================================================
Index: packages/gawk/gawk-gsub_regenarate.patch
diff -u /dev/null packages/gawk/gawk-gsub_regenarate.patch:1.1
--- /dev/null	Thu Jul 14 21:08:56 2011
+++ packages/gawk/gawk-gsub_regenarate.patch	Thu Jul 14 21:08:51 2011
@@ -0,0 +1,2319 @@
+diff --git a/ChangeLog b/ChangeLog
+index bf0f749..913b4a3 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,21 @@
++2011-07-05         John Haque      <address at hidden>
++ 
++	* awk.h (Op_sub_builtin): New opcode.
++	(GSUB, GENSUB, AFTER_ASSIGN, LITERAL): New flags for 
++	Op_sub_builtin.
++	* awkgram.y (struct tokentab): Change opcode to	Op_sub_builtin
++	for sub, gsub and gensub.
++	(snode): Update processing of sub, gsub and gensub.
++	* builtin.c (do_sub, do_gsub, do_gensub): Nuke.
++	(sub_common): Renamed to do_sub. Relocate gensub argument
++	handling code from do_gensub to here; Simplify the code a
++	little bit. 
++	* eval.c (r_interpret): Handle Op_sub_builtin. Avoid field
++	re-splitting or $0 rebuilding if (g)sub target string is
++	a field and no substitutions were done.
++	* pprint (profile.c): Add case for the new opcode.
++	* print_instruction (debug.c): Ditto.
++
+ 2011-06-24         Arnold D. Robbins     <arnold at skeeve.com>
+ 
+ 	* Makefile.am (EXTRA_DIST): Add ChangeLog.0.
+diff --git a/awk.h b/awk.h
+index 25abf41..e224061 100644
+--- a/awk.h
++++ b/awk.h
+@@ -521,6 +521,7 @@ typedef enum opcodeval {
+ 	Op_K_nextfile,
+ 
+ 	Op_builtin,
++	Op_sub_builtin,		/* sub, gsub and gensub */
+ 	Op_in_array,		/* boolean test of membership in array */
+ 
+ 	/* function call instruction */
+@@ -626,6 +627,16 @@ typedef struct exp_instruction {
+ #define target_jmp      d.di
+ #define target_break    x.xi
+ 
++/* Op_sub_builtin */
++#define sub_flags       d.dl
++#define GSUB            0x01	/* builtin is gsub */
++#define GENSUB          0x02	/* builtin is gensub */
++#define AFTER_ASSIGN    0x04	/* (g)sub target is a field or a special var with
++                            	 * set_XX routine.
++                            	 */
++#define LITERAL         0x08	/* target is a literal string */
++
++
+ /* Op_K_exit */
+ #define target_end      d.di
+ #define target_atexit   x.xi	
+@@ -1181,9 +1192,7 @@ extern NODE *do_cos(int nargs);
+ extern NODE *do_rand(int nargs);
+ extern NODE *do_srand(int nargs);
+ extern NODE *do_match(int nargs);
+-extern NODE *do_gsub(int nargs);
+-extern NODE *do_sub(int nargs);
+-extern NODE *do_gensub(int nargs);
++extern NODE *do_sub(int nargs, unsigned int flags, int *num_matches);
+ extern NODE *format_tree(const char *, size_t, NODE **, long);
+ extern NODE *do_lshift(int nargs);
+ extern NODE *do_rshift(int nargs);
+diff --git a/awkgram.c b/awkgram.c
+index 4edec57..ac4ceaa 100644
+--- a/awkgram.c
++++ b/awkgram.c
+@@ -2065,7 +2065,7 @@ yyreduce:
+     {
+         case 3:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 221 "awkgram.y"
+     {
+ 		rule = 0;
+@@ -2075,7 +2075,7 @@ yyreduce:
+ 
+   case 5:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 227 "awkgram.y"
+     {
+ 		next_sourcefile();
+@@ -2084,7 +2084,7 @@ yyreduce:
+ 
+   case 6:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 231 "awkgram.y"
+     {
+ 		rule = 0;
+@@ -2098,7 +2098,7 @@ yyreduce:
+ 
+   case 7:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 243 "awkgram.y"
+     {
+ 		(void) append_rule((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
+@@ -2107,7 +2107,7 @@ yyreduce:
+ 
+   case 8:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 247 "awkgram.y"
+     {
+ 		if (rule != Rule) {
+@@ -2123,7 +2123,7 @@ yyreduce:
+ 
+   case 9:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 258 "awkgram.y"
+     {
+ 		can_return = FALSE;
+@@ -2136,7 +2136,7 @@ yyreduce:
+ 
+   case 10:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 266 "awkgram.y"
+     {
+ 		want_source = FALSE;
+@@ -2146,7 +2146,7 @@ yyreduce:
+ 
+   case 11:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 274 "awkgram.y"
+     {
+ 		if (include_source((yyvsp[(1) - (1)])) < 0)
+@@ -2159,35 +2159,35 @@ yyreduce:
+ 
+   case 12:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 282 "awkgram.y"
+     { (yyval) = NULL; }
+     break;
+ 
+   case 13:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 284 "awkgram.y"
+     { (yyval) = NULL; }
+     break;
+ 
+   case 14:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 289 "awkgram.y"
+     {	(yyval) = NULL; rule = Rule; }
+     break;
+ 
+   case 15:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 291 "awkgram.y"
+     {	(yyval) = (yyvsp[(1) - (1)]); rule = Rule; }
+     break;
+ 
+   case 16:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 293 "awkgram.y"
+     {
+ 		INSTRUCTION *tp;
+@@ -2218,7 +2218,7 @@ yyreduce:
+ 
+   case 17:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 319 "awkgram.y"
+     {
+ 		static int begin_seen = 0;
+@@ -2234,7 +2234,7 @@ yyreduce:
+ 
+   case 18:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 330 "awkgram.y"
+     {
+ 		static int end_seen = 0;
+@@ -2250,7 +2250,7 @@ yyreduce:
+ 
+   case 19:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 341 "awkgram.y"
+     {
+ 		(yyvsp[(1) - (1)])->in_rule = rule = BEGINFILE;
+@@ -2261,7 +2261,7 @@ yyreduce:
+ 
+   case 20:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 347 "awkgram.y"
+     {
+ 		(yyvsp[(1) - (1)])->in_rule = rule = ENDFILE;
+@@ -2272,7 +2272,7 @@ yyreduce:
+ 
+   case 21:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 356 "awkgram.y"
+     {
+ 		if ((yyvsp[(2) - (5)]) == NULL)
+@@ -2284,21 +2284,21 @@ yyreduce:
+ 
+   case 22:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 366 "awkgram.y"
+     { (yyval) = (yyvsp[(1) - (1)]); }
+     break;
+ 
+   case 23:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 368 "awkgram.y"
+     { (yyval) = (yyvsp[(1) - (1)]); }
+     break;
+ 
+   case 24:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 370 "awkgram.y"
+     {
+ 		yyerror(_("`%s' is a built-in function, it cannot be redefined"),
+@@ -2314,14 +2314,14 @@ yyreduce:
+ 
+   case 25:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 381 "awkgram.y"
+     { (yyval) = (yyvsp[(2) - (2)]); }
+     break;
+ 
+   case 28:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 391 "awkgram.y"
+     {
+ 		param_counter = 0;
+@@ -2331,7 +2331,7 @@ yyreduce:
+ 
+   case 29:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 396 "awkgram.y"
+     {
+ 			NODE *t;
+@@ -2353,14 +2353,14 @@ yyreduce:
+ 
+   case 30:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 420 "awkgram.y"
+     { ++want_regexp; }
+     break;
+ 
+   case 31:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 422 "awkgram.y"
+     {
+ 		  NODE *n, *exp;
+@@ -2393,21 +2393,21 @@ yyreduce:
+ 
+   case 32:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 453 "awkgram.y"
+     { bcfree((yyvsp[(1) - (1)])); }
+     break;
+ 
+   case 34:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 459 "awkgram.y"
+     {	(yyval) = NULL; }
+     break;
+ 
+   case 35:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 461 "awkgram.y"
+     {
+ 		if ((yyvsp[(2) - (2)]) == NULL)
+@@ -2425,28 +2425,28 @@ yyreduce:
+ 
+   case 36:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 474 "awkgram.y"
+     {	(yyval) = NULL; }
+     break;
+ 
+   case 39:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 484 "awkgram.y"
+     { (yyval) = NULL; }
+     break;
+ 
+   case 40:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 486 "awkgram.y"
+     { (yyval) = (yyvsp[(2) - (3)]); }
+     break;
+ 
+   case 41:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 488 "awkgram.y"
+     {
+ 		if (do_profiling)
+@@ -2458,7 +2458,7 @@ yyreduce:
+ 
+   case 42:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 495 "awkgram.y"
+     {
+ 		INSTRUCTION *dflt, *curr = NULL, *cexp, *cstmt;
+@@ -2553,7 +2553,7 @@ yyreduce:
+ 
+   case 43:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 585 "awkgram.y"
+     { 
+ 		/*
+@@ -2600,7 +2600,7 @@ yyreduce:
+ 
+   case 44:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 627 "awkgram.y"
+     {
+ 		/*
+@@ -2647,7 +2647,7 @@ yyreduce:
+ 
+   case 45:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 669 "awkgram.y"
+     {
+ 		INSTRUCTION *ip;
+@@ -2767,7 +2767,7 @@ regular_loop:
+ 
+   case 46:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 784 "awkgram.y"
+     {
+ 		(yyval) = mk_for_loop((yyvsp[(1) - (12)]), (yyvsp[(3) - (12)]), (yyvsp[(6) - (12)]), (yyvsp[(9) - (12)]), (yyvsp[(12) - (12)]));
+@@ -2779,7 +2779,7 @@ regular_loop:
+ 
+   case 47:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 791 "awkgram.y"
+     {
+ 		(yyval) = mk_for_loop((yyvsp[(1) - (11)]), (yyvsp[(3) - (11)]), (INSTRUCTION *) NULL, (yyvsp[(8) - (11)]), (yyvsp[(11) - (11)]));
+@@ -2791,7 +2791,7 @@ regular_loop:
+ 
+   case 48:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 798 "awkgram.y"
+     {
+ 		if (do_profiling)
+@@ -2803,7 +2803,7 @@ regular_loop:
+ 
+   case 49:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 808 "awkgram.y"
+     { 
+ 		if (! break_allowed)
+@@ -2817,7 +2817,7 @@ regular_loop:
+ 
+   case 50:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 817 "awkgram.y"
+     {
+ 		if (! continue_allowed)
+@@ -2831,7 +2831,7 @@ regular_loop:
+ 
+   case 51:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 826 "awkgram.y"
+     {
+ 		/* if inside function (rule = 0), resolve context at run-time */
+@@ -2845,7 +2845,7 @@ regular_loop:
+ 
+   case 52:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 835 "awkgram.y"
+     {
+ 		if (do_traditional)
+@@ -2865,7 +2865,7 @@ regular_loop:
+ 
+   case 53:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 850 "awkgram.y"
+     {
+ 		/* Initialize the two possible jump targets, the actual target
+@@ -2885,7 +2885,7 @@ regular_loop:
+ 
+   case 54:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 865 "awkgram.y"
+     {
+ 		if (! can_return)
+@@ -2895,7 +2895,7 @@ regular_loop:
+ 
+   case 55:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 868 "awkgram.y"
+     {
+ 		if ((yyvsp[(3) - (4)]) == NULL) {
+@@ -2909,14 +2909,14 @@ regular_loop:
+ 
+   case 57:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 888 "awkgram.y"
+     { in_print = TRUE; in_parens = 0; }
+     break;
+ 
+   case 58:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 889 "awkgram.y"
+     {
+ 		/*
+@@ -3016,14 +3016,14 @@ regular_loop:
+ 
+   case 59:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 984 "awkgram.y"
+     { sub_counter = 0; }
+     break;
+ 
+   case 60:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 985 "awkgram.y"
+     {
+ 		char *arr = (yyvsp[(2) - (4)])->lextok;
+@@ -3053,7 +3053,7 @@ regular_loop:
+ 
+   case 61:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 1014 "awkgram.y"
+     {
+ 		static short warned = FALSE;
+@@ -3077,35 +3077,35 @@ regular_loop:
+ 
+   case 62:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 1033 "awkgram.y"
+     {	(yyval) = optimize_assignment((yyvsp[(1) - (1)])); }
+     break;
+ 
+   case 63:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 1038 "awkgram.y"
+     { (yyval) = NULL; }
+     break;
+ 
+   case 64:
+ 
+-/* Line 1806 of yacc.c  */
++/* Line 1821 of yacc.c  */
+ #line 1040 "awkgram.y"
+     { (yyval) = (yyvsp[(1) - (1)]); }
+     break;
+ 
+   case 65:
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/gawk/gawk.spec?r1=1.103&r2=1.104&f=u



More information about the pld-cvs-commit mailing list