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

Reply via email to