* [PATCH 1/2] bash: Update to version 5.3 with patch level 0
@ 2025-07-23 19:02 Adolf Belka
2025-07-23 19:02 ` [PATCH 2/2] readline: Update to version 8.3 with patch version 1 Adolf Belka
0 siblings, 1 reply; 2+ messages in thread
From: Adolf Belka @ 2025-07-23 19:02 UTC (permalink / raw)
To: development; +Cc: Adolf Belka
- Update from version 5.2 with patch level 37 to 5.3 with patch level 0
- Update rootfile
- remove bash-4.0-paths-1 patch file as this is not included in the current tarball.
- remove all the 5.2 version patches.
- Modify lfs so that the patch version can be added and then use this in the main part
of the lfs to automatically select the correct patches to merge.
- Successful build of bash-5.3 requires readline-8.3 to be installed
- Changelog
5.3
New Features in Bash
a. When checking whether a script file argument is a binary file, check the
first two lines of a script if the first line begins with `#!'.
b. Bash does a better job of preserving user-supplied quotes around a word
completion, instead of requoting it.
c. Bash reports the starting line number in an error message about an
unterminated compound command like `if' without a `fi'.
d. Implement the POSIX requirement that running the `jobs' builtin removes
jobs from the jobs list.
f. Call bash signal handlers while executing programmable completion commands,
instead of readline's.
g. Print an error message if a regular expression used with [[ fails to compile.
h. The `umask' builtin now has additional features for full POSIX conformance.
i. `type -a -P' reports both hashed pathnames and the result of a $PATH search.
j. `trap' has a new -P option that prints the trap action associated with each
signal argument.
k. The `command' builtin preceding a declaration builtin (e.g., `declare')
preserves the special asisgnment statement parsing for the declaration
builtin. This is a new POSIX requirement.
l. `printf' uses the `alternate form' for %q and %Q to force single quoting.
m. `printf' now interprets %ls (%S) and %lc (%C) as referring to wide strings
and characters, respectively, when in a multibyte locale.
n. The shell can be compiled with a different default value for the
patsub_replacement option.
o. Check for window size changes during trap commands, `bind -x' commands,
and programmable completion.
p. Treat a NULL value for $PATH as equivalent to ".".
p. New loadable builtins: kv, strptime
q. GLOBSORT: new variable to specify how to sort the results of pathname
expansion (name, size, blocks, mtime, atime, ctime, numeric, none) in
ascending or descending order.
r. `compgen' has a new option: -V varname. If supplied, it stores the generated
completions into VARNAME instead of printing them on stdout.
s. New form of command substitution: ${ command; } or ${|command;} to capture
the output of COMMAND without forking a child process and using pipes.
t. array_expand_once: new shopt option, replaces assoc_expand_once
u. complete/compopt new option: fullquote; sets rl_full_quoting_desired so all
possible completions are quoted as if they were filenames.
v. Command timing now allows precisions up to 6 digits instead of 3 in
$TIMEFORMAT.
w. BASH_MONOSECONDS: new dynamic variable that returns the value of the
system's monotonic clock, if one is available.
x. BASH_TRAPSIG: new variable, set to the numeric signal number of the trap
being executed while it's running.
y. The checkwinsize option can be used in subshell commands started from
interactive shells.
z. In posix mode, the test command < and > binary primaries compare strings
using the current locale.
aa. bind -x allows new key binding syntax: separate the key sequence and the
command string with whitespace, but require the command string to be
double-quoted if this is used. This allows different quoting options for
the command string.
bb. Print commands bound to key sequences using `bind -x' with the new key
binding syntax it allows.
cc. `read' has a new `-E' option to use readline but with the default bash
completion (including programmable completion).
dd. New bindable readline command name: `bash-vi-complete'.
ee. New test builtin behavior when parsing a parenthesized subexpression and
test was given more than 4 arguments: scan forward for a closing paren and
call posixtest() if there are 4 or fewer arguments between the parentheses.
Added for compatibility with coreutils test, dependent on the shell
compatibility level. Such expressions remain ambiguous.
ff. MULTIPLE_COPROCS is now enabled by default.
gg. The `bind' builtin interprets additional non-option arguments after -p or
-P as bindable command names and restricts output to the bindings for
those names.
hh. Bash now uses the login shell for $BASH if the shell is named `su' or `-su'.
ii. Bash now prints job notifications if an interactive shell is running a trap,
even though the shell is not interactive at that moment.
jj. Programmable completion allows a new compspec loaded after a completion
function returns 124 to be used in more cases.
kk. ./source has a new -p PATH option, which makes it use the PATH argument
instead of $PATH to look for the file.
ll. Documentation has been significantly updated.
mm. `wait -n' can now return terminated process substitutions, jobs about
which the user has already been notified (like `wait' without options),
nn. `wait -n' removes jobs from the jobs table or list of terminated children
when in posix mode.
oo. Changed the `wait' builtin behavior regarding process substitutions to
match the documentation.
pp. There is a new `bash_source_fullpath' shopt option, which makes bash put
full pathnames into BASH_SOURCE, and a way to set a default value for it
at configure time.
qq. Posix mode now forces job notifications to occur when the new edition of
POSIX specifies (since it now specifies them).
rr. Interactive shells don't print job notifications while sourcing scripts.
ss. The parser prints more information about the command it's trying to parse
when it encounters EOF before completing the command.
tt. Posix mode no longer requires function names to be valid shell identifiers.
uu. If `exit' is run in a trap and not supplied an exit status argument, it
uses the value of $? from before the trap only if it's run at the trap's
`top level' and would cause the trap to end (that is, not in a subshell).
This is from Posix interp 1602.
vv. There is a new `fltexpr' loadable builtin to perform floating-point
arithmetic similarly to `let'.
ww. The `install-strip' and `strip' Makefile targets now deal with cross-
compiling.
Signed-off-by: Adolf Belka <adolf.belka@ipfire.org>
---
config/rootfiles/common/bash | 9 +
lfs/bash | 17 +-
src/patches/bash/bash-4.0-paths-1.patch | 11 -
src/patches/bash/bash52-001 | 46 -
src/patches/bash/bash52-002 | 46 -
src/patches/bash/bash52-003 | 89 -
src/patches/bash/bash52-004 | 70 -
src/patches/bash/bash52-005 | 47 -
src/patches/bash/bash52-006 | 293 --
src/patches/bash/bash52-007 | 262 --
src/patches/bash/bash52-008 | 58 -
src/patches/bash/bash52-009 | 43 -
src/patches/bash/bash52-010 | 71 -
src/patches/bash/bash52-011 | 45 -
src/patches/bash/bash52-012 | 344 ---
src/patches/bash/bash52-013 | 58 -
src/patches/bash/bash52-014 | 119 -
src/patches/bash/bash52-015 | 216 --
src/patches/bash/bash52-016 | 47 -
src/patches/bash/bash52-017 | 47 -
src/patches/bash/bash52-018 | 3643 -----------------------
src/patches/bash/bash52-019 | 66 -
src/patches/bash/bash52-020 | 53 -
src/patches/bash/bash52-021 | 61 -
src/patches/bash/bash52-022 | 53 -
src/patches/bash/bash52-023 | 64 -
src/patches/bash/bash52-024 | 88 -
src/patches/bash/bash52-025 | 46 -
src/patches/bash/bash52-026 | 48 -
src/patches/bash/bash52-027 | 63 -
src/patches/bash/bash52-028 | 49 -
src/patches/bash/bash52-029 | 137 -
src/patches/bash/bash52-030 | 130 -
src/patches/bash/bash52-031 | 46 -
src/patches/bash/bash52-032 | 51 -
src/patches/bash/bash52-033 | 80 -
src/patches/bash/bash52-034 | 143 -
src/patches/bash/bash52-035 | 129 -
src/patches/bash/bash52-036 | 237 --
src/patches/bash/bash52-037 | 71 -
40 files changed, 18 insertions(+), 7178 deletions(-)
delete mode 100644 src/patches/bash/bash-4.0-paths-1.patch
delete mode 100644 src/patches/bash/bash52-001
delete mode 100644 src/patches/bash/bash52-002
delete mode 100644 src/patches/bash/bash52-003
delete mode 100644 src/patches/bash/bash52-004
delete mode 100644 src/patches/bash/bash52-005
delete mode 100644 src/patches/bash/bash52-006
delete mode 100644 src/patches/bash/bash52-007
delete mode 100644 src/patches/bash/bash52-008
delete mode 100644 src/patches/bash/bash52-009
delete mode 100644 src/patches/bash/bash52-010
delete mode 100644 src/patches/bash/bash52-011
delete mode 100644 src/patches/bash/bash52-012
delete mode 100644 src/patches/bash/bash52-013
delete mode 100644 src/patches/bash/bash52-014
delete mode 100644 src/patches/bash/bash52-015
delete mode 100644 src/patches/bash/bash52-016
delete mode 100644 src/patches/bash/bash52-017
delete mode 100644 src/patches/bash/bash52-018
delete mode 100644 src/patches/bash/bash52-019
delete mode 100644 src/patches/bash/bash52-020
delete mode 100644 src/patches/bash/bash52-021
delete mode 100644 src/patches/bash/bash52-022
delete mode 100644 src/patches/bash/bash52-023
delete mode 100644 src/patches/bash/bash52-024
delete mode 100644 src/patches/bash/bash52-025
delete mode 100644 src/patches/bash/bash52-026
delete mode 100644 src/patches/bash/bash52-027
delete mode 100644 src/patches/bash/bash52-028
delete mode 100644 src/patches/bash/bash52-029
delete mode 100644 src/patches/bash/bash52-030
delete mode 100644 src/patches/bash/bash52-031
delete mode 100644 src/patches/bash/bash52-032
delete mode 100644 src/patches/bash/bash52-033
delete mode 100644 src/patches/bash/bash52-034
delete mode 100644 src/patches/bash/bash52-035
delete mode 100644 src/patches/bash/bash52-036
delete mode 100644 src/patches/bash/bash52-037
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_ */
--
2.50.1
^ permalink raw reply [flat|nested] 2+ messages in thread
* [PATCH 2/2] readline: Update to version 8.3 with patch version 1
2025-07-23 19:02 [PATCH 1/2] bash: Update to version 5.3 with patch level 0 Adolf Belka
@ 2025-07-23 19:02 ` Adolf Belka
0 siblings, 0 replies; 2+ messages in thread
From: Adolf Belka @ 2025-07-23 19:02 UTC (permalink / raw)
To: development; +Cc: Adolf Belka
- Update from version 8.2 with patch version 13 to 8.3 with patch version 1
- Update of rootfile
- Changelog
8.3
New Features in Readline
a. Output a newline if there is no prompt and readline reads an empty line.
b. The history library falls back to stdio when writing the history list if
mmap fails.
c. New bindable variable `search-ignore-case', causes readline to perform
case-insensitive incremental and non-incremental history searches.
d. rl_full_quoting_desired: new application-settable variable, causes all
completions to be quoted as if they were filenames.
e. rl_macro_display_hook: new application-settable function pointer, used if
the application wants to print macro values itself instead of letting
readline do it
f. rl_reparse_colors: new application-callable function, reparses $LS_COLORS
(presumably after the user changes it)
g. rl_completion_rewrite_hook: new application-settable function pointer,
called to modify the word being completed before comparing it against
pathnames from the file system.
h. execute-named-command: a new bindable command that reads the name of a
readline command from the standard input and executes it. Bound to M-x
in emacs mode by default.
i. Incremental and non-incremental searches now allow ^V/^Q (or, in the former
case, anything bound to quoted-insert) to quote characters in the search
string.
j. Documentation has been significantly updated.
k. New `force-meta-prefix' bindable variable, which forces the use of ESC as
the meta prefix when using "\M-" in key bindings instead of overloading
convert-meta.
l. The default value for `readline-colored-completion-prefix' no longer has a
leading `.'; the original report was based on a misunderstanding.
m. There is a new bindable command, `export-completions', which writes the
possible completions for a word to the standard output in a defined format.
n. Readline can reset its idea of the screen dimensions when executing after
a SIGCONT.
Signed-off-by: Adolf Belka <adolf.belka@ipfire.org>
---
config/rootfiles/common/readline | 7 +-
lfs/readline | 13 +-
src/patches/readline/readline82-001 | 42 -----
src/patches/readline/readline82-002 | 48 ------
src/patches/readline/readline82-003 | 43 -----
src/patches/readline/readline82-004 | 65 --------
src/patches/readline/readline82-005 | 50 ------
src/patches/readline/readline82-006 | 99 ------------
src/patches/readline/readline82-007 | 48 ------
src/patches/readline/readline82-008 | 77 ---------
src/patches/readline/readline82-009 | 73 ---------
src/patches/readline/readline82-010 | 67 --------
src/patches/readline/readline82-011 | 75 ---------
src/patches/readline/readline82-012 | 93 -----------
src/patches/readline/readline82-013 | 234 ----------------------------
src/patches/readline/readline83-001 | 64 ++++++++
16 files changed, 77 insertions(+), 1021 deletions(-)
delete mode 100644 src/patches/readline/readline82-001
delete mode 100644 src/patches/readline/readline82-002
delete mode 100644 src/patches/readline/readline82-003
delete mode 100644 src/patches/readline/readline82-004
delete mode 100644 src/patches/readline/readline82-005
delete mode 100644 src/patches/readline/readline82-006
delete mode 100644 src/patches/readline/readline82-007
delete mode 100644 src/patches/readline/readline82-008
delete mode 100644 src/patches/readline/readline82-009
delete mode 100644 src/patches/readline/readline82-010
delete mode 100644 src/patches/readline/readline82-011
delete mode 100644 src/patches/readline/readline82-012
delete mode 100644 src/patches/readline/readline82-013
create mode 100644 src/patches/readline/readline83-001
diff --git a/config/rootfiles/common/readline b/config/rootfiles/common/readline
index 834a7046f..ecc3424fa 100644
--- a/config/rootfiles/common/readline
+++ b/config/rootfiles/common/readline
@@ -9,16 +9,19 @@
#usr/include/readline/tilde.h
#usr/lib/libhistory.so
usr/lib/libhistory.so.8
-usr/lib/libhistory.so.8.2
+usr/lib/libhistory.so.8.3
#usr/lib/libreadline.so
usr/lib/libreadline.so.8
-usr/lib/libreadline.so.8.2
+usr/lib/libreadline.so.8.3
#usr/lib/pkgconfig/history.pc
#usr/lib/pkgconfig/readline.pc
#usr/share/doc/readline
#usr/share/doc/readline/CHANGES
#usr/share/doc/readline/INSTALL
#usr/share/doc/readline/README
+#usr/share/doc/readline/history.html
+#usr/share/doc/readline/readline.html
+#usr/share/doc/readline/rluserman.html
#usr/share/info/history.info
#usr/share/info/readline.info
#usr/share/info/rluserman.info
diff --git a/lfs/readline b/lfs/readline
index cfe4cbf18..3546de678 100644
--- a/lfs/readline
+++ b/lfs/readline
@@ -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 = 8.2
+VER = 8.3
+PATCHVER = 1
# https://ftp.gnu.org/gnu/readline/
THISAPP = readline-$(VER)
@@ -41,7 +42,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_BLAKE2 = 7974322b9c092a756a79e537df08e8532f8e0fcb598f77732e28287c33ebec9e9837ed88b43334c310892d56a871b423903f0f564def2fbe700a1004f2ae7b18
+$(DL_FILE)_BLAKE2 = 45d6fe7e34c56d309102a94aa776a7f5284201e844450e14ff818df9fa84a72154bdca70f11828c94954b080cbbe4666fa0b00ffa8460118ec8f3ea551b73dad
install : $(TARGET)
@@ -72,9 +73,11 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
@$(PREBUILD)
@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
- for i in $$(seq 1 13); do \
- cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/readline/readline82-$$(printf "%03d" "$${i}") || exit 1; \
+ifneq "$(PATCHVER)" "0"
+ for i in $$(seq 1 $(PATCHVER)); do \
+ cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/readline/readline$(subst .,,$(VER))-$$(printf "%03d" "$${i}") || exit 1; \
done
+endif
cd $(DIR_APP) && ./configure \
--prefix=/usr \
diff --git a/src/patches/readline/readline82-001 b/src/patches/readline/readline82-001
deleted file mode 100644
index a13ff4285..000000000
--- a/src/patches/readline/readline82-001
+++ /dev/null
@@ -1,42 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-001
-
-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 a readline application with an invalid locale specification for
-LC_ALL/LANG/LC_CTYPE can cause it crash on the first call to readline.
-
-Patch (apply with `patch -p0'):
-
-*** ../readline-8.2-patched/nls.c 2022-08-15 09:38:51.000000000 -0400
---- 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;
-
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 0
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 1
diff --git a/src/patches/readline/readline82-002 b/src/patches/readline/readline82-002
deleted file mode 100644
index 453b9b85d..000000000
--- a/src/patches/readline/readline82-002
+++ /dev/null
@@ -1,48 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-002
-
-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'):
-
-*** ../readline-8.2-patched/display.c 2022-04-05 10:47:31.000000000 -0400
---- 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++;
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 1
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 2
diff --git a/src/patches/readline/readline82-003 b/src/patches/readline/readline82-003
deleted file mode 100644
index e9fe2c0d0..000000000
--- a/src/patches/readline/readline82-003
+++ /dev/null
@@ -1,43 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-003
-
-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:
-
-Patch (apply with `patch -p0'):
-
-The custom color prefix that readline uses to color possible completions
-must have a leading `.'.
-
-*** ../readline-8.2-patched/colors.c 2021-12-08 11:38:25.000000000 -0500
---- 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;
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 2
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 3
diff --git a/src/patches/readline/readline82-004 b/src/patches/readline/readline82-004
deleted file mode 100644
index d60c662ec..000000000
--- a/src/patches/readline/readline82-004
+++ /dev/null
@@ -1,65 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-004
-
-Bug-Reported-by: Henry Bent <henry.r.bent@gmail.com>
-Bug-Reference-ID:
-Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2022-11/msg00044.html
-
-Bug-Description:
-
-Patch (apply with `patch -p0'):
-
-There are systems that supply one of select or pselect, but not both.
-
-*** ../readline-8.2-patched/input.c 2022-04-08 15:43:24.000000000 -0400
---- input.c 2022-11-28 09:41:08.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;
---- 815,819 ----
- unsigned char c;
- int fd;
-! #if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
- sigset_t empty_set;
- fd_set readfds;
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 3
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 4
diff --git a/src/patches/readline/readline82-005 b/src/patches/readline/readline82-005
deleted file mode 100644
index 57f507f61..000000000
--- a/src/patches/readline/readline82-005
+++ /dev/null
@@ -1,50 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-005
-
-Bug-Reported-by: Simon Marchi <simon.marchi@polymtl.ca>
-Bug-Reference-ID:
-Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2022-09/msg00005.html
-
-Bug-Description:
-
-If an application is using readline in callback mode, and a signal arrives
-after readline checks for it in rl_callback_read_char() but before it
-restores the application's signal handlers, it won't get processed until the
-next time the application calls rl_callback_read_char(). Readline needs to
-check for and resend any pending signals after restoring the application's
-signal handlers.
-
-Patch (apply with `patch -p0'):
-
-*** ../readline-8.2-patched/callback.c 2022-04-29 12:02:56.000000000 -0400
---- callback.c 2022-10-11 10:59:06.000000000 -0400
-***************
-*** 116,120 ****
- do { \
- if (rl_persistent_signal_handlers == 0) \
-! rl_clear_signals (); \
- return; \
- } while (0)
---- 116,123 ----
- do { \
- if (rl_persistent_signal_handlers == 0) \
-! { \
-! rl_clear_signals (); \
-! if (_rl_caught_signal) _rl_signal_handler (_rl_caught_signal); \
-! } \
- return; \
- } while (0)
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 4
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 5
diff --git a/src/patches/readline/readline82-006 b/src/patches/readline/readline82-006
deleted file mode 100644
index 9e315e889..000000000
--- a/src/patches/readline/readline82-006
+++ /dev/null
@@ -1,99 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-006
-
-Bug-Reported-by: Tom de Vries <tdevries@suse.de>
-Bug-Reference-ID:
-Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2022-09/msg00001.html
-
-Bug-Description:
-
-This is a variant of the same issue as the one fixed by patch 5. In this
-case, the signal arrives and is pending before readline calls rl_getc().
-When this happens, the pending signal will be handled by the loop, but may
-alter or destroy some state that the callback uses. Readline needs to treat
-this case the same way it would if a signal interrupts pselect/select, so
-compound operations like searches and reading numeric arguments get cleaned
-up properly.
-
-Patch (apply with `patch -p0'):
-
-*** ../readline-8.2-patched/input.c 2022-12-22 16:15:48.000000000 -0500
---- input.c 2023-01-10 11:53:45.000000000 -0500
-***************
-*** 812,816 ****
- rl_getc (FILE *stream)
- {
-! int result;
- unsigned char c;
- int fd;
---- 812,816 ----
- rl_getc (FILE *stream)
- {
-! int result, ostate, osig;
- unsigned char c;
- int fd;
-***************
-*** 823,828 ****
---- 823,842 ----
- while (1)
- {
-+ osig = _rl_caught_signal;
-+ ostate = rl_readline_state;
-+
- RL_CHECK_SIGNALS ();
-
-+ #if defined (READLINE_CALLBACKS)
-+ /* Do signal handling post-processing here, but just in callback mode
-+ for right now because the signal cleanup can change some of the
-+ callback state, and we need to either let the application have a
-+ chance to react or abort some current operation that gets cleaned
-+ up by rl_callback_sigcleanup(). If not, we'll just run through the
-+ loop again. */
-+ if (osig != 0 && (ostate & RL_STATE_CALLBACK))
-+ goto postproc_signal;
-+ #endif
-+
- /* We know at this point that _rl_caught_signal == 0 */
-
-***************
-*** 888,891 ****
---- 902,908 ----
-
- handle_error:
-+ osig = _rl_caught_signal;
-+ ostate = rl_readline_state;
-+
- /* If the error that we received was EINTR, then try again,
- this is simply an interrupted system call to read (). We allow
-***************
-*** 928,933 ****
---- 945,959 ----
- #endif /* SIGALRM */
-
-+ postproc_signal:
-+ /* POSIX says read(2)/pselect(2)/select(2) don't return EINTR for any
-+ reason other than being interrupted by a signal, so we can safely
-+ call the application's signal event hook. */
- if (rl_signal_event_hook)
- (*rl_signal_event_hook) ();
-+ #if defined (READLINE_CALLBACKS)
-+ else if (osig == SIGINT && (ostate & RL_STATE_CALLBACK) && (ostate & (RL_STATE_ISEARCH|RL_STATE_NSEARCH|RL_STATE_NUMERICARG)))
-+ /* just these cases for now */
-+ _rl_abort_internal ();
-+ #endif
- }
- }
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 5
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 6
diff --git a/src/patches/readline/readline82-007 b/src/patches/readline/readline82-007
deleted file mode 100644
index b0394e0bb..000000000
--- a/src/patches/readline/readline82-007
+++ /dev/null
@@ -1,48 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-007
-
-Bug-Reported-by: Kevin Pulo <kev@pulo.com.au>
-Bug-Reference-ID:
-Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2022-11/msg00002.html
-
-Bug-Description:
-
-If readline is called with no prompt, it should display a newline if return
-is typed on an empty line. It should still suppress the final newline if
-return is typed on the last (empty) line of a multi-line command.
-
-Patch (apply with `patch -p0'):
-
-*** ../readline-8.2-patched/display.c 2022-04-05 10:47:31.000000000 -0400
---- display.c 2022-12-13 13:11:22.000000000 -0500
-***************
-*** 3342,3348 ****
- &last_face[_rl_screenwidth - 1 + woff], 1);
- }
-! _rl_vis_botlin = 0;
-! if (botline_length > 0 || _rl_last_c_pos > 0)
- rl_crlf ();
- fflush (rl_outstream);
- rl_display_fixed++;
---- 3394,3400 ----
- &last_face[_rl_screenwidth - 1 + woff], 1);
- }
-! if ((_rl_vis_botlin == 0 && botline_length == 0) || botline_length > 0 || _rl_last_c_pos > 0)
- rl_crlf ();
-+ _rl_vis_botlin = 0;
- fflush (rl_outstream);
- rl_display_fixed++;
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 6
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 7
diff --git a/src/patches/readline/readline82-008 b/src/patches/readline/readline82-008
deleted file mode 100644
index 2d8b368f1..000000000
--- a/src/patches/readline/readline82-008
+++ /dev/null
@@ -1,77 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-008
-
-Bug-Reported-by:
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-Add missing prototypes for several function declarations.
-
-Patch (apply with `patch -p0'):
-
-*** ../readline-8.2-patched/text.c Wed Oct 27 11:03:59 2021
---- text.c Thu Nov 16 16:24:58 2023
-***************
-*** 1765,1770 ****
- #if defined (READLINE_CALLBACKS)
- static int
-! _rl_char_search_callback (data)
-! _rl_callback_generic_arg *data;
- {
- _rl_callback_func = 0;
---- 1765,1769 ----
- #if defined (READLINE_CALLBACKS)
- static int
-! _rl_char_search_callback (_rl_callback_generic_arg *data)
- {
- _rl_callback_func = 0;
-*** ../readline-8.2-patched/bind.c Wed Feb 9 11:02:22 2022
---- bind.c Thu Nov 16 16:25:17 2023
-***************
-*** 1168,1174 ****
-
- static int
-! parse_comparison_op (s, indp)
-! const char *s;
-! int *indp;
- {
- int i, peekc, op;
---- 1168,1172 ----
-
- static int
-! parse_comparison_op (const char *s, int *indp)
- {
- int i, peekc, op;
-*** ../readline-8.2-patched/rltty.c Fri Feb 18 11:14:22 2022
---- rltty.c Thu Nov 16 16:25:36 2023
-***************
-*** 81,86 ****
- to get the tty settings. */
- static void
-! set_winsize (tty)
-! int tty;
- {
- #if defined (TIOCGWINSZ)
---- 81,85 ----
- to get the tty settings. */
- static void
-! set_winsize (int tty)
- {
- #if defined (TIOCGWINSZ)
-
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 7
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 8
diff --git a/src/patches/readline/readline82-009 b/src/patches/readline/readline82-009
deleted file mode 100644
index b3acc4150..000000000
--- a/src/patches/readline/readline82-009
+++ /dev/null
@@ -1,73 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-009
-
-Bug-Reported-by: Stefan H. Holek <stefan@epy.co.at>
-Bug-Reference-ID: <50F8DA45-B7F3-4DE1-AB94-19AE42649CDC@epy.co.at>
-Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2022-10/msg00021.html
-
-Bug-Description:
-
-Fix issue where the directory name portion of the word to be completed (the
-part that is passed to opendir()) requires both tilde expansion and dequoting.
-Readline only performed tilde expansion in this case, so filename completion
-would fail.
-
-Patch (apply with `patch -p0'):
-
-*** ../readline-8.2-patched/complete.c 2022-04-05 10:47:06.000000000 -0400
---- complete.c 2022-10-26 15:08:51.000000000 -0400
-***************
-*** 2527,2531 ****
- xfree (dirname);
- dirname = temp;
-! tilde_dirname = 1;
- }
-
---- 2527,2532 ----
- xfree (dirname);
- dirname = temp;
-! if (*dirname != '~')
-! tilde_dirname = 1; /* indicate successful tilde expansion */
- }
-
-***************
-*** 2546,2554 ****
- users_dirname = savestring (dirname);
- }
-! else if (tilde_dirname == 0 && rl_completion_found_quote && rl_filename_dequoting_function)
- {
-! /* delete single and double quotes */
- xfree (dirname);
-! dirname = savestring (users_dirname);
- }
- directory = opendir (dirname);
---- 2547,2560 ----
- users_dirname = savestring (dirname);
- }
-! else if (rl_completion_found_quote && rl_filename_dequoting_function)
- {
-! /* We already ran users_dirname through the dequoting function.
-! If tilde_dirname == 1, we successfully performed tilde expansion
-! on dirname. Now we need to reconcile those results. We either
-! just copy the already-dequoted users_dirname or tilde expand it
-! if we tilde-expanded dirname. */
-! temp = tilde_dirname ? tilde_expand (users_dirname) : savestring (users_dirname);
- xfree (dirname);
-! dirname = temp;
- }
- directory = opendir (dirname);
-
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 8
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 9
diff --git a/src/patches/readline/readline82-010 b/src/patches/readline/readline82-010
deleted file mode 100644
index d2ca5eae2..000000000
--- a/src/patches/readline/readline82-010
+++ /dev/null
@@ -1,67 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-010
-
-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'):
-
-*** ../readline-8.2-patched/complete.c Tue Apr 5 10:47:06 2022
---- 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);
-
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 9
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 10
diff --git a/src/patches/readline/readline82-011 b/src/patches/readline/readline82-011
deleted file mode 100644
index 3ad7a8ffd..000000000
--- a/src/patches/readline/readline82-011
+++ /dev/null
@@ -1,75 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-011
-
-Bug-Reported-by: Grisha Levit <grishalevit@gmail.com>
-Bug-Reference-ID: <CAMu=BrqWa_iNkiEwchpFmtrUhFrAanOO8pjy7VCKqRKUvqdsbw@mail.gmail.com>
-Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2024-02/msg00075.html
-
-Bug-Description:
-
-Patch (apply with `patch -p0'):
-
-Some systems (e.g., macOS) send signals early on in interactive initialization,
-so readline should retry a failed open of the init file.
-
-*** ../readline-8.2-patched/bind.c Wed Feb 9 11:02:22 2022
---- bind.c Tue Apr 23 15:07:13 2024
-***************
-*** 979,987 ****
- int i, file;
-
-! file = -1;
-! if (((file = open (filename, O_RDONLY, 0666)) < 0) || (fstat (file, &finfo) < 0))
- {
- if (file >= 0)
- close (file);
- return ((char *)NULL);
- }
---- 969,986 ----
- int i, file;
-
-! file = open (filename, O_RDONLY, 0666);
-! /* If the open is interrupted, retry once */
-! if (file < 0 && errno == EINTR)
- {
-+ RL_CHECK_SIGNALS ();
-+ file = open (filename, O_RDONLY, 0666);
-+ }
-+
-+ if ((file < 0) || (fstat (file, &finfo) < 0))
-+ {
-+ i = errno;
- if (file >= 0)
- close (file);
-+ errno = i;
- return ((char *)NULL);
- }
-***************
-*** 992,999 ****
---- 991,1001 ----
- if (file_size != finfo.st_size || file_size + 1 < file_size)
- {
-+ i = errno;
- if (file >= 0)
- close (file);
- #if defined (EFBIG)
- errno = EFBIG;
-+ #else
-+ errno = i;
- #endif
- return ((char *)NULL);
-
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 10
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 11
diff --git a/src/patches/readline/readline82-012 b/src/patches/readline/readline82-012
deleted file mode 100644
index cbcb4cdaf..000000000
--- a/src/patches/readline/readline82-012
+++ /dev/null
@@ -1,93 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-012
-
-Bug-Reported-by: Grisha Levit <grishalevit@gmail.com>
-Bug-Reference-ID: <CAMu=BroaH+41uumYt89FPqt8Fsatj-d6mZzmPV2HZYjtcbvbvw@mail.gmail.com>
-Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2023-11/msg00019.html
-
-Bug-Description:
-
-If a user happens to bind do-lowercase-version to something that isn't a
-capital letter, so _rl_to_lower doesn't change anything and the result is
-still bound to do-lowercase-version, readline can recurse infinitely.
-
-Patch (apply with `patch -p0'):
-
-*** ../readline-8.2-patched/readline.c Thu Aug 11 18:35:37 2022
---- readline.c Fri Feb 2 12:05:36 2024
-***************
-*** 900,905 ****
- /* Special case rl_do_lowercase_version (). */
- if (func == rl_do_lowercase_version)
-! /* Should we do anything special if key == ANYOTHERKEY? */
-! return (_rl_dispatch (_rl_to_lower ((unsigned char)key), map));
-
- rl_executing_keymap = map;
---- 912,926 ----
- /* Special case rl_do_lowercase_version (). */
- if (func == rl_do_lowercase_version)
-! {
-! /* Should we do anything special if key == ANYOTHERKEY? */
-! newkey = _rl_to_lower ((unsigned char)key);
-! if (newkey != key)
-! return (_rl_dispatch (newkey, map));
-! else
-! {
-! rl_ding (); /* gentle failure */
-! return 0;
-! }
-! }
-
- rl_executing_keymap = map;
-***************
-*** 1110,1114 ****
- func = m[ANYOTHERKEY].function;
- if (type == ISFUNC && func == rl_do_lowercase_version)
-! r = _rl_dispatch (_rl_to_lower ((unsigned char)key), map);
- else if (type == ISFUNC)
- {
---- 1131,1139 ----
- func = m[ANYOTHERKEY].function;
- if (type == ISFUNC && func == rl_do_lowercase_version)
-! {
-! int newkey = _rl_to_lower ((unsigned char)key);
-! /* check that there is actually a lowercase version to avoid infinite recursion */
-! r = (newkey != key) ? _rl_dispatch (newkey, map) : 1;
-! }
- else if (type == ISFUNC)
- {
-
-*** ../readline-8.2-patched/isearch.c Thu Aug 11 18:35:37 2022
---- isearch.c Fri Feb 2 12:05:36 2024
-***************
-*** 429,433 ****
- f = cxt->keymap[c].function;
- if (f == rl_do_lowercase_version)
-! f = cxt->keymap[_rl_to_lower (c)].function;
- }
-
---- 431,439 ----
- f = cxt->keymap[c].function;
- if (f == rl_do_lowercase_version)
-! {
-! f = cxt->keymap[_rl_to_lower (c)].function;
-! if (f == rl_do_lowercase_version)
-! f = rl_insert;
-! }
- }
-
-
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 11
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 12
diff --git a/src/patches/readline/readline82-013 b/src/patches/readline/readline82-013
deleted file mode 100644
index cb4164fbe..000000000
--- a/src/patches/readline/readline82-013
+++ /dev/null
@@ -1,234 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-013
-
-Bug-Reported-by: Grisha Levit <grishalevit@gmail.com>
-Bug-Reference-ID: <CAMu=Brrv5qKY6LPfw8PxqNXNO8rNsZo0Fb=BcFb-uHObWPqnrw@mail.gmail.
-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'):
-
-*** ../readline-8.2-patched/text.c Mon May 1 09:37:52 2023
---- 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;
- }
-
-
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 12
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 13
diff --git a/src/patches/readline/readline83-001 b/src/patches/readline/readline83-001
new file mode 100644
index 000000000..007eb879c
--- /dev/null
+++ b/src/patches/readline/readline83-001
@@ -0,0 +1,64 @@
+ READLINE PATCH REPORT
+ =====================
+
+Readline-Release: 8.3
+Patch-ID: readline83-001
+
+Bug-Reported-by: Dmitri A. Sergatskov <dasergatskov@gmail.com>
+Bug-Reference-ID: <CAO+XyQ+ipUzFiXvRrDbTstfm1heZrerjvZGVaC60y=txMgyP+g@mail.gmail.com>
+Bug-Reference-URL:
+
+Bug-Description:
+
+If an application uses readline's event hook, it is called while waiting for
+input. There is a bug in the function that waits for available input that
+causes it not to read that input under certain circumstances, resulting in
+a loop where the event hook continues to be called, but there is no input
+to stop it.
+
+Patch (apply with `patch -p0'):
+
+*** ../readline-8.3/input.c Fri May 2 09:29:05 2025
+--- input.c Tue Jul 8 15:37:13 2025
+***************
+*** 262,266 ****
+ tty = fileno (rl_instream);
+
+! /* Move this up here to give it first shot, but it can't set chars_avail */
+ /* XXX - need rl_chars_available_hook? */
+ if (rl_input_available_hook)
+--- 262,267 ----
+ tty = fileno (rl_instream);
+
+! /* Move this up here to give it first shot, but it can't set chars_avail,
+! so we assume a single character is available. */
+ /* XXX - need rl_chars_available_hook? */
+ if (rl_input_available_hook)
+***************
+*** 269,272 ****
+--- 270,275 ----
+ if (result == 0)
+ result = -1;
++ else
++ chars_avail = 1;
+ }
+
+***************
+*** 286,289 ****
+--- 289,293 ----
+ if (result <= 0)
+ return 0; /* Nothing to read. */
++ result = -1; /* there is something, so check how many chars below */
+ }
+ #endif
+*** ../readline-8.3/patchlevel 2013-11-15 08:11:11.000000000 -0500
+--- patchlevel 2014-03-21 08:28:40.000000000 -0400
+***************
+*** 1,3 ****
+ # Do not edit -- exists only for use by patch
+
+! 0
+--- 1,3 ----
+ # Do not edit -- exists only for use by patch
+
+! 1
--
2.50.1
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2025-07-23 19:02 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-07-23 19:02 [PATCH 1/2] bash: Update to version 5.3 with patch level 0 Adolf Belka
2025-07-23 19:02 ` [PATCH 2/2] readline: Update to version 8.3 with patch version 1 Adolf Belka
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox