]> git.ipfire.org Git - thirdparty/bash.git/blobdiff - y.tab.c
bash-5.0-rc1 release
[thirdparty/bash.git] / y.tab.c
diff --git a/y.tab.c b/y.tab.c
index 0120d8386e56e7947c2816337aedbf2ba59d8fc2..71377e16b8d6d6e7f969f88e4a437ba8144c28fb 100644 (file)
--- a/y.tab.c
+++ b/y.tab.c
@@ -776,16 +776,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  117
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   609
+#define YYLAST   669
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  61
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  38
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  168
+#define YYNRULES  170
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  335
+#define YYNSTATES  343
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
@@ -836,23 +836,24 @@ static const yytype_uint8 yytranslate[] =
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   381,   381,   392,   401,   416,   432,   442,   444,   448,
-     454,   460,   466,   472,   478,   484,   490,   496,   502,   508,
-     514,   520,   526,   532,   538,   545,   552,   559,   566,   573,
-     580,   586,   592,   598,   604,   610,   616,   622,   628,   634,
-     640,   646,   652,   658,   664,   670,   676,   682,   688,   694,
-     700,   706,   712,   720,   722,   724,   728,   732,   743,   745,
-     749,   751,   753,   769,   771,   775,   777,   779,   781,   783,
-     785,   787,   789,   791,   793,   795,   799,   804,   809,   814,
-     819,   824,   829,   834,   841,   847,   853,   859,   867,   872,
-     877,   882,   887,   892,   899,   904,   909,   916,   919,   922,
-     926,   928,   959,   966,   971,   988,   993,  1010,  1017,  1019,
-    1021,  1026,  1030,  1034,  1038,  1040,  1042,  1046,  1047,  1051,
-    1053,  1055,  1057,  1061,  1063,  1065,  1067,  1069,  1071,  1075,
-    1077,  1086,  1094,  1095,  1101,  1102,  1109,  1113,  1115,  1117,
-    1124,  1126,  1128,  1132,  1133,  1136,  1138,  1140,  1144,  1145,
-    1154,  1167,  1183,  1198,  1200,  1202,  1209,  1212,  1216,  1218,
-    1224,  1230,  1250,  1273,  1275,  1298,  1302,  1304,  1306
+       0,   381,   381,   392,   401,   416,   433,   443,   445,   449,
+     455,   461,   467,   473,   479,   485,   491,   497,   503,   509,
+     515,   521,   527,   533,   539,   546,   553,   560,   567,   574,
+     581,   587,   593,   599,   605,   611,   617,   623,   629,   635,
+     641,   647,   653,   659,   665,   671,   677,   683,   689,   695,
+     701,   707,   713,   721,   723,   725,   729,   733,   744,   746,
+     750,   752,   754,   770,   772,   776,   778,   780,   782,   784,
+     786,   788,   790,   792,   794,   796,   800,   805,   810,   815,
+     820,   825,   830,   835,   842,   848,   854,   860,   868,   873,
+     878,   883,   888,   893,   898,   903,   910,   915,   920,   927,
+     930,   933,   937,   939,   970,   977,   982,   999,  1004,  1021,
+    1028,  1030,  1032,  1037,  1041,  1045,  1049,  1051,  1053,  1057,
+    1058,  1062,  1064,  1066,  1068,  1072,  1074,  1076,  1078,  1080,
+    1082,  1086,  1088,  1097,  1105,  1106,  1112,  1113,  1120,  1124,
+    1126,  1128,  1135,  1137,  1139,  1143,  1144,  1147,  1149,  1151,
+    1155,  1156,  1165,  1178,  1194,  1209,  1211,  1213,  1220,  1223,
+    1227,  1229,  1235,  1241,  1261,  1284,  1286,  1309,  1313,  1315,
+    1317
 };
 #endif
 
@@ -899,10 +900,10 @@ static const yytype_uint16 yytoknum[] =
 };
 # endif
 
-#define YYPACT_NINF -203
+#define YYPACT_NINF -204
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-203)))
+  (!!((Yystate) == (-204)))
 
 #define YYTABLE_NINF -1
 
@@ -913,40 +914,41 @@ static const yytype_uint16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     309,    -2,  -203,   -20,     2,     3,  -203,  -203,     5,   509,
-      31,   359,    45,    33,  -203,   252,   554,  -203,    76,   102,
-      -8,   105,   131,   108,   128,   152,   157,   162,  -203,  -203,
-     169,   174,  -203,  -203,   107,  -203,  -203,   229,  -203,   541,
-    -203,  -203,  -203,  -203,  -203,  -203,  -203,  -203,  -203,  -203,
-    -203,    61,   244,  -203,   -28,   359,  -203,  -203,  -203,   200,
-      29,  -203,   163,    48,   167,   193,   218,   181,   223,   229,
-     541,   233,  -203,  -203,  -203,  -203,  -203,   217,   203,   243,
-     253,   145,   255,   146,   277,   279,   285,   287,   292,   297,
-     298,   164,   302,   198,   303,   304,   307,   308,   314,  -203,
-    -203,  -203,  -203,  -203,  -203,  -203,  -203,  -203,  -203,  -203,
-    -203,  -203,  -203,  -203,  -203,   228,   281,  -203,  -203,  -203,
-    -203,   541,  -203,  -203,  -203,  -203,  -203,   409,   409,  -203,
-    -203,  -203,  -203,  -203,  -203,  -203,   210,  -203,   -13,  -203,
-      87,  -203,  -203,  -203,  -203,   148,  -203,  -203,   282,   155,
-     541,   541,  -203,  -203,  -203,  -203,  -203,  -203,  -203,  -203,
-    -203,  -203,  -203,  -203,  -203,  -203,  -203,  -203,  -203,  -203,
-    -203,  -203,  -203,  -203,  -203,  -203,  -203,  -203,  -203,  -203,
-    -203,  -203,  -203,  -203,  -203,  -203,    29,    29,    20,    20,
-     459,   459,   104,  -203,  -203,  -203,  -203,  -203,  -203,    46,
-    -203,    68,  -203,   328,   291,    75,   119,  -203,   324,  -203,
-     336,   342,  -203,   541,  -203,   541,   155,  -203,  -203,   -28,
-     -28,  -203,  -203,  -203,   351,    29,    29,    29,    29,    29,
-     350,    81,  -203,    78,  -203,  -203,   358,  -203,   197,  -203,
-     316,  -203,  -203,  -203,  -203,  -203,  -203,   363,    29,   197,
-     321,  -203,  -203,   155,   541,  -203,   373,   361,  -203,  -203,
-    -203,    91,    91,    91,  -203,  -203,  -203,  -203,   260,   130,
-    -203,  -203,   357,   -38,   369,   332,  -203,  -203,  -203,   129,
-    -203,   376,   334,   378,   341,  -203,   210,  -203,  -203,  -203,
-    -203,  -203,  -203,  -203,  -203,  -203,   -30,   374,  -203,  -203,
-    -203,   168,  -203,  -203,  -203,  -203,  -203,  -203,   194,   216,
-    -203,  -203,  -203,    29,  -203,  -203,   386,   349,  -203,  -203,
-    -203,  -203,  -203,    29,   393,   365,  -203,  -203,   400,   366,
-    -203,  -203,  -203,  -203,  -203
+     306,   -13,  -204,   -14,    68,     5,  -204,  -204,    22,   556,
+     -12,   356,    21,     4,  -204,   601,   614,  -204,    43,    58,
+     139,    60,   143,    79,    90,    98,   100,   102,  -204,  -204,
+     104,   111,  -204,  -204,   154,  -204,  -204,   234,  -204,   588,
+    -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,
+    -204,    70,   192,  -204,    65,   356,  -204,  -204,  -204,   135,
+     406,  -204,    93,    23,   107,   153,   162,   124,    99,   234,
+     588,   167,  -204,  -204,  -204,  -204,  -204,   165,   133,   178,
+     206,   144,   210,   145,   213,   225,   229,   232,   233,   238,
+     239,   149,   241,   156,   242,   250,   256,   257,   258,  -204,
+    -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,
+    -204,  -204,  -204,  -204,  -204,   169,   170,  -204,  -204,  -204,
+    -204,   588,  -204,  -204,  -204,  -204,  -204,   456,   456,  -204,
+    -204,  -204,  -204,  -204,  -204,  -204,   184,  -204,   -10,  -204,
+       7,  -204,  -204,  -204,  -204,    19,  -204,  -204,   226,    41,
+     588,   588,  -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,
+    -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,
+    -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,
+    -204,  -204,  -204,  -204,  -204,  -204,   406,   406,   147,   147,
+     506,   506,   201,  -204,  -204,  -204,  -204,  -204,  -204,    11,
+    -204,    82,  -204,   270,   235,    32,    36,  -204,    82,  -204,
+     275,   276,  -204,   588,  -204,   588,    41,  -204,  -204,    65,
+      65,  -204,  -204,  -204,   285,   406,   406,   406,   406,   406,
+     286,   204,  -204,    -4,  -204,  -204,   281,  -204,   137,  -204,
+     243,  -204,  -204,  -204,  -204,  -204,  -204,   282,   406,   137,
+    -204,   244,  -204,  -204,    41,   588,  -204,   293,   299,  -204,
+    -204,  -204,   180,   180,   180,  -204,  -204,  -204,  -204,   208,
+       6,  -204,  -204,   278,   -30,   295,   253,  -204,  -204,  -204,
+      46,  -204,   300,   263,   310,   268,  -204,   184,  -204,    74,
+    -204,  -204,  -204,  -204,  -204,  -204,  -204,  -204,   -24,   301,
+    -204,  -204,  -204,    87,  -204,  -204,  -204,  -204,  -204,  -204,
+     109,  -204,  -204,   248,  -204,  -204,  -204,   406,  -204,  -204,
+     315,   273,  -204,  -204,   322,   280,  -204,  -204,  -204,   406,
+     324,   288,  -204,  -204,   325,   289,  -204,  -204,  -204,  -204,
+    -204,  -204,  -204
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -954,49 +956,50 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,   148,     0,     0,     0,   148,   148,     0,     0,
-       0,     0,   166,    53,    54,     0,     0,   112,     0,     0,
+       0,     0,   150,     0,     0,     0,   150,   150,     0,     0,
+       0,     0,   168,    53,    54,     0,     0,   114,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     3,     6,
-       0,     0,   148,   148,     0,    55,    58,    60,   165,    61,
+       0,     0,   150,   150,     0,    55,    58,    60,   167,    61,
       65,    75,    69,    66,    63,    71,    64,    70,    72,    73,
-      74,     0,   150,   157,   158,     0,     4,     5,   132,     0,
-       0,   148,   148,     0,   148,     0,     0,   148,    53,   107,
-     103,     0,   146,   145,   147,   162,   159,   167,     0,     0,
+      74,     0,   152,   159,   160,     0,     4,     5,   134,     0,
+       0,   150,   150,     0,   150,     0,     0,   150,    53,   109,
+     105,     0,   148,   147,   149,   164,   161,   169,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    15,
       24,    39,    33,    48,    30,    42,    36,    45,    27,    51,
       52,    21,    18,     9,    10,     0,     0,     1,    53,    59,
-      56,    62,   143,   144,     2,   148,   148,   151,   152,   148,
-     148,   161,   160,   148,   149,   131,   133,   142,     0,   148,
-       0,   148,   148,   148,   148,     0,   148,   148,     0,     0,
-     105,   104,   113,   168,   148,    17,    26,    41,    35,    50,
+      56,    62,   145,   146,     2,   150,   150,   153,   154,   150,
+     150,   163,   162,   150,   151,   133,   135,   144,     0,   150,
+       0,   150,   150,   150,   150,     0,   150,   150,     0,     0,
+     107,   106,   115,   170,   150,    17,    26,    41,    35,    50,
       32,    44,    38,    47,    29,    23,    20,    13,    14,    16,
       25,    40,    34,    49,    31,    43,    37,    46,    28,    22,
-      19,    11,    12,   111,   102,    57,     0,     0,   155,   156,
-       0,     0,     0,   148,   148,   148,   148,   148,   148,     0,
-     148,     0,   148,     0,     0,     0,     0,   148,     0,   148,
-       0,     0,   148,   100,    99,   106,     0,   153,   154,   164,
-     163,   148,   148,   108,     0,     0,     0,   135,   136,   134,
-       0,   117,   148,     0,   148,   148,     0,     7,     0,   148,
-       0,    86,    87,   148,   148,   148,   148,     0,     0,     0,
-       0,    67,    68,     0,   101,    97,     0,     0,   110,   137,
-     138,   139,   140,   141,    96,   123,   125,   127,   118,     0,
-      94,   129,     0,     0,     0,     0,    76,     8,   148,     0,
-      77,     0,     0,     0,     0,    88,     0,   148,    89,    98,
-     109,   148,   124,   126,   128,    95,     0,     0,   148,    78,
-      79,     0,   148,   148,    84,    85,    90,    91,     0,   114,
-     148,   130,   119,   120,   148,   148,     0,     0,   148,   148,
-     148,   116,   121,   122,     0,     0,    82,    83,     0,     0,
-     115,    80,    81,    92,    93
+      19,    11,    12,   113,   104,    57,     0,     0,   157,   158,
+       0,     0,     0,   150,   150,   150,   150,   150,   150,     0,
+     150,     0,   150,     0,     0,     0,     0,   150,     0,   150,
+       0,     0,   150,   102,   101,   108,     0,   155,   156,   166,
+     165,   150,   150,   110,     0,     0,     0,   137,   138,   136,
+       0,   119,   150,     0,   150,   150,     0,     7,     0,   150,
+       0,    86,    87,   150,   150,   150,   150,     0,     0,     0,
+     150,     0,    67,    68,     0,   103,    99,     0,     0,   112,
+     139,   140,   141,   142,   143,    98,   125,   127,   129,   120,
+       0,    96,   131,     0,     0,     0,     0,    76,     8,   150,
+       0,    77,     0,     0,     0,     0,    88,     0,   150,     0,
+      89,   100,   111,   150,   126,   128,   130,    97,     0,     0,
+     150,    78,    79,     0,   150,   150,    84,    85,    90,    91,
+       0,   150,   150,   116,   150,   132,   121,   122,   150,   150,
+       0,     0,   150,   150,     0,     0,   150,   118,   123,   124,
+       0,     0,    82,    83,     0,     0,    94,    95,   117,    80,
+      81,    92,    93
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -203,  -203,   220,   -36,   -33,   -60,   420,  -203,    -7,  -203,
-    -203,  -203,  -203,  -203,  -123,  -203,  -203,  -203,  -203,  -203,
-    -203,   121,  -203,   201,  -203,   170,  -202,    -6,  -203,   232,
-    -203,   -46,   -48,  -203,  -116,    24,   125,  -203
+    -204,  -204,   140,   -36,    35,   -60,   345,  -204,    -7,  -204,
+    -204,  -204,  -204,  -204,  -198,  -204,  -204,  -204,  -204,  -204,
+    -204,    42,  -204,   130,  -204,    83,  -203,    -6,  -204,    -5,
+    -204,   -46,   -48,  -204,  -120,    24,    66,  -204
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
@@ -1004,7 +1007,7 @@ static const yytype_int16 yydefgoto[] =
 {
       -1,    34,   238,    35,    36,   121,    37,    38,    39,    40,
       41,    42,    43,    44,   214,    45,    46,    47,    48,    49,
-      50,   224,   230,   231,   232,   273,    58,    59,   135,   136,
+      50,   224,   230,   231,   232,   274,    58,    59,   135,   136,
      124,    75,    60,    51,    52,   137,    54,    55
 };
 
@@ -1013,130 +1016,142 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_uint16 yytable[] =
 {
-      65,    66,    70,   120,   119,   247,    61,   250,   198,   131,
-     151,   188,   189,   138,   140,   297,   145,   143,   101,   149,
-     129,   102,   298,   297,    53,   130,   115,   116,    62,    64,
-     310,    67,     2,    63,   120,    76,   119,     3,   134,     4,
-       5,     6,     7,   283,   284,     8,     9,    10,   103,    56,
-      57,    11,    12,   125,   126,    13,    14,    15,    16,    17,
-     234,   150,   141,    71,    18,    19,    20,    21,    22,    77,
-     217,   218,    23,    24,    25,    26,    27,   186,   187,   132,
-     134,   190,   191,    30,    31,   185,    32,   270,    33,   243,
-     215,   199,    78,   255,   237,   205,   206,   134,    72,    73,
-      74,   200,    99,   235,   271,   142,   216,   117,   201,   221,
-     222,   223,   122,   123,   120,   185,   328,   329,    72,    73,
-      74,   265,   266,   267,   193,   194,   134,   192,   100,   134,
-     289,   104,   244,   245,   108,   203,   204,   272,   134,   295,
-     210,   211,   213,   302,   202,   225,   226,   227,   228,   229,
-     233,    53,    53,   254,   109,   239,   271,   105,     2,   248,
-     106,   248,   207,     3,   253,     4,     5,     6,     7,   208,
-     134,   157,   161,    10,   158,   162,   246,   120,   110,   185,
-     134,   134,   314,   111,   269,    17,   303,   107,   112,   272,
-     171,   279,   278,   172,   236,   113,   240,   248,   248,   134,
-     114,   159,   163,   287,   133,   209,   134,   146,   318,   213,
-      53,    53,    32,   139,    33,   256,   257,   144,   185,   134,
-     173,   320,   222,   277,   175,   315,     2,   176,   274,   275,
-     301,     3,   147,     4,     5,     6,     7,   281,   282,   308,
-     148,    10,   153,   193,   194,   134,   213,    72,    73,    74,
-     313,   319,   152,    17,   177,   118,    14,    15,    16,   195,
-     196,   197,   323,   154,    18,    19,    20,    21,    22,   155,
-     248,   248,    23,    24,    25,    26,    27,   125,   126,   156,
-      32,   160,    33,    30,    31,   309,   183,    79,    80,    81,
-      82,    83,   312,   127,   128,    84,   316,   317,    85,    86,
-     292,   293,   294,   164,   322,   165,    87,    88,   324,   325,
-       1,   166,     2,   167,   330,   219,   220,     3,   168,     4,
-       5,     6,     7,   169,   170,     8,     9,    10,   174,   178,
-     179,    11,    12,   180,   181,    13,    14,    15,    16,    17,
-     182,   184,   212,   241,    18,    19,    20,    21,    22,   242,
-     237,   251,    23,    24,    25,    26,    27,   252,   258,   264,
-      28,    29,     2,    30,    31,   291,    32,     3,    33,     4,
-       5,     6,     7,   276,   280,     8,     9,    10,   285,   288,
-     290,    11,    12,   271,   299,    13,    14,    15,    16,    17,
-     300,   304,   305,   306,    18,    19,    20,    21,    22,   307,
-     311,   326,    23,    24,    25,    26,    27,   327,   331,    72,
-      73,    74,     2,    30,    31,   333,    32,     3,    33,     4,
-       5,     6,     7,   332,   334,     8,     9,    10,   249,    69,
-     321,    11,    12,   268,     0,    13,    14,    15,    16,    17,
-       0,     0,   296,     0,    18,    19,    20,    21,    22,     0,
-       0,     0,    23,    24,    25,    26,    27,   259,   260,   261,
-     262,   263,     2,    30,    31,     0,    32,     3,    33,     4,
-       5,     6,     7,     0,     0,     8,     9,    10,     0,     0,
-     286,     0,     0,     0,     0,    13,    14,    15,    16,    17,
-       0,     0,     0,     0,    18,    19,    20,    21,    22,     0,
-       0,     0,    23,    24,    25,    26,    27,     0,     0,     0,
-     134,     0,     2,    30,    31,     0,    32,     3,    33,     4,
-       5,     6,     7,     0,     0,     0,     0,    10,     0,     0,
-       0,     0,     0,     0,     0,    68,    14,    15,    16,    17,
-       0,     0,     0,     0,    18,    19,    20,    21,    22,     0,
-       0,     0,    23,    24,    25,    26,    27,     0,     0,     0,
-       0,     0,     0,    30,    31,     0,    32,     0,    33,    15,
-      16,     0,     0,     0,     0,     0,    18,    19,    20,    21,
-      22,     0,     0,     0,    23,    24,    25,    26,    27,    89,
-      90,    91,    92,    93,     0,    30,    31,    94,     0,     0,
+      65,    66,    70,   120,   247,   271,   251,   188,   189,   131,
+     151,   198,    61,   138,   140,   297,   145,   143,   256,   149,
+      71,   200,   272,   299,    53,   234,   115,   116,   201,   299,
+     300,    64,   272,   207,   120,    76,   314,   141,    56,    57,
+     208,   134,   284,   285,     2,    77,   243,   134,    67,     3,
+     245,     4,     5,     6,     7,   273,   291,   134,   134,    10,
+     304,   150,   134,    78,   202,   273,   217,   218,   235,    99,
+     134,    17,   119,    72,    73,    74,   209,   186,   187,   132,
+     142,   190,   191,   134,   100,   185,   104,   134,   311,   244,
+     215,   199,   134,   246,    62,   205,   206,   134,    32,    63,
+      33,   318,     2,   305,   119,   108,   216,     3,   237,     4,
+       5,     6,     7,   129,   120,   185,   109,    10,   130,   334,
+     335,   122,   123,   322,   110,   134,   111,   192,   112,    17,
+     113,   312,    72,    73,    74,   203,   204,   114,   134,   133,
+     210,   211,   213,   139,   319,   225,   226,   227,   228,   229,
+     233,    53,    53,   255,   117,   239,    32,   144,    33,   248,
+     134,   248,   250,   278,   254,   101,   323,   146,   102,   105,
+     157,   161,   106,   158,   162,   171,   147,   120,   172,   185,
+     125,   126,   175,   148,   270,   176,   152,    72,    73,    74,
+     153,   280,   279,   154,   236,   103,   240,   248,   248,   107,
+     159,   163,   289,   288,   155,   173,   221,   222,   223,   213,
+      53,    53,   177,   193,   194,   257,   258,   193,   194,   185,
+     260,   261,   262,   263,   264,   125,   126,   183,   275,   276,
+     184,   303,   156,   195,   196,   197,   160,   282,   283,   164,
+     310,   127,   128,   287,   266,   267,   268,   213,   294,   295,
+     296,   165,   317,   326,   222,   166,   219,   220,   167,   168,
+     118,    14,    15,    16,   169,   170,   329,   174,   178,    18,
+      19,    20,    21,    22,   248,   248,   179,    23,    24,    25,
+      26,    27,   180,   181,   182,   241,   212,   313,    30,    31,
+     252,   253,   259,   242,   316,   265,   277,   286,   320,   321,
+     292,   281,   290,   293,   272,   324,   325,     1,   328,     2,
+     301,   302,   330,   331,     3,   306,     4,     5,     6,     7,
+     338,   307,     8,     9,    10,   308,   309,   315,    11,    12,
+     332,   333,    13,    14,    15,    16,    17,   336,   337,   339,
+     341,    18,    19,    20,    21,    22,   340,   342,   249,    23,
+      24,    25,    26,    27,    69,   327,   298,    28,    29,     2,
+      30,    31,   269,    32,     3,    33,     4,     5,     6,     7,
+       0,     0,     8,     9,    10,     0,     0,     0,    11,    12,
+       0,     0,    13,    14,    15,    16,    17,     0,     0,     0,
+       0,    18,    19,    20,    21,    22,     0,     0,     0,    23,
+      24,    25,    26,    27,     0,     0,    72,    73,    74,     2,
+      30,    31,     0,    32,     3,    33,     4,     5,     6,     7,
+       0,     0,     8,     9,    10,     0,     0,     0,    11,    12,
+       0,     0,    13,    14,    15,    16,    17,     0,     0,     0,
+       0,    18,    19,    20,    21,    22,     0,     0,     0,    23,
+      24,    25,    26,    27,     0,     0,     0,   134,     0,     2,
+      30,    31,     0,    32,     3,    33,     4,     5,     6,     7,
+       0,     0,     8,     9,    10,     0,     0,     0,    11,    12,
+       0,     0,    13,    14,    15,    16,    17,     0,     0,     0,
+       0,    18,    19,    20,    21,    22,     0,     0,     0,    23,
+      24,    25,    26,    27,     0,     0,     0,     0,     0,     2,
+      30,    31,     0,    32,     3,    33,     4,     5,     6,     7,
+       0,     0,     8,     9,    10,     0,     0,     0,     0,     0,
+       0,     0,    13,    14,    15,    16,    17,     0,     0,     0,
+       0,    18,    19,    20,    21,    22,     0,     0,     0,    23,
+      24,    25,    26,    27,     0,     0,     0,   134,     0,     2,
+      30,    31,     0,    32,     3,    33,     4,     5,     6,     7,
+       0,     0,     0,     0,    10,     0,     0,     0,     0,     0,
+       0,     0,    68,    14,    15,    16,    17,     0,     0,     0,
+       0,    18,    19,    20,    21,    22,     0,     0,     0,    23,
+      24,    25,    26,    27,     0,     0,     0,     0,     0,     0,
+      30,    31,     0,    32,     0,    33,    15,    16,     0,     0,
+       0,     0,     0,    18,    19,    20,    21,    22,     0,     0,
+       0,    23,    24,    25,    26,    27,    79,    80,    81,    82,
+      83,     0,    30,    31,    84,     0,     0,    85,    86,    89,
+      90,    91,    92,    93,     0,    87,    88,    94,     0,     0,
       95,    96,     0,     0,     0,     0,     0,     0,    97,    98
 };
 
 static const yytype_int16 yycheck[] =
 {
-       6,     7,     9,    39,    37,   207,    26,   209,    21,    55,
-      70,   127,   128,    61,    62,    53,    64,    63,    26,    67,
-      48,    29,    60,    53,     0,    53,    32,    33,    26,    26,
-      60,    26,     3,    31,    70,    11,    69,     8,    51,    10,
-      11,    12,    13,   245,   246,    16,    17,    18,    56,    51,
-      52,    22,    23,    33,    34,    26,    27,    28,    29,    30,
-      14,    68,    14,    32,    35,    36,    37,    38,    39,    24,
-     186,   187,    43,    44,    45,    46,    47,   125,   126,    55,
-      51,   129,   130,    54,    55,   121,    57,     9,    59,    14,
-     150,   139,    59,   216,    26,   143,   144,    51,    50,    51,
-      52,    14,    26,    57,    26,    57,   154,     0,    21,     5,
-       6,     7,    51,    52,   150,   151,   318,   319,    50,    51,
-      52,    40,    41,    42,    33,    34,    51,   133,    26,    51,
-     253,    26,    57,    14,    26,   141,   142,    59,    51,     9,
-     146,   147,   149,    14,    57,   193,   194,   195,   196,   197,
-     198,   127,   128,   213,    26,   201,    26,    26,     3,   207,
-      29,   209,    14,     8,   212,    10,    11,    12,    13,    21,
-      51,    26,    26,    18,    29,    29,    57,   213,    26,   215,
-      51,    51,    14,    26,   232,    30,    57,    56,    26,    59,
-      26,   239,   238,    29,   200,    26,   202,   245,   246,    51,
-      26,    56,    56,   249,     4,    57,    51,    14,    14,   216,
-     186,   187,    57,    50,    59,   221,   222,    50,   254,    51,
-      56,     5,     6,    26,    26,    57,     3,    29,   234,   235,
-     278,     8,    14,    10,    11,    12,    13,   243,   244,   287,
-      59,    18,    25,    33,    34,    51,   253,    50,    51,    52,
-     298,    57,    19,    30,    56,    26,    27,    28,    29,    49,
-      50,    51,   310,    60,    35,    36,    37,    38,    39,    26,
-     318,   319,    43,    44,    45,    46,    47,    33,    34,    26,
-      57,    26,    59,    54,    55,   291,    58,    35,    36,    37,
-      38,    39,   298,    49,    50,    43,   302,   303,    46,    47,
-      40,    41,    42,    26,   310,    26,    54,    55,   314,   315,
-       1,    26,     3,    26,   320,   190,   191,     8,    26,    10,
-      11,    12,    13,    26,    26,    16,    17,    18,    26,    26,
-      26,    22,    23,    26,    26,    26,    27,    28,    29,    30,
-      26,    60,    60,    15,    35,    36,    37,    38,    39,    58,
-      26,    15,    43,    44,    45,    46,    47,    15,     7,     9,
-      51,    52,     3,    54,    55,     4,    57,     8,    59,    10,
-      11,    12,    13,    15,    58,    16,    17,    18,    15,    58,
-       7,    22,    23,    26,    15,    26,    27,    28,    29,    30,
-      58,    15,    58,    15,    35,    36,    37,    38,    39,    58,
-      26,    15,    43,    44,    45,    46,    47,    58,    15,    50,
-      51,    52,     3,    54,    55,    15,    57,     8,    59,    10,
-      11,    12,    13,    58,    58,    16,    17,    18,   208,     9,
-     309,    22,    23,   232,    -1,    26,    27,    28,    29,    30,
-      -1,    -1,   272,    -1,    35,    36,    37,    38,    39,    -1,
-      -1,    -1,    43,    44,    45,    46,    47,   225,   226,   227,
-     228,   229,     3,    54,    55,    -1,    57,     8,    59,    10,
-      11,    12,    13,    -1,    -1,    16,    17,    18,    -1,    -1,
-     248,    -1,    -1,    -1,    -1,    26,    27,    28,    29,    30,
-      -1,    -1,    -1,    -1,    35,    36,    37,    38,    39,    -1,
-      -1,    -1,    43,    44,    45,    46,    47,    -1,    -1,    -1,
-      51,    -1,     3,    54,    55,    -1,    57,     8,    59,    10,
-      11,    12,    13,    -1,    -1,    -1,    -1,    18,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    26,    27,    28,    29,    30,
-      -1,    -1,    -1,    -1,    35,    36,    37,    38,    39,    -1,
-      -1,    -1,    43,    44,    45,    46,    47,    -1,    -1,    -1,
-      -1,    -1,    -1,    54,    55,    -1,    57,    -1,    59,    28,
-      29,    -1,    -1,    -1,    -1,    -1,    35,    36,    37,    38,
-      39,    -1,    -1,    -1,    43,    44,    45,    46,    47,    35,
+       6,     7,     9,    39,   207,     9,   209,   127,   128,    55,
+      70,    21,    26,    61,    62,     9,    64,    63,   216,    67,
+      32,    14,    26,    53,     0,    14,    32,    33,    21,    53,
+      60,    26,    26,    14,    70,    11,    60,    14,    51,    52,
+      21,    51,   245,   246,     3,    24,    14,    51,    26,     8,
+      14,    10,    11,    12,    13,    59,   254,    51,    51,    18,
+      14,    68,    51,    59,    57,    59,   186,   187,    57,    26,
+      51,    30,    37,    50,    51,    52,    57,   125,   126,    55,
+      57,   129,   130,    51,    26,   121,    26,    51,    14,    57,
+     150,   139,    51,    57,    26,   143,   144,    51,    57,    31,
+      59,    14,     3,    57,    69,    26,   154,     8,    26,    10,
+      11,    12,    13,    48,   150,   151,    26,    18,    53,   322,
+     323,    51,    52,    14,    26,    51,    26,   133,    26,    30,
+      26,    57,    50,    51,    52,   141,   142,    26,    51,     4,
+     146,   147,   149,    50,    57,   193,   194,   195,   196,   197,
+     198,   127,   128,   213,     0,   201,    57,    50,    59,   207,
+      51,   209,   208,    26,   212,    26,    57,    14,    29,    26,
+      26,    26,    29,    29,    29,    26,    14,   213,    29,   215,
+      33,    34,    26,    59,   232,    29,    19,    50,    51,    52,
+      25,   239,   238,    60,   200,    56,   202,   245,   246,    56,
+      56,    56,   250,   249,    26,    56,     5,     6,     7,   216,
+     186,   187,    56,    33,    34,   221,   222,    33,    34,   255,
+     225,   226,   227,   228,   229,    33,    34,    58,   234,   235,
+      60,   279,    26,    49,    50,    51,    26,   243,   244,    26,
+     288,    49,    50,   248,    40,    41,    42,   254,    40,    41,
+      42,    26,   300,     5,     6,    26,   190,   191,    26,    26,
+      26,    27,    28,    29,    26,    26,   314,    26,    26,    35,
+      36,    37,    38,    39,   322,   323,    26,    43,    44,    45,
+      46,    47,    26,    26,    26,    15,    60,   293,    54,    55,
+      15,    15,     7,    58,   300,     9,    15,    15,   304,   305,
+       7,    58,    58,     4,    26,   311,   312,     1,   314,     3,
+      15,    58,   318,   319,     8,    15,    10,    11,    12,    13,
+     326,    58,    16,    17,    18,    15,    58,    26,    22,    23,
+      15,    58,    26,    27,    28,    29,    30,    15,    58,    15,
+      15,    35,    36,    37,    38,    39,    58,    58,   208,    43,
+      44,    45,    46,    47,     9,   313,   273,    51,    52,     3,
+      54,    55,   232,    57,     8,    59,    10,    11,    12,    13,
+      -1,    -1,    16,    17,    18,    -1,    -1,    -1,    22,    23,
+      -1,    -1,    26,    27,    28,    29,    30,    -1,    -1,    -1,
+      -1,    35,    36,    37,    38,    39,    -1,    -1,    -1,    43,
+      44,    45,    46,    47,    -1,    -1,    50,    51,    52,     3,
+      54,    55,    -1,    57,     8,    59,    10,    11,    12,    13,
+      -1,    -1,    16,    17,    18,    -1,    -1,    -1,    22,    23,
+      -1,    -1,    26,    27,    28,    29,    30,    -1,    -1,    -1,
+      -1,    35,    36,    37,    38,    39,    -1,    -1,    -1,    43,
+      44,    45,    46,    47,    -1,    -1,    -1,    51,    -1,     3,
+      54,    55,    -1,    57,     8,    59,    10,    11,    12,    13,
+      -1,    -1,    16,    17,    18,    -1,    -1,    -1,    22,    23,
+      -1,    -1,    26,    27,    28,    29,    30,    -1,    -1,    -1,
+      -1,    35,    36,    37,    38,    39,    -1,    -1,    -1,    43,
+      44,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,     3,
+      54,    55,    -1,    57,     8,    59,    10,    11,    12,    13,
+      -1,    -1,    16,    17,    18,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    26,    27,    28,    29,    30,    -1,    -1,    -1,
+      -1,    35,    36,    37,    38,    39,    -1,    -1,    -1,    43,
+      44,    45,    46,    47,    -1,    -1,    -1,    51,    -1,     3,
+      54,    55,    -1,    57,     8,    59,    10,    11,    12,    13,
+      -1,    -1,    -1,    -1,    18,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    26,    27,    28,    29,    30,    -1,    -1,    -1,
+      -1,    35,    36,    37,    38,    39,    -1,    -1,    -1,    43,
+      44,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,    -1,
+      54,    55,    -1,    57,    -1,    59,    28,    29,    -1,    -1,
+      -1,    -1,    -1,    35,    36,    37,    38,    39,    -1,    -1,
+      -1,    43,    44,    45,    46,    47,    35,    36,    37,    38,
+      39,    -1,    54,    55,    43,    -1,    -1,    46,    47,    35,
       36,    37,    38,    39,    -1,    54,    55,    43,    -1,    -1,
       46,    47,    -1,    -1,    -1,    -1,    -1,    -1,    54,    55
 };
@@ -1170,15 +1185,16 @@ static const yytype_uint8 yystos[] =
       97,     5,     6,     7,    82,    93,    93,    93,    93,    93,
       83,    84,    85,    93,    14,    57,    88,    26,    63,    92,
       88,    15,    58,    14,    57,    14,    57,    87,    93,    63,
-      87,    15,    15,    93,    66,    75,    88,    88,     7,    90,
-      90,    90,    90,    90,     9,    40,    41,    42,    84,    93,
-       9,    26,    59,    86,    88,    88,    15,    26,    92,    93,
-      58,    88,    88,    87,    87,    15,    90,    92,    58,    75,
-       7,     4,    40,    41,    42,     9,    86,    53,    60,    15,
-      58,    93,    14,    57,    15,    58,    15,    58,    93,    88,
-      60,    26,    88,    93,    14,    57,    88,    88,    14,    57,
-       5,    82,    88,    93,    88,    88,    15,    58,    87,    87,
-      88,    15,    58,    15,    58
+      92,    87,    15,    15,    93,    66,    75,    88,    88,     7,
+      90,    90,    90,    90,    90,     9,    40,    41,    42,    84,
+      93,     9,    26,    59,    86,    88,    88,    15,    26,    92,
+      93,    58,    88,    88,    87,    87,    15,    90,    92,    93,
+      58,    75,     7,     4,    40,    41,    42,     9,    86,    53,
+      60,    15,    58,    93,    14,    57,    15,    58,    15,    58,
+      93,    14,    57,    88,    60,    26,    88,    93,    14,    57,
+      88,    88,    14,    57,    88,    88,     5,    82,    88,    93,
+      88,    88,    15,    58,    87,    87,    15,    58,    88,    15,
+      58,    15,    58
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
@@ -1193,14 +1209,15 @@ static const yytype_uint8 yyr1[] =
       68,    68,    68,    68,    68,    69,    69,    69,    69,    69,
       69,    69,    69,    69,    69,    69,    70,    70,    70,    70,
       70,    70,    70,    70,    71,    71,    71,    71,    72,    72,
-      72,    72,    72,    72,    73,    73,    73,    74,    74,    74,
-      75,    75,    76,    77,    77,    77,    77,    77,    78,    78,
-      78,    79,    80,    81,    82,    82,    82,    83,    83,    84,
-      84,    84,    84,    85,    85,    85,    85,    85,    85,    86,
-      86,    87,    88,    88,    89,    89,    89,    90,    90,    90,
-      90,    90,    90,    91,    91,    92,    92,    92,    93,    93,
-      94,    94,    94,    95,    95,    95,    95,    95,    96,    96,
-      96,    96,    96,    97,    97,    97,    98,    98,    98
+      72,    72,    72,    72,    72,    72,    73,    73,    73,    74,
+      74,    74,    75,    75,    76,    77,    77,    77,    77,    77,
+      78,    78,    78,    79,    80,    81,    82,    82,    82,    83,
+      83,    84,    84,    84,    84,    85,    85,    85,    85,    85,
+      85,    86,    86,    87,    88,    88,    89,    89,    89,    90,
+      90,    90,    90,    90,    90,    91,    91,    92,    92,    92,
+      93,    93,    94,    94,    94,    95,    95,    95,    95,    95,
+      96,    96,    96,    96,    96,    97,    97,    97,    98,    98,
+      98
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1215,14 +1232,15 @@ static const yytype_uint8 yyr2[] =
        1,     1,     2,     1,     1,     1,     1,     5,     5,     1,
        1,     1,     1,     1,     1,     1,     6,     6,     7,     7,
       10,    10,     9,     9,     7,     7,     5,     5,     6,     6,
-       7,     7,    10,    10,     6,     7,     6,     5,     6,     4,
-       1,     2,     3,     2,     3,     3,     4,     2,     5,     7,
-       6,     3,     1,     3,     4,     6,     5,     1,     2,     4,
-       4,     5,     5,     2,     3,     2,     3,     2,     3,     1,
-       3,     2,     1,     2,     3,     3,     3,     4,     4,     4,
-       4,     4,     1,     1,     1,     1,     1,     1,     0,     2,
-       1,     2,     2,     4,     4,     3,     3,     1,     1,     2,
-       2,     2,     2,     4,     4,     1,     1,     2,     3
+       7,     7,    10,    10,     9,     9,     6,     7,     6,     5,
+       6,     4,     1,     2,     3,     2,     3,     3,     4,     2,
+       5,     7,     6,     3,     1,     3,     4,     6,     5,     1,
+       2,     4,     4,     5,     5,     2,     3,     2,     3,     2,
+       3,     1,     3,     2,     1,     2,     3,     3,     3,     4,
+       4,     4,     4,     4,     1,     1,     1,     1,     1,     1,
+       0,     2,     1,     2,     2,     4,     4,     3,     3,     1,
+       1,     2,     2,     2,     2,     4,     4,     1,     1,     2,
+       3
 };
 
 
@@ -1911,7 +1929,7 @@ yyreduce:
                            parser_state |= PST_EOFTOKEN;
                          YYACCEPT;
                        }
-#line 1915 "y.tab.c" /* yacc.c:1648  */
+#line 1933 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 3:
@@ -1924,7 +1942,7 @@ yyreduce:
                            parser_state |= PST_EOFTOKEN;
                          YYACCEPT;
                        }
-#line 1928 "y.tab.c" /* yacc.c:1648  */
+#line 1946 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 4:
@@ -1943,7 +1961,7 @@ yyreduce:
                              YYABORT;
                            }
                        }
-#line 1947 "y.tab.c" /* yacc.c:1648  */
+#line 1965 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 5:
@@ -1952,7 +1970,8 @@ yyreduce:
                          /* EOF after an error.  Do ignoreeof or not.  Really
                             only interesting in non-interactive shells */
                          global_command = (COMMAND *)NULL;
-                         last_command_exit_value = 1;
+                         if (last_command_exit_value == 0)
+                           last_command_exit_value = EX_BADUSAGE;      /* force error return */
                          handle_eof_input_unit ();
                          if (interactive && parse_and_execute_level == 0)
                            {
@@ -1963,11 +1982,11 @@ yyreduce:
                              YYABORT;
                            }
                        }
-#line 1967 "y.tab.c" /* yacc.c:1648  */
+#line 1986 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 6:
-#line 433 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 434 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          /* Case of EOF seen by itself.  Do ignoreeof or
                             not. */
@@ -1975,495 +1994,495 @@ yyreduce:
                          handle_eof_input_unit ();
                          YYACCEPT;
                        }
-#line 1979 "y.tab.c" /* yacc.c:1648  */
+#line 1998 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 7:
-#line 443 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 444 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
-#line 1985 "y.tab.c" /* yacc.c:1648  */
+#line 2004 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 8:
-#line 445 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 446 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-1].word_list)); }
-#line 1991 "y.tab.c" /* yacc.c:1648  */
+#line 2010 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 9:
-#line 449 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 450 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 1;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
                        }
-#line 2001 "y.tab.c" /* yacc.c:1648  */
+#line 2020 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 10:
-#line 455 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 456 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 0;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
                        }
-#line 2011 "y.tab.c" /* yacc.c:1648  */
+#line 2030 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 11:
-#line 461 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 462 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
                        }
-#line 2021 "y.tab.c" /* yacc.c:1648  */
+#line 2040 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 12:
-#line 467 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 468 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
                        }
-#line 2031 "y.tab.c" /* yacc.c:1648  */
+#line 2050 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 13:
-#line 473 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 474 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_output_direction, redir, REDIR_VARASSIGN);
                        }
-#line 2041 "y.tab.c" /* yacc.c:1648  */
+#line 2060 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 14:
-#line 479 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 480 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_input_direction, redir, REDIR_VARASSIGN);
                        }
-#line 2051 "y.tab.c" /* yacc.c:1648  */
+#line 2070 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 15:
-#line 485 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 486 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 1;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
                        }
-#line 2061 "y.tab.c" /* yacc.c:1648  */
+#line 2080 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 16:
-#line 491 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 492 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
                        }
-#line 2071 "y.tab.c" /* yacc.c:1648  */
+#line 2090 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 17:
-#line 497 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 498 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_appending_to, redir, REDIR_VARASSIGN);
                        }
-#line 2081 "y.tab.c" /* yacc.c:1648  */
+#line 2100 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 18:
-#line 503 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 504 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 1;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
                        }
-#line 2091 "y.tab.c" /* yacc.c:1648  */
+#line 2110 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 19:
-#line 509 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 510 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
                        }
-#line 2101 "y.tab.c" /* yacc.c:1648  */
+#line 2120 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 20:
-#line 515 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 516 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_output_force, redir, REDIR_VARASSIGN);
                        }
-#line 2111 "y.tab.c" /* yacc.c:1648  */
+#line 2130 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 21:
-#line 521 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 522 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 0;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
                        }
-#line 2121 "y.tab.c" /* yacc.c:1648  */
+#line 2140 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 22:
-#line 527 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 528 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
                        }
-#line 2131 "y.tab.c" /* yacc.c:1648  */
+#line 2150 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 23:
-#line 533 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 534 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_input_output, redir, REDIR_VARASSIGN);
                        }
-#line 2141 "y.tab.c" /* yacc.c:1648  */
+#line 2160 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 24:
-#line 539 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 540 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 0;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
                          push_heredoc ((yyval.redirect));
                        }
-#line 2152 "y.tab.c" /* yacc.c:1648  */
+#line 2171 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 25:
-#line 546 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 547 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
                          push_heredoc ((yyval.redirect));
                        }
-#line 2163 "y.tab.c" /* yacc.c:1648  */
+#line 2182 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 26:
-#line 553 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 554 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
                          push_heredoc ((yyval.redirect));
                        }
-#line 2174 "y.tab.c" /* yacc.c:1648  */
+#line 2193 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 27:
-#line 560 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 561 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 0;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
                          push_heredoc ((yyval.redirect));
                        }
-#line 2185 "y.tab.c" /* yacc.c:1648  */
+#line 2204 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 28:
-#line 567 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 568 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
                          push_heredoc ((yyval.redirect));
                        }
-#line 2196 "y.tab.c" /* yacc.c:1648  */
+#line 2215 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 29:
-#line 574 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 575 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
                          push_heredoc ((yyval.redirect));
                        }
-#line 2207 "y.tab.c" /* yacc.c:1648  */
+#line 2226 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 30:
-#line 581 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 582 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 0;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
                        }
-#line 2217 "y.tab.c" /* yacc.c:1648  */
+#line 2236 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 31:
-#line 587 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 588 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
                        }
-#line 2227 "y.tab.c" /* yacc.c:1648  */
+#line 2246 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 32:
-#line 593 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 594 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_reading_string, redir, REDIR_VARASSIGN);
                        }
-#line 2237 "y.tab.c" /* yacc.c:1648  */
+#line 2256 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 33:
-#line 599 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 600 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 0;
                          redir.dest = (yyvsp[0].number);
                          (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
                        }
-#line 2247 "y.tab.c" /* yacc.c:1648  */
+#line 2266 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 34:
-#line 605 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 606 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.dest = (yyvsp[0].number);
                          (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
                        }
-#line 2257 "y.tab.c" /* yacc.c:1648  */
+#line 2276 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 35:
-#line 611 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 612 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.dest = (yyvsp[0].number);
                          (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, REDIR_VARASSIGN);
                        }
-#line 2267 "y.tab.c" /* yacc.c:1648  */
+#line 2286 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 36:
-#line 617 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 618 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 1;
                          redir.dest = (yyvsp[0].number);
                          (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
                        }
-#line 2277 "y.tab.c" /* yacc.c:1648  */
+#line 2296 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 37:
-#line 623 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 624 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.dest = (yyvsp[0].number);
                          (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
                        }
-#line 2287 "y.tab.c" /* yacc.c:1648  */
+#line 2306 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 38:
-#line 629 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 630 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.dest = (yyvsp[0].number);
                          (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, REDIR_VARASSIGN);
                        }
-#line 2297 "y.tab.c" /* yacc.c:1648  */
+#line 2316 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 39:
-#line 635 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 636 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 0;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
                        }
-#line 2307 "y.tab.c" /* yacc.c:1648  */
+#line 2326 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 40:
-#line 641 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 642 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
                        }
-#line 2317 "y.tab.c" /* yacc.c:1648  */
+#line 2336 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 41:
-#line 647 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 648 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, REDIR_VARASSIGN);
                        }
-#line 2327 "y.tab.c" /* yacc.c:1648  */
+#line 2346 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 42:
-#line 653 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 654 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 1;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
                        }
-#line 2337 "y.tab.c" /* yacc.c:1648  */
+#line 2356 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 43:
-#line 659 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 660 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
                        }
-#line 2347 "y.tab.c" /* yacc.c:1648  */
+#line 2366 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 44:
-#line 665 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 666 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, REDIR_VARASSIGN);
                        }
-#line 2357 "y.tab.c" /* yacc.c:1648  */
+#line 2376 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 45:
-#line 671 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 672 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 1;
                          redir.dest = 0;
                          (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
                        }
-#line 2367 "y.tab.c" /* yacc.c:1648  */
+#line 2386 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 46:
-#line 677 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 678 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.dest = 0;
                          (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
                        }
-#line 2377 "y.tab.c" /* yacc.c:1648  */
+#line 2396 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 47:
-#line 683 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 684 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.dest = 0;
                          (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
                        }
-#line 2387 "y.tab.c" /* yacc.c:1648  */
+#line 2406 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 48:
-#line 689 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 690 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 0;
                          redir.dest = 0;
                          (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
                        }
-#line 2397 "y.tab.c" /* yacc.c:1648  */
+#line 2416 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 49:
-#line 695 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 696 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = (yyvsp[-2].number);
                          redir.dest = 0;
                          (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
                        }
-#line 2407 "y.tab.c" /* yacc.c:1648  */
+#line 2426 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 50:
-#line 701 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 702 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.filename = (yyvsp[-2].word);
                          redir.dest = 0;
                          (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
                        }
-#line 2417 "y.tab.c" /* yacc.c:1648  */
+#line 2436 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 51:
-#line 707 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 708 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 1;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_err_and_out, redir, 0);
                        }
-#line 2427 "y.tab.c" /* yacc.c:1648  */
+#line 2446 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 52:
-#line 713 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 714 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          source.dest = 1;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_append_err_and_out, redir, 0);
                        }
-#line 2437 "y.tab.c" /* yacc.c:1648  */
+#line 2456 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 53:
-#line 721 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 722 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
-#line 2443 "y.tab.c" /* yacc.c:1648  */
+#line 2462 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 54:
-#line 723 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 724 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
-#line 2449 "y.tab.c" /* yacc.c:1648  */
+#line 2468 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 55:
-#line 725 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 726 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.element).redirect = (yyvsp[0].redirect); (yyval.element).word = 0; }
-#line 2455 "y.tab.c" /* yacc.c:1648  */
+#line 2474 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 56:
-#line 729 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 730 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.redirect) = (yyvsp[0].redirect);
                        }
-#line 2463 "y.tab.c" /* yacc.c:1648  */
+#line 2482 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 57:
-#line 733 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 734 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          register REDIRECT *t;
 
@@ -2472,35 +2491,35 @@ yyreduce:
                          t->next = (yyvsp[0].redirect);
                          (yyval.redirect) = (yyvsp[-1].redirect);
                        }
-#line 2476 "y.tab.c" /* yacc.c:1648  */
+#line 2495 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 58:
-#line 744 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 745 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = make_simple_command ((yyvsp[0].element), (COMMAND *)NULL); }
-#line 2482 "y.tab.c" /* yacc.c:1648  */
+#line 2501 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 59:
-#line 746 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 747 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = make_simple_command ((yyvsp[0].element), (yyvsp[-1].command)); }
-#line 2488 "y.tab.c" /* yacc.c:1648  */
+#line 2507 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 60:
-#line 750 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 751 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = clean_simple_command ((yyvsp[0].command)); }
-#line 2494 "y.tab.c" /* yacc.c:1648  */
+#line 2513 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 61:
-#line 752 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 753 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 2500 "y.tab.c" /* yacc.c:1648  */
+#line 2519 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 62:
-#line 754 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 755 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          COMMAND *tc;
 
@@ -2516,306 +2535,324 @@ yyreduce:
                            tc->redirects = (yyvsp[0].redirect);
                          (yyval.command) = (yyvsp[-1].command);
                        }
-#line 2520 "y.tab.c" /* yacc.c:1648  */
+#line 2539 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 63:
-#line 770 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 771 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 2526 "y.tab.c" /* yacc.c:1648  */
+#line 2545 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 64:
-#line 772 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 773 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 2532 "y.tab.c" /* yacc.c:1648  */
+#line 2551 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 65:
-#line 776 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 777 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 2538 "y.tab.c" /* yacc.c:1648  */
+#line 2557 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 66:
-#line 778 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 779 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 2544 "y.tab.c" /* yacc.c:1648  */
+#line 2563 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 67:
-#line 780 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 781 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = make_while_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
-#line 2550 "y.tab.c" /* yacc.c:1648  */
+#line 2569 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 68:
-#line 782 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 783 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = make_until_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
-#line 2556 "y.tab.c" /* yacc.c:1648  */
+#line 2575 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 69:
-#line 784 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 785 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 2562 "y.tab.c" /* yacc.c:1648  */
+#line 2581 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 70:
-#line 786 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 787 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 2568 "y.tab.c" /* yacc.c:1648  */
+#line 2587 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 71:
-#line 788 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 789 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 2574 "y.tab.c" /* yacc.c:1648  */
+#line 2593 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 72:
-#line 790 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 791 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 2580 "y.tab.c" /* yacc.c:1648  */
+#line 2599 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 73:
-#line 792 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 793 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 2586 "y.tab.c" /* yacc.c:1648  */
+#line 2605 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 74:
-#line 794 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 795 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 2592 "y.tab.c" /* yacc.c:1648  */
+#line 2611 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 75:
-#line 796 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 797 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 2598 "y.tab.c" /* yacc.c:1648  */
+#line 2617 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 76:
-#line 800 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 801 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2607 "y.tab.c" /* yacc.c:1648  */
+#line 2626 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 77:
-#line 805 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 806 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2616 "y.tab.c" /* yacc.c:1648  */
+#line 2635 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 78:
-#line 810 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 811 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2625 "y.tab.c" /* yacc.c:1648  */
+#line 2644 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 79:
-#line 815 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 816 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2634 "y.tab.c" /* yacc.c:1648  */
+#line 2653 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 80:
-#line 820 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 821 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2643 "y.tab.c" /* yacc.c:1648  */
+#line 2662 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 81:
-#line 825 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 826 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2652 "y.tab.c" /* yacc.c:1648  */
+#line 2671 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 82:
-#line 830 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 831 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2661 "y.tab.c" /* yacc.c:1648  */
+#line 2680 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 83:
-#line 835 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 836 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2670 "y.tab.c" /* yacc.c:1648  */
+#line 2689 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 84:
-#line 842 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 843 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                                  (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
                                  if ((yyval.command) == 0) YYERROR;
                                  if (word_top > 0) word_top--;
                                }
-#line 2680 "y.tab.c" /* yacc.c:1648  */
+#line 2699 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 85:
-#line 848 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 849 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                                  (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
                                  if ((yyval.command) == 0) YYERROR;
                                  if (word_top > 0) word_top--;
                                }
-#line 2690 "y.tab.c" /* yacc.c:1648  */
+#line 2709 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 86:
-#line 854 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 855 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                                  (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
                                  if ((yyval.command) == 0) YYERROR;
                                  if (word_top > 0) word_top--;
                                }
-#line 2700 "y.tab.c" /* yacc.c:1648  */
+#line 2719 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 87:
-#line 860 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 861 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                                  (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
                                  if ((yyval.command) == 0) YYERROR;
                                  if (word_top > 0) word_top--;
                                }
-#line 2710 "y.tab.c" /* yacc.c:1648  */
+#line 2729 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 88:
-#line 868 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 869 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2719 "y.tab.c" /* yacc.c:1648  */
+#line 2738 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 89:
-#line 873 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 874 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2728 "y.tab.c" /* yacc.c:1648  */
+#line 2747 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 90:
-#line 878 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 879 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2737 "y.tab.c" /* yacc.c:1648  */
+#line 2756 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 91:
-#line 883 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 884 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2746 "y.tab.c" /* yacc.c:1648  */
+#line 2765 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 92:
-#line 888 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 889 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2755 "y.tab.c" /* yacc.c:1648  */
+#line 2774 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 93:
-#line 893 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 894 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2764 "y.tab.c" /* yacc.c:1648  */
+#line 2783 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 94:
-#line 900 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 899 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
-                         (yyval.command) = make_case_command ((yyvsp[-4].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
+                         (yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2773 "y.tab.c" /* yacc.c:1648  */
+#line 2792 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 95:
-#line 905 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 904 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
-                         (yyval.command) = make_case_command ((yyvsp[-5].word), (yyvsp[-2].pattern), word_lineno[word_top]);
+                         (yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2782 "y.tab.c" /* yacc.c:1648  */
+#line 2801 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 96:
-#line 910 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 911 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
-                         (yyval.command) = make_case_command ((yyvsp[-4].word), (yyvsp[-1].pattern), word_lineno[word_top]);
+                         (yyval.command) = make_case_command ((yyvsp[-4].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2791 "y.tab.c" /* yacc.c:1648  */
+#line 2810 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 97:
-#line 917 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
-    { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
-#line 2797 "y.tab.c" /* yacc.c:1648  */
+#line 916 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+    {
+                         (yyval.command) = make_case_command ((yyvsp[-5].word), (yyvsp[-2].pattern), word_lineno[word_top]);
+                         if (word_top > 0) word_top--;
+                       }
+#line 2819 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 98:
-#line 920 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
-    { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
-#line 2803 "y.tab.c" /* yacc.c:1648  */
+#line 921 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+    {
+                         (yyval.command) = make_case_command ((yyvsp[-4].word), (yyvsp[-1].pattern), word_lineno[word_top]);
+                         if (word_top > 0) word_top--;
+                       }
+#line 2828 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 99:
-#line 923 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
-    { (yyval.command) = make_function_def ((yyvsp[-2].word), (yyvsp[0].command), function_dstart, function_bstart); }
-#line 2809 "y.tab.c" /* yacc.c:1648  */
+#line 928 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+    { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
+#line 2834 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 100:
-#line 927 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
-    { (yyval.command) = (yyvsp[0].command); }
-#line 2815 "y.tab.c" /* yacc.c:1648  */
+#line 931 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+    { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
+#line 2840 "y.tab.c" /* yacc.c:1648  */
     break;
 
   case 101:
-#line 929 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+#line 934 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+    { (yyval.command) = make_function_def ((yyvsp[-2].word), (yyvsp[0].command), function_dstart, function_bstart); }
+#line 2846 "y.tab.c" /* yacc.c:1648  */
+    break;
+
+  case 102:
+#line 938 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+    { (yyval.command) = (yyvsp[0].command); }
+#line 2852 "y.tab.c" /* yacc.c:1648  */
+    break;
+
+  case 103:
+#line 940 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          COMMAND *tc;
 
@@ -2844,29 +2881,29 @@ yyreduce:
                            tc->redirects = (yyvsp[0].redirect);
                          (yyval.command) = (yyvsp[-1].command);
                        }
-#line 2848 "y.tab.c" /* yacc.c:1648  */
+#line 2885 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 102:
-#line 960 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 104:
+#line 971 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_subshell_command ((yyvsp[-1].command));
                          (yyval.command)->flags |= CMD_WANT_SUBSHELL;
                        }
-#line 2857 "y.tab.c" /* yacc.c:1648  */
+#line 2894 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 103:
-#line 967 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 105:
+#line 978 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_coproc_command ("COPROC", (yyvsp[0].command));
                          (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
                        }
-#line 2866 "y.tab.c" /* yacc.c:1648  */
+#line 2903 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 104:
-#line 972 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 106:
+#line 983 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          COMMAND *tc;
 
@@ -2883,20 +2920,20 @@ yyreduce:
                          (yyval.command) = make_coproc_command ("COPROC", (yyvsp[-1].command));
                          (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
                        }
-#line 2887 "y.tab.c" /* yacc.c:1648  */
+#line 2924 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 105:
-#line 989 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 107:
+#line 1000 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_coproc_command ((yyvsp[-1].word)->word, (yyvsp[0].command));
                          (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
                        }
-#line 2896 "y.tab.c" /* yacc.c:1648  */
+#line 2933 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 106:
-#line 994 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 108:
+#line 1005 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          COMMAND *tc;
 
@@ -2913,240 +2950,240 @@ yyreduce:
                          (yyval.command) = make_coproc_command ((yyvsp[-2].word)->word, (yyvsp[-1].command));
                          (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
                        }
-#line 2917 "y.tab.c" /* yacc.c:1648  */
+#line 2954 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 107:
-#line 1011 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 109:
+#line 1022 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[0].command)));
                          (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
                        }
-#line 2926 "y.tab.c" /* yacc.c:1648  */
+#line 2963 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 108:
-#line 1018 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 110:
+#line 1029 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (COMMAND *)NULL); }
-#line 2932 "y.tab.c" /* yacc.c:1648  */
+#line 2969 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 109:
-#line 1020 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 111:
+#line 1031 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = make_if_command ((yyvsp[-5].command), (yyvsp[-3].command), (yyvsp[-1].command)); }
-#line 2938 "y.tab.c" /* yacc.c:1648  */
+#line 2975 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 110:
-#line 1022 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 112:
+#line 1033 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[-1].command)); }
-#line 2944 "y.tab.c" /* yacc.c:1648  */
+#line 2981 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 111:
-#line 1027 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 113:
+#line 1038 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = make_group_command ((yyvsp[-1].command)); }
-#line 2950 "y.tab.c" /* yacc.c:1648  */
+#line 2987 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 112:
-#line 1031 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 114:
+#line 1042 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = make_arith_command ((yyvsp[0].word_list)); }
-#line 2956 "y.tab.c" /* yacc.c:1648  */
+#line 2993 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 113:
-#line 1035 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 115:
+#line 1046 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[-1].command); }
-#line 2962 "y.tab.c" /* yacc.c:1648  */
+#line 2999 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 114:
-#line 1039 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 116:
+#line 1050 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = make_if_command ((yyvsp[-2].command), (yyvsp[0].command), (COMMAND *)NULL); }
-#line 2968 "y.tab.c" /* yacc.c:1648  */
+#line 3005 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 115:
-#line 1041 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 117:
+#line 1052 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[0].command)); }
-#line 2974 "y.tab.c" /* yacc.c:1648  */
+#line 3011 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 116:
-#line 1043 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 118:
+#line 1054 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (yyvsp[0].command)); }
-#line 2980 "y.tab.c" /* yacc.c:1648  */
+#line 3017 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 118:
-#line 1048 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 120:
+#line 1059 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyvsp[0].pattern)->next = (yyvsp[-1].pattern); (yyval.pattern) = (yyvsp[0].pattern); }
-#line 2986 "y.tab.c" /* yacc.c:1648  */
+#line 3023 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 119:
-#line 1052 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 121:
+#line 1063 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
-#line 2992 "y.tab.c" /* yacc.c:1648  */
+#line 3029 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 120:
-#line 1054 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 122:
+#line 1065 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
-#line 2998 "y.tab.c" /* yacc.c:1648  */
+#line 3035 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 121:
-#line 1056 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 123:
+#line 1067 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
-#line 3004 "y.tab.c" /* yacc.c:1648  */
+#line 3041 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 122:
-#line 1058 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 124:
+#line 1069 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
-#line 3010 "y.tab.c" /* yacc.c:1648  */
+#line 3047 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 123:
-#line 1062 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 125:
+#line 1073 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3016 "y.tab.c" /* yacc.c:1648  */
+#line 3053 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 124:
-#line 1064 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 126:
+#line 1075 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3022 "y.tab.c" /* yacc.c:1648  */
+#line 3059 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 125:
-#line 1066 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 127:
+#line 1077 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3028 "y.tab.c" /* yacc.c:1648  */
+#line 3065 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 126:
-#line 1068 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 128:
+#line 1079 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3034 "y.tab.c" /* yacc.c:1648  */
+#line 3071 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 127:
-#line 1070 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 129:
+#line 1081 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3040 "y.tab.c" /* yacc.c:1648  */
+#line 3077 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 128:
-#line 1072 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 130:
+#line 1083 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3046 "y.tab.c" /* yacc.c:1648  */
+#line 3083 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 129:
-#line 1076 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 131:
+#line 1087 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
-#line 3052 "y.tab.c" /* yacc.c:1648  */
+#line 3089 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 130:
-#line 1078 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 132:
+#line 1089 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-2].word_list)); }
-#line 3058 "y.tab.c" /* yacc.c:1648  */
+#line 3095 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 131:
-#line 1087 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 133:
+#line 1098 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = (yyvsp[0].command);
                          if (need_here_doc)
                            gather_here_documents ();
                         }
-#line 3068 "y.tab.c" /* yacc.c:1648  */
+#line 3105 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 133:
-#line 1096 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 135:
+#line 1107 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = (yyvsp[0].command);
                        }
-#line 3076 "y.tab.c" /* yacc.c:1648  */
+#line 3113 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 135:
-#line 1103 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 137:
+#line 1114 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          if ((yyvsp[-2].command)->type == cm_connection)
                            (yyval.command) = connect_async_list ((yyvsp[-2].command), (COMMAND *)NULL, '&');
                          else
                            (yyval.command) = command_connect ((yyvsp[-2].command), (COMMAND *)NULL, '&');
                        }
-#line 3087 "y.tab.c" /* yacc.c:1648  */
+#line 3124 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 137:
-#line 1114 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 139:
+#line 1125 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
-#line 3093 "y.tab.c" /* yacc.c:1648  */
+#line 3130 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 138:
-#line 1116 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 140:
+#line 1127 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
-#line 3099 "y.tab.c" /* yacc.c:1648  */
+#line 3136 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 139:
-#line 1118 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 141:
+#line 1129 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          if ((yyvsp[-3].command)->type == cm_connection)
                            (yyval.command) = connect_async_list ((yyvsp[-3].command), (yyvsp[0].command), '&');
                          else
                            (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '&');
                        }
-#line 3110 "y.tab.c" /* yacc.c:1648  */
+#line 3147 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 140:
-#line 1125 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 142:
+#line 1136 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); }
-#line 3116 "y.tab.c" /* yacc.c:1648  */
+#line 3153 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 141:
-#line 1127 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 143:
+#line 1138 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); }
-#line 3122 "y.tab.c" /* yacc.c:1648  */
+#line 3159 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 142:
-#line 1129 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 144:
+#line 1140 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 3128 "y.tab.c" /* yacc.c:1648  */
+#line 3165 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 145:
-#line 1137 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 147:
+#line 1148 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.number) = '\n'; }
-#line 3134 "y.tab.c" /* yacc.c:1648  */
+#line 3171 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 146:
-#line 1139 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 148:
+#line 1150 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.number) = ';'; }
-#line 3140 "y.tab.c" /* yacc.c:1648  */
+#line 3177 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 147:
-#line 1141 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 149:
+#line 1152 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.number) = yacc_EOF; }
-#line 3146 "y.tab.c" /* yacc.c:1648  */
+#line 3183 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 150:
-#line 1155 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 152:
+#line 1166 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = (yyvsp[0].command);
                          if (need_here_doc)
@@ -3159,11 +3196,11 @@ yyreduce:
                              YYACCEPT;
                            }
                        }
-#line 3163 "y.tab.c" /* yacc.c:1648  */
+#line 3200 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 151:
-#line 1168 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 153:
+#line 1179 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          if ((yyvsp[-1].command)->type == cm_connection)
                            (yyval.command) = connect_async_list ((yyvsp[-1].command), (COMMAND *)NULL, '&');
@@ -3179,11 +3216,11 @@ yyreduce:
                              YYACCEPT;
                            }
                        }
-#line 3183 "y.tab.c" /* yacc.c:1648  */
+#line 3220 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 152:
-#line 1184 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 154:
+#line 1195 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          (yyval.command) = (yyvsp[-1].command);
                          if (need_here_doc)
@@ -3196,72 +3233,72 @@ yyreduce:
                              YYACCEPT;
                            }
                        }
-#line 3200 "y.tab.c" /* yacc.c:1648  */
+#line 3237 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 153:
-#line 1199 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 155:
+#line 1210 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
-#line 3206 "y.tab.c" /* yacc.c:1648  */
+#line 3243 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 154:
-#line 1201 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 156:
+#line 1212 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
-#line 3212 "y.tab.c" /* yacc.c:1648  */
+#line 3249 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 155:
-#line 1203 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 157:
+#line 1214 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          if ((yyvsp[-2].command)->type == cm_connection)
                            (yyval.command) = connect_async_list ((yyvsp[-2].command), (yyvsp[0].command), '&');
                          else
                            (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), '&');
                        }
-#line 3223 "y.tab.c" /* yacc.c:1648  */
+#line 3260 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 156:
-#line 1210 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 158:
+#line 1221 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), ';'); }
-#line 3229 "y.tab.c" /* yacc.c:1648  */
+#line 3266 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 157:
-#line 1213 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 159:
+#line 1224 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 3235 "y.tab.c" /* yacc.c:1648  */
+#line 3272 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 158:
-#line 1217 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 160:
+#line 1228 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 3241 "y.tab.c" /* yacc.c:1648  */
+#line 3278 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 159:
-#line 1219 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 161:
+#line 1230 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          if ((yyvsp[0].command))
                            (yyvsp[0].command)->flags ^= CMD_INVERT_RETURN;     /* toggle */
                          (yyval.command) = (yyvsp[0].command);
                        }
-#line 3251 "y.tab.c" /* yacc.c:1648  */
+#line 3288 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 160:
-#line 1225 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 162:
+#line 1236 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          if ((yyvsp[0].command))
                            (yyvsp[0].command)->flags |= (yyvsp[-1].number);
                          (yyval.command) = (yyvsp[0].command);
                        }
-#line 3261 "y.tab.c" /* yacc.c:1648  */
+#line 3298 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 161:
-#line 1231 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 163:
+#line 1242 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          ELEMENT x;
 
@@ -3281,11 +3318,11 @@ yyreduce:
                            token_to_read = ';';
                          parser_state &= ~PST_REDIRLIST;       /* make_simple_command sets this */
                        }
-#line 3285 "y.tab.c" /* yacc.c:1648  */
+#line 3322 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 162:
-#line 1251 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 164:
+#line 1262 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          ELEMENT x;
 
@@ -3306,17 +3343,17 @@ yyreduce:
                            token_to_read = ';';
                          parser_state &= ~PST_REDIRLIST;       /* make_simple_command sets this */
                        }
-#line 3310 "y.tab.c" /* yacc.c:1648  */
+#line 3347 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 163:
-#line 1274 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 165:
+#line 1285 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); }
-#line 3316 "y.tab.c" /* yacc.c:1648  */
+#line 3353 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 164:
-#line 1276 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 166:
+#line 1287 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     {
                          /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
                          COMMAND *tc;
@@ -3339,35 +3376,35 @@ yyreduce:
 
                          (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|');
                        }
-#line 3343 "y.tab.c" /* yacc.c:1648  */
+#line 3380 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 165:
-#line 1299 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 167:
+#line 1310 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.command) = (yyvsp[0].command); }
-#line 3349 "y.tab.c" /* yacc.c:1648  */
+#line 3386 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 166:
-#line 1303 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 168:
+#line 1314 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.number) = CMD_TIME_PIPELINE; }
-#line 3355 "y.tab.c" /* yacc.c:1648  */
+#line 3392 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 167:
-#line 1305 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 169:
+#line 1316 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-#line 3361 "y.tab.c" /* yacc.c:1648  */
+#line 3398 "y.tab.c" /* yacc.c:1648  */
     break;
 
-  case 168:
-#line 1307 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
+  case 170:
+#line 1318 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648  */
     { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-#line 3367 "y.tab.c" /* yacc.c:1648  */
+#line 3404 "y.tab.c" /* yacc.c:1648  */
     break;
 
 
-#line 3371 "y.tab.c" /* yacc.c:1648  */
+#line 3408 "y.tab.c" /* yacc.c:1648  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -3595,7 +3632,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 1309 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1907  */
+#line 1320 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1907  */
 
 
 /* Initial size to allocate for tokens, and the
@@ -5310,7 +5347,11 @@ special_case_tokens (tokstr)
 {
   /* Posix grammar rule 6 */
   if ((last_read_token == WORD) &&
+#if defined (SELECT_COMMAND)
       ((token_before_that == FOR) || (token_before_that == CASE) || (token_before_that == SELECT)) &&
+#else
+      ((token_before_that == FOR) || (token_before_that == CASE)) &&
+#endif
       (tokstr[0] == 'i' && tokstr[1] == 'n' && tokstr[2] == 0))
     {
       if (token_before_that == CASE)