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