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@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 <[email protected]> + + * 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 _______________________________________________ pld-cvs-commit mailing list [email protected] http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit
