diff --git a/config/rootfiles/common/bash b/config/rootfiles/common/bash
index f348b5366..c9d4935c4 100644
--- a/config/rootfiles/common/bash
+++ b/config/rootfiles/common/bash
@@ -35,6 +35,7 @@
 #usr/include/bash/include/ocache.h
 #usr/include/bash/include/posixdir.h
 #usr/include/bash/include/posixjmp.h
+#usr/include/bash/include/posixselect.h
 #usr/include/bash/include/posixstat.h
 #usr/include/bash/include/posixtime.h
 #usr/include/bash/include/posixwait.h
@@ -44,8 +45,10 @@
 #usr/include/bash/include/stat-time.h
 #usr/include/bash/include/stdc.h
 #usr/include/bash/include/systimes.h
+#usr/include/bash/include/timer.h
 #usr/include/bash/include/typemax.h
 #usr/include/bash/include/unionwait.h
+#usr/include/bash/include/unlocked-io.h
 #usr/include/bash/jobs.h
 #usr/include/bash/make_cmd.h
 #usr/include/bash/pathnames.h
@@ -66,15 +69,18 @@ usr/lib/bash/Makefile.inc
 usr/lib/bash/Makefile.sample
 usr/lib/bash/accept
 usr/lib/bash/basename
+usr/lib/bash/chmod
 usr/lib/bash/csv
 usr/lib/bash/cut
 usr/lib/bash/dirname
 usr/lib/bash/dsv
 usr/lib/bash/fdflags
 usr/lib/bash/finfo
+usr/lib/bash/fltexpr
 usr/lib/bash/getconf
 usr/lib/bash/head
 usr/lib/bash/id
+usr/lib/bash/kv
 usr/lib/bash/ln
 usr/lib/bash/loadables.h
 usr/lib/bash/logname
@@ -94,6 +100,7 @@ usr/lib/bash/setpgid
 usr/lib/bash/sleep
 usr/lib/bash/stat
 usr/lib/bash/strftime
+usr/lib/bash/strptime
 usr/lib/bash/sync
 usr/lib/bash/tee
 usr/lib/bash/truefalse
@@ -135,6 +142,7 @@ usr/lib/bash/whoami
 #usr/share/locale/id/LC_MESSAGES/bash.mo
 #usr/share/locale/it/LC_MESSAGES/bash.mo
 #usr/share/locale/ja/LC_MESSAGES/bash.mo
+#usr/share/locale/ka/LC_MESSAGES/bash.mo
 #usr/share/locale/ko/LC_MESSAGES/bash.mo
 #usr/share/locale/lt/LC_MESSAGES/bash.mo
 #usr/share/locale/nb/LC_MESSAGES/bash.mo
@@ -146,6 +154,7 @@ usr/lib/bash/whoami
 #usr/share/locale/ru/LC_MESSAGES/bash.mo
 #usr/share/locale/sk/LC_MESSAGES/bash.mo
 #usr/share/locale/sl/LC_MESSAGES/bash.mo
+#usr/share/locale/sq/LC_MESSAGES/bash.mo
 #usr/share/locale/sr/LC_MESSAGES/bash.mo
 #usr/share/locale/sv/LC_MESSAGES/bash.mo
 #usr/share/locale/tr/LC_MESSAGES/bash.mo
diff --git a/lfs/bash b/lfs/bash
index 6822c61dd..a09326198 100644
--- a/lfs/bash
+++ b/lfs/bash
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2024  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2025  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -24,7 +24,8 @@
 
 include Config
 
-VER        = 5.2
+VER        = 5.3
+PATCHVER   = 0
 
 THISAPP    = bash-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -56,7 +57,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE)             = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 51b196e710794ebad8eac28c31c93eb99ac1a7db30919a13271e39e1cb66a0672f242df75fc7d71627ea873dfbce53ec35c0c56a71c5167143070a7811343fd9
+$(DL_FILE)_BLAKE2 = 88a4f0146eb11698120890f2afaf28210295135f8f7f61dcbb99eeb0c39c84da5360a3b0572a26dc2a36b207fd440b83bb5a947213af90306c8f6ab608964ff1
 
 install : $(TARGET)
 
@@ -90,14 +91,14 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 	sed -e "s/filename, RTLD_LAZY/filename, RTLD_NOW/" \
 		-i $(DIR_APP)/builtins/enable.def
 
-	cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bash/bash-4.0-paths-1.patch
 	cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bash/bash-4.0-profile-1.patch
 	cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bash/bash-3.2-ssh_source_bash.patch
-	
-	for i in $$(seq 1 37); do \
-	cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/bash/bash52-$$(printf "%03d" "$${i}") || exit 1; \
-	done
 
+ifneq "$(PATCHVER)" "0"
+	for i in $$(seq 1 $(PATCHVER)); do \
+		cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/bash/bash$(subst .,,$(VER))-$$(printf "%03d" "$${i}") || exit 1; \
+	done
+endif
 
 	cd $(DIR_APP) && ./configure --prefix=$(PREFIX) $(CONFIGURE_OPTIONS)
 	cd $(DIR_APP) && make $(MAKETUNING)
diff --git a/src/patches/bash/bash-4.0-paths-1.patch b/src/patches/bash/bash-4.0-paths-1.patch
deleted file mode 100644
index 24ec5cc0b..000000000
--- a/src/patches/bash/bash-4.0-paths-1.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- bash-3.0/config-top.h.paths	2003-08-05 15:36:12.000000000 +0100
-+++ bash-3.0/config-top.h	2004-07-28 09:36:27.117205637 +0100
-@@ -66,7 +66,7 @@
-    the Posix.2 confstr () function, or CS_PATH define are not present. */
- #ifndef STANDARD_UTILS_PATH
- #define STANDARD_UTILS_PATH \
--  "/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc"
-+  "/bin:/usr/bin:/usr/sbin:/sbin"
- #endif
- 
- /* Default primary and secondary prompt strings. */
diff --git a/src/patches/bash/bash52-001 b/src/patches/bash/bash52-001
deleted file mode 100644
index 83776ec76..000000000
--- a/src/patches/bash/bash52-001
+++ /dev/null
@@ -1,46 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-001
-
-Bug-Reported-by:	Emanuele Torre <torreemanuele6@gmail.com>
-Bug-Reference-ID:	<CAA7hNqeR1eSdiGK8mjQSqJPo815JYoG-Ekz-5PrAJTEYy2e6hg@mail.gmail.com>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2022-09/msg00060.html
-
-Bug-Description:
-
-Expanding unset arrays in an arithmetic context can cause a segmentation fault.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2/subst.c	2022-08-31 17:36:46.000000000 -0400
---- subst.c	2022-09-30 09:12:05.000000000 -0400
-***************
-*** 10858,10862 ****
-    t = expand_subscript_string (exp, quoted & ~(Q_ARITH|Q_DOUBLE_QUOTES));
-    free (exp);
-!   exp = sh_backslash_quote (t, abstab, 0);
-    free (t);
-  
---- 10858,10862 ----
-    t = expand_subscript_string (exp, quoted & ~(Q_ARITH|Q_DOUBLE_QUOTES));
-    free (exp);
-!   exp = t ? sh_backslash_quote (t, abstab, 0) : savestring ("");
-    free (t);
-  
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 0
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 1
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-002 b/src/patches/bash/bash52-002
deleted file mode 100644
index 18229c996..000000000
--- a/src/patches/bash/bash52-002
+++ /dev/null
@@ -1,46 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-002
-
-Bug-Reported-by:	Kan-Ru Chen <koster@debian.org>
-Bug-Reference-ID:
-Bug-Reference-URL:	https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1021109
-
-Bug-Description:
-
-Starting bash with an invalid locale specification for LC_ALL/LANG/LC_CTYPE
-can cause the shell to crash.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2-patched/lib/readline/nls.c	2022-08-15 09:38:51.000000000 -0400
---- lib/readline/nls.c	2022-10-05 09:23:22.000000000 -0400
-***************
-*** 142,145 ****
---- 142,149 ----
-      lspec = "";
-    ret = setlocale (LC_CTYPE, lspec);	/* ok, since it does not change locale */
-+   if (ret == 0 || *ret == 0)
-+     ret = setlocale (LC_CTYPE, (char *)NULL);
-+   if (ret == 0 || *ret == 0)
-+     ret = RL_DEFAULT_LOCALE;
-  #else
-    ret = (lspec == 0 || *lspec == 0) ? RL_DEFAULT_LOCALE : lspec;
-
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 1
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 2
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-003 b/src/patches/bash/bash52-003
deleted file mode 100644
index b2dc4cbcc..000000000
--- a/src/patches/bash/bash52-003
+++ /dev/null
@@ -1,89 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-003
-
-Bug-Reported-by:	 D630 <d630@posteo.net>
-Bug-Reference-ID:	<cf8523d58ac75b9ffba9519faa175618@posteo.de>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2022-10/msg00092.html
-
-Bug-Description:
-
-Command substitutions need to preserve newlines instead of replacing them
-with semicolons, especially in the presence of multiple here-documents.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2-patched/print_cmd.c	2022-07-26 09:16:39.000000000 -0400
---- print_cmd.c	2022-10-17 10:41:06.000000000 -0400
-***************
-*** 298,305 ****
---- 298,307 ----
-  	      {
-  		char c = command->value.Connection->connector;
-+ 		int was_newline;
-  
-  		s[0] = printing_comsub ? c : ';';
-  		s[1] = '\0';
-  
-+ 		was_newline = deferred_heredocs == 0 && was_heredoc == 0 && c == '\n';
-  		if (deferred_heredocs == 0)
-  		  {
-***************
-*** 315,318 ****
---- 317,322 ----
-  		if (inside_function_def)
-  		  cprintf ("\n");
-+ 		else if (printing_comsub && c == '\n' && was_newline == 0)
-+ 		  cprintf ("\n");	/* preserve newlines in comsubs but don't double them */
-  		else
-  		  {
-***************
-*** 1366,1370 ****
-      }
-    else
-!     newline ("}");
-  
-    dispose_command (cmdcopy);
---- 1371,1379 ----
-      }
-    else
-!     {
-!       /* { */
-!       newline ("}");
-!       was_heredoc = 0;		/* not printing any here-documents now */
-!     }
-  
-    dispose_command (cmdcopy);
-***************
-*** 1443,1447 ****
-      }
-    else
-!     newline ("}");
-  
-    result = the_printed_command;
---- 1452,1459 ----
-      }
-    else
-!     {	/* { */
-!       newline ("}");
-!       was_heredoc = 0;
-!     }
-  
-    result = the_printed_command;
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 2
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 3
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-004 b/src/patches/bash/bash52-004
deleted file mode 100644
index d0834c19c..000000000
--- a/src/patches/bash/bash52-004
+++ /dev/null
@@ -1,70 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-004
-
-Bug-Reported-by:	Antoine <bug-bash@glitchimini.net>
-Bug-Reference-ID:	<8bd59753-05ff-9b09-2337-2c7f52ded650@glitchimini.net>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2022-10/msg00022.html
-
-Bug-Description:
-
-Bash needs to keep better track of nested brace expansions to avoid problems
-with quoting and POSIX semantics.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2-patched/subst.c	2022-10-05 10:22:02.000000000 -0400
---- subst.c	2022-10-06 15:19:08.000000000 -0400
-***************
-*** 1799,1802 ****
---- 1804,1810 ----
-  }
-  
-+ #define PARAMEXPNEST_MAX	32	// for now
-+ static int dbstate[PARAMEXPNEST_MAX];
-+ 
-  /* Extract a parameter expansion expression within ${ and } from STRING.
-     Obey the Posix.2 rules for finding the ending `}': count braces while
-***************
-*** 1829,1832 ****
---- 1837,1842 ----
-      return (extract_heredoc_dolbrace_string (string, sindex, quoted, flags));
-  
-+   dbstate[0] = dolbrace_state;
-+ 
-    pass_character = 0;
-    nesting_level = 1;
-***************
-*** 1853,1856 ****
---- 1863,1868 ----
-        if (string[i] == '$' && string[i+1] == LBRACE)
-  	{
-+ 	  if (nesting_level < PARAMEXPNEST_MAX)
-+ 	    dbstate[nesting_level] = dolbrace_state;
-  	  nesting_level++;
-  	  i += 2;
-***************
-*** 1865,1868 ****
---- 1877,1881 ----
-  	  if (nesting_level == 0)
-  	    break;
-+ 	  dolbrace_state = (nesting_level < PARAMEXPNEST_MAX) ? dbstate[nesting_level] : dbstate[0];	/* Guess using initial state */
-  	  i++;
-  	  continue;
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 3
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 4
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-005 b/src/patches/bash/bash52-005
deleted file mode 100644
index 3f6a85215..000000000
--- a/src/patches/bash/bash52-005
+++ /dev/null
@@ -1,47 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-005
-
-Bug-Reported-by:	Justin Wood (Callek) <callek@gmail.com>
-Bug-Reference-ID:	<CANBDKY9fp2yiXONP7RY4kNuRteuovUebxSJaqePHeu7cyaFS9Q@mail.gmail.com>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2022-10/msg00088.html
-
-Bug-Description:
-
-Null pattern substitution replacement strings can cause a crash.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2-patched/subst.c	2022-10-05 10:22:02.000000000 -0400
---- subst.c	2022-10-13 16:57:26.000000000 -0400
-***************
-*** 8966,8970 ****
-      }
-    else if (*string == 0 && (match_pattern (string, pat, mtype, &s, &e) != 0))
-!     return ((mflags & MATCH_EXPREP) ? strcreplace (rep, '&', "", 2) : savestring (rep));
-  
-    ret = (char *)xmalloc (rsize = 64);
---- 8966,8971 ----
-      }
-    else if (*string == 0 && (match_pattern (string, pat, mtype, &s, &e) != 0))
-!     return (mflags & MATCH_EXPREP) ? strcreplace (rep, '&', "", 2)
-! 				   : (rep ? savestring (rep) : savestring (""));
-  
-    ret = (char *)xmalloc (rsize = 64);
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 4
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 5
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-006 b/src/patches/bash/bash52-006
deleted file mode 100644
index 851cfd7b6..000000000
--- a/src/patches/bash/bash52-006
+++ /dev/null
@@ -1,293 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-006
-
-Bug-Reported-by:	feng xiangjun <fengxj325@gmail.com>
-Bug-Reference-ID:	<CAHH2t87LrCmO=gdyWOmGn5WJt7EucL+iOXzrry34OETe50S6uA@mail.gmail.com>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2022-10/msg00089.html
-
-Bug-Description:
-
-In interactive shells, interrupting the shell while entering a command
-substitution can inhibit alias expansion.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2-patched/parse.y	2022-10-08 13:10:06.000000000 -0400
---- parse.y	2022-10-14 10:03:19.000000000 -0400
-***************
-*** 3307,3310 ****
---- 3307,3312 ----
-      extended_glob = global_extglob;
-  #endif
-+   if (parser_state & (PST_CMDSUBST|PST_STRING))
-+     expand_aliases = expaliases_flag;
-  
-    parser_state = 0;
-***************
-*** 4389,4392 ****
---- 4391,4395 ----
-      parser_state |= PST_NOERROR;
-  
-+   parser_state |= PST_STRING;
-    expand_aliases = 0;
-  
-***************
-*** 6402,6406 ****
-        parser_state &= ~PST_NOEXPAND;	/* parse_comsub sentinel */
-        /* State flags we want to set for this run through the tokenizer. */
-!       parser_state |= PST_COMPASSIGN|PST_REPARSE;
-      }
-  
---- 6405,6409 ----
-        parser_state &= ~PST_NOEXPAND;	/* parse_comsub sentinel */
-        /* State flags we want to set for this run through the tokenizer. */
-!       parser_state |= PST_COMPASSIGN|PST_REPARSE|PST_STRING;
-      }
-  
-*** ../bash-20221007/parser.h	2022-08-30 11:39:56.000000000 -0400
---- parser.h	2022-10-14 09:56:18.000000000 -0400
-***************
-*** 51,54 ****
---- 51,55 ----
-  #define PST_NOEXPAND	0x400000	/* don't expand anything in read_token_word; for command substitution */
-  #define PST_NOERROR	0x800000	/* don't print error messages in yyerror */
-+ #define PST_STRING	0x1000000	/* parsing a string to a command or word list */
-  
-  /* Definition of the delimiter stack.  Needed by parse.y and bashhist.c. */
-*** ../bash-20221007/builtins/shopt.def	2022-10-07 10:25:55.000000000 -0400
---- builtins/shopt.def	2022-10-14 09:30:11.000000000 -0400
-***************
-*** 150,153 ****
---- 150,156 ----
-  #endif
-  
-+ int expaliases_flag = 0;
-+ static int shopt_set_expaliases PARAMS((char *, int));
-+ 
-  static int shopt_set_debug_mode PARAMS((char *, int));
-  
-***************
-*** 199,203 ****
-    { "dotglob", &glob_dot_filenames, (shopt_set_func_t *)NULL },
-    { "execfail", &no_exit_on_failed_exec, (shopt_set_func_t *)NULL },
-!   { "expand_aliases", &expand_aliases, (shopt_set_func_t *)NULL },
-  #if defined (DEBUGGER)
-    { "extdebug", &debugging_mode, shopt_set_debug_mode },
---- 202,206 ----
-    { "dotglob", &glob_dot_filenames, (shopt_set_func_t *)NULL },
-    { "execfail", &no_exit_on_failed_exec, (shopt_set_func_t *)NULL },
-!   { "expand_aliases", &expaliases_flag, shopt_set_expaliases },
-  #if defined (DEBUGGER)
-    { "extdebug", &debugging_mode, shopt_set_debug_mode },
-***************
-*** 351,355 ****
-    allow_null_glob_expansion = glob_dot_filenames = 0;
-    no_exit_on_failed_exec = 0;
-!   expand_aliases = 0;
-    extended_quote = 1;
-    fail_glob_expansion = 0;
---- 354,358 ----
-    allow_null_glob_expansion = glob_dot_filenames = 0;
-    no_exit_on_failed_exec = 0;
-!   expand_aliases = expaliases_flag = 0;
-    extended_quote = 1;
-    fail_glob_expansion = 0;
-***************
-*** 632,635 ****
---- 635,647 ----
-  }
-  
-+ static int
-+ shopt_set_expaliases (option_name, mode)
-+      char *option_name;
-+      int mode;
-+ {
-+   expand_aliases = expaliases_flag;
-+   return 0;
-+ }
-+ 
-  #if defined (READLINE)
-  static int
-*** ../bash-20221007/builtins/common.h	2022-10-07 10:10:17.000000000 -0400
---- builtins/common.h	2022-10-14 09:29:25.000000000 -0400
-***************
-*** 258,261 ****
---- 258,263 ----
-  #endif
-  
-+ extern int expaliases_flag;
-+ 
-  /* variables from source.def */
-  extern int source_searches_cwd;
-*** ../bash-20221007/execute_cmd.c	2022-10-10 10:48:54.000000000 -0400
---- execute_cmd.c	2022-10-14 09:32:24.000000000 -0400
-***************
-*** 1537,1541 ****
-  	 aliases. */
-        if (ois != interactive_shell)
-! 	expand_aliases = 0;
-      }
-  
---- 1537,1541 ----
-  	 aliases. */
-        if (ois != interactive_shell)
-! 	expand_aliases = expaliases_flag = 0;
-      }
-  
-*** ../bash-20221007/general.c	2021-11-04 14:12:38.000000000 -0400
---- general.c	2022-10-14 09:34:24.000000000 -0400
-***************
-*** 92,96 ****
-    &interactive_comments,
-    &source_uses_path,
-!   &expand_aliases,
-    &inherit_errexit,
-    &print_shift_error,
---- 92,96 ----
-    &interactive_comments,
-    &source_uses_path,
-!   &expaliases_flag,
-    &inherit_errexit,
-    &print_shift_error,
-***************
-*** 107,111 ****
-    if (on != 0)
-      {
-!       interactive_comments = source_uses_path = expand_aliases = 1;
-        inherit_errexit = 1;
-        source_searches_cwd = 0;
---- 107,112 ----
-    if (on != 0)
-      {
-!       interactive_comments = source_uses_path = 1;
-!       expand_aliases = expaliases_flag = 1;
-        inherit_errexit = 1;
-        source_searches_cwd = 0;
-***************
-*** 117,120 ****
---- 118,122 ----
-      {
-        set_posix_options (saved_posix_vars);
-+       expand_aliases = expaliases_flag;
-        free (saved_posix_vars);
-        saved_posix_vars = 0;
-***************
-*** 123,127 ****
-      {
-        source_searches_cwd = 1;
-!       expand_aliases = interactive_shell;
-        print_shift_error = 0;
-      }
---- 125,129 ----
-      {
-        source_searches_cwd = 1;
-!       expand_aliases = expaliases_flag = interactive_shell;	/* XXX */
-        print_shift_error = 0;
-      }
-
-*** ../bash-5.2-patched/shell.c	2022-03-04 15:13:00.000000000 -0500
---- shell.c	2022-10-14 09:36:19.000000000 -0400
-***************
-*** 1845,1850 ****
-  init_interactive ()
-  {
-!   expand_aliases = interactive_shell = startup_state = 1;
-!   interactive = 1;
-  #if defined (HISTORY)
-    if (enable_history_list == -1)
---- 1845,1850 ----
-  init_interactive ()
-  {
-!   expand_aliases = expaliases_flag = 1;
-!   interactive_shell = startup_state = interactive = 1;
-  #if defined (HISTORY)
-    if (enable_history_list == -1)
-***************
-*** 1866,1870 ****
-  #endif /* HISTORY */
-    interactive_shell = startup_state = interactive = 0;
-!   expand_aliases = posixly_correct;	/* XXX - was 0 not posixly_correct */
-    no_line_editing = 1;
-  #if defined (JOB_CONTROL)
---- 1866,1870 ----
-  #endif /* HISTORY */
-    interactive_shell = startup_state = interactive = 0;
-!   expand_aliases = expaliases_flag = posixly_correct;	/* XXX - was 0 not posixly_correct */
-    no_line_editing = 1;
-  #if defined (JOB_CONTROL)
-***************
-*** 1883,1887 ****
-  #endif
-    init_noninteractive ();
-!   expand_aliases = interactive_shell = startup_state = 1;
-  #if defined (HISTORY)
-    remember_on_history = enable_history_list;	/* XXX */
---- 1883,1887 ----
-  #endif
-    init_noninteractive ();
-!   expand_aliases = expaliases_flag = interactive_shell = startup_state = 1;
-  #if defined (HISTORY)
-    remember_on_history = enable_history_list;	/* XXX */
-***************
-*** 2026,2030 ****
-    forced_interactive = interactive_shell = 0;
-    subshell_environment = running_in_background = 0;
-!   expand_aliases = 0;
-    bash_argv_initialized = 0;
-  
---- 2026,2030 ----
-    forced_interactive = interactive_shell = 0;
-    subshell_environment = running_in_background = 0;
-!   expand_aliases = expaliases_flag = 0;
-    bash_argv_initialized = 0;
-  
-*** ../bash-5.2-patched/y.tab.c	2022-09-23 10:18:27.000000000 -0400
---- y.tab.c	2022-10-14 14:57:26.000000000 -0400
-***************
-*** 5618,5621 ****
---- 5618,5623 ----
-      extended_glob = global_extglob;
-  #endif
-+   if (parser_state & (PST_CMDSUBST|PST_STRING))
-+     expand_aliases = expaliases_flag;
-  
-    parser_state = 0;
-***************
-*** 6700,6703 ****
---- 6702,6706 ----
-      parser_state |= PST_NOERROR;
-  
-+   parser_state |= PST_STRING;
-    expand_aliases = 0;
-  
-***************
-*** 8713,8717 ****
-        parser_state &= ~PST_NOEXPAND;	/* parse_comsub sentinel */
-        /* State flags we want to set for this run through the tokenizer. */
-!       parser_state |= PST_COMPASSIGN|PST_REPARSE;
-      }
-  
---- 8716,8720 ----
-        parser_state &= ~PST_NOEXPAND;	/* parse_comsub sentinel */
-        /* State flags we want to set for this run through the tokenizer. */
-!       parser_state |= PST_COMPASSIGN|PST_REPARSE|PST_STRING;
-      }
-  
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 5
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 6
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-007 b/src/patches/bash/bash52-007
deleted file mode 100644
index 152776f4b..000000000
--- a/src/patches/bash/bash52-007
+++ /dev/null
@@ -1,262 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-007
-
-Bug-Reported-by:	Bruce Jerrick
-Bug-Reference-ID:
-Bug-Reference-URL:	https://bugzilla.redhat.com/show_bug.cgi?id=2134307
-
-Bug-Description:
-
-This patch fixes several problems with alias expansion inside command
-substitutions when in POSIX mode.
-
-Patch (apply with `patch -p0'):
-
-*** /fs1/chet/scratch/bash-5.2.6/parse.y	2022-11-02 10:36:54.000000000 -0400
---- parse.y	2022-10-24 10:53:26.000000000 -0400
-***************
-*** 3613,3616 ****
---- 3614,3618 ----
-  #define P_ARRAYSUB	0x0020	/* parsing a [...] array subscript for assignment */
-  #define P_DOLBRACE	0x0040	/* parsing a ${...} construct */
-+ #define P_ARITH		0x0080	/* parsing a $(( )) arithmetic expansion */
-  
-  /* Lexical state while parsing a grouping construct or $(...). */
-***************
-*** 3911,3914 ****
---- 3914,3920 ----
-  	  else if ((flags & (P_ARRAYSUB|P_DOLBRACE)) && (tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '['))	/* ) } ] */
-  	    goto parse_dollar_word;
-+ 	  else if ((flags & P_ARITH) && (tflags & LEX_WASDOL) && ch == '(') /*)*/
-+ 	    /* $() inside $(( ))/$[ ] */
-+ 	    goto parse_dollar_word;
-  #if defined (PROCESS_SUBSTITUTION)
-  	  /* XXX - technically this should only be recognized at the start of
-***************
-*** 3941,3945 ****
-  	    nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|P_DOLBRACE|rflags);
-  	  else if (ch == '[')		/* ] */
-! 	    nestret = parse_matched_pair (0, '[', ']', &nestlen, rflags);
-  
-  	  CHECK_NESTRET_ERROR ();
---- 3947,3951 ----
-  	    nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|P_DOLBRACE|rflags);
-  	  else if (ch == '[')		/* ] */
-! 	    nestret = parse_matched_pair (0, '[', ']', &nestlen, rflags|P_ARITH);
-  
-  	  CHECK_NESTRET_ERROR ();
-***************
-*** 4080,4084 ****
-        shell_ungetc (peekc);
-        if (peekc == '(')		/*)*/
-! 	return (parse_matched_pair (qc, open, close, lenp, 0));
-      }
-  
---- 4086,4090 ----
-        shell_ungetc (peekc);
-        if (peekc == '(')		/*)*/
-! 	return (parse_matched_pair (qc, open, close, lenp, P_ARITH));
-      }
-  
-***************
-*** 4501,4505 ****
-  
-    exp_lineno = line_number;
-!   ttok = parse_matched_pair (0, '(', ')', &ttoklen, 0);
-    rval = 1;
-    if (ttok == &matched_pair_error)
---- 4512,4516 ----
-  
-    exp_lineno = line_number;
-!   ttok = parse_matched_pair (0, '(', ')', &ttoklen, P_ARITH);
-    rval = 1;
-    if (ttok == &matched_pair_error)
-***************
-*** 5016,5020 ****
-  		}
-  	      else
-! 		ttok = parse_matched_pair (cd, '[', ']', &ttoklen, 0);
-  	      if (ttok == &matched_pair_error)
-  		return -1;		/* Bail immediately. */
---- 5030,5034 ----
-  		}
-  	      else
-! 		ttok = parse_matched_pair (cd, '[', ']', &ttoklen, P_ARITH);
-  	      if (ttok == &matched_pair_error)
-  		return -1;		/* Bail immediately. */
-*** ../bash-5.2.6/y.tab.c	2022-11-02 10:36:54.000000000 -0400
---- y.tab.c	2022-11-02 10:55:58.000000000 -0400
-***************
-*** 5924,5927 ****
---- 5924,5928 ----
-  #define P_ARRAYSUB	0x0020	/* parsing a [...] array subscript for assignment */
-  #define P_DOLBRACE	0x0040	/* parsing a ${...} construct */
-+ #define P_ARITH		0x0080	/* parsing a $(( )) arithmetic expansion */
-  
-  /* Lexical state while parsing a grouping construct or $(...). */
-***************
-*** 6222,6225 ****
---- 6223,6229 ----
-  	  else if ((flags & (P_ARRAYSUB|P_DOLBRACE)) && (tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '['))	/* ) } ] */
-  	    goto parse_dollar_word;
-+ 	  else if ((flags & P_ARITH) && (tflags & LEX_WASDOL) && ch == '(') /*)*/
-+ 	    /* $() inside $(( ))/$[ ] */
-+ 	    goto parse_dollar_word;
-  #if defined (PROCESS_SUBSTITUTION)
-  	  /* XXX - technically this should only be recognized at the start of
-***************
-*** 6252,6256 ****
-  	    nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|P_DOLBRACE|rflags);
-  	  else if (ch == '[')		/* ] */
-! 	    nestret = parse_matched_pair (0, '[', ']', &nestlen, rflags);
-  
-  	  CHECK_NESTRET_ERROR ();
---- 6256,6260 ----
-  	    nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|P_DOLBRACE|rflags);
-  	  else if (ch == '[')		/* ] */
-! 	    nestret = parse_matched_pair (0, '[', ']', &nestlen, rflags|P_ARITH);
-  
-  	  CHECK_NESTRET_ERROR ();
-***************
-*** 6391,6395 ****
-        shell_ungetc (peekc);
-        if (peekc == '(')		/*)*/
-! 	return (parse_matched_pair (qc, open, close, lenp, 0));
-      }
-  
---- 6395,6399 ----
-        shell_ungetc (peekc);
-        if (peekc == '(')		/*)*/
-! 	return (parse_matched_pair (qc, open, close, lenp, P_ARITH));
-      }
-  
-***************
-*** 6812,6816 ****
-  
-    exp_lineno = line_number;
-!   ttok = parse_matched_pair (0, '(', ')', &ttoklen, 0);
-    rval = 1;
-    if (ttok == &matched_pair_error)
---- 6816,6820 ----
-  
-    exp_lineno = line_number;
-!   ttok = parse_matched_pair (0, '(', ')', &ttoklen, P_ARITH);
-    rval = 1;
-    if (ttok == &matched_pair_error)
-***************
-*** 7327,7331 ****
-  		}
-  	      else
-! 		ttok = parse_matched_pair (cd, '[', ']', &ttoklen, 0);
-  	      if (ttok == &matched_pair_error)
-  		return -1;		/* Bail immediately. */
---- 7331,7335 ----
-  		}
-  	      else
-! 		ttok = parse_matched_pair (cd, '[', ']', &ttoklen, P_ARITH);
-  	      if (ttok == &matched_pair_error)
-  		return -1;		/* Bail immediately. */
-*** /fs1/chet/scratch/bash-5.2.6/builtins/evalstring.c	2022-07-18 14:46:56.000000000 -0400
---- builtins/evalstring.c	2022-10-18 10:57:51.000000000 -0400
-***************
-*** 432,435 ****
---- 432,437 ----
-        if (parse_command () == 0)
-  	{
-+ 	  int local_expalias, local_alflag;
-+ 
-  	  if ((flags & SEVAL_PARSEONLY) || (interactive_shell == 0 && read_but_dont_execute))
-  	    {
-***************
-*** 508,511 ****
---- 510,526 ----
-  #endif /* ONESHOT */
-  
-+ 	      /* We play tricks in the parser and command_substitute() turning
-+ 		 expand_aliases on and off depending on which parsing pass and
-+ 		 whether or not we're in posix mode. This only matters for
-+ 		 parsing, and we let the higher layers deal with that. We just
-+ 		 want to ensure that expand_aliases is set to the appropriate
-+ 		 global value when we go to execute this command, so we save
-+ 		 and restore it around the execution (we don't restore it if
-+ 		 the global value of the flag (expaliases_flag) changes). */
-+ 	      local_expalias = expand_aliases;
-+ 	      local_alflag = expaliases_flag;
-+ 	      if (subshell_environment & SUBSHELL_COMSUB)
-+ 		expand_aliases = expaliases_flag;
-+ 
-  	      /* See if this is a candidate for $( <file ). */
-  	      if (startup_state == 2 &&
-***************
-*** 525,528 ****
---- 540,547 ----
-  	      discard_unwind_frame ("pe_dispose");
-  
-+ 	      /* If the global value didn't change, we restore what we had. */
-+ 	      if ((subshell_environment & SUBSHELL_COMSUB) && local_alflag == expaliases_flag)
-+ 		expand_aliases = local_expalias;
-+ 
-  	      if (flags & SEVAL_ONECMD)
-  		{
-*** /fs1/chet/scratch/bash-5.2.6/command.h	2021-04-30 15:43:15.000000000 -0400
---- command.h	2022-10-18 11:44:31.000000000 -0400
-***************
-*** 115,118 ****
---- 115,119 ----
-  #define PF_EXPANDRHS	0x20	/* same as W_EXPANDRHS */
-  #define PF_ALLINDS	0x40	/* array, act as if [@] was supplied */
-+ #define PF_BACKQUOTE	0x80	/* differentiate `` from $() for command_substitute */
-  
-  /* Possible values for subshell_environment */
-*** /fs1/chet/scratch/bash-5.2.6/subst.c	2022-11-02 10:28:10.000000000 -0400
---- subst.c	2022-10-20 12:41:07.000000000 -0400
-***************
-*** 7124,7129 ****
-  
-        /* We want to expand aliases on this pass if we are not in posix mode
-! 	 for backwards compatibility. */
-!       if (expand_aliases)
-          expand_aliases = posixly_correct == 0;
-  
---- 7133,7142 ----
-  
-        /* We want to expand aliases on this pass if we are not in posix mode
-! 	 for backwards compatibility. parse_and_execute() takes care of
-! 	 setting expand_aliases back to the global value when executing the
-! 	 parsed string. We only do this for $(...) command substitution,
-! 	 since that is what parse_comsub handles; `` comsubs are processed
-! 	 using parse.y:parse_matched_pair(). */
-!       if (expand_aliases && (flags & PF_BACKQUOTE) == 0)
-          expand_aliases = posixly_correct == 0;
-  
-***************
-*** 11293,11297 ****
-  	      {
-  		de_backslash (temp);
-! 		tword = command_substitute (temp, quoted, 0);
-  		temp1 = tword ? tword->word : (char *)NULL;
-  		if (tword)
---- 11306,11310 ----
-  	      {
-  		de_backslash (temp);
-! 		tword = command_substitute (temp, quoted, PF_BACKQUOTE);
-  		temp1 = tword ? tword->word : (char *)NULL;
-  		if (tword)
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 6
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 7
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-008 b/src/patches/bash/bash52-008
deleted file mode 100644
index ff6371140..000000000
--- a/src/patches/bash/bash52-008
+++ /dev/null
@@ -1,58 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-008
-
-Bug-Reported-by:	Glenn Jackman <glenn.jackman@gmail.com>
-Bug-Reference-ID:	<CAFC8ewQDx7hzNJzveuJ5o4FWo=ij7MzckiJVN_6NXjp504QZeg@mail.gmail.com>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2022-10/msg00095.html
-
-Bug-Description:
-
-Array subscript expansion can inappropriately quote brackets if the expression
-contains < or >.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-20221015/subst.c	2022-10-18 10:47:33.000000000 -0500
---- subst.c	2022-10-20 11:41:07.000000000 -0500
-***************
-*** 3820,3823 ****
---- 3820,3827 ----
-  #endif
-  
-+ /* We don't perform process substitution in arithmetic expressions, so don't
-+    bother checking for it. */
-+ #define ARITH_EXP_CHAR(s) (s == '$' || s == '`' || s == CTLESC || s == '~')
-+ 
-  /* If there are any characters in STRING that require full expansion,
-     then call FUNC to expand STRING; otherwise just perform quote
-***************
-*** 4029,4033 ****
-    while (string[i])
-      {
-!       if (EXP_CHAR (string[i]))
-  	break;
-        else if (string[i] == '\'' || string[i] == '\\' || string[i] == '"')
---- 4033,4037 ----
-    while (string[i])
-      {
-!       if (ARITH_EXP_CHAR (string[i]))
-  	break;
-        else if (string[i] == '\'' || string[i] == '\\' || string[i] == '"')
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 7
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 8
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-009 b/src/patches/bash/bash52-009
deleted file mode 100644
index f907c8c47..000000000
--- a/src/patches/bash/bash52-009
+++ /dev/null
@@ -1,43 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-009
-
-Bug-Reported-by:	Corey Hickey <bugfood-ml@fatooh.org>
-Bug-Reference-ID:	<134330ef-0ead-d73e-68eb-d58fc51efdba@fatooh.org>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/help-bash/2022-10/msg00025.html
-
-Bug-Description:
-
-Bash arithmetic expansion should allow `@' and `*' to be used as associative
-array keys in expressions.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2-patched/expr.c	2022-07-11 10:03:34.000000000 -0400
---- expr.c	2022-10-31 10:51:08.000000000 -0400
-***************
-*** 1169,1172 ****
---- 1169,1174 ----
-  #if defined (ARRAY_VARS)
-    aflag = tflag;	/* use a different variable for now */
-+   if (shell_compatibility_level > 51)
-+     aflag |= AV_ATSTARKEYS;
-    v = (e == ']') ? array_variable_part (tok, tflag, (char **)0, (int *)0) : find_variable (tok);
-  #else
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 8
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 9
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-010 b/src/patches/bash/bash52-010
deleted file mode 100644
index b58f4a86b..000000000
--- a/src/patches/bash/bash52-010
+++ /dev/null
@@ -1,71 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-010
-
-Bug-Reported-by:	larsh@apache.org
-Bug-Reference-ID:
-Bug-Reference-URL:	https://savannah.gnu.org/support/?110744
-
-Bug-Description:
-
-Bash-5.2 checks the first 128 characters of an executable file that execve()
-refuses to execute to see whether it's a binary file before trying to
-execute it as a shell script. This defeats some previously-supported use
-cases like "self-executing" jar files or "self-uncompressing" scripts.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2-patched/general.c	2022-11-07 10:31:42.000000000 -0500
---- general.c	2022-11-18 14:48:45.000000000 -0500
-***************
-*** 684,687 ****
---- 684,688 ----
-  {
-    register int i;
-+   int nline;
-    unsigned char c;
-  
-***************
-*** 690,702 ****
-  
-    /* Generally we check the first line for NULs. If the first line looks like
-!      a `#!' interpreter specifier, we just look for NULs anywhere in the
-!      buffer. */
-!   if (sample[0] == '#' && sample[1] == '!')
-!     return (memchr (sample, '\0', sample_len) != NULL);
-  
-    for (i = 0; i < sample_len; i++)
-      {
-        c = sample[i];
-!       if (c == '\n')
-  	return (0);
-        if (c == '\0')
---- 691,701 ----
-  
-    /* Generally we check the first line for NULs. If the first line looks like
-!      a `#!' interpreter specifier, we look for NULs in the first two lines. */
-!   nline = (sample[0] == '#' && sample[1] == '!') ? 2 : 1;
-  
-    for (i = 0; i < sample_len; i++)
-      {
-        c = sample[i];
-!       if (c == '\n' && --nline == 0)
-  	return (0);
-        if (c == '\0')
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 9
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 10
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-011 b/src/patches/bash/bash52-011
deleted file mode 100644
index e65a50a2d..000000000
--- a/src/patches/bash/bash52-011
+++ /dev/null
@@ -1,45 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-011
-
-Bug-Reported-by:	Fabien Orjollet <of1@disroot.org>
-Bug-Reference-ID:	
-Bug-Reference-URL:	https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1023776
-
-Bug-Description:
-
-Patch (apply with `patch -p0'):
-
-Using timeouts and readline editing with the `read' builtin (read -e -t) can
-leave the readline timeout enabled, potentially resulting in an erroneous
-timeout on the next call.
-
-*** ../bash-5.2-patched/builtins/read.def	2022-06-02 14:23:19.000000000 -0400
---- builtins/read.def	2022-11-10 10:27:45.000000000 -0500
-***************
-*** 168,171 ****
---- 168,174 ----
-    if (read_timeout)
-      shtimer_clear (read_timeout);
-+ #if defined (READLINE)
-+   rl_clear_timeout ();
-+ #endif
-    read_timeout = 0;
-  }
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 10
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 11
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-012 b/src/patches/bash/bash52-012
deleted file mode 100644
index 2791542c9..000000000
--- a/src/patches/bash/bash52-012
+++ /dev/null
@@ -1,344 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-012
-
-Bug-Reported-by:	Kerin Millar <kfm@plushkava.net>
-Bug-Reference-ID:	<20221002095107.89561bc811e549b55644df11@plushkava.net>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2022-10/msg00001.html
-
-Bug-Description:
-
-When running in bash compatibility mode, nested command substitutions can
-leave the `extglob' option enabled.
-
-Patch (apply with `patch -p0'):
-
-*** /fs1/chet/scratch/bash-5.2.12/builtins/shopt.def	2022-11-07 10:31:42.000000000 -0500
---- builtins/shopt.def	2022-10-14 09:30:11.000000000 -0400
-***************
-*** 150,153 ****
---- 150,158 ----
-  #endif
-  
-+ #if defined (EXTENDED_GLOB)
-+ int extglob_flag = EXTGLOB_DEFAULT;
-+ static int shopt_set_extglob PARAMS((char *, int));
-+ #endif
-+ 
-  int expaliases_flag = 0;
-  static int shopt_set_expaliases PARAMS((char *, int));
-***************
-*** 207,211 ****
-  #endif
-  #if defined (EXTENDED_GLOB)
-!   { "extglob", &extended_glob, (shopt_set_func_t *)NULL },
-  #endif
-    { "extquote", &extended_quote, (shopt_set_func_t *)NULL },
---- 212,216 ----
-  #endif
-  #if defined (EXTENDED_GLOB)
-!   { "extglob", &extglob_flag, shopt_set_extglob },
-  #endif
-    { "extquote", &extended_quote, (shopt_set_func_t *)NULL },
-***************
-*** 378,382 ****
-  
-  #if defined (EXTENDED_GLOB)
-!   extended_glob = EXTGLOB_DEFAULT;
-  #endif
-  
---- 383,387 ----
-  
-  #if defined (EXTENDED_GLOB)
-!   extended_glob = extglob_flag = EXTGLOB_DEFAULT;
-  #endif
-  
-***************
-*** 644,647 ****
---- 649,663 ----
-  }
-  
-+ #if defined (EXTENDED_GLOB)
-+ static int
-+ shopt_set_extglob (option_name, mode)
-+      char *option_name;
-+      int mode;
-+ {
-+   extended_glob = extglob_flag;
-+   return 0;
-+ }
-+ #endif
-+ 
-  #if defined (READLINE)
-  static int
-*** /fs1/chet/scratch/bash-5.2.12/builtins/common.h	2022-11-07 10:31:42.000000000 -0500
---- builtins/common.h	2022-10-14 09:29:25.000000000 -0400
-***************
-*** 258,261 ****
---- 258,265 ----
-  #endif
-  
-+ #if defined (EXTENDED_GLOB)
-+ extern int extglob_flag;
-+ #endif
-+ 
-  extern int expaliases_flag;
-  
-*** /fs1/chet/scratch/bash-5.2.12/execute_cmd.c	2022-11-07 10:31:42.000000000 -0500
---- execute_cmd.c	2022-11-02 16:32:12.000000000 -0400
-***************
-*** 3991,4001 ****
-  #endif /* COND_REGEXP */
-  	{
-- 	  int oe;
-- 	  oe = extended_glob;
-  	  extended_glob = 1;
-  	  result = binary_test (cond->op->word, arg1, arg2, TEST_PATMATCH|TEST_ARITHEXP|TEST_LOCALE)
-  				  ? EXECUTION_SUCCESS
-  				  : EXECUTION_FAILURE;
-! 	  extended_glob = oe;
-  	}
-        if (arg1 != nullstr)
---- 4015,4023 ----
-  #endif /* COND_REGEXP */
-  	{
-  	  extended_glob = 1;
-  	  result = binary_test (cond->op->word, arg1, arg2, TEST_PATMATCH|TEST_ARITHEXP|TEST_LOCALE)
-  				  ? EXECUTION_SUCCESS
-  				  : EXECUTION_FAILURE;
-! 	  extended_glob = extglob_flag;
-  	}
-        if (arg1 != nullstr)
-*** /fs1/chet/scratch/bash-5.2.9/parse.y	2022-11-07 10:31:47.000000000 -0500
---- parse.y	2022-11-14 11:27:22.000000000 -0500
-***************
-*** 126,130 ****
-  
-  #if defined (EXTENDED_GLOB)
-! extern int extended_glob;
-  #endif
-  
---- 126,130 ----
-  
-  #if defined (EXTENDED_GLOB)
-! extern int extended_glob, extglob_flag;
-  #endif
-  
-***************
-*** 3305,3309 ****
-    /* Reset to global value of extended glob */
-    if (parser_state & (PST_EXTPAT|PST_CMDSUBST))
-!     extended_glob = global_extglob;
-  #endif
-    if (parser_state & (PST_CMDSUBST|PST_STRING))
---- 3321,3325 ----
-    /* Reset to global value of extended glob */
-    if (parser_state & (PST_EXTPAT|PST_CMDSUBST))
-!     extended_glob = extglob_flag;
-  #endif
-    if (parser_state & (PST_CMDSUBST|PST_STRING))
-***************
-*** 4125,4132 ****
-  #if defined (EXTENDED_GLOB)
-    /* If (parser_state & PST_EXTPAT), we're parsing an extended pattern for a
-!      conditional command and have already set global_extglob appropriately. */
-    if (shell_compatibility_level <= 51 && was_extpat == 0)
-      {
-!       local_extglob = global_extglob = extended_glob;
-        extended_glob = 1;
-      }
---- 4143,4150 ----
-  #if defined (EXTENDED_GLOB)
-    /* If (parser_state & PST_EXTPAT), we're parsing an extended pattern for a
-!      conditional command and have already set extended_glob appropriately. */
-    if (shell_compatibility_level <= 51 && was_extpat == 0)
-      {
-!       local_extglob = extended_glob;
-        extended_glob = 1;
-      }
-***************
-*** 4236,4240 ****
-    sh_parser_state_t ps;
-    sh_input_line_state_t ls;
-!   int orig_ind, nc, sflags, start_lineno;
-    char *ret, *ep, *ostring;
-  
---- 4256,4260 ----
-    sh_parser_state_t ps;
-    sh_input_line_state_t ls;
-!   int orig_ind, nc, sflags, start_lineno, local_extglob;
-    char *ret, *ep, *ostring;
-  
-***************
-*** 4279,4283 ****
-    expand_aliases = 0;
-  #if defined (EXTENDED_GLOB)
-!   global_extglob = extended_glob;		/* for reset_parser() */
-  #endif
-  
---- 4299,4303 ----
-    expand_aliases = 0;
-  #if defined (EXTENDED_GLOB)
-!   local_extglob = extended_glob;
-  #endif
-  
-***************
-*** 4297,4300 ****
---- 4317,4323 ----
-    restore_parser_state (&ps);
-  
-+ #if defined (EXTENDED_GLOB)
-+   extended_glob = local_extglob;
-+ #endif
-    token_to_read = 0;
-  
-***************
-*** 4732,4741 ****
---- 4755,4768 ----
-  
-        /* rhs */
-+ #if defined (EXTENDED_GLOB)
-        local_extglob = extended_glob;
-        if (parser_state & PST_EXTPAT)
-  	extended_glob = 1;
-+ #endif
-        tok = read_token (READ);
-+ #if defined (EXTENDED_GLOB)
-        if (parser_state & PST_EXTPAT)
-  	extended_glob = local_extglob;
-+ #endif
-        parser_state &= ~(PST_REGEXP|PST_EXTPAT);
-  
-***************
-*** 4784,4788 ****
-    COND_COM *cexp;
-  
--   global_extglob = extended_glob;
-    cexp = cond_expr ();
-    return (make_cond_command (cexp));
---- 4811,4814 ----
-*** y.tab.c.save	2022-11-07 10:31:47.000000000 -0500
---- y.tab.c	2022-11-18 15:58:03.000000000 -0500
-***************
-*** 176,180 ****
-  
-  #if defined (EXTENDED_GLOB)
-! extern int extended_glob;
-  #endif
-  
---- 176,180 ----
-  
-  #if defined (EXTENDED_GLOB)
-! extern int extended_glob, extglob_flag;
-  #endif
-  
-***************
-*** 5616,5620 ****
-    /* Reset to global value of extended glob */
-    if (parser_state & (PST_EXTPAT|PST_CMDSUBST))
-!     extended_glob = global_extglob;
-  #endif
-    if (parser_state & (PST_CMDSUBST|PST_STRING))
---- 5616,5620 ----
-    /* Reset to global value of extended glob */
-    if (parser_state & (PST_EXTPAT|PST_CMDSUBST))
-!     extended_glob = extglob_flag;
-  #endif
-    if (parser_state & (PST_CMDSUBST|PST_STRING))
-***************
-*** 6436,6443 ****
-  #if defined (EXTENDED_GLOB)
-    /* If (parser_state & PST_EXTPAT), we're parsing an extended pattern for a
-!      conditional command and have already set global_extglob appropriately. */
-    if (shell_compatibility_level <= 51 && was_extpat == 0)
-      {
-!       local_extglob = global_extglob = extended_glob;
-        extended_glob = 1;
-      }
---- 6436,6443 ----
-  #if defined (EXTENDED_GLOB)
-    /* If (parser_state & PST_EXTPAT), we're parsing an extended pattern for a
-!      conditional command and have already set extended_glob appropriately. */
-    if (shell_compatibility_level <= 51 && was_extpat == 0)
-      {
-!       local_extglob = extended_glob;
-        extended_glob = 1;
-      }
-***************
-*** 6547,6551 ****
-    sh_parser_state_t ps;
-    sh_input_line_state_t ls;
-!   int orig_ind, nc, sflags, start_lineno;
-    char *ret, *ep, *ostring;
-  
---- 6547,6551 ----
-    sh_parser_state_t ps;
-    sh_input_line_state_t ls;
-!   int orig_ind, nc, sflags, start_lineno, local_extglob;
-    char *ret, *ep, *ostring;
-  
-***************
-*** 6590,6594 ****
-    expand_aliases = 0;
-  #if defined (EXTENDED_GLOB)
-!   global_extglob = extended_glob;		/* for reset_parser() */
-  #endif
-  
---- 6590,6594 ----
-    expand_aliases = 0;
-  #if defined (EXTENDED_GLOB)
-!   local_extglob = extended_glob;
-  #endif
-  
-***************
-*** 6608,6611 ****
---- 6608,6614 ----
-    restore_parser_state (&ps);
-  
-+ #if defined (EXTENDED_GLOB)
-+   extended_glob = local_extglob;
-+ #endif
-    token_to_read = 0;
-  
-***************
-*** 7043,7052 ****
---- 7046,7059 ----
-  
-        /* rhs */
-+ #if defined (EXTENDED_GLOB)
-        local_extglob = extended_glob;
-        if (parser_state & PST_EXTPAT)
-  	extended_glob = 1;
-+ #endif
-        tok = read_token (READ);
-+ #if defined (EXTENDED_GLOB)
-        if (parser_state & PST_EXTPAT)
-  	extended_glob = local_extglob;
-+ #endif
-        parser_state &= ~(PST_REGEXP|PST_EXTPAT);
-  
-***************
-*** 7095,7099 ****
-    COND_COM *cexp;
-  
--   global_extglob = extended_glob;
-    cexp = cond_expr ();
-    return (make_cond_command (cexp));
---- 7102,7105 ----
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 11
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 12
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-013 b/src/patches/bash/bash52-013
deleted file mode 100644
index 3051269c1..000000000
--- a/src/patches/bash/bash52-013
+++ /dev/null
@@ -1,58 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-013
-
-Bug-Reported-by:	Ralf Oehler <Ralf@Oehler-Privat.de>
-Bug-Reference-ID:	<20221120140252.2fc6489b@bilbo>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2022-11/msg00082.html
-
-Bug-Description:
-
-Bash can leak memory when referencing a non-existent associative array
-element.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2-patched/subst.c	2022-11-05 17:27:48.000000000 -0400
---- subst.c	2022-11-21 14:42:59.000000000 -0500
-***************
-*** 7498,7503 ****
-  		    : quote_escapes (temp);
-  	  rflags |= W_ARRAYIND;
-- 	  if (estatep)
-- 	    *estatep = es;	/* structure copy */
-  	}
-        /* Note that array[*] and array[@] expanded to a quoted null string by
---- 7508,7511 ----
-***************
-*** 7508,7512 ****
-  	rflags |= W_HASQUOTEDNULL;
-  
-!       if (estatep == 0)
-  	flush_eltstate (&es);
-      }
---- 7516,7522 ----
-  	rflags |= W_HASQUOTEDNULL;
-  
-!       if (estatep)
-! 	*estatep = es;	/* structure copy */
-!       else
-  	flush_eltstate (&es);
-      }
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 12
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 13
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-014 b/src/patches/bash/bash52-014
deleted file mode 100644
index c6f3176bf..000000000
--- a/src/patches/bash/bash52-014
+++ /dev/null
@@ -1,119 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-014
-
-Bug-Reported-by:	Andreas Schwab <schwab@suse.de>
-Bug-Reference-ID:	<mvmv8opcbha.fsf@suse.de>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2022-10/msg00076.html
-
-Bug-Description:
-
-Bash defers processing additional terminating signals when running the
-EXIT trap while exiting due to a terminating signal. This patch allows the
-new terminating signal to kill the shell immediately.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2-patched/execute_cmd.c	2022-11-23 17:09:18.000000000 -0500
---- execute_cmd.c	2022-11-28 10:36:08.000000000 -0500
-***************
-*** 3625,3628 ****
---- 3649,3653 ----
-  
-  	  dispose_words (es);
-+ 	  QUIT;
-  
-  	  if (match)
-*** ../bash-5.2-patched/sig.c	2021-11-04 14:15:31.000000000 -0400
---- sig.c	2022-12-06 09:45:11.000000000 -0500
-***************
-*** 95,98 ****
---- 95,99 ----
-  
-  static void initialize_shell_signals PARAMS((void));
-+ static void kill_shell PARAMS((int));
-  
-  void
-***************
-*** 487,490 ****
---- 495,500 ----
-  }
-  
-+ static int handling_termsig = 0;
-+ 
-  sighandler
-  termsig_sighandler (sig)
-***************
-*** 533,536 ****
---- 543,554 ----
-      terminate_immediately = 1;
-  
-+   /* If we are currently handling a terminating signal, we have a couple of
-+      choices here. We can ignore this second terminating signal and let the
-+      shell exit from the first one, or we can exit immediately by killing
-+      the shell with this signal. This code implements the latter; to implement
-+      the former, replace the kill_shell(sig) with return. */
-+   if (handling_termsig)
-+     kill_shell (sig);		/* just short-circuit now */
-+ 
-    terminating_signal = sig;
-  
-***************
-*** 565,572 ****
-       int sig;
-  {
--   static int handling_termsig = 0;
--   int i, core;
--   sigset_t mask;
-- 
-    /* Simple semaphore to keep this function from being executed multiple
-       times.  Since we no longer are running as a signal handler, we don't
---- 585,588 ----
-***************
-*** 574,578 ****
-    if (handling_termsig)
-      return;
-!   handling_termsig = 1;
-    terminating_signal = 0;	/* keep macro from re-testing true. */
-  
---- 590,595 ----
-    if (handling_termsig)
-      return;
-! 
-!   handling_termsig = terminating_signal;	/* for termsig_sighandler */
-    terminating_signal = 0;	/* keep macro from re-testing true. */
-  
-***************
-*** 614,617 ****
---- 631,644 ----
-    run_exit_trap ();	/* XXX - run exit trap possibly in signal context? */
-  
-+   kill_shell (sig);
-+ }
-+ 
-+ static void
-+ kill_shell (sig)
-+      int sig;
-+ {
-+   int i, core;
-+   sigset_t mask;
-+ 
-    /* We don't change the set of blocked signals. If a user starts the shell
-       with a terminating signal blocked, we won't get here (and if by some
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 13
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 14
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-015 b/src/patches/bash/bash52-015
deleted file mode 100644
index 740a13da5..000000000
--- a/src/patches/bash/bash52-015
+++ /dev/null
@@ -1,216 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-015
-
-Bug-Reported-by:	Frode Nordahl <frode.nordahl@canonical.com>
-Bug-Reference-ID:	<20221119070714.351759-1-frode.nordahl@canonical.com>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2022-11/msg00078.html
-
-Bug-Description:
-
-There are several cases where bash is too aggressive when optimizing out forks
-in subshells. For example, `eval' and traps should never be optimized.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2-patched/builtins/common.h	2022-11-23 17:09:18.000000000 -0500
---- builtins/common.h	2022-11-19 18:03:59.000000000 -0500
-***************
-*** 52,55 ****
---- 52,56 ----
-  #define SEVAL_ONECMD	0x100		/* only allow a single command */
-  #define SEVAL_NOHISTEXP	0x200		/* inhibit history expansion */
-+ #define SEVAL_NOOPTIMIZE 0x400		/* don't try to set optimization flags */
-  
-  /* Flags for describe_command, shared between type.def and command.def */
-*** ../bash-5.2-patched/builtins/evalstring.c	2022-11-05 17:27:44.000000000 -0400
---- builtins/evalstring.c	2022-11-19 18:23:21.000000000 -0500
-***************
-*** 133,138 ****
-        (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR || command->value.Connection->connector == ';') &&
-        (command->value.Connection->second->flags & CMD_TRY_OPTIMIZING) &&
-!       ((startup_state == 2 && should_suppress_fork (command->value.Connection->second)) ||
-!        ((subshell_environment & SUBSHELL_PAREN) && should_optimize_fork (command->value.Connection->second, 0))))
-      {
-        command->value.Connection->second->flags |= CMD_NO_FORK;
---- 133,138 ----
-        (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR || command->value.Connection->connector == ';') &&
-        (command->value.Connection->second->flags & CMD_TRY_OPTIMIZING) &&
-!       (should_suppress_fork (command->value.Connection->second) ||
-!       ((subshell_environment & SUBSHELL_PAREN) && should_optimize_fork (command->value.Connection->second, 0))))
-      {
-        command->value.Connection->second->flags |= CMD_NO_FORK;
-***************
-*** 291,294 ****
---- 291,295 ----
-     	(flags & SEVAL_RESETLINE) -> reset line_number to 1
-     	(flags & SEVAL_NOHISTEXP) -> history_expansion_inhibited -> 1
-+    	(flags & SEVAL_NOOPTIMIZE) -> don't try to turn on optimizing flags
-  */
-  
-***************
-*** 503,507 ****
-  		 series of connection commands is
-  		 command->value.Connection->second. */
-! 	      else if (command->type == cm_connection && can_optimize_connection (command))
-  		{
-  		  command->value.Connection->second->flags |= CMD_TRY_OPTIMIZING;
---- 504,510 ----
-  		 series of connection commands is
-  		 command->value.Connection->second. */
-! 	      else if (command->type == cm_connection &&
-! 		       (flags & SEVAL_NOOPTIMIZE) == 0 &&
-! 		       can_optimize_connection (command))
-  		{
-  		  command->value.Connection->second->flags |= CMD_TRY_OPTIMIZING;
-*** ../bash-5.2-patched/builtins/eval.def	2016-01-25 13:28:37.000000000 -0500
---- builtins/eval.def	2022-11-19 18:04:25.000000000 -0500
-***************
-*** 54,57 ****
-    list = loptend;	/* skip over possible `--' */
-  
-!   return (list ? evalstring (string_list (list), "eval", SEVAL_NOHIST) : EXECUTION_SUCCESS);
-  }
---- 54,57 ----
-    list = loptend;	/* skip over possible `--' */
-  
-!   return (list ? evalstring (string_list (list), "eval", SEVAL_NOHIST|SEVAL_NOOPTIMIZE) : EXECUTION_SUCCESS);
-  }
-*** ../bash-5.2-patched/trap.c	2022-08-10 08:59:45.000000000 -0400
---- trap.c	2022-12-12 10:57:51.000000000 -0500
-***************
-*** 305,308 ****
---- 305,309 ----
-    volatile int save_return_catch_flag, function_code;
-    procenv_t save_return_catch;
-+   char *trap_command, *old_trap;
-  #if defined (ARRAY_VARS)
-    ARRAY *ps;
-***************
-*** 420,423 ****
---- 421,427 ----
-  	  else
-  	    {
-+ 	      old_trap = trap_list[sig];
-+ 	      trap_command = savestring (old_trap);
-+ 
-  	      save_parser_state (&pstate);
-  	      save_subst_varlist = subst_assign_varlist;
-***************
-*** 442,446 ****
-  
-  	      if (function_code == 0)
-! 		x = parse_and_execute (savestring (trap_list[sig]), "trap", SEVAL_NONINT|SEVAL_NOHIST|SEVAL_RESETLINE);
-  	      else
-  		{
---- 446,451 ----
-  
-  	      if (function_code == 0)
-! 	        /* XXX is x always last_command_exit_value? */
-! 		x = parse_and_execute (trap_command, "trap", SEVAL_NONINT|SEVAL_NOHIST|SEVAL_RESETLINE|SEVAL_NOOPTIMIZE);
-  	      else
-  		{
-***************
-*** 1003,1007 ****
-  	{
-  	  reset_parser ();
-! 	  parse_and_execute (trap_command, "exit trap", SEVAL_NONINT|SEVAL_NOHIST|SEVAL_RESETLINE);
-  	}
-        else if (code == ERREXIT)
---- 1008,1012 ----
-  	{
-  	  reset_parser ();
-! 	  parse_and_execute (trap_command, "exit trap", SEVAL_NONINT|SEVAL_NOHIST|SEVAL_RESETLINE|SEVAL_NOOPTIMIZE);
-  	}
-        else if (code == ERREXIT)
-***************
-*** 1110,1114 ****
-  	}
-  
-!       flags = SEVAL_NONINT|SEVAL_NOHIST;
-        if (sig != DEBUG_TRAP && sig != RETURN_TRAP && sig != ERROR_TRAP)
-  	flags |= SEVAL_RESETLINE;
---- 1115,1119 ----
-  	}
-  
-!       flags = SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOOPTIMIZE;
-        if (sig != DEBUG_TRAP && sig != RETURN_TRAP && sig != ERROR_TRAP)
-  	flags |= SEVAL_RESETLINE;
-*** ../bash-5.2-patched/parse.y	2022-11-23 17:09:18.000000000 -0500
---- parse.y	2022-11-19 18:15:34.000000000 -0500
-***************
-*** 2828,2832 ****
-      last_lastarg = savestring (last_lastarg);
-  
-!   parse_and_execute (savestring (command), vname, SEVAL_NONINT|SEVAL_NOHIST);
-  
-    restore_parser_state (&ps);
---- 2844,2848 ----
-      last_lastarg = savestring (last_lastarg);
-  
-!   parse_and_execute (savestring (command), vname, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOOPTIMIZE);
-  
-    restore_parser_state (&ps);
-*** ../bash-5.2-patched/jobs.c	2022-07-18 10:19:56.000000000 -0400
---- jobs.c	2022-11-19 18:10:24.000000000 -0500
-***************
-*** 4221,4225 ****
-    for (i = 0; i < nchild; i++)
-      {
-!       parse_and_execute (savestring (trap_command), "trap", SEVAL_NOHIST|SEVAL_RESETLINE);
-      }
-  
---- 4243,4247 ----
-    for (i = 0; i < nchild; i++)
-      {
-!       parse_and_execute (savestring (trap_command), "trap", SEVAL_NOHIST|SEVAL_RESETLINE|SEVAL_NOOPTIMIZE);
-      }
-  
-*** ../bash-5.2-patched/y.tab.c	2022-11-23 17:09:18.000000000 -0500
---- y.tab.c	2022-11-23 17:21:17.000000000 -0500
-***************
-*** 5139,5143 ****
-      last_lastarg = savestring (last_lastarg);
-  
-!   parse_and_execute (savestring (command), vname, SEVAL_NONINT|SEVAL_NOHIST);
-  
-    restore_parser_state (&ps);
---- 5154,5158 ----
-      last_lastarg = savestring (last_lastarg);
-  
-!   parse_and_execute (savestring (command), vname, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOOPTIMIZE);
-  
-    restore_parser_state (&ps);
-*** ../bash-5.2-patched/execute_cmd.c	2022-11-05 17:27:41.000000000 -0400
---- execute_cmd.c	2022-11-22 17:09:38.000000000 -0500
-***************
-*** 1655,1659 ****
-       and set CMD_TRY_OPTIMIZING for simple commands on the right side of an
-       and-or or `;' list to test for optimizing forks when they are executed. */
-!   if (user_subshell && command->type == cm_subshell)
-      optimize_subshell_command (command->value.Subshell->command);
-  
---- 1665,1670 ----
-       and set CMD_TRY_OPTIMIZING for simple commands on the right side of an
-       and-or or `;' list to test for optimizing forks when they are executed. */
-!   if (user_subshell && command->type == cm_subshell &&
-!       (command->flags & (CMD_TIME_PIPELINE|CMD_INVERT_RETURN)) == 0)
-      optimize_subshell_command (command->value.Subshell->command);
-  
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 14
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 15
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-016 b/src/patches/bash/bash52-016
deleted file mode 100644
index e9fbbef17..000000000
--- a/src/patches/bash/bash52-016
+++ /dev/null
@@ -1,47 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-016
-
-Bug-Reported-by:	F G <frank.graziano@gmail.com>
-Bug-Reference-ID:	<CAOhYt35M5VctK+xAPu=Gy_UzzGmHedWPJE4q+kL4UHF_6Nb1kA@mail.gmail.com>
-Bug-Reference-URL:
-
-Bug-Description:
-
-If an expression in an arithmetic for loop expands to NULL, the shell
-would crash.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2-patched/execute_cmd.c	Thu Feb 23 14:15:05 2023
---- execute_cmd.c	Mon Feb 27 17:53:08 2023
-***************
-*** 3051,3055 ****
-    if (l->next)
-      free (expr);
-!   new = make_word_list (make_word (temp), (WORD_LIST *)NULL);
-    free (temp);
-  
---- 3051,3055 ----
-    if (l->next)
-      free (expr);
-!   new = make_word_list (make_word (temp ? temp : ""), (WORD_LIST *)NULL);
-    free (temp);
-  
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 15
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 16
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-017 b/src/patches/bash/bash52-017
deleted file mode 100644
index d28b504bf..000000000
--- a/src/patches/bash/bash52-017
+++ /dev/null
@@ -1,47 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-017
-
-Bug-Reported-by:	Dan Church <h3xx@gmx.com>
-Bug-Reference-ID:	<1a8fd1d6-a3ac-9a67-78eb-b9a7435304c8@gmx.com>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2022-12/msg00076.html
-
-Bug-Description:
-
-In certain cases, using the `.' builtin in a subshell would optimize away
-the rest of the commands in the subshell.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2-patched/builtins/evalfile.c	2019-07-20 16:16:08.000000000 -0400
---- builtins/evalfile.c	2022-12-22 12:13:08.000000000 -0500
-***************
-*** 267,271 ****
-  
-    /* set the flags to be passed to parse_and_execute */
-!   pflags = SEVAL_RESETLINE;
-    pflags |= (flags & FEVAL_HISTORY) ? 0 : SEVAL_NOHIST;
-  
---- 267,271 ----
-  
-    /* set the flags to be passed to parse_and_execute */
-!   pflags = SEVAL_RESETLINE|SEVAL_NOOPTIMIZE;
-    pflags |= (flags & FEVAL_HISTORY) ? 0 : SEVAL_NOHIST;
-  
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 16
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 17
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-018 b/src/patches/bash/bash52-018
deleted file mode 100644
index d93f11281..000000000
--- a/src/patches/bash/bash52-018
+++ /dev/null
@@ -1,3643 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-018
-
-Bug-Reported-by:	Todd Stein <toddbstein@gmail.com>
-			Eduardo A . Bustamante López  <dualbus@gmail.com>
-Bug-Reference-ID:
-			<Y/SHWg7/+sc19k7P@system76-pc>
-Bug-Reference-URL:	https://savannah.gnu.org/support/?110745
-			https://lists.gnu.org/archive/html/bug-bash/2023-02/msg00141.html
-
-Bug-Description:
-
-There are two problems with returning tokens to yyparse() when the shell
-encounters a syntax error or when it reads EOF.
-
-When reading a WORD token, the parser has to return the correct value to
-yyparse. Previous versions returned a value < 0, which the bash parser
-translated into YYERRCODE for bison, and in newer versions of bison, the
-appropriate reset actions didn't happen. We should return YYUNDEF, which
-bison uses for `invalid token'. Since we can return a token < 0 for both
-invalid tokens and EOF, the bash tokenizer needs to differentiate between
-those two cases.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2-patched/parse.y	2022-12-13 12:09:02.000000000 -0500
---- parse.y	2023-11-08 14:29:13.000000000 -0500
-***************
-*** 453,456 ****
---- 453,471 ----
-  			    }
-  			}
-+ 	|	error YYEOF
-+ 			{
-+ 			  global_command = (COMMAND *)NULL;
-+ 			  if (last_command_exit_value == 0)
-+ 			    last_command_exit_value = EX_BADUSAGE;	/* force error return */
-+ 			  if (interactive && parse_and_execute_level == 0)
-+ 			    {
-+ 			      handle_eof_input_unit ();
-+ 			      YYACCEPT;
-+ 			    }
-+ 			  else
-+ 			    {
-+ 			      YYABORT;
-+ 			    }
-+ 			}
-  	|	yacc_EOF
-  			{
-***************
-*** 2898,2904 ****
-    if (current_token < 0)
-  #if defined (YYERRCODE) && !defined (YYUNDEF)
-!     current_token = YYERRCODE;
-  #else
-!     current_token = YYerror;
-  #endif
-  
---- 2913,2919 ----
-    if (current_token < 0)
-  #if defined (YYERRCODE) && !defined (YYUNDEF)
-!     current_token = EOF_Reached ? YYEOF : YYERRCODE;
-  #else
-!     current_token = EOF_Reached ? YYEOF : YYUNDEF;
-  #endif
-  
-***************
-*** 3695,3698 ****
---- 3711,3715 ----
-  	  parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), close);
-  	  EOF_Reached = 1;	/* XXX */
-+ 	  parser_state |= PST_NOERROR;  /* avoid redundant error message */
-  	  return (&matched_pair_error);
-  	}
-***************
-*** 4157,4160 ****
---- 4172,4176 ----
-  
-        /* yyparse() has already called yyerror() and reset_parser() */
-+       parser_state |= PST_NOERROR;
-        return (&matched_pair_error);
-      }
-
-*** /Users/chet/src/bash/bash-5.2-patched/y.tab.c	2022-12-13 12:09:02.000000000 -0500
---- y.tab.c	2023-11-08 14:38:01.000000000 -0500
-***************
-*** 993,997 ****
-  
-  /* YYFINAL -- State number of the termination state.  */
-! #define YYFINAL  121
-  /* YYLAST -- Last index in YYTABLE.  */
-  #define YYLAST   740
---- 993,997 ----
-  
-  /* YYFINAL -- State number of the termination state.  */
-! #define YYFINAL  122
-  /* YYLAST -- Last index in YYTABLE.  */
-  #define YYLAST   740
-***************
-*** 1002,1008 ****
-  #define YYNNTS  38
-  /* YYNRULES -- Number of rules.  */
-! #define YYNRULES  174
-  /* YYNSTATES -- Number of states.  */
-! #define YYNSTATES  349
-  
-  /* YYMAXUTOK -- Last valid token kind.  */
---- 1002,1008 ----
-  #define YYNNTS  38
-  /* YYNRULES -- Number of rules.  */
-! #define YYNRULES  175
-  /* YYNSTATES -- Number of states.  */
-! #define YYNSTATES  350
-  
-  /* YYMAXUTOK -- Last valid token kind.  */
-***************
-*** 1058,1079 ****
-  static const yytype_int16 yyrline[] =
-  {
-!        0,   395,   395,   406,   414,   423,   438,   455,   465,   467,
-!      471,   477,   483,   489,   495,   501,   507,   513,   519,   525,
-!      531,   537,   543,   549,   555,   561,   568,   575,   582,   589,
-!      596,   603,   609,   615,   621,   627,   633,   639,   645,   651,
-!      657,   663,   669,   675,   681,   687,   693,   699,   705,   711,
-!      717,   723,   729,   735,   743,   745,   747,   751,   755,   766,
-!      768,   772,   774,   776,   792,   794,   798,   800,   802,   804,
-!      806,   808,   810,   812,   814,   816,   818,   822,   827,   832,
-!      837,   842,   847,   852,   857,   864,   870,   876,   882,   890,
-!      895,   900,   905,   910,   915,   920,   925,   932,   937,   942,
-!      949,   951,   953,   955,   959,   961,   992,   999,  1003,  1009,
-!     1014,  1031,  1036,  1053,  1060,  1062,  1064,  1069,  1073,  1077,
-!     1081,  1083,  1085,  1089,  1090,  1094,  1096,  1098,  1100,  1104,
-!     1106,  1108,  1110,  1112,  1114,  1118,  1120,  1129,  1135,  1141,
-!     1142,  1149,  1153,  1155,  1157,  1164,  1166,  1173,  1177,  1178,
-!     1181,  1183,  1185,  1189,  1190,  1199,  1214,  1232,  1249,  1251,
-!     1253,  1260,  1263,  1267,  1269,  1275,  1281,  1301,  1324,  1326,
-!     1349,  1353,  1355,  1357,  1359
-  };
-  #endif
---- 1058,1079 ----
-  static const yytype_int16 yyrline[] =
-  {
-!        0,   395,   395,   406,   414,   423,   438,   455,   470,   480,
-!      482,   486,   492,   498,   504,   510,   516,   522,   528,   534,
-!      540,   546,   552,   558,   564,   570,   576,   583,   590,   597,
-!      604,   611,   618,   624,   630,   636,   642,   648,   654,   660,
-!      666,   672,   678,   684,   690,   696,   702,   708,   714,   720,
-!      726,   732,   738,   744,   750,   758,   760,   762,   766,   770,
-!      781,   783,   787,   789,   791,   807,   809,   813,   815,   817,
-!      819,   821,   823,   825,   827,   829,   831,   833,   837,   842,
-!      847,   852,   857,   862,   867,   872,   879,   885,   891,   897,
-!      905,   910,   915,   920,   925,   930,   935,   940,   947,   952,
-!      957,   964,   966,   968,   970,   974,   976,  1007,  1014,  1018,
-!     1024,  1029,  1046,  1051,  1068,  1075,  1077,  1079,  1084,  1088,
-!     1092,  1096,  1098,  1100,  1104,  1105,  1109,  1111,  1113,  1115,
-!     1119,  1121,  1123,  1125,  1127,  1129,  1133,  1135,  1144,  1150,
-!     1156,  1157,  1164,  1168,  1170,  1172,  1179,  1181,  1188,  1192,
-!     1193,  1196,  1198,  1200,  1204,  1205,  1214,  1229,  1247,  1264,
-!     1266,  1268,  1275,  1278,  1282,  1284,  1290,  1296,  1316,  1339,
-!     1341,  1364,  1368,  1370,  1372,  1374
-  };
-  #endif
-***************
-*** 1120,1124 ****
-  #endif
-  
-! #define YYPACT_NINF (-152)
-  
-  #define yypact_value_is_default(Yyn) \
---- 1120,1124 ----
-  #endif
-  
-! #define YYPACT_NINF (-125)
-  
-  #define yypact_value_is_default(Yyn) \
-***************
-*** 1134,1172 ****
-  static const yytype_int16 yypact[] =
-  {
-!      328,    80,  -152,   -11,    -1,     3,  -152,  -152,    15,   637,
-!       -5,   433,   149,   -28,  -152,   187,   684,  -152,    18,    28,
-!      130,    38,   139,    50,    52,    60,    65,    74,  -152,  -152,
-!     -152,    89,   104,  -152,  -152,    97,  -152,  -152,   246,  -152,
-!      670,  -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,
-!     -152,  -152,  -152,   146,   211,  -152,     1,   433,  -152,  -152,
-!      135,   484,  -152,    59,    61,    90,   167,   171,    10,    71,
-!      246,   670,   144,  -152,  -152,  -152,  -152,  -152,   165,  -152,
-!      142,   179,   192,   140,   194,   160,   227,   245,   252,   253,
-!      260,   261,   262,   162,   269,   178,   270,   272,   273,   274,
-!      277,  -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,
-!     -152,  -152,  -152,  -152,  -152,   168,   379,  -152,  -152,   173,
-!      244,  -152,  -152,  -152,  -152,   670,  -152,  -152,  -152,  -152,
-!     -152,   535,   535,  -152,  -152,  -152,  -152,  -152,  -152,  -152,
-!      205,  -152,    14,  -152,    36,  -152,  -152,  -152,  -152,    84,
-!     -152,  -152,  -152,   249,   670,  -152,   670,   670,  -152,  -152,
-!     -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,
-!     -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,
-!     -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,
-!     -152,  -152,  -152,  -152,   484,   484,   203,   203,   586,   586,
-!      145,  -152,  -152,  -152,  -152,  -152,  -152,     0,  -152,   119,
-!     -152,   291,   248,    66,    88,  -152,   119,  -152,   296,   297,
-!       35,  -152,   670,   670,    35,  -152,  -152,     1,     1,  -152,
-!     -152,  -152,   306,   484,   484,   484,   484,   484,   305,   169,
-!     -152,     7,  -152,  -152,   302,  -152,   131,  -152,   265,  -152,
-!     -152,  -152,  -152,  -152,  -152,   304,   131,  -152,   266,  -152,
-!     -152,  -152,    35,  -152,   313,   317,  -152,  -152,  -152,   225,
-!      225,   225,  -152,  -152,  -152,  -152,   206,    25,  -152,  -152,
-!      307,   -42,   319,   276,  -152,  -152,  -152,    95,  -152,   322,
-!      283,   332,   284,  -152,  -152,   102,  -152,  -152,  -152,  -152,
-!     -152,  -152,  -152,  -152,    45,   323,  -152,  -152,  -152,   106,
-!     -152,  -152,  -152,  -152,  -152,  -152,   109,  -152,  -152,   264,
-!     -152,  -152,  -152,   484,  -152,  -152,   333,   293,  -152,  -152,
-!      338,   300,  -152,  -152,  -152,   484,   345,   303,  -152,  -152,
-!      346,   309,  -152,  -152,  -152,  -152,  -152,  -152,  -152
-  };
-  
---- 1134,1172 ----
-  static const yytype_int16 yypact[] =
-  {
-!      329,    27,  -125,     8,    81,    10,  -125,  -125,    16,    38,
-!        0,   434,    -5,   -16,  -125,   670,   684,  -125,    33,    43,
-!       62,    63,    71,    69,    94,   105,   108,   116,  -125,  -125,
-!     -125,   125,   139,  -125,  -125,   111,  -125,  -125,   626,  -125,
-!      648,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
-!     -125,  -125,  -125,     5,   -21,  -125,   -15,   434,  -125,  -125,
-!     -125,   196,   485,  -125,   157,     2,   180,   207,   222,   227,
-!      638,   626,   648,   224,  -125,  -125,  -125,  -125,  -125,   219,
-!     -125,   185,   223,   228,   140,   230,   161,   232,   233,   234,
-!      236,   241,   248,   249,   162,   250,   163,   251,   254,   256,
-!      257,   258,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
-!     -125,  -125,  -125,  -125,  -125,  -125,   225,   380,  -125,  -125,
-!      229,   231,  -125,  -125,  -125,  -125,   648,  -125,  -125,  -125,
-!     -125,  -125,   536,   536,  -125,  -125,  -125,  -125,  -125,  -125,
-!     -125,   214,  -125,    -7,  -125,    85,  -125,  -125,  -125,  -125,
-!       89,  -125,  -125,  -125,   235,   648,  -125,   648,   648,  -125,
-!     -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
-!     -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
-!     -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
-!     -125,  -125,  -125,  -125,  -125,   485,   485,   138,   138,   587,
-!      587,    17,  -125,  -125,  -125,  -125,  -125,  -125,    88,  -125,
-!      122,  -125,   274,   238,   100,   101,  -125,   122,  -125,   276,
-!      278,   260,  -125,   648,   648,   260,  -125,  -125,   -15,   -15,
-!     -125,  -125,  -125,   287,   485,   485,   485,   485,   485,   290,
-!      164,  -125,    26,  -125,  -125,   285,  -125,   131,  -125,   242,
-!     -125,  -125,  -125,  -125,  -125,  -125,   288,   131,  -125,   243,
-!     -125,  -125,  -125,   260,  -125,   297,   302,  -125,  -125,  -125,
-!      152,   152,   152,  -125,  -125,  -125,  -125,   170,    61,  -125,
-!     -125,   281,   -36,   293,   252,  -125,  -125,  -125,   102,  -125,
-!      298,   255,   300,   262,  -125,  -125,   103,  -125,  -125,  -125,
-!     -125,  -125,  -125,  -125,  -125,   -33,   296,  -125,  -125,  -125,
-!      110,  -125,  -125,  -125,  -125,  -125,  -125,   112,  -125,  -125,
-!      189,  -125,  -125,  -125,   485,  -125,  -125,   310,   267,  -125,
-!     -125,   314,   275,  -125,  -125,  -125,   485,   318,   277,  -125,
-!     -125,   320,   279,  -125,  -125,  -125,  -125,  -125,  -125,  -125
-  };
-  
-***************
-*** 1176,1214 ****
-  static const yytype_uint8 yydefact[] =
-  {
-!        0,     0,   153,     0,     0,     0,   153,   153,     0,     0,
-!        0,     0,   171,    54,    55,     0,     0,   118,     0,     0,
-!        0,     0,     0,     0,     0,     0,     0,     0,   153,     4,
-!        7,     0,     0,   153,   153,     0,    56,    59,    61,   170,
-!       62,    66,    76,    70,    67,    64,    72,     3,    65,    71,
-!       73,    74,    75,     0,   155,   162,   163,     0,     5,     6,
-!        0,     0,   153,   153,     0,   153,     0,     0,     0,    54,
-!      113,   109,     0,   151,   150,   152,   167,   164,   172,   173,
-         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-!        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-!        0,    16,    25,    40,    34,    49,    31,    43,    37,    46,
-!       28,    52,    53,    22,    19,     0,     0,    10,    11,     0,
-!        0,     1,    54,    60,    57,    63,   148,   149,     2,   153,
-!      153,   156,   157,   153,   153,   166,   165,   153,   154,   137,
-!      138,   147,     0,   153,     0,   153,   153,   153,   153,     0,
-!      153,   153,   153,   153,   104,   102,   111,   110,   119,   174,
-!      153,    18,    27,    42,    36,    51,    33,    45,    39,    48,
-!       30,    24,    21,    14,    15,    17,    26,    41,    35,    50,
-!       32,    44,    38,    47,    29,    23,    20,    12,    13,   107,
-!      108,   117,   106,    58,     0,     0,   160,   161,     0,     0,
-!        0,   153,   153,   153,   153,   153,   153,     0,   153,     0,
-!      153,     0,     0,     0,     0,   153,     0,   153,     0,     0,
-!        0,   153,   105,   112,     0,   158,   159,   169,   168,   153,
-!      153,   114,     0,     0,     0,   140,   141,   139,     0,   123,
-!      153,     0,   153,   153,     0,     8,     0,   153,     0,    87,
-!       88,   153,   153,   153,   153,     0,     0,   153,     0,    68,
-!       69,   103,     0,   100,     0,     0,   116,   142,   143,   144,
-!      145,   146,    99,   129,   131,   133,   124,     0,    97,   135,
-!        0,     0,     0,     0,    77,     9,   153,     0,    78,     0,
-!        0,     0,     0,    89,   153,     0,    90,   101,   115,   153,
-!      130,   132,   134,    98,     0,     0,   153,    79,    80,     0,
-!      153,   153,    85,    86,    91,    92,     0,   153,   153,   120,
-!      153,   136,   125,   126,   153,   153,     0,     0,   153,   153,
-!        0,     0,   153,   122,   127,   128,     0,     0,    83,    84,
-!        0,     0,    95,    96,   121,    81,    82,    93,    94
-  };
-  
---- 1176,1214 ----
-  static const yytype_uint8 yydefact[] =
-  {
-!        0,     0,   154,     0,     0,     0,   154,   154,     0,     0,
-!        0,     0,   172,    55,    56,     0,     0,   119,     0,     0,
-!        0,     0,     0,     0,     0,     0,     0,     0,   154,     4,
-!        8,     0,     0,   154,   154,     0,    57,    60,    62,   171,
-!       63,    67,    77,    71,    68,    65,    73,     3,    66,    72,
-!       74,    75,    76,     0,   156,   163,   164,     0,     7,     5,
-!        6,     0,     0,   154,   154,     0,   154,     0,     0,     0,
-!       55,   114,   110,     0,   152,   151,   153,   168,   165,   173,
-!      174,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-!        0,     0,    17,    26,    41,    35,    50,    32,    44,    38,
-!       47,    29,    53,    54,    23,    20,     0,     0,    11,    12,
-!        0,     0,     1,    55,    61,    58,    64,   149,   150,     2,
-!      154,   154,   157,   158,   154,   154,   167,   166,   154,   155,
-!      138,   139,   148,     0,   154,     0,   154,   154,   154,   154,
-!        0,   154,   154,   154,   154,   105,   103,   112,   111,   120,
-!      175,   154,    19,    28,    43,    37,    52,    34,    46,    40,
-!       49,    31,    25,    22,    15,    16,    18,    27,    42,    36,
-!       51,    33,    45,    39,    48,    30,    24,    21,    13,    14,
-!      108,   109,   118,   107,    59,     0,     0,   161,   162,     0,
-!        0,     0,   154,   154,   154,   154,   154,   154,     0,   154,
-!        0,   154,     0,     0,     0,     0,   154,     0,   154,     0,
-!        0,     0,   154,   106,   113,     0,   159,   160,   170,   169,
-!      154,   154,   115,     0,     0,     0,   141,   142,   140,     0,
-!      124,   154,     0,   154,   154,     0,     9,     0,   154,     0,
-!       88,    89,   154,   154,   154,   154,     0,     0,   154,     0,
-!       69,    70,   104,     0,   101,     0,     0,   117,   143,   144,
-!      145,   146,   147,   100,   130,   132,   134,   125,     0,    98,
-!      136,     0,     0,     0,     0,    78,    10,   154,     0,    79,
-!        0,     0,     0,     0,    90,   154,     0,    91,   102,   116,
-!      154,   131,   133,   135,    99,     0,     0,   154,    80,    81,
-!        0,   154,   154,    86,    87,    92,    93,     0,   154,   154,
-!      121,   154,   137,   126,   127,   154,   154,     0,     0,   154,
-!      154,     0,     0,   154,   123,   128,   129,     0,     0,    84,
-!       85,     0,     0,    96,    97,   122,    82,    83,    94,    95
-  };
-  
-***************
-*** 1216,1223 ****
-  static const yytype_int16 yypgoto[] =
-  {
-!     -152,  -152,   112,   -29,   -14,   -64,   360,  -152,    -8,  -152,
-!     -152,  -152,  -152,  -152,  -151,  -152,  -152,  -152,  -152,  -152,
-!     -152,  -152,    13,  -152,   136,  -152,    98,    -2,  -152,    30,
-!     -152,   -54,   -26,  -152,  -123,     6,    78,  -152
-  };
-  
---- 1216,1223 ----
-  static const yytype_int16 yypgoto[] =
-  {
-!     -125,  -125,   126,   -25,   -28,   -65,   335,  -125,    -8,  -125,
-!     -125,  -125,  -125,  -125,   -96,  -125,  -125,  -125,  -125,  -125,
-!     -125,  -125,    28,  -125,   109,  -125,    68,    -2,  -125,   -11,
-!     -125,   -54,   -26,  -125,  -124,     6,    34,  -125
-  };
-  
-***************
-*** 1225,1232 ****
-  static const yytype_int16 yydefgoto[] =
-  {
-!        0,    35,   246,    36,    37,   125,    38,    39,    40,    41,
-!       42,    43,    44,    45,   155,    46,    47,    48,    49,    50,
-!       51,    52,   232,   238,   239,   240,   281,   120,   139,   140,
-!      128,    76,    61,    53,    54,   141,    56,    57
-  };
-  
---- 1225,1232 ----
-  static const yytype_int16 yydefgoto[] =
-  {
-!        0,    35,   247,    36,    37,   126,    38,    39,    40,    41,
-!       42,    43,    44,    45,   156,    46,    47,    48,    49,    50,
-!       51,    52,   233,   239,   240,   241,   282,   121,   140,   141,
-!      129,    77,    62,    53,    54,   142,    56,    57
-  };
-  
-***************
-*** 1236,1390 ****
-  static const yytype_int16 yytable[] =
-  {
-!       60,    71,   116,   135,    66,    67,    55,   157,   196,   197,
-!      147,   124,   305,     2,   242,    62,   278,    77,     3,   306,
-!        4,     5,     6,     7,   123,    63,   115,    72,    10,    65,
-!       64,   119,    80,   279,   303,   206,   142,   144,     2,   149,
-!       17,    68,   124,     3,   101,     4,     5,     6,     7,   133,
-!      208,   279,   138,    10,   102,   134,   123,   209,   243,   138,
-!      154,   156,   152,   136,   106,    17,   138,   280,    33,   261,
-!      153,   225,   226,   263,     2,   145,   110,   138,   111,     3,
-!      251,     4,     5,     6,     7,   280,   112,   138,   138,    10,
-!      222,   113,   223,    33,   210,    34,   193,   121,   215,   305,
-!      114,    17,   253,   194,   195,   216,   320,   198,   199,   310,
-!      143,   297,    73,    74,    75,   117,   317,   207,   138,   146,
-!      324,   213,   214,   328,   252,   124,   220,   124,   193,    33,
-!      118,    34,    58,    59,   224,   200,   138,    55,    55,   137,
-!      138,   148,   217,   211,   212,   245,   254,   138,   218,   219,
-!      229,   230,   231,   311,   138,   247,   103,   285,   138,   104,
-!      318,   138,   257,   158,   325,   107,   163,   329,   108,   164,
-!       73,    74,    75,    78,    79,   233,   234,   235,   236,   237,
-!      241,   150,    73,    74,    75,   151,   167,   105,   177,   168,
-!      159,   178,   286,   193,   193,   262,   109,   165,   126,   127,
-!       55,    55,   294,   160,   181,   161,   244,   182,   248,   273,
-!      274,   275,   154,   255,   277,   258,   154,   169,   162,   179,
-!      166,   287,    81,    82,    83,    84,    85,   264,   265,   189,
-!       86,   295,   191,    87,    88,   183,   129,   130,   201,   202,
-!      282,   283,    89,    90,   129,   130,   300,   301,   302,   289,
-!      290,   291,   292,   170,   154,   203,   204,   205,   201,   202,
-!      309,   131,   132,   267,   268,   269,   270,   271,   316,   332,
-!      230,   171,   122,    14,    15,    16,   227,   228,   172,   173,
-!      323,    18,    19,    20,    21,    22,   174,   175,   176,    23,
-!       24,    25,    26,    27,   335,   180,   184,   319,   185,   186,
-!      187,    31,    32,   188,   322,   192,   249,   250,   326,   327,
-!      221,   259,   260,   266,   272,   330,   331,   284,   334,   293,
-!      298,   299,   336,   337,   288,   296,   340,   341,   256,     1,
-!      344,     2,   333,   279,   307,   308,     3,   312,     4,     5,
-!        6,     7,   313,   315,     8,     9,    10,   314,   338,   321,
-!       11,    12,   339,   342,    13,    14,    15,    16,    17,   343,
-!      345,   347,   346,    18,    19,    20,    21,    22,   348,    70,
-!        0,    23,    24,    25,    26,    27,   276,    28,   304,     0,
-!       29,    30,     2,    31,    32,     0,    33,     3,    34,     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,   138,     0,     0,    31,    32,     2,    33,     0,    34,
-!      190,     3,     0,     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,    73,    74,    75,     2,    31,    32,
-!        0,    33,     3,    34,     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,   138,     0,     2,    31,
-        32,     0,    33,     3,    34,     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,     0,     2,
-        31,    32,     0,    33,     3,    34,     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,     0,   138,     0,
-         2,    31,    32,     0,    33,     3,    34,     4,     5,     6,
-!        7,     0,     0,     0,     0,    10,     0,     0,     0,     0,
-!        0,     0,     0,    69,    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,     0,    31,    32,     0,    33,     0,    34,    15,    16,
-!        0,     0,     0,     0,     0,    18,    19,    20,    21,    22,
-!        0,     0,     0,    23,    24,    25,    26,    27,     0,    91,
-!       92,    93,    94,    95,     0,    31,    32,    96,     0,     0,
-!       97,    98,     0,     0,     0,     0,     0,     0,     0,    99,
-!      100
-  };
-  
-  static const yytype_int16 yycheck[] =
-  {
-!        2,     9,    28,    57,     6,     7,     0,    71,   131,   132,
-!       64,    40,    54,     3,    14,    26,     9,    11,     8,    61,
-!       10,    11,    12,    13,    38,    26,    28,    32,    18,    26,
-!       31,    33,    60,    26,     9,    21,    62,    63,     3,    65,
-!       30,    26,    71,     8,    26,    10,    11,    12,    13,    48,
-!       14,    26,    52,    18,    26,    54,    70,    21,    58,    52,
-!       68,    69,    52,    57,    26,    30,    52,    60,    58,   220,
-!       60,   194,   195,   224,     3,    14,    26,    52,    26,     8,
-!       14,    10,    11,    12,    13,    60,    26,    52,    52,    18,
-!      154,    26,   156,    58,    58,    60,   125,     0,    14,    54,
-!       26,    30,    14,   129,   130,    21,    61,   133,   134,    14,
-!       51,   262,    51,    52,    53,    26,    14,   143,    52,    58,
-!       14,   147,   148,    14,    58,   154,   152,   156,   157,    58,
-!       26,    60,    52,    53,   160,   137,    52,   131,   132,     4,
-!       52,    51,    58,   145,   146,    26,    58,    52,   150,   151,
-!        5,     6,     7,    58,    52,   209,    26,    26,    52,    29,
-!       58,    52,   216,    19,    58,    26,    26,    58,    29,    29,
-!       51,    52,    53,    24,    25,   201,   202,   203,   204,   205,
-!      206,    14,    51,    52,    53,    14,    26,    57,    26,    29,
-!       25,    29,   246,   222,   223,   221,    57,    57,    52,    53,
-!      194,   195,   256,    61,    26,    26,   208,    29,   210,    40,
-!       41,    42,   220,   215,   240,   217,   224,    57,    26,    57,
-!       26,   247,    35,    36,    37,    38,    39,   229,   230,    61,
-!       43,   257,    59,    46,    47,    57,    33,    34,    33,    34,
-!      242,   243,    55,    56,    33,    34,    40,    41,    42,   251,
-!      252,   253,   254,    26,   262,    50,    51,    52,    33,    34,
-!      286,    50,    51,   233,   234,   235,   236,   237,   294,     5,
-!        6,    26,    26,    27,    28,    29,   198,   199,    26,    26,
-!      306,    35,    36,    37,    38,    39,    26,    26,    26,    43,
-!       44,    45,    46,    47,   320,    26,    26,   299,    26,    26,
-!       26,    55,    56,    26,   306,    61,    15,    59,   310,   311,
-!       61,    15,    15,     7,     9,   317,   318,    15,   320,    15,
-!        7,     4,   324,   325,    59,    59,   328,   329,   216,     1,
-!      332,     3,   319,    26,    15,    59,     8,    15,    10,    11,
-!       12,    13,    59,    59,    16,    17,    18,    15,    15,    26,
-!       22,    23,    59,    15,    26,    27,    28,    29,    30,    59,
-!       15,    15,    59,    35,    36,    37,    38,    39,    59,     9,
-!       -1,    43,    44,    45,    46,    47,   240,    49,   280,    -1,
-!       52,    53,     3,    55,    56,    -1,    58,     8,    60,    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,    52,    -1,    -1,    55,    56,     3,    58,    -1,    60,
-!       61,     8,    -1,    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,    52,    53,     3,    55,    56,
-!       -1,    58,     8,    60,    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,    52,    -1,     3,    55,
-        56,    -1,    58,     8,    60,    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,    -1,     3,
-        55,    56,    -1,    58,     8,    60,    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,    -1,    52,    -1,
-         3,    55,    56,    -1,    58,     8,    60,    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,    -1,    55,    56,    -1,    58,    -1,    60,    28,    29,
-!       -1,    -1,    -1,    -1,    -1,    35,    36,    37,    38,    39,
-!       -1,    -1,    -1,    43,    44,    45,    46,    47,    -1,    35,
-        36,    37,    38,    39,    -1,    55,    56,    43,    -1,    -1,
-        46,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,
---- 1236,1390 ----
-  static const yytype_int16 yytable[] =
-  {
-!       61,    72,   117,   136,    67,    68,    55,   158,   197,   198,
-!      124,   148,   130,   131,   207,   125,   146,    78,   306,    79,
-!       80,   306,   230,   231,   232,   307,   116,    58,   321,   132,
-!      133,   120,    73,   134,    63,   279,    66,   143,   145,   135,
-!      150,     2,    69,   124,    81,   139,     3,   125,     4,     5,
-!        6,     7,   280,    74,    75,    76,    10,   127,   128,   102,
-!      147,   155,   157,   137,    70,    14,    15,    16,    17,   103,
-!      304,   226,   227,    18,    19,    20,    21,    22,   139,    59,
-!       60,    23,    24,    25,    26,    27,   281,   280,   104,   107,
-!      223,   105,   224,    31,    32,   111,    33,   108,    34,   209,
-!      109,   194,   243,   216,   195,   196,   210,    64,   199,   200,
-!      217,   122,    65,   139,   252,   254,   311,   318,   208,   106,
-!      112,   281,   214,   215,   325,   262,   329,   221,   110,   264,
-!      125,   113,   125,   194,   114,   225,   201,   139,    55,    55,
-!      139,   139,   115,   211,   212,   213,   244,   218,   246,   219,
-!      220,   118,   139,   139,   139,   139,   248,   286,   253,   255,
-!      312,   319,   139,   258,   139,   119,   164,   298,   326,   165,
-!      330,   130,   131,    74,    75,    76,   234,   235,   236,   237,
-!      238,   242,    74,    75,    76,   202,   203,   168,   178,   182,
-!      169,   179,   183,   287,   333,   231,   263,   166,   194,   194,
-!      138,    55,    55,   295,   274,   275,   276,   245,   144,   249,
-!      301,   302,   303,   155,   256,   278,   259,   155,   170,   180,
-!      184,   151,   288,   268,   269,   270,   271,   272,   265,   266,
-!        2,   149,   296,   228,   229,     3,   152,     4,     5,     6,
-!        7,   283,   284,   159,   160,    10,   161,   202,   203,   162,
-!      290,   291,   292,   293,   163,   155,   167,    17,   171,   172,
-!      173,   310,   174,     2,   204,   205,   206,   175,     3,   317,
-!        4,     5,     6,     7,   176,   177,   181,   185,    10,   153,
-!      186,   324,   187,   188,   189,    33,   190,   154,   192,   250,
-!       17,   260,   193,   261,   267,   336,   222,   251,   320,   273,
-!      285,   289,   297,   294,   299,   323,   300,   280,   308,   327,
-!      328,   309,   139,   313,   314,   315,   331,   332,    33,   335,
-!       34,   316,   322,   337,   338,   339,   340,   341,   342,   343,
-!        1,   345,     2,   346,   344,   348,   347,     3,   349,     4,
-!        5,     6,     7,   257,    71,     8,     9,    10,   334,   305,
-!      277,    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,    28,     0,
-!        0,    29,    30,     2,    31,    32,     0,    33,     3,    34,
-!        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,   139,     0,     0,    31,    32,     2,    33,     0,
-!       34,   191,     3,     0,     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,    74,    75,    76,     2,    31,
-        32,     0,    33,     3,    34,     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,   139,     0,     2,
-        31,    32,     0,    33,     3,    34,     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,     0,
-         2,    31,    32,     0,    33,     3,    34,     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,     0,   139,
-!        0,     2,    31,    32,     0,    33,     3,    34,     4,     5,
-!        6,     7,   123,    14,    15,    16,    10,     0,     0,     0,
-!        0,    18,    19,    20,    21,    22,     0,     0,    17,    23,
-!       24,    25,    26,    27,     0,     0,    15,    16,     0,     0,
-!        0,    31,    32,    18,    19,    20,    21,    22,     0,     0,
-!        0,    23,    24,    25,    26,    27,    33,     0,    34,     0,
-!        0,     0,     0,    31,    32,    82,    83,    84,    85,    86,
-!        0,     0,     0,    87,     0,     0,    88,    89,     0,    92,
-!       93,    94,    95,    96,     0,    90,    91,    97,     0,     0,
-!       98,    99,     0,     0,     0,     0,     0,     0,     0,   100,
-!      101
-  };
-  
-  static const yytype_int16 yycheck[] =
-  {
-!        2,     9,    28,    57,     6,     7,     0,    72,   132,   133,
-!       38,    65,    33,    34,    21,    40,    14,    11,    54,    24,
-!       25,    54,     5,     6,     7,    61,    28,     0,    61,    50,
-!       51,    33,    32,    48,    26,     9,    26,    63,    64,    54,
-!       66,     3,    26,    71,    60,    52,     8,    72,    10,    11,
-!       12,    13,    26,    51,    52,    53,    18,    52,    53,    26,
-!       58,    69,    70,    57,    26,    27,    28,    29,    30,    26,
-!        9,   195,   196,    35,    36,    37,    38,    39,    52,    52,
-!       53,    43,    44,    45,    46,    47,    60,    26,    26,    26,
-!      155,    29,   157,    55,    56,    26,    58,    26,    60,    14,
-!       29,   126,    14,    14,   130,   131,    21,    26,   134,   135,
-!       21,     0,    31,    52,    14,    14,    14,    14,   144,    57,
-!       26,    60,   148,   149,    14,   221,    14,   153,    57,   225,
-!      155,    26,   157,   158,    26,   161,   138,    52,   132,   133,
-!       52,    52,    26,    58,   146,   147,    58,    58,    26,   151,
-!      152,    26,    52,    52,    52,    52,   210,    26,    58,    58,
-!       58,    58,    52,   217,    52,    26,    26,   263,    58,    29,
-!       58,    33,    34,    51,    52,    53,   202,   203,   204,   205,
-!      206,   207,    51,    52,    53,    33,    34,    26,    26,    26,
-!       29,    29,    29,   247,     5,     6,   222,    57,   223,   224,
-!        4,   195,   196,   257,    40,    41,    42,   209,    51,   211,
-!       40,    41,    42,   221,   216,   241,   218,   225,    57,    57,
-!       57,    14,   248,   234,   235,   236,   237,   238,   230,   231,
-!        3,    51,   258,   199,   200,     8,    14,    10,    11,    12,
-!       13,   243,   244,    19,    25,    18,    61,    33,    34,    26,
-!      252,   253,   254,   255,    26,   263,    26,    30,    26,    26,
-!       26,   287,    26,     3,    50,    51,    52,    26,     8,   295,
-!       10,    11,    12,    13,    26,    26,    26,    26,    18,    52,
-!       26,   307,    26,    26,    26,    58,    61,    60,    59,    15,
-!       30,    15,    61,    15,     7,   321,    61,    59,   300,     9,
-!       15,    59,    59,    15,     7,   307,     4,    26,    15,   311,
-!      312,    59,    52,    15,    59,    15,   318,   319,    58,   321,
-!       60,    59,    26,   325,   326,    15,    59,   329,   330,    15,
-!        1,   333,     3,    15,    59,    15,    59,     8,    59,    10,
-!       11,    12,    13,   217,     9,    16,    17,    18,   320,   281,
-!      241,    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,    49,    -1,
-!       -1,    52,    53,     3,    55,    56,    -1,    58,     8,    60,
-!       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,    52,    -1,    -1,    55,    56,     3,    58,    -1,
-!       60,    61,     8,    -1,    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,    52,    53,     3,    55,
-        56,    -1,    58,     8,    60,    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,    52,    -1,     3,
-        55,    56,    -1,    58,     8,    60,    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,    -1,
-         3,    55,    56,    -1,    58,     8,    60,    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,    -1,    52,
-!       -1,     3,    55,    56,    -1,    58,     8,    60,    10,    11,
-!       12,    13,    26,    27,    28,    29,    18,    -1,    -1,    -1,
-!       -1,    35,    36,    37,    38,    39,    -1,    -1,    30,    43,
-!       44,    45,    46,    47,    -1,    -1,    28,    29,    -1,    -1,
-!       -1,    55,    56,    35,    36,    37,    38,    39,    -1,    -1,
-!       -1,    43,    44,    45,    46,    47,    58,    -1,    60,    -1,
-!       -1,    -1,    -1,    55,    56,    35,    36,    37,    38,    39,
-!       -1,    -1,    -1,    43,    -1,    -1,    46,    47,    -1,    35,
-        36,    37,    38,    39,    -1,    55,    56,    43,    -1,    -1,
-        46,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,
-***************
-*** 1401,1434 ****
-        53,    55,    56,    58,    60,    63,    65,    66,    68,    69,
-        70,    71,    72,    73,    74,    75,    77,    78,    79,    80,
-!       81,    82,    83,    95,    96,    97,    98,    99,    52,    53,
-!       89,    94,    26,    26,    31,    26,    89,    89,    26,    26,
-!       68,    70,    32,    51,    52,    53,    93,    97,    24,    25,
-!       60,    35,    36,    37,    38,    39,    43,    46,    47,    55,
-!       56,    35,    36,    37,    38,    39,    43,    46,    47,    55,
-!       56,    26,    26,    26,    29,    57,    26,    26,    29,    57,
-!       26,    26,    26,    26,    26,    89,    94,    26,    26,    89,
-!       89,     0,    26,    66,    65,    67,    52,    53,    92,    33,
-!       34,    50,    51,    48,    54,    93,    97,     4,    52,    90,
-!       91,    97,    94,    51,    94,    14,    58,    93,    51,    94,
-!       14,    14,    52,    60,    70,    76,    70,    67,    19,    25,
-!       61,    26,    26,    26,    29,    57,    26,    26,    29,    57,
-!       26,    26,    26,    26,    26,    26,    26,    26,    29,    57,
-!       26,    26,    29,    57,    26,    26,    26,    26,    26,    61,
-!       61,    59,    61,    65,    94,    94,    96,    96,    94,    94,
-!       89,    33,    34,    50,    51,    52,    21,    94,    14,    21,
-!       58,    89,    89,    94,    94,    14,    21,    58,    89,    89,
-!       94,    61,    67,    67,    94,    96,    96,    98,    98,     5,
-!        6,     7,    84,    94,    94,    94,    94,    94,    85,    86,
-!       87,    94,    14,    58,    89,    26,    64,    93,    89,    15,
-!       59,    14,    58,    14,    58,    89,    64,    93,    89,    15,
-!       15,    76,    94,    76,    89,    89,     7,    91,    91,    91,
-!       91,    91,     9,    40,    41,    42,    86,    94,     9,    26,
-!       60,    88,    89,    89,    15,    26,    93,    94,    59,    89,
-!       89,    89,    89,    15,    93,    94,    59,    76,     7,     4,
-!       40,    41,    42,     9,    88,    54,    61,    15,    59,    94,
-!       14,    58,    15,    59,    15,    59,    94,    14,    58,    89,
-!       61,    26,    89,    94,    14,    58,    89,    89,    14,    58,
-!       89,    89,     5,    84,    89,    94,    89,    89,    15,    59,
-!       89,    89,    15,    59,    89,    15,    59,    15,    59
-  };
-  
---- 1401,1434 ----
-        53,    55,    56,    58,    60,    63,    65,    66,    68,    69,
-        70,    71,    72,    73,    74,    75,    77,    78,    79,    80,
-!       81,    82,    83,    95,    96,    97,    98,    99,     0,    52,
-!       53,    89,    94,    26,    26,    31,    26,    89,    89,    26,
-!       26,    68,    70,    32,    51,    52,    53,    93,    97,    24,
-!       25,    60,    35,    36,    37,    38,    39,    43,    46,    47,
-!       55,    56,    35,    36,    37,    38,    39,    43,    46,    47,
-!       55,    56,    26,    26,    26,    29,    57,    26,    26,    29,
-!       57,    26,    26,    26,    26,    26,    89,    94,    26,    26,
-!       89,    89,     0,    26,    66,    65,    67,    52,    53,    92,
-!       33,    34,    50,    51,    48,    54,    93,    97,     4,    52,
-!       90,    91,    97,    94,    51,    94,    14,    58,    93,    51,
-!       94,    14,    14,    52,    60,    70,    76,    70,    67,    19,
-!       25,    61,    26,    26,    26,    29,    57,    26,    26,    29,
-!       57,    26,    26,    26,    26,    26,    26,    26,    26,    29,
-!       57,    26,    26,    29,    57,    26,    26,    26,    26,    26,
-!       61,    61,    59,    61,    65,    94,    94,    96,    96,    94,
-!       94,    89,    33,    34,    50,    51,    52,    21,    94,    14,
-!       21,    58,    89,    89,    94,    94,    14,    21,    58,    89,
-!       89,    94,    61,    67,    67,    94,    96,    96,    98,    98,
-!        5,     6,     7,    84,    94,    94,    94,    94,    94,    85,
-!       86,    87,    94,    14,    58,    89,    26,    64,    93,    89,
-!       15,    59,    14,    58,    14,    58,    89,    64,    93,    89,
-!       15,    15,    76,    94,    76,    89,    89,     7,    91,    91,
-!       91,    91,    91,     9,    40,    41,    42,    86,    94,     9,
-!       26,    60,    88,    89,    89,    15,    26,    93,    94,    59,
-!       89,    89,    89,    89,    15,    93,    94,    59,    76,     7,
-!        4,    40,    41,    42,     9,    88,    54,    61,    15,    59,
-!       94,    14,    58,    15,    59,    15,    59,    94,    14,    58,
-!       89,    61,    26,    89,    94,    14,    58,    89,    89,    14,
-!       58,    89,    89,     5,    84,    89,    94,    89,    89,    15,
-!       59,    89,    89,    15,    59,    89,    15,    59,    15,    59
-  };
-  
-***************
-*** 1436,1457 ****
-  static const yytype_int8 yyr1[] =
-  {
-!        0,    62,    63,    63,    63,    63,    63,    63,    64,    64,
-!       65,    65,    65,    65,    65,    65,    65,    65,    65,    65,
-        65,    65,    65,    65,    65,    65,    65,    65,    65,    65,
-        65,    65,    65,    65,    65,    65,    65,    65,    65,    65,
-        65,    65,    65,    65,    65,    65,    65,    65,    65,    65,
-!       65,    65,    65,    65,    66,    66,    66,    67,    67,    68,
-!       68,    69,    69,    69,    69,    69,    70,    70,    70,    70,
-!       70,    70,    70,    70,    70,    70,    70,    71,    71,    71,
-!       71,    71,    71,    71,    71,    72,    72,    72,    72,    73,
-!       73,    73,    73,    73,    73,    73,    73,    74,    74,    74,
-!       75,    75,    75,    75,    76,    76,    77,    78,    78,    79,
-!       79,    79,    79,    79,    80,    80,    80,    81,    82,    83,
-!       84,    84,    84,    85,    85,    86,    86,    86,    86,    87,
-!       87,    87,    87,    87,    87,    88,    88,    89,    89,    90,
-!       90,    90,    91,    91,    91,    91,    91,    91,    92,    92,
-!       93,    93,    93,    94,    94,    95,    95,    95,    96,    96,
-!       96,    96,    96,    97,    97,    97,    97,    97,    98,    98,
-!       98,    99,    99,    99,    99
-  };
-  
---- 1436,1457 ----
-  static const yytype_int8 yyr1[] =
-  {
-!        0,    62,    63,    63,    63,    63,    63,    63,    63,    64,
-!       64,    65,    65,    65,    65,    65,    65,    65,    65,    65,
-        65,    65,    65,    65,    65,    65,    65,    65,    65,    65,
-        65,    65,    65,    65,    65,    65,    65,    65,    65,    65,
-        65,    65,    65,    65,    65,    65,    65,    65,    65,    65,
-!       65,    65,    65,    65,    65,    66,    66,    66,    67,    67,
-!       68,    68,    69,    69,    69,    69,    69,    70,    70,    70,
-!       70,    70,    70,    70,    70,    70,    70,    70,    71,    71,
-!       71,    71,    71,    71,    71,    71,    72,    72,    72,    72,
-!       73,    73,    73,    73,    73,    73,    73,    73,    74,    74,
-!       74,    75,    75,    75,    75,    76,    76,    77,    78,    78,
-!       79,    79,    79,    79,    79,    80,    80,    80,    81,    82,
-!       83,    84,    84,    84,    85,    85,    86,    86,    86,    86,
-!       87,    87,    87,    87,    87,    87,    88,    88,    89,    89,
-!       90,    90,    90,    91,    91,    91,    91,    91,    91,    92,
-!       92,    93,    93,    93,    94,    94,    95,    95,    95,    96,
-!       96,    96,    96,    96,    97,    97,    97,    97,    97,    98,
-!       98,    98,    99,    99,    99,    99
-  };
-  
-***************
-*** 1459,1480 ****
-  static const yytype_int8 yyr2[] =
-  {
-!        0,     2,     2,     1,     1,     2,     2,     1,     1,     2,
-!        2,     2,     3,     3,     3,     3,     2,     3,     3,     2,
-         3,     3,     2,     3,     3,     2,     3,     3,     2,     3,
-         3,     2,     3,     3,     2,     3,     3,     2,     3,     3,
-!        2,     3,     3,     2,     3,     3,     2,     3,     3,     2,
-!        3,     3,     2,     2,     1,     1,     1,     1,     2,     1,
-!        2,     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,     9,     9,     6,     7,     6,
-!        5,     6,     3,     5,     1,     2,     3,     3,     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,     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,     2,     3
-  };
-  
---- 1459,1480 ----
-  static const yytype_int8 yyr2[] =
-  {
-!        0,     2,     2,     1,     1,     2,     2,     2,     1,     1,
-!        2,     2,     2,     3,     3,     3,     3,     2,     3,     3,
-!        2,     3,     3,     2,     3,     3,     2,     3,     3,     2,
-         3,     3,     2,     3,     3,     2,     3,     3,     2,     3,
-         3,     2,     3,     3,     2,     3,     3,     2,     3,     3,
-!        2,     3,     3,     2,     2,     1,     1,     1,     1,     2,
-!        1,     2,     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,     9,     9,     6,     7,
-!        6,     5,     6,     3,     5,     1,     2,     3,     3,     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,     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,     2,     3
-  };
-  
-***************
-*** 2019,2025 ****
-      break;
-  
-!   case 7: /* inputunit: yacc_EOF  */
-  #line 456 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  /* Case of EOF seen by itself.  Do ignoreeof or
-  			     not. */
---- 2019,2044 ----
-      break;
-  
-!   case 7: /* inputunit: error $end  */
-  #line 456 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-+ 			  global_command = (COMMAND *)NULL;
-+ 			  if (last_command_exit_value == 0)
-+ 			    last_command_exit_value = EX_BADUSAGE;	/* force error return */
-+ 			  if (interactive && parse_and_execute_level == 0)
-+ 			    {
-+ 			      handle_eof_input_unit ();
-+ 			      YYACCEPT;
-+ 			    }
-+ 			  else
-+ 			    {
-+ 			      YYABORT;
-+ 			    }
-+ 			}
-+ #line 2038 "y.tab.c"
-+     break;
-+ 
-+   case 8: /* inputunit: yacc_EOF  */
-+ #line 471 "/usr/local/src/chet/src/bash/src/parse.y"
-+                         {
-  			  /* Case of EOF seen by itself.  Do ignoreeof or
-  			     not. */
-***************
-*** 2028,2048 ****
-  			  YYACCEPT;
-  			}
-! #line 2031 "y.tab.c"
-      break;
-  
-!   case 8: /* word_list: WORD  */
-! #line 466 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
-! #line 2037 "y.tab.c"
-      break;
-  
-!   case 9: /* word_list: word_list WORD  */
-! #line 468 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-1].word_list)); }
-! #line 2043 "y.tab.c"
-      break;
-  
-!   case 10: /* redirection: '>' WORD  */
-! #line 472 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 1;
---- 2047,2067 ----
-  			  YYACCEPT;
-  			}
-! #line 2050 "y.tab.c"
-      break;
-  
-!   case 9: /* word_list: WORD  */
-! #line 481 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
-! #line 2056 "y.tab.c"
-      break;
-  
-!   case 10: /* word_list: word_list WORD  */
-! #line 483 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-1].word_list)); }
-! #line 2062 "y.tab.c"
-      break;
-  
-!   case 11: /* redirection: '>' WORD  */
-! #line 487 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 1;
-***************
-*** 2050,2058 ****
-  			  (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
-  			}
-! #line 2053 "y.tab.c"
-      break;
-  
-!   case 11: /* redirection: '<' WORD  */
-! #line 478 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 0;
---- 2069,2077 ----
-  			  (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
-  			}
-! #line 2072 "y.tab.c"
-      break;
-  
-!   case 12: /* redirection: '<' WORD  */
-! #line 493 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 0;
-***************
-*** 2060,2068 ****
-  			  (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
-  			}
-! #line 2063 "y.tab.c"
-      break;
-  
-!   case 12: /* redirection: NUMBER '>' WORD  */
-! #line 484 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
---- 2079,2087 ----
-  			  (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
-  			}
-! #line 2082 "y.tab.c"
-      break;
-  
-!   case 13: /* redirection: NUMBER '>' WORD  */
-! #line 499 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
-***************
-*** 2070,2078 ****
-  			  (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
-  			}
-! #line 2073 "y.tab.c"
-      break;
-  
-!   case 13: /* redirection: NUMBER '<' WORD  */
-! #line 490 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
---- 2089,2097 ----
-  			  (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
-  			}
-! #line 2092 "y.tab.c"
-      break;
-  
-!   case 14: /* redirection: NUMBER '<' WORD  */
-! #line 505 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
-***************
-*** 2080,2088 ****
-  			  (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
-  			}
-! #line 2083 "y.tab.c"
-      break;
-  
-!   case 14: /* redirection: REDIR_WORD '>' WORD  */
-! #line 496 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
---- 2099,2107 ----
-  			  (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
-  			}
-! #line 2102 "y.tab.c"
-      break;
-  
-!   case 15: /* redirection: REDIR_WORD '>' WORD  */
-! #line 511 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
-***************
-*** 2090,2098 ****
-  			  (yyval.redirect) = make_redirection (source, r_output_direction, redir, REDIR_VARASSIGN);
-  			}
-! #line 2093 "y.tab.c"
-      break;
-  
-!   case 15: /* redirection: REDIR_WORD '<' WORD  */
-! #line 502 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
---- 2109,2117 ----
-  			  (yyval.redirect) = make_redirection (source, r_output_direction, redir, REDIR_VARASSIGN);
-  			}
-! #line 2112 "y.tab.c"
-      break;
-  
-!   case 16: /* redirection: REDIR_WORD '<' WORD  */
-! #line 517 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
-***************
-*** 2100,2108 ****
-  			  (yyval.redirect) = make_redirection (source, r_input_direction, redir, REDIR_VARASSIGN);
-  			}
-! #line 2103 "y.tab.c"
-      break;
-  
-!   case 16: /* redirection: GREATER_GREATER WORD  */
-! #line 508 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 1;
---- 2119,2127 ----
-  			  (yyval.redirect) = make_redirection (source, r_input_direction, redir, REDIR_VARASSIGN);
-  			}
-! #line 2122 "y.tab.c"
-      break;
-  
-!   case 17: /* redirection: GREATER_GREATER WORD  */
-! #line 523 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 1;
-***************
-*** 2110,2118 ****
-  			  (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
-  			}
-! #line 2113 "y.tab.c"
-      break;
-  
-!   case 17: /* redirection: NUMBER GREATER_GREATER WORD  */
-! #line 514 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
---- 2129,2137 ----
-  			  (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
-  			}
-! #line 2132 "y.tab.c"
-      break;
-  
-!   case 18: /* redirection: NUMBER GREATER_GREATER WORD  */
-! #line 529 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
-***************
-*** 2120,2128 ****
-  			  (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
-  			}
-! #line 2123 "y.tab.c"
-      break;
-  
-!   case 18: /* redirection: REDIR_WORD GREATER_GREATER WORD  */
-! #line 520 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
---- 2139,2147 ----
-  			  (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
-  			}
-! #line 2142 "y.tab.c"
-      break;
-  
-!   case 19: /* redirection: REDIR_WORD GREATER_GREATER WORD  */
-! #line 535 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
-***************
-*** 2130,2138 ****
-  			  (yyval.redirect) = make_redirection (source, r_appending_to, redir, REDIR_VARASSIGN);
-  			}
-! #line 2133 "y.tab.c"
-      break;
-  
-!   case 19: /* redirection: GREATER_BAR WORD  */
-! #line 526 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 1;
---- 2149,2157 ----
-  			  (yyval.redirect) = make_redirection (source, r_appending_to, redir, REDIR_VARASSIGN);
-  			}
-! #line 2152 "y.tab.c"
-      break;
-  
-!   case 20: /* redirection: GREATER_BAR WORD  */
-! #line 541 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 1;
-***************
-*** 2140,2148 ****
-  			  (yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
-  			}
-! #line 2143 "y.tab.c"
-      break;
-  
-!   case 20: /* redirection: NUMBER GREATER_BAR WORD  */
-! #line 532 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
---- 2159,2167 ----
-  			  (yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
-  			}
-! #line 2162 "y.tab.c"
-      break;
-  
-!   case 21: /* redirection: NUMBER GREATER_BAR WORD  */
-! #line 547 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
-***************
-*** 2150,2158 ****
-  			  (yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
-  			}
-! #line 2153 "y.tab.c"
-      break;
-  
-!   case 21: /* redirection: REDIR_WORD GREATER_BAR WORD  */
-! #line 538 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
---- 2169,2177 ----
-  			  (yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
-  			}
-! #line 2172 "y.tab.c"
-      break;
-  
-!   case 22: /* redirection: REDIR_WORD GREATER_BAR WORD  */
-! #line 553 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
-***************
-*** 2160,2168 ****
-  			  (yyval.redirect) = make_redirection (source, r_output_force, redir, REDIR_VARASSIGN);
-  			}
-! #line 2163 "y.tab.c"
-      break;
-  
-!   case 22: /* redirection: LESS_GREATER WORD  */
-! #line 544 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 0;
---- 2179,2187 ----
-  			  (yyval.redirect) = make_redirection (source, r_output_force, redir, REDIR_VARASSIGN);
-  			}
-! #line 2182 "y.tab.c"
-      break;
-  
-!   case 23: /* redirection: LESS_GREATER WORD  */
-! #line 559 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 0;
-***************
-*** 2170,2178 ****
-  			  (yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
-  			}
-! #line 2173 "y.tab.c"
-      break;
-  
-!   case 23: /* redirection: NUMBER LESS_GREATER WORD  */
-! #line 550 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
---- 2189,2197 ----
-  			  (yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
-  			}
-! #line 2192 "y.tab.c"
-      break;
-  
-!   case 24: /* redirection: NUMBER LESS_GREATER WORD  */
-! #line 565 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
-***************
-*** 2180,2188 ****
-  			  (yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
-  			}
-! #line 2183 "y.tab.c"
-      break;
-  
-!   case 24: /* redirection: REDIR_WORD LESS_GREATER WORD  */
-! #line 556 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
---- 2199,2207 ----
-  			  (yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
-  			}
-! #line 2202 "y.tab.c"
-      break;
-  
-!   case 25: /* redirection: REDIR_WORD LESS_GREATER WORD  */
-! #line 571 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
-***************
-*** 2190,2198 ****
-  			  (yyval.redirect) = make_redirection (source, r_input_output, redir, REDIR_VARASSIGN);
-  			}
-! #line 2193 "y.tab.c"
-      break;
-  
-!   case 25: /* redirection: LESS_LESS WORD  */
-! #line 562 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 0;
---- 2209,2217 ----
-  			  (yyval.redirect) = make_redirection (source, r_input_output, redir, REDIR_VARASSIGN);
-  			}
-! #line 2212 "y.tab.c"
-      break;
-  
-!   case 26: /* redirection: LESS_LESS WORD  */
-! #line 577 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 0;
-***************
-*** 2201,2209 ****
-  			  push_heredoc ((yyval.redirect));
-  			}
-! #line 2204 "y.tab.c"
-      break;
-  
-!   case 26: /* redirection: NUMBER LESS_LESS WORD  */
-! #line 569 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
---- 2220,2228 ----
-  			  push_heredoc ((yyval.redirect));
-  			}
-! #line 2223 "y.tab.c"
-      break;
-  
-!   case 27: /* redirection: NUMBER LESS_LESS WORD  */
-! #line 584 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
-***************
-*** 2212,2220 ****
-  			  push_heredoc ((yyval.redirect));
-  			}
-! #line 2215 "y.tab.c"
-      break;
-  
-!   case 27: /* redirection: REDIR_WORD LESS_LESS WORD  */
-! #line 576 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
---- 2231,2239 ----
-  			  push_heredoc ((yyval.redirect));
-  			}
-! #line 2234 "y.tab.c"
-      break;
-  
-!   case 28: /* redirection: REDIR_WORD LESS_LESS WORD  */
-! #line 591 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
-***************
-*** 2223,2231 ****
-  			  push_heredoc ((yyval.redirect));
-  			}
-! #line 2226 "y.tab.c"
-      break;
-  
-!   case 28: /* redirection: LESS_LESS_MINUS WORD  */
-! #line 583 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 0;
---- 2242,2250 ----
-  			  push_heredoc ((yyval.redirect));
-  			}
-! #line 2245 "y.tab.c"
-      break;
-  
-!   case 29: /* redirection: LESS_LESS_MINUS WORD  */
-! #line 598 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 0;
-***************
-*** 2234,2242 ****
-  			  push_heredoc ((yyval.redirect));
-  			}
-! #line 2237 "y.tab.c"
-      break;
-  
-!   case 29: /* redirection: NUMBER LESS_LESS_MINUS WORD  */
-! #line 590 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
---- 2253,2261 ----
-  			  push_heredoc ((yyval.redirect));
-  			}
-! #line 2256 "y.tab.c"
-      break;
-  
-!   case 30: /* redirection: NUMBER LESS_LESS_MINUS WORD  */
-! #line 605 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
-***************
-*** 2245,2253 ****
-  			  push_heredoc ((yyval.redirect));
-  			}
-! #line 2248 "y.tab.c"
-      break;
-  
-!   case 30: /* redirection: REDIR_WORD LESS_LESS_MINUS WORD  */
-! #line 597 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
---- 2264,2272 ----
-  			  push_heredoc ((yyval.redirect));
-  			}
-! #line 2267 "y.tab.c"
-      break;
-  
-!   case 31: /* redirection: REDIR_WORD LESS_LESS_MINUS WORD  */
-! #line 612 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
-***************
-*** 2256,2264 ****
-  			  push_heredoc ((yyval.redirect));
-  			}
-! #line 2259 "y.tab.c"
-      break;
-  
-!   case 31: /* redirection: LESS_LESS_LESS WORD  */
-! #line 604 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 0;
---- 2275,2283 ----
-  			  push_heredoc ((yyval.redirect));
-  			}
-! #line 2278 "y.tab.c"
-      break;
-  
-!   case 32: /* redirection: LESS_LESS_LESS WORD  */
-! #line 619 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 0;
-***************
-*** 2266,2274 ****
-  			  (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
-  			}
-! #line 2269 "y.tab.c"
-      break;
-  
-!   case 32: /* redirection: NUMBER LESS_LESS_LESS WORD  */
-! #line 610 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
---- 2285,2293 ----
-  			  (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
-  			}
-! #line 2288 "y.tab.c"
-      break;
-  
-!   case 33: /* redirection: NUMBER LESS_LESS_LESS WORD  */
-! #line 625 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
-***************
-*** 2276,2284 ****
-  			  (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
-  			}
-! #line 2279 "y.tab.c"
-      break;
-  
-!   case 33: /* redirection: REDIR_WORD LESS_LESS_LESS WORD  */
-! #line 616 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
---- 2295,2303 ----
-  			  (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
-  			}
-! #line 2298 "y.tab.c"
-      break;
-  
-!   case 34: /* redirection: REDIR_WORD LESS_LESS_LESS WORD  */
-! #line 631 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
-***************
-*** 2286,2294 ****
-  			  (yyval.redirect) = make_redirection (source, r_reading_string, redir, REDIR_VARASSIGN);
-  			}
-! #line 2289 "y.tab.c"
-      break;
-  
-!   case 34: /* redirection: LESS_AND NUMBER  */
-! #line 622 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 0;
---- 2305,2313 ----
-  			  (yyval.redirect) = make_redirection (source, r_reading_string, redir, REDIR_VARASSIGN);
-  			}
-! #line 2308 "y.tab.c"
-      break;
-  
-!   case 35: /* redirection: LESS_AND NUMBER  */
-! #line 637 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 0;
-***************
-*** 2296,2304 ****
-  			  (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
-  			}
-! #line 2299 "y.tab.c"
-      break;
-  
-!   case 35: /* redirection: NUMBER LESS_AND NUMBER  */
-! #line 628 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
---- 2315,2323 ----
-  			  (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
-  			}
-! #line 2318 "y.tab.c"
-      break;
-  
-!   case 36: /* redirection: NUMBER LESS_AND NUMBER  */
-! #line 643 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
-***************
-*** 2306,2314 ****
-  			  (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
-  			}
-! #line 2309 "y.tab.c"
-      break;
-  
-!   case 36: /* redirection: REDIR_WORD LESS_AND NUMBER  */
-! #line 634 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
---- 2325,2333 ----
-  			  (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
-  			}
-! #line 2328 "y.tab.c"
-      break;
-  
-!   case 37: /* redirection: REDIR_WORD LESS_AND NUMBER  */
-! #line 649 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
-***************
-*** 2316,2324 ****
-  			  (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, REDIR_VARASSIGN);
-  			}
-! #line 2319 "y.tab.c"
-      break;
-  
-!   case 37: /* redirection: GREATER_AND NUMBER  */
-! #line 640 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 1;
---- 2335,2343 ----
-  			  (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, REDIR_VARASSIGN);
-  			}
-! #line 2338 "y.tab.c"
-      break;
-  
-!   case 38: /* redirection: GREATER_AND NUMBER  */
-! #line 655 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 1;
-***************
-*** 2326,2334 ****
-  			  (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
-  			}
-! #line 2329 "y.tab.c"
-      break;
-  
-!   case 38: /* redirection: NUMBER GREATER_AND NUMBER  */
-! #line 646 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
---- 2345,2353 ----
-  			  (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
-  			}
-! #line 2348 "y.tab.c"
-      break;
-  
-!   case 39: /* redirection: NUMBER GREATER_AND NUMBER  */
-! #line 661 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
-***************
-*** 2336,2344 ****
-  			  (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
-  			}
-! #line 2339 "y.tab.c"
-      break;
-  
-!   case 39: /* redirection: REDIR_WORD GREATER_AND NUMBER  */
-! #line 652 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
---- 2355,2363 ----
-  			  (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
-  			}
-! #line 2358 "y.tab.c"
-      break;
-  
-!   case 40: /* redirection: REDIR_WORD GREATER_AND NUMBER  */
-! #line 667 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
-***************
-*** 2346,2354 ****
-  			  (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, REDIR_VARASSIGN);
-  			}
-! #line 2349 "y.tab.c"
-      break;
-  
-!   case 40: /* redirection: LESS_AND WORD  */
-! #line 658 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 0;
---- 2365,2373 ----
-  			  (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, REDIR_VARASSIGN);
-  			}
-! #line 2368 "y.tab.c"
-      break;
-  
-!   case 41: /* redirection: LESS_AND WORD  */
-! #line 673 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 0;
-***************
-*** 2356,2364 ****
-  			  (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
-  			}
-! #line 2359 "y.tab.c"
-      break;
-  
-!   case 41: /* redirection: NUMBER LESS_AND WORD  */
-! #line 664 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
---- 2375,2383 ----
-  			  (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
-  			}
-! #line 2378 "y.tab.c"
-      break;
-  
-!   case 42: /* redirection: NUMBER LESS_AND WORD  */
-! #line 679 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
-***************
-*** 2366,2374 ****
-  			  (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
-  			}
-! #line 2369 "y.tab.c"
-      break;
-  
-!   case 42: /* redirection: REDIR_WORD LESS_AND WORD  */
-! #line 670 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
---- 2385,2393 ----
-  			  (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
-  			}
-! #line 2388 "y.tab.c"
-      break;
-  
-!   case 43: /* redirection: REDIR_WORD LESS_AND WORD  */
-! #line 685 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
-***************
-*** 2376,2384 ****
-  			  (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, REDIR_VARASSIGN);
-  			}
-! #line 2379 "y.tab.c"
-      break;
-  
-!   case 43: /* redirection: GREATER_AND WORD  */
-! #line 676 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 1;
---- 2395,2403 ----
-  			  (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, REDIR_VARASSIGN);
-  			}
-! #line 2398 "y.tab.c"
-      break;
-  
-!   case 44: /* redirection: GREATER_AND WORD  */
-! #line 691 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 1;
-***************
-*** 2386,2394 ****
-  			  (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
-  			}
-! #line 2389 "y.tab.c"
-      break;
-  
-!   case 44: /* redirection: NUMBER GREATER_AND WORD  */
-! #line 682 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
---- 2405,2413 ----
-  			  (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
-  			}
-! #line 2408 "y.tab.c"
-      break;
-  
-!   case 45: /* redirection: NUMBER GREATER_AND WORD  */
-! #line 697 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
-***************
-*** 2396,2404 ****
-  			  (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
-  			}
-! #line 2399 "y.tab.c"
-      break;
-  
-!   case 45: /* redirection: REDIR_WORD GREATER_AND WORD  */
-! #line 688 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
---- 2415,2423 ----
-  			  (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
-  			}
-! #line 2418 "y.tab.c"
-      break;
-  
-!   case 46: /* redirection: REDIR_WORD GREATER_AND WORD  */
-! #line 703 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
-***************
-*** 2406,2414 ****
-  			  (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, REDIR_VARASSIGN);
-  			}
-! #line 2409 "y.tab.c"
-      break;
-  
-!   case 46: /* redirection: GREATER_AND '-'  */
-! #line 694 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 1;
---- 2425,2433 ----
-  			  (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, REDIR_VARASSIGN);
-  			}
-! #line 2428 "y.tab.c"
-      break;
-  
-!   case 47: /* redirection: GREATER_AND '-'  */
-! #line 709 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 1;
-***************
-*** 2416,2424 ****
-  			  (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
-  			}
-! #line 2419 "y.tab.c"
-      break;
-  
-!   case 47: /* redirection: NUMBER GREATER_AND '-'  */
-! #line 700 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
---- 2435,2443 ----
-  			  (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
-  			}
-! #line 2438 "y.tab.c"
-      break;
-  
-!   case 48: /* redirection: NUMBER GREATER_AND '-'  */
-! #line 715 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
-***************
-*** 2426,2434 ****
-  			  (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
-  			}
-! #line 2429 "y.tab.c"
-      break;
-  
-!   case 48: /* redirection: REDIR_WORD GREATER_AND '-'  */
-! #line 706 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
---- 2445,2453 ----
-  			  (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
-  			}
-! #line 2448 "y.tab.c"
-      break;
-  
-!   case 49: /* redirection: REDIR_WORD GREATER_AND '-'  */
-! #line 721 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
-***************
-*** 2436,2444 ****
-  			  (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
-  			}
-! #line 2439 "y.tab.c"
-      break;
-  
-!   case 49: /* redirection: LESS_AND '-'  */
-! #line 712 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 0;
---- 2455,2463 ----
-  			  (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
-  			}
-! #line 2458 "y.tab.c"
-      break;
-  
-!   case 50: /* redirection: LESS_AND '-'  */
-! #line 727 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 0;
-***************
-*** 2446,2454 ****
-  			  (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
-  			}
-! #line 2449 "y.tab.c"
-      break;
-  
-!   case 50: /* redirection: NUMBER LESS_AND '-'  */
-! #line 718 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
---- 2465,2473 ----
-  			  (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
-  			}
-! #line 2468 "y.tab.c"
-      break;
-  
-!   case 51: /* redirection: NUMBER LESS_AND '-'  */
-! #line 733 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = (yyvsp[-2].number);
-***************
-*** 2456,2464 ****
-  			  (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
-  			}
-! #line 2459 "y.tab.c"
-      break;
-  
-!   case 51: /* redirection: REDIR_WORD LESS_AND '-'  */
-! #line 724 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
---- 2475,2483 ----
-  			  (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
-  			}
-! #line 2478 "y.tab.c"
-      break;
-  
-!   case 52: /* redirection: REDIR_WORD LESS_AND '-'  */
-! #line 739 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.filename = (yyvsp[-2].word);
-***************
-*** 2466,2474 ****
-  			  (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
-  			}
-! #line 2469 "y.tab.c"
-      break;
-  
-!   case 52: /* redirection: AND_GREATER WORD  */
-! #line 730 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 1;
---- 2485,2493 ----
-  			  (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
-  			}
-! #line 2488 "y.tab.c"
-      break;
-  
-!   case 53: /* redirection: AND_GREATER WORD  */
-! #line 745 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 1;
-***************
-*** 2476,2484 ****
-  			  (yyval.redirect) = make_redirection (source, r_err_and_out, redir, 0);
-  			}
-! #line 2479 "y.tab.c"
-      break;
-  
-!   case 53: /* redirection: AND_GREATER_GREATER WORD  */
-! #line 736 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 1;
---- 2495,2503 ----
-  			  (yyval.redirect) = make_redirection (source, r_err_and_out, redir, 0);
-  			}
-! #line 2498 "y.tab.c"
-      break;
-  
-!   case 54: /* redirection: AND_GREATER_GREATER WORD  */
-! #line 751 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  source.dest = 1;
-***************
-*** 2486,2520 ****
-  			  (yyval.redirect) = make_redirection (source, r_append_err_and_out, redir, 0);
-  			}
-! #line 2489 "y.tab.c"
-      break;
-  
-!   case 54: /* simple_command_element: WORD  */
-! #line 744 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
-! #line 2495 "y.tab.c"
-      break;
-  
-!   case 55: /* simple_command_element: ASSIGNMENT_WORD  */
-! #line 746 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
-! #line 2501 "y.tab.c"
-      break;
-  
-!   case 56: /* simple_command_element: redirection  */
-! #line 748 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.element).redirect = (yyvsp[0].redirect); (yyval.element).word = 0; }
-! #line 2507 "y.tab.c"
-      break;
-  
-!   case 57: /* redirection_list: redirection  */
-! #line 752 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.redirect) = (yyvsp[0].redirect);
-  			}
-! #line 2515 "y.tab.c"
-      break;
-  
-!   case 58: /* redirection_list: redirection_list redirection  */
-! #line 756 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  register REDIRECT *t;
---- 2505,2539 ----
-  			  (yyval.redirect) = make_redirection (source, r_append_err_and_out, redir, 0);
-  			}
-! #line 2508 "y.tab.c"
-      break;
-  
-!   case 55: /* simple_command_element: WORD  */
-! #line 759 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
-! #line 2514 "y.tab.c"
-      break;
-  
-!   case 56: /* simple_command_element: ASSIGNMENT_WORD  */
-! #line 761 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
-! #line 2520 "y.tab.c"
-      break;
-  
-!   case 57: /* simple_command_element: redirection  */
-! #line 763 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.element).redirect = (yyvsp[0].redirect); (yyval.element).word = 0; }
-! #line 2526 "y.tab.c"
-      break;
-  
-!   case 58: /* redirection_list: redirection  */
-! #line 767 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.redirect) = (yyvsp[0].redirect);
-  			}
-! #line 2534 "y.tab.c"
-      break;
-  
-!   case 59: /* redirection_list: redirection_list redirection  */
-! #line 771 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  register REDIRECT *t;
-***************
-*** 2525,2557 ****
-  			  (yyval.redirect) = (yyvsp[-1].redirect);
-  			}
-! #line 2528 "y.tab.c"
-      break;
-  
-!   case 59: /* simple_command: simple_command_element  */
-! #line 767 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_simple_command ((yyvsp[0].element), (COMMAND *)NULL); }
-! #line 2534 "y.tab.c"
-      break;
-  
-!   case 60: /* simple_command: simple_command simple_command_element  */
-! #line 769 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_simple_command ((yyvsp[0].element), (yyvsp[-1].command)); }
-! #line 2540 "y.tab.c"
-      break;
-  
-!   case 61: /* command: simple_command  */
-! #line 773 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = clean_simple_command ((yyvsp[0].command)); }
-! #line 2546 "y.tab.c"
-      break;
-  
-!   case 62: /* command: shell_command  */
-! #line 775 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2552 "y.tab.c"
-      break;
-  
-!   case 63: /* command: shell_command redirection_list  */
-! #line 777 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  COMMAND *tc;
---- 2544,2576 ----
-  			  (yyval.redirect) = (yyvsp[-1].redirect);
-  			}
-! #line 2547 "y.tab.c"
-      break;
-  
-!   case 60: /* simple_command: simple_command_element  */
-! #line 782 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_simple_command ((yyvsp[0].element), (COMMAND *)NULL); }
-! #line 2553 "y.tab.c"
-      break;
-  
-!   case 61: /* simple_command: simple_command simple_command_element  */
-! #line 784 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_simple_command ((yyvsp[0].element), (yyvsp[-1].command)); }
-! #line 2559 "y.tab.c"
-      break;
-  
-!   case 62: /* command: simple_command  */
-! #line 788 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = clean_simple_command ((yyvsp[0].command)); }
-! #line 2565 "y.tab.c"
-      break;
-  
-!   case 63: /* command: shell_command  */
-! #line 790 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2571 "y.tab.c"
-      break;
-  
-!   case 64: /* command: shell_command redirection_list  */
-! #line 792 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  COMMAND *tc;
-***************
-*** 2569,2727 ****
-  			  (yyval.command) = (yyvsp[-1].command);
-  			}
-! #line 2572 "y.tab.c"
-      break;
-  
-!   case 64: /* command: function_def  */
-! #line 793 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2578 "y.tab.c"
-      break;
-  
-!   case 65: /* command: coproc  */
-! #line 795 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2584 "y.tab.c"
-      break;
-  
-!   case 66: /* shell_command: for_command  */
-! #line 799 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2590 "y.tab.c"
-      break;
-  
-!   case 67: /* shell_command: case_command  */
-! #line 801 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2596 "y.tab.c"
-      break;
-  
-!   case 68: /* shell_command: WHILE compound_list DO compound_list DONE  */
-! #line 803 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_while_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
-! #line 2602 "y.tab.c"
-      break;
-  
-!   case 69: /* shell_command: UNTIL compound_list DO compound_list DONE  */
-! #line 805 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_until_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
-! #line 2608 "y.tab.c"
-      break;
-  
-!   case 70: /* shell_command: select_command  */
-! #line 807 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2614 "y.tab.c"
-      break;
-  
-!   case 71: /* shell_command: if_command  */
-! #line 809 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2620 "y.tab.c"
-      break;
-  
-!   case 72: /* shell_command: subshell  */
-! #line 811 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2626 "y.tab.c"
-      break;
-  
-!   case 73: /* shell_command: group_command  */
-! #line 813 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2632 "y.tab.c"
-      break;
-  
-!   case 74: /* shell_command: arith_command  */
-! #line 815 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2638 "y.tab.c"
-      break;
-  
-!   case 75: /* shell_command: cond_command  */
-! #line 817 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2644 "y.tab.c"
-      break;
-  
-!   case 76: /* shell_command: arith_for_command  */
-! #line 819 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2650 "y.tab.c"
-      break;
-  
-!   case 77: /* for_command: FOR WORD newline_list DO compound_list DONE  */
-! #line 823 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2659 "y.tab.c"
-      break;
-  
-!   case 78: /* for_command: FOR WORD newline_list '{' compound_list '}'  */
-! #line 828 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2668 "y.tab.c"
-      break;
-  
-!   case 79: /* for_command: FOR WORD ';' newline_list DO compound_list DONE  */
-! #line 833 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2677 "y.tab.c"
-      break;
-  
-!   case 80: /* for_command: FOR WORD ';' newline_list '{' compound_list '}'  */
-! #line 838 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2686 "y.tab.c"
-      break;
-  
-!   case 81: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE  */
-! #line 843 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2695 "y.tab.c"
-      break;
-  
-!   case 82: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}'  */
-! #line 848 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2704 "y.tab.c"
-      break;
-  
-!   case 83: /* for_command: FOR WORD newline_list IN list_terminator newline_list DO compound_list DONE  */
-! #line 853 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2713 "y.tab.c"
-      break;
-  
-!   case 84: /* for_command: FOR WORD newline_list IN list_terminator newline_list '{' compound_list '}'  */
-! #line 858 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2722 "y.tab.c"
-      break;
-  
-!   case 85: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list DO compound_list DONE  */
-! #line 865 "/usr/local/src/chet/src/bash/src/parse.y"
-                                  {
-  				  (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
---- 2588,2746 ----
-  			  (yyval.command) = (yyvsp[-1].command);
-  			}
-! #line 2591 "y.tab.c"
-      break;
-  
-!   case 65: /* command: function_def  */
-! #line 808 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2597 "y.tab.c"
-      break;
-  
-!   case 66: /* command: coproc  */
-! #line 810 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2603 "y.tab.c"
-      break;
-  
-!   case 67: /* shell_command: for_command  */
-! #line 814 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2609 "y.tab.c"
-      break;
-  
-!   case 68: /* shell_command: case_command  */
-! #line 816 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2615 "y.tab.c"
-      break;
-  
-!   case 69: /* shell_command: WHILE compound_list DO compound_list DONE  */
-! #line 818 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_while_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
-! #line 2621 "y.tab.c"
-      break;
-  
-!   case 70: /* shell_command: UNTIL compound_list DO compound_list DONE  */
-! #line 820 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_until_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
-! #line 2627 "y.tab.c"
-      break;
-  
-!   case 71: /* shell_command: select_command  */
-! #line 822 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2633 "y.tab.c"
-      break;
-  
-!   case 72: /* shell_command: if_command  */
-! #line 824 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2639 "y.tab.c"
-      break;
-  
-!   case 73: /* shell_command: subshell  */
-! #line 826 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2645 "y.tab.c"
-      break;
-  
-!   case 74: /* shell_command: group_command  */
-! #line 828 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2651 "y.tab.c"
-      break;
-  
-!   case 75: /* shell_command: arith_command  */
-! #line 830 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2657 "y.tab.c"
-      break;
-  
-!   case 76: /* shell_command: cond_command  */
-! #line 832 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2663 "y.tab.c"
-      break;
-  
-!   case 77: /* shell_command: arith_for_command  */
-! #line 834 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2669 "y.tab.c"
-      break;
-  
-!   case 78: /* for_command: FOR WORD newline_list DO compound_list DONE  */
-! #line 838 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2678 "y.tab.c"
-      break;
-  
-!   case 79: /* for_command: FOR WORD newline_list '{' compound_list '}'  */
-! #line 843 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2687 "y.tab.c"
-      break;
-  
-!   case 80: /* for_command: FOR WORD ';' newline_list DO compound_list DONE  */
-! #line 848 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2696 "y.tab.c"
-      break;
-  
-!   case 81: /* for_command: FOR WORD ';' newline_list '{' compound_list '}'  */
-! #line 853 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2705 "y.tab.c"
-      break;
-  
-!   case 82: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE  */
-! #line 858 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2714 "y.tab.c"
-      break;
-  
-!   case 83: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}'  */
-! #line 863 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2723 "y.tab.c"
-      break;
-  
-!   case 84: /* for_command: FOR WORD newline_list IN list_terminator newline_list DO compound_list DONE  */
-! #line 868 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2732 "y.tab.c"
-      break;
-  
-!   case 85: /* for_command: FOR WORD newline_list IN list_terminator newline_list '{' compound_list '}'  */
-! #line 873 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2741 "y.tab.c"
-      break;
-  
-!   case 86: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list DO compound_list DONE  */
-! #line 880 "/usr/local/src/chet/src/bash/src/parse.y"
-                                  {
-  				  (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
-***************
-*** 2729,2737 ****
-  				  if (word_top > 0) word_top--;
-  				}
-! #line 2732 "y.tab.c"
-      break;
-  
-!   case 86: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list '{' compound_list '}'  */
-! #line 871 "/usr/local/src/chet/src/bash/src/parse.y"
-                                  {
-  				  (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
---- 2748,2756 ----
-  				  if (word_top > 0) word_top--;
-  				}
-! #line 2751 "y.tab.c"
-      break;
-  
-!   case 87: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list '{' compound_list '}'  */
-! #line 886 "/usr/local/src/chet/src/bash/src/parse.y"
-                                  {
-  				  (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
-***************
-*** 2739,2747 ****
-  				  if (word_top > 0) word_top--;
-  				}
-! #line 2742 "y.tab.c"
-      break;
-  
-!   case 87: /* arith_for_command: FOR ARITH_FOR_EXPRS DO compound_list DONE  */
-! #line 877 "/usr/local/src/chet/src/bash/src/parse.y"
-                                  {
-  				  (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
---- 2758,2766 ----
-  				  if (word_top > 0) word_top--;
-  				}
-! #line 2761 "y.tab.c"
-      break;
-  
-!   case 88: /* arith_for_command: FOR ARITH_FOR_EXPRS DO compound_list DONE  */
-! #line 892 "/usr/local/src/chet/src/bash/src/parse.y"
-                                  {
-  				  (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
-***************
-*** 2749,2757 ****
-  				  if (word_top > 0) word_top--;
-  				}
-! #line 2752 "y.tab.c"
-      break;
-  
-!   case 88: /* arith_for_command: FOR ARITH_FOR_EXPRS '{' compound_list '}'  */
-! #line 883 "/usr/local/src/chet/src/bash/src/parse.y"
-                                  {
-  				  (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
---- 2768,2776 ----
-  				  if (word_top > 0) word_top--;
-  				}
-! #line 2771 "y.tab.c"
-      break;
-  
-!   case 89: /* arith_for_command: FOR ARITH_FOR_EXPRS '{' compound_list '}'  */
-! #line 898 "/usr/local/src/chet/src/bash/src/parse.y"
-                                  {
-  				  (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
-***************
-*** 2759,2896 ****
-  				  if (word_top > 0) word_top--;
-  				}
-! #line 2762 "y.tab.c"
-      break;
-  
-!   case 89: /* select_command: SELECT WORD newline_list DO compound_list DONE  */
-! #line 891 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2771 "y.tab.c"
-      break;
-  
-!   case 90: /* select_command: SELECT WORD newline_list '{' compound_list '}'  */
-! #line 896 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2780 "y.tab.c"
-      break;
-  
-!   case 91: /* select_command: SELECT WORD ';' newline_list DO compound_list DONE  */
-! #line 901 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2789 "y.tab.c"
-      break;
-  
-!   case 92: /* select_command: SELECT WORD ';' newline_list '{' compound_list '}'  */
-! #line 906 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2798 "y.tab.c"
-      break;
-  
-!   case 93: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE  */
-! #line 911 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2807 "y.tab.c"
-      break;
-  
-!   case 94: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}'  */
-! #line 916 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2816 "y.tab.c"
-      break;
-  
-!   case 95: /* select_command: SELECT WORD newline_list IN list_terminator newline_list DO compound_list DONE  */
-! #line 921 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2825 "y.tab.c"
-      break;
-  
-!   case 96: /* select_command: SELECT WORD newline_list IN list_terminator newline_list '{' compound_list '}'  */
-! #line 926 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2834 "y.tab.c"
-      break;
-  
-!   case 97: /* case_command: CASE WORD newline_list IN newline_list ESAC  */
-! #line 933 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = make_case_command ((yyvsp[-4].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
-  			  if (word_top > 0) word_top--;
-  			}
-! #line 2843 "y.tab.c"
-      break;
-  
-!   case 98: /* case_command: CASE WORD newline_list IN case_clause_sequence newline_list ESAC  */
-! #line 938 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = make_case_command ((yyvsp[-5].word), (yyvsp[-2].pattern), word_lineno[word_top]);
-  			  if (word_top > 0) word_top--;
-  			}
-! #line 2852 "y.tab.c"
-      break;
-  
-!   case 99: /* case_command: CASE WORD newline_list IN case_clause ESAC  */
-! #line 943 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = make_case_command ((yyvsp[-4].word), (yyvsp[-1].pattern), word_lineno[word_top]);
-  			  if (word_top > 0) word_top--;
-  			}
-! #line 2861 "y.tab.c"
-      break;
-  
-!   case 100: /* function_def: WORD '(' ')' newline_list function_body  */
-! #line 950 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
-! #line 2867 "y.tab.c"
-      break;
-  
-!   case 101: /* function_def: FUNCTION WORD '(' ')' newline_list function_body  */
-! #line 952 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
-! #line 2873 "y.tab.c"
-      break;
-  
-!   case 102: /* function_def: FUNCTION WORD function_body  */
-! #line 954 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_function_def ((yyvsp[-1].word), (yyvsp[0].command), function_dstart, function_bstart); }
-! #line 2879 "y.tab.c"
-      break;
-  
-!   case 103: /* function_def: FUNCTION WORD '\n' newline_list function_body  */
-! #line 956 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_function_def ((yyvsp[-3].word), (yyvsp[0].command), function_dstart, function_bstart); }
-! #line 2885 "y.tab.c"
-      break;
-  
-!   case 104: /* function_body: shell_command  */
-! #line 960 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2891 "y.tab.c"
-      break;
-  
-!   case 105: /* function_body: shell_command redirection_list  */
-! #line 962 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  COMMAND *tc;
---- 2778,2915 ----
-  				  if (word_top > 0) word_top--;
-  				}
-! #line 2781 "y.tab.c"
-      break;
-  
-!   case 90: /* select_command: SELECT WORD newline_list DO compound_list DONE  */
-! #line 906 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2790 "y.tab.c"
-      break;
-  
-!   case 91: /* select_command: SELECT WORD newline_list '{' compound_list '}'  */
-! #line 911 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2799 "y.tab.c"
-      break;
-  
-!   case 92: /* select_command: SELECT WORD ';' newline_list DO compound_list DONE  */
-! #line 916 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2808 "y.tab.c"
-      break;
-  
-!   case 93: /* select_command: SELECT WORD ';' newline_list '{' compound_list '}'  */
-! #line 921 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2817 "y.tab.c"
-      break;
-  
-!   case 94: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE  */
-! #line 926 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2826 "y.tab.c"
-      break;
-  
-!   case 95: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}'  */
-! #line 931 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2835 "y.tab.c"
-      break;
-  
-!   case 96: /* select_command: SELECT WORD newline_list IN list_terminator newline_list DO compound_list DONE  */
-! #line 936 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2844 "y.tab.c"
-      break;
-  
-!   case 97: /* select_command: SELECT WORD newline_list IN list_terminator newline_list '{' compound_list '}'  */
-! #line 941 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (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 2853 "y.tab.c"
-      break;
-  
-!   case 98: /* case_command: CASE WORD newline_list IN newline_list ESAC  */
-! #line 948 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = make_case_command ((yyvsp[-4].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
-  			  if (word_top > 0) word_top--;
-  			}
-! #line 2862 "y.tab.c"
-      break;
-  
-!   case 99: /* case_command: CASE WORD newline_list IN case_clause_sequence newline_list ESAC  */
-! #line 953 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = make_case_command ((yyvsp[-5].word), (yyvsp[-2].pattern), word_lineno[word_top]);
-  			  if (word_top > 0) word_top--;
-  			}
-! #line 2871 "y.tab.c"
-      break;
-  
-!   case 100: /* case_command: CASE WORD newline_list IN case_clause ESAC  */
-! #line 958 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = make_case_command ((yyvsp[-4].word), (yyvsp[-1].pattern), word_lineno[word_top]);
-  			  if (word_top > 0) word_top--;
-  			}
-! #line 2880 "y.tab.c"
-      break;
-  
-!   case 101: /* function_def: WORD '(' ')' newline_list function_body  */
-! #line 965 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
-! #line 2886 "y.tab.c"
-      break;
-  
-!   case 102: /* function_def: FUNCTION WORD '(' ')' newline_list function_body  */
-! #line 967 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
-! #line 2892 "y.tab.c"
-      break;
-  
-!   case 103: /* function_def: FUNCTION WORD function_body  */
-! #line 969 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_function_def ((yyvsp[-1].word), (yyvsp[0].command), function_dstart, function_bstart); }
-! #line 2898 "y.tab.c"
-      break;
-  
-!   case 104: /* function_def: FUNCTION WORD '\n' newline_list function_body  */
-! #line 971 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_function_def ((yyvsp[-3].word), (yyvsp[0].command), function_dstart, function_bstart); }
-! #line 2904 "y.tab.c"
-      break;
-  
-!   case 105: /* function_body: shell_command  */
-! #line 975 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 2910 "y.tab.c"
-      break;
-  
-!   case 106: /* function_body: shell_command redirection_list  */
-! #line 977 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  COMMAND *tc;
-***************
-*** 2921,2963 ****
-  			  (yyval.command) = (yyvsp[-1].command);
-  			}
-! #line 2924 "y.tab.c"
-      break;
-  
-!   case 106: /* subshell: '(' compound_list ')'  */
-! #line 993 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = make_subshell_command ((yyvsp[-1].command));
-  			  (yyval.command)->flags |= CMD_WANT_SUBSHELL;
-  			}
-! #line 2933 "y.tab.c"
-      break;
-  
-!   case 107: /* comsub: DOLPAREN compound_list ')'  */
-! #line 1000 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = (yyvsp[-1].command);
-  			}
-! #line 2941 "y.tab.c"
-      break;
-  
-!   case 108: /* comsub: DOLPAREN newline_list ')'  */
-! #line 1004 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = (COMMAND *)NULL;
-  			}
-! #line 2949 "y.tab.c"
-      break;
-  
-!   case 109: /* coproc: COPROC shell_command  */
-! #line 1010 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = make_coproc_command ("COPROC", (yyvsp[0].command));
-  			  (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
-  			}
-! #line 2958 "y.tab.c"
-      break;
-  
-!   case 110: /* coproc: COPROC shell_command redirection_list  */
-! #line 1015 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  COMMAND *tc;
---- 2940,2982 ----
-  			  (yyval.command) = (yyvsp[-1].command);
-  			}
-! #line 2943 "y.tab.c"
-      break;
-  
-!   case 107: /* subshell: '(' compound_list ')'  */
-! #line 1008 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = make_subshell_command ((yyvsp[-1].command));
-  			  (yyval.command)->flags |= CMD_WANT_SUBSHELL;
-  			}
-! #line 2952 "y.tab.c"
-      break;
-  
-!   case 108: /* comsub: DOLPAREN compound_list ')'  */
-! #line 1015 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = (yyvsp[-1].command);
-  			}
-! #line 2960 "y.tab.c"
-      break;
-  
-!   case 109: /* comsub: DOLPAREN newline_list ')'  */
-! #line 1019 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = (COMMAND *)NULL;
-  			}
-! #line 2968 "y.tab.c"
-      break;
-  
-!   case 110: /* coproc: COPROC shell_command  */
-! #line 1025 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = make_coproc_command ("COPROC", (yyvsp[0].command));
-  			  (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
-  			}
-! #line 2977 "y.tab.c"
-      break;
-  
-!   case 111: /* coproc: COPROC shell_command redirection_list  */
-! #line 1030 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  COMMAND *tc;
-***************
-*** 2976,2993 ****
-  			  (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
-  			}
-! #line 2979 "y.tab.c"
-      break;
-  
-!   case 111: /* coproc: COPROC WORD shell_command  */
-! #line 1032 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = make_coproc_command ((yyvsp[-1].word)->word, (yyvsp[0].command));
-  			  (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
-  			}
-! #line 2988 "y.tab.c"
-      break;
-  
-!   case 112: /* coproc: COPROC WORD shell_command redirection_list  */
-! #line 1037 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  COMMAND *tc;
---- 2995,3012 ----
-  			  (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
-  			}
-! #line 2998 "y.tab.c"
-      break;
-  
-!   case 112: /* coproc: COPROC WORD shell_command  */
-! #line 1047 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = make_coproc_command ((yyvsp[-1].word)->word, (yyvsp[0].command));
-  			  (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
-  			}
-! #line 3007 "y.tab.c"
-      break;
-  
-!   case 113: /* coproc: COPROC WORD shell_command redirection_list  */
-! #line 1052 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  COMMAND *tc;
-***************
-*** 3006,3155 ****
-  			  (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
-  			}
-! #line 3009 "y.tab.c"
-      break;
-  
-!   case 113: /* coproc: COPROC simple_command  */
-! #line 1054 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[0].command)));
-  			  (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
-  			}
-! #line 3018 "y.tab.c"
-      break;
-  
-!   case 114: /* if_command: IF compound_list THEN compound_list FI  */
-! #line 1061 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (COMMAND *)NULL); }
-! #line 3024 "y.tab.c"
-      break;
-  
-!   case 115: /* if_command: IF compound_list THEN compound_list ELSE compound_list FI  */
-! #line 1063 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_if_command ((yyvsp[-5].command), (yyvsp[-3].command), (yyvsp[-1].command)); }
-! #line 3030 "y.tab.c"
-      break;
-  
-!   case 116: /* if_command: IF compound_list THEN compound_list elif_clause FI  */
-! #line 1065 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[-1].command)); }
-! #line 3036 "y.tab.c"
-      break;
-  
-!   case 117: /* group_command: '{' compound_list '}'  */
-! #line 1070 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_group_command ((yyvsp[-1].command)); }
-! #line 3042 "y.tab.c"
-      break;
-  
-!   case 118: /* arith_command: ARITH_CMD  */
-! #line 1074 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_arith_command ((yyvsp[0].word_list)); }
-! #line 3048 "y.tab.c"
-      break;
-  
-!   case 119: /* cond_command: COND_START COND_CMD COND_END  */
-! #line 1078 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[-1].command); }
-! #line 3054 "y.tab.c"
-      break;
-  
-!   case 120: /* elif_clause: ELIF compound_list THEN compound_list  */
-! #line 1082 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_if_command ((yyvsp[-2].command), (yyvsp[0].command), (COMMAND *)NULL); }
-! #line 3060 "y.tab.c"
-      break;
-  
-!   case 121: /* elif_clause: ELIF compound_list THEN compound_list ELSE compound_list  */
-! #line 1084 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[0].command)); }
-! #line 3066 "y.tab.c"
-      break;
-  
-!   case 122: /* elif_clause: ELIF compound_list THEN compound_list elif_clause  */
-! #line 1086 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (yyvsp[0].command)); }
-! #line 3072 "y.tab.c"
-      break;
-  
-!   case 124: /* case_clause: case_clause_sequence pattern_list  */
-! #line 1091 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyvsp[0].pattern)->next = (yyvsp[-1].pattern); (yyval.pattern) = (yyvsp[0].pattern); }
-! #line 3078 "y.tab.c"
-      break;
-  
-!   case 125: /* pattern_list: newline_list pattern ')' compound_list  */
-! #line 1095 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
-! #line 3084 "y.tab.c"
-      break;
-  
-!   case 126: /* pattern_list: newline_list pattern ')' newline_list  */
-! #line 1097 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
-! #line 3090 "y.tab.c"
-      break;
-  
-!   case 127: /* pattern_list: newline_list '(' pattern ')' compound_list  */
-! #line 1099 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
-! #line 3096 "y.tab.c"
-      break;
-  
-!   case 128: /* pattern_list: newline_list '(' pattern ')' newline_list  */
-! #line 1101 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
-! #line 3102 "y.tab.c"
-      break;
-  
-!   case 129: /* case_clause_sequence: pattern_list SEMI_SEMI  */
-! #line 1105 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.pattern) = (yyvsp[-1].pattern); }
-! #line 3108 "y.tab.c"
-      break;
-  
-!   case 130: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI  */
-! #line 1107 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
-! #line 3114 "y.tab.c"
-      break;
-  
-!   case 131: /* case_clause_sequence: pattern_list SEMI_AND  */
-! #line 1109 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[-1].pattern); }
-! #line 3120 "y.tab.c"
-      break;
-  
-!   case 132: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_AND  */
-! #line 1111 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
-! #line 3126 "y.tab.c"
-      break;
-  
-!   case 133: /* case_clause_sequence: pattern_list SEMI_SEMI_AND  */
-! #line 1113 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[-1].pattern); }
-! #line 3132 "y.tab.c"
-      break;
-  
-!   case 134: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI_AND  */
-! #line 1115 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
-! #line 3138 "y.tab.c"
-      break;
-  
-!   case 135: /* pattern: WORD  */
-! #line 1119 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
-! #line 3144 "y.tab.c"
-      break;
-  
-!   case 136: /* pattern: pattern '|' WORD  */
-! #line 1121 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-2].word_list)); }
-! #line 3150 "y.tab.c"
-      break;
-  
-!   case 137: /* compound_list: newline_list list0  */
-! #line 1130 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = (yyvsp[0].command);
---- 3025,3174 ----
-  			  (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
-  			}
-! #line 3028 "y.tab.c"
-      break;
-  
-!   case 114: /* coproc: COPROC simple_command  */
-! #line 1069 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[0].command)));
-  			  (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
-  			}
-! #line 3037 "y.tab.c"
-      break;
-  
-!   case 115: /* if_command: IF compound_list THEN compound_list FI  */
-! #line 1076 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (COMMAND *)NULL); }
-! #line 3043 "y.tab.c"
-      break;
-  
-!   case 116: /* if_command: IF compound_list THEN compound_list ELSE compound_list FI  */
-! #line 1078 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_if_command ((yyvsp[-5].command), (yyvsp[-3].command), (yyvsp[-1].command)); }
-! #line 3049 "y.tab.c"
-      break;
-  
-!   case 117: /* if_command: IF compound_list THEN compound_list elif_clause FI  */
-! #line 1080 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[-1].command)); }
-! #line 3055 "y.tab.c"
-      break;
-  
-!   case 118: /* group_command: '{' compound_list '}'  */
-! #line 1085 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_group_command ((yyvsp[-1].command)); }
-! #line 3061 "y.tab.c"
-      break;
-  
-!   case 119: /* arith_command: ARITH_CMD  */
-! #line 1089 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_arith_command ((yyvsp[0].word_list)); }
-! #line 3067 "y.tab.c"
-      break;
-  
-!   case 120: /* cond_command: COND_START COND_CMD COND_END  */
-! #line 1093 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[-1].command); }
-! #line 3073 "y.tab.c"
-      break;
-  
-!   case 121: /* elif_clause: ELIF compound_list THEN compound_list  */
-! #line 1097 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_if_command ((yyvsp[-2].command), (yyvsp[0].command), (COMMAND *)NULL); }
-! #line 3079 "y.tab.c"
-      break;
-  
-!   case 122: /* elif_clause: ELIF compound_list THEN compound_list ELSE compound_list  */
-! #line 1099 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[0].command)); }
-! #line 3085 "y.tab.c"
-      break;
-  
-!   case 123: /* elif_clause: ELIF compound_list THEN compound_list elif_clause  */
-! #line 1101 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (yyvsp[0].command)); }
-! #line 3091 "y.tab.c"
-      break;
-  
-!   case 125: /* case_clause: case_clause_sequence pattern_list  */
-! #line 1106 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyvsp[0].pattern)->next = (yyvsp[-1].pattern); (yyval.pattern) = (yyvsp[0].pattern); }
-! #line 3097 "y.tab.c"
-      break;
-  
-!   case 126: /* pattern_list: newline_list pattern ')' compound_list  */
-! #line 1110 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
-! #line 3103 "y.tab.c"
-      break;
-  
-!   case 127: /* pattern_list: newline_list pattern ')' newline_list  */
-! #line 1112 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
-! #line 3109 "y.tab.c"
-      break;
-  
-!   case 128: /* pattern_list: newline_list '(' pattern ')' compound_list  */
-! #line 1114 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
-! #line 3115 "y.tab.c"
-      break;
-  
-!   case 129: /* pattern_list: newline_list '(' pattern ')' newline_list  */
-! #line 1116 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
-! #line 3121 "y.tab.c"
-      break;
-  
-!   case 130: /* case_clause_sequence: pattern_list SEMI_SEMI  */
-! #line 1120 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.pattern) = (yyvsp[-1].pattern); }
-! #line 3127 "y.tab.c"
-      break;
-  
-!   case 131: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI  */
-! #line 1122 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
-! #line 3133 "y.tab.c"
-      break;
-  
-!   case 132: /* case_clause_sequence: pattern_list SEMI_AND  */
-! #line 1124 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[-1].pattern); }
-! #line 3139 "y.tab.c"
-      break;
-  
-!   case 133: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_AND  */
-! #line 1126 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
-! #line 3145 "y.tab.c"
-      break;
-  
-!   case 134: /* case_clause_sequence: pattern_list SEMI_SEMI_AND  */
-! #line 1128 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[-1].pattern); }
-! #line 3151 "y.tab.c"
-      break;
-  
-!   case 135: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI_AND  */
-! #line 1130 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
-! #line 3157 "y.tab.c"
-      break;
-  
-!   case 136: /* pattern: WORD  */
-! #line 1134 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
-! #line 3163 "y.tab.c"
-      break;
-  
-!   case 137: /* pattern: pattern '|' WORD  */
-! #line 1136 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-2].word_list)); }
-! #line 3169 "y.tab.c"
-      break;
-  
-!   case 138: /* compound_list: newline_list list0  */
-! #line 1145 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = (yyvsp[0].command);
-***************
-*** 3157,3173 ****
-  			    gather_here_documents ();
-  			 }
-! #line 3160 "y.tab.c"
-      break;
-  
-!   case 138: /* compound_list: newline_list list1  */
-! #line 1136 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = (yyvsp[0].command);
-  			}
-! #line 3168 "y.tab.c"
-      break;
-  
-!   case 140: /* list0: list1 '&' newline_list  */
-! #line 1143 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  if ((yyvsp[-2].command)->type == cm_connection)
---- 3176,3192 ----
-  			    gather_here_documents ();
-  			 }
-! #line 3179 "y.tab.c"
-      break;
-  
-!   case 139: /* compound_list: newline_list list1  */
-! #line 1151 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = (yyvsp[0].command);
-  			}
-! #line 3187 "y.tab.c"
-      break;
-  
-!   case 141: /* list0: list1 '&' newline_list  */
-! #line 1158 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  if ((yyvsp[-2].command)->type == cm_connection)
-***************
-*** 3176,3196 ****
-  			    (yyval.command) = command_connect ((yyvsp[-2].command), (COMMAND *)NULL, '&');
-  			}
-! #line 3179 "y.tab.c"
-      break;
-  
-!   case 142: /* list1: list1 AND_AND newline_list list1  */
-! #line 1154 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
-! #line 3185 "y.tab.c"
-      break;
-  
-!   case 143: /* list1: list1 OR_OR newline_list list1  */
-! #line 1156 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
-! #line 3191 "y.tab.c"
-      break;
-  
-!   case 144: /* list1: list1 '&' newline_list list1  */
-! #line 1158 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  if ((yyvsp[-3].command)->type == cm_connection)
---- 3195,3215 ----
-  			    (yyval.command) = command_connect ((yyvsp[-2].command), (COMMAND *)NULL, '&');
-  			}
-! #line 3198 "y.tab.c"
-      break;
-  
-!   case 143: /* list1: list1 AND_AND newline_list list1  */
-! #line 1169 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
-! #line 3204 "y.tab.c"
-      break;
-  
-!   case 144: /* list1: list1 OR_OR newline_list list1  */
-! #line 1171 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
-! #line 3210 "y.tab.c"
-      break;
-  
-!   case 145: /* list1: list1 '&' newline_list list1  */
-! #line 1173 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  if ((yyvsp[-3].command)->type == cm_connection)
-***************
-*** 3199,3213 ****
-  			    (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '&');
-  			}
-! #line 3202 "y.tab.c"
-      break;
-  
-!   case 145: /* list1: list1 ';' newline_list list1  */
-! #line 1165 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); }
-! #line 3208 "y.tab.c"
-      break;
-  
-!   case 146: /* list1: list1 '\n' newline_list list1  */
-! #line 1167 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  if (parser_state & PST_CMDSUBST)
---- 3218,3232 ----
-  			    (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '&');
-  			}
-! #line 3221 "y.tab.c"
-      break;
-  
-!   case 146: /* list1: list1 ';' newline_list list1  */
-! #line 1180 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); }
-! #line 3227 "y.tab.c"
-      break;
-  
-!   case 147: /* list1: list1 '\n' newline_list list1  */
-! #line 1182 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  if (parser_state & PST_CMDSUBST)
-***************
-*** 3216,3248 ****
-  			    (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';');
-  			}
-! #line 3219 "y.tab.c"
-      break;
-  
-!   case 147: /* list1: pipeline_command  */
-! #line 1174 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 3225 "y.tab.c"
-      break;
-  
-!   case 150: /* list_terminator: '\n'  */
-! #line 1182 "/usr/local/src/chet/src/bash/src/parse.y"
-                  { (yyval.number) = '\n'; }
-! #line 3231 "y.tab.c"
-      break;
-  
-!   case 151: /* list_terminator: ';'  */
-! #line 1184 "/usr/local/src/chet/src/bash/src/parse.y"
-                  { (yyval.number) = ';'; }
-! #line 3237 "y.tab.c"
-      break;
-  
-!   case 152: /* list_terminator: yacc_EOF  */
-! #line 1186 "/usr/local/src/chet/src/bash/src/parse.y"
-                  { (yyval.number) = yacc_EOF; }
-! #line 3243 "y.tab.c"
-      break;
-  
-!   case 155: /* simple_list: simple_list1  */
-! #line 1200 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = (yyvsp[0].command);
---- 3235,3267 ----
-  			    (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';');
-  			}
-! #line 3238 "y.tab.c"
-      break;
-  
-!   case 148: /* list1: pipeline_command  */
-! #line 1189 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 3244 "y.tab.c"
-      break;
-  
-!   case 151: /* list_terminator: '\n'  */
-! #line 1197 "/usr/local/src/chet/src/bash/src/parse.y"
-                  { (yyval.number) = '\n'; }
-! #line 3250 "y.tab.c"
-      break;
-  
-!   case 152: /* list_terminator: ';'  */
-! #line 1199 "/usr/local/src/chet/src/bash/src/parse.y"
-                  { (yyval.number) = ';'; }
-! #line 3256 "y.tab.c"
-      break;
-  
-!   case 153: /* list_terminator: yacc_EOF  */
-! #line 1201 "/usr/local/src/chet/src/bash/src/parse.y"
-                  { (yyval.number) = yacc_EOF; }
-! #line 3262 "y.tab.c"
-      break;
-  
-!   case 156: /* simple_list: simple_list1  */
-! #line 1215 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = (yyvsp[0].command);
-***************
-*** 3259,3267 ****
-  			    }
-  			}
-! #line 3262 "y.tab.c"
-      break;
-  
-!   case 156: /* simple_list: simple_list1 '&'  */
-! #line 1215 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  if ((yyvsp[-1].command)->type == cm_connection)
---- 3278,3286 ----
-  			    }
-  			}
-! #line 3281 "y.tab.c"
-      break;
-  
-!   case 157: /* simple_list: simple_list1 '&'  */
-! #line 1230 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  if ((yyvsp[-1].command)->type == cm_connection)
-***************
-*** 3281,3289 ****
-  			    }
-  			}
-! #line 3284 "y.tab.c"
-      break;
-  
-!   case 157: /* simple_list: simple_list1 ';'  */
-! #line 1233 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = (yyvsp[-1].command);
---- 3300,3308 ----
-  			    }
-  			}
-! #line 3303 "y.tab.c"
-      break;
-  
-!   case 158: /* simple_list: simple_list1 ';'  */
-! #line 1248 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  (yyval.command) = (yyvsp[-1].command);
-***************
-*** 3300,3320 ****
-  			    }
-  			}
-! #line 3303 "y.tab.c"
-      break;
-  
-!   case 158: /* simple_list1: simple_list1 AND_AND newline_list simple_list1  */
-! #line 1250 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
-! #line 3309 "y.tab.c"
-      break;
-  
-!   case 159: /* simple_list1: simple_list1 OR_OR newline_list simple_list1  */
-! #line 1252 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
-! #line 3315 "y.tab.c"
-      break;
-  
-!   case 160: /* simple_list1: simple_list1 '&' simple_list1  */
-! #line 1254 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  if ((yyvsp[-2].command)->type == cm_connection)
---- 3319,3339 ----
-  			    }
-  			}
-! #line 3322 "y.tab.c"
-      break;
-  
-!   case 159: /* simple_list1: simple_list1 AND_AND newline_list simple_list1  */
-! #line 1265 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
-! #line 3328 "y.tab.c"
-      break;
-  
-!   case 160: /* simple_list1: simple_list1 OR_OR newline_list simple_list1  */
-! #line 1267 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
-! #line 3334 "y.tab.c"
-      break;
-  
-!   case 161: /* simple_list1: simple_list1 '&' simple_list1  */
-! #line 1269 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  if ((yyvsp[-2].command)->type == cm_connection)
-***************
-*** 3323,3349 ****
-  			    (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), '&');
-  			}
-! #line 3326 "y.tab.c"
-      break;
-  
-!   case 161: /* simple_list1: simple_list1 ';' simple_list1  */
-! #line 1261 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), ';'); }
-! #line 3332 "y.tab.c"
-      break;
-  
-!   case 162: /* simple_list1: pipeline_command  */
-! #line 1264 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 3338 "y.tab.c"
-      break;
-  
-!   case 163: /* pipeline_command: pipeline  */
-! #line 1268 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 3344 "y.tab.c"
-      break;
-  
-!   case 164: /* pipeline_command: BANG pipeline_command  */
-! #line 1270 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  if ((yyvsp[0].command))
---- 3342,3368 ----
-  			    (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), '&');
-  			}
-! #line 3345 "y.tab.c"
-      break;
-  
-!   case 162: /* simple_list1: simple_list1 ';' simple_list1  */
-! #line 1276 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), ';'); }
-! #line 3351 "y.tab.c"
-      break;
-  
-!   case 163: /* simple_list1: pipeline_command  */
-! #line 1279 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 3357 "y.tab.c"
-      break;
-  
-!   case 164: /* pipeline_command: pipeline  */
-! #line 1283 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 3363 "y.tab.c"
-      break;
-  
-!   case 165: /* pipeline_command: BANG pipeline_command  */
-! #line 1285 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  if ((yyvsp[0].command))
-***************
-*** 3351,3359 ****
-  			  (yyval.command) = (yyvsp[0].command);
-  			}
-! #line 3354 "y.tab.c"
-      break;
-  
-!   case 165: /* pipeline_command: timespec pipeline_command  */
-! #line 1276 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  if ((yyvsp[0].command))
---- 3370,3378 ----
-  			  (yyval.command) = (yyvsp[0].command);
-  			}
-! #line 3373 "y.tab.c"
-      break;
-  
-!   case 166: /* pipeline_command: timespec pipeline_command  */
-! #line 1291 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  if ((yyvsp[0].command))
-***************
-*** 3361,3369 ****
-  			  (yyval.command) = (yyvsp[0].command);
-  			}
-! #line 3364 "y.tab.c"
-      break;
-  
-!   case 166: /* pipeline_command: timespec list_terminator  */
-! #line 1282 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  ELEMENT x;
---- 3380,3388 ----
-  			  (yyval.command) = (yyvsp[0].command);
-  			}
-! #line 3383 "y.tab.c"
-      break;
-  
-!   case 167: /* pipeline_command: timespec list_terminator  */
-! #line 1297 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  ELEMENT x;
-***************
-*** 3385,3393 ****
-  			  parser_state &= ~PST_REDIRLIST;	/* make_simple_command sets this */
-  			}
-! #line 3388 "y.tab.c"
-      break;
-  
-!   case 167: /* pipeline_command: BANG list_terminator  */
-! #line 1302 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  ELEMENT x;
---- 3404,3412 ----
-  			  parser_state &= ~PST_REDIRLIST;	/* make_simple_command sets this */
-  			}
-! #line 3407 "y.tab.c"
-      break;
-  
-!   case 168: /* pipeline_command: BANG list_terminator  */
-! #line 1317 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  ELEMENT x;
-***************
-*** 3410,3424 ****
-  			  parser_state &= ~PST_REDIRLIST;	/* make_simple_command sets this */
-  			}
-! #line 3413 "y.tab.c"
-      break;
-  
-!   case 168: /* pipeline: pipeline '|' newline_list pipeline  */
-! #line 1325 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); }
-! #line 3419 "y.tab.c"
-      break;
-  
-!   case 169: /* pipeline: pipeline BAR_AND newline_list pipeline  */
-! #line 1327 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
---- 3429,3443 ----
-  			  parser_state &= ~PST_REDIRLIST;	/* make_simple_command sets this */
-  			}
-! #line 3432 "y.tab.c"
-      break;
-  
-!   case 169: /* pipeline: pipeline '|' newline_list pipeline  */
-! #line 1340 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); }
-! #line 3438 "y.tab.c"
-      break;
-  
-!   case 170: /* pipeline: pipeline BAR_AND newline_list pipeline  */
-! #line 1342 "/usr/local/src/chet/src/bash/src/parse.y"
-                          {
-  			  /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
-***************
-*** 3443,3481 ****
-  			  (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|');
-  			}
-! #line 3446 "y.tab.c"
-      break;
-  
-!   case 170: /* pipeline: command  */
-! #line 1350 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 3452 "y.tab.c"
-      break;
-  
-!   case 171: /* timespec: TIME  */
-! #line 1354 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.number) = CMD_TIME_PIPELINE; }
-! #line 3458 "y.tab.c"
-      break;
-  
-!   case 172: /* timespec: TIME TIMEOPT  */
-! #line 1356 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-! #line 3464 "y.tab.c"
-      break;
-  
-!   case 173: /* timespec: TIME TIMEIGN  */
-! #line 1358 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-! #line 3470 "y.tab.c"
-      break;
-  
-!   case 174: /* timespec: TIME TIMEOPT TIMEIGN  */
-! #line 1360 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-! #line 3476 "y.tab.c"
-      break;
-  
-  
-! #line 3480 "y.tab.c"
-  
-        default: break;
---- 3462,3500 ----
-  			  (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|');
-  			}
-! #line 3465 "y.tab.c"
-      break;
-  
-!   case 171: /* pipeline: command  */
-! #line 1365 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.command) = (yyvsp[0].command); }
-! #line 3471 "y.tab.c"
-      break;
-  
-!   case 172: /* timespec: TIME  */
-! #line 1369 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.number) = CMD_TIME_PIPELINE; }
-! #line 3477 "y.tab.c"
-      break;
-  
-!   case 173: /* timespec: TIME TIMEOPT  */
-! #line 1371 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-! #line 3483 "y.tab.c"
-      break;
-  
-!   case 174: /* timespec: TIME TIMEIGN  */
-! #line 1373 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-! #line 3489 "y.tab.c"
-      break;
-  
-!   case 175: /* timespec: TIME TIMEOPT TIMEIGN  */
-! #line 1375 "/usr/local/src/chet/src/bash/src/parse.y"
-                          { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-! #line 3495 "y.tab.c"
-      break;
-  
-  
-! #line 3499 "y.tab.c"
-  
-        default: break;
-***************
-*** 3670,3674 ****
-  }
-  
-! #line 1362 "/usr/local/src/chet/src/bash/src/parse.y"
-  
-  
---- 3689,3693 ----
-  }
-  
-! #line 1377 "/usr/local/src/chet/src/bash/src/parse.y"
-  
-  
-***************
-*** 5209,5215 ****
-    if (current_token < 0)
-  #if defined (YYERRCODE) && !defined (YYUNDEF)
-!     current_token = YYERRCODE;
-  #else
-!     current_token = YYerror;
-  #endif
-  
---- 5228,5234 ----
-    if (current_token < 0)
-  #if defined (YYERRCODE) && !defined (YYUNDEF)
-!     current_token = EOF_Reached ? YYEOF : YYERRCODE;
-  #else
-!     current_token = EOF_Reached ? YYEOF : YYUNDEF;
-  #endif
-  
-***************
-*** 6006,6009 ****
---- 6026,6030 ----
-  	  parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), close);
-  	  EOF_Reached = 1;	/* XXX */
-+ 	  parser_state |= PST_NOERROR;  /* avoid redundant error message */
-  	  return (&matched_pair_error);
-  	}
-***************
-*** 6468,6471 ****
---- 6487,6491 ----
-  
-        /* yyparse() has already called yyerror() and reset_parser() */
-+       parser_state |= PST_NOERROR;
-        return (&matched_pair_error);
-      }
-
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 17
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 18
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-019 b/src/patches/bash/bash52-019
deleted file mode 100644
index 165a55e62..000000000
--- a/src/patches/bash/bash52-019
+++ /dev/null
@@ -1,66 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-019
-
-Bug-Reported-by:	Steffen Nurpmeso <steffen@sdaoden.eu>
-Bug-Reference-ID:	<20230116233547.2jFxL%steffen@sdaoden.eu>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2023-01/msg00057.html
-
-Bug-Description:
-
-There are some cases where the shell reaped a background (asynchronous) job
-and would incorrectly try to set the terminal's process group back to the
-shell's. In these cases it never set the terminal process group to that
-jobs's process group initially, so resetting it is incorrect.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2-patched/jobs.c	2022-12-13 12:09:02.000000000 -0500
---- jobs.c	2023-10-26 12:12:10.000000000 -0400
-***************
-*** 3078,3084 ****
-  	 subshell.  Make sure subst.c:command_substitute uses the same
-  	 conditions to determine whether or not it should undo this and
-! 	 give the terminal to pipeline_pgrp. */
-!       
-        if ((flags & JWAIT_NOTERM) == 0 && running_in_background == 0 &&
-  	  (subshell_environment & (SUBSHELL_ASYNC|SUBSHELL_PIPE)) == 0)
-  	give_terminal_to (shell_pgrp, 0);
---- 3036,3046 ----
-  	 subshell.  Make sure subst.c:command_substitute uses the same
-  	 conditions to determine whether or not it should undo this and
-! 	 give the terminal to pipeline_pgrp. We don't give the terminal
-! 	 back to shell_pgrp if an async job in the background exits because
-! 	 we never gave it to that job in the first place. An async job in
-! 	 the foreground is one we started in the background and foregrounded
-! 	 with `fg', and gave it the terminal. */
-        if ((flags & JWAIT_NOTERM) == 0 && running_in_background == 0 &&
-+ 	  (job == NO_JOB || IS_ASYNC (job) == 0 || IS_FOREGROUND (job)) &&
-  	  (subshell_environment & (SUBSHELL_ASYNC|SUBSHELL_PIPE)) == 0)
-  	give_terminal_to (shell_pgrp, 0);
-***************
-*** 3624,3627 ****
---- 3599,3603 ----
-        get_tty_state ();
-        save_stty = shell_tty_info;
-+       jobs[job]->flags &= ~J_ASYNC;	/* no longer async */
-        /* Give the terminal to this job. */
-        if (IS_JOBCONTROL (job))
-
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 18
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 19
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-020 b/src/patches/bash/bash52-020
deleted file mode 100644
index 0e76741e9..000000000
--- a/src/patches/bash/bash52-020
+++ /dev/null
@@ -1,53 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-020
-
-Bug-Reported-by:	Dima Korobskiy <dkroot2@gmail.com>
-Bug-Reference-ID:	<16664c2d-40ec-df33-b932-83db06e39a82@gmail.com>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2023-08/msg00125.html
-
-Bug-Description:
-
-The parser did not allow `time' to appear as the first reserved word in a
-command substitution.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2-patched/parse.y	Tue Dec 13 12:53:21 2022
---- parse.y	Fri Sep  1 10:36:28 2023
-***************
-*** 3151,3154 ****
---- 3151,3155 ----
-      case TIMEOPT:	/* time -p time pipeline */
-      case TIMEIGN:	/* time -p -- ... */
-+     case DOLPAREN:
-        return 1;
-      default:
-*** ../bash-5.2-patched/y.tab.c	Tue Dec 13 12:53:21 2022
---- y.tab.c	Fri Sep  1 10:36:44 2023
-***************
-*** 5466,5469 ****
---- 5466,5470 ----
-      case TIMEOPT:	/* time -p time pipeline */
-      case TIMEIGN:	/* time -p -- ... */
-+     case DOLPAREN:
-        return 1;
-      default:
-
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 19
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 20
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-021 b/src/patches/bash/bash52-021
deleted file mode 100644
index ade1fac01..000000000
--- a/src/patches/bash/bash52-021
+++ /dev/null
@@ -1,61 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-021
-
-Bug-Reported-by:	Norbert Lange <nolange79@gmail.com>
-Bug-Reference-ID:	<CADYdroPZFdVZSL6KkhqkAPgKKopbsLQVSm7_TvLCwadL2=UAWw@mail.gmail.com>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2022-12/msg00046.html
-
-Bug-Description:
-
-There is an off-by-one error that causes command substitutions to fail when
-they appear in a word expansion inside a here-document.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2-patched/subst.c	2022-12-13 12:08:58.000000000 -0500
---- subst.c	2022-12-14 09:09:53.000000000 -0500
-***************
-*** 1694,1698 ****
-  	  CHECK_STRING_OVERRUN (i, si, slen, c);
-  
-! 	  tlen = si - i - 1;
-  	  RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 4, result_size, 64);
-  	  result[result_index++] = c;
---- 1699,1703 ----
-  	  CHECK_STRING_OVERRUN (i, si, slen, c);
-  
-! 	  tlen = si - i - 2;
-  	  RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 4, result_size, 64);
-  	  result[result_index++] = c;
-***************
-*** 1714,1718 ****
-  	  CHECK_STRING_OVERRUN (i, si, slen, c);
-  
-! 	  tlen = si - i - 1;
-  	  RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 4, result_size, 64);
-  	  result[result_index++] = c;
---- 1719,1723 ----
-  	  CHECK_STRING_OVERRUN (i, si, slen, c);
-  
-! 	  tlen = si - i - 2;
-  	  RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 4, result_size, 64);
-  	  result[result_index++] = c;
-
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 20
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 21
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-022 b/src/patches/bash/bash52-022
deleted file mode 100644
index 557d38706..000000000
--- a/src/patches/bash/bash52-022
+++ /dev/null
@@ -1,53 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-022
-
-Bug-Reported-by:	srobertson@peratonlabs.com
-Bug-Reference-ID:
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2022-09/msg00049.html
-
-Bug-Description:
-
-It's possible for readline to try to zero out a line that's not null-
-terminated, leading to a memory fault.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2-patched/lib/readline/display.c	2022-04-05 10:47:31.000000000 -0400
---- lib/readline/display.c	2022-12-13 13:11:22.000000000 -0500
-***************
-*** 2684,2692 ****
-  
-    if (visible_line)
-!     {
-!       temp = visible_line;
-!       while (*temp)
-! 	*temp++ = '\0';
-!     }
-    rl_on_new_line ();
-    forced_display++;
---- 2735,2740 ----
-  
-    if (visible_line)
-!     memset (visible_line, 0, line_size);
-! 
-    rl_on_new_line ();
-    forced_display++;
-
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 21
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 22
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-023 b/src/patches/bash/bash52-023
deleted file mode 100644
index 07ba4ae43..000000000
--- a/src/patches/bash/bash52-023
+++ /dev/null
@@ -1,64 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-023
-
-Bug-Reported-by:	Emanuele Torre <torreemanuele6@gmail.com>
-Bug-Reference-ID:	<20230206140824.1710288-1-torreemanuele6@gmail.com>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2023-02/msg00045.html
-
-Bug-Description:
-
-Running `local -' multiple times in a shell function would overwrite the
-original saved set of options.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2-patched/builtins/declare.def	2023-01-04 20:40:28.000000000 -0500
---- builtins/declare.def	2023-02-08 15:36:49.000000000 -0500
-***************
-*** 421,429 ****
-        if (local_var && variable_context && STREQ (name, "-"))
-  	{
-  	  var = make_local_variable ("-", 0);
-! 	  FREE (value_cell (var));		/* just in case */
-! 	  value = get_current_options ();
-! 	  var_setvalue (var, value);
-! 	  VSETATTR (var, att_invisible);
-  	  NEXT_VARIABLE ();
-  	}
---- 421,437 ----
-        if (local_var && variable_context && STREQ (name, "-"))
-  	{
-+ 	  int o;
-+ 
-+ 	  o = localvar_inherit;
-+ 	  localvar_inherit = 0;
-  	  var = make_local_variable ("-", 0);
-! 	  localvar_inherit = o;
-! 
-! 	  if (value_cell (var) == NULL)		/* no duplicate instances */
-! 	    {
-! 	      value = get_current_options ();
-! 	      var_setvalue (var, value);
-! 	      VSETATTR (var, att_invisible);
-! 	    }
-  	  NEXT_VARIABLE ();
-  	}
-
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 22
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 23
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-024 b/src/patches/bash/bash52-024
deleted file mode 100644
index 8cc49e878..000000000
--- a/src/patches/bash/bash52-024
+++ /dev/null
@@ -1,88 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-024
-
-Bug-Reported-by:	Marco <maroloccio@gmail.com>
-Bug-Reference-ID:	<eaf9af76-c4ed-8b61-c517-22ed980529d3@gmail.com>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2023-02/msg00044.html
-
-Bug-Description:
-
-Fix bug where associative array compound assignment would not expand tildes
-in values.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-20230105/arrayfunc.c	Thu Jan  5 14:23:28 2023
---- arrayfunc.c	Wed Feb  8 16:27:48 2023
-***************
-*** 651,655 ****
-  	}	      
-  
-!       aval = expand_subscript_string (v, 0);
-        if (aval == 0)
-  	{
---- 651,655 ----
-  	}	      
-  
-!       aval = expand_assignment_string_to_string (v, 0);
-        if (aval == 0)
-  	{
-***************
-*** 843,847 ****
-        if (assoc_p (var))
-  	{
-! 	  val = expand_subscript_string (val, 0);
-  	  if (val == 0)
-  	    {
---- 843,847 ----
-        if (assoc_p (var))
-  	{
-! 	  val = expand_assignment_string_to_string (val, 0);
-  	  if (val == 0)
-  	    {
-***************
-*** 1031,1035 ****
-    nword[i++] = w[ind++];
-  
-!   t = expand_subscript_string (w+ind, 0);
-    s = (t && strchr (t, CTLESC)) ? quote_escapes (t) : t;
-    value = sh_single_quote (s ? s : "");
---- 1031,1035 ----
-    nword[i++] = w[ind++];
-  
-!   t = expand_assignment_string_to_string (w+ind, 0);
-    s = (t && strchr (t, CTLESC)) ? quote_escapes (t) : t;
-    value = sh_single_quote (s ? s : "");
-*** ../bash-20230201/subst.c	Mon Jan 30 16:19:46 2023
---- subst.c	Mon Feb  6 16:25:22 2023
-***************
-*** 10803,10807 ****
---- 10803,10811 ----
-    ret = (char *)NULL;
-  
-+ #if 0
-    td.flags = W_NOPROCSUB|W_NOTILDE|W_NOSPLIT2;	/* XXX - W_NOCOMSUB? */
-+ #else
-+   td.flags = W_NOPROCSUB|W_NOSPLIT2;	/* XXX - W_NOCOMSUB? */
-+ #endif
-    td.word = savestring (string);		/* in case it's freed on error */
-  
-
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 23
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 24
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-025 b/src/patches/bash/bash52-025
deleted file mode 100644
index 4e293f9d3..000000000
--- a/src/patches/bash/bash52-025
+++ /dev/null
@@ -1,46 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-025
-
-Bug-Reported-by:	Andrew Neff <andrew.neff@visionsystemsinc.com>
-Bug-Reference-ID:	<SA1P110MB1357F68AFD51BB225019EFF48D2B9@SA1P110MB1357.NAMP110.PROD.OUTLOOK.COM>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2022-10/msg00100.html
-
-Bug-Description:
-
-Make sure a subshell checks for and handles any terminating signals before
-exiting (which might have arrived after the command completed) so the parent
-and any EXIT trap will see the correct value for $?.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2.9/execute_cmd.c	2022-11-02 10:36:54.000000000 -0400
---- execute_cmd.c	2022-10-27 16:52:55.000000000 -0400
-***************
-*** 1726,1729 ****
---- 1726,1732 ----
-  						     : EXECUTION_SUCCESS;
-  
-+   /* Check for terminating signals before we return to our caller, which we
-+      expect to exit immediately anyway. */
-+   CHECK_TERMSIG;
-  
-    /* If we were explicitly placed in a subshell with (), we need
-
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 24
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 25
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-026 b/src/patches/bash/bash52-026
deleted file mode 100644
index bd0f5d0d2..000000000
--- a/src/patches/bash/bash52-026
+++ /dev/null
@@ -1,48 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-026
-
-Bug-Reported-by:	Stefan Klinger <readline-gnu.org@stefan-klinger.de>
-Bug-Reference-ID:
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-readline/2023-08/msg00018.html
-
-Bug-Description:
-
-The custom color prefix that readline uses to color possible completions
-must have a leading `.'.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2-patched/lib/readline/colors.c	2021-12-08 11:38:25.000000000 -0500
---- lib/readline/colors.c	2023-08-28 16:40:04.000000000 -0400
-***************
-*** 74,78 ****
-  static void restore_default_color (void);
-  
-! #define RL_COLOR_PREFIX_EXTENSION	"readline-colored-completion-prefix"
-  
-  COLOR_EXT_TYPE *_rl_color_ext_list = 0;
---- 74,78 ----
-  static void restore_default_color (void);
-  
-! #define RL_COLOR_PREFIX_EXTENSION	".readline-colored-completion-prefix"
-  
-  COLOR_EXT_TYPE *_rl_color_ext_list = 0;
-
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 25
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 26
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-027 b/src/patches/bash/bash52-027
deleted file mode 100644
index 9f18676f8..000000000
--- a/src/patches/bash/bash52-027
+++ /dev/null
@@ -1,63 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-027
-
-Bug-Reported-by:	Emanuel Haupt <ehaupt@FreeBSD.org>
-Bug-Reference-ID:	<20221001123841.27e1bfb3bf3ed58ab32ea2b5@FreeBSD.org>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2022-10/msg00000.html
-
-Bug-Description:
-
-The configure test for the presence of strtoimax(3) is inverted.
-
-Patch (apply with `patch -p0'):
-
-
-*** ../bash-5.2-patched/m4/strtoimax.m4	Mon Apr 11 16:31:52 2022
---- m4/strtoimax.m4	Tue Apr  9 11:12:36 2024
-***************
-*** 30,34 ****
-  ])
-  AC_MSG_RESULT($bash_cv_func_strtoimax)
-! if test $bash_cv_func_strtoimax = yes; then
-  AC_LIBOBJ(strtoimax)
-  fi
---- 30,34 ----
-  ])
-  AC_MSG_RESULT($bash_cv_func_strtoimax)
-! if test $bash_cv_func_strtoimax = no; then
-  AC_LIBOBJ(strtoimax)
-  fi
-*** ..//bash-5.2-patched/configure	Fri Sep 23 10:13:22 2022
---- configure	Tue Apr  9 11:13:21 2024
-***************
-*** 20444,20448 ****
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_strtoimax" >&5
-  printf "%s\n" "$bash_cv_func_strtoimax" >&6; }
-! if test $bash_cv_func_strtoimax = yes; then
-  case " $LIBOBJS " in
-    *" strtoimax.$ac_objext "* ) ;;
---- 20444,20448 ----
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_strtoimax" >&5
-  printf "%s\n" "$bash_cv_func_strtoimax" >&6; }
-! if test $bash_cv_func_strtoimax = no; then
-  case " $LIBOBJS " in
-    *" strtoimax.$ac_objext "* ) ;;
-
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 26
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 27
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-028 b/src/patches/bash/bash52-028
deleted file mode 100644
index 806bdc5ee..000000000
--- a/src/patches/bash/bash52-028
+++ /dev/null
@@ -1,49 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-028
-
-Bug-Reported-by:	Mark March <march@systempad.cloud>
-Bug-Reference-ID:	<834896722.6304071.1718744118467@mail.yahoo.com>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2024-06/msg00122.html
-
-Bug-Description:
-
-A DEBUG trap in an asynchronous process can steal the controlling terminal
-away from the calling shell, causing it to exit.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-20240609/trap.c	Fri May  3 12:12:38 2024
---- trap.c	Wed Jun 26 10:41:40 2024
-***************
-*** 1217,1221 ****
-        restore_pgrp_pipe (save_pipe);
-  #  endif
-!       if (pipeline_pgrp > 0 && ((subshell_environment & (SUBSHELL_ASYNC|SUBSHELL_PIPE)) == 0))
-  	give_terminal_to (pipeline_pgrp, 1);
-  
---- 1217,1223 ----
-        restore_pgrp_pipe (save_pipe);
-  #  endif
-!       /* If the trap command gave the terminal to another process group,
-! 	 restore it. XXX - check running_in_background? */
-!       if (job_control && pipeline_pgrp > 0 && ((subshell_environment & (SUBSHELL_ASYNC|SUBSHELL_PIPE)) == 0))
-  	give_terminal_to (pipeline_pgrp, 1);
-  
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 27
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 28
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-029 b/src/patches/bash/bash52-029
deleted file mode 100644
index 7c816eaa2..000000000
--- a/src/patches/bash/bash52-029
+++ /dev/null
@@ -1,137 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-029
-
-Bug-Reported-by:	Grisha Levit <grishalevit@gmail.com>
-Bug-Reference-ID:	<CAMu=Brp9QHvLh8vbY45hRgCVaQUNSnU7n8EVjsWKajT7c99K8Q@mail.gmail.com>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2023-04/msg00072.html
-
-Bug-Description:
-
-There are problems with recovery after parser errors when parsing compound
-assignments. For instance, the `local' builtin reports an error but never
-cleans up the function context.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-20230427/parse.y	Fri Apr 14 11:50:29 2023
---- parse.y	Mon May  1 16:25:14 2023
-***************
-*** 6471,6478 ****
-      {
-        set_exit_status (EXECUTION_FAILURE);
-        if (interactive_shell == 0 && posixly_correct)
-  	jump_to_top_level (FORCE_EOF);
-        else
-! 	jump_to_top_level (DISCARD);
-      }
-  
---- 6471,6483 ----
-      {
-        set_exit_status (EXECUTION_FAILURE);
-+       current_token = '\n';	/* XXX */
-        if (interactive_shell == 0 && posixly_correct)
-  	jump_to_top_level (FORCE_EOF);
-        else
-! 	{
-! 	  if (executing && parse_and_execute_level == 0)
-! 	    top_level_cleanup ();
-! 	  jump_to_top_level (DISCARD);
-! 	}
-      }
-  
-***************
-*** 6538,6546 ****
-      {
-        set_exit_status (EXECUTION_FAILURE);
-!       last_read_token = '\n';	/* XXX */
-        if (interactive_shell == 0 && posixly_correct)
-  	jump_to_top_level (FORCE_EOF);
-        else
-! 	jump_to_top_level (DISCARD);
-      }
-  
---- 6543,6555 ----
-      {
-        set_exit_status (EXECUTION_FAILURE);
-!       last_read_token = current_token = '\n';	/* XXX */
-        if (interactive_shell == 0 && posixly_correct)
-  	jump_to_top_level (FORCE_EOF);
-        else
-! 	{
-! 	  if (executing && parse_and_execute_level == 0)
-! 	    top_level_cleanup ();
-! 	  jump_to_top_level (DISCARD);
-! 	}
-      }
-  
-
-*** ../bash-20230427/y.tab.c	Tue Jul 30 15:19:31 2024
---- y.tab.c	Tue Jul 30 15:20:21 2024
-***************
-*** 8786,8793 ****
-      {
-        set_exit_status (EXECUTION_FAILURE);
-        if (interactive_shell == 0 && posixly_correct)
-  	jump_to_top_level (FORCE_EOF);
-        else
-! 	jump_to_top_level (DISCARD);
-      }
-  
---- 8786,8798 ----
-      {
-        set_exit_status (EXECUTION_FAILURE);
-+       current_token = '\n';	/* XXX */
-        if (interactive_shell == 0 && posixly_correct)
-  	jump_to_top_level (FORCE_EOF);
-        else
-! 	{
-! 	  if (executing && parse_and_execute_level == 0)
-! 	    top_level_cleanup ();
-! 	  jump_to_top_level (DISCARD);
-! 	}
-      }
-  
-***************
-*** 8853,8861 ****
-      {
-        set_exit_status (EXECUTION_FAILURE);
-!       last_read_token = '\n';	/* XXX */
-        if (interactive_shell == 0 && posixly_correct)
-  	jump_to_top_level (FORCE_EOF);
-        else
-! 	jump_to_top_level (DISCARD);
-      }
-  
---- 8858,8870 ----
-      {
-        set_exit_status (EXECUTION_FAILURE);
-!       last_read_token = current_token = '\n';	/* XXX */
-        if (interactive_shell == 0 && posixly_correct)
-  	jump_to_top_level (FORCE_EOF);
-        else
-! 	{
-! 	  if (executing && parse_and_execute_level == 0)
-! 	    top_level_cleanup ();
-! 	  jump_to_top_level (DISCARD);
-! 	}
-      }
-  
-
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 28
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 29
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-030 b/src/patches/bash/bash52-030
deleted file mode 100644
index 20b8f244c..000000000
--- a/src/patches/bash/bash52-030
+++ /dev/null
@@ -1,130 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-030
-
-Bug-Reported-by:	Steven Pelley <stevenpelley@gmail.com>
-Bug-Reference-ID:	<CAGOYURh6CKaE-D0Z8puP-tQknavCQNRHo02vpvgMQqaTG3_cRw@mail.gmail.com>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2024-01/msg00104.html
-
-Bug-Description:
-
-`wait -n' can fail to return some jobs if they exit due to signals the shell
-does not report to the user.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2-patched/jobs.c	Thu Nov  9 14:59:14 2023
---- jobs.c	Tue Jul 30 15:27:44 2024
-***************
-*** 4275,4279 ****
-  		((DEADJOB (job) && IS_FOREGROUND (job) == 0) || STOPPED (job)))
-  	    continue;
-! 	  
-  	  /* If job control is disabled, don't print the status messages.
-  	     Mark dead jobs as notified so that they get cleaned up.  If
---- 4288,4312 ----
-  		((DEADJOB (job) && IS_FOREGROUND (job) == 0) || STOPPED (job)))
-  	    continue;
-! 
-! 	  /* Do the same thing and don't print anything or mark as notified
-! 	     for the signals we're not going to report on. This is the opposite
-! 	     of the first two cases under case JDEAD below. */
-! 	  else if (interactive_shell == 0 && DEADJOB (job) && IS_FOREGROUND (job) == 0 &&
-! 		WIFSIGNALED (s) && (termsig == SIGINT
-! #if defined (DONT_REPORT_SIGTERM)
-! 		|| termsig == SIGTERM
-! #endif
-! #if defined (DONT_REPORT_SIGPIPE)
-! 		|| termsig == SIGPIPE
-! #endif
-! 		|| signal_is_trapped (termsig)))
-! 	    continue;
-! 
-! 	  /* hang onto the status if the shell is running -c command */
-! 	  else if (startup_state == 2 && subshell_environment == 0 &&
-! 		WIFSIGNALED (s) == 0 &&
-! 		((DEADJOB (job) && IS_FOREGROUND (job) == 0) || STOPPED (job)))
-! 	    continue;
-! 
-  	  /* If job control is disabled, don't print the status messages.
-  	     Mark dead jobs as notified so that they get cleaned up.  If
-***************
-*** 4298,4302 ****
-  	  /* Print info on jobs that are running in the background,
-  	     and on foreground jobs that were killed by anything
-! 	     except SIGINT (and possibly SIGPIPE). */
-  	  switch (JOBSTATE (job))
-  	    {
---- 4331,4335 ----
-  	  /* Print info on jobs that are running in the background,
-  	     and on foreground jobs that were killed by anything
-! 	     except SIGINT (and possibly SIGTERM and SIGPIPE). */
-  	  switch (JOBSTATE (job))
-  	    {
-***************
-*** 4318,4321 ****
---- 4351,4355 ----
-  	      else if (IS_FOREGROUND (job))
-  		{
-+ 		  /* foreground jobs, interactive and non-interactive shells */
-  #if !defined (DONT_REPORT_SIGPIPE)
-  		  if (termsig && WIFSIGNALED (s) && termsig != SIGINT)
-***************
-*** 4331,4337 ****
-  		      fprintf (stderr, "\n");
-  		    }
-  		}
-! 	      else if (job_control)	/* XXX job control test added */
-  		{
-  		  if (dir == 0)
-  		    dir = current_working_directory ();
---- 4365,4375 ----
-  		      fprintf (stderr, "\n");
-  		    }
-+ 		  /* foreground jobs that exit cleanly */
-+ 		  jobs[job]->flags |= J_NOTIFIED;
-  		}
-! 	      else if (job_control)
-  		{
-+ 		  /* background jobs with job control, interactive and
-+ 		     non-interactive shells */
-  		  if (dir == 0)
-  		    dir = current_working_directory ();
-***************
-*** 4342,4346 ****
-  		}
-  
-! 	      jobs[job]->flags |= J_NOTIFIED;
-  	      break;
-  
---- 4380,4391 ----
-  		}
-  
-! 	      /* Interactive shells without job control enabled are handled
-! 		 above. */
-! 	      /* XXX - this is a catch-all in case we missed a state */
-! 	      else
-! {
-! internal_debug("notify_of_job_status: catch-all setting J_NOTIFIED on job %d (%d), startup state = %d", job, jobs[job]->flags, startup_state);
-! 		jobs[job]->flags |= J_NOTIFIED;
-! }
-  	      break;
-  
-
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 29
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 30
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-031 b/src/patches/bash/bash52-031
deleted file mode 100644
index 0210bb278..000000000
--- a/src/patches/bash/bash52-031
+++ /dev/null
@@ -1,46 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-031
-
-Bug-Reported-by:	Grisha Levit <grishalevit@gmail.com>
-Bug-Reference-ID:	<CAMu=BrrD52xxF7C9Ke1fosAurHq1kz82t7FcHsrPBw9CbAst6A@mail.gmail.com>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2023-06/msg00045.html
-
-Bug-Description:
-
-There is a memory leak in the code that implements the optimized $(<file)
-expansion for some code paths.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2-patched/builtins/evalstring.c	Tue Dec 13 12:53:21 2022
---- builtins/evalstring.c	Tue Nov 28 17:25:39 2023
-***************
-*** 763,766 ****
---- 773,779 ----
-    if (fnp)
-      *fnp = fn;
-+   else
-+     free (fn);
-+ 
-    return fd;
-  }
-
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 30
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 31
-  
-  #endif /* _PATCHLEVEL_H_ */
-
diff --git a/src/patches/bash/bash52-032 b/src/patches/bash/bash52-032
deleted file mode 100644
index 618a37fca..000000000
--- a/src/patches/bash/bash52-032
+++ /dev/null
@@ -1,51 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-032
-
-Bug-Reported-by:	Albert Akchurin <ackbeat@gmail.com>
-Bug-Reference-ID:	Mon, 11 Dec 2023 20:41:58 +0600
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2023-12/msg00047.html
-
-Bug-Description:
-
-Patch (apply with `patch -p0'):
-
-When printing functions containing coprocesses, the displayed coproc command
-has the word COPROC inserted unconditionally, resulting in function bodies
-that cannot be re-read as input.
-
-*** ../bash-5.2-patched/print_cmd.c	Mon Aug 21 16:09:44 2023
---- print_cmd.c	Mon Dec 11 15:34:30 2023
-***************
-*** 357,361 ****
-  
-  	case cm_coproc:
-! 	  cprintf ("coproc %s ", command->value.Coproc->name);
-  	  skip_this_indent++;
-  	  make_command_string_internal (command->value.Coproc->command);
---- 357,363 ----
-  
-  	case cm_coproc:
-! 	  cprintf ("coproc ");
-! 	  if (command->value.Coproc->command->type != cm_simple)
-! 	    cprintf ("%s ", command->value.Coproc->name);
-  	  skip_this_indent++;
-  	  make_command_string_internal (command->value.Coproc->command);
-
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 31
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 32
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-033 b/src/patches/bash/bash52-033
deleted file mode 100644
index ca29aea93..000000000
--- a/src/patches/bash/bash52-033
+++ /dev/null
@@ -1,80 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-033
-
-Bug-Reported-by:	Florian Weimer <fweimer@redhat.com>
-Bug-Reference-ID:	<87leasmvoo.fsf@oldenburg.str.redhat.com>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2023-11/msg00104.html
-
-Bug-Description:
-
-A typo in the autoconf test for strtold causes false negatives for strtold
-being available and working when compiled with gcc-14.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2-patched/configure.ac	Fri Aug 11 14:52:31 2023
---- configure.ac	Tue Nov 21 12:00:25 2023
-***************
-*** 899,903 ****
-  		[AC_LANG_PROGRAM(
-  		[[#include <stdlib.h>]],
-! 		[[long double r; char *foo, bar; r = strtold(foo, &bar);]]
-  	)],
-  	[bash_cv_strtold_broken=no],[bash_cv_strtold_broken=yes])
---- 900,904 ----
-  		[AC_LANG_PROGRAM(
-  		[[#include <stdlib.h>]],
-! 		[[long double r; char *foo, *bar; r = strtold(foo, &bar);]]
-  	)],
-  	[bash_cv_strtold_broken=no],[bash_cv_strtold_broken=yes])
-
-*** ../bash-5.2-patched/configure	Fri Aug 18 16:27:53 2023
---- configure	Tue Nov 21 12:00:30 2023
-***************
-*** 15923,15927 ****
-  main (void)
-  {
-! long double r; char *foo, bar; r = strtold(foo, &bar);
-  
-    ;
---- 15932,15936 ----
-  main (void)
-  {
-! long double r; char *foo, *bar; r = strtold(foo, &bar);
-  
-    ;
-
-*** ../bash-5.2-patched/builtins/printf.def	Fri Jun 24 10:09:50 2022
---- builtins/printf.def	Tue Aug 13 10:36:55 2024
-***************
-*** 710,714 ****
-  
-  		    p = getfloatmax ();
-! 		    f = mklong (start, "L", 1);
-  		    PF (f, p);
-  		  }
---- 710,714 ----
-  
-  		    p = getfloatmax ();
-! 		    f = mklong (start, FLOATMAX_CONV, USE_LONG_DOUBLE);
-  		    PF (f, p);
-  		  }
-
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 32
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 33
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-034 b/src/patches/bash/bash52-034
deleted file mode 100644
index 17c0d669d..000000000
--- a/src/patches/bash/bash52-034
+++ /dev/null
@@ -1,143 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-034
-
-Bug-Reported-by:	Wiley Young <wyeth2485@gmail.com>
-Bug-Reference-ID:	<CAGnujaPrPV9hgbvdtG=fOs+L1zVGEahT9d3Aw0e1y3Qj8D8stw@mail.gmail.com>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2023-05/msg00146.html
-
-Bug-Description:
-
-If we parse a compound assignment during an alias expansion, it's possible
-to have the current input string popped out from underneath the parse. In
-this case, we should not restore the input we were using when we began to
-parse the compound assignment.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2-patched/parse.y	Fri May 26 16:57:03 2023
---- parse.y	Thu Jun  1 16:30:19 2023
-***************
-*** 6854,6860 ****
-  {
-    WORD_LIST *wl, *rl;
-!   int tok, orig_line_number, assignok;
-    sh_parser_state_t ps;
-    char *ret;
-  
-    orig_line_number = line_number;
---- 6858,6865 ----
-  {
-    WORD_LIST *wl, *rl;
-!   int tok, orig_line_number, assignok, ea, restore_pushed_strings;
-    sh_parser_state_t ps;
-    char *ret;
-+   STRING_SAVER *ss;
-  
-    orig_line_number = line_number;
-***************
-*** 6879,6882 ****
---- 6884,6893 ----
-    esacs_needed_count = expecting_in_token = 0;
-  
-+   /* We're not pushing any new input here, we're reading from the current input
-+      source. If that's an alias, we have to be prepared for the alias to get
-+      popped out from underneath us. */
-+   ss = (ea = expanding_alias ()) ? pushed_string_list : (STRING_SAVER *)NULL;
-+   restore_pushed_strings = 0;
-+     
-    while ((tok = read_token (READ)) != ')')
-      {
-***************
-*** 6902,6906 ****
---- 6913,6926 ----
-      }
-  
-+   /* Check whether or not an alias got popped out from underneath us and
-+      fix up after restore_parser_state. */
-+   if (ea && ss && ss != pushed_string_list)
-+     {
-+       restore_pushed_strings = 1;
-+       ss = pushed_string_list;
-+     }
-    restore_parser_state (&ps);
-+   if (restore_pushed_strings)
-+     pushed_string_list = ss;
-  
-    if (wl == &parse_string_error)
-*** ../bash-5.2-patched/y.tab.c	Mon Sep 23 10:02:46 2024
---- y.tab.c	Mon Sep 23 10:02:49 2024
-***************
-*** 8804,8812 ****
-       int *retlenp;
-  {
-    WORD_LIST *wl, *rl;
-!   int tok, orig_line_number, assignok;
-    sh_parser_state_t ps;
-    char *ret;
-  
-    orig_line_number = line_number;
-    save_parser_state (&ps);
---- 8804,8813 ----
-       int *retlenp;
-  {
-    WORD_LIST *wl, *rl;
-!   int tok, orig_line_number, assignok, ea, restore_pushed_strings;
-    sh_parser_state_t ps;
-    char *ret;
-+   STRING_SAVER *ss;
-  
-    orig_line_number = line_number;
-    save_parser_state (&ps);
-***************
-*** 8829,8834 ****
---- 8830,8841 ----
-  
-    esacs_needed_count = expecting_in_token = 0;
-  
-+   /* We're not pushing any new input here, we're reading from the current input
-+      source. If that's an alias, we have to be prepared for the alias to get
-+      popped out from underneath us. */
-+   ss = (ea = expanding_alias ()) ? pushed_string_list : (STRING_SAVER *)NULL;
-+   restore_pushed_strings = 0;
-+     
-    while ((tok = read_token (READ)) != ')')
-      {
-        if (tok == '\n')			/* Allow newlines in compound assignments */
-***************
-*** 8852,8858 ****
---- 8859,8874 ----
-        wl = make_word_list (yylval.word, wl);
-      }
-  
-+   /* Check whether or not an alias got popped out from underneath us and
-+      fix up after restore_parser_state. */
-+   if (ea && ss && ss != pushed_string_list)
-+     {
-+       restore_pushed_strings = 1;
-+       ss = pushed_string_list;
-+     }
-    restore_parser_state (&ps);
-+   if (restore_pushed_strings)
-+     pushed_string_list = ss;
-  
-    if (wl == &parse_string_error)
-      {
-
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 33
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 34
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-035 b/src/patches/bash/bash52-035
deleted file mode 100644
index 5b1fb3767..000000000
--- a/src/patches/bash/bash52-035
+++ /dev/null
@@ -1,129 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-035
-
-Bug-Reported-by:	Henry Bent <henry.r.bent@gmail.com>
-Bug-Reference-ID:	<CAEdTPBdD0WOW2n0-y-XyZ_VwhbiG-oS3bXfGkOPPG617rGH-Ww@mail.gmail.com>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2022-11/msg00044.html
-
-Bug-Description:
-
-There are systems that supply one of select or pselect, but not both.
-
-Patch (apply with `patch -p0'):
-
-https://lists.gnu.org/archive/html/bug-bash/2022-11/msg00058.html
-
-*** ../bash/bash-5.2-patched/lib/readline/input.c	2022-04-08 15:43:24.000000000 -0400
---- lib/readline/input.c	2022-11-16 09:10:41.000000000 -0500
-***************
-*** 152,156 ****
---- 152,158 ----
-  int _rl_timeout_init (void);
-  int _rl_timeout_sigalrm_handler (void);
-+ #if defined (RL_TIMEOUT_USE_SELECT)
-  int _rl_timeout_select (int, fd_set *, fd_set *, fd_set *, const struct timeval *, const sigset_t *);
-+ #endif
-  
-  static void _rl_timeout_handle (void);
-***************
-*** 249,253 ****
-    int chars_avail, k;
-    char input;
-! #if defined(HAVE_SELECT)
-    fd_set readfds, exceptfds;
-    struct timeval timeout;
---- 251,255 ----
-    int chars_avail, k;
-    char input;
-! #if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
-    fd_set readfds, exceptfds;
-    struct timeval timeout;
-***************
-*** 806,810 ****
-    unsigned char c;
-    int fd;
-! #if defined (HAVE_PSELECT)
-    sigset_t empty_set;
-    fd_set readfds;
---- 808,812 ----
-    unsigned char c;
-    int fd;
-! #if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
-    sigset_t empty_set;
-    fd_set readfds;
-*** ../bash-5.2-patched/lib/sh/input_avail.c	2021-05-24 11:16:33.000000000 -0400
---- lib/sh/input_avail.c	2022-11-16 09:12:48.000000000 -0500
-***************
-*** 34,40 ****
-  #endif /* HAVE_SYS_FILE_H */
-  
-! #if defined (HAVE_PSELECT)
-! #  include <signal.h>
-! #endif
-  
-  #if defined (HAVE_UNISTD_H)
---- 34,38 ----
-  #endif /* HAVE_SYS_FILE_H */
-  
-! #include <signal.h>
-  
-  #if defined (HAVE_UNISTD_H)
-***************
-*** 108,115 ****
-  {
-    int result, chars_avail;
-- #if defined(HAVE_SELECT)
--   fd_set readfds, exceptfds;
-- #endif
-  #if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
-    sigset_t set, oset;
-  #endif
---- 106,111 ----
-  {
-    int result, chars_avail;
-  #if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
-+   fd_set readfds, exceptfds;
-    sigset_t set, oset;
-  #endif
-***************
-*** 122,132 ****
-    chars_avail = 0;
-  
-! #if defined (HAVE_SELECT)
-    FD_ZERO (&readfds);
-    FD_ZERO (&exceptfds);
-    FD_SET (fd, &readfds);
-    FD_SET (fd, &exceptfds);
-- #endif
-- #if defined (HAVE_SELECT) || defined (HAVE_PSELECT)
-    sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &set);
-  #  ifdef SIGCHLD
---- 115,123 ----
-    chars_avail = 0;
-  
-! #if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
-    FD_ZERO (&readfds);
-    FD_ZERO (&exceptfds);
-    FD_SET (fd, &readfds);
-    FD_SET (fd, &exceptfds);
-    sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &set);
-  #  ifdef SIGCHLD
-
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 34
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 35
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-036 b/src/patches/bash/bash52-036
deleted file mode 100644
index 4aef5f2b5..000000000
--- a/src/patches/bash/bash52-036
+++ /dev/null
@@ -1,237 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-036
-
-Bug-Reported-by:        Grisha Levit <grishalevit@gmail.com>
-Bug-Reference-ID:       <CAMu=Brrv5qKY6LPfw8PxqNXNO8rNsZo0Fb=BcFb-uHObWPqnrw@mail.gmail.com>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2023-04/msg00082.html
-
-Bug-Description:
-
-When readline is accumulating bytes until it reads a complete multibyte
-character, reading a byte that makes the multibyte character invalid can
-result in discarding the bytes in the partial character.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2-patched/lib/readline/text.c	Mon May  1 09:37:52 2023
---- lib/readline/text.c	Mon May 29 12:22:29 2023
-***************
-*** 86,90 ****
-  rl_insert_text (const char *string)
-  {
-!   register int i, l;
-  
-    l = (string && *string) ? strlen (string) : 0;
---- 86,91 ----
-  rl_insert_text (const char *string)
-  {
-!   register int i;
-!   size_t l;
-  
-    l = (string && *string) ? strlen (string) : 0;
-***************
-*** 705,709 ****
-  /* Insert the character C at the current location, moving point forward.
-     If C introduces a multibyte sequence, we read the whole sequence and
-!    then insert the multibyte char into the line buffer. */
-  int
-  _rl_insert_char (int count, int c)
---- 706,714 ----
-  /* Insert the character C at the current location, moving point forward.
-     If C introduces a multibyte sequence, we read the whole sequence and
-!    then insert the multibyte char into the line buffer.
-!    If C == 0, we immediately insert any pending partial multibyte character,
-!    assuming that we have read a character that doesn't map to self-insert.
-!    This doesn't completely handle characters that are part of a multibyte
-!    character but map to editing functions. */
-  int
-  _rl_insert_char (int count, int c)
-***************
-*** 719,727 ****
-  #endif
-  
-    if (count <= 0)
-      return 0;
-  
-! #if defined (HANDLE_MULTIBYTE)
-!   if (MB_CUR_MAX == 1 || rl_byte_oriented)
-      {
-        incoming[0] = c;
---- 724,749 ----
-  #endif
-  
-+ #if !defined (HANDLE_MULTIBYTE)
-    if (count <= 0)
-      return 0;
-+ #else
-+   if (count < 0)
-+     return 0;
-+   if (count == 0)
-+     {
-+       if (pending_bytes_length == 0)
-+ 	return 0;
-+       if (stored_count <= 0)
-+ 	stored_count = count;
-+       else
-+ 	count = stored_count;
-  
-!       memcpy (incoming, pending_bytes, pending_bytes_length);
-!       incoming[pending_bytes_length] = '\0';
-!       incoming_length = pending_bytes_length;
-!       pending_bytes_length = 0;
-!       memset (&ps, 0, sizeof (mbstate_t));
-!     }
-!   else if (MB_CUR_MAX == 1 || rl_byte_oriented)
-      {
-        incoming[0] = c;
-***************
-*** 731,734 ****
---- 753,759 ----
-    else if (_rl_utf8locale && (c & 0x80) == 0)
-      {
-+       if (pending_bytes_length)
-+ 	_rl_insert_char (0, 0);
-+ 
-        incoming[0] = c;
-        incoming[1] = '\0';
-***************
-*** 765,769 ****
-  	  incoming_length = 1;
-  	  pending_bytes_length--;
-! 	  memmove (pending_bytes, pending_bytes + 1, pending_bytes_length);
-  	  /* Clear the state of the byte sequence, because in this case the
-  	     effect of mbstate is undefined. */
---- 790,795 ----
-  	  incoming_length = 1;
-  	  pending_bytes_length--;
-! 	  if (pending_bytes_length)
-! 	    memmove (pending_bytes, pending_bytes + 1, pending_bytes_length);
-  	  /* Clear the state of the byte sequence, because in this case the
-  	     effect of mbstate is undefined. */
-***************
-*** 828,832 ****
---- 854,862 ----
-        xfree (string);
-  
-+ #if defined (HANDLE_MULTIBYTE)
-+       return (pending_bytes_length != 0);
-+ #else
-        return 0;
-+ #endif
-      }
-  
-***************
-*** 861,864 ****
---- 891,896 ----
-        incoming_length = 0;
-        stored_count = 0;
-+ 
-+       return (pending_bytes_length != 0);
-  #else /* !HANDLE_MULTIBYTE */
-        char str[TEXT_COUNT_MAX+1];
-***************
-*** 874,880 ****
-  	  count -= decreaser;
-  	}
-- #endif /* !HANDLE_MULTIBYTE */
-  
-        return 0;
-      }
-  
---- 906,912 ----
-  	  count -= decreaser;
-  	}
-  
-        return 0;
-+ #endif /* !HANDLE_MULTIBYTE */
-      }
-  
-***************
-*** 904,910 ****
-        stored_count = 0;
-      }
-! #endif
-! 
-    return 0;
-  }
-  
---- 936,944 ----
-        stored_count = 0;
-      }
-!   
-!   return (pending_bytes_length != 0);
-! #else
-    return 0;
-+ #endif
-  }
-  
-***************
-*** 984,987 ****
---- 1018,1026 ----
-      }
-  
-+   /* If we didn't insert n and there are pending bytes, we need to insert
-+      them if _rl_insert_char didn't do that on its own. */
-+   if (r == 1 && rl_insert_mode == RL_IM_INSERT)
-+     r = _rl_insert_char (0, 0);		/* flush partial multibyte char */
-+ 
-    if (n != (unsigned short)-2)		/* -2 = sentinel value for having inserted N */
-      {
-***************
-*** 1055,1058 ****
---- 1094,1099 ----
-  rl_quoted_insert (int count, int key)
-  {
-+   int r;
-+ 
-    /* Let's see...should the callback interface futz with signal handling? */
-  #if defined (HANDLE_SIGNALS)
-***************
-*** 1073,1085 ****
-    if (count < 0)
-      {
--       int r;
-- 
-        do
-  	r = _rl_insert_next (1);
-        while (r == 0 && ++count < 0);
--       return r;
-      }
-  
-!   return _rl_insert_next (count);
-  }
-  
---- 1114,1128 ----
-    if (count < 0)
-      {
-        do
-  	r = _rl_insert_next (1);
-        while (r == 0 && ++count < 0);
-      }
-+   else
-+     r = _rl_insert_next (count);
-  
-!   if (r == 1)
-!     _rl_insert_char (0, 0);	/* insert partial multibyte character */
-! 
-!   return r;
-  }
-  
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 35
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 36
-  
-  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash52-037 b/src/patches/bash/bash52-037
deleted file mode 100644
index 99c9bede4..000000000
--- a/src/patches/bash/bash52-037
+++ /dev/null
@@ -1,71 +0,0 @@
-			     BASH PATCH REPORT
-			     =================
-
-Bash-Release:	5.2
-Patch-ID:	bash52-037
-
-Bug-Reported-by:        Martin Castillo <castilma@uni-bremen.de>
-Bug-Reference-ID:       <2d42153b-cf65-caba-dff1-cd3bc6268c7e@uni-bremen.de>
-Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-readline/2023-01/msg00000.html
-
-Bug-Description:
-
-Fix the case where text to be completed from the line buffer (quoted) is
-compared to the common prefix of the possible matches (unquoted) and the
-quoting makes the former appear to be longer than the latter. Readline
-assumes the match doesn't add any characters to the word and doesn't display
-multiple matches.
-
-Patch (apply with `patch -p0'):
-
-*** ../bash-5.2-patched/lib/readline/complete.c	Tue Apr  5 10:47:06 2022
---- lib/readline/complete.c	Sat Jan  7 14:19:45 2023
-***************
-*** 2032,2038 ****
-    text = rl_copy_text (start, end);
-    matches = gen_completion_matches (text, start, end, our_func, found_quote, quote_char);
-    /* nontrivial_lcd is set if the common prefix adds something to the word
-       being completed. */
-!   nontrivial_lcd = matches && compare_match (text, matches[0]) != 0;
-    if (what_to_do == '!' || what_to_do == '@')
-      tlen = strlen (text);
---- 2038,2060 ----
-    text = rl_copy_text (start, end);
-    matches = gen_completion_matches (text, start, end, our_func, found_quote, quote_char);
-+   /* If TEXT contains quote characters, it will be dequoted as part of
-+      generating the matches, and the matches will not contain any quote
-+      characters. We need to dequote TEXT before performing the comparison.
-+      Since compare_match performs the dequoting, and we only want to do it
-+      once, we don't call compare_matches after dequoting TEXT; we call
-+      strcmp directly. */
-    /* nontrivial_lcd is set if the common prefix adds something to the word
-       being completed. */
-!   if (rl_filename_completion_desired && rl_filename_quoting_desired &&
-!       rl_completion_found_quote && rl_filename_dequoting_function)
-!     {
-!       char *t;
-!       t = (*rl_filename_dequoting_function) (text, rl_completion_quote_character);
-!       xfree (text);
-!       text = t;
-!       nontrivial_lcd = matches && strcmp (text, matches[0]) != 0;
-!     }
-!   else
-!     nontrivial_lcd = matches && strcmp (text, matches[0]) != 0;
-    if (what_to_do == '!' || what_to_do == '@')
-      tlen = strlen (text);
-
-*** ../bash-5.2/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
---- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 36
-  
-  #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
-     looks for to find the patch level (for the sccs version string). */
-  
-! #define PATCHLEVEL 37
-  
-  #endif /* _PATCHLEVEL_H_ */
