gawk-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gawk-diffs] [SCM] gawk branch, gawk-4.2-stable, updated. gawk-4.1.0-294


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, gawk-4.2-stable, updated. gawk-4.1.0-2949-ge32b1e2
Date: Mon, 26 Mar 2018 03:45:25 -0400 (EDT)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, gawk-4.2-stable has been updated
       via  e32b1e252bba65f8311e7cb038b085fe42cf42ed (commit)
       via  9b03de3b6c449d014674dd2bfd5947c55d1f0711 (commit)
      from  20a79b31c9897f825323eedee4c0eb01922d53da (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=e32b1e252bba65f8311e7cb038b085fe42cf42ed

commit e32b1e252bba65f8311e7cb038b085fe42cf42ed
Author: Arnold D. Robbins <address@hidden>
Date:   Mon Mar 26 10:45:01 2018 +0300

    Remove the tail recursion optimization.

diff --git a/ChangeLog b/ChangeLog
index fccedce..ff451ac 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2018-03-26         Arnold D. Robbins     <address@hidden>
+
+       Remove the tail recursion optimization. It's fundamentally
+       broken, in the case where a local var becomes a parameter.
+       Thanks to Denis Shirokov <address@hidden> for the report.
+       See test/tailrecurse.awk.
+
+       * awk.h [num_tail_calls, tail_call]: Remove definitions.
+       * awkgram.y (grammar, mk_function): Remove code related to
+       the tail recursion optimization.
+       * eval.c (dump_fcall_stack): Adjust dumping code since no longer
+       looping through tail call recursion.
+       (setup_frame): Remove code related to the tail recursion optimization.
+       (init_interpret): Ditto.
+
 2018-03-22         Arnold D. Robbins     <address@hidden>
 
        * configure.ac: Check for %a support in system printf.
diff --git a/awk.h b/awk.h
index 1e334bf..f32e30a 100644
--- a/awk.h
+++ b/awk.h
@@ -527,7 +527,6 @@ typedef struct exp_node {
 #define func_node    sub.nodep.x.extra
 #define prev_frame_size        sub.nodep.reflags
 #define reti         sub.nodep.l.li
-#define num_tail_calls    sub.nodep.cnt
 
 /* Node_var: */
 #define var_value    lnode
@@ -862,9 +861,6 @@ typedef struct exp_instruction {
 /* Op_func_call, Op_func */
 #define func_body       x.xn
 
-/* Op_func_call */
-#define tail_call      d.dl
-
 /* Op_subscript */
 #define sub_count       d.dl
 
diff --git a/awkgram.c b/awkgram.c
index c1a5ead..13a7be7 100644
--- a/awkgram.c
+++ b/awkgram.c
@@ -676,21 +676,21 @@ static const yytype_uint16 yyrline[] =
      433,   434,   438,   438,   484,   483,   517,   532,   534,   539,
      549,   596,   601,   602,   606,   608,   610,   617,   707,   749,
      791,   904,   911,   918,   929,   939,   949,   959,   971,   988,
-     987,  1012,  1024,  1024,  1123,  1123,  1157,  1188,  1197,  1198,
-    1204,  1205,  1212,  1217,  1229,  1243,  1245,  1253,  1260,  1262,
-    1270,  1279,  1281,  1290,  1291,  1299,  1304,  1304,  1315,  1319,
-    1327,  1328,  1331,  1333,  1338,  1339,  1348,  1349,  1354,  1359,
-    1368,  1370,  1372,  1379,  1380,  1386,  1387,  1392,  1394,  1399,
-    1401,  1409,  1414,  1423,  1424,  1429,  1431,  1436,  1438,  1446,
-    1451,  1459,  1460,  1465,  1472,  1476,  1478,  1480,  1493,  1510,
-    1520,  1527,  1529,  1534,  1536,  1538,  1546,  1548,  1553,  1555,
-    1560,  1562,  1564,  1621,  1623,  1625,  1627,  1629,  1631,  1633,
-    1635,  1649,  1654,  1659,  1684,  1690,  1692,  1694,  1696,  1698,
-    1700,  1705,  1709,  1741,  1748,  1754,  1760,  1773,  1774,  1775,
-    1780,  1785,  1789,  1793,  1808,  1829,  1834,  1871,  1900,  1901,
-    1907,  1908,  1913,  1915,  1922,  1939,  1956,  1958,  1965,  1970,
-    1978,  1988,  2000,  2009,  2013,  2017,  2021,  2025,  2029,  2032,
-    2034,  2038,  2042,  2046
+     987,  1001,  1013,  1013,  1112,  1112,  1146,  1177,  1186,  1187,
+    1193,  1194,  1201,  1206,  1218,  1232,  1234,  1242,  1249,  1251,
+    1259,  1268,  1270,  1279,  1280,  1288,  1293,  1293,  1304,  1308,
+    1316,  1317,  1320,  1322,  1327,  1328,  1337,  1338,  1343,  1348,
+    1357,  1359,  1361,  1368,  1369,  1375,  1376,  1381,  1383,  1388,
+    1390,  1398,  1403,  1412,  1413,  1418,  1420,  1425,  1427,  1435,
+    1440,  1448,  1449,  1454,  1461,  1465,  1467,  1469,  1482,  1499,
+    1509,  1516,  1518,  1523,  1525,  1527,  1535,  1537,  1542,  1544,
+    1549,  1551,  1553,  1610,  1612,  1614,  1616,  1618,  1620,  1622,
+    1624,  1638,  1643,  1648,  1673,  1679,  1681,  1683,  1685,  1687,
+    1689,  1694,  1698,  1730,  1737,  1743,  1749,  1762,  1763,  1764,
+    1769,  1774,  1778,  1782,  1797,  1818,  1823,  1860,  1889,  1890,
+    1896,  1897,  1902,  1904,  1911,  1928,  1945,  1947,  1954,  1959,
+    1967,  1977,  1989,  1998,  2002,  2006,  2010,  2014,  2018,  2021,
+    2023,  2027,  2031,  2035
 };
 #endif
 
@@ -2820,33 +2820,22 @@ regular_loop:
                        (yyval) = list_create((yyvsp[-3]));
                        (void) list_prepend((yyval), instruction(Op_push_i));
                        (yyval)->nexti->memory = dupnode(Nnull_string);
-               } else {
-                       if (do_optimize
-                               && (yyvsp[-1])->lasti->opcode == Op_func_call
-                               && strcmp((yyvsp[-1])->lasti->func_name, 
in_function) == 0
-                       ) {
-                               /* Do tail recursion optimization. Tail
-                                * call without a return value is recognized
-                                * in mk_function().
-                                */
-                               ((yyvsp[-1])->lasti + 1)->tail_call = true;
-                       }
-
+               } else
                        (yyval) = list_append((yyvsp[-1]), (yyvsp[-3]));
-               }
+
                (yyval) = add_pending_comment((yyval));
          }
-#line 2840 "awkgram.c" /* yacc.c:1646  */
+#line 2829 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 62:
-#line 1024 "awkgram.y" /* yacc.c:1646  */
+#line 1013 "awkgram.y" /* yacc.c:1646  */
     { in_print = true; in_parens = 0; }
-#line 2846 "awkgram.c" /* yacc.c:1646  */
+#line 2835 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 63:
-#line 1025 "awkgram.y" /* yacc.c:1646  */
+#line 1014 "awkgram.y" /* yacc.c:1646  */
     {
                /*
                 * Optimization: plain `print' has no expression list, so $3 is 
null.
@@ -2944,17 +2933,17 @@ regular_print:
                }
                (yyval) = add_pending_comment((yyval));
          }
-#line 2948 "awkgram.c" /* yacc.c:1646  */
+#line 2937 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 64:
-#line 1123 "awkgram.y" /* yacc.c:1646  */
+#line 1112 "awkgram.y" /* yacc.c:1646  */
     { sub_counter = 0; }
-#line 2954 "awkgram.c" /* yacc.c:1646  */
+#line 2943 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 65:
-#line 1124 "awkgram.y" /* yacc.c:1646  */
+#line 1113 "awkgram.y" /* yacc.c:1646  */
     {
                char *arr = (yyvsp[-2])->lextok;
 
@@ -2988,11 +2977,11 @@ regular_print:
                }
                (yyval) = add_pending_comment((yyval));
          }
-#line 2992 "awkgram.c" /* yacc.c:1646  */
+#line 2981 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 66:
-#line 1162 "awkgram.y" /* yacc.c:1646  */
+#line 1151 "awkgram.y" /* yacc.c:1646  */
     {
                static bool warned = false;
                char *arr = (yyvsp[-1])->lextok;
@@ -3019,55 +3008,55 @@ regular_print:
                }
                (yyval) = add_pending_comment((yyval));
          }
-#line 3023 "awkgram.c" /* yacc.c:1646  */
+#line 3012 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 67:
-#line 1189 "awkgram.y" /* yacc.c:1646  */
+#line 1178 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = optimize_assignment((yyvsp[0]));
                (yyval) = add_pending_comment((yyval));
          }
-#line 3032 "awkgram.c" /* yacc.c:1646  */
+#line 3021 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 68:
-#line 1197 "awkgram.y" /* yacc.c:1646  */
+#line 1186 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3038 "awkgram.c" /* yacc.c:1646  */
+#line 3027 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 69:
-#line 1199 "awkgram.y" /* yacc.c:1646  */
+#line 1188 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3044 "awkgram.c" /* yacc.c:1646  */
+#line 3033 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 70:
-#line 1204 "awkgram.y" /* yacc.c:1646  */
+#line 1193 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3050 "awkgram.c" /* yacc.c:1646  */
+#line 3039 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 71:
-#line 1206 "awkgram.y" /* yacc.c:1646  */
+#line 1195 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[-1]) == NULL)
                        (yyval) = list_create((yyvsp[0]));
                else
                        (yyval) = list_prepend((yyvsp[-1]), (yyvsp[0]));
          }
-#line 3061 "awkgram.c" /* yacc.c:1646  */
+#line 3050 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 72:
-#line 1213 "awkgram.y" /* yacc.c:1646  */
+#line 1202 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3067 "awkgram.c" /* yacc.c:1646  */
+#line 3056 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 73:
-#line 1218 "awkgram.y" /* yacc.c:1646  */
+#line 1207 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *casestmt = (yyvsp[0]);
                if ((yyvsp[0]) == NULL)
@@ -3079,11 +3068,11 @@ regular_print:
                bcfree((yyvsp[-2]));
                (yyval) = (yyvsp[-4]);
          }
-#line 3083 "awkgram.c" /* yacc.c:1646  */
+#line 3072 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 74:
-#line 1230 "awkgram.y" /* yacc.c:1646  */
+#line 1219 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *casestmt = (yyvsp[0]);
                if ((yyvsp[0]) == NULL)
@@ -3094,17 +3083,17 @@ regular_print:
                (yyvsp[-3])->case_stmt = casestmt;
                (yyval) = (yyvsp[-3]);
          }
-#line 3098 "awkgram.c" /* yacc.c:1646  */
+#line 3087 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 75:
-#line 1244 "awkgram.y" /* yacc.c:1646  */
+#line 1233 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = (yyvsp[0]); }
-#line 3104 "awkgram.c" /* yacc.c:1646  */
+#line 3093 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 76:
-#line 1246 "awkgram.y" /* yacc.c:1646  */
+#line 1235 "awkgram.y" /* yacc.c:1646  */
     {
                NODE *n = (yyvsp[0])->memory;
                (void) force_number(n);
@@ -3112,28 +3101,28 @@ regular_print:
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
-#line 3116 "awkgram.c" /* yacc.c:1646  */
+#line 3105 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 77:
-#line 1254 "awkgram.y" /* yacc.c:1646  */
+#line 1243 "awkgram.y" /* yacc.c:1646  */
     {
                NODE *n = (yyvsp[0])->lasti->memory;
                bcfree((yyvsp[-1]));
                add_sign_to_num(n, '+');
                (yyval) = (yyvsp[0]);
          }
-#line 3127 "awkgram.c" /* yacc.c:1646  */
+#line 3116 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 78:
-#line 1261 "awkgram.y" /* yacc.c:1646  */
+#line 1250 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = (yyvsp[0]); }
-#line 3133 "awkgram.c" /* yacc.c:1646  */
+#line 3122 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 79:
-#line 1263 "awkgram.y" /* yacc.c:1646  */
+#line 1252 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[0])->memory->type == Node_regex)
                        (yyvsp[0])->opcode = Op_push_re;
@@ -3141,57 +3130,57 @@ regular_print:
                        (yyvsp[0])->opcode = Op_push;
                (yyval) = (yyvsp[0]);
          }
-#line 3145 "awkgram.c" /* yacc.c:1646  */
+#line 3134 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 80:
-#line 1271 "awkgram.y" /* yacc.c:1646  */
+#line 1260 "awkgram.y" /* yacc.c:1646  */
     {
                assert(((yyvsp[0])->memory->flags & REGEX) == REGEX);
                (yyvsp[0])->opcode = Op_push_re;
                (yyval) = (yyvsp[0]);
          }
-#line 3155 "awkgram.c" /* yacc.c:1646  */
+#line 3144 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 81:
-#line 1280 "awkgram.y" /* yacc.c:1646  */
+#line 1269 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3161 "awkgram.c" /* yacc.c:1646  */
+#line 3150 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 82:
-#line 1282 "awkgram.y" /* yacc.c:1646  */
+#line 1271 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3167 "awkgram.c" /* yacc.c:1646  */
+#line 3156 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 84:
-#line 1292 "awkgram.y" /* yacc.c:1646  */
+#line 1281 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = (yyvsp[-1]);
          }
-#line 3175 "awkgram.c" /* yacc.c:1646  */
+#line 3164 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 85:
-#line 1299 "awkgram.y" /* yacc.c:1646  */
+#line 1288 "awkgram.y" /* yacc.c:1646  */
     {
                in_print = false;
                in_parens = 0;
                (yyval) = NULL;
          }
-#line 3185 "awkgram.c" /* yacc.c:1646  */
+#line 3174 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 86:
-#line 1304 "awkgram.y" /* yacc.c:1646  */
+#line 1293 "awkgram.y" /* yacc.c:1646  */
     { in_print = false; in_parens = 0; }
-#line 3191 "awkgram.c" /* yacc.c:1646  */
+#line 3180 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 87:
-#line 1305 "awkgram.y" /* yacc.c:1646  */
+#line 1294 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[-2])->redir_type == redirect_twoway
                        && (yyvsp[0])->lasti->opcode == Op_K_getline_redir
@@ -3199,63 +3188,63 @@ regular_print:
                        yyerror(_("multistage two-way pipelines don't work"));
                (yyval) = list_prepend((yyvsp[0]), (yyvsp[-2]));
          }
-#line 3203 "awkgram.c" /* yacc.c:1646  */
+#line 3192 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 88:
-#line 1316 "awkgram.y" /* yacc.c:1646  */
+#line 1305 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_condition((yyvsp[-3]), (yyvsp[-5]), (yyvsp[0]), 
NULL, NULL);
          }
-#line 3211 "awkgram.c" /* yacc.c:1646  */
+#line 3200 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 89:
-#line 1321 "awkgram.y" /* yacc.c:1646  */
+#line 1310 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_condition((yyvsp[-6]), (yyvsp[-8]), (yyvsp[-3]), 
(yyvsp[-2]), (yyvsp[0]));
          }
-#line 3219 "awkgram.c" /* yacc.c:1646  */
+#line 3208 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 94:
-#line 1338 "awkgram.y" /* yacc.c:1646  */
+#line 1327 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3225 "awkgram.c" /* yacc.c:1646  */
+#line 3214 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 95:
-#line 1340 "awkgram.y" /* yacc.c:1646  */
+#line 1329 "awkgram.y" /* yacc.c:1646  */
     {
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
-#line 3234 "awkgram.c" /* yacc.c:1646  */
+#line 3223 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 96:
-#line 1348 "awkgram.y" /* yacc.c:1646  */
+#line 1337 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3240 "awkgram.c" /* yacc.c:1646  */
+#line 3229 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 97:
-#line 1350 "awkgram.y" /* yacc.c:1646  */
+#line 1339 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3246 "awkgram.c" /* yacc.c:1646  */
+#line 3235 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 98:
-#line 1355 "awkgram.y" /* yacc.c:1646  */
+#line 1344 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->param_count = 0;
                (yyval) = list_create((yyvsp[0]));
          }
-#line 3255 "awkgram.c" /* yacc.c:1646  */
+#line 3244 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 99:
-#line 1360 "awkgram.y" /* yacc.c:1646  */
+#line 1349 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[-2]) != NULL && (yyvsp[0]) != NULL) {
                        (yyvsp[0])->param_count =  
(yyvsp[-2])->lasti->param_count + 1;
@@ -3264,74 +3253,74 @@ regular_print:
                } else
                        (yyval) = NULL;
          }
-#line 3268 "awkgram.c" /* yacc.c:1646  */
+#line 3257 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 100:
-#line 1369 "awkgram.y" /* yacc.c:1646  */
+#line 1358 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3274 "awkgram.c" /* yacc.c:1646  */
+#line 3263 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 101:
-#line 1371 "awkgram.y" /* yacc.c:1646  */
+#line 1360 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 3280 "awkgram.c" /* yacc.c:1646  */
+#line 3269 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 102:
-#line 1373 "awkgram.y" /* yacc.c:1646  */
+#line 1362 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-2]); }
-#line 3286 "awkgram.c" /* yacc.c:1646  */
+#line 3275 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 103:
-#line 1379 "awkgram.y" /* yacc.c:1646  */
+#line 1368 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3292 "awkgram.c" /* yacc.c:1646  */
+#line 3281 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 104:
-#line 1381 "awkgram.y" /* yacc.c:1646  */
+#line 1370 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3298 "awkgram.c" /* yacc.c:1646  */
+#line 3287 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 105:
-#line 1386 "awkgram.y" /* yacc.c:1646  */
+#line 1375 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3304 "awkgram.c" /* yacc.c:1646  */
+#line 3293 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 106:
-#line 1388 "awkgram.y" /* yacc.c:1646  */
+#line 1377 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3310 "awkgram.c" /* yacc.c:1646  */
+#line 3299 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 107:
-#line 1393 "awkgram.y" /* yacc.c:1646  */
+#line 1382 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = mk_expression_list(NULL, (yyvsp[0])); }
-#line 3316 "awkgram.c" /* yacc.c:1646  */
+#line 3305 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 108:
-#line 1395 "awkgram.y" /* yacc.c:1646  */
+#line 1384 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
                yyerrok;
          }
-#line 3325 "awkgram.c" /* yacc.c:1646  */
+#line 3314 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 109:
-#line 1400 "awkgram.y" /* yacc.c:1646  */
+#line 1389 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3331 "awkgram.c" /* yacc.c:1646  */
+#line 3320 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 110:
-#line 1402 "awkgram.y" /* yacc.c:1646  */
+#line 1391 "awkgram.y" /* yacc.c:1646  */
     {
                /*
                 * Returning the expression list instead of NULL lets
@@ -3339,62 +3328,62 @@ regular_print:
                 */
                (yyval) = (yyvsp[-1]);
          }
-#line 3343 "awkgram.c" /* yacc.c:1646  */
+#line 3332 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 111:
-#line 1410 "awkgram.y" /* yacc.c:1646  */
+#line 1399 "awkgram.y" /* yacc.c:1646  */
     {
                /* Ditto */
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
          }
-#line 3352 "awkgram.c" /* yacc.c:1646  */
+#line 3341 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 112:
-#line 1415 "awkgram.y" /* yacc.c:1646  */
+#line 1404 "awkgram.y" /* yacc.c:1646  */
     {
                /* Ditto */
                (yyval) = (yyvsp[-2]);
          }
-#line 3361 "awkgram.c" /* yacc.c:1646  */
+#line 3350 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 113:
-#line 1423 "awkgram.y" /* yacc.c:1646  */
+#line 1412 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3367 "awkgram.c" /* yacc.c:1646  */
+#line 3356 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 114:
-#line 1425 "awkgram.y" /* yacc.c:1646  */
+#line 1414 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3373 "awkgram.c" /* yacc.c:1646  */
+#line 3362 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 115:
-#line 1430 "awkgram.y" /* yacc.c:1646  */
+#line 1419 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = mk_expression_list(NULL, (yyvsp[0])); }
-#line 3379 "awkgram.c" /* yacc.c:1646  */
+#line 3368 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 116:
-#line 1432 "awkgram.y" /* yacc.c:1646  */
+#line 1421 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
                yyerrok;
          }
-#line 3388 "awkgram.c" /* yacc.c:1646  */
+#line 3377 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 117:
-#line 1437 "awkgram.y" /* yacc.c:1646  */
+#line 1426 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3394 "awkgram.c" /* yacc.c:1646  */
+#line 3383 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 118:
-#line 1439 "awkgram.y" /* yacc.c:1646  */
+#line 1428 "awkgram.y" /* yacc.c:1646  */
     {
                /*
                 * Returning the expression list instead of NULL lets
@@ -3402,72 +3391,72 @@ regular_print:
                 */
                (yyval) = (yyvsp[-1]);
          }
-#line 3406 "awkgram.c" /* yacc.c:1646  */
+#line 3395 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 119:
-#line 1447 "awkgram.y" /* yacc.c:1646  */
+#line 1436 "awkgram.y" /* yacc.c:1646  */
     {
                /* Ditto */
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
          }
-#line 3415 "awkgram.c" /* yacc.c:1646  */
+#line 3404 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 120:
-#line 1452 "awkgram.y" /* yacc.c:1646  */
+#line 1441 "awkgram.y" /* yacc.c:1646  */
     {
                /* Ditto */
                (yyval) = (yyvsp[-2]);
          }
-#line 3424 "awkgram.c" /* yacc.c:1646  */
+#line 3413 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 121:
-#line 1459 "awkgram.y" /* yacc.c:1646  */
+#line 1448 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3430 "awkgram.c" /* yacc.c:1646  */
+#line 3419 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 122:
-#line 1460 "awkgram.y" /* yacc.c:1646  */
+#line 1449 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = list_create((yyvsp[0])); }
-#line 3436 "awkgram.c" /* yacc.c:1646  */
+#line 3425 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 123:
-#line 1466 "awkgram.y" /* yacc.c:1646  */
+#line 1455 "awkgram.y" /* yacc.c:1646  */
     {
                if (do_lint && (yyvsp[0])->lasti->opcode == Op_match_rec)
                        lintwarn_ln((yyvsp[-1])->source_line,
                                _("regular expression on right of assignment"));
                (yyval) = mk_assignment((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1]));
          }
-#line 3447 "awkgram.c" /* yacc.c:1646  */
+#line 3436 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 124:
-#line 1473 "awkgram.y" /* yacc.c:1646  */
+#line 1462 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_assignment((yyvsp[-2]), list_create((yyvsp[0])), 
(yyvsp[-1]));
          }
-#line 3455 "awkgram.c" /* yacc.c:1646  */
+#line 3444 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 125:
-#line 1477 "awkgram.y" /* yacc.c:1646  */
+#line 1466 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3461 "awkgram.c" /* yacc.c:1646  */
+#line 3450 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 126:
-#line 1479 "awkgram.y" /* yacc.c:1646  */
+#line 1468 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3467 "awkgram.c" /* yacc.c:1646  */
+#line 3456 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 127:
-#line 1481 "awkgram.y" /* yacc.c:1646  */
+#line 1470 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[-2])->lasti->opcode == Op_match_rec)
                        warning_ln((yyvsp[-1])->source_line,
@@ -3480,11 +3469,11 @@ regular_print:
                bcfree((yyvsp[0]));
                (yyval) = list_append((yyvsp[-2]), (yyvsp[-1]));
          }
-#line 3484 "awkgram.c" /* yacc.c:1646  */
+#line 3473 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 128:
-#line 1494 "awkgram.y" /* yacc.c:1646  */
+#line 1483 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[-2])->lasti->opcode == Op_match_rec)
                        warning_ln((yyvsp[-1])->source_line,
@@ -3501,11 +3490,11 @@ regular_print:
                        (yyval) = list_append(list_merge((yyvsp[-2]), 
(yyvsp[0])), (yyvsp[-1]));
                }
          }
-#line 3505 "awkgram.c" /* yacc.c:1646  */
+#line 3494 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 129:
-#line 1511 "awkgram.y" /* yacc.c:1646  */
+#line 1500 "awkgram.y" /* yacc.c:1646  */
     {
                if (do_lint_old)
                        warning_ln((yyvsp[-1])->source_line,
@@ -3515,91 +3504,91 @@ regular_print:
                (yyvsp[-1])->expr_count = 1;
                (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), 
(yyvsp[-1]));
          }
-#line 3519 "awkgram.c" /* yacc.c:1646  */
+#line 3508 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 130:
-#line 1521 "awkgram.y" /* yacc.c:1646  */
+#line 1510 "awkgram.y" /* yacc.c:1646  */
     {
                if (do_lint && (yyvsp[0])->lasti->opcode == Op_match_rec)
                        lintwarn_ln((yyvsp[-1])->source_line,
                                _("regular expression on right of comparison"));
                (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), 
(yyvsp[-1]));
          }
-#line 3530 "awkgram.c" /* yacc.c:1646  */
+#line 3519 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 131:
-#line 1528 "awkgram.y" /* yacc.c:1646  */
+#line 1517 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_condition((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]), 
(yyvsp[-1]), (yyvsp[0])); }
-#line 3536 "awkgram.c" /* yacc.c:1646  */
+#line 3525 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 132:
-#line 1530 "awkgram.y" /* yacc.c:1646  */
+#line 1519 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3542 "awkgram.c" /* yacc.c:1646  */
+#line 3531 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 133:
-#line 1535 "awkgram.y" /* yacc.c:1646  */
+#line 1524 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3548 "awkgram.c" /* yacc.c:1646  */
+#line 3537 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 134:
-#line 1537 "awkgram.y" /* yacc.c:1646  */
+#line 1526 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3554 "awkgram.c" /* yacc.c:1646  */
+#line 3543 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 135:
-#line 1539 "awkgram.y" /* yacc.c:1646  */
+#line 1528 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->opcode = Op_assign_quotient;
                (yyval) = (yyvsp[0]);
          }
-#line 3563 "awkgram.c" /* yacc.c:1646  */
+#line 3552 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 136:
-#line 1547 "awkgram.y" /* yacc.c:1646  */
+#line 1536 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3569 "awkgram.c" /* yacc.c:1646  */
+#line 3558 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 137:
-#line 1549 "awkgram.y" /* yacc.c:1646  */
+#line 1538 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3575 "awkgram.c" /* yacc.c:1646  */
+#line 3564 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 138:
-#line 1554 "awkgram.y" /* yacc.c:1646  */
+#line 1543 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3581 "awkgram.c" /* yacc.c:1646  */
+#line 3570 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 139:
-#line 1556 "awkgram.y" /* yacc.c:1646  */
+#line 1545 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3587 "awkgram.c" /* yacc.c:1646  */
+#line 3576 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 140:
-#line 1561 "awkgram.y" /* yacc.c:1646  */
+#line 1550 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3593 "awkgram.c" /* yacc.c:1646  */
+#line 3582 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 141:
-#line 1563 "awkgram.y" /* yacc.c:1646  */
+#line 1552 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3599 "awkgram.c" /* yacc.c:1646  */
+#line 3588 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 142:
-#line 1565 "awkgram.y" /* yacc.c:1646  */
+#line 1554 "awkgram.y" /* yacc.c:1646  */
     {
                int count = 2;
                bool is_simple_var = false;
@@ -3653,47 +3642,47 @@ regular_print:
                                max_args = count;
                }
          }
-#line 3657 "awkgram.c" /* yacc.c:1646  */
+#line 3646 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 144:
-#line 1624 "awkgram.y" /* yacc.c:1646  */
+#line 1613 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3663 "awkgram.c" /* yacc.c:1646  */
+#line 3652 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 145:
-#line 1626 "awkgram.y" /* yacc.c:1646  */
+#line 1615 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3669 "awkgram.c" /* yacc.c:1646  */
+#line 3658 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 146:
-#line 1628 "awkgram.y" /* yacc.c:1646  */
+#line 1617 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3675 "awkgram.c" /* yacc.c:1646  */
+#line 3664 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 147:
-#line 1630 "awkgram.y" /* yacc.c:1646  */
+#line 1619 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3681 "awkgram.c" /* yacc.c:1646  */
+#line 3670 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 148:
-#line 1632 "awkgram.y" /* yacc.c:1646  */
+#line 1621 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3687 "awkgram.c" /* yacc.c:1646  */
+#line 3676 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 149:
-#line 1634 "awkgram.y" /* yacc.c:1646  */
+#line 1623 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3693 "awkgram.c" /* yacc.c:1646  */
+#line 3682 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 150:
-#line 1636 "awkgram.y" /* yacc.c:1646  */
+#line 1625 "awkgram.y" /* yacc.c:1646  */
     {
                /*
                 * In BEGINFILE/ENDFILE, allow `getline [var] < file'
@@ -3707,29 +3696,29 @@ regular_print:
                                _("non-redirected `getline' undefined inside 
END action"));
                (yyval) = mk_getline((yyvsp[-2]), (yyvsp[-1]), (yyvsp[0]), 
redirect_input);
          }
-#line 3711 "awkgram.c" /* yacc.c:1646  */
+#line 3700 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 151:
-#line 1650 "awkgram.y" /* yacc.c:1646  */
+#line 1639 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->opcode = Op_postincrement;
                (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
-#line 3720 "awkgram.c" /* yacc.c:1646  */
+#line 3709 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 152:
-#line 1655 "awkgram.y" /* yacc.c:1646  */
+#line 1644 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->opcode = Op_postdecrement;
                (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
-#line 3729 "awkgram.c" /* yacc.c:1646  */
+#line 3718 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 153:
-#line 1660 "awkgram.y" /* yacc.c:1646  */
+#line 1649 "awkgram.y" /* yacc.c:1646  */
     {
                if (do_lint_old) {
                    warning_ln((yyvsp[-1])->source_line,
@@ -3749,64 +3738,64 @@ regular_print:
                        (yyval) = list_append(list_merge(t, (yyvsp[0])), 
(yyvsp[-1]));
                }
          }
-#line 3753 "awkgram.c" /* yacc.c:1646  */
+#line 3742 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 154:
-#line 1685 "awkgram.y" /* yacc.c:1646  */
+#line 1674 "awkgram.y" /* yacc.c:1646  */
     {
                  (yyval) = mk_getline((yyvsp[-1]), (yyvsp[0]), (yyvsp[-3]), 
(yyvsp[-2])->redir_type);
                  bcfree((yyvsp[-2]));
                }
-#line 3762 "awkgram.c" /* yacc.c:1646  */
+#line 3751 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 155:
-#line 1691 "awkgram.y" /* yacc.c:1646  */
+#line 1680 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3768 "awkgram.c" /* yacc.c:1646  */
+#line 3757 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 156:
-#line 1693 "awkgram.y" /* yacc.c:1646  */
+#line 1682 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3774 "awkgram.c" /* yacc.c:1646  */
+#line 3763 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 157:
-#line 1695 "awkgram.y" /* yacc.c:1646  */
+#line 1684 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3780 "awkgram.c" /* yacc.c:1646  */
+#line 3769 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 158:
-#line 1697 "awkgram.y" /* yacc.c:1646  */
+#line 1686 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3786 "awkgram.c" /* yacc.c:1646  */
+#line 3775 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 159:
-#line 1699 "awkgram.y" /* yacc.c:1646  */
+#line 1688 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3792 "awkgram.c" /* yacc.c:1646  */
+#line 3781 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 160:
-#line 1701 "awkgram.y" /* yacc.c:1646  */
+#line 1690 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3798 "awkgram.c" /* yacc.c:1646  */
+#line 3787 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 161:
-#line 1706 "awkgram.y" /* yacc.c:1646  */
+#line 1695 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_create((yyvsp[0]));
          }
-#line 3806 "awkgram.c" /* yacc.c:1646  */
+#line 3795 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 162:
-#line 1710 "awkgram.y" /* yacc.c:1646  */
+#line 1699 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[0])->opcode == Op_match_rec) {
                        (yyvsp[0])->opcode = Op_nomatch;
@@ -3838,42 +3827,42 @@ regular_print:
                        }
                }
           }
-#line 3842 "awkgram.c" /* yacc.c:1646  */
+#line 3831 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 163:
-#line 1742 "awkgram.y" /* yacc.c:1646  */
+#line 1731 "awkgram.y" /* yacc.c:1646  */
     {
                if (do_pretty_print)
                        (yyval) = list_append((yyvsp[-1]), bcalloc(Op_parens, 
1, sourceline));
                else
                        (yyval) = (yyvsp[-1]);
          }
-#line 3853 "awkgram.c" /* yacc.c:1646  */
+#line 3842 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 164:
-#line 1749 "awkgram.y" /* yacc.c:1646  */
+#line 1738 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
                if ((yyval) == NULL)
                        YYABORT;
          }
-#line 3863 "awkgram.c" /* yacc.c:1646  */
+#line 3852 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 165:
-#line 1755 "awkgram.y" /* yacc.c:1646  */
+#line 1744 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
                if ((yyval) == NULL)
                        YYABORT;
          }
-#line 3873 "awkgram.c" /* yacc.c:1646  */
+#line 3862 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 166:
-#line 1761 "awkgram.y" /* yacc.c:1646  */
+#line 1750 "awkgram.y" /* yacc.c:1646  */
     {
                static bool warned = false;
 
@@ -3886,45 +3875,45 @@ regular_print:
                if ((yyval) == NULL)
                        YYABORT;
          }
-#line 3890 "awkgram.c" /* yacc.c:1646  */
+#line 3879 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 169:
-#line 1776 "awkgram.y" /* yacc.c:1646  */
+#line 1765 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[-1])->opcode = Op_preincrement;
                (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
          }
-#line 3899 "awkgram.c" /* yacc.c:1646  */
+#line 3888 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 170:
-#line 1781 "awkgram.y" /* yacc.c:1646  */
+#line 1770 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[-1])->opcode = Op_predecrement;
                (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
          }
-#line 3908 "awkgram.c" /* yacc.c:1646  */
+#line 3897 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 171:
-#line 1786 "awkgram.y" /* yacc.c:1646  */
+#line 1775 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_create((yyvsp[0]));
          }
-#line 3916 "awkgram.c" /* yacc.c:1646  */
+#line 3905 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 172:
-#line 1790 "awkgram.y" /* yacc.c:1646  */
+#line 1779 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_create((yyvsp[0]));
          }
-#line 3924 "awkgram.c" /* yacc.c:1646  */
+#line 3913 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 173:
-#line 1794 "awkgram.y" /* yacc.c:1646  */
+#line 1783 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[0])->lasti->opcode == Op_push_i
                        && ((yyvsp[0])->lasti->memory->flags & STRING) == 0
@@ -3939,11 +3928,11 @@ regular_print:
                        (yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
                }
          }
-#line 3943 "awkgram.c" /* yacc.c:1646  */
+#line 3932 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 174:
-#line 1809 "awkgram.y" /* yacc.c:1646  */
+#line 1798 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[0])->lasti->opcode == Op_push_i
                        && ((yyvsp[0])->lasti->memory->flags & STRING) == 0
@@ -3961,20 +3950,20 @@ regular_print:
                        (yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
                }
          }
-#line 3965 "awkgram.c" /* yacc.c:1646  */
+#line 3954 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 175:
-#line 1830 "awkgram.y" /* yacc.c:1646  */
+#line 1819 "awkgram.y" /* yacc.c:1646  */
     {
                func_use((yyvsp[0])->lasti->func_name, FUNC_USE);
                (yyval) = (yyvsp[0]);
          }
-#line 3974 "awkgram.c" /* yacc.c:1646  */
+#line 3963 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 176:
-#line 1835 "awkgram.y" /* yacc.c:1646  */
+#line 1824 "awkgram.y" /* yacc.c:1646  */
     {
                /* indirect function call */
                INSTRUCTION *f, *t;
@@ -4008,11 +3997,11 @@ regular_print:
                (yyval) = list_prepend((yyvsp[0]), t);
                at_seen = false;
          }
-#line 4012 "awkgram.c" /* yacc.c:1646  */
+#line 4001 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 177:
-#line 1872 "awkgram.y" /* yacc.c:1646  */
+#line 1861 "awkgram.y" /* yacc.c:1646  */
     {
                NODE *n;
 
@@ -4037,49 +4026,49 @@ regular_print:
                        (yyval) = list_append(t, (yyvsp[-3]));
                }
          }
-#line 4041 "awkgram.c" /* yacc.c:1646  */
+#line 4030 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 178:
-#line 1900 "awkgram.y" /* yacc.c:1646  */
+#line 1889 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 4047 "awkgram.c" /* yacc.c:1646  */
+#line 4036 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 179:
-#line 1902 "awkgram.y" /* yacc.c:1646  */
+#line 1891 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 4053 "awkgram.c" /* yacc.c:1646  */
+#line 4042 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 180:
-#line 1907 "awkgram.y" /* yacc.c:1646  */
+#line 1896 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 4059 "awkgram.c" /* yacc.c:1646  */
+#line 4048 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 181:
-#line 1909 "awkgram.y" /* yacc.c:1646  */
+#line 1898 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 4065 "awkgram.c" /* yacc.c:1646  */
+#line 4054 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 182:
-#line 1914 "awkgram.y" /* yacc.c:1646  */
+#line 1903 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = (yyvsp[0]); }
-#line 4071 "awkgram.c" /* yacc.c:1646  */
+#line 4060 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 183:
-#line 1916 "awkgram.y" /* yacc.c:1646  */
+#line 1905 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
          }
-#line 4079 "awkgram.c" /* yacc.c:1646  */
+#line 4068 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 184:
-#line 1923 "awkgram.y" /* yacc.c:1646  */
+#line 1912 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *ip = (yyvsp[0])->lasti;
                int count = ip->sub_count;      /* # of SUBSEP-seperated 
expressions */
@@ -4093,11 +4082,11 @@ regular_print:
                sub_counter++;  /* count # of dimensions */
                (yyval) = (yyvsp[0]);
          }
-#line 4097 "awkgram.c" /* yacc.c:1646  */
+#line 4086 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 185:
-#line 1940 "awkgram.y" /* yacc.c:1646  */
+#line 1929 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *t = (yyvsp[-1]);
                if ((yyvsp[-1]) == NULL) {
@@ -4111,31 +4100,31 @@ regular_print:
                        (yyvsp[0])->sub_count = count_expressions(&t, false);
                (yyval) = list_append(t, (yyvsp[0]));
          }
-#line 4115 "awkgram.c" /* yacc.c:1646  */
+#line 4104 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 186:
-#line 1957 "awkgram.y" /* yacc.c:1646  */
+#line 1946 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = (yyvsp[0]); }
-#line 4121 "awkgram.c" /* yacc.c:1646  */
+#line 4110 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 187:
-#line 1959 "awkgram.y" /* yacc.c:1646  */
+#line 1948 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
          }
-#line 4129 "awkgram.c" /* yacc.c:1646  */
+#line 4118 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 188:
-#line 1966 "awkgram.y" /* yacc.c:1646  */
+#line 1955 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 4135 "awkgram.c" /* yacc.c:1646  */
+#line 4124 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 189:
-#line 1971 "awkgram.y" /* yacc.c:1646  */
+#line 1960 "awkgram.y" /* yacc.c:1646  */
     {
                char *var_name = (yyvsp[0])->lextok;
 
@@ -4143,22 +4132,22 @@ regular_print:
                (yyvsp[0])->memory = variable((yyvsp[0])->source_line, 
var_name, Node_var_new);
                (yyval) = list_create((yyvsp[0]));
          }
-#line 4147 "awkgram.c" /* yacc.c:1646  */
+#line 4136 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 190:
-#line 1979 "awkgram.y" /* yacc.c:1646  */
+#line 1968 "awkgram.y" /* yacc.c:1646  */
     {
                char *arr = (yyvsp[-1])->lextok;
                (yyvsp[-1])->memory = variable((yyvsp[-1])->source_line, arr, 
Node_var_new);
                (yyvsp[-1])->opcode = Op_push_array;
                (yyval) = list_prepend((yyvsp[0]), (yyvsp[-1]));
          }
-#line 4158 "awkgram.c" /* yacc.c:1646  */
+#line 4147 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 191:
-#line 1989 "awkgram.y" /* yacc.c:1646  */
+#line 1978 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *ip = (yyvsp[0])->nexti;
                if (ip->opcode == Op_push
@@ -4170,73 +4159,73 @@ regular_print:
                } else
                        (yyval) = (yyvsp[0]);
          }
-#line 4174 "awkgram.c" /* yacc.c:1646  */
+#line 4163 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 192:
-#line 2001 "awkgram.y" /* yacc.c:1646  */
+#line 1990 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
                if ((yyvsp[0]) != NULL)
                        mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
-#line 4184 "awkgram.c" /* yacc.c:1646  */
+#line 4173 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 193:
-#line 2010 "awkgram.y" /* yacc.c:1646  */
+#line 1999 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->opcode = Op_postincrement;
          }
-#line 4192 "awkgram.c" /* yacc.c:1646  */
+#line 4181 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 194:
-#line 2014 "awkgram.y" /* yacc.c:1646  */
+#line 2003 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->opcode = Op_postdecrement;
          }
-#line 4200 "awkgram.c" /* yacc.c:1646  */
+#line 4189 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 195:
-#line 2017 "awkgram.y" /* yacc.c:1646  */
+#line 2006 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 4206 "awkgram.c" /* yacc.c:1646  */
+#line 4195 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 197:
-#line 2025 "awkgram.y" /* yacc.c:1646  */
+#line 2014 "awkgram.y" /* yacc.c:1646  */
     { yyerrok; }
-#line 4212 "awkgram.c" /* yacc.c:1646  */
+#line 4201 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 198:
-#line 2029 "awkgram.y" /* yacc.c:1646  */
+#line 2018 "awkgram.y" /* yacc.c:1646  */
     { yyerrok; }
-#line 4218 "awkgram.c" /* yacc.c:1646  */
+#line 4207 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 201:
-#line 2038 "awkgram.y" /* yacc.c:1646  */
+#line 2027 "awkgram.y" /* yacc.c:1646  */
     { yyerrok; }
-#line 4224 "awkgram.c" /* yacc.c:1646  */
+#line 4213 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 202:
-#line 2042 "awkgram.y" /* yacc.c:1646  */
+#line 2031 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); yyerrok; }
-#line 4230 "awkgram.c" /* yacc.c:1646  */
+#line 4219 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 203:
-#line 2046 "awkgram.y" /* yacc.c:1646  */
+#line 2035 "awkgram.y" /* yacc.c:1646  */
     { yyerrok; }
-#line 4236 "awkgram.c" /* yacc.c:1646  */
+#line 4225 "awkgram.c" /* yacc.c:1646  */
     break;
 
 
-#line 4240 "awkgram.c" /* yacc.c:1646  */
+#line 4229 "awkgram.c" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -4464,7 +4453,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 2048 "awkgram.y" /* yacc.c:1906  */
+#line 2037 "awkgram.y" /* yacc.c:1906  */
 
 
 struct token {
@@ -7156,18 +7145,6 @@ mk_function(INSTRUCTION *fi, INSTRUCTION *def)
        thisfunc = fi->func_body;
        assert(thisfunc != NULL);
 
-       if (do_optimize && def->lasti->opcode == Op_pop) {
-               /* tail call which does not return any value. */
-
-               INSTRUCTION *t;
-
-               for (t = def->nexti; t->nexti != def->lasti; t = t->nexti)
-                       ;
-               if (t->opcode == Op_func_call
-                   && strcmp(t->func_name, thisfunc->vname) == 0)
-                       (t + 1)->tail_call = true;
-       }
-
        /* add any pre-function comment to start of action for profile.c  */
 
        if (function_comment != NULL) {
diff --git a/awkgram.y b/awkgram.y
index be1e495..e1c75e9 100644
--- a/awkgram.y
+++ b/awkgram.y
@@ -993,20 +993,9 @@ non_compound_stmt
                        $$ = list_create($1);
                        (void) list_prepend($$, instruction(Op_push_i));
                        $$->nexti->memory = dupnode(Nnull_string);
-               } else {
-                       if (do_optimize
-                               && $3->lasti->opcode == Op_func_call
-                               && strcmp($3->lasti->func_name, in_function) == 0
-                       ) {
-                               /* Do tail recursion optimization. Tail
-                                * call without a return value is recognized
-                                * in mk_function().
-                                */
-                               ($3->lasti + 1)->tail_call = true;
-                       }
-
+               } else
                        $$ = list_append($3, $1);
-               }
+
                $$ = add_pending_comment($$);
          }
        | simple_stmt statement_term
@@ -4736,18 +4725,6 @@ mk_function(INSTRUCTION *fi, INSTRUCTION *def)
        thisfunc = fi->func_body;
        assert(thisfunc != NULL);
 
-       if (do_optimize && def->lasti->opcode == Op_pop) {
-               /* tail call which does not return any value. */
-
-               INSTRUCTION *t;
-
-               for (t = def->nexti; t->nexti != def->lasti; t = t->nexti)
-                       ;
-               if (t->opcode == Op_func_call
-                   && strcmp(t->func_name, thisfunc->vname) == 0)
-                       (t + 1)->tail_call = true;
-       }
-
        /* add any pre-function comment to start of action for profile.c  */
 
        if (function_comment != NULL) {
diff --git a/eval.c b/eval.c
index 6ece236..34ba174 100644
--- a/eval.c
+++ b/eval.c
@@ -674,7 +674,7 @@ void
 dump_fcall_stack(FILE *fp)
 {
        NODE *f, *func;
-       long i = 0, j, k = 0;
+       long i = 0, k = 0;
 
        if (fcall_count == 0)
                return;
@@ -682,15 +682,13 @@ dump_fcall_stack(FILE *fp)
 
        /* current frame */
        func = frame_ptr->func_node;
-       for (j = 0; j <= frame_ptr->num_tail_calls; j++)
-               fprintf(fp, "\t# %3ld. %s\n", k++, func->vname);
+       fprintf(fp, "\t# %3ld. %s\n", k++, func->vname);
 
        /* outer frames except main */
        for (i = 1; i < fcall_count; i++) {
                f = fcall_list[i];
                func = f->func_node;
-               for (j = 0; j <= f->num_tail_calls; j++)
-                       fprintf(fp, "\t# %3ld. %s\n", k++, func->vname);
+               fprintf(fp, "\t# %3ld. %s\n", k++, func->vname);
        }
 
        fprintf(fp, "\t# %3ld. -- main --\n", k);
@@ -1242,38 +1240,16 @@ setup_frame(INSTRUCTION *pc)
        NODE *m, *f, *fp;
        NODE **sp = NULL;
        int pcount, arg_count, i, j;
-       bool tail_optimize = false;
 
        f = pc->func_body;
        pcount = f->param_cnt;
        fp = f->fparms;
        arg_count = (pc + 1)->expr_count;
 
-       /* tail recursion optimization */
-       tail_optimize =  ((pc + 1)->tail_call && do_optimize
-                               && ! do_debug && ! do_profile);
-
-       if (tail_optimize) {
-               /* free local vars of calling frame */
-
-               NODE *func;
-               int n;
-
-               func = frame_ptr->func_node;
-               for (n = func->param_cnt, sp = frame_ptr->stack; n > 0; n--) {
-                       r = *sp++;
-                       if (r->type == Node_var)     /* local variable */
-                               DEREF(r->var_value);
-                       else if (r->type == Node_var_array)     /* local array 
*/
-                               assoc_clear(r);
-               }
-               sp = frame_ptr->stack;
-
-       } else if (pcount > 0) {
+       if (pcount > 0) {
                ezalloc(sp, NODE **, pcount * sizeof(NODE *), "setup_frame");
        }
 
-
        /* check for extra args */
        if (arg_count > pcount) {
                warning(
@@ -1287,13 +1263,9 @@ setup_frame(INSTRUCTION *pc)
        }
 
        for (i = 0, j = arg_count - 1; i < pcount; i++, j--) {
-               if (tail_optimize)
-                       r = sp[i];
-               else {
-                       getnode(r);
-                       memset(r, 0, sizeof(NODE));
-                       sp[i] = r;
-               }
+               getnode(r);
+               memset(r, 0, sizeof(NODE));
+               sp[i] = r;
 
                if (i >= arg_count) {
                        /* local variable */
@@ -1348,11 +1320,6 @@ setup_frame(INSTRUCTION *pc)
 
        stack_adj(-arg_count);  /* adjust stack pointer */
 
-       if (tail_optimize) {
-               frame_ptr->num_tail_calls++;
-               return f->code_ptr;
-       }
-
        if (pc->opcode == Op_indirect_func_call) {
                r = POP();      /* indirect var */
                DEREF(r);
@@ -1372,7 +1339,6 @@ setup_frame(INSTRUCTION *pc)
        frame_ptr->stack = sp;
        frame_ptr->prev_frame_size = (stack_ptr - stack_bottom); /* size of the 
previous stack frame */
        frame_ptr->func_node = f;
-       frame_ptr->num_tail_calls = 0;
        frame_ptr->vname = NULL;
        frame_ptr->reti = pc; /* on return execute pc->nexti */
 
@@ -1774,7 +1740,6 @@ init_interpret()
        frame_ptr->type = Node_frame;
        frame_ptr->stack = NULL;
        frame_ptr->func_node = NULL;    /* in main */
-       frame_ptr->num_tail_calls = 0;
        frame_ptr->vname = NULL;
 
        /* initialize true and false nodes */
diff --git a/test/ChangeLog b/test/ChangeLog
index 603df4e..6a347b6 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,8 @@
+2018-03-26         Arnold D. Robbins     <address@hidden>
+
+       * Makefile.am (EXTRA_DIST): Add tailrecurse.awk, tailrecurse.ok.
+       * tailrecurse.awk, tailrecurse.ok: New files.
+
 2018-03-13         Arnold D. Robbins     <address@hidden>
 
        * Makefile.am: Update copyright year.
diff --git a/test/Makefile.am b/test/Makefile.am
index e502f86..e96c314 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -1135,6 +1135,8 @@ EXTRA_DIST = \
        synerr1.ok \
        synerr2.awk \
        synerr2.ok \
+       tailrecurse.awk \
+       tailrecurse.ok \
        testext.ok \
        time.awk \
        time.ok \
@@ -1254,7 +1256,7 @@ BASIC_TESTS = \
        sigpipe1 sortempty sortglos splitargv splitarr \
        splitdef splitvar splitwht status-close strcat1 strnum1 strnum2 strtod \
        subamp subback subi18n subsepnm subslash substr swaplns synerr1 synerr2 
\
-       tradanch tweakfld \
+       tailrecurse tradanch tweakfld \
        uninit2 uninit3 uninit4 uninit5 uninitialized unterm uparrfs uplus \
        wideidx wideidx2 widesub widesub2 widesub3 widesub4 wjposer1 \
        zero2 zeroe0 zeroflag
diff --git a/test/Makefile.in b/test/Makefile.in
index b3cde53..4b0f839 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -1393,6 +1393,8 @@ EXTRA_DIST = \
        synerr1.ok \
        synerr2.awk \
        synerr2.ok \
+       tailrecurse.awk \
+       tailrecurse.ok \
        testext.ok \
        time.awk \
        time.ok \
@@ -1511,7 +1513,7 @@ BASIC_TESTS = \
        sigpipe1 sortempty sortglos splitargv splitarr \
        splitdef splitvar splitwht status-close strcat1 strnum1 strnum2 strtod \
        subamp subback subi18n subsepnm subslash substr swaplns synerr1 synerr2 
\
-       tradanch tweakfld \
+       tailrecurse tradanch tweakfld \
        uninit2 uninit3 uninit4 uninit5 uninitialized unterm uparrfs uplus \
        wideidx wideidx2 widesub widesub2 widesub3 widesub4 wjposer1 \
        zero2 zeroe0 zeroflag
@@ -3925,6 +3927,11 @@ synerr2:
        @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
        @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
 
+tailrecurse:
+       @echo $@
+       @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
+
 uninit2:
        @echo $@
        @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  --lint >_$@ 2>&1 || echo 
EXIT CODE: $$? >>_$@
diff --git a/test/Maketests b/test/Maketests
index e449dd3..4a90e3e 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -1002,6 +1002,11 @@ synerr2:
        @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
        @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
 
+tailrecurse:
+       @echo $@
+       @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) "$(srcdir)"/address@hidden _$@ && rm -f _$@
+
 uninit2:
        @echo $@
        @AWKPATH="$(srcdir)" $(AWK) -f address@hidden  --lint >_$@ 2>&1 || echo 
EXIT CODE: $$? >>_$@
diff --git a/test/tailrecurse.awk b/test/tailrecurse.awk
new file mode 100644
index 0000000..b287d16
--- /dev/null
+++ b/test/tailrecurse.awk
@@ -0,0 +1,15 @@
+BEGIN {
+       abc(2)
+}
+
+
+function abc(c, A, B)
+{
+       print "abc(" c ", " length(A) ")"
+       if (! c--) {
+               return 
+       }
+       B[""]
+       print length(B)
+       return abc(c, B)
+}
diff --git a/test/tailrecurse.ok b/test/tailrecurse.ok
new file mode 100644
index 0000000..73ce1ed
--- /dev/null
+++ b/test/tailrecurse.ok
@@ -0,0 +1,5 @@
+abc(2, 0)
+1
+abc(1, 1)
+1
+abc(0, 1)

http://git.sv.gnu.org/cgit/gawk.git/commit/?id=9b03de3b6c449d014674dd2bfd5947c55d1f0711

commit 9b03de3b6c449d014674dd2bfd5947c55d1f0711
Author: Arnold D. Robbins <address@hidden>
Date:   Mon Mar 26 10:36:05 2018 +0300

    Update es.po.

diff --git a/po/ChangeLog b/po/ChangeLog
index 2563ed4..c623abf 100644
--- a/po/ChangeLog
+++ b/po/ChangeLog
@@ -1,3 +1,7 @@
+2018-03-26         Arnold D. Robbins     <address@hidden>
+
+       * es.po: Updated.
+
 2018-02-25         Arnold D. Robbins     <address@hidden>
 
        * 4.2.1: Release tar ball made.
diff --git a/po/es.po b/po/es.po
index e79e60c..cbeba89 100644
--- a/po/es.po
+++ b/po/es.po
@@ -1,20 +1,24 @@
-# Mensajes en español para gawk-4.0.0h.
-# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 
2011, 2012 Free Software Foundation, Inc.
+# Mensajes en español para gawk-4.2.0e.
+# Copyright (C) 2001 - 2018 Free Software Foundation, Inc.
 # This file is distributed under the same license as the gawk package.
 # Cristian Othón Martínez Vera <address@hidden>, 2001, 2002, 2003, 2004, 
2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012.
-#
+# Javier <address@hidden>, 2018.
+# Francisco Javier Serrador <address@hidden>, 2018.
 msgid ""
 msgstr ""
-"Project-Id-Version: gawk 4.0.0h\n"
+"Project-Id-Version: gawk 4.2.0e\n"
 "Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2018-02-25 19:17+0200\n"
-"PO-Revision-Date: 2012-01-30 07:42-0600\n"
-"Last-Translator: Cristian Othón Martínez Vera <address@hidden>\n"
-"Language-Team: Spanish <address@hidden>\n"
+"POT-Creation-Date: 2018-01-28 20:07+0200\n"
+"PO-Revision-Date: 2018-03-24 17:48+0200\n"
+"Last-Translator: Francisco Javier Serrador <address@hidden>\n"
+"Language-Team: Spanish <address@hidden>\n"
 "Language: es\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Virtaal 0.7.1\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 
 #: array.c:259
 #, c-format
@@ -23,39 +27,38 @@ msgstr "desde %s"
 
 #: array.c:360
 msgid "attempt to use a scalar value as array"
-msgstr "se intentó usar un valor escalar como una matriz"
+msgstr "trata emplear un valor escalar como una matriz"
 
 #: array.c:362
 #, c-format
 msgid "attempt to use scalar parameter `%s' as an array"
-msgstr "se intentó usar el parámetro escalar `%s como una matriz'"
+msgstr "trata utilizar parámetro escalar «%s» como una matriz"
 
 #: array.c:365
 #, c-format
 msgid "attempt to use scalar `%s' as an array"
-msgstr "se intentó usar el escalar `%s' como una matriz"
+msgstr "trata utilizar el escalar «%s» como una matriz"
 
 #: array.c:412 array.c:579 builtin.c:88 builtin.c:1636 builtin.c:1682
 #: builtin.c:1695 builtin.c:2218 builtin.c:2245 eval.c:1131 eval.c:1135
 #: eval.c:1542
 #, c-format
 msgid "attempt to use array `%s' in a scalar context"
-msgstr "se intentó usar la matriz `%s' en un contexto escalar"
+msgstr "trata utilizar la matriz «%s» en un contexto escalar"
 
 #: array.c:586
-#, fuzzy, c-format
+#, c-format
 msgid "delete: index `%.*s' not in array `%s'"
-msgstr "delete: el índice `%s' no está en la matriz `%s'"
+msgstr "delete: índice «%.*s» no dentro de la matriz «%s»"
 
 #: array.c:600
 #, c-format
 msgid "attempt to use scalar `%s[\"%.*s\"]' as an array"
-msgstr "se intentó usar el dato escalar `%s[\"%.*s\"]' como una matriz"
+msgstr "trata utilizar `%s[«%.*s»]' escalar como una matriz"
 
 #: array.c:791
-#, fuzzy
 msgid "adump: first argument not an array"
-msgstr "adump: el argumento no es una matriz"
+msgstr "adump: el primer argumento no es una matriz"
 
 #: array.c:833
 msgid "asort: second argument not an array"
@@ -75,42 +78,34 @@ msgstr "asorti: el primer argumento no es una matriz"
 
 #: array.c:849
 msgid "asort: cannot use a subarray of first arg for second arg"
-msgstr ""
-"asort: no se puede usar una submatriz del primer argumento para el segundo "
-"argumento"
+msgstr "asort: no se puede usar una submatriz del primer argumento para el 
segundo argumento"
 
 #: array.c:850
 msgid "asorti: cannot use a subarray of first arg for second arg"
-msgstr ""
-"asorti: no se puede usar una submatriz del primer argumento para el segundo "
-"argumento"
+msgstr "asorti: no se puede usar una submatriz del primer argumento para el 
segundo argumento"
 
 #: array.c:855
 msgid "asort: cannot use a subarray of second arg for first arg"
-msgstr ""
-"asort: no se puede usar una submatriz del segundo argumento para el primer "
-"argumento"
+msgstr "asort: no se puede usar una submatriz del segundo argumento para el 
primer argumento"
 
 #: array.c:856
 msgid "asorti: cannot use a subarray of second arg for first arg"
-msgstr ""
-"asorti: no se puede usar una submatriz del segundo argumento para el primer "
-"argumento"
+msgstr "asorti: no se puede usar una submatriz del segundo argumento para el 
primer argumento"
 
 #: array.c:1324
 #, c-format
 msgid "`%s' is invalid as a function name"
-msgstr "`%s' es inválido como un nombre de función"
+msgstr "«%s» es inválido como un nombre de función"
 
 #: array.c:1328
 #, c-format
 msgid "sort comparison function `%s' is not defined"
-msgstr "la función de comparación de ordenamiento `%s' no está definida"
+msgstr "la función de comparación de ordenamiento «%s» no está definida"
 
 #: awkgram.y:247
 #, c-format
 msgid "%s blocks must have an action part"
-msgstr "los bloques %s deben tener una parte de acción"
+msgstr "bloques %s deben tener una parte de acción"
 
 #: awkgram.y:250
 msgid "each rule must have a pattern or an action part"
@@ -118,25 +113,21 @@ msgstr "cada regla debe tener un patrón o una parte de 
acción"
 
 #: awkgram.y:363 awkgram.y:377
 msgid "old awk does not support multiple `BEGIN' or `END' rules"
-msgstr "el awk antiguo no admite múltiples reglas `BEGIN' o `END'"
+msgstr "el awk antiguo no admite reglas `BEGIN' o `END' múltiples"
 
 #: awkgram.y:421
 #, c-format
 msgid "`%s' is a built-in function, it cannot be redefined"
-msgstr "`%s' es una función interna, no se puede redefinir"
+msgstr "«%s» es una función interna, no puede ser redefinida"
 
 #: awkgram.y:497
 msgid "regexp constant `//' looks like a C++ comment, but is not"
-msgstr ""
-"la constante de expresión regular `//' parece un comentario de C++, pero no "
-"lo es"
+msgstr "la constante de expresión regular `//' parece un comentario de C++, 
pero no lo es"
 
 #: awkgram.y:501
 #, c-format
 msgid "regexp constant `/%s/' looks like a C comment, but is not"
-msgstr ""
-"la constante de expresión regular `/%s/' parece un comentario de C, pero no "
-"lo es"
+msgstr "expreg constante `/%s/' parece como un comentario de C, pero no lo es"
 
 #: awkgram.y:651
 #, c-format
@@ -153,7 +144,7 @@ msgstr "no se permite `break' fuera de un bucle o switch"
 
 #: awkgram.y:943 awkgram.y:4232
 msgid "`continue' is not allowed outside a loop"
-msgstr "no se permite `continue' fuera de un bucle"
+msgstr "`continue' no se permite fuera de un bucle"
 
 #: awkgram.y:954
 #, c-format
@@ -171,16 +162,15 @@ msgstr "se usó `return' fuera del contexto de la 
función"
 
 #: awkgram.y:1065
 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
-msgstr ""
-"el `print' simple en la regla BEGIN o END probablemente debe ser `print \"\"'"
+msgstr "el `print' simple en la regla BEGIN o END probablemente debe ser 
`print \"\"'"
 
 #: awkgram.y:1132 awkgram.y:1182
 msgid "`delete' is not allowed with SYMTAB"
-msgstr ""
+msgstr "`delete' no está permitida con SYMTAB"
 
 #: awkgram.y:1134 awkgram.y:1184
 msgid "`delete' is not allowed with FUNCTAB"
-msgstr ""
+msgstr "`delete' no está permitida con FUNCTAB"
 
 #: awkgram.y:1169 awkgram.y:1173
 msgid "`delete(array)' is a non-portable tawk extension"
@@ -188,29 +178,28 @@ msgstr "`delete(array)' es una extensión de tawk que no 
es transportable"
 
 #: awkgram.y:1309
 msgid "multistage two-way pipelines don't work"
-msgstr "las líneas de trabajo de dos vías multiestado no funcionan"
+msgstr "las líneas de tuberías de dos vías multiestado no funcionan"
 
 #: awkgram.y:1469
 msgid "regular expression on right of assignment"
-msgstr "expresión regular del lado derecho de una asignación"
+msgstr "expreg del lado derecho de asignación"
 
 #: awkgram.y:1484 awkgram.y:1497
 msgid "regular expression on left of `~' or `!~' operator"
-msgstr "expresión regular a la izquierda del operador `~' o `!~'"
+msgstr "expreg `~' o `!~' a la izquierda del operador"
 
 #: awkgram.y:1514 awkgram.y:1663
 msgid "old awk does not support the keyword `in' except after `for'"
-msgstr ""
-"el awk antiguo no admite la palabra clave `in' excepto después de `for'"
+msgstr "el awk antiguo no admite la palabra clave `in' excepto después de 
`for'"
 
 #: awkgram.y:1524
 msgid "regular expression on right of comparison"
-msgstr "expresión regular a la derecha de una comparación"
+msgstr "expreg del lado derecho de comparación"
 
 #: awkgram.y:1643
 #, c-format
 msgid "non-redirected `getline' invalid inside `%s' rule"
-msgstr "`getline' no redirigido es inválido dentro de la regla `%s'"
+msgstr "`getline' no redirigido es inválido dentro de regla «%s»"
 
 #: awkgram.y:1646
 msgid "non-redirected `getline' undefined inside END action"
@@ -231,23 +220,22 @@ msgstr "las llamadas indirectas a función son una 
extensión de gawk"
 #: awkgram.y:1854
 #, c-format
 msgid "can not use special variable `%s' for indirect function call"
-msgstr ""
-"no se puede usar la variable especial `%s' como llamada indirecta a función"
+msgstr "la variable especial «%s» no se puede usar como llamada indirecta a 
función"
 
 #: awkgram.y:1880
-#, fuzzy, c-format
+#, c-format
 msgid "attempt to use non-function `%s' in function call"
-msgstr "se intentó usar la función `%s' como una matriz"
+msgstr "trata utilizar una no-función «%s» dentro de llamada de función"
 
 #: awkgram.y:1944
 msgid "invalid subscript expression"
 msgstr "expresión de subíndice inválida"
 
-#: awkgram.y:2308 awkgram.y:2328 gawkapi.c:272 gawkapi.c:289 msg.c:130
+#: awkgram.y:2308 awkgram.y:2328 gawkapi.c:272 gawkapi.c:289 msg.c:128
 msgid "warning: "
 msgstr "aviso: "
 
-#: awkgram.y:2326 gawkapi.c:244 gawkapi.c:287 msg.c:162
+#: awkgram.y:2326 gawkapi.c:244 gawkapi.c:287 msg.c:160
 msgid "fatal: "
 msgstr "fatal: "
 
@@ -259,12 +247,12 @@ msgstr "nueva línea o fin de la cadena inesperados"
 #: debug.c:2814 debug.c:5108
 #, c-format
 msgid "can't open source file `%s' for reading (%s)"
-msgstr "no se puede abrir el fichero fuente `%s' para lectura (%s)"
+msgstr "no puede abrir el fichero fuente «%s» para lectura (%s)"
 
 #: awkgram.y:2663 awkgram.y:2788
-#, fuzzy, c-format
+#, c-format
 msgid "can't open shared library `%s' for reading (%s)"
-msgstr "no se puede abrir el fichero fuente `%s' para lectura (%s)"
+msgstr "no puede abrir biblioteca «%s» compartida para lectura (%s)"
 
 #: awkgram.y:2665 awkgram.y:2739 awkgram.y:2789 builtin.c:149 debug.c:5259
 msgid "reason unknown"
@@ -273,17 +261,17 @@ msgstr "razón desconocida"
 #: awkgram.y:2674 awkgram.y:2698
 #, c-format
 msgid "can't include `%s' and use it as a program file"
-msgstr ""
+msgstr "no puede incluir «%s» y emplearla como un fichero de programa"
 
 #: awkgram.y:2687
 #, c-format
 msgid "already included source file `%s'"
-msgstr "ya se incluyó el fichero fuente `%s'"
+msgstr "ya se incluyó el fichero fuente «%s»"
 
 #: awkgram.y:2688
-#, fuzzy, c-format
+#, c-format
 msgid "already loaded shared library `%s'"
-msgstr "ya se incluyó el fichero fuente `%s'"
+msgstr "ya caargada la biblioteca compartida «%s»"
 
 #: awkgram.y:2723
 msgid "@include is a gawk extension"
@@ -294,33 +282,31 @@ msgid "empty filename after @include"
 msgstr "nombre de fichero vacío después de @include"
 
 #: awkgram.y:2773
-#, fuzzy
 msgid "@load is a gawk extension"
-msgstr "@include es una extensión de gawk"
+msgstr "@load es una extensión de gawk"
 
 #: awkgram.y:2779
-#, fuzzy
 msgid "empty filename after @load"
-msgstr "nombre de fichero vacío después de @include"
+msgstr "nombre de fichero vacío después de @load"
 
 #: awkgram.y:2913
 msgid "empty program text on command line"
-msgstr "texto de programa vacío en la linea de órdenes"
+msgstr "texto de programa vacío en la línea de órdenes"
 
 #: awkgram.y:3028
 #, c-format
 msgid "can't read sourcefile `%s' (%s)"
-msgstr "no se puede leer el fichero fuente `%s' (%s)"
+msgstr "no puede leer el fichero fuente «%s» (%s)"
 
 #: awkgram.y:3039
 #, c-format
 msgid "source file `%s' is empty"
-msgstr "el fichero fuente `%s' está vacío"
+msgstr "el fichero fuente «%s» está vacío"
 
 #: awkgram.y:3098
 #, c-format
 msgid "PEBKAC error: invalid character '\\%03o' in source code"
-msgstr ""
+msgstr "Error PEBKAC: carácter inválido '\\%03o' en código fuente"
 
 #: awkgram.y:3369
 msgid "source file does not end in newline"
@@ -328,41 +314,37 @@ msgstr "el fichero fuente no termina con línea nueva"
 
 #: awkgram.y:3489
 msgid "unterminated regexp ends with `\\' at end of file"
-msgstr "expresión regular sin terminar termina con `\\` al final del fichero"
+msgstr "expreg sin terminar finaliza con `\\` al final del fichero"
 
 #: awkgram.y:3516
 #, c-format
 msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
-msgstr ""
-"%s: %d: el modificador de expresión regular `/.../%c` de tawk no funciona en 
"
-"gawk"
+msgstr "%s: %d: el modificador de expresión regular `/…/%c` de tawk no 
funciona en gawk"
 
 #: awkgram.y:3520
 #, c-format
 msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
-msgstr ""
-"el modificador de expresión regular `/.../%c` de tawk no funciona en gawk"
+msgstr "el modificador de expresión regular `/…/%c` de tawk no funciona en 
gawk"
 
 #: awkgram.y:3533
 msgid "unterminated regexp"
-msgstr "expresión regular sin terminar"
+msgstr "expreg sin terminar"
 
 #: awkgram.y:3537
 msgid "unterminated regexp at end of file"
-msgstr "expresión regular sin terminar al final del fichero"
+msgstr "expreg sin terminar al final del fichero"
 
 #: awkgram.y:3616
 msgid "use of `\\ #...' line continuation is not portable"
-msgstr "el uso de la continuación de línea `\\ #...' no es transportable"
+msgstr "la utilización de la continuación de línea `\\ #…' no es 
transportable"
 
 #: awkgram.y:3636
 msgid "backslash not last character on line"
-msgstr "la barra invertida no es el último caracter en la línea"
+msgstr "barra invertida no es el último caracter en la línea"
 
 #: awkgram.y:3674 awkgram.y:3676
-#, fuzzy
 msgid "multidimensional arrays are a gawk extension"
-msgstr "las llamadas indirectas a función son una extensión de gawk"
+msgstr "matrices multidimensionales son una extensión de gawk"
 
 #: awkgram.y:3701
 msgid "POSIX does not allow operator `**='"
@@ -378,7 +360,7 @@ msgstr "POSIX no permite el operador `**'"
 
 #: awkgram.y:3714
 msgid "old awk does not support operator `**'"
-msgstr "el awk antiguo no admite el operador `**='"
+msgstr "el awk antiguo no admite el operador `**'"
 
 #: awkgram.y:3749
 msgid "operator `^=' is not supported in old awk"
@@ -395,22 +377,22 @@ msgstr "cadena sin terminar"
 #: awkgram.y:4093
 #, c-format
 msgid "invalid char '%c' in expression"
-msgstr "caracter '%c' inválido en la expresión"
+msgstr "carácter «%c» inválido en la expresión"
 
 #: awkgram.y:4167
 #, c-format
 msgid "`%s' is a gawk extension"
-msgstr "`%s' es una extensión de gawk"
+msgstr "«%s» es una extensión de gawk"
 
 #: awkgram.y:4172
 #, c-format
 msgid "POSIX does not allow `%s'"
-msgstr "POSIX no permite `%s'"
+msgstr "POSIX no permite «%s»"
 
 #: awkgram.y:4180
 #, c-format
 msgid "`%s' is not supported in old awk"
-msgstr "`%s' no se admite en el awk antiguo"
+msgstr "«%s» no se admite en el awk antiguo"
 
 #: awkgram.y:4270
 msgid "`goto' considered harmful!\n"
@@ -424,8 +406,7 @@ msgstr "%d es inválido como número de argumentos para %s"
 #: awkgram.y:4374
 #, c-format
 msgid "%s: string literal as last arg of substitute has no effect"
-msgstr ""
-"%s: la literal de cadena como último argumento de substitute no tiene efecto"
+msgstr "%s: la literal de cadena como último argumento de substitute no tiene 
efecto"
 
 #: awkgram.y:4379
 #, c-format
@@ -442,37 +423,34 @@ msgstr "close: el segundo argumento es una extensión de 
gawk"
 
 #: awkgram.y:4545
 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
-msgstr ""
-"el uso de dcgettext(_\"...\") es incorrecto: quite el subrayado inicial"
+msgstr "la utilización de dcgettext(_\"…\") es incorrecta: quite el 
subrayado inicial"
 
 #: awkgram.y:4560
 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
-msgstr ""
-"el uso de dcngettext(_\"...\") es incorrecto: quite el subrayado inicial"
+msgstr "la utilización de dcngettext(_\"…\") es incorrecta: quite el 
subrayado inicial"
 
 #: awkgram.y:4579
-#, fuzzy
 msgid "index: regexp constant as second argument is not allowed"
-msgstr "index: el segundo argumento recibido no es una cadena"
+msgstr "indizado: expreg constante como segundo argumento no está permitido"
 
 #: awkgram.y:4632
 #, c-format
 msgid "function `%s': parameter `%s' shadows global variable"
-msgstr "función `%s': parámetro `%s' oscurece la variable global"
+msgstr "función «%s»: parámetro «%s» oscurece la variable global"
 
 #: awkgram.y:4681 debug.c:4093 debug.c:4136 debug.c:5257
 #, c-format
 msgid "could not open `%s' for writing (%s)"
-msgstr "no se puede abrir `%s' para escritura (%s)"
+msgstr "no se puede abrir «%s» para escritura (%s)"
 
 #: awkgram.y:4682
 msgid "sending variable list to standard error"
-msgstr "se envía la lista de variables a la salida estándar de error"
+msgstr "se envía la lista de variables a la salida común de error"
 
 #: awkgram.y:4690
 #, c-format
 msgid "%s: close failed (%s)"
-msgstr "%s: falló close (%s)"
+msgstr "%s: fallado close (%s)"
 
 #: awkgram.y:4715
 msgid "shadow_funcs() called twice!"
@@ -485,41 +463,37 @@ msgstr "hay variables opacadas."
 #: awkgram.y:4802
 #, c-format
 msgid "function name `%s' previously defined"
-msgstr "el nombre de función `%s' se definió previamente"
+msgstr "el nombre de función «%s» se definió previamente"
 
 #: awkgram.y:4848
 #, c-format
 msgid "function `%s': can't use function name as parameter name"
-msgstr ""
-"función `%s': no se puede usar un nombre de función como nombre de 
parámetro"
+msgstr "función «%s»: no se puede usar un nombre de función como nombre de 
parámetro"
 
 #: awkgram.y:4851
 #, c-format
 msgid "function `%s': can't use special variable `%s' as a function parameter"
-msgstr ""
-"función `%s': no se puede usar la variable especial `%s' como un parámetro "
-"de función"
+msgstr "función «%s»: no se puede usar la variable especial «%s» como un 
parámetro de función"
 
 #: awkgram.y:4859
 #, c-format
 msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
-msgstr "función `%s': parámetro #%d, `%s', duplica el parámetro #%d"
+msgstr "función «%s»: parámetro #%d, «%s», duplica el parámetro #%d"
 
 #: awkgram.y:4945 awkgram.y:4951
 #, c-format
 msgid "function `%s' called but never defined"
-msgstr "se llamó a la función `%s' pero nunca se definió"
+msgstr "se llamó a la función «%s» pero nunca se definió"
 
 #: awkgram.y:4955
 #, c-format
 msgid "function `%s' defined but never called directly"
-msgstr "se definió la función `%s' pero nunca se llamó directamente"
+msgstr "se definió la función «%s» pero nunca se llamó directamente"
 
 #: awkgram.y:4987
 #, c-format
 msgid "regexp constant for parameter #%d yields boolean value"
-msgstr ""
-"la constante de expresión regular para el parámetro #%d da un valor 
booleano"
+msgstr "expreg constante para el parámetro #%d da un valor booleano"
 
 #: awkgram.y:5002
 #, c-format
@@ -527,41 +501,39 @@ msgid ""
 "function `%s' called with space between name and `(',\n"
 "or used as a variable or an array"
 msgstr ""
-"se llamó la función `%s' con espacio entre el nombre y el `(',\n"
+"se llamó a la función «%s» con espacio entre el nombre y el `(',\n"
 "o se usó como una variable o una matriz"
 
 #: awkgram.y:5217
 msgid "division by zero attempted"
-msgstr "se intentó una división por cero"
+msgstr "se intentó una división entre cero"
 
 #: awkgram.y:5226
 #, c-format
 msgid "division by zero attempted in `%%'"
-msgstr "se intentó una división por cero en `%%'"
+msgstr "se intentó una división entre cero en `%%'"
 
 #: awkgram.y:5552
-msgid ""
-"cannot assign a value to the result of a field post-increment expression"
-msgstr ""
+msgid "cannot assign a value to the result of a field post-increment 
expression"
+msgstr "no puede asignar un valor al resultado de un campo expresión 
post-intremental"
 
 #: awkgram.y:5555
-#, fuzzy, c-format
+#, c-format
 msgid "invalid target of assignment (opcode %s)"
-msgstr "%d es inválido como número de argumentos para %s"
+msgstr "objetivo inválido de asignación (codigo op %s)"
 
 #: builtin.c:143
 #, c-format
 msgid "%s to \"%s\" failed (%s)"
-msgstr "falló %s a \"%s\" (%s)"
+msgstr "fallado %s a «%s» (%s)"
 
 #: builtin.c:147
 msgid "standard output"
-msgstr "salida estándar"
+msgstr "salida común"
 
 #: builtin.c:148
-#, fuzzy
 msgid "standard error"
-msgstr "salida estándar"
+msgstr "error común"
 
 #: builtin.c:162
 msgid "exp: received non-numeric argument"
@@ -573,37 +545,29 @@ msgid "exp: argument %g is out of range"
 msgstr "exp: el argumento %g está fuera de rango"
 
 #: builtin.c:245
-#, fuzzy, c-format
+#, c-format
 msgid "fflush: cannot flush: pipe `%.*s' opened for reading, not writing"
-msgstr ""
-"fflush: no se puede limpiar: se abrió la tubería `%s' para lectura, no para 
"
-"escritura"
+msgstr "fflush: no se puede tirar: se abrió la tubería «%.*s» para 
lectura, no para escritura"
 
 #: builtin.c:248
-#, fuzzy, c-format
+#, c-format
 msgid "fflush: cannot flush: file `%.*s' opened for reading, not writing"
-msgstr ""
-"fflush: no se puede limpiar: se abrió el fichero `%s' para lectura, no para "
-"escritura"
+msgstr "fflush: no se puede tirar: fichero «%.*s» abierto para lectura, no 
para escritura"
 
 #: builtin.c:259
-#, fuzzy, c-format
+#, c-format
 msgid "fflush: cannot flush file `%.*s': %s"
-msgstr ""
-"fflush: no se puede limpiar: se abrió el fichero `%s' para lectura, no para "
-"escritura"
+msgstr "fflush: no se puede tirar el fichero «%.*s»: %s"
 
 #: builtin.c:264
-#, fuzzy, c-format
+#, c-format
 msgid "fflush: cannot flush: two-way pipe `%.*s' has closed write end"
-msgstr ""
-"fflush: no se puede limpiar: se abrió la tubería `%s' para lectura, no para 
"
-"escritura"
+msgstr "fflush: no se puede vaciar: tubería dos vías «%.*s» ha cerado 
final de escritura"
 
 #: builtin.c:270
-#, fuzzy, c-format
+#, c-format
 msgid "fflush: `%.*s' is not an open file, pipe or co-process"
-msgstr "fflush: `%s' no es un fichero abierto, tubería o co-proceso"
+msgstr "fflush: «%.*s» no es un fichero abierto, tubería o co-proceso"
 
 #: builtin.c:377
 msgid "index: received non-string first argument"
@@ -645,18 +609,17 @@ msgstr "fatal: se debe utilizar `count$' en todos los 
formatos o en ninguno"
 #: builtin.c:858
 #, c-format
 msgid "field width is ignored for `%%' specifier"
-msgstr "se descarta la anchura del campo para el especificador `%%'"
+msgstr "anchura del campo ignorada para `%%' como especificador"
 
 #: builtin.c:860
 #, c-format
 msgid "precision is ignored for `%%' specifier"
-msgstr "se descarta la precisión para el especificador `%%'"
+msgstr "precisión está ignorada para `%%' especificador"
 
 #: builtin.c:862
 #, c-format
 msgid "field width and precision are ignored for `%%' specifier"
-msgstr ""
-"se descartan la anchura del campo y la precisión para el especificador `%%'"
+msgstr "anchura y orecisión del campo son ignorados para `%%' como 
especificador"
 
 #: builtin.c:913
 msgid "fatal: `$' is not permitted in awk formats"
@@ -669,9 +632,7 @@ msgstr "fatal: la cuenta de argumentos con `$' debe ser > 0"
 #: builtin.c:926
 #, c-format
 msgid "fatal: arg count %ld greater than total number of supplied arguments"
-msgstr ""
-"fatal: la cuenta de argumentos %ld es mayor que el número total de "
-"argumentos proporcionados"
+msgstr "fatal: cuenta arg %ld es mayor que el número total de argumentos 
proporcionados"
 
 #: builtin.c:930
 msgid "fatal: `$' not permitted after period in format"
@@ -679,9 +640,7 @@ msgstr "fatal: no se permite `$' después de un punto en el 
formato"
 
 #: builtin.c:949
 msgid "fatal: no `$' supplied for positional field width or precision"
-msgstr ""
-"fatal: no se proporciona `$' para la anchura o la precisión del campo "
-"posicional"
+msgstr "fatal: no se proporciona `$' para la anchura o la precisión del campo 
posicional"
 
 #: builtin.c:1019
 msgid "`l' is meaningless in awk formats; ignored"
@@ -708,31 +667,28 @@ msgid "fatal: `h' is not permitted in POSIX awk formats"
 msgstr "fatal: no se permite `h' en los formatos POSIX de awk"
 
 #: builtin.c:1082
-#, fuzzy, c-format
+#, c-format
 msgid "[s]printf: value %g is too big for %%c format"
-msgstr "[s]printf: el valor %g está fuera del rango para el formato `%%%c'"
+msgstr "[s]printf: el valor %g es demasiado grande para el formato %%c"
 
 #: builtin.c:1095
-#, fuzzy, c-format
+#, c-format
 msgid "[s]printf: value %g is not a valid wide character"
-msgstr "[s]printf: el valor %g está fuera del rango para el formato `%%%c'"
+msgstr "[s]printf: el valor %g no es un ancho de carácter válido"
 
 #: builtin.c:1481
 #, c-format
 msgid "[s]printf: value %g is out of range for `%%%c' format"
-msgstr "[s]printf: el valor %g está fuera del rango para el formato `%%%c'"
+msgstr "[s]printf: el valor %g está fuera del rango para `%%%c' como formato"
 
 #: builtin.c:1579
 #, c-format
 msgid "ignoring unknown format specifier character `%c': no argument converted"
-msgstr ""
-"se descarta el carácter especificador de formato `%c' desconocido: no se "
-"convirtió ningún argumento"
+msgstr "se descarta el carácter especificador de formato `%c' desconocido: no 
se convirtió ningún argumento"
 
 #: builtin.c:1584
 msgid "fatal: not enough arguments to satisfy format string"
-msgstr ""
-"fatal: no hay suficientes argumentos para satisfacer a la cadena de formato"
+msgstr "fatal: no hay suficientes argumentos para satisfacer a la cadena de 
formato"
 
 #: builtin.c:1586
 msgid "^ ran out for this one"
@@ -747,9 +703,8 @@ msgid "too many arguments supplied for format string"
 msgstr "se proporcionaron demasiados argumentos para la cadena de formato"
 
 #: builtin.c:1655
-#, fuzzy
 msgid "sprintf: no arguments"
-msgstr "printf: sin argumentos"
+msgstr "sprintf: sin argumentos"
 
 #: builtin.c:1678 builtin.c:1689
 msgid "printf: no arguments"
@@ -757,7 +712,7 @@ msgstr "printf: sin argumentos"
 
 #: builtin.c:1704
 msgid "printf: attempt to write to closed write end of two-way pipe"
-msgstr ""
+msgstr "printf: intenta escribir a final de escritura cerrada de dos tuberías 
de vía doble"
 
 #: builtin.c:1745
 msgid "sqrt: received non-numeric argument"
@@ -786,9 +741,7 @@ msgstr "substr: se truncará la longitud no entera %g"
 #: builtin.c:1801
 #, c-format
 msgid "substr: length %g too big for string indexing, truncating to %g"
-msgstr ""
-"substr: la longitud %g es demasiado grande para ser índice de cadena, se "
-"trunca a %g"
+msgstr "substr: la longitud %g es demasiado grande para ser índice de cadena, 
se trunca a %g"
 
 #: builtin.c:1813
 #, c-format
@@ -811,16 +764,12 @@ msgstr "substr: el índice de inicio %g está después 
del fin de la cadena"
 
 #: builtin.c:1863
 #, c-format
-msgid ""
-"substr: length %g at start index %g exceeds length of first argument (%lu)"
-msgstr ""
-"substr: la cadena %g en el índice de inicio %g excede la longitud del primer 
"
-"argumento (%lu)"
+msgid "substr: length %g at start index %g exceeds length of first argument 
(%lu)"
+msgstr "substr: la cadena %g en el índice de inicio %g excede la longitud del 
primer argumento (%lu)"
 
 #: builtin.c:1936
 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type"
-msgstr ""
-"strftime: el valor de formato en PROCINFO[\"strftime\"] tiene tipo numérico"
+msgstr "strftime: el valor de formato en PROCINFO[\"strftime\"] tiene tipo 
numérico"
 
 #: builtin.c:1956
 msgid "strftime: received non-numeric second argument"
@@ -828,14 +777,11 @@ msgstr "strftime: el segundo argumento recibido no es 
númerico"
 
 #: builtin.c:1966
 msgid "strftime: second argument less than 0 or too big for time_t"
-msgstr ""
-"strftime: el segundo argumento es menor que 0 o demasiado grande para time_t"
+msgstr "strftime: el segundo argumento es menor que 0 o demasiado grande para 
time_t"
 
 #: builtin.c:1973
-#, fuzzy
 msgid "strftime: second argument out of range for time_t"
-msgstr ""
-"strftime: el segundo argumento es menor que 0 o demasiado grande para time_t"
+msgstr "strftime: segundo argumento fuera de rango para tiempo time_t"
 
 #: builtin.c:1982
 msgid "strftime: received non-string first argument"
@@ -846,19 +792,19 @@ msgid "strftime: received empty format string"
 msgstr "strftime: se recibió una cadena de formato vacía"
 
 #: builtin.c:2060
-#, fuzzy, c-format
+#, c-format
 msgid "setenv(TZ, %s) failed (%s)"
-msgstr "falló %s a \"%s\" (%s)"
+msgstr "setenv(TZ, %s) fallado (%s)"
 
 #: builtin.c:2067
 #, c-format
 msgid "setenv(TZ, %s) restoration failed (%s)"
-msgstr ""
+msgstr "setenv(TZ, %s) restauración falladoa (%s)"
 
 #: builtin.c:2071
-#, fuzzy, c-format
+#, c-format
 msgid "unsetenv(TZ) failed (%s)"
-msgstr "%s: falló close (%s)"
+msgstr "unsetenv(TZ) fallado (%s)"
 
 #: builtin.c:2100
 msgid "mktime: received non-string argument"
@@ -866,12 +812,11 @@ msgstr "mktime: se recibió un argumento que no es una 
cadena"
 
 #: builtin.c:2117
 msgid "mktime: at least one of the values is out of the default range"
-msgstr ""
-"mktime: por lo menos uno de los valores está fuera del rango por defecto"
+msgstr "mktime: por lo menos uno de los valores está fuera del rango por 
defecto"
 
 #: builtin.c:2153
 msgid "'system' function not allowed in sandbox mode"
-msgstr "no se permite la función 'system' en modo sandbox"
+msgstr "función 'system' no se permite en modo sandbox"
 
 #: builtin.c:2158
 msgid "system: received non-string argument"
@@ -879,7 +824,7 @@ msgstr "system: se recibió un argumento que no es una 
cadena"
 
 #: builtin.c:2227 builtin.c:2300
 msgid "print: attempt to write to closed write end of two-way pipe"
-msgstr ""
+msgstr "print: intenta escribir a final de escritura cerrada de tubería de 
vía doble"
 
 #: builtin.c:2323
 #, c-format
@@ -919,19 +864,19 @@ msgid "match: third argument is not an array"
 msgstr "match: el tercer argumento no es una matriz"
 
 #: builtin.c:2921
-#, fuzzy, c-format
+#, c-format
 msgid "gensub: third argument `%.*s' treated as 1"
-msgstr "gensub: el tercer argumento de 0 se trata como 1"
+msgstr "gensub: el tercer argumento `%.*s' tratado como 1"
 
 #: builtin.c:3243
-#, fuzzy, c-format
+#, c-format
 msgid "%s: can be called indirectly only with two arguments"
-msgstr "sqrt: se llamó con el argumento negativo %g"
+msgstr "%s: puede ser llamado indirectamente solo con dos argumentos"
 
 #: builtin.c:3343
-#, fuzzy, c-format
+#, c-format
 msgid "indirect call to %s requires at least two arguments"
-msgstr "sqrt: se llamó con el argumento negativo %g"
+msgstr "llamada indirecta a %s requiere al menos dos argumentos"
 
 #: builtin.c:3398
 msgid "lshift: received non-numeric first argument"
@@ -942,21 +887,19 @@ msgid "lshift: received non-numeric second argument"
 msgstr "lshift: el segundo argumento recibido no es númerico"
 
 #: builtin.c:3406
-#, fuzzy, c-format
+#, c-format
 msgid "lshift(%f, %f): negative values are not allowed"
-msgstr "lshift(%lf, %lf): los valores negativos darán resultados extraños"
+msgstr "lshift(%f, %f): los valores negativos no están permitidos"
 
 #: builtin.c:3410
-#, fuzzy, c-format
+#, c-format
 msgid "lshift(%f, %f): fractional values will be truncated"
-msgstr "lshift(%lf, %lf): los valores fraccionarios se truncarán"
+msgstr "lshift(%f, %f): valores fraccionarios serán truncados"
 
 #: builtin.c:3412
-#, fuzzy, c-format
+#, c-format
 msgid "lshift(%f, %f): too large shift value will give strange results"
-msgstr ""
-"lshift(%lf, %lf): un valor de desplazamiento muy grande dará resultados "
-"extraños"
+msgstr "lshift(%f, %f): valor de desplazamiento demasiado grande dará 
resultados extraños"
 
 #: builtin.c:3437
 msgid "rshift: received non-numeric first argument"
@@ -967,969 +910,954 @@ msgid "rshift: received non-numeric second argument"
 msgstr "rshift: el segundo argumento recibido no es númerico"
 
 #: builtin.c:3445
-#, fuzzy, c-format
+#, c-format
 msgid "rshift(%f, %f): negative values are not allowed"
-msgstr "rshift(%lf, %lf): los valores negativos darán resultados extraños"
+msgstr "rshift(%f, %f): valores negativos no están permitidos"
 
 #: builtin.c:3449
-#, fuzzy, c-format
+#, c-format
 msgid "rshift(%f, %f): fractional values will be truncated"
-msgstr "rshift(%lf, %lf): los valores fraccionarios serán truncados"
+msgstr "rshift(%f, %f): valores fraccionarios serán truncados"
 
 #: builtin.c:3451
-#, fuzzy, c-format
+#, c-format
 msgid "rshift(%f, %f): too large shift value will give strange results"
-msgstr ""
-"rshift(%lf, %lf): un valor de desplazamiento muy grande dará resultados "
-"extraños"
+msgstr "rshift(%f, %f): un valor de desplazamiento muy grande dará resultados 
extraños"
 
 #: builtin.c:3476 mpfr.c:977
-#, fuzzy
 msgid "and: called with less than two arguments"
-msgstr "sqrt: se llamó con el argumento negativo %g"
+msgstr "and: llamado con menos de dos argumentos"
 
 #: builtin.c:3481
-#, fuzzy, c-format
+#, c-format
 msgid "and: argument %d is non-numeric"
-msgstr "exp: el argumento %g está fuera de rango"
+msgstr "y: argumento %d es no-numérico"
 
 #: builtin.c:3485
-#, fuzzy, c-format
+#, c-format
 msgid "and: argument %d negative value %g is not allowed"
-msgstr "and(%lf, %lf): los valores negativos darán resultados extraños"
+msgstr "y: argumento negativo %d valorador %g no está permitido"
 
 #: builtin.c:3508 mpfr.c:1009
-#, fuzzy
 msgid "or: called with less than two arguments"
-msgstr "sqrt: se llamó con el argumento negativo %g"
+msgstr "o: llamado con menos de dos argumentos"
 
 #: builtin.c:3513
-#, fuzzy, c-format
+#, c-format
 msgid "or: argument %d is non-numeric"
-msgstr "exp: el argumento %g está fuera de rango"
+msgstr "o: argumento %d es no numérico"
 
 #: builtin.c:3517
-#, fuzzy, c-format
+#, c-format
 msgid "or: argument %d negative value %g is not allowed"
-msgstr "compl(%lf): el valor negativo dará resultados extraños"
+msgstr "o: argumento negativo %d valorador %g no está permitido"
 
 #: builtin.c:3539 mpfr.c:1040
-#, fuzzy
 msgid "xor: called with less than two arguments"
-msgstr "sqrt: se llamó con el argumento negativo %g"
+msgstr "oex: llamado con menos de dos argumentos"
 
 #: builtin.c:3545
-#, fuzzy, c-format
+#, c-format
 msgid "xor: argument %d is non-numeric"
-msgstr "exp: el argumento %g está fuera de rango"
+msgstr "oex: argumento %d es no-numérico"
 
 #: builtin.c:3549
-#, fuzzy, c-format
+#, c-format
 msgid "xor: argument %d negative value %g is not allowed"
-msgstr "xor(%lf, %lf): los valores negativos darán resultados extraños"
+msgstr "oex: argumento negativo %d valorado %g no está permitido"
 
 #: builtin.c:3574 mpfr.c:799
 msgid "compl: received non-numeric argument"
 msgstr "compl: se recibió un argumento que no es númerico"
 
 #: builtin.c:3579
-#, fuzzy, c-format
+#, c-format
 msgid "compl(%f): negative value is not allowed"
-msgstr "compl(%lf): el valor negativo dará resultados extraños"
+msgstr "compl(%f): valor negativo no está permitido"
 
 #: builtin.c:3582
-#, fuzzy, c-format
+#, c-format
 msgid "compl(%f): fractional value will be truncated"
-msgstr "compl(%lf): el valor fraccionario se truncará"
+msgstr "compl(%f): valor fraccional será truncado"
 
 #: builtin.c:3766
 #, c-format
 msgid "dcgettext: `%s' is not a valid locale category"
-msgstr "dcgettext: `%s' no es una categoría local válida"
+msgstr "dcgettext: «%s» no es una categoría local válida"
 
 #: builtin.c:3991 mpfr.c:1198
-#, fuzzy
 msgid "intdiv: third argument is not an array"
-msgstr "match: el tercer argumento no es una matriz"
+msgstr "intdiv: tercer argumento no es una matriz"
 
 #: builtin.c:3999 mpfr.c:1206
-#, fuzzy
 msgid "intdiv: received non-numeric first argument"
-msgstr "and: el primer argumento recibido no es númerico"
+msgstr "intdiv: primer argumento recibido es no-númerico"
 
 #: builtin.c:4001 mpfr.c:1208
-#, fuzzy
 msgid "intdiv: received non-numeric second argument"
-msgstr "and: el segundo argumento recibido no es númerico"
+msgstr "intdiv: segundo argumento recibido no es númerico"
 
 #: builtin.c:4010 mpfr.c:1247
-#, fuzzy
 msgid "intdiv: division by zero attempted"
-msgstr "se intentó una división por cero"
+msgstr "intdiv: intentado división entre cero"
 
 #: builtin.c:4080
 #, c-format
-msgid ""
-"typeof detected invalid flags combination `%s'; please file a bug report."
-msgstr ""
+msgid "typeof detected invalid flags combination `%s'; please file a bug 
report."
+msgstr "typeof detectado inválidas marcas combinadas «%s»; envíe un 
reporte de defecto."
 
 #: builtin.c:4095
-#, fuzzy, c-format
+#, c-format
 msgid "typeof: invalid argument type `%s'"
-msgstr "referencia al argumento sin inicializar `%s'"
+msgstr "tipode: tipo de argumento inválido «%s»"
 
 #: builtin.c:4099
 #, c-format
 msgid "typeof: unknown argument type `%s'"
-msgstr ""
+msgstr "tipode: tipo de argumento inválido «%s»"
 
 #: command.y:227
 #, c-format
 msgid "Type (g)awk statement(s). End with the command \"end\"\n"
-msgstr ""
+msgstr "Tecla de estado(s) (g)awk. Termina con la orden «end»\n"
 
 #: command.y:291
-#, fuzzy, c-format
+#, c-format
 msgid "invalid frame number: %d"
-msgstr "Final de rango inválido"
+msgstr "número de marco inválido: %d"
 
 #: command.y:297
-#, fuzzy, c-format
+#, c-format
 msgid "info: invalid option - \"%s\""
-msgstr "%s: opción inválida -- '%c'\n"
+msgstr "info: opción inválida -- «%s»"
 
 #: command.y:323
 #, c-format
 msgid "source \"%s\": already sourced."
-msgstr ""
+msgstr "fuente «%s»: ya originados."
 
 #: command.y:328
 #, c-format
 msgid "save \"%s\": command not permitted."
-msgstr ""
+msgstr "guarda «%s»: orden no permitida."
 
 #: command.y:341
 msgid "Can't use command `commands' for breakpoint/watchpoint commands"
-msgstr ""
+msgstr "No puede emplear «órdenes» para órdens de puntos de 
ruptura/vigías"
 
 #: command.y:343
 msgid "no breakpoint/watchpoint has been set yet"
-msgstr ""
+msgstr "ningún punto de ruptura/vigía ha sido establecida aún"
 
 #: command.y:345
 msgid "invalid breakpoint/watchpoint number"
-msgstr ""
+msgstr "número de punto de ruptura/vigía inválido"
 
 #: command.y:350
 #, c-format
 msgid "Type commands for when %s %d is hit, one per line.\n"
-msgstr ""
+msgstr "Teclee órdenes para cuando %s %d es alcanzado, uno por línea.\n"
 
 #: command.y:352
 #, c-format
 msgid "End with the command \"end\"\n"
-msgstr ""
+msgstr "Finaliza con la orden «end»\n"
 
 #: command.y:359
 msgid "`end' valid only in command `commands' or `eval'"
-msgstr ""
+msgstr "`end' válido solo en orden `commands' o `eval'"
 
 #: command.y:369
 msgid "`silent' valid only in command `commands'"
-msgstr ""
+msgstr "`silent' válido solo en orden `commands'"
 
 #: command.y:375
-#, fuzzy, c-format
+#, c-format
 msgid "trace: invalid option - \"%s\""
-msgstr "%s: opción inválida -- '%c'\n"
+msgstr "traza: opción inválida - «%s»"
 
 #: command.y:389
 msgid "condition: invalid breakpoint/watchpoint number"
-msgstr ""
+msgstr "condición: número de punto de ruptura/vigía inválido"
 
 #: command.y:451
-#, fuzzy
 msgid "argument not a string"
-msgstr "exp: el argumento %g está fuera de rango"
+msgstr "argumento no una cadena"
 
 #: command.y:461 command.y:466
 #, c-format
 msgid "option: invalid parameter - \"%s\""
-msgstr ""
+msgstr "opción: parámetro inválido - «%s»"
 
 #: command.y:476
 #, c-format
 msgid "no such function - \"%s\""
-msgstr ""
+msgstr "sin tal función - «%s»"
 
 #: command.y:533
-#, fuzzy, c-format
+#, c-format
 msgid "enable: invalid option - \"%s\""
-msgstr "%s: opción inválida -- '%c'\n"
+msgstr "activar: opción inválida - «%s»"
 
 #: command.y:599
-#, fuzzy, c-format
+#, c-format
 msgid "invalid range specification: %d - %d"
-msgstr "Final de rango inválido"
+msgstr "especificación de rango inválido: %d - %d"
 
 #: command.y:661
-#, fuzzy
 msgid "non-numeric value for field number"
-msgstr "valor desconocido para la especificación de campo: %d\n"
+msgstr "valor no numérico para número de campo"
 
 #: command.y:682 command.y:689
 msgid "non-numeric value found, numeric expected"
-msgstr ""
+msgstr "valor no numérico encontrado, numérico esperado"
 
 #: command.y:714 command.y:720
 msgid "non-zero integer value"
-msgstr ""
+msgstr "valor entero distinto de cero"
 
 #: command.y:819
-msgid ""
-"backtrace [N] - print trace of all or N innermost (outermost if N < 0) "
-"frames."
-msgstr ""
+msgid "backtrace [N] - print trace of all or N innermost (outermost if N < 0) 
frames."
+msgstr "backtrace [N] - escribe traza de todo o N más internos (externos si N 
< 0) marcos."
 
 #: command.y:821
-msgid ""
-"break [[filename:]N|function] - set breakpoint at the specified location."
-msgstr ""
+msgid "break [[filename:]N|function] - set breakpoint at the specified 
location."
+msgstr "break [[nombre-fichero:]N]|función] - establece punto de ruptura en 
la localización especificada."
 
 #: command.y:823
 msgid "clear [[filename:]N|function] - delete breakpoints previously set."
-msgstr ""
+msgstr "clear [[nombrefichero:]N|función] - borra puntos de ruptura 
anteriormente puestos."
 
 #: command.y:825
-msgid ""
-"commands [num] - starts a list of commands to be executed at a "
-"breakpoint(watchpoint) hit."
-msgstr ""
+msgid "commands [num] - starts a list of commands to be executed at a 
breakpoint(watchpoint) hit."
+msgstr "commands [núm] - inicia una lista de órdenes para ser ejecutadas en 
un punto de ruptura(vigia) alcanzado."
 
 #: command.y:827
 msgid "condition num [expr] - set or clear breakpoint or watchpoint condition."
-msgstr ""
+msgstr "condition núm [expr] - establece o vacía punto condicional de 
ruptura o vigía."
 
 #: command.y:829
 msgid "continue [COUNT] - continue program being debugged."
-msgstr ""
+msgstr "continue [CONTADOR] - continúa programa siendo depurado."
 
 #: command.y:831
 msgid "delete [breakpoints] [range] - delete specified breakpoints."
-msgstr ""
+msgstr "delete [puntos_ruptura] [rango] - borra puntos de rupturas 
especificados."
 
 #: command.y:833
 msgid "disable [breakpoints] [range] - disable specified breakpoints."
-msgstr ""
+msgstr "disable [puntos_ruptura] [rango] - desactiva puntos de ruptura 
especificado."
 
 #: command.y:835
 msgid "display [var] - print value of variable each time the program stops."
-msgstr ""
+msgstr "display [var] - escribe valor de variable cada tiempo que el programa 
se detiene."
 
 #: command.y:837
 msgid "down [N] - move N frames down the stack."
-msgstr ""
+msgstr "down [N] - baja N marcos de pila."
 
 #: command.y:839
 msgid "dump [filename] - dump instructions to file or stdout."
-msgstr ""
+msgstr "dump [nombre-fichero] - vuelca intrucciones al fichero o salida 
común."
 
 #: command.y:841
 msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints."
-msgstr ""
+msgstr "enable [unitario|borra] [puntos_ruptura] [rango] - activa puntos de 
ruptura especificado."
 
 #: command.y:843
 msgid "end - end a list of commands or awk statements."
-msgstr ""
+msgstr "end - finaliza una lista de órdenes o declaraciones awk."
 
 #: command.y:845
 msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)."
-msgstr ""
+msgstr "eval stmt|[p1, p2, …] - evalua sentencia(s) awk."
 
 #: command.y:847
 msgid "exit - (same as quit) exit debugger."
-msgstr ""
+msgstr "exit - (lo mismo que quit) sale del depurador."
 
 #: command.y:849
 msgid "finish - execute until selected stack frame returns."
-msgstr ""
+msgstr "finish - ejecuta hasta marco de pila seleccionada devuelve."
 
 #: command.y:851
 msgid "frame [N] - select and print stack frame number N."
-msgstr ""
+msgstr "frame [N] - selecciona y esscribe número N de marco de pila."
 
 #: command.y:853
 msgid "help [command] - print list of commands or explanation of command."
-msgstr ""
+msgstr "help [mandato] - escribe lista de mandato o explicación de mandato."
 
 #: command.y:855
 msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT."
-msgstr ""
+msgstr "ignora N CONTADOR - establece cuenta-ignora de núemro N de puntos de 
ruptura a CONTADOR."
 
 #: command.y:857
-msgid ""
-"info topic - source|sources|variables|functions|break|frame|args|locals|"
-"display|watch."
-msgstr ""
+msgid "info topic - 
source|sources|variables|functions|break|frame|args|locals|display|watch."
+msgstr "tópico info - 
fuente|fuentes|variables|funciones|ruptura|marco|args|locales|pantalla|visor."
 
 #: command.y:859
 msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)."
-msgstr ""
+msgstr "list [-|+|[filename:]lineno|function|range] - lista línea(s) 
específica(s)."
 
 #: command.y:861
 msgid "next [COUNT] - step program, proceeding through subroutine calls."
-msgstr ""
+msgstr "next [CONTADOR] - paso programado, procediendo a través de llamadas a 
subrutina."
 
 #: command.y:863
-msgid ""
-"nexti [COUNT] - step one instruction, but proceed through subroutine calls."
-msgstr ""
+msgid "nexti [COUNT] - step one instruction, but proceed through subroutine 
calls."
+msgstr "nexti [CONTADOR] - un paso de instrucción, pero procedido por 
llamadas a subrutina."
 
 #: command.y:865
 msgid "option [name[=value]] - set or display debugger option(s)."
-msgstr ""
+msgstr "option [nombre[=valor]] - establecer o enseñar opcione(s) 
depuradora(s)."
 
 #: command.y:867
 msgid "print var [var] - print value of a variable or array."
-msgstr ""
+msgstr "print var [var] - escribe valor de una variable o matriz."
 
 #: command.y:869
 msgid "printf format, [arg], ... - formatted output."
-msgstr ""
+msgstr "formato printf, [arg], … - salida formateada."
 
 #: command.y:871
 msgid "quit - exit debugger."
-msgstr ""
+msgstr "quit - sale del depurador."
 
 #: command.y:873
 msgid "return [value] - make selected stack frame return to its caller."
-msgstr ""
+msgstr "return [valor] - crea marco de pila seleccionada a su llamador."
 
 #: command.y:875
 msgid "run - start or restart executing program."
-msgstr ""
+msgstr "run - iniciar o reiniciar ejecución del programa."
 
 #: command.y:878
 msgid "save filename - save commands from the session to file."
-msgstr ""
+msgstr "save nombrefichero - guarda órdenes desde la sesión al fichero."
 
 #: command.y:881
 msgid "set var = value - assign value to a scalar variable."
-msgstr ""
+msgstr "set var = valor - asigna valor a una variable escalar."
 
 #: command.y:883
-msgid ""
-"silent - suspends usual message when stopped at a breakpoint/watchpoint."
-msgstr ""
+msgid "silent - suspends usual message when stopped at a 
breakpoint/watchpoint."
+msgstr "silent - suspende mensaje usual cuando detenga en un punto de 
ruptura/vigía."
 
 #: command.y:885
 msgid "source file - execute commands from file."
-msgstr ""
+msgstr "fichero fuente - ejecuta órdenes desde fichero."
 
 #: command.y:887
 msgid "step [COUNT] - step program until it reaches a different source line."
-msgstr ""
+msgstr "step [CONTADOR] - paso de programa hasta que alcance una línea de la 
fuente distinta."
 
 #: command.y:889
 msgid "stepi [COUNT] - step one instruction exactly."
-msgstr ""
+msgstr "stepi [CONTADOR] - paso de una instrucción exactamente."
 
 #: command.y:891
 msgid "tbreak [[filename:]N|function] - set a temporary breakpoint."
-msgstr ""
+msgstr "tbreak [[nombrefchero:]N|función] - establece un punto de ruptura 
temporal."
 
 #: command.y:893
 msgid "trace on|off - print instruction before executing."
-msgstr ""
+msgstr "trace on|off - escribe instrucciones antes de ejecutar."
 
 #: command.y:895
 msgid "undisplay [N] - remove variable(s) from automatic display list."
-msgstr ""
+msgstr "undisplay [N] - quita variable(s) de la lista vista automática."
 
 #: command.y:897
-msgid ""
-"until [[filename:]N|function] - execute until program reaches a different "
-"line or line N within current frame."
-msgstr ""
+msgid "until [[filename:]N|function] - execute until program reaches a 
different line or line N within current frame."
+msgstr "hasta [[nombre-fichero:]N|función] - ejecuta hasta que el programa 
alcanza una línea diferente o línea N dentro del marco actual."
 
 #: command.y:899
 msgid "unwatch [N] - remove variable(s) from watch list."
-msgstr ""
+msgstr "unwatch [N] - quita variable(s) de la lista de vigía."
 
 #: command.y:901
 msgid "up [N] - move N frames up the stack."
-msgstr ""
+msgstr "up [N] - sube N marcos de pila."
 
 #: command.y:903
 msgid "watch var - set a watchpoint for a variable."
-msgstr ""
+msgstr "watch var - establece un punto de vigía para una variable."
 
 #: command.y:905
-msgid ""
-"where [N] - (same as backtrace) print trace of all or N innermost (outermost "
-"if N < 0) frames."
+msgid "where [N] - (same as backtrace) print trace of all or N innermost 
(outermost if N < 0) frames."
 msgstr ""
+"where [N] - (lo mismo que traza anterior) escribe traza de todo o N más 
marcos internos\n"
+"            (externos si N < 0)."
 
-#: command.y:1016 debug.c:401 gawkapi.c:258 msg.c:139
+#: command.y:1016 debug.c:401 gawkapi.c:258 msg.c:137
 #, c-format
 msgid "error: "
 msgstr "error: "
 
 #: command.y:1060
-#, fuzzy, c-format
+#, c-format
 msgid "can't read command (%s)\n"
-msgstr "no se puede redirigir desde `%s' (%s)"
+msgstr "no puede leer orden (%s)\n"
 
 #: command.y:1074
-#, fuzzy, c-format
+#, c-format
 msgid "can't read command (%s)"
-msgstr "no se puede redirigir desde `%s' (%s)"
+msgstr "no puede leer orden (%s)"
 
 #: command.y:1125
-#, fuzzy
 msgid "invalid character in command"
-msgstr "Nombre de clase de caracter inválido"
+msgstr "carácter inválido en orden"
 
 #: command.y:1161
 #, c-format
 msgid "unknown command - \"%.*s\", try help"
-msgstr ""
+msgstr "orden desconocidoa - «%.*s», intente ayuda"
 
 #: command.y:1231
 #, c-format
 msgid "%s"
-msgstr ""
+msgstr "%s"
 
 #: command.y:1293
-#, fuzzy
 msgid "invalid character"
-msgstr "Caracter de ordenación inválido"
+msgstr "carácter inválido"
 
 #: command.y:1497
 #, c-format
 msgid "undefined command: %s\n"
-msgstr ""
+msgstr "orden no definida: %s\n"
 
 #: debug.c:252
 msgid "set or show the number of lines to keep in history file."
-msgstr ""
+msgstr "establece o muestra el número de líneas para conservar en el fichero 
histórico."
 
 #: debug.c:254
 msgid "set or show the list command window size."
-msgstr ""
+msgstr "establece o muestra la lista de ventana de tamaño de orden."
 
 #: debug.c:256
 msgid "set or show gawk output file."
-msgstr ""
+msgstr "establece o muestra fichero de salida gawk."
 
 #: debug.c:258
 msgid "set or show debugger prompt."
-msgstr ""
+msgstr "establece o muestra petición del depurador."
 
 #: debug.c:260
 msgid "(un)set or show saving of command history (value=on|off)."
-msgstr ""
+msgstr "(des)establece o muestra guardando de histórico de órdenes 
(valor=on|off)."
 
 #: debug.c:262
 msgid "(un)set or show saving of options (value=on|off)."
-msgstr ""
+msgstr "(des)establece o muestra guardando de opciones (valor=on|off)."
 
 #: debug.c:264
 msgid "(un)set or show instruction tracing (value=on|off)."
-msgstr ""
+msgstr "(des)establecer o mostrar instrucción trazada 
(valor=encendido|apagado)."
 
 #: debug.c:345
 msgid "program not running."
-msgstr ""
+msgstr "programa no ejecutando."
 
 #: debug.c:448 debug.c:606
-#, fuzzy, c-format
+#, c-format
 msgid "can't read source file `%s' (%s)"
-msgstr "no se puede leer el fichero fuente `%s' (%s)"
+msgstr "no puede leer el fichero fuente «%s» (%s)"
 
 #: debug.c:453
-#, fuzzy, c-format
+#, c-format
 msgid "source file `%s' is empty.\n"
-msgstr "el fichero fuente `%s' está vacío"
+msgstr "el fichero fuente «%s» está vacío.\n"
 
 #: debug.c:480
 msgid "no current source file."
-msgstr ""
+msgstr "sin actual fichero fuente."
 
 #: debug.c:505
-#, fuzzy, c-format
+#, c-format
 msgid "cannot find source file named `%s' (%s)"
-msgstr "no se puede leer el fichero fuente `%s' (%s)"
+msgstr "no puede encontrar fichero fuente nombrado «%s» (%s)"
 
 #: debug.c:529
 #, c-format
 msgid "WARNING: source file `%s' modified since program compilation.\n"
 msgstr ""
+"CUIDADO: fichero fuente «%s» modificado desde la compilación del 
programa.\n"
+" \n"
 
 #: debug.c:551
 #, c-format
 msgid "line number %d out of range; `%s' has %d lines"
-msgstr ""
+msgstr "número lineal %d fuera de límite; «%s» tiene %d líneas"
 
 #: debug.c:611
-#, fuzzy, c-format
+#, c-format
 msgid "unexpected eof while reading file `%s', line %d"
-msgstr "error interno: fichero `%s', línea %d\n"
+msgstr "fdl inesperado mientras leía el fichero «%s», línea %d"
 
 #: debug.c:620
 #, c-format
 msgid "source file `%s' modified since start of program execution"
-msgstr ""
+msgstr "fichero origen «%s» modificó desde inicio de ejecución programada"
 
 #: debug.c:732
-#, fuzzy, c-format
+#, c-format
 msgid "Current source file: %s\n"
-msgstr "ya se incluyó el fichero fuente `%s'"
+msgstr "Fichero fuente actual: %s\n"
 
 #: debug.c:733
 #, c-format
 msgid "Number of lines: %d\n"
-msgstr ""
+msgstr "Número de líneas: %d\n"
 
 #: debug.c:740
 #, c-format
 msgid "Source file (lines): %s (%d)\n"
-msgstr ""
+msgstr "Fichero fuente (líneas): %s (%d)\n"
 
 #: debug.c:754
 msgid ""
 "Number  Disp  Enabled  Location\n"
 "\n"
 msgstr ""
+"Número   Disp  Activado  Localización\n"
+"\n"
 
 #: debug.c:765
 #, c-format
 msgid "\tno of hits = %ld\n"
-msgstr ""
+msgstr "\tnº de alcances = %ld\n"
 
 #: debug.c:767
 #, c-format
 msgid "\tignore next %ld hit(s)\n"
-msgstr ""
+msgstr "\tignora siguiente punto %ld\n"
 
 #: debug.c:769 debug.c:909
 #, c-format
 msgid "\tstop condition: %s\n"
-msgstr ""
+msgstr "\tdetiene confición: %s\n"
 
 #: debug.c:771 debug.c:911
 msgid "\tcommands:\n"
-msgstr ""
+msgstr "\tórdenes:\n"
 
 #: debug.c:793
 #, c-format
 msgid "Current frame: "
-msgstr ""
+msgstr "Marco actual: "
 
 #: debug.c:796
 #, c-format
 msgid "Called by frame: "
-msgstr ""
+msgstr "Llamado por marco: "
 
 #: debug.c:800
 #, c-format
 msgid "Caller of frame: "
-msgstr ""
+msgstr "Llamador del marco: "
 
 #: debug.c:818
 #, c-format
 msgid "None in main().\n"
-msgstr ""
+msgstr "Ninguno en main().\n"
 
 #: debug.c:848
-#, fuzzy
 msgid "No arguments.\n"
-msgstr "printf: sin argumentos"
+msgstr "Sin argumentos.\n"
 
 #: debug.c:849
 msgid "No locals.\n"
-msgstr ""
+msgstr "Sin locales.\n"
 
 #: debug.c:857
 msgid ""
 "All defined variables:\n"
 "\n"
 msgstr ""
+"Todas las variables definidas:\n"
+"\n"
 
 #: debug.c:867
 msgid ""
 "All defined functions:\n"
 "\n"
 msgstr ""
+"Todas las funciones definidas:\n"
+"\n"
 
 #: debug.c:886
 msgid ""
 "Auto-display variables:\n"
 "\n"
 msgstr ""
+"Autoenseñar varibles:\n"
+"\n"
 
 #: debug.c:889
 msgid ""
 "Watch variables:\n"
 "\n"
 msgstr ""
+"Vigilar variables:\n"
+"\n"
 
 #: debug.c:1029
-#, fuzzy, c-format
+#, c-format
 msgid "no symbol `%s' in current context\n"
-msgstr "`exit' no se puede llamar en el contexto actual"
+msgstr "sin símbolo «%s» en contexto actual\n"
 
 #: debug.c:1041 debug.c:1427
-#, fuzzy, c-format
+#, c-format
 msgid "`%s' is not an array\n"
-msgstr "`%s' no es un nombre de variable legal"
+msgstr "«%s» no es una matriz\n"
 
 #: debug.c:1055
-#, fuzzy, c-format
+#, c-format
 msgid "$%ld = uninitialized field\n"
-msgstr "referencia al campo sin inicializar `$%d'"
+msgstr "$%ld = campo no inicializado\n"
 
 #: debug.c:1076
-#, fuzzy, c-format
+#, c-format
 msgid "array `%s' is empty\n"
-msgstr "el fichero de datos `%s' está vacío"
+msgstr ""
+"matriz «%s» está vacía\n"
+"\n"
 
 #: debug.c:1119 debug.c:1171
-#, fuzzy, c-format
+#, c-format
 msgid "[\"%.*s\"] not in array `%s'\n"
-msgstr "delete: el índice `%s' no está en la matriz `%s'"
+msgstr "[«%.*s»] no dentro de matriz «%s»\n"
 
 #: debug.c:1175
-#, fuzzy, c-format
+#, c-format
 msgid "`%s[\"%.*s\"]' is not an array\n"
-msgstr "`%s' no es un nombre de variable legal"
+msgstr "`%s[\"%.*s\"]' no es una matriz\n"
 
 #: debug.c:1236 debug.c:5017
-#, fuzzy, c-format
+#, c-format
 msgid "`%s' is not a scalar variable"
-msgstr "`%s' no es un nombre de variable legal"
+msgstr "«%s» no es una variable escalar"
 
 #: debug.c:1258 debug.c:5047
-#, fuzzy, c-format
+#, c-format
 msgid "attempt to use array `%s[\"%.*s\"]' in a scalar context"
-msgstr "se intentó usar la matriz `%s[\"%.*s\"]' en un contexto escalar"
+msgstr "trata utilizar la matriz `%s[\"%.*s\"]' en un contexto escalar"
 
 #: debug.c:1280 debug.c:5058
-#, fuzzy, c-format
+#, c-format
 msgid "attempt to use scalar `%s[\"%.*s\"]' as array"
-msgstr "se intentó usar el dato escalar `%s[\"%.*s\"]' como una matriz"
+msgstr "trata usar el escalar `%s[\"%.*s\"]' como una matriz"
 
 #: debug.c:1423
-#, fuzzy, c-format
+#, c-format
 msgid "`%s' is a function"
-msgstr "`%s' es inválido como un nombre de función"
+msgstr "`%s' es una función"
 
 #: debug.c:1465
 #, c-format
 msgid "watchpoint %d is unconditional\n"
-msgstr ""
+msgstr "punto de vigía %d es incondicional\n"
 
 #: debug.c:1499
 #, c-format
 msgid "No display item numbered %ld"
-msgstr ""
+msgstr "No enseña ítem numerado %ld"
 
 #: debug.c:1502
 #, c-format
 msgid "No watch item numbered %ld"
-msgstr ""
+msgstr "Sin vista ítem numerado %ld"
 
 #: debug.c:1528
-#, fuzzy, c-format
+#, c-format
 msgid "%d: [\"%.*s\"] not in array `%s'\n"
-msgstr "delete: el índice `%s' no está en la matriz `%s'"
+msgstr "%d:[\"%.*s\"] no está en la matriz «%s»\n"
 
 #: debug.c:1767
-#, fuzzy
 msgid "attempt to use scalar value as array"
-msgstr "se intentó usar un valor escalar como una matriz"
+msgstr "trata emplear un valor escalar como una matriz"
 
 #: debug.c:1858
 #, c-format
 msgid "Watchpoint %d deleted because parameter is out of scope.\n"
-msgstr ""
+msgstr "Punto vigía %d borrado porque parámetro está fuera del visor.\n"
 
 #: debug.c:1869
 #, c-format
 msgid "Display %d deleted because parameter is out of scope.\n"
-msgstr ""
+msgstr "Pantalla %d eliminada porque parámetro está fuera del visor.\n"
 
 #: debug.c:1902
-#, fuzzy, c-format
+#, c-format
 msgid " in file `%s', line %d\n"
-msgstr "error interno: fichero `%s', línea %d\n"
+msgstr " en fichero «%s», línea %d\n"
 
 #: debug.c:1923
 #, c-format
 msgid " at `%s':%d"
-msgstr ""
+msgstr " en «%s»:%d"
 
 #: debug.c:1939 debug.c:2002
 #, c-format
 msgid "#%ld\tin "
-msgstr ""
+msgstr "#%ld    en "
 
 #: debug.c:1976
 #, c-format
 msgid "More stack frames follow ...\n"
-msgstr ""
+msgstr "Más pilas de marcos continuan …\n"
 
 #: debug.c:2019
-#, fuzzy
 msgid "invalid frame number"
-msgstr "Final de rango inválido"
+msgstr "número de marco inválido"
 
 #: debug.c:2202
 #, c-format
 msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d"
-msgstr ""
+msgstr "Nota: punto ruptura %d (activado, ignore siguiente %ld puntos), 
también establece en %s:%d"
 
 #: debug.c:2209
 #, c-format
 msgid "Note: breakpoint %d (enabled), also set at %s:%d"
-msgstr ""
+msgstr "Nota: punto de ruptura %d (activado), también establce en %s:%d"
 
 #: debug.c:2216
 #, c-format
 msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d"
-msgstr ""
+msgstr "Nota: punto ruptura %d (desactivado, ignore siguiente %ld punto), 
también establece en %s:%d"
 
 #: debug.c:2223
 #, c-format
 msgid "Note: breakpoint %d (disabled), also set at %s:%d"
-msgstr ""
+msgstr "Nota: punto de ruptura %d (desactivado), también establce en %s:%d"
 
 #: debug.c:2240
-#, fuzzy, c-format
+#, c-format
 msgid "Breakpoint %d set at file `%s', line %d\n"
-msgstr "error interno: fichero `%s', línea %d\n"
+msgstr "Punto de ruptura %d establece un fichero «%s», línea %d\n"
 
 #: debug.c:2342
 #, c-format
 msgid "Can't set breakpoint in file `%s'\n"
-msgstr ""
+msgstr "No puede establecer punto de ruptura en el fichero «%s»\n"
 
 #: debug.c:2371 debug.c:2494 debug.c:3356
-#, fuzzy, c-format
+#, c-format
 msgid "line number %d in file `%s' out of range"
-msgstr "exp: el argumento %g está fuera de rango"
+msgstr "número lineal %d en el fichero «%s» fuera de rango"
 
 #: debug.c:2375
 #, c-format
 msgid "Can't find rule!!!\n"
-msgstr ""
+msgstr "¡¡¡No puede encontrar regla!!!\n"
 
 #: debug.c:2377
 #, c-format
 msgid "Can't set breakpoint at `%s':%d\n"
-msgstr ""
+msgstr "No puede establecer punto de ruptura en «%s»: %d\n"
 
 #: debug.c:2389
 #, c-format
 msgid "Can't set breakpoint in function `%s'\n"
-msgstr ""
+msgstr "No puede establecer punto de ruptura en la función «%s»\n"
 
 #: debug.c:2405
 #, c-format
 msgid "breakpoint %d set at file `%s', line %d is unconditional\n"
-msgstr ""
+msgstr "punto de ruptura %d establece un fichero «%s», línea %d es 
incondicional\n"
 
 #: debug.c:2510 debug.c:2532
 #, c-format
 msgid "Deleted breakpoint %d"
-msgstr ""
+msgstr "Punto de ruptura borrado %d"
 
 #: debug.c:2516
 #, c-format
 msgid "No breakpoint(s) at entry to function `%s'\n"
-msgstr ""
+msgstr "Sin punto de ruptura(s) en asiento a función «%s»\n"
 
 #: debug.c:2543
-#, fuzzy, c-format
+#, c-format
 msgid "No breakpoint at file `%s', line #%d\n"
-msgstr "error interno: fichero `%s', línea %d\n"
+msgstr "Sin punto de ruptura en fichero «%s», línea #%d\n"
 
 #: debug.c:2598 debug.c:2639 debug.c:2659 debug.c:2702
 msgid "invalid breakpoint number"
-msgstr ""
+msgstr "número de punto de ruptura inválido"
 
 #: debug.c:2614
 msgid "Delete all breakpoints? (y or n) "
-msgstr ""
+msgstr "¿Borro todos los puntos de ruptura? (s o n) "
 
 #: debug.c:2615 debug.c:2929 debug.c:2982
 msgid "y"
-msgstr ""
+msgstr "s"
 
 #: debug.c:2664
 #, c-format
 msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n"
-msgstr ""
+msgstr "Ignorará siguiente %ld cruzado de punto de ruptura %d.\n"
 
 #: debug.c:2668
 #, c-format
 msgid "Will stop next time breakpoint %d is reached.\n"
-msgstr ""
+msgstr "Detendrá siguiente tiempo de ruptura %d es alcanzado.\n"
 
 #: debug.c:2785
 #, c-format
 msgid "Can only debug programs provided with the `-f' option.\n"
-msgstr ""
+msgstr "Puede solo depurar programas proporcionados con la opción `-f'.\n"
 
 #: debug.c:2914
 #, c-format
 msgid "Failed to restart debugger"
-msgstr ""
+msgstr "Fallado al reiniciar depurador"
 
 #: debug.c:2928
 msgid "Program already running. Restart from beginning (y/n)? "
-msgstr ""
+msgstr "Programa ya ejecutando. ¿Reiniciar desde el principio (s/n)? "
 
 #: debug.c:2932
 #, c-format
 msgid "Program not restarted\n"
-msgstr ""
+msgstr "Programa no reiniciado\n"
 
 #: debug.c:2942
 #, c-format
 msgid "error: cannot restart, operation not allowed\n"
-msgstr ""
+msgstr "error: no puede reiniciar, operación no permitida\n"
 
 #: debug.c:2948
 #, c-format
 msgid "error (%s): cannot restart, ignoring rest of the commands\n"
-msgstr ""
+msgstr "error (%s): no puede reiniciar, ignorando resto de las órdenes\n"
 
 #: debug.c:2956
 #, c-format
 msgid "Starting program: \n"
-msgstr ""
+msgstr "Programa iniciado: \n"
 
 #: debug.c:2966
 #, c-format
 msgid "Program exited abnormally with exit value: %d\n"
-msgstr ""
+msgstr "Programa terminado abnormalmente con valor de salida: %d\n"
 
 #: debug.c:2967
 #, c-format
 msgid "Program exited normally with exit value: %d\n"
-msgstr ""
+msgstr "Programa terminado normalmente con valor de salida: %d\n"
 
 #: debug.c:2981
 msgid "The program is running. Exit anyway (y/n)? "
-msgstr ""
+msgstr "El programa está ejecutando. ¿Sale de todas formas (s/n)? "
 
 #: debug.c:3016
 #, c-format
 msgid "Not stopped at any breakpoint; argument ignored.\n"
-msgstr ""
+msgstr "No detenido en cualquier punto de ruptura; argumento ignorado.\n"
 
 #: debug.c:3021
 #, c-format
 msgid "invalid breakpoint number %d."
-msgstr ""
+msgstr "número de punto de ruptura inválido %d."
 
 #: debug.c:3026
 #, c-format
 msgid "Will ignore next %ld crossings of breakpoint %d.\n"
-msgstr ""
+msgstr "Ignorará siguientes %ld cruzados de puntos de ruptura %d.\n"
 
 #: debug.c:3213
 #, c-format
 msgid "'finish' not meaningful in the outermost frame main()\n"
-msgstr ""
+msgstr "'finish' no significado dentro del marco externo main()\n"
 
 #: debug.c:3218
 #, c-format
 msgid "Run till return from "
-msgstr ""
+msgstr "Ejecutar hasta devolver desde "
 
 #: debug.c:3261
 #, c-format
 msgid "'return' not meaningful in the outermost frame main()\n"
-msgstr ""
+msgstr "'retorno' no significativo en el marco externo main()\n"
 
 #: debug.c:3375
 #, c-format
 msgid "Can't find specified location in function `%s'\n"
-msgstr ""
+msgstr "No puede encontrar localicación dentro de función `%s'\n"
 
 #: debug.c:3383
-#, fuzzy, c-format
+#, c-format
 msgid "invalid source line %d in file `%s'"
-msgstr "ya se incluyó el fichero fuente `%s'"
+msgstr "línea %d de fuente inválida en el fichero «%s»"
 
 #: debug.c:3398
 #, c-format
 msgid "Can't find specified location %d in file `%s'\n"
-msgstr ""
+msgstr "No puede encontrar localicación %d especificada en el ficheor 
«%s»\n"
 
 #: debug.c:3430
-#, fuzzy, c-format
+#, c-format
 msgid "element not in array\n"
-msgstr "delete: el índice `%s' no está en la matriz `%s'"
+msgstr "elemento no dentro de matriz\n"
 
 #: debug.c:3430
 #, c-format
 msgid "untyped variable\n"
-msgstr ""
+msgstr "variable no tipada\n"
 
 #: debug.c:3472
 #, c-format
 msgid "Stopping in %s ...\n"
-msgstr ""
+msgstr "Deteniendo en %s …\n"
 
 #: debug.c:3549
 #, c-format
 msgid "'finish' not meaningful with non-local jump '%s'\n"
-msgstr ""
+msgstr "'terminación' no significante con omisión no local «%s»\n"
 
 #: debug.c:3556
 #, c-format
 msgid "'until' not meaningful with non-local jump '%s'\n"
-msgstr ""
+msgstr "'hasta' no significante con omisión no local «%s»\n"
 
 #: debug.c:4237
 msgid "\t------[Enter] to continue or q [Enter] to quit------"
-msgstr ""
+msgstr "\t---[Intro] para continuar o q [Intro] para quitar---"
 
 #: debug.c:4238
 msgid "q"
-msgstr ""
+msgstr "q"
 
 #: debug.c:5054
-#, fuzzy, c-format
+#, c-format
 msgid "[\"%.*s\"] not in array `%s'"
-msgstr "delete: el índice `%s' no está en la matriz `%s'"
+msgstr "[«%.*s»] no dentro de matriz «%s»"
 
 #: debug.c:5260
 #, c-format
 msgid "sending output to stdout\n"
-msgstr ""
+msgstr "enviando salida a stdout\n"
 
 #: debug.c:5300
 msgid "invalid number"
-msgstr ""
+msgstr "número inválido"
 
 #: debug.c:5434
-#, fuzzy, c-format
+#, c-format
 msgid "`%s' not allowed in current context; statement ignored"
-msgstr "`exit' no se puede llamar en el contexto actual"
+msgstr "`%s' no permitido en contexto actual; declaración ignorada"
 
 #: debug.c:5442
-#, fuzzy
 msgid "`return' not allowed in current context; statement ignored"
-msgstr "`exit' no se puede llamar en el contexto actual"
+msgstr "`return' no permitido en contexto actual; declaración ignorado"
 
 #: debug.c:5657
-#, fuzzy, c-format
+#, c-format
 msgid "No symbol `%s' in current context"
-msgstr "se intentó usar la matriz `%s' en un contexto escalar"
+msgstr "Ningún símbolo «%s» en contexto actual"
 
 #: eval.c:399
 #, c-format
@@ -1944,7 +1872,7 @@ msgstr "código de operación %d desconocido"
 #: eval.c:421
 #, c-format
 msgid "opcode %s not an operator or keyword"
-msgstr "el código de operación %s no es un operador o una palabra clave"
+msgstr "código operacional %s no es un operador o una palabra clave"
 
 #: eval.c:479
 msgid "buffer overflow in genflags2str"
@@ -1972,12 +1900,12 @@ msgstr "`BINMODE' es una extensión de gawk"
 #: eval.c:787
 #, c-format
 msgid "BINMODE value `%s' is invalid, treated as 3"
-msgstr "el valor BINMODE `%s' es inválido; se trata como 3"
+msgstr "BINMODE evaluado «%s» es inválido, tratado como 3"
 
 #: eval.c:910
 #, c-format
 msgid "bad `%sFMT' specification `%s'"
-msgstr "especificación `%sFMT' `%s' errónea"
+msgstr "especificación «%sFMT» equivocada «%s»"
 
 #: eval.c:978
 msgid "turning off `--lint' due to assignment to `LINT'"
@@ -1986,25 +1914,25 @@ msgstr "se desactiva `--lint' debido a una asignación 
a `LINT'"
 #: eval.c:1156
 #, c-format
 msgid "reference to uninitialized argument `%s'"
-msgstr "referencia al argumento sin inicializar `%s'"
+msgstr "referencia al argumento sin inicializar «%s»"
 
 #: eval.c:1157
 #, c-format
 msgid "reference to uninitialized variable `%s'"
-msgstr "referencia a la variable sin inicializar `%s'"
+msgstr "referencia a la variable sin inicializar «%s»"
 
 #: eval.c:1175
 msgid "attempt to field reference from non-numeric value"
-msgstr "se intentó una referencia de campo desde un valor que no es númerico"
+msgstr "trata una referencia de campo desde un valor que no es númerico"
 
 #: eval.c:1177
 msgid "attempt to field reference from null string"
-msgstr "se intentó una referencia de campo desde una cadena nula"
+msgstr "trata una referencia de campo desde una cadena nula"
 
 #: eval.c:1185
 #, c-format
 msgid "attempt to access field %ld"
-msgstr "se intentó acceder al campo %ld"
+msgstr "trata acceder al campo %ld"
 
 #: eval.c:1194
 #, c-format
@@ -2014,413 +1942,386 @@ msgstr "referencia al campo sin inicializar `$%ld'"
 #: eval.c:1280
 #, c-format
 msgid "function `%s' called with more arguments than declared"
-msgstr "se llamó a la función `%s' con más argumentos de los declarados"
+msgstr "se llamó a la función «%s» con más argumentos de los declarados"
 
 #: eval.c:1487
 #, c-format
 msgid "unwind_stack: unexpected type `%s'"
-msgstr "unwind_stack: tipo `%s' inesperado"
+msgstr "unwind_stack: tipo inesperado «%s»"
 
 #: eval.c:1580
 msgid "division by zero attempted in `/='"
-msgstr "se intentó una división por cero en `/='"
+msgstr "se intentó una división entre cero en `/='"
 
 #: eval.c:1587
 #, c-format
 msgid "division by zero attempted in `%%='"
-msgstr "se intentó una división por cero en `%%='"
+msgstr "se intentó una división entre cero en `%%='"
 
 #: ext.c:51
 msgid "extensions are not allowed in sandbox mode"
 msgstr "no se permiten las extensiones en modo sandbox"
 
 #: ext.c:54
-#, fuzzy
 msgid "-l / @load are gawk extensions"
-msgstr "@include es una extensión de gawk"
+msgstr "-l / @carga son extensiones gawk"
 
 #: ext.c:57
 msgid "load_ext: received NULL lib_name"
-msgstr ""
+msgstr "load_ext: recibido lib_name NULO"
 
 #: ext.c:60
-#, fuzzy, c-format
+#, c-format
 msgid "load_ext: cannot open library `%s' (%s)\n"
-msgstr "fatal: extension: no se puede abrir `%s' (%s)\n"
+msgstr "load_ext: no se puede abrir biblioteca «%s» (%s)\n"
 
 #: ext.c:66
-#, fuzzy, c-format
-msgid ""
-"load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n"
-msgstr ""
-"fatal: extension: la biblioteca `%s': no define "
-"`plugin_is_GPL_compatible' (%s)\n"
+#, c-format
+msgid "load_ext: library `%s': does not define `plugin_is_GPL_compatible' 
(%s)\n"
+msgstr "load_ext: la biblioteca «%s»: no define `plugin_is_GPL_compatible' 
(%s)\n"
 
 #: ext.c:72
-#, fuzzy, c-format
+#, c-format
 msgid "load_ext: library `%s': cannot call function `%s' (%s)\n"
-msgstr ""
-"fatal: extension: la biblioteca `%s': no puede llamar a la función `"
-"%s' (%s)\n"
+msgstr "load_ext: biblioteca «%s»: no puede llamar a la función «%s» 
(%s)\n"
 
 #: ext.c:76
 #, c-format
 msgid "load_ext: library `%s' initialization routine `%s' failed\n"
-msgstr ""
+msgstr "load_ext: inicialización de biblioteca «%s» de rutina «%s» 
fallada\n"
 
 #: ext.c:110
-#, fuzzy
 msgid "make_builtin: missing function name"
-msgstr "extension: falta el nombre de la función"
+msgstr "make_builtin: falta nombre de función"
 
 #: ext.c:120
-#, fuzzy, c-format
+#, c-format
 msgid "make_builtin: can't redefine function `%s'"
-msgstr "extension: no se puede redefinir la función `%s'"
+msgstr "make_builtin: no puede redefinir función «%s»"
 
 #: ext.c:124
-#, fuzzy, c-format
+#, c-format
 msgid "make_builtin: function `%s' already defined"
-msgstr "extension: la función `%s' ya está definida"
+msgstr "make_builtin: función «%s» ya definida"
 
 #: ext.c:128
-#, fuzzy, c-format
+#, c-format
 msgid "make_builtin: function name `%s' previously defined"
-msgstr "extension: el nombre de función `%s' se definió previamente"
+msgstr "make_builtin: nombre de función «%s» anteriormente definida"
 
 #: ext.c:130
-#, fuzzy, c-format
+#, c-format
 msgid "make_builtin: can't use gawk built-in `%s' as function name"
-msgstr ""
-"extension: no se puede utilizar la orden interna de gawk `%s' como nombre de "
-"función"
+msgstr "make_builtin: no se puede utilizar la orden interna de gawk «%s» 
como nombre de función"
 
 #: ext.c:133
 #, c-format
 msgid "make_builtin: negative argument count for function `%s'"
-msgstr "make_builtin: cuenta de argumento negativa para la función `%s'"
+msgstr "make_builtin: cuenta de argumento negativa para la función «%s»"
 
 #: ext.c:209
 #, c-format
 msgid "function `%s': argument #%d: attempt to use scalar as an array"
-msgstr ""
-"función `%s': argumento #%d: se intentó usar un escalar como una matriz"
+msgstr "función «%s»: argumento #%d: se intentó usar un escalar como una 
matriz"
 
 #: ext.c:213
 #, c-format
 msgid "function `%s': argument #%d: attempt to use array as a scalar"
-msgstr ""
-"función `%s': argumento #%d: se intentó usar una matriz como un escalar"
+msgstr "función «%s»: argumento #%d: se intentó usar una matriz como un 
escalar"
 
 #: ext.c:227
 msgid "dynamic loading of library not supported"
-msgstr ""
+msgstr "la carga dinámica de biblioteca no compatible"
 
 #: extension/filefuncs.c:442
 #, c-format
 msgid "stat: unable to read symbolic link `%s'"
-msgstr ""
+msgstr "estado: no se puede leer el enlace simbólico «%s»"
 
 #: extension/filefuncs.c:476 extension/filefuncs.c:520
-#, fuzzy
 msgid "stat: bad parameters"
-msgstr "%s: es un parámetro\n"
+msgstr "estado: parámetros equivocados"
 
 #: extension/filefuncs.c:584
-#, fuzzy, c-format
+#, c-format
 msgid "fts init: could not create variable %s"
-msgstr "index: el segundo argumento recibido no es una cadena"
+msgstr "fts init: no pudo crear la variable %s"
 
 #: extension/filefuncs.c:605
-#, fuzzy
 msgid "fts is not supported on this system"
-msgstr "`%s' no se admite en el awk antiguo"
+msgstr "fts no es admitida en este sistema"
 
 #: extension/filefuncs.c:624
 msgid "fill_stat_element: could not create array"
-msgstr ""
+msgstr "fill_stat_element: no pudo crear matríz"
 
 #: extension/filefuncs.c:633
 msgid "fill_stat_element: could not set element"
-msgstr ""
+msgstr "fill_stat_element: no pudo establecer elemento"
 
 #: extension/filefuncs.c:648
-#, fuzzy
 msgid "fill_path_element: could not set element"
-msgstr "index: el segundo argumento recibido no es una cadena"
+msgstr "fill_path_element: no pudo establecer elemento"
 
 #: extension/filefuncs.c:664
 msgid "fill_error_element: could not set element"
-msgstr ""
+msgstr "fill_error_element: no pudo establecer elemento"
 
 #: extension/filefuncs.c:711 extension/filefuncs.c:758
 msgid "fts-process: could not create array"
-msgstr ""
+msgstr "fts-process: no pudo crear matríz"
 
 #: extension/filefuncs.c:721 extension/filefuncs.c:768
 #: extension/filefuncs.c:786
-#, fuzzy
 msgid "fts-process: could not set element"
-msgstr "index: el segundo argumento recibido no es una cadena"
+msgstr "fts-process: no pudo establecer elemento"
 
 #: extension/filefuncs.c:835
-#, fuzzy
 msgid "fts: called with incorrect number of arguments, expecting 3"
-msgstr "sqrt: se llamó con el argumento negativo %g"
+msgstr "fts: llamado con el número incorrecto de argumento, esperando 3"
 
 #: extension/filefuncs.c:838
-#, fuzzy
 msgid "fts: bad first parameter"
-msgstr "%s: es un parámetro\n"
+msgstr "fts: primer parámetro equivocado"
 
 #: extension/filefuncs.c:844
-#, fuzzy
 msgid "fts: bad second parameter"
-msgstr "%s: es un parámetro\n"
+msgstr "fts: segundo parámetro equivocado"
 
 #: extension/filefuncs.c:850
-#, fuzzy
 msgid "fts: bad third parameter"
-msgstr "%s: es un parámetro\n"
+msgstr "fts: tercer parámetro equivocado"
 
 #: extension/filefuncs.c:857
-#, fuzzy
 msgid "fts: could not flatten array\n"
-msgstr "`%s' no es un nombre de variable legal"
+msgstr "fts: no pudo determinar matríz\n"
 
 #: extension/filefuncs.c:875
 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah."
-msgstr ""
+msgstr "fts: ignorando seguimiento de marca FTS_NOSTAT."
 
 #: extension/filefuncs.c:891
 msgid "fts: clear_array() failed\n"
-msgstr ""
+msgstr "fts: fts_array() fallado\n"
 
 #: extension/fnmatch.c:120
-#, fuzzy
 msgid "fnmatch: could not get first argument"
-msgstr "strftime: el primer argumento recibido no es una cadena"
+msgstr "fnmatch: no pudo obtener el primer argumento"
 
 #: extension/fnmatch.c:125
-#, fuzzy
 msgid "fnmatch: could not get second argument"
-msgstr "index: el segundo argumento recibido no es una cadena"
+msgstr "fnmatch: no pudo obtener el segundo argumento"
 
 #: extension/fnmatch.c:130
 msgid "fnmatch: could not get third argument"
-msgstr ""
+msgstr "fnmatch: no pudo obtener el tercer argumento"
 
 #: extension/fnmatch.c:143
 msgid "fnmatch is not implemented on this system\n"
-msgstr ""
+msgstr "fnmatch no está implementado en este sistema\n"
 
 #: extension/fnmatch.c:175
 msgid "fnmatch init: could not add FNM_NOMATCH variable"
-msgstr ""
+msgstr "fnmatch init: variable FNM_NOMATCHno no pudo añadirse"
 
 #: extension/fnmatch.c:185
 #, c-format
 msgid "fnmatch init: could not set array element %s"
-msgstr ""
+msgstr "fnmatch init: no pudo establecer elemento matricial %s"
 
 #: extension/fnmatch.c:195
 msgid "fnmatch init: could not install FNM array"
-msgstr ""
+msgstr "fnmatch init: no pudo instalar matríz FNM"
 
 #: extension/fork.c:91
 msgid "fork: PROCINFO is not an array!"
-msgstr ""
+msgstr "fork: ¡PROCINFO no es una matriz!"
 
 #: extension/inplace.c:131
 msgid "inplace_begin: in-place editing already active"
-msgstr ""
+msgstr "inplace_end: edición interna ya activa"
 
 #: extension/inplace.c:134
 #, c-format
 msgid "inplace_begin: expects 2 arguments but called with %d"
-msgstr ""
+msgstr "inplace_begin: espera 2 argumentos pero llamó con %d"
 
 #: extension/inplace.c:137
 msgid "inplace_begin: cannot retrieve 1st argument as a string filename"
-msgstr ""
+msgstr "inplace_begin: no puede obtener 1º argumento como un nombre de 
fichero encadenado"
 
 #: extension/inplace.c:145
 #, c-format
 msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'"
-msgstr ""
+msgstr "inplace_begin: desactivando edición en lugar para NOMBREFICHERO 
inválido «%s»"
 
 #: extension/inplace.c:152
-#, fuzzy, c-format
+#, c-format
 msgid "inplace_begin: Cannot stat `%s' (%s)"
-msgstr "fatal: extension: no se puede abrir `%s' (%s)\n"
+msgstr "inplace_begin: no se puede declarar «%s» (%s)"
 
 #: extension/inplace.c:159
-#, fuzzy, c-format
+#, c-format
 msgid "inplace_begin: `%s' is not a regular file"
-msgstr "`%s' no es un nombre de variable legal"
+msgstr "inplace_begin: `%s' no es un fichero regular"
 
 #: extension/inplace.c:170
 #, c-format
 msgid "inplace_begin: mkstemp(`%s') failed (%s)"
-msgstr ""
+msgstr "inplace_begin: mkstemp(`%s') fallado (%s)"
 
 #: extension/inplace.c:182
-#, fuzzy, c-format
+#, c-format
 msgid "inplace_begin: chmod failed (%s)"
-msgstr "%s: falló close (%s)"
+msgstr "inplace_begin: chmod fallado (%s)"
 
 #: extension/inplace.c:189
 #, c-format
 msgid "inplace_begin: dup(stdout) failed (%s)"
-msgstr ""
+msgstr "inplace_begin: dup(stdout) fallado (%s)"
 
 #: extension/inplace.c:192
 #, c-format
 msgid "inplace_begin: dup2(%d, stdout) failed (%s)"
-msgstr ""
+msgstr "inplace_begin: dup2(%d, stdout) fallado (%s)"
 
 #: extension/inplace.c:195
-#, fuzzy, c-format
+#, c-format
 msgid "inplace_begin: close(%d) failed (%s)"
-msgstr "%s: falló close (%s)"
+msgstr "inplace_begin: cierre(%d) fallado (%s)"
 
 #: extension/inplace.c:211
 #, c-format
 msgid "inplace_end: expects 2 arguments but called with %d"
-msgstr ""
+msgstr "inplace_end: espera 2 argumentos pero llamó con %d"
 
 #: extension/inplace.c:214
 msgid "inplace_end: cannot retrieve 1st argument as a string filename"
-msgstr ""
+msgstr "inplace_end: no puede obtener 1º argumento como un nombre de fichero 
de cadena"
 
 #: extension/inplace.c:221
 msgid "inplace_end: in-place editing not active"
-msgstr ""
+msgstr "inplace_end: edición interna no activa"
 
 #: extension/inplace.c:227
 #, c-format
 msgid "inplace_end: dup2(%d, stdout) failed (%s)"
-msgstr ""
+msgstr "inplace_end: dup2(%d, stdout) fallado (%s)"
 
 #: extension/inplace.c:230
-#, fuzzy, c-format
+#, c-format
 msgid "inplace_end: close(%d) failed (%s)"
-msgstr "%s: falló close (%s)"
+msgstr "inplace_end: cierre(%d) fallado (%s)"
 
 #: extension/inplace.c:234
 #, c-format
 msgid "inplace_end: fsetpos(stdout) failed (%s)"
-msgstr ""
+msgstr "inplace_end: fsetpos(stdout) fallado (%s)"
 
 #: extension/inplace.c:247
-#, fuzzy, c-format
+#, c-format
 msgid "inplace_end: link(`%s', `%s') failed (%s)"
-msgstr "falló la limpieza de la tubería de `%s' (%s)."
+msgstr "inplace_end: enlace(`%s', `%s') fallado (%s)"
 
 #: extension/inplace.c:257
-#, fuzzy, c-format
+#, c-format
 msgid "inplace_end: rename(`%s', `%s') failed (%s)"
-msgstr "falló al cerrar el df %d (`%s') (%s)"
+msgstr "inplace_end: renombrar(`%s', `%s') fallado (%s)"
 
 #: extension/ordchr.c:71
-#, fuzzy
 msgid "ord: called with inappropriate argument(s)"
-msgstr "sqrt: se llamó con el argumento negativo %g"
+msgstr "ord: llamado con argumento(s) inapropiado(s)"
 
 #: extension/ordchr.c:98
-#, fuzzy
 msgid "chr: called with inappropriate argument(s)"
-msgstr "sqrt: se llamó con el argumento negativo %g"
+msgstr "chr: llamado con argumento(s) inapropiados"
 
 #: extension/readdir.c:273
 #, c-format
 msgid "dir_take_control_of: opendir/fdopendir failed: %s"
-msgstr ""
+msgstr "dir_take_control_of: abrirdir/fdopendir fallado: %s"
 
 #: extension/readfile.c:131
-#, fuzzy
 msgid "readfile: called with wrong kind of argument"
-msgstr "sqrt: se llamó con el argumento negativo %g"
+msgstr "readfile: se llamó con familia equivocada de argumento"
 
 #: extension/revoutput.c:127
 msgid "revoutput: could not initialize REVOUT variable"
-msgstr ""
+msgstr "revoutput: no pudo inicializar variable REVOUT"
 
 #: extension/rwarray.c:119 extension/rwarray0.c:113
-#, fuzzy, c-format
+#, c-format
 msgid "do_writea: argument 0 is not a string\n"
-msgstr "exp: el argumento %g está fuera de rango"
+msgstr "do_writea: argumento 0 no es una cadena\n"
 
 #: extension/rwarray.c:125 extension/rwarray0.c:119
-#, fuzzy, c-format
+#, c-format
 msgid "do_writea: argument 1 is not an array\n"
-msgstr "split: el cuarto argumento no es una matriz"
+msgstr "do_writea: argumento 1 no es una matriz\n"
 
 #: extension/rwarray.c:172 extension/rwarray0.c:166
 #, c-format
 msgid "write_array: could not flatten array\n"
-msgstr ""
+msgstr "write_array: no pudo determinar matríz\n"
 
 #: extension/rwarray.c:188 extension/rwarray0.c:180
 #, c-format
 msgid "write_array: could not release flattened array\n"
-msgstr ""
+msgstr "write_array: no pudo publicar matríz aplanada\n"
 
 #: extension/rwarray.c:255
-#, fuzzy, c-format
+#, c-format
 msgid "array value has unknown type %d"
-msgstr "tipo de nodo %d desconocido"
+msgstr "valor matiz tiene tipo %d desconocido"
 
 #: extension/rwarray.c:292 extension/rwarray0.c:266
-#, fuzzy, c-format
+#, c-format
 msgid "do_reada: argument 0 is not a string\n"
-msgstr "exp: el argumento %g está fuera de rango"
+msgstr "do_reada: argumento 0 no es una cadena\n"
 
 #: extension/rwarray.c:298 extension/rwarray0.c:272
-#, fuzzy, c-format
+#, c-format
 msgid "do_reada: argument 1 is not an array\n"
-msgstr "match: el tercer argumento no es una matriz"
+msgstr "do_reada: argumento 1 no es una matriz\n"
 
 #: extension/rwarray.c:342 extension/rwarray0.c:316
 #, c-format
 msgid "do_reada: clear_array failed\n"
-msgstr ""
+msgstr "do_reada: clear_arrayel fallado\n"
 
 #: extension/rwarray.c:379 extension/rwarray0.c:352
 #, c-format
 msgid "read_array: set_array_element failed\n"
-msgstr ""
+msgstr "read_array: elemento set_array_element fallado\n"
 
 #: extension/rwarray.c:489
 #, c-format
 msgid "treating recovered value with unknown type code %d as a string"
-msgstr ""
+msgstr "tratando recuperar valor con código tipo %d desconocido como una 
cadena textual"
 
 #: extension/time.c:141
 msgid "gettimeofday: not supported on this platform"
-msgstr ""
+msgstr "no es compatible en esta plataforma"
 
 #: extension/time.c:162
-#, fuzzy
 msgid "sleep: missing required numeric argument"
-msgstr "exp: se recibió un argumento que no es númerico"
+msgstr "sleep: argumento numérico requerido faltante"
 
 #: extension/time.c:168
-#, fuzzy
 msgid "sleep: argument is negative"
-msgstr "exp: el argumento %g está fuera de rango"
+msgstr "sleep: argumento es negativo"
 
 #: extension/time.c:202
 msgid "sleep: not supported on this platform"
-msgstr ""
+msgstr "sleep: no compatible en esta plataforma"
 
 #: field.c:284
 msgid "input record too large"
-msgstr ""
+msgstr "registro entrante demadiado grande"
 
 #: field.c:393
 msgid "NF set to negative value"
-msgstr "se definió NF con un valor negativo"
+msgstr "NF definido a valor negativo"
 
 #: field.c:961 field.c:968
 msgid "split: fourth argument is a gawk extension"
@@ -2436,25 +2337,19 @@ msgstr "split: el segundo argumento no es una matriz"
 
 #: field.c:979
 msgid "split: cannot use the same array for second and fourth args"
-msgstr ""
-"split: no se puede usar la misma matriz para el segundo y cuarto argumentos"
+msgstr "split: no se puede usar la misma matriz para el segundo y cuarto 
argumentos"
 
 #: field.c:984
 msgid "split: cannot use a subarray of second arg for fourth arg"
-msgstr ""
-"split: no se puede usar una submatriz del segundo argumento para el cuarto "
-"argumento"
+msgstr "split: no se puede usar una submatriz del segundo argumento para el 
cuarto argumento"
 
 #: field.c:987
 msgid "split: cannot use a subarray of fourth arg for second arg"
-msgstr ""
-"split: no se puede usar una submatriz del cuarto argumento para el segundo "
-"argumento"
+msgstr "split: no se puede usar una submatriz del cuarto argumento para el 
segundo argumento"
 
 #: field.c:1021
 msgid "split: null string for third arg is a gawk extension"
-msgstr ""
-"split: la cadena nula para el tercer argumento es una extensión de gawk"
+msgstr "split: la cadena nula para el tercer argumento es una extensión de 
gawk"
 
 #: field.c:1058
 msgid "patsplit: fourth argument is not an array"
@@ -2470,21 +2365,15 @@ msgstr "patsplit: el tercer argumento no debe ser nulo"
 
 #: field.c:1076
 msgid "patsplit: cannot use the same array for second and fourth args"
-msgstr ""
-"patsplit: no se puede usar la misma matriz para el segundo y cuarto "
-"argumentos"
+msgstr "patsplit: no se puede usar la misma matriz para segundo y cuarto 
argumentos"
 
 #: field.c:1081
 msgid "patsplit: cannot use a subarray of second arg for fourth arg"
-msgstr ""
-"patsplit: no se puede usar una submatriz del segundo argumento para el "
-"cuarto argumento"
+msgstr "patsplit: no se puede usar una submatriz del segundo argumento para el 
cuarto argumento"
 
 #: field.c:1084
 msgid "patsplit: cannot use a subarray of fourth arg for second arg"
-msgstr ""
-"patsplit: no se puede usar una submatriz del cuarto argumento para el "
-"segundo argumento"
+msgstr "patsplit: no se puede usar una submatriz del cuarto argumento para el 
segundo argumento"
 
 #: field.c:1134
 msgid "`FIELDWIDTHS' is a gawk extension"
@@ -2492,12 +2381,12 @@ msgstr "`FIELDWIDTHS' es una extensión gawk"
 
 #: field.c:1203
 msgid "`*' must be the last designator in FIELDWIDTHS"
-msgstr ""
+msgstr "`*' debe ser el último designador en FIELDWIDTHS"
 
 #: field.c:1224
-#, fuzzy, c-format
+#, c-format
 msgid "invalid FIELDWIDTHS value, for field %d, near `%s'"
-msgstr "valor de FIELDWIDTHS inválido, cerca de `%s'"
+msgstr "valor de FIELDWIDTHS inválido, para campo %d, cercano a «%s»"
 
 #: field.c:1297
 msgid "null string for `FS' is a gawk extension"
@@ -2513,112 +2402,103 @@ msgstr "`FPAT' es una extensión de gawk"
 
 #: gawkapi.c:160
 msgid "awk_value_to_node: received null retval"
-msgstr ""
+msgstr "awk_value_to_node: recibió retval nulo"
 
 #: gawkapi.c:177 gawkapi.c:188
 msgid "awk_value_to_node: not in MPFR mode"
-msgstr ""
+msgstr "awk_value_to_node: no dentro del modo MPFR"
 
 #: gawkapi.c:182 gawkapi.c:193
 msgid "awk_value_to_node: MPFR not supported"
-msgstr ""
+msgstr "awk_value_to_node: MPFR incompatible"
 
 #: gawkapi.c:197
 #, c-format
 msgid "awk_value_to_node: invalid number type `%d'"
-msgstr ""
+msgstr "awk_value_to_node: tipo numérico inválido «%d»"
 
 #: gawkapi.c:520
 #, c-format
-msgid ""
-"node_to_awk_value: detected invalid numeric flags combination `%s'; please "
-"file a bug report."
-msgstr ""
+msgid "node_to_awk_value: detected invalid numeric flags combination `%s'; 
please file a bug report."
+msgstr "node_to_value: detectado marcas inválidas combinadas «%s»; envíe 
un reporte de defecto."
 
 #: gawkapi.c:548
 msgid "node_to_awk_value: received null node"
-msgstr ""
+msgstr "node_to_awk_value: recibido nodo nulo"
 
 #: gawkapi.c:551
 msgid "node_to_awk_value: received null val"
-msgstr ""
+msgstr "node_to_awk_value: recibido valor nulo"
 
 #: gawkapi.c:607 gawkapi.c:641 gawkapi.c:668 gawkapi.c:701
 #, c-format
-msgid ""
-"node_to_awk_value detected invalid flags combination `%s'; please file a bug "
-"report."
-msgstr ""
+msgid "node_to_awk_value detected invalid flags combination `%s'; please file 
a bug report."
+msgstr "node_to_awk_value detectadas marcas inválidas combinadas «%s»; 
envíe un reporte de defecto."
 
 #: gawkapi.c:1072
-#, fuzzy
 msgid "remove_element: received null array"
-msgstr "length: se recibió un argumento de matriz"
+msgstr "remove_element: matriz nula recibida"
 
 #: gawkapi.c:1075
 msgid "remove_element: received null subscript"
-msgstr ""
+msgstr "remove_element: subescritura nula recibida"
 
 #: gawkapi.c:1207
 #, c-format
 msgid "api_flatten_array_typed: could not convert index %d to %s\n"
-msgstr ""
+msgstr "api_flatten_array_typed: no pudo convertir índice %d a %s\n"
 
 #: gawkapi.c:1212
 #, c-format
 msgid "api_flatten_array_typed: could not convert value %d to %s\n"
-msgstr ""
+msgstr "api_flatten_array_typed: no pudo convertir valor %d a %s\n"
 
 #: gawkapi.c:1308 gawkapi.c:1324
 msgid "api_get_mpfr: MPFR not supported"
-msgstr ""
+msgstr "api_get_mpfr: MPFR no soportado"
 
 #: gawkapi.c:1355
-#, fuzzy
 msgid "cannot find end of BEGINFILE rule"
-msgstr "`next' no se puede llamar desde una regla BEGIN"
+msgstr "no puede encontrar final de regla BEGINFILE"
 
 #: gawkapi.c:1409
-#, fuzzy, c-format
+#, c-format
 msgid "cannot open unrecognized file type `%s' for `%s'"
-msgstr "no se puede abrir el fichero fuente `%s' para lectura (%s)"
+msgstr "no se puede abrir tipo de fichero no reconocido «%s» para «%s»"
 
 #: io.c:426
 #, c-format
 msgid "command line argument `%s' is a directory: skipped"
-msgstr "el argumento de la línea de órdenes `%s' es un directorio: se salta"
+msgstr "el argumento de la línea de órdenes «%s» es un directorio: se 
salta"
 
 #: io.c:429 io.c:546
 #, c-format
 msgid "cannot open file `%s' for reading (%s)"
-msgstr "no se puede abrir el fichero `%s' para lectura (%s)"
+msgstr "no se puede abrir el fichero «%s» para lectura (%s)"
 
 #: io.c:675
 #, c-format
 msgid "close of fd %d (`%s') failed (%s)"
-msgstr "falló al cerrar el df %d (`%s') (%s)"
+msgstr "cierre fallado en df %d («%s») (%s)"
 
 #: io.c:753
 msgid "redirection not allowed in sandbox mode"
 msgstr "no se permite la redirección en modo sandbox"
 
 #: io.c:787
-#, fuzzy, c-format
+#, c-format
 msgid "expression in `%s' redirection is a number"
-msgstr "la expresión en la redirección `%s' sólo tiene valor numérico"
+msgstr "expresión dentro de redirección «%s» es un número"
 
 #: io.c:791
 #, c-format
 msgid "expression for `%s' redirection has null string value"
-msgstr "la expresión para la redirección `%s' tiene un valor de cadena nula"
+msgstr "la expresión para la redirección «%s» tiene un valor de cadena 
nula"
 
 #: io.c:796
-#, fuzzy, c-format
-msgid ""
-"filename `%.*s' for `%s' redirection may be result of logical expression"
-msgstr ""
-"el fichero `%s' para la redirección `%s' puede ser resultado de una "
-"expresión lógica"
+#, c-format
+msgid "filename `%.*s' for `%s' redirection may be result of logical 
expression"
+msgstr "nombre del fichero «%.*s» para redirección «%s» quizá es un 
resultado de una expresión lógica"
 
 #: io.c:844
 #, c-format
@@ -2628,50 +2508,46 @@ msgstr "mezcla innecesaria de `>' y `>>' para el 
fichero `%.*s'"
 #: io.c:896 io.c:921
 #, c-format
 msgid "get_file cannot create pipe `%s' with fd %d"
-msgstr ""
+msgstr "get_file no puede crear una tubería «%s» con fd %d"
 
 #: io.c:911
 #, c-format
 msgid "can't open pipe `%s' for output (%s)"
-msgstr "no se puede abrir la tubería `%s' para la salida (%s)"
+msgstr "no  puede abrir la tubería «%s» para la salida (%s)"
 
 #: io.c:926
 #, c-format
 msgid "can't open pipe `%s' for input (%s)"
-msgstr "no se puede abrir la tubería `%s' para la entrada (%s)"
+msgstr "no puede abrir la tubería «%s» para la entrada (%s)"
 
 #: io.c:950
 #, c-format
-msgid ""
-"get_file socket creation not supported on this platform for `%s' with fd %d"
-msgstr ""
+msgid "get_file socket creation not supported on this platform for `%s' with 
fd %d"
+msgstr "creación de socket get_file incompatible en esta plataforma para 
«%s» con fd %d"
 
 #: io.c:961
 #, c-format
 msgid "can't open two way pipe `%s' for input/output (%s)"
-msgstr "no se puede abrir la tubería de dos vías `%s' para entrada/salida 
(%s)"
+msgstr "no puede abrir la tubería de dos vías «%s» para entrada/salida 
(%s)"
 
 #: io.c:1048
 #, c-format
 msgid "can't redirect from `%s' (%s)"
-msgstr "no se puede redirigir desde `%s' (%s)"
+msgstr "no se puede redirigir desde «%s» (%s)"
 
 #: io.c:1051
 #, c-format
 msgid "can't redirect to `%s' (%s)"
-msgstr "no se puede redirigir a `%s' (%s)"
+msgstr "no se puede redirigir a «%s» (%s)"
 
 #: io.c:1153
-msgid ""
-"reached system limit for open files: starting to multiplex file descriptors"
-msgstr ""
-"se alcanzó el límite del sistema para ficheros abiertos: comenzando a "
-"multiplexar los descriptores de fichero"
+msgid "reached system limit for open files: starting to multiplex file 
descriptors"
+msgstr "se alcanzó el límite del sistema para ficheros abiertos: comenzando 
a multiplexar los descriptores de fichero"
 
 #: io.c:1169
 #, c-format
 msgid "close of `%s' failed (%s)."
-msgstr "falló al cerrar `%s' (%s)."
+msgstr "cierre fallado de «%s» (%s)."
 
 #: io.c:1177
 msgid "too many pipes or input files open"
@@ -2688,255 +2564,244 @@ msgstr "close: `%.*s' no es un fichero abierto, 
tubería o co-proceso"
 
 #: io.c:1226
 msgid "close of redirection that was never opened"
-msgstr "se cerró una redirección que nunca se abrió"
+msgstr "cierre de redirección que nunca se abrió"
 
 #: io.c:1325
 #, c-format
 msgid "close: redirection `%s' not opened with `|&', second argument ignored"
-msgstr ""
-"close: la redirección `%s' no se abrió con `|&', se descarta el segundo "
-"argumento"
+msgstr "close: la redirección «%s» no se abrió con `|&', se descarta el 
segundo argumento"
 
 #: io.c:1342
 #, c-format
 msgid "failure status (%d) on pipe close of `%s' (%s)"
-msgstr "estado de fallo (%d) al cerrar la tubería de `%s' (%s)"
+msgstr "estado de fallo (%d) al cerrar la tubería de «%s» (%s)"
 
 #: io.c:1345
 #, c-format
 msgid "failure status (%d) on file close of `%s' (%s)"
-msgstr "estado de fallo (%d) al cerrar el fichero de `%s' (%s)"
+msgstr "estado de fallo (%d) al cerrar el fichero de «%s» (%s)"
 
 #: io.c:1365
 #, c-format
 msgid "no explicit close of socket `%s' provided"
-msgstr "no se provee el cerrado explícito del `socket' `%s'"
+msgstr "ningún cierre explícito de `socket' «%s» proporcionado"
 
 #: io.c:1368
 #, c-format
 msgid "no explicit close of co-process `%s' provided"
-msgstr "no se provee el cerrado explícito del co-proceso `%s'"
+msgstr "ningún cierre explícito de «%s» como co-proceso"
 
 #: io.c:1371
 #, c-format
 msgid "no explicit close of pipe `%s' provided"
-msgstr "no se provee el cerrado explícito del la tubería `%s'"
+msgstr "ningún cierre explícito de tubería «%s» proporcionada"
 
 #: io.c:1374
 #, c-format
 msgid "no explicit close of file `%s' provided"
-msgstr "no se provee el cerrado explícito del fichero `%s'"
+msgstr "ningún cierre explícito del fichero «%s» proporcionado"
 
 #: io.c:1411
 #, c-format
 msgid "fflush: cannot flush standard output: %s"
-msgstr ""
+msgstr "fflush: no se puede tirar salida común: %s"
 
 #: io.c:1412
 #, c-format
 msgid "fflush: cannot flush standard error: %s"
-msgstr ""
+msgstr "fflush: no se puede tirar error común: %s"
 
 #: io.c:1417 io.c:1507 main.c:653 main.c:700
 #, c-format
 msgid "error writing standard output (%s)"
-msgstr "error al escribir en la salida estándar (%s)"
+msgstr "error al escribir en la salida común (%s)"
 
 #: io.c:1418 io.c:1517 main.c:655
 #, c-format
 msgid "error writing standard error (%s)"
-msgstr "error al escribir en la salida estándar de error (%s)"
+msgstr "error al escribir en la salida común de error (%s)"
 
 #: io.c:1457
 #, c-format
 msgid "pipe flush of `%s' failed (%s)."
-msgstr "falló la limpieza de la tubería de `%s' (%s)."
+msgstr "fallado la limpieza de la tubería de «%s» (%s)."
 
 #: io.c:1460
 #, c-format
 msgid "co-process flush of pipe to `%s' failed (%s)."
-msgstr "falló la limpieza del co-proceso de la tubería a `%s' (%s)."
+msgstr "vaciado fallado del co-proceso de la tubería a «%s» (%s)."
 
 #: io.c:1463
 #, c-format
 msgid "file flush of `%s' failed (%s)."
-msgstr "falló la limpieza del fichero de `%s' (%s)."
+msgstr "fallado el vaciado del fichero de «%s» (%s)."
 
-#: io.c:1603
-#, fuzzy, c-format
+#: io.c:1590
+#, c-format
 msgid "local port %s invalid in `/inet': %s"
-msgstr "puerto local %s inválido en `/inet'"
+msgstr "puerto local %s inválido en `/inet': %s"
 
-#: io.c:1606
+#: io.c:1593
 #, c-format
 msgid "local port %s invalid in `/inet'"
 msgstr "puerto local %s inválido en `/inet'"
 
-#: io.c:1629
-#, fuzzy, c-format
+#: io.c:1616
+#, c-format
 msgid "remote host and port information (%s, %s) invalid: %s"
-msgstr "anfitrión remoto e información de puerto (%s, %s) inválidos"
+msgstr "anfitrión remoto e información de puerto (%s, %s) inválidos: %s"
 
-#: io.c:1632
+#: io.c:1619
 #, c-format
 msgid "remote host and port information (%s, %s) invalid"
 msgstr "anfitrión remoto e información de puerto (%s, %s) inválidos"
 
-#: io.c:1874
+#: io.c:1861
 msgid "TCP/IP communications are not supported"
-msgstr "no se admiten las comunicaciones TCP/IP"
+msgstr "TCP/IP para comunicaciones no son admitidas"
 
-#: io.c:2002 io.c:2045
+#: io.c:1989 io.c:2032
 #, c-format
 msgid "could not open `%s', mode `%s'"
-msgstr "no se puede abrir `%s', modo `%s'"
+msgstr "no se puede abrir «%s», modo «%s»"
 
-#: io.c:2010 io.c:2062
+#: io.c:1997 io.c:2049
 #, c-format
 msgid "close of master pty failed (%s)"
-msgstr "falló al cerrar el pty maestro (%s)"
+msgstr "cierre fallado del pty maestro (%s)"
 
-#: io.c:2012 io.c:2064 io.c:2411 io.c:2655
+#: io.c:1999 io.c:2051 io.c:2398 io.c:2642
 #, c-format
 msgid "close of stdout in child failed (%s)"
-msgstr "falló al cerrar la salida estándar en el hijo (%s)"
+msgstr "cierre de salida común fallada en el hijo (%s)"
 
-#: io.c:2015 io.c:2067
+#: io.c:2002 io.c:2054
 #, c-format
 msgid "moving slave pty to stdout in child failed (dup: %s)"
-msgstr ""
-"falló el movimiento del pty esclavo a la salida estándar en el hijo (dup: 
%s)"
+msgstr "fallado el movimiento del pty esclavo a la salida común en el hijo 
(dup: %s)"
 
-#: io.c:2017 io.c:2069 io.c:2416
+#: io.c:2004 io.c:2056 io.c:2403
 #, c-format
 msgid "close of stdin in child failed (%s)"
-msgstr "falló al cerrar la entrada estándar en el hijo (%s)"
+msgstr "cierre fallado de entrada común en el hijo (%s)"
 
-#: io.c:2020 io.c:2072
+#: io.c:2007 io.c:2059
 #, c-format
 msgid "moving slave pty to stdin in child failed (dup: %s)"
-msgstr ""
-"falló el movimiento del pty esclavo a la entrada estándar en el hijo (dup: "
-"%s)"
+msgstr "fallado el movimiento del pty esclavo a la entrada común en el hijo 
(dup: %s)"
 
-#: io.c:2022 io.c:2074 io.c:2096
+#: io.c:2009 io.c:2061 io.c:2083
 #, c-format
 msgid "close of slave pty failed (%s)"
-msgstr "falló al cerrar el pty esclavo (%s)"
+msgstr "cierre fallado del pty esclavo (%s)"
 
-#: io.c:2258
-#, fuzzy
+#: io.c:2245
 msgid "could not create child process or open pty"
-msgstr "no se puede crear el proceso hijo para `%s' (fork: %s)"
+msgstr "no pudo crear el subproceso para o abrir pty"
 
-#: io.c:2346 io.c:2414 io.c:2626 io.c:2658
+#: io.c:2333 io.c:2401 io.c:2613 io.c:2645
 #, c-format
 msgid "moving pipe to stdout in child failed (dup: %s)"
-msgstr "falló el movimiento a la salida estándar en el hijo (dup: %s)"
+msgstr "fallado el movimiento a la salida común en el hijo (dup: %s)"
 
-#: io.c:2353 io.c:2419
+#: io.c:2340 io.c:2406
 #, c-format
 msgid "moving pipe to stdin in child failed (dup: %s)"
-msgstr ""
-"falló el movimiento de la tubería a la entrada estándar en el hijo (dup: 
%s)"
+msgstr "fallado el movimiento de la tubería a la entrada común en el hijo 
(dup: %s)"
 
-#: io.c:2379 io.c:2648
+#: io.c:2366 io.c:2635
 msgid "restoring stdout in parent process failed\n"
-msgstr "falló la restauración de la salida estándar en el proceso padre\n"
+msgstr "restauración saliente común en el proceso padre fallado\n"
 
-#: io.c:2387
+#: io.c:2374
 msgid "restoring stdin in parent process failed\n"
-msgstr "falló la restauración de la entrada estándar en el proceso padre\n"
+msgstr "restauración entrante común en el proceso padre fallado\n"
 
-#: io.c:2422 io.c:2660 io.c:2675
+#: io.c:2409 io.c:2647 io.c:2662
 #, c-format
 msgid "close of pipe failed (%s)"
-msgstr "falló al cerrar la tubería (%s)"
+msgstr "cierre fallado de tubería (%s)"
 
-#: io.c:2481
+#: io.c:2468
 msgid "`|&' not supported"
-msgstr "no se admite `|&'"
+msgstr "`|&' no admitido"
 
-#: io.c:2611
+#: io.c:2598
 #, c-format
 msgid "cannot open pipe `%s' (%s)"
-msgstr "no se puede abrir la tubería `%s' (%s)"
+msgstr "no se puede abrir la tubería «%s» (%s)"
 
-#: io.c:2669
+#: io.c:2656
 #, c-format
 msgid "cannot create child process for `%s' (fork: %s)"
-msgstr "no se puede crear el proceso hijo para `%s' (fork: %s)"
+msgstr "no se puede crear el proceso hijo para «%s» (fork: %s)"
 
-#: io.c:2807
+#: io.c:2794
 msgid "getline: attempt to read from closed read end of two-way pipe"
-msgstr ""
+msgstr "getline: intenta leer desde final de lectura cerrada de tubería de 
vía doble"
 
-#: io.c:3131
+#: io.c:3118
 msgid "register_input_parser: received NULL pointer"
-msgstr ""
+msgstr "register_input_parser: revibido puntero NULO"
 
-#: io.c:3159
+#: io.c:3146
 #, c-format
 msgid "input parser `%s' conflicts with previously installed input parser `%s'"
-msgstr ""
+msgstr "intérprete entrante «%s» en conflicto con intérprete entrante 
«%s» instalado anteriormente"
 
-#: io.c:3166
+#: io.c:3153
 #, c-format
 msgid "input parser `%s' failed to open `%s'"
-msgstr ""
+msgstr "interpretador entrante «%s» fallado para abrir «%s»"
 
-#: io.c:3186
+#: io.c:3173
 msgid "register_output_wrapper: received NULL pointer"
-msgstr ""
+msgstr "register_output_wrapper: recibido puntero NULO"
 
-#: io.c:3214
+#: io.c:3201
 #, c-format
-msgid ""
-"output wrapper `%s' conflicts with previously installed output wrapper `%s'"
-msgstr ""
+msgid "output wrapper `%s' conflicts with previously installed output wrapper 
`%s'"
+msgstr "envoltorio saliente «%s» en conflicto con intérprete saliente 
«%s» instalado anteriormente"
 
-#: io.c:3221
+#: io.c:3208
 #, c-format
 msgid "output wrapper `%s' failed to open `%s'"
-msgstr ""
+msgstr "envoltorio saliente «%s» fallado al abrir «%s»"
 
-#: io.c:3242
+#: io.c:3229
 msgid "register_output_processor: received NULL pointer"
-msgstr ""
+msgstr "register_output_processor: recibido puntero NULO"
 
-#: io.c:3271
+#: io.c:3258
 #, c-format
-msgid ""
-"two-way processor `%s' conflicts with previously installed two-way processor "
-"`%s'"
-msgstr ""
+msgid "two-way processor `%s' conflicts with previously installed two-way 
processor `%s'"
+msgstr "proceso de dos vías «%s» conflicto con previamente instalado 
proceso de dos vias «%s»"
 
-#: io.c:3280
+#: io.c:3267
 #, c-format
 msgid "two way processor `%s' failed to open `%s'"
-msgstr ""
+msgstr "procesador «%s» de dos vías fallado para abrir «%s»"
 
-#: io.c:3404
+#: io.c:3391
 #, c-format
 msgid "data file `%s' is empty"
-msgstr "el fichero de datos `%s' está vacío"
+msgstr "el fichero de datos «%s» está vacío"
 
-#: io.c:3446 io.c:3454
+#: io.c:3433 io.c:3441
 msgid "could not allocate more input memory"
 msgstr "no se puede reservar más memoria de entrada"
 
-#: io.c:4072
+#: io.c:4059
 msgid "multicharacter value of `RS' is a gawk extension"
 msgstr "el valor multicaracter de `RS' es una extensión de gawk"
 
-#: io.c:4226
+#: io.c:4213
 msgid "IPv6 communication is not supported"
-msgstr "no se admite la comunicación IPv6"
+msgstr "IPv6 de comunicación no admitida"
 
 #: main.c:333
 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
-msgstr ""
-"la variable de ambiente `POSIXLY_CORRECT' está definida: se activa `--posix'"
+msgstr "la variable de ambiente `POSIXLY_CORRECT' definida: activando 
`--posix'"
 
 #: main.c:339
 msgid "`--posix' overrides `--traditional'"
@@ -2952,25 +2817,23 @@ msgid "running %s setuid root may be a security problem"
 msgstr "ejecutar %s como setuid root puede ser un problema de seguridad"
 
 #: main.c:358
-#, fuzzy
 msgid "`--posix' overrides `--characters-as-bytes'"
-msgstr "`--posix' se impone a `--binary'"
+msgstr "`--posix' sobrepone a `--character-as-bytes'"
 
 #: main.c:416
 #, c-format
 msgid "can't set binary mode on stdin (%s)"
-msgstr "no se puede establecer el modo binario en la entrada estándar (%s)"
+msgstr "no se puede establecer el modo binario entrante común (%s)"
 
 #: main.c:419
 #, c-format
 msgid "can't set binary mode on stdout (%s)"
-msgstr "no se puede establecer el modo binario en la salida estándar (%s)"
+msgstr "no se puede establecer el modo binario saliente común (%s)"
 
 #: main.c:421
 #, c-format
 msgid "can't set binary mode on stderr (%s)"
-msgstr ""
-"no se puede establecer el modo binario en la salida estándar de error (%s)"
+msgstr "no se puede establecer el modo binario de error común (%s)"
 
 #: main.c:481
 msgid "no program text at all!"
@@ -2979,20 +2842,16 @@ msgstr "¡No hay ningún programa de texto!"
 #: main.c:574
 #, c-format
 msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
-msgstr ""
-"Modo de empleo: %s [opciones estilo POSIX o GNU] -f fichprog [--] "
-"fichero ...\n"
+msgstr "Modo de empleo: %s [opciones estilo POSIX o GNU] -f fichprog [--] 
fichero …\n"
 
 #: main.c:576
 #, c-format
 msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
-msgstr ""
-"Modo de empleo: %s [opciones estilo POSIX o GNU] [--] %cprograma%c "
-"fichero ...\n"
+msgstr "Modo de empleo: %s [opciones estilo POSIX o GNU] [--] %cprograma%c 
fichero …\n"
 
 #: main.c:581
 msgid "POSIX options:\t\tGNU long options: (standard)\n"
-msgstr "Opciones POSIX:\t\tOpciones largas GNU: (estándar)\n"
+msgstr "Opciones POSIX:\t\tOpciones largas GNU: (común)\n"
 
 #: main.c:582
 msgid "\t-f progfile\t\t--file=progfile\n"
@@ -3027,15 +2886,14 @@ msgid "\t-d[file]\t\t--dump-variables[=file]\n"
 msgstr "\t-d[fichero]\t\t--dump-variables[=fichero]\n"
 
 #: main.c:590
-#, fuzzy
 msgid "\t-D[file]\t\t--debug[=file]\n"
-msgstr "\t-p[fichero]\t\t--profile[=fichero]\n"
+msgstr "\t-D[fichero]\t\t--debug[=fichero]\n"
 
 # Esta es la línea más larga de la lista de argumentos.
 # Probar con gawk para revisar tabuladores. cfuga
 #: main.c:591
 msgid "\t-e 'program-text'\t--source='program-text'\n"
-msgstr "\t-e 'texto-prog'\t--source='texto-prog'\n"
+msgstr "\t-e 'texto-prog'\t        --source='texto-prog'\n"
 
 #: main.c:592
 msgid "\t-E file\t\t\t--exec=file\n"
@@ -3051,24 +2909,24 @@ msgstr "\t-h\t\t\t--help\n"
 
 #: main.c:595
 msgid "\t-i includefile\t\t--include=includefile\n"
-msgstr ""
+msgstr "\t-i ficheroinclusivo\t--incluide=ficheroincluido\n"
 
 #: main.c:596
 msgid "\t-l library\t\t--load=library\n"
 msgstr ""
+"\t-l biblioteca\t\t--load=biblioteca\n"
+"\n"
 
 #. TRANSLATORS: the "fatal" and "invalid" here are literal
 #. values, they should not be translated. Thanks.
 #.
 #: main.c:601
-#, fuzzy
 msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n"
-msgstr "\t-L [fatal]\t\t--lint[=fatal]\n"
+msgstr "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n"
 
 #: main.c:602
-#, fuzzy
 msgid "\t-M\t\t\t--bignum\n"
-msgstr "\t-g\t\t\t--gen-pot\n"
+msgstr "\t-M\t\t\t--bignum\n"
 
 #: main.c:603
 msgid "\t-N\t\t\t--use-lc-numeric\n"
@@ -3079,9 +2937,8 @@ msgid "\t-n\t\t\t--non-decimal-data\n"
 msgstr "\t-n\t\t\t--non-decimal-data\n"
 
 #: main.c:605
-#, fuzzy
 msgid "\t-o[file]\t\t--pretty-print[=file]\n"
-msgstr "\t-p[fichero]\t\t--profile[=fichero]\n"
+msgstr "\t-o[fichero]\t\t--profile[=fichero]\n"
 
 #: main.c:606
 msgid "\t-O\t\t\t--optimize\n"
@@ -3100,9 +2957,8 @@ msgid "\t-r\t\t\t--re-interval\n"
 msgstr "\t-r\t\t\t--re-interval\n"
 
 #: main.c:610
-#, fuzzy
 msgid "\t-s\t\t\t--no-optimize\n"
-msgstr "\t-O\t\t\t--optimize\n"
+msgstr "\t-s\t\t\t--no-optimize\n"
 
 #: main.c:611
 msgid "\t-S\t\t\t--sandbox\n"
@@ -3130,7 +2986,6 @@ msgstr "\t-Y\t\t--parsedebug\n"
 #. address for translation bugs.
 #. no-wrap
 #: main.c:627
-#, fuzzy
 msgid ""
 "\n"
 "To report bugs, see node `Bugs' in `gawk.info'\n"
@@ -3141,10 +2996,11 @@ msgid ""
 "\n"
 msgstr ""
 "\n"
-"Para reportar bichos, consulte el nodo `Bugs' en `gawk.info', el cual\n"
-"corresponde a la sección `Reporting Problems and Bugs' en la versión "
-"impresa.\n"
-"Reporte los errores de los mensajes en español a <address@hidden>.\n"
+"Para indicar defectos, vea el nodo `Defectos' en `gawk.info'\n"
+"la cual es sección `Indicando Problemas y Defectos' en la\n"
+"versión escrita.  Esta misma información quizá está escrita\n"
+"en https://www.gnu.org/software/gawk/manual/html_node/Bugs.html.\n";
+"POR FAVOR NO intente indicar defectos publicando en comp.lang.awk.\n"
 "\n"
 
 #: main.c:634
@@ -3154,7 +3010,7 @@ msgid ""
 "\n"
 msgstr ""
 "gawk es un lenguaje de reconocimiento y procesamiento de patrones.\n"
-"Por defecto lee la entrada estándar y escribe en la salida estándar.\n"
+"Por defecto lee la entrada común y escribe en la salida común.\n"
 "\n"
 
 #: main.c:638
@@ -3178,11 +3034,10 @@ msgid ""
 "(at your option) any later version.\n"
 "\n"
 msgstr ""
-"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
+"© 1989, 1991-%d Free Software Foundation.\n"
 "\n"
 "Este programa es software libre; se puede redistribuir y/o modificar\n"
-"bajo los términos de la Licencia Pública General de GNU tal como es "
-"publicada\n"
+"bajo los términos de la Licencia Pública General de GNU tal como es 
publicada\n"
 "por la Free Software Foundation; ya sea por la versión 3 de la Licencia, o\n"
 "(a su elección) cualquier versión posterior.\n"
 "\n"
@@ -3206,9 +3061,8 @@ msgid ""
 "You should have received a copy of the GNU General Public License\n"
 "along with this program. If not, see http://www.gnu.org/licenses/.\n";
 msgstr ""
-"Debió recibir una copia de la Licencia Pública General de GNU\n"
-"junto con este programa. Si no es así, consulte\n"
-"http://www.gnu.org/licenses/.\n";
+"Debería haber recibido una copia de la Licencia Pública General de GNU\n"
+"junto con este programa. Si no es así, vea http://www.gnu.org/licenses/.\n";
 
 #: main.c:725
 msgid "-Ft does not set FS to tab in POSIX awk"
@@ -3220,29 +3074,28 @@ msgid ""
 "%s: `%s' argument to `-v' not in `var=value' form\n"
 "\n"
 msgstr ""
-"%s: el argumento `%s' para `-v' no es de la forma `var=valor'\n"
+"%s: el argumento «%s» para `-v' no es de la forma `var=valor'\n"
 "\n"
 
 #: main.c:1153
 #, c-format
 msgid "`%s' is not a legal variable name"
-msgstr "`%s' no es un nombre de variable legal"
+msgstr "«%s» no es un nombre de variable legal"
 
 #: main.c:1156
 #, c-format
 msgid "`%s' is not a variable name, looking for file `%s=%s'"
-msgstr "`%s' no es un nombre de variable, se busca el fichero `%s=%s'"
+msgstr "«%s» no es un nombre de variable, se busca el fichero `%s=%s'"
 
 #: main.c:1160
 #, c-format
 msgid "cannot use gawk builtin `%s' as variable name"
-msgstr ""
-"no se puede utilizar la orden interna de gawk `%s' como nombre de variable"
+msgstr "no se puede utilizar la orden interna de gawk «%s» como nombre de 
variable"
 
 #: main.c:1165
 #, c-format
 msgid "cannot use function `%s' as variable name"
-msgstr "no se puede usar la función `%s' como nombre de variable"
+msgstr "no se puede usar la función «%s» como nombre de variable"
 
 #: main.c:1220
 msgid "floating point exception"
@@ -3252,95 +3105,91 @@ msgstr "excepción de coma flotante"
 msgid "fatal error: internal error"
 msgstr "error fatal: error interno"
 
-#: main.c:1244
+#: main.c:1242
 msgid "fatal error: internal error: segfault"
 msgstr "error fatal: error interno: falla de segmentación"
 
-#: main.c:1257
+#: main.c:1254
 msgid "fatal error: internal error: stack overflow"
 msgstr "error fatal: error interno: desbordamiento de pila"
 
-#: main.c:1317
+#: main.c:1313
 #, c-format
 msgid "no pre-opened fd %d"
 msgstr "no existe el df %d abierto previamente"
 
-#: main.c:1324
+#: main.c:1320
 #, c-format
 msgid "could not pre-open /dev/null for fd %d"
 msgstr "no se puede abrir previamente /dev/null para el df %d"
 
-#: main.c:1538
+#: main.c:1534
 msgid "empty argument to `-e/--source' ignored"
-msgstr "se descarta el argumento vacío para `-e/--source'"
+msgstr "argumento vacío para `-e/--source' ignorado"
 
-#: main.c:1609
+#: main.c:1605
 msgid "-M ignored: MPFR/GMP support not compiled in"
-msgstr ""
+msgstr "-M ignorado: aooyo MPFR/GMP no compilado dentro de"
 
-#: main.c:1634
+#: main.c:1630
 #, c-format
 msgid "%s: option `-W %s' unrecognized, ignored\n"
 msgstr "%s: no se reconoce la opción `-W %s', se descarta\n"
 
-#: main.c:1687
+#: main.c:1683
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: la opción requiere un argumento -- %c\n"
 
 #: mpfr.c:546
-#, fuzzy, c-format
+#, c-format
 msgid "PREC value `%.*s' is invalid"
-msgstr "el valor BINMODE `%s' es inválido; se trata como 3"
+msgstr "Valor PREC «%.*s» es inválido"
 
 #: mpfr.c:605
-#, fuzzy, c-format
+#, c-format
 msgid "RNDMODE value `%.*s' is invalid"
-msgstr "el valor BINMODE `%s' es inválido; se trata como 3"
+msgstr "RNDMODE valorado `%.*s' es inválido"
 
 #: mpfr.c:702
-#, fuzzy, c-format
+#, c-format
 msgid "%s: received non-numeric argument"
-msgstr "cos: se recibió un argumento que no es númerico"
+msgstr "%s: argumento no numérico recibido"
 
 #: mpfr.c:811
-#, fuzzy
 msgid "compl(%Rg): negative value is not allowed"
-msgstr "compl(%lf): el valor negativo dará resultados extraños"
+msgstr "compl(%Rg): valor negativo no está permitido"
 
 #: mpfr.c:816
-#, fuzzy
 msgid "comp(%Rg): fractional value will be truncated"
-msgstr "compl(%lf): el valor fraccionario se truncará"
+msgstr "comp(%Rg): valor fraccionario será truncado"
 
 #: mpfr.c:827
-#, fuzzy, c-format
+#, c-format
 msgid "compl(%Zd): negative values are not allowed"
-msgstr "compl(%lf): el valor negativo dará resultados extraños"
+msgstr "compl(%Zd): valores negativos no serán permitidos"
 
 #: mpfr.c:845
-#, fuzzy, c-format
+#, c-format
 msgid "%s: received non-numeric argument #%d"
-msgstr "cos: se recibió un argumento que no es númerico"
+msgstr "%s: argumento no-numérico recibido #%d"
 
 #: mpfr.c:855
 msgid "%s: argument #%d has invalid value %Rg, using 0"
-msgstr ""
+msgstr "%s: argumento #%d tiene valor inválido %Rg, utilizando 0"
 
 #: mpfr.c:866
-#, fuzzy
 msgid "%s: argument #%d negative value %Rg is not allowed"
-msgstr "compl(%lf): el valor negativo dará resultados extraños"
+msgstr "%s: argumento #%d valor negativo %Rg no está permitido"
 
 #: mpfr.c:873
-#, fuzzy
 msgid "%s: argument #%d fractional value %Rg will be truncated"
-msgstr "or(%lf, %lf): los valores fraccionarios serán truncados"
+msgstr "%s: argumento #%d valor fraccional %Rg serán truncados"
 
 #: mpfr.c:887
-#, fuzzy, c-format
+#, c-format
 msgid "%s: argument #%d negative value %Zd is not allowed"
-msgstr "compl(%lf): el valor negativo dará resultados extraños"
+msgstr "%s: argumento #%d valor negativo %Zd no está permitido"
 
 #: msg.c:68
 #, c-format
@@ -3352,72 +3201,62 @@ msgid "backslash at end of string"
 msgstr "barra invertida al final de la cadena"
 
 #: node.c:459
-#, fuzzy
 msgid "could not make typed regex"
-msgstr "expresión regular sin terminar"
+msgstr "no pudo hacer expreg tipada"
 
 #: node.c:533
 #, c-format
 msgid "old awk does not support the `\\%c' escape sequence"
-msgstr "el awk antiguo no admite la secuencia de escape `\\%c'"
+msgstr "el awk antiguo no admite la secuencia `\\%c' de escape"
 
 #: node.c:584
 msgid "POSIX does not allow `\\x' escapes"
-msgstr "POSIX no permite escapes `\\x'"
+msgstr "POSIX no permite `\\x' como escapes"
 
 #: node.c:590
 msgid "no hex digits in `\\x' escape sequence"
-msgstr "no hay dígitos hexadecimales en la secuencia de escape `\\x'"
+msgstr "no hay dígitos hexadecimales en `\\x' como secuencia de escape"
 
 #: node.c:611
 #, c-format
-msgid ""
-"hex escape \\x%.*s of %d characters probably not interpreted the way you "
-"expect"
-msgstr ""
-"el escape hexadecimal \\x%.*s de %d caracteres tal vez no se interprete de "
-"la forma esperada"
+msgid "hex escape \\x%.*s of %d characters probably not interpreted the way 
you expect"
+msgstr "escape hexadecimal \\x%.*s de %d caracteres tal vez no se interprete 
de la forma esperada"
 
 #: node.c:626
 #, c-format
 msgid "escape sequence `\\%c' treated as plain `%c'"
-msgstr "la secuencia de escape `\\%c' se trata como una simple `%c'"
+msgstr "la secuencia de escape `\\%c' tratada como una simple `%c'"
 
 #: node.c:762
-msgid ""
-"Invalid multibyte data detected. There may be a mismatch between your data "
-"and your locale."
-msgstr ""
-"Se detectaron datos multibyte inválidos. Puede ser que no coincidan sus "
-"datos con su local."
+msgid "Invalid multibyte data detected. There may be a mismatch between your 
data and your locale."
+msgstr "Se detectaron datos multibyte inválidos. Puede ser que no coincidan 
sus datos con su local."
 
 #: posix/gawkmisc.c:177
 #, c-format
 msgid "%s %s `%s': could not get fd flags: (fcntl F_GETFD: %s)"
-msgstr ""
-"%s %s `%s': no se pueden obtener las opciones del fd: (fcntl F_GETFD: %s)"
+msgstr "%s %s «%s»: no se pueden obtener las opciones del fd: (fcntl 
F_GETFD: %s)"
 
 #: posix/gawkmisc.c:189
 #, c-format
 msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)"
-msgstr "%s %s `%s': no se puede establecer close-on-exec: (fcntl F_SETFD: %s)"
+msgstr "%s %s «%s»: no se puede establecer close-on-exec: (fcntl F_SETFD: 
%s)"
 
 #: profile.c:97
 #, c-format
 msgid "could not open `%s' for writing: %s"
-msgstr "no se puede abrir `%s' para escritura: %s"
+msgstr "no se puede abrir «%s» para escritura: %s"
 
 #: profile.c:99
 msgid "sending profile to standard error"
-msgstr "se envía el perfil a la salida estándar de error"
+msgstr "se envía el perfil a la salida común de error"
 
 #: profile.c:250
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "\t# %s rule(s)\n"
 "\n"
 msgstr ""
-"\t# Regla(s)\n"
+"\t# %s regla(s)\n"
 "\n"
 
 #: profile.c:258
@@ -3435,9 +3274,8 @@ msgid "internal error: %s with null vname"
 msgstr "error interno: %s con vname nulo"
 
 #: profile.c:619
-#, fuzzy
 msgid "internal error: builtin with null fname"
-msgstr "error interno: %s con vname nulo"
+msgstr "error interno: compilado con fname nulo"
 
 #: profile.c:1132
 #, c-format
@@ -3445,6 +3283,8 @@ msgid ""
 "\t# Loaded extensions (-l and/or @load)\n"
 "\n"
 msgstr ""
+"\t# Extensiones cargadas (-l y/o @load)\n"
+"\n"
 
 #: profile.c:1181
 #, c-format
@@ -3468,57 +3308,48 @@ msgstr "redir2str: tipo de redirección %d desconocida"
 #: re.c:610
 #, c-format
 msgid "regexp component `%.*s' should probably be `[%.*s]'"
-msgstr ""
-"el componente de expresión regular `%.*s' probablemente debe ser `[%.*s]'"
+msgstr "el componente de expresión regular `%.*s' probablemente debe ser 
`[%.*s]'"
 
 #: support/dfa.c:1005
-#, fuzzy
 msgid "unbalanced ["
-msgstr "[ desbalanceado"
+msgstr "desbalanceado ["
 
 #: support/dfa.c:1126
-#, fuzzy
 msgid "invalid character class"
-msgstr "Nombre de clase de caracter inválido"
+msgstr "clase de carácter inválido"
 
 #: support/dfa.c:1252
 msgid "character class syntax is [[:space:]], not [:space:]"
-msgstr ""
+msgstr "sintaxis de clase de carácter es [[:espacio:]], no [:espacio:]"
 
 #: support/dfa.c:1319
-#, fuzzy
 msgid "unfinished \\ escape"
-msgstr "Escape \\ sin terminar"
+msgstr "escape \\ no terminado"
 
 #: support/dfa.c:1480
-#, fuzzy
 msgid "invalid content of \\{\\}"
-msgstr "Contenido inválido de \\{\\}"
+msgstr "contenido inválido de \\{\\}"
 
 #: support/dfa.c:1483
-#, fuzzy
 msgid "regular expression too big"
-msgstr "La expresión regular es demasiado grande"
+msgstr "expresión regular demasiado grande"
 
 #: support/dfa.c:1897
-#, fuzzy
 msgid "unbalanced ("
-msgstr "( desbalanceado"
+msgstr "desbalanceado ("
 
 #: support/dfa.c:2015
-#, fuzzy
 msgid "no syntax specified"
-msgstr "No se especifican los bits de sintaxis de la expresión regular"
+msgstr "sin sintaxis especificada"
 
 #: support/dfa.c:2023
-#, fuzzy
 msgid "unbalanced )"
 msgstr ") desbalanceado"
 
 #: support/getopt.c:605 support/getopt.c:634
-#, fuzzy, c-format
+#, c-format
 msgid "%s: option '%s' is ambiguous; possibilities:"
-msgstr "%s: la opción '%s' es ambigua\n"
+msgstr "%s: la opción '%s' es ambigua; posibilidades:"
 
 #: support/getopt.c:680 support/getopt.c:684
 #, c-format
@@ -3548,13 +3379,13 @@ msgstr "%s: no se reconoce la opción '%c%s'\n"
 #: support/getopt.c:861 support/getopt.c:864
 #, c-format
 msgid "%s: invalid option -- '%c'\n"
-msgstr "%s: opción inválida -- '%c'\n"
+msgstr "%s: opción inválida -- «%c»\n"
 
 #: support/getopt.c:917 support/getopt.c:934 support/getopt.c:1144
 #: support/getopt.c:1162
 #, c-format
 msgid "%s: option requires an argument -- '%c'\n"
-msgstr "%s: la opción requiere un argumento -- '%c'\n"
+msgstr "%s: la opción requiere un argumento -- «%c»\n"
 
 #: support/getopt.c:990 support/getopt.c:1006
 #, c-format
@@ -3573,7 +3404,7 @@ msgstr "%s: la opción '-W %s' requiere un argumento\n"
 
 #: support/regcomp.c:143
 msgid "Success"
-msgstr "Éxito"
+msgstr "Correcto"
 
 #: support/regcomp.c:146
 msgid "No match"
@@ -3593,24 +3424,23 @@ msgstr "Nombre de clase de caracter inválido"
 
 #: support/regcomp.c:158
 msgid "Trailing backslash"
-msgstr "Barra invertida extra al final"
+msgstr "Barra invertida al final"
 
 #: support/regcomp.c:161
 msgid "Invalid back reference"
 msgstr "Referencia hacia atrás inválida"
 
 #: support/regcomp.c:164
-#, fuzzy
 msgid "Unmatched [, [^, [:, [., or [="
-msgstr "[ o [^ desemparejados"
+msgstr "[, [^, [:, [., o [= desemparejados"
 
 #: support/regcomp.c:167
 msgid "Unmatched ( or \\("
-msgstr "( o \\( desemparejados"
+msgstr "Desemparajados ( o \\("
 
 #: support/regcomp.c:170
 msgid "Unmatched \\{"
-msgstr "\\{ desemparejado"
+msgstr "Desemparejado \\{"
 
 #: support/regcomp.c:173
 msgid "Invalid content of \\{\\}"
@@ -3634,7 +3464,7 @@ msgstr "Fin prematuro de la expresión regular"
 
 #: support/regcomp.c:188
 msgid "Regular expression too big"
-msgstr "La expresión regular es demasiado grande"
+msgstr "Expresión regular demasiado grande"
 
 #: support/regcomp.c:191
 msgid "Unmatched ) or \\)"
@@ -3645,153 +3475,37 @@ msgid "No previous regular expression"
 msgstr "No hay una expresión regular previa"
 
 #: symbol.c:687
-#, fuzzy, c-format
+#, c-format
 msgid "function `%s': can't use function `%s' as a parameter name"
-msgstr ""
-"función `%s': no se puede usar un nombre de función como nombre de 
parámetro"
+msgstr "función «%s»: no se puede usar una función «%s» como nombre 
paramétrico"
 
 #: symbol.c:817
 msgid "can not pop main context"
-msgstr ""
-
-#, fuzzy
-#~ msgid "attempt to use array `%s[\".*%s\"]' in a scalar context"
-#~ msgstr "se intentó usar la matriz `%s[\"%.*s\"]' en un contexto escalar"
-
-#, fuzzy
-#~ msgid "attempt to use scalar `%s[\".*%s\"]' as array"
-#~ msgstr "se intentó usar el dato escalar `%s[\"%.*s\"]' como una matriz"
-
-#, fuzzy
-#~ msgid "gensub: third argument %g treated as 1"
-#~ msgstr "gensub: el tercer argumento de 0 se trata como 1"
+msgstr "no puede extraer por arriba el contexto principal"
 
-#~ msgid "`extension' is a gawk extension"
-#~ msgstr "`extension' es una extensión de gawk"
-
-#, fuzzy
-#~ msgid "extension: cannot open library `%s' (%s)"
-#~ msgstr "fatal: extension: no se puede abrir `%s' (%s)\n"
-
-#, fuzzy
-#~ msgid ""
-#~ "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)"
-#~ msgstr ""
-#~ "fatal: extension: la biblioteca `%s': no define "
-#~ "`plugin_is_GPL_compatible' (%s)\n"
-
-#, fuzzy
-#~ msgid "extension: library `%s': cannot call function `%s' (%s)"
-#~ msgstr ""
-#~ "fatal: extension: la biblioteca `%s': no puede llamar a la función `"
-#~ "%s' (%s)\n"
-
-#, fuzzy
-#~ msgid "extension: missing function name"
-#~ msgstr "extension: falta el nombre de la función"
-
-#, fuzzy
-#~ msgid "extension: illegal character `%c' in function name `%s'"
-#~ msgstr "extension: carácter ilegal `%c' en el nombre de la función `%s'"
-
-#, fuzzy
-#~ msgid "extension: can't redefine function `%s'"
-#~ msgstr "extension: no se puede redefinir la función `%s'"
-
-#, fuzzy
-#~ msgid "extension: function `%s' already defined"
-#~ msgstr "extension: la función `%s' ya está definida"
-
-#, fuzzy
-#~ msgid "extension: function name `%s' previously defined"
-#~ msgstr "el nombre de función `%s' se definió previamente"
-
-#, fuzzy
-#~ msgid "extension: can't use gawk built-in `%s' as function name"
-#~ msgstr ""
-#~ "extension: no se puede utilizar la orden interna de gawk `%s' como nombre "
-#~ "de función"
-
-#, fuzzy
-#~ msgid "chdir: called with incorrect number of arguments, expecting 1"
-#~ msgstr "sqrt: se llamó con el argumento negativo %g"
-
-#, fuzzy
-#~ msgid "stat: called with wrong number of arguments"
-#~ msgstr "sqrt: se llamó con el argumento negativo %g"
-
-#, fuzzy
-#~ msgid "statvfs: called with wrong number of arguments"
-#~ msgstr "sqrt: se llamó con el argumento negativo %g"
-
-#, fuzzy
-#~ msgid "fnmatch: called with less than three arguments"
-#~ msgstr "sqrt: se llamó con el argumento negativo %g"
-
-#, fuzzy
-#~ msgid "fnmatch: called with more than three arguments"
-#~ msgstr "sqrt: se llamó con el argumento negativo %g"
-
-#, fuzzy
-#~ msgid "fork: called with too many arguments"
-#~ msgstr "sqrt: se llamó con el argumento negativo %g"
-
-#, fuzzy
-#~ msgid "waitpid: called with too many arguments"
-#~ msgstr "sqrt: se llamó con el argumento negativo %g"
-
-#, fuzzy
-#~ msgid "wait: called with no arguments"
-#~ msgstr "sqrt: se llamó con el argumento negativo %g"
-
-#, fuzzy
-#~ msgid "wait: called with too many arguments"
-#~ msgstr "sqrt: se llamó con el argumento negativo %g"
-
-#, fuzzy
-#~ msgid "ord: called with too many arguments"
-#~ msgstr "sqrt: se llamó con el argumento negativo %g"
-
-#, fuzzy
-#~ msgid "ord: called with no arguments"
-#~ msgstr "sqrt: se llamó con el argumento negativo %g"
-
-#, fuzzy
-#~ msgid "chr: called with too many arguments"
-#~ msgstr "sqrt: se llamó con el argumento negativo %g"
-
-#, fuzzy
-#~ msgid "chr: called with no arguments"
-#~ msgstr "sqrt: se llamó con el argumento negativo %g"
-
-#, fuzzy
-#~ msgid "readfile: called with too many arguments"
-#~ msgstr "sqrt: se llamó con el argumento negativo %g"
+#~ msgid "reference to uninitialized element `%s[\"%.*s\"]'"
+#~ msgstr "referencia al elemento sin inicializar `%s[\"%.*s\"]'"
 
-#, fuzzy
-#~ msgid "writea: called with too many arguments"
-#~ msgstr "sqrt: se llamó con el argumento negativo %g"
+#~ msgid "subscript of array `%s' is null string"
+#~ msgstr "el subíndice de la matriz `%s' es la cadena nula"
 
-#, fuzzy
-#~ msgid "reada: called with too many arguments"
-#~ msgstr "sqrt: se llamó con el argumento negativo %g"
+#~ msgid "%s: empty (null)\n"
+#~ msgstr "%s: vacío (nulo)\n"
 
-#, fuzzy
-#~ msgid "gettimeofday: ignoring arguments"
-#~ msgstr "mktime: se recibió un argumento que no es una cadena"
+#~ msgid "%s: empty (zero)\n"
+#~ msgstr "%s: vacío (cero)\n"
 
-#, fuzzy
-#~ msgid "sleep: called with too many arguments"
-#~ msgstr "sqrt: se llamó con el argumento negativo %g"
+#~ msgid "%s: table_size = %d, array_size = %d\n"
+#~ msgstr "%s: tamaño_tabla = %d, tamaño_matriz = %d\n"
 
-#~ msgid "unknown value for field spec: %d\n"
-#~ msgstr "valor desconocido para la especificación de campo: %d\n"
+#~ msgid "%s: array_ref to %s\n"
+#~ msgstr "%s: array_ref a %s\n"
 
-#~ msgid "function `%s' defined to take no more than %d argument(s)"
-#~ msgstr "la función `%s' se definió para tomar no más de %d argumento(s)"
+#~ msgid "`nextfile' is a gawk extension"
+#~ msgstr "`nextfile' es una extensión de gawk"
 
-#~ msgid "function `%s': missing argument #%d"
-#~ msgstr "función `%s': falta el argumento #%d"
+#~ msgid "`delete array' is a gawk extension"
+#~ msgstr "`delete array' es una extensión de gawk"
 
 #~ msgid "`getline var' invalid inside `%s' rule"
 #~ msgstr "`getline var' inválido dentro de la regla `%s'"
@@ -3799,116 +3513,41 @@ msgstr ""
 #~ msgid "`getline' invalid inside `%s' rule"
 #~ msgstr "`getline' inválido dentro de la regla `%s'"
 
-#~ msgid "no (known) protocol supplied in special filename `%s'"
-#~ msgstr ""
-#~ "no se proporciona algún protocolo (conocido) en el nombre de fichero "
-#~ "especial `%s'"
-
-#~ msgid "special file name `%s' is incomplete"
-#~ msgstr "el nombre de fichero especial `%s' está incompleto"
-
-#~ msgid "must supply a remote hostname to `/inet'"
-#~ msgstr "se debe proporcionar a `/inet' un nombre de anfitrión remoto"
-
-#~ msgid "must supply a remote port to `/inet'"
-#~ msgstr "se debe proporcionar a `/inet' un puerto remoto"
-
-#~ msgid ""
-#~ "\t# %s block(s)\n"
-#~ "\n"
-#~ msgstr ""
-#~ "\t# bloque(s) %s\n"
-#~ "\n"
-
-#~ msgid "range of the form `[%c-%c]' is locale dependent"
-#~ msgstr "el rango de la forma `[%c-%c]' depende del local"
-
-#, fuzzy
-#~ msgid "[s]printf called with no arguments"
-#~ msgstr "sqrt: se llamó con el argumento negativo %g"
+#~ msgid "use of non-array as array"
+#~ msgstr "uso de una matriz que no es matriz"
 
-#~ msgid "`-m[fr]' option irrelevant in gawk"
-#~ msgstr "la opción -m[fr] es irrelevante en gawk"
+#~ msgid "`%s' is a Bell Labs extension"
+#~ msgstr "`%s' es una extensión de Bell Labs"
 
-#~ msgid "-m option usage: `-m[fr] nnn'"
-#~ msgstr "uso de la opción -m: `-m[fr]' nnn"
+#~ msgid "and(%lf, %lf): negative values will give strange results"
+#~ msgstr "and(%lf, %lf): los valores negativos darán resultados extraños"
 
-#, fuzzy
-#~ msgid "%s: received non-numeric first argument"
+#~ msgid "or: received non-numeric first argument"
 #~ msgstr "or: el primer argumento recibido no es númerico"
 
-#, fuzzy
-#~ msgid "%s: received non-numeric second argument"
+#~ msgid "or: received non-numeric second argument"
 #~ msgstr "or: el segundo argumento recibido no es númerico"
 
-#, fuzzy
-#~ msgid "%s(%Rg, ..): negative values will give strange results"
+#~ msgid "or(%lf, %lf): negative values will give strange results"
 #~ msgstr "or(%lf, %lf): los valores negativos darán resultados extraños"
 
-#, fuzzy
-#~ msgid "%s(%Rg, ..): fractional values will be truncated"
+#~ msgid "or(%lf, %lf): fractional values will be truncated"
 #~ msgstr "or(%lf, %lf): los valores fraccionarios serán truncados"
 
-#, fuzzy
-#~ msgid "%s(%Zd, ..): negative values will give strange results"
-#~ msgstr "or(%lf, %lf): los valores negativos darán resultados extraños"
-
-#, fuzzy
-#~ msgid "%s(.., %Rg): negative values will give strange results"
-#~ msgstr "or(%lf, %lf): los valores negativos darán resultados extraños"
-
-#, fuzzy
-#~ msgid "%s(.., %Zd): negative values will give strange results"
-#~ msgstr "or(%lf, %lf): los valores negativos darán resultados extraños"
-
-#~ msgid "`%s' is a Bell Labs extension"
-#~ msgstr "`%s' es una extensión de Bell Labs"
-
-#~ msgid "`nextfile' is a gawk extension"
-#~ msgstr "`nextfile' es una extensión de gawk"
-
-#~ msgid "`delete array' is a gawk extension"
-#~ msgstr "`delete array' es una extensión de gawk"
-
-#~ msgid "and(%lf, %lf): fractional values will be truncated"
-#~ msgstr "and(%lf, %lf): los valores fraccionarios serán truncados"
-
 #~ msgid "xor: received non-numeric first argument"
 #~ msgstr "xor: el primer argumento recibido no es númerico"
 
 #~ msgid "xor: received non-numeric second argument"
 #~ msgstr "xor: el segundo argumento recibido no es númerico"
 
+#~ msgid "xor(%lf, %lf): negative values will give strange results"
+#~ msgstr "xor(%lf, %lf): los valores negativos darán resultados extraños"
+
 #~ msgid "xor(%lf, %lf): fractional values will be truncated"
 #~ msgstr "xor(%lf, %lf): los valores fraccionarios se truncarán"
 
-#~ msgid "Operation Not Supported"
-#~ msgstr "No Se Admite La Operación"
-
-#~ msgid "reference to uninitialized element `%s[\"%.*s\"]'"
-#~ msgstr "referencia al elemento sin inicializar `%s[\"%.*s\"]'"
-
-#~ msgid "subscript of array `%s' is null string"
-#~ msgstr "el subíndice de la matriz `%s' es la cadena nula"
-
-#~ msgid "%s: empty (null)\n"
-#~ msgstr "%s: vacío (nulo)\n"
-
-#~ msgid "%s: empty (zero)\n"
-#~ msgstr "%s: vacío (cero)\n"
-
-#~ msgid "%s: table_size = %d, array_size = %d\n"
-#~ msgstr "%s: tamaño_tabla = %d, tamaño_matriz = %d\n"
-
-#~ msgid "%s: array_ref to %s\n"
-#~ msgstr "%s: array_ref a %s\n"
-
-#~ msgid "use of non-array as array"
-#~ msgstr "uso de una matriz que no es matriz"
-
 #~ msgid "can't use function name `%s' as variable or array"
-#~ msgstr ""
-#~ "no se puede usar el nombre de la función `%s' como variable o matriz"
+#~ msgstr "no se puede usar el nombre de la función `%s' como variable o 
matriz"
 
 #~ msgid "assignment used in conditional context"
 #~ msgstr "se usó una asignación en un contexto condicional"
@@ -3916,11 +3555,8 @@ msgstr ""
 #~ msgid "statement has no effect"
 #~ msgstr "la declaración no tiene efecto"
 
-#~ msgid ""
-#~ "for loop: array `%s' changed size from %ld to %ld during loop execution"
-#~ msgstr ""
-#~ "bucle for: la matriz `%s' cambió de tamaño de %ld a %ld durante la "
-#~ "ejecución del bucle"
+#~ msgid "for loop: array `%s' changed size from %ld to %ld during loop 
execution"
+#~ msgstr "bucle for: la matriz `%s' cambió de tamaño de %ld a %ld durante 
la ejecución del bucle"
 
 #~ msgid "function called indirectly through `%s' does not exist"
 #~ msgstr "no existe la función llamada indirectamente a través de `%s'"
@@ -3940,12 +3576,67 @@ msgstr ""
 #~ msgid "Sorry, don't know how to interpret `%s'"
 #~ msgstr "Perdón, no se cómo interpretar `%s'"
 
+#~ msgid "`extension' is a gawk extension"
+#~ msgstr "`extension' es una extensión de gawk"
+
+#~ msgid "extension: illegal character `%c' in function name `%s'"
+#~ msgstr "extension: carácter ilegal `%c' en el nombre de la función `%s'"
+
+#~ msgid "function `%s' defined to take no more than %d argument(s)"
+#~ msgstr "la función `%s' se definió para tomar no más de %d argumento(s)"
+
+#~ msgid "function `%s': missing argument #%d"
+#~ msgstr "función `%s': falta el argumento #%d"
+
+#~ msgid "Operation Not Supported"
+#~ msgstr "No Se Admite La Operación"
+
+#~ msgid "no (known) protocol supplied in special filename `%s'"
+#~ msgstr "no se proporciona algún protocolo (conocido) en el nombre de 
fichero especial `%s'"
+
+#~ msgid "special file name `%s' is incomplete"
+#~ msgstr "el nombre de fichero especial `%s' está incompleto"
+
+#~ msgid "must supply a remote hostname to `/inet'"
+#~ msgstr "se debe proporcionar a `/inet' un nombre de anfitrión remoto"
+
+#~ msgid "must supply a remote port to `/inet'"
+#~ msgstr "se debe proporcionar a `/inet' un puerto remoto"
+
+#~ msgid "`-m[fr]' option irrelevant in gawk"
+#~ msgstr "la opción -m[fr] es irrelevante en gawk"
+
+#~ msgid "-m option usage: `-m[fr] nnn'"
+#~ msgstr "uso de la opción -m: `-m[fr]' nnn"
+
 #~ msgid "\t-R file\t\t\t--command=file\n"
 #~ msgstr "\t-R fichero\t\t\t--command=fichero\n"
 
+#~ msgid ""
+#~ "\n"
+#~ "To report bugs, see node `Bugs' in `gawk.info', which is\n"
+#~ "section `Reporting Problems and Bugs' in the printed version.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Para reportar bichos, consulte el nodo `Bugs' en `gawk.info', el cual\n"
+#~ "corresponde a la sección `Reporting Problems and Bugs' en la versión 
impresa.\n"
+#~ "Reporte los errores de los mensajes en español a <address@hidden>.\n"
+#~ "\n"
+
 #~ msgid "could not find groups: %s"
 #~ msgstr "no se pueden encontrar los grupos: %s"
 
+#~ msgid ""
+#~ "\t# %s block(s)\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\t# bloque(s) %s\n"
+#~ "\n"
+
+#~ msgid "range of the form `[%c-%c]' is locale dependent"
+#~ msgstr "el rango de la forma `[%c-%c]' depende del local"
+
 #~ msgid "assignment is not allowed to result of builtin function"
 #~ msgstr "no se permite la asignación como resultado de una función interna"
 
@@ -3982,12 +3673,8 @@ msgstr ""
 #~ msgid "`nextfile' cannot be called from a BEGIN rule"
 #~ msgstr "`nextfile' no se puede llamar desde una regla BEGIN"
 
-#~ msgid ""
-#~ "concatenation: side effects in one expression have changed the length of "
-#~ "another!"
-#~ msgstr ""
-#~ "concatenación: ¡Los efectos laterales en una expresión han cambiado la "
-#~ "longitud de otra!"
+#~ msgid "concatenation: side effects in one expression have changed the 
length of another!"
+#~ msgstr "concatenación: ¡Los efectos laterales en una expresión han 
cambiado la longitud de otra!"
 
 #~ msgid "illegal type (%s) in tree_eval"
 #~ msgstr "tipo ilegal (%s) en tree_eval"
@@ -4051,8 +3738,7 @@ msgstr ""
 #~ msgstr "Tipo de nodo %s desconocido en pp_var"
 
 #~ msgid "can't open two way socket `%s' for input/output (%s)"
-#~ msgstr ""
-#~ "no se puede abrir el `socket' de dos vías `%s' para entrada/salida (%s)"
+#~ msgstr "no se puede abrir el `socket' de dos vías `%s' para entrada/salida 
(%s)"
 
 #~ msgid "%s: illegal option -- %c\n"
 #~ msgstr "%s: opción ilegal -- %c\n"
@@ -4070,9 +3756,7 @@ msgstr ""
 #~ msgstr "substr: la longitud %g es < 0"
 
 #~ msgid "regex match failed, not enough memory to match string \"%.*s%s\""
-#~ msgstr ""
-#~ "falló la coincidencia de la expresión regular, no hay suficiente memoria 
"
-#~ "para que coincida la cadena \"%.*s%s\""
+#~ msgstr "falló la coincidencia de la expresión regular, no hay suficiente 
memoria para que coincida la cadena \"%.*s%s\""
 
 #~ msgid "delete: illegal use of variable `%s' as array"
 #~ msgstr "delete: uso ilegal de la variable `%s' como una matriz"
@@ -4096,8 +3780,7 @@ msgstr ""
 #~ msgstr "`nextfile' es usado en la acción de BEGIN o END"
 
 #~ msgid "non-redirected `getline' undefined inside BEGIN or END action"
-#~ msgstr ""
-#~ "`getline' no redirigido indefinido dentro de la acción de BEGIN o END"
+#~ msgstr "`getline' no redirigido indefinido dentro de la acción de BEGIN o 
END"
 
 # tokentab? cfuga
 #~ msgid "fptr %x not in tokentab\n"

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog            |   15 +
 awk.h                |    4 -
 awkgram.c            |  587 +++++++--------
 awkgram.y            |   27 +-
 eval.c               |   49 +-
 po/ChangeLog         |    4 +
 po/es.po             | 2013 +++++++++++++++++++++-----------------------------
 test/ChangeLog       |    5 +
 test/Makefile.am     |    4 +-
 test/Makefile.in     |    9 +-
 test/Maketests       |    5 +
 test/tailrecurse.awk |   15 +
 test/tailrecurse.ok  |    5 +
 13 files changed, 1199 insertions(+), 1543 deletions(-)
 create mode 100644 test/tailrecurse.awk
 create mode 100644 test/tailrecurse.ok


hooks/post-receive
-- 
gawk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]