This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "IPFire 2.x development tree".
The branch, next has been updated
via 3347f993b67f13aa6776d66ee1819c9558ca202a (commit)
via 56a435a001c4c33e72e4e8b412ba512b4d5fc796 (commit)
via 77b3d64a169130ad4d51a35b54749415687f5c01 (commit)
via ce84ace5bf3b2de70fd437e61ef369e5afd82101 (commit)
from 9a818c0eb4fc801363e319e346876f2abc6a28a9 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 3347f993b67f13aa6776d66ee1819c9558ca202a
Author: Michael Tremer michael.tremer@ipfire.org
Date: Fri Sep 26 12:46:44 2014 +0200
A flaw was found in the way Bash evaluated certain specially crafted
environment variables. An attacker could use this flaw to override
or bypass environment restrictions to execute shell commands.
Certain services and applications allow remote unauthenticated
attackers to provide environment variables, allowing them to exploit
this issue.
bash: Update to 4.3.
Summary of changes:
config/rootfiles/common/bash | 50 ++++
lfs/bash | 37 +--
src/patches/bash-3.2-ssh_source_bash.patch | 17 +-
src/patches/bash-4.0-paths-1.patch | 21 +-
src/patches/bash/bash32-001 | 47 ----
src/patches/bash/bash32-002 | 48 ----
src/patches/bash/bash32-003 | 147 ------------
src/patches/bash/bash32-004 | 96 --------
src/patches/bash/bash32-005 | 223 ------------------
src/patches/bash/bash32-006 | 45 ----
src/patches/bash/bash32-007 | 55 -----
src/patches/bash/bash32-008 | 48 ----
src/patches/bash/bash32-009 | 61 -----
src/patches/bash/bash32-010 | 207 -----------------
src/patches/bash/bash32-011 | 138 -----------
src/patches/bash/bash32-012 | 96 --------
src/patches/bash/bash32-013 | 65 ------
src/patches/bash/bash32-014 | 307 -------------------------
src/patches/bash/bash32-015 | 95 --------
src/patches/bash/bash32-016 | 52 -----
src/patches/bash/bash32-017 | 85 -------
src/patches/bash/bash32-018 | 98 --------
src/patches/bash/bash32-019 | 343 ----------------------------
src/patches/bash/bash32-020 | 183 ---------------
src/patches/bash/bash32-021 | 72 ------
src/patches/bash/bash32-022 | 126 ----------
src/patches/bash/bash32-023 | 51 -----
src/patches/bash/bash32-024 | 77 -------
src/patches/bash/bash32-025 | 79 -------
src/patches/bash/bash32-026 | 82 -------
src/patches/bash/bash32-027 | 85 -------
src/patches/bash/bash32-028 | 60 -----
src/patches/bash/bash32-029 | 52 -----
src/patches/bash/bash32-030 | 50 ----
src/patches/bash/bash32-031 | 62 -----
src/patches/bash/bash32-032 | 47 ----
src/patches/bash/bash32-033 | 88 -------
src/patches/bash/bash32-034 | 74 ------
src/patches/bash/bash32-035 | 159 -------------
src/patches/bash/bash32-036 | 44 ----
src/patches/bash/bash32-037 | 110 ---------
src/patches/bash/bash32-038 | 80 -------
src/patches/bash/bash32-039 | 175 --------------
src/patches/bash/bash32-040 | 47 ----
src/patches/bash/bash32-041 | 154 -------------
src/patches/bash/bash32-042 | 48 ----
src/patches/bash/bash32-043 | 62 -----
src/patches/bash/bash32-044 | 150 ------------
src/patches/bash/bash32-045 | 50 ----
src/patches/bash/bash32-046 | 47 ----
src/patches/bash/bash32-047 | 65 ------
src/patches/bash/bash32-048 | 56 -----
src/patches/bash/bash32-049 | 64 ------
src/patches/bash/bash32-050 | 56 -----
src/patches/bash/bash32-051 | 46 ----
src/patches/bash/bash43-001 | 58 +++++
src/patches/bash/bash43-002 | 62 +++++
src/patches/bash/bash43-003 | 48 ++++
src/patches/bash/bash43-004 | 47 ++++
src/patches/bash/bash43-005 | 63 +++++
src/patches/bash/bash43-006 | 48 ++++
src/patches/bash/bash43-007 | 50 ++++
src/patches/bash/bash43-008 | 188 +++++++++++++++
src/patches/bash/bash43-009 | 64 ++++++
src/patches/bash/bash43-010 | 157 +++++++++++++
src/patches/bash/bash43-011 | 49 ++++
src/patches/bash/bash43-012 | 43 ++++
src/patches/bash/bash43-013 | 66 ++++++
src/patches/bash/bash43-014 | 102 +++++++++
src/patches/bash/bash43-015 | 58 +++++
src/patches/bash/bash43-016 | 132 +++++++++++
src/patches/bash/bash43-017 | 51 +++++
src/patches/bash/bash43-018 | 44 ++++
src/patches/bash/bash43-019 | 84 +++++++
src/patches/bash/bash43-020 | 110 +++++++++
src/patches/bash/bash43-021 | 52 +++++
src/patches/bash/bash43-022 | 56 +++++
src/patches/bash/bash43-023 | 104 +++++++++
src/patches/bash/bash43-024 | 54 +++++
src/patches/bash/{bash32-052 => bash43-025} | 77 ++++---
src/patches/bash/{bash32-053 => bash43-026} | 40 ++--
81 files changed, 1941 insertions(+), 4948 deletions(-)
delete mode 100644 src/patches/bash/bash32-001
delete mode 100644 src/patches/bash/bash32-002
delete mode 100644 src/patches/bash/bash32-003
delete mode 100644 src/patches/bash/bash32-004
delete mode 100644 src/patches/bash/bash32-005
delete mode 100644 src/patches/bash/bash32-006
delete mode 100644 src/patches/bash/bash32-007
delete mode 100644 src/patches/bash/bash32-008
delete mode 100644 src/patches/bash/bash32-009
delete mode 100644 src/patches/bash/bash32-010
delete mode 100644 src/patches/bash/bash32-011
delete mode 100644 src/patches/bash/bash32-012
delete mode 100644 src/patches/bash/bash32-013
delete mode 100644 src/patches/bash/bash32-014
delete mode 100644 src/patches/bash/bash32-015
delete mode 100644 src/patches/bash/bash32-016
delete mode 100644 src/patches/bash/bash32-017
delete mode 100644 src/patches/bash/bash32-018
delete mode 100644 src/patches/bash/bash32-019
delete mode 100644 src/patches/bash/bash32-020
delete mode 100644 src/patches/bash/bash32-021
delete mode 100644 src/patches/bash/bash32-022
delete mode 100644 src/patches/bash/bash32-023
delete mode 100644 src/patches/bash/bash32-024
delete mode 100644 src/patches/bash/bash32-025
delete mode 100644 src/patches/bash/bash32-026
delete mode 100644 src/patches/bash/bash32-027
delete mode 100644 src/patches/bash/bash32-028
delete mode 100644 src/patches/bash/bash32-029
delete mode 100644 src/patches/bash/bash32-030
delete mode 100644 src/patches/bash/bash32-031
delete mode 100644 src/patches/bash/bash32-032
delete mode 100644 src/patches/bash/bash32-033
delete mode 100644 src/patches/bash/bash32-034
delete mode 100644 src/patches/bash/bash32-035
delete mode 100644 src/patches/bash/bash32-036
delete mode 100644 src/patches/bash/bash32-037
delete mode 100644 src/patches/bash/bash32-038
delete mode 100644 src/patches/bash/bash32-039
delete mode 100644 src/patches/bash/bash32-040
delete mode 100644 src/patches/bash/bash32-041
delete mode 100644 src/patches/bash/bash32-042
delete mode 100644 src/patches/bash/bash32-043
delete mode 100644 src/patches/bash/bash32-044
delete mode 100644 src/patches/bash/bash32-045
delete mode 100644 src/patches/bash/bash32-046
delete mode 100644 src/patches/bash/bash32-047
delete mode 100644 src/patches/bash/bash32-048
delete mode 100644 src/patches/bash/bash32-049
delete mode 100644 src/patches/bash/bash32-050
delete mode 100644 src/patches/bash/bash32-051
create mode 100644 src/patches/bash/bash43-001
create mode 100644 src/patches/bash/bash43-002
create mode 100644 src/patches/bash/bash43-003
create mode 100644 src/patches/bash/bash43-004
create mode 100644 src/patches/bash/bash43-005
create mode 100644 src/patches/bash/bash43-006
create mode 100644 src/patches/bash/bash43-007
create mode 100644 src/patches/bash/bash43-008
create mode 100644 src/patches/bash/bash43-009
create mode 100644 src/patches/bash/bash43-010
create mode 100644 src/patches/bash/bash43-011
create mode 100644 src/patches/bash/bash43-012
create mode 100644 src/patches/bash/bash43-013
create mode 100644 src/patches/bash/bash43-014
create mode 100644 src/patches/bash/bash43-015
create mode 100644 src/patches/bash/bash43-016
create mode 100644 src/patches/bash/bash43-017
create mode 100644 src/patches/bash/bash43-018
create mode 100644 src/patches/bash/bash43-019
create mode 100644 src/patches/bash/bash43-020
create mode 100644 src/patches/bash/bash43-021
create mode 100644 src/patches/bash/bash43-022
create mode 100644 src/patches/bash/bash43-023
create mode 100644 src/patches/bash/bash43-024
copy src/patches/bash/{bash32-052 => bash43-025} (57%)
copy src/patches/bash/{bash32-053 => bash43-026} (55%)
Difference in files:
diff --git a/config/rootfiles/common/bash b/config/rootfiles/common/bash
index ecaeb1b..6afa0e4 100644
--- a/config/rootfiles/common/bash
+++ b/config/rootfiles/common/bash
@@ -1,6 +1,56 @@
bin/sh
bin/bash
#bin/bashbug
+#usr/share/doc/bash
+#usr/share/doc/bash/CHANGES
+#usr/share/doc/bash/COMPAT
+#usr/share/doc/bash/FAQ
+#usr/share/doc/bash/INTRO
+#usr/share/doc/bash/NEWS
+#usr/share/doc/bash/POSIX
+#usr/share/doc/bash/RBASH
+#usr/share/doc/bash/README
+#usr/share/doc/bash/bash.html
+#usr/share/doc/bash/bashref.html
#usr/share/info/bash.info
#usr/share/man/man1/bash.1
#usr/share/man/man1/bashbug.1
+#usr/share/locale/af
+#usr/share/locale/af/LC_MESSAGES
+#usr/share/locale/af/LC_MESSAGES/bash.mo
+#usr/share/locale/bg/LC_MESSAGES/bash.mo
+#usr/share/locale/ca/LC_MESSAGES/bash.mo
+#usr/share/locale/cs/LC_MESSAGES/bash.mo
+#usr/share/locale/da/LC_MESSAGES/bash.mo
+#usr/share/locale/de/LC_MESSAGES/bash.mo
+#usr/share/locale/el/LC_MESSAGES/bash.mo
+#usr/share/locale/en@boldquot
+#usr/share/locale/en@boldquot/LC_MESSAGES
+#usr/share/locale/en@boldquot/LC_MESSAGES/bash.mo
+#usr/share/locale/en@quot/LC_MESSAGES/bash.mo
+#usr/share/locale/eo/LC_MESSAGES/bash.mo
+#usr/share/locale/es/LC_MESSAGES/bash.mo
+#usr/share/locale/et/LC_MESSAGES/bash.mo
+#usr/share/locale/fi/LC_MESSAGES/bash.mo
+#usr/share/locale/fr/LC_MESSAGES/bash.mo
+#usr/share/locale/ga/LC_MESSAGES/bash.mo
+#usr/share/locale/gl/LC_MESSAGES/bash.mo
+#usr/share/locale/hr/LC_MESSAGES/bash.mo
+#usr/share/locale/hu/LC_MESSAGES/bash.mo
+#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/lt/LC_MESSAGES/bash.mo
+#usr/share/locale/nl/LC_MESSAGES/bash.mo
+#usr/share/locale/pl/LC_MESSAGES/bash.mo
+#usr/share/locale/pt_BR/LC_MESSAGES/bash.mo
+#usr/share/locale/ro/LC_MESSAGES/bash.mo
+#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/sr
+#usr/share/locale/sr/LC_MESSAGES
+#usr/share/locale/sr/LC_MESSAGES/bash.mo
+#usr/share/locale/sv/LC_MESSAGES/bash.mo
+#usr/share/locale/tr/LC_MESSAGES/bash.mo
+#usr/share/locale/uk/LC_MESSAGES/bash.mo
diff --git a/lfs/bash b/lfs/bash
index 55afd24..ae5a283 100644
--- a/lfs/bash
+++ b/lfs/bash
@@ -24,7 +24,7 @@
THISAPP = bash-$(VER)
DL_FILE = $(THISAPP).tar.gz
@@ -35,20 +35,15 @@ DIR_APP = $(DIR_SRC)/$(THISAPP)
#
ifeq "$(ROOT)" ""
TARGET = $(DIR_INFO)/$(THISAPP)
- EXTRA_CONFIG = --prefix=/usr --bindir=/bin \
- --without-bash-malloc --with-installed-readline \
- --disable-nls
- EXTRA_MAKE =
- EXTRA_INSTALL =
+ CONFIGURE_OPTIONS = --prefix=/usr --bindir=/bin \
+ --with-installed-readline
else
TARGET = $(DIR_INFO)/$(THISAPP)-tools
- EXTRA_CONFIG = --prefix=/tools --without-bash-malloc \
- --disable-nls
- EXTRA_MAKE =
- EXTRA_INSTALL =
+ CONFIGURE_OPTIONS = --prefix=/tools
endif
-EXTRA_CONFIG += ac_cv_func_working_mktime=yes
+CONFIGURE_OPTIONS += \
+ --without-bash-malloc
###############################################################################
# Top-level Rules
@@ -58,7 +53,7 @@ objects = $(DL_FILE)
-$(DL_FILE)_MD5 = 00bfa16d58e034e3c2aa27f390390d30
+$(DL_FILE)_MD5 = 81348932d5da294953e15d4814c74dd1
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
@$(PREBUILD)
- @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+ @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zaxf $(DIR_DL)/$(DL_FILE)
- for i in $$(seq 1 53); do \
- cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/bash/bash32-$$(printf "%03d" "$${i}") || exit 1; \
+ sed -e "s/filename, RTLD_LAZY/filename, RTLD_NOW/" \
+ -i $(DIR_APP)/builtins/enable.def
+
+ for i in $$(seq 1 26); do \
+ cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/bash/bash43-$$(printf "%03d" "$${i}") || exit 1; \
done
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bash-4.0-paths-1.patch
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bash-4.0-profile-1.patch
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/bash-3.2-ssh_source_bash.patch
- cd $(DIR_APP) && ./configure $(EXTRA_CONFIG)
- cd $(DIR_APP) && make $(EXTRA_MAKE)
- cd $(DIR_APP) && make $(EXTRA_INSTALL) install
+ cd $(DIR_APP) && ./configure $(CONFIGURE_OPTIONS)
+ cd $(DIR_APP) && make $(MAKETUNING)
+ cd $(DIR_APP) && make install
+
ln -sf bash /bin/sh
+
ifneq "$(ROOT)" ""
-mkdir -p $(ROOT)/bin
-mkdir -p $(ROOT)/usr/bin
ln -sf bash /tools/bin/sh
-ln -sf /tools/bin/bash $(ROOT)/bin/sh
endif
+
@rm -rf $(DIR_APP)
@$(POSTBUILD)
diff --git a/src/patches/bash-3.2-ssh_source_bash.patch b/src/patches/bash-3.2-ssh_source_bash.patch
index 4b37132..5bd19ce 100644
--- a/src/patches/bash-3.2-ssh_source_bash.patch
+++ b/src/patches/bash-3.2-ssh_source_bash.patch
@@ -1,9 +1,12 @@
-diff -up bash-3.2/config-top.h.ssh_source_bash bash-3.2/config-top.h
---- bash-3.2/config-top.h.ssh_source_bash 2008-10-23 15:08:04.000000000 +0200
-+++ bash-3.2/config-top.h 2008-10-23 15:08:33.000000000 +0200
-@@ -86,4 +86,4 @@
-
- /* Define this if you want bash to try to check whether it's being run by
- sshd and source the .bashrc if so (like the rshd behavior). */
+diff -up bash-4.0/config-top.h.ssh_source_bash bash-4.0/config-top.h
+--- bash-4.0/config-top.h.ssh_source_bash 2009-01-21 15:20:06.000000000 +0100
++++ bash-4.0/config-top.h 2009-01-21 15:25:46.000000000 +0100
+@@ -90,7 +90,7 @@
+ sshd and source the .bashrc if so (like the rshd behavior). This checks
+ for the presence of SSH_CLIENT or SSH2_CLIENT in the initial environment,
+ which can be fooled under certain not-uncommon circumstances. */
-/* #define SSH_SOURCE_BASHRC */
+#define SSH_SOURCE_BASHRC
+
+ /* Define if you want the case-capitalizing operators (~[~]) and the
+ `capcase' variable attribute (declare -c). */
diff --git a/src/patches/bash-4.0-paths-1.patch b/src/patches/bash-4.0-paths-1.patch
index 735a381..24ec5cc 100644
--- a/src/patches/bash-4.0-paths-1.patch
+++ b/src/patches/bash-4.0-paths-1.patch
@@ -1,25 +1,6 @@
---- bash-3.0/config.h.in.paths 2004-07-21 21:08:31.000000000 +0100
-+++ bash-3.0/config.h.in 2004-07-28 09:16:27.257884999 +0100
-@@ -197,7 +197,7 @@
-
- /* System paths */
-
--#define DEFAULT_MAIL_DIRECTORY "/usr/spool/mail"
-+#define DEFAULT_MAIL_DIRECTORY "/var/spool/mail"
-
- /* Characteristics of the system's header files and libraries that affect
- the compilation environment. */
--- 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
-@@ -52,14 +52,14 @@
- /* The default value of the PATH variable. */
- #ifndef DEFAULT_PATH_VALUE
- #define DEFAULT_PATH_VALUE \
-- "/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:."
-+ "/usr/local/bin:/bin:/usr/bin"
- #endif
-
- /* The value for PATH when invoking `command -p'. This is only used when
+@@ -66,7 +66,7 @@
the Posix.2 confstr () function, or CS_PATH define are not present. */
#ifndef STANDARD_UTILS_PATH
#define STANDARD_UTILS_PATH \
diff --git a/src/patches/bash/bash32-001 b/src/patches/bash/bash32-001
deleted file mode 100644
index b7d1f1e..0000000
--- a/src/patches/bash/bash32-001
+++ /dev/null
@@ -1,47 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-001
-
-Bug-Reported-by: Greg Schafer gschafer@zip.com.au
-Bug-Reference-ID: 20061012084940.GA15768@tigers.local
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-10/msg00046.html
-
-Bug-Description:
-
-When using historical ``-style command substitution, bash incorrectly attempts
-to interpret shell comments while scanning for the closing backquote.
-
-Patch:
-
-*** ../bash-3.2/parse.y Tue Sep 19 16:37:21 2006
---- parse.y Thu Oct 12 10:30:57 2006
-***************
-*** 2736,2740 ****
- count = 1;
- pass_next_character = backq_backslash = was_dollar = in_comment = 0;
-! check_comment = (flags & P_COMMAND) && qc != ''' && qc != '"' && (flags & P_DQUOTE) == 0;
-
- /* RFLAGS is the set of flags we want to pass to recursive calls. */
---- 2736,2740 ----
- count = 1;
- pass_next_character = backq_backslash = was_dollar = in_comment = 0;
-! check_comment = (flags & P_COMMAND) && qc != '`' && qc != ''' && qc != '"' && (flags & P_DQUOTE) == 0;
-
- /* RFLAGS is the set of flags we want to pass to recursive calls. */
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-002 b/src/patches/bash/bash32-002
deleted file mode 100644
index b934df9..0000000
--- a/src/patches/bash/bash32-002
+++ /dev/null
@@ -1,48 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-002
-
-Bug-Reported-by: Jim Gifford jim@jg555.com
-Bug-Reference-ID: 12j2pc3aq35mb04@corp.supernews.com
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-10/msg00082.html
-
-Bug-Description:
-
-An incorrect encoding specification in the Content-Type header causes msgfmt
-to fail, which causes `make install' to fail.
-
-Patch:
-
-*** ../bash-3.2/po/ru.po Tue Jan 10 17:51:03 2006
---- po/ru.po Mon Oct 16 15:13:23 2006
-***************
-*** 13,17 ****
- "Language-Team: Russian ru@li.org\n"
- "MIME-Version: 1.0\n"
-! "Content-Type: text/plain; charset=UTF-8\n"
- "Content-Transfer-Encoding: 8bit\n"
- "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
---- 13,17 ----
- "Language-Team: Russian ru@li.org\n"
- "MIME-Version: 1.0\n"
-! "Content-Type: text/plain; charset=KOI8-R\n"
- "Content-Transfer-Encoding: 8bit\n"
- "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-003 b/src/patches/bash/bash32-003
deleted file mode 100644
index 922041b..0000000
--- a/src/patches/bash/bash32-003
+++ /dev/null
@@ -1,147 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-003
-
-Bug-Reported-by: John Gatewood Ham zappaman@buraphalinux.org
-Bug-Reference-ID: Pine.LNX.4.64.0610121334140.15558@www.buraphalinux.org
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-10/msg00045.html
-
-Bug-Description:
-
-When using the conditional command's `=~' operator to match regular
-expressions, the parser did not skip over shell metacharacters in the
-regular expression, leading to syntax errors.
-
-Patch:
-
-*** ../bash-3.2-patched/parse.y Tue Oct 17 11:45:20 2006
---- parse.y Sat Oct 14 14:56:16 2006
-***************
-*** 1029,1034 ****
---- 1029,1035 ----
- #define PST_CMDTOKEN 0x1000 /* command token OK - unused */
- #define PST_COMPASSIGN 0x2000 /* parsing x=(...) compound assignment */
- #define PST_ASSIGNOK 0x4000 /* assignment statement ok in this context */
-+ #define PST_REGEXP 0x8000 /* parsing an ERE/BRE as a single word */
-
- /* Initial size to allocate for tokens, and the
- amount to grow them by. */
-***************
-*** 2591,2596 ****
---- 2592,2600 ----
- return (character);
- }
-
-+ if (parser_state & PST_REGEXP)
-+ goto tokword;
-+
- /* Shell meta-characters. */
- if MBTEST(shellmeta (character) && ((parser_state & PST_DBLPAREN) == 0))
- {
-***************
-*** 2698,2703 ****
---- 2702,2708 ----
- if MBTEST(character == '-' && (last_read_token == LESS_AND || last_read_token == GREATER_AND))
- return (character);
-
-+ tokword:
- /* Okay, if we got this far, we have to read a word. Read one,
- and then check it against the known ones. */
- result = read_token_word (character);
-***************
-*** 3202,3209 ****
- if (tok == WORD && test_binop (yylval.word->word))
- op = yylval.word;
- #if defined (COND_REGEXP)
-! else if (tok == WORD && STREQ (yylval.word->word,"=~"))
-! op = yylval.word;
- #endif
- else if (tok == '<' || tok == '>')
- op = make_word_from_token (tok); /* ( */
---- 3207,3217 ----
- if (tok == WORD && test_binop (yylval.word->word))
- op = yylval.word;
- #if defined (COND_REGEXP)
-! else if (tok == WORD && STREQ (yylval.word->word, "=~"))
-! {
-! op = yylval.word;
-! parser_state |= PST_REGEXP;
-! }
- #endif
- else if (tok == '<' || tok == '>')
- op = make_word_from_token (tok); /* ( */
-***************
-*** 3234,3239 ****
---- 3242,3248 ----
-
- /* rhs */
- tok = read_token (READ);
-+ parser_state &= ~PST_REGEXP;
- if (tok == WORD)
- {
- tright = make_cond_node (COND_TERM, yylval.word, (COND_COM *)NULL, (COND_COM *)NULL);
-***************
-*** 3419,3427 ****
- goto next_character;
- }
-
- #ifdef EXTENDED_GLOB
- /* Parse a ksh-style extended pattern matching specification. */
-! if (extended_glob && PATTERN_CHAR (character))
- {
- peek_char = shell_getc (1);
- if MBTEST(peek_char == '(') /* ) */
---- 3428,3461 ----
- goto next_character;
- }
-
-+ #ifdef COND_REGEXP
-+ /* When parsing a regexp as a single word inside a conditional command,
-+ we need to special-case characters special to both the shell and
-+ regular expressions. Right now, that is only '(' and '|'. */ /*)*/
-+ if MBTEST((parser_state & PST_REGEXP) && (character == '(' || character == '|')) /*)*/
-+ {
-+ if (character == '|')
-+ goto got_character;
-+
-+ push_delimiter (dstack, character);
-+ ttok = parse_matched_pair (cd, '(', ')', &ttoklen, 0);
-+ pop_delimiter (dstack);
-+ if (ttok == &matched_pair_error)
-+ return -1; /* Bail immediately. */
-+ RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 2,
-+ token_buffer_size, TOKEN_DEFAULT_GROW_SIZE);
-+ token[token_index++] = character;
-+ strcpy (token + token_index, ttok);
-+ token_index += ttoklen;
-+ FREE (ttok);
-+ dollar_present = all_digit_token = 0;
-+ goto next_character;
-+ }
-+ #endif /* COND_REGEXP */
-+
- #ifdef EXTENDED_GLOB
- /* Parse a ksh-style extended pattern matching specification. */
-! if MBTEST(extended_glob && PATTERN_CHAR (character))
- {
- peek_char = shell_getc (1);
- if MBTEST(peek_char == '(') /* ) */
-
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-004 b/src/patches/bash/bash32-004
deleted file mode 100644
index cd2accf..0000000
--- a/src/patches/bash/bash32-004
+++ /dev/null
@@ -1,96 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-004
-
-Bug-Reported-by: Stuart Shelton srcshelton@gmail.com
-Bug-Reference-ID: 619141e40610261203y6cda5aa6i23cb24c7aeba996e@mail.gmail.com
-Bug-Reference-URL:
-
-Bug-Description:
-
-A bug in the parameter pattern substitution implementation treated a pattern
-whose first character was `/' (after expansion) as specifying global
-replacement.
-
-Patch:
-
-*** ../bash-3.2/subst.c Tue Sep 19 08:35:09 2006
---- subst.c Thu Oct 26 09:17:50 2006
-***************
-*** 5707,5712 ****
---- 5707,5717 ----
- vtype &= ~VT_STARSUB;
-
- mflags = 0;
-+ if (patsub && *patsub == '/')
-+ {
-+ mflags |= MATCH_GLOBREP;
-+ patsub++;
-+ }
-
- /* Malloc this because expand_string_if_necessary or one of the expansion
- functions in its call chain may free it on a substitution error. */
-***************
-*** 5741,5753 ****
- }
-
- /* ksh93 doesn't allow the match specifier to be a part of the expanded
-! pattern. This is an extension. */
- p = pat;
-! if (pat && pat[0] == '/')
-! {
-! mflags |= MATCH_GLOBREP|MATCH_ANY;
-! p++;
-! }
- else if (pat && pat[0] == '#')
- {
- mflags |= MATCH_BEG;
---- 5746,5757 ----
- }
-
- /* ksh93 doesn't allow the match specifier to be a part of the expanded
-! pattern. This is an extension. Make sure we don't anchor the pattern
-! at the beginning or end of the string if we're doing global replacement,
-! though. */
- p = pat;
-! if (mflags & MATCH_GLOBREP)
-! mflags |= MATCH_ANY;
- else if (pat && pat[0] == '#')
- {
- mflags |= MATCH_BEG;
-*** ../bash-3.2/tests/new-exp.right Thu Aug 10 12:00:00 2006
---- tests/new-exp.right Sun Oct 29 16:03:36 2006
-***************
-*** 430,436 ****
- Case06---1---A B C::---
- Case07---3---A:B:C---
- Case08---3---A:B:C---
-! ./new-exp.tests: line 506: /${$(($#-1))}: bad substitution
- argv[1] = <a>
- argv[2] = <b>
- argv[3] = <c>
---- 430,436 ----
- Case06---1---A B C::---
- Case07---3---A:B:C---
- Case08---3---A:B:C---
-! ./new-exp.tests: line 506: ${$(($#-1))}: bad substitution
- argv[1] = <a>
- argv[2] = <b>
- argv[3] = <c>
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-005 b/src/patches/bash/bash32-005
deleted file mode 100644
index 903ec58..0000000
--- a/src/patches/bash/bash32-005
+++ /dev/null
@@ -1,223 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-005
-
-Bug-Reported-by: Stuart Shelton stuart@openobjects.com
-Bug-Reference-ID: 453F7CC8.6030907@openobjects.com
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-10/msg00127.html
-
-Bug-Description:
-
-A missing extern declaration for `asprintf' caused `double' arguments to be
-passed as `0', leading to incorrect results. Additionally, a bug in the
-replacement asprintf/snprintf function caused an infinite loop when passed
-0 arguments to the floating point conversions under some circumstances.
-
-Patch:
-
-*** ../bash-3.2/builtins/printf.def Mon Sep 18 08:48:42 2006
---- builtins/printf.def Tue Oct 31 08:19:44 2006
-***************
-*** 49,54 ****
---- 49,60 ----
- # define INT_MIN (-2147483647-1)
- #endif
-
-+ #if defined (PREFER_STDARG)
-+ # include <stdarg.h>
-+ #else
-+ # include <varargs.h>
-+ #endif
-+
- #include <stdio.h>
- #include <chartypes.h>
-
-***************
-*** 151,156 ****
---- 157,166 ----
- #define SKIP1 "#'-+ 0"
- #define LENMODS "hjlLtz"
-
-+ #ifndef HAVE_ASPRINTF
-+ extern int asprintf __P((char **, const char *, ...)) __attribute__((__format__ (printf, 2, 3)));
-+ #endif
-+
- static void printf_erange __P((char *));
- static int printstr __P((char *, char *, int, int, int));
- static int tescape __P((char *, char *, int *));
-
-
-*** ../bash-3.2/lib/sh/snprintf.c Thu Apr 6 09:48:40 2006
---- lib/sh/snprintf.c Sat Oct 28 00:00:13 2006
-***************
-*** 471,476 ****
---- 476,483 ----
- 10^x ~= r
- * log_10(200) = 2;
- * log_10(250) = 2;
-+ *
-+ * NOTE: do not call this with r == 0 -- an infinite loop results.
- */
- static int
- log_10(r)
-***************
-*** 576,583 ****
- {
- integral_part[0] = '0';
- integral_part[1] = '\0';
-! fraction_part[0] = '0';
-! fraction_part[1] = '\0';
- if (fract)
- *fract = fraction_part;
- return integral_part;
---- 583,593 ----
- {
- integral_part[0] = '0';
- integral_part[1] = '\0';
-! /* The fractional part has to take the precision into account */
-! for (ch = 0; ch < precision-1; ch++)
-! fraction_part[ch] = '0';
-! fraction_part[ch] = '0';
-! fraction_part[ch+1] = '\0';
- if (fract)
- *fract = fraction_part;
- return integral_part;
-***************
-*** 805,810 ****
---- 815,821 ----
- PUT_CHAR(*tmp, p);
- tmp++;
- }
-+
- PAD_LEFT(p);
- }
-
-***************
-*** 972,982 ****
- if ((p->flags & PF_THOUSANDS) && grouping && (t = groupnum (tmp)))
- tmp = t;
-
- /* calculate the padding. 1 for the dot */
- p->width = p->width -
- ((d > 0. && p->justify == RIGHT) ? 1:0) -
- ((p->flags & PF_SPACE) ? 1:0) -
-! strlen(tmp) - p->precision - 1;
- PAD_RIGHT(p);
- PUT_PLUS(d, p, 0.);
- PUT_SPACE(d, p, 0.);
---- 983,1003 ----
- if ((p->flags & PF_THOUSANDS) && grouping && (t = groupnum (tmp)))
- tmp = t;
-
-+ if ((*p->pf == 'g' || *p->pf == 'G') && (p->flags & PF_ALTFORM) == 0)
-+ {
-+ /* smash the trailing zeros unless altform */
-+ for (i = strlen(tmp2) - 1; i >= 0 && tmp2[i] == '0'; i--)
-+ tmp2[i] = '\0';
-+ if (tmp2[0] == '\0')
-+ p->precision = 0;
-+ }
-+
- /* calculate the padding. 1 for the dot */
- p->width = p->width -
- ((d > 0. && p->justify == RIGHT) ? 1:0) -
- ((p->flags & PF_SPACE) ? 1:0) -
-! strlen(tmp) - p->precision -
-! ((p->precision != 0 || (p->flags & PF_ALTFORM)) ? 1 : 0); /* radix char */
- PAD_RIGHT(p);
- PUT_PLUS(d, p, 0.);
- PUT_SPACE(d, p, 0.);
-***************
-*** 991,1001 ****
- if (p->precision != 0 || (p->flags & PF_ALTFORM))
- PUT_CHAR(decpoint, p); /* put the '.' */
-
-- if ((*p->pf == 'g' || *p->pf == 'G') && (p->flags & PF_ALTFORM) == 0)
-- /* smash the trailing zeros unless altform */
-- for (i = strlen(tmp2) - 1; i >= 0 && tmp2[i] == '0'; i--)
-- tmp2[i] = '\0';
--
- for (; *tmp2; tmp2++)
- PUT_CHAR(*tmp2, p); /* the fraction */
-
---- 1012,1017 ----
-***************
-*** 1011,1024 ****
- char *tmp, *tmp2;
- int j, i;
-
-! if (chkinfnan(p, d, 1) || chkinfnan(p, d, 2))
- return; /* already printed nan or inf */
-
- GETLOCALEDATA(decpoint, thoussep, grouping);
- DEF_PREC(p);
-! j = log_10(d);
-! d = d / pow_10(j); /* get the Mantissa */
-! d = ROUND(d, p);
- tmp = dtoa(d, p->precision, &tmp2);
-
- /* 1 for unit, 1 for the '.', 1 for 'e|E',
---- 1027,1045 ----
- char *tmp, *tmp2;
- int j, i;
-
-! if (d != 0 && (chkinfnan(p, d, 1) || chkinfnan(p, d, 2)))
- return; /* already printed nan or inf */
-
- GETLOCALEDATA(decpoint, thoussep, grouping);
- DEF_PREC(p);
-! if (d == 0.)
-! j = 0;
-! else
-! {
-! j = log_10(d);
-! d = d / pow_10(j); /* get the Mantissa */
-! d = ROUND(d, p);
-! }
- tmp = dtoa(d, p->precision, &tmp2);
-
- /* 1 for unit, 1 for the '.', 1 for 'e|E',
-***************
-*** 1076,1081 ****
---- 1097,1103 ----
- PUT_CHAR(*tmp, p);
- tmp++;
- }
-+
- PAD_LEFT(p);
- }
- #endif
-***************
-*** 1358,1364 ****
- STAR_ARGS(data);
- DEF_PREC(data);
- d = GETDOUBLE(data);
-! i = log_10(d);
- /*
- * for '%g|%G' ANSI: use f if exponent
- * is in the range or [-4,p] exclusively
---- 1380,1386 ----
- STAR_ARGS(data);
- DEF_PREC(data);
- d = GETDOUBLE(data);
-! i = (d != 0.) ? log_10(d) : -1;
- /*
- * for '%g|%G' ANSI: use f if exponent
- * is in the range or [-4,p] exclusively
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-006 b/src/patches/bash/bash32-006
deleted file mode 100644
index 589db9e..0000000
--- a/src/patches/bash/bash32-006
+++ /dev/null
@@ -1,45 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-006
-
-Bug-Reported-by: ebb9@byu.net
-Bug-Reference-ID:
45540862.9030900@byu.net
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00017.html
-
http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00016.html
-
-Bug-Description:
-
-In some cases, code that is intended to be used in the presence of multibyte
-characters is called when no such characters are present, leading to incorrect
-display position calculations and incorrect redisplay.
-
-Patch:
-
-*** ../bash-3.2-patched/lib/readline/display.c Thu Sep 14 14:20:12 2006
---- lib/readline/display.c Mon Nov 13 17:55:57 2006
-***************
-*** 2381,2384 ****
---- 2409,2414 ----
- if (end <= start)
- return 0;
-+ if (MB_CUR_MAX == 1 || rl_byte_oriented)
-+ return (end - start);
-
- memset (&ps, 0, sizeof (mbstate_t));
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-007 b/src/patches/bash/bash32-007
deleted file mode 100644
index 9b86f4a..0000000
--- a/src/patches/bash/bash32-007
+++ /dev/null
@@ -1,55 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-007
-
-Bug-Reported-by: jidanni@jidanni.org
-Bug-Reference-ID:
E1Gkg12-00017D-Fm@jidanni.org
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00039.html
-
-Bug-Description:
-
-When removing the current or previous job from the jobs list, bash incorrectly
-resets the current job under some circumstances.
-
-Patch:
-
-*** ../bash-3.2-patched/jobs.c Sat Jul 29 16:40:48 2006
---- jobs.c Fri Nov 24 14:50:01 2006
-***************
-*** 985,990 ****
- if (temp == 0)
- return;
-- if (job_index == js.j_current || job_index == js.j_previous)
-- reset_current ();
-
- if ((dflags & DEL_NOBGPID) == 0)
---- 985,988 ----
-***************
-*** 1029,1032 ****
---- 1027,1033 ----
- else if (jobs[js.j_firstj] == 0 || jobs[js.j_lastj] == 0)
- reset_job_indices ();
-+
-+ if (job_index == js.j_current || job_index == js.j_previous)
-+ reset_current ();
- }
-
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-008 b/src/patches/bash/bash32-008
deleted file mode 100644
index 7ec07ff..0000000
--- a/src/patches/bash/bash32-008
+++ /dev/null
@@ -1,48 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-008
-
-Bug-Reported-by: Linda Walsh
bash@tlinx.org
-Bug-Reference-ID:
456041FD.8000605@tlinx.org
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00040.html
-
-Bug-Description:
-
-When checking pathnames from the command hash table (e.g., when the `checkhash'
-shell option is enabled), a bug causes bash to delete and re-lookup each
-command.
-
-Patch:
-
-*** ../bash-3.2-patched/findcmd.c Wed Aug 17 16:49:54 2005
---- findcmd.c Fri Nov 24 10:48:37 2006
-***************
-*** 309,313 ****
- {
- st = file_status (hashed_file);
-! if ((st ^ (FS_EXISTS | FS_EXECABLE)) != 0)
- {
- phash_remove (pathname);
---- 309,313 ----
- {
- st = file_status (hashed_file);
-! if ((st & (FS_EXISTS|FS_EXECABLE)) != (FS_EXISTS|FS_EXECABLE))
- {
- phash_remove (pathname);
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-009 b/src/patches/bash/bash32-009
deleted file mode 100644
index 9cfd16e..0000000
--- a/src/patches/bash/bash32-009
+++ /dev/null
@@ -1,61 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-009
-
-Bug-Reported-by: James.M.Botte@lowes.com
-Bug-Reference-ID:
BA9FF90F7E5B424998F98EDA9F1F94BE01FA9853@msexchdb01.lowes.com
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2006-12/msg00000.html
-
-Bug-Description:
-
-When using its built-in replacement for snprintf/asprintf, bash does not
-treat the %x, %X, and %o format specifiers as unsigned numbers.
-
-Patch:
-
-*** ../bash-3.2-patched/lib/sh/snprintf.c Mon Nov 13 08:58:52 2006
---- lib/sh/snprintf.c Wed Dec 6 11:15:04 2006
-***************
-*** 669,673 ****
-
- sd = d; /* signed for ' ' padding in base 10 */
-! flags = (*p->pf == 'u' || *p->pf == 'U') ? FL_UNSIGNED : 0;
- if (*p->pf == 'X')
- flags |= FL_HEXUPPER;
---- 674,679 ----
-
- sd = d; /* signed for ' ' padding in base 10 */
-! flags = 0;
-! flags = (*p->pf == 'x' || *p->pf == 'X' || *p->pf == 'o' || *p->pf == 'u' || *p->pf == 'U') ? FL_UNSIGNED : 0;
- if (*p->pf == 'X')
- flags |= FL_HEXUPPER;
-***************
-*** 739,743 ****
-
- sd = d; /* signed for ' ' padding in base 10 */
-! flags = (*p->pf == 'u' || *p->pf == 'U') ? FL_UNSIGNED : 0;
- if (*p->pf == 'X')
- flags |= FL_HEXUPPER;
---- 745,749 ----
-
- sd = d; /* signed for ' ' padding in base 10 */
-! flags = (*p->pf == 'x' || *p->pf == 'X' || *p->pf == 'o' || *p->pf == 'u' || *p->pf == 'U') ? FL_UNSIGNED : 0;
- if (*p->pf == 'X')
- flags |= FL_HEXUPPER;
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-010 b/src/patches/bash/bash32-010
deleted file mode 100644
index 88de575..0000000
--- a/src/patches/bash/bash32-010
+++ /dev/null
@@ -1,207 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-010
-
-Bug-Reported-by: Ryan Waldron
rew@erebor.com
-Bug-Reference-ID:
20070119065603.546D011E9C@kansas.erebor.com
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2007-01/msg00059.html
-
-Bug-Description:
-
-The glibc implementation of regcomp/regexec does not allow backslashes to
-escape "ordinary" pattern characters when matching. Bash used backslashes
-to quote all characters when the pattern argument to the [[ special
-command's =~ operator was quoted. This caused the match to fail on Linux
-and other systems using GNU libc.
-
-Patch:
-
-*** ../bash-3.2.9/pathexp.h Sat Feb 19 17:23:18 2005
---- pathexp.h Wed Jan 31 22:53:16 2007
-***************
-*** 1,5 ****
- /* pathexp.h -- The shell interface to the globbing library. */
-
-! /* Copyright (C) 1987-2005 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
---- 1,5 ----
- /* pathexp.h -- The shell interface to the globbing library. */
-
-! /* Copyright (C) 1987-2007 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
-***************
-*** 33,36 ****
---- 33,37 ----
- #define QGLOB_CVTNULL 0x01 /* convert QUOTED_NULL strings to '\0' */
- #define QGLOB_FILENAME 0x02 /* do correct quoting for matching filenames */
-+ #define QGLOB_REGEXP 0x04 /* quote an ERE for regcomp/regexec */
-
- #if defined (EXTENDED_GLOB)
-*** ../bash-3.2.9/pathexp.c Mon May 6 13:43:05 2002
---- pathexp.c Mon Feb 26 16:59:23 2007
-***************
-*** 1,5 ****
- /* pathexp.c -- The shell interface to the globbing library. */
-
-! /* Copyright (C) 1995-2002 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
---- 1,5 ----
- /* pathexp.c -- The shell interface to the globbing library. */
-
-! /* Copyright (C) 1995-2007 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
-***************
-*** 111,114 ****
---- 111,141 ----
- }
-
-+ /* Return 1 if C is a character that is `special' in a POSIX ERE and needs to
-+ be quoted to match itself. */
-+ static inline int
-+ ere_char (c)
-+ int c;
-+ {
-+ switch (c)
-+ {
-+ case '.':
-+ case '[':
-+ case '\':
-+ case '(':
-+ case ')':
-+ case '*':
-+ case '+':
-+ case '?':
-+ case '{':
-+ case '|':
-+ case '^':
-+ case '$':
-+ return 1;
-+ default:
-+ return 0;
-+ }
-+ return (0);
-+ }
-+
- /* PATHNAME can contain characters prefixed by CTLESC; this indicates
- that the character is to be quoted. We quote it here in the style
-***************
-*** 143,146 ****
---- 170,175 ----
- if ((qflags & QGLOB_FILENAME) && pathname[i+1] == '/')
- continue;
-+ if ((qflags & QGLOB_REGEXP) && ere_char (pathname[i+1]) == 0)
-+ continue;
- temp[j++] = '\';
- i++;
-*** ../bash-3.2.9/subst.c Tue Nov 7 16:14:41 2006
---- subst.c Wed Jan 31 23:09:58 2007
-***************
-*** 5,9 ****
- beauty, but, hey, you're alright.'' */
-
-! /* Copyright (C) 1987-2006 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
---- 5,9 ----
- beauty, but, hey, you're alright.'' */
-
-! /* Copyright (C) 1987-2007 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
-***************
-*** 2647,2655 ****
- /* This needs better error handling. */
- /* Expand W for use as an argument to a unary or binary operator in a
-! [[...]] expression. If SPECIAL is nonzero, this is the rhs argument
- to the != or == operator, and should be treated as a pattern. In
-! this case, we quote the string specially for the globbing code. The
-! caller is responsible for removing the backslashes if the unquoted
-! words is needed later. */
- char *
- cond_expand_word (w, special)
---- 2647,2656 ----
- /* This needs better error handling. */
- /* Expand W for use as an argument to a unary or binary operator in a
-! [[...]] expression. If SPECIAL is 1, this is the rhs argument
- to the != or == operator, and should be treated as a pattern. In
-! this case, we quote the string specially for the globbing code. If
-! SPECIAL is 2, this is an rhs argument for the =~ operator, and should
-! be quoted appropriately for regcomp/regexec. The caller is responsible
-! for removing the backslashes if the unquoted word is needed later. */
- char *
- cond_expand_word (w, special)
-***************
-*** 2659,2662 ****
---- 2660,2664 ----
- char *r, *p;
- WORD_LIST *l;
-+ int qflags;
-
- if (w->word == 0 || w->word[0] == '\0')
-***************
-*** 2673,2678 ****
- else
- {
- p = string_list (l);
-! r = quote_string_for_globbing (p, QGLOB_CVTNULL);
- free (p);
- }
---- 2675,2683 ----
- else
- {
-+ qflags = QGLOB_CVTNULL;
-+ if (special == 2)
-+ qflags |= QGLOB_REGEXP;
- p = string_list (l);
-! r = quote_string_for_globbing (p, qflags);
- free (p);
- }
-*** ../bash-3.2.9/execute_cmd.c Sat Aug 26 00:23:17 2006
---- execute_cmd.c Wed Jan 31 23:12:06 2007
-***************
-*** 1,5 ****
- /* execute_cmd.c -- Execute a COMMAND structure. */
-
-! /* Copyright (C) 1987-2005 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
---- 1,5 ----
- /* execute_cmd.c -- Execute a COMMAND structure. */
-
-! /* Copyright (C) 1987-2007 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
-***************
-*** 2547,2551 ****
- if (arg1 == 0)
- arg1 = nullstr;
-! arg2 = cond_expand_word (cond->right->op, patmatch||rmatch);
- if (arg2 == 0)
- arg2 = nullstr;
---- 2547,2551 ----
- if (arg1 == 0)
- arg1 = nullstr;
-! arg2 = cond_expand_word (cond->right->op, rmatch ? 2 : (patmatch ? 1 : 0));
- if (arg2 == 0)
- arg2 = nullstr;
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-011 b/src/patches/bash/bash32-011
deleted file mode 100644
index c021f52..0000000
--- a/src/patches/bash/bash32-011
+++ /dev/null
@@ -1,138 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-011
-
-Bug-Reported-by: Petr Sumbera
Petr.Sumbera@Sun.COM
-Bug-Reference-ID:
45AF5F4B.1020800@sun.com
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2007-01/msg00049.html
-
-Bug-Description:
-
-Under certain circumstances (loopback mounts), the bash getcwd does not
-return correct results. This patch allows the use of the Solaris libc
-getcwd even though it doesn't dynamically allocate memory.
-
-Run `touch configure' to make sure make doesn't try to run autoconf.
-Then run configure with whatever options you like.
-
-Patch:
-
-*** ../bash-3.2-patched/configure.in Tue Sep 26 11:05:45 2006
---- configure.in Wed Jan 31 09:48:00 2007
-***************
-*** 6,10 ****
- dnl Process this file with autoconf to produce a configure script.
-
-! # Copyright (C) 1987-2006 Free Software Foundation, Inc.
-
- # This program is free software; you can redistribute it and/or modify
---- 6,10 ----
- dnl Process this file with autoconf to produce a configure script.
-
-! # Copyright (C) 1987-2007 Free Software Foundation, Inc.
-
- # This program is free software; you can redistribute it and/or modify
-***************
-*** 992,996 ****
- sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;;
- sunos4*) LOCAL_CFLAGS=-DSunOS4 ;;
-! solaris2.5*) LOCAL_CFLAGS=-DSunOS5 ;;
- lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
- linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
---- 992,997 ----
- sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;;
- sunos4*) LOCAL_CFLAGS=-DSunOS4 ;;
-! solaris2.5*) LOCAL_CFLAGS="-DSunOS5 -DSOLARIS" ;;
-! solaris2*) LOCAL_CFLAGS=-DSOLARIS ;;
- lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
- linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
-*** ../bash-3.2-patched/config-bot.h Tue Sep 12 16:43:04 2006
---- config-bot.h Tue Mar 6 10:41:31 2007
-***************
-*** 2,6 ****
- /* modify settings or make new ones based on what autoconf tells us. */
-
-! /* Copyright (C) 1989-2002 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
---- 2,6 ----
- /* modify settings or make new ones based on what autoconf tells us. */
-
-! /* Copyright (C) 1989-2007 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
-***************
-*** 71,77 ****
- #endif
-
-! /* If we have a getcwd(3), but it calls popen(), #undef HAVE_GETCWD so
-! the replacement in getcwd.c will be built. */
-! #if defined (HAVE_GETCWD) && defined (GETCWD_BROKEN)
- # undef HAVE_GETCWD
- #endif
---- 71,79 ----
- #endif
-
-! /* If we have a getcwd(3), but one that does not dynamically allocate memory,
-! #undef HAVE_GETCWD so the replacement in getcwd.c will be built. We do
-! not do this on Solaris, because their implementation of loopback mounts
-! breaks the traditional file system assumptions that getcwd uses. */
-! #if defined (HAVE_GETCWD) && defined (GETCWD_BROKEN) && !defined (SOLARIS)
- # undef HAVE_GETCWD
- #endif
-*** ../bash-3.2-patched/builtins/common.c Thu Jul 27 09:39:51 2006
---- builtins/common.c Tue Mar 6 10:43:27 2007
-***************
-*** 1,3 ****
-! /* Copyright (C) 1987-2005 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
---- 1,3 ----
-! /* Copyright (C) 1987-2007 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
-***************
-*** 476,480 ****
---- 476,484 ----
- if (the_current_working_directory == 0)
- {
-+ #if defined (GETCWD_BROKEN)
-+ the_current_working_directory = getcwd (0, PATH_MAX);
-+ #else
- the_current_working_directory = getcwd (0, 0);
-+ #endif
- if (the_current_working_directory == 0)
- {
-*** ../bash-3.2-patched/configure Tue Sep 26 11:06:01 2006
---- configure Tue Mar 6 10:59:20 2007
-***************
-*** 27317,27321 ****
- sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;;
- sunos4*) LOCAL_CFLAGS=-DSunOS4 ;;
-! solaris2.5*) LOCAL_CFLAGS=-DSunOS5 ;;
- lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
- linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
---- 27317,27322 ----
- sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;;
- sunos4*) LOCAL_CFLAGS=-DSunOS4 ;;
-! solaris2.5*) LOCAL_CFLAGS="-DSunOS5 -DSOLARIS" ;;
-! solaris2*) LOCAL_CFLAGS=-DSOLARIS ;;
- lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
- linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-012 b/src/patches/bash/bash32-012
deleted file mode 100644
index 8d669d2..0000000
--- a/src/patches/bash/bash32-012
+++ /dev/null
@@ -1,96 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-012
-
-Bug-Reported-by: John Wyman
JohnWyman@celink.com
-Bug-Reference-ID:
5E7DEFC094C35044B87FAE761D9F0EE20143A3B7@exchange2k.celink.com
-Bug-Reference-URL:
-
-Bug-Description:
-
-Some systems (AIX 4.x) don't implement the PRI_xxx macros correctly,
-causing syntax errors when attempting to compile bash on those systems.
-This patch adds support for the PRI_MACROS_BROKEN define.
-
-You will need to re-run `configure' after applying the patch. Run
-`touch configure' so make doesn't try to run autoconf.
-
-Patch:
-
-*** ../bash-3.2.11/config.h.in Tue Sep 12 16:00:54 2006
---- config.h.in Tue Mar 6 11:17:55 2007
-***************
-*** 1,5 ****
- /* config.h -- Configuration file for bash. */
-
-! /* Copyright (C) 1987-2006 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
---- 1,5 ----
- /* config.h -- Configuration file for bash. */
-
-! /* Copyright (C) 1987-2007 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
-***************
-*** 414,417 ****
---- 414,419 ----
- #undef HAVE_DECL_STRTOLD
-
-+ #undef PRI_MACROS_BROKEN
-+
- #undef STRTOLD_BROKEN
-
-***************
-*** 1007,1010 ****
---- 1009,1015 ----
- #undef HAVE_DCGETTEXT
-
-+ /* Define if you have the `localeconv' function. */
-+ #undef HAVE_LOCALECONV
-+
- /* Define if your system has a working `malloc' function. */
- /* #undef HAVE_MALLOC */
-*** ../bash-3.2.11/builtins/printf.def Mon Nov 13 08:58:52 2006
---- builtins/printf.def Sun Feb 4 13:58:59 2007
-***************
-*** 2,6 ****
- It implements the builtin "printf" in Bash.
-
-! Copyright (C) 1997-2005 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
---- 2,6 ----
- It implements the builtin "printf" in Bash.
-
-! Copyright (C) 1997-2007 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
-***************
-*** 71,74 ****
---- 71,78 ----
- #include "common.h"
-
-+ #if defined (PRI_MACROS_BROKEN)
-+ # undef PRIdMAX
-+ #endif
-+
- #if !defined (PRIdMAX)
- # if HAVE_LONG_LONG
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-013 b/src/patches/bash/bash32-013
deleted file mode 100644
index d47bc1a..0000000
--- a/src/patches/bash/bash32-013
+++ /dev/null
@@ -1,65 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-013
-
-Bug-Reported-by: Magnus Svensson
msvensson@mysql.com
-Bug-Reference-ID:
45BDC44D.80609@mysql.com
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-readline/2007-01/msg00002.html
-
-Bug-Description:
-
-Readline neglects to reallocate the array it uses to keep track of wrapped
-screen lines when increasing its size. This will eventually result in
-segmentation faults when given sufficiently long input.
-
-Patch:
-
-*** ../bash-3.2-patched/lib/readline/display.c Thu Sep 14 14:20:12 2006
---- lib/readline/display.c Fri Feb 2 20:23:17 2007
-***************
-*** 561,574 ****
---- 561,586 ----
- wrap_offset = prompt_invis_chars_first_line = 0;
- }
-
-+ #if defined (HANDLE_MULTIBYTE)
- #define CHECK_INV_LBREAKS() \
- do { \
- if (newlines >= (inv_lbsize - 2)) \
- { \
- inv_lbsize *= 2; \
- inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \
-+ _rl_wrapped_line = (int *)xrealloc (_rl_wrapped_line, inv_lbsize * sizeof (int)); \
- } \
- } while (0)
-+ #else
-+ #define CHECK_INV_LBREAKS() \
-+ do { \
-+ if (newlines >= (inv_lbsize - 2)) \
-+ { \
-+ inv_lbsize *= 2; \
-+ inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \
-+ } \
-+ } while (0)
-+ #endif /* HANDLE_MULTIBYTE */
-
- #if defined (HANDLE_MULTIBYTE)
- #define CHECK_LPOS() \
-
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-014 b/src/patches/bash/bash32-014
deleted file mode 100644
index b706505..0000000
--- a/src/patches/bash/bash32-014
+++ /dev/null
@@ -1,307 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-014
-
-Bug-Reported-by: Brett Stahlman
brettstahlman@comcast.net
-Bug-Reference-ID:
000701c72d29$a227e0e0$5ec7cf47@computerroom
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2006-12/msg00065.html
-
-Bug-Description:
-
-Bash mishandles word splitting under certain circumstances when IFS is
-null (IFS=). Constructs affected include ${param/pat/sub} and others
-when expanding arrays (array[@]).
-
-Patch:
-
-*** ../bash-3.2-patched/array.c Wed Jun 1 16:39:22 2005
---- array.c Mon Jan 15 22:58:00 2007
-***************
-*** 121,125 ****
- }
-
-- #ifdef INCLUDE_UNUSED
- /*
- * Make and return a new array composed of the elements in array A from
---- 121,124 ----
-***************
-*** 142,146 ****
- n = array_create_element (element_index(p), element_value(p));
- ADD_BEFORE(a->head, n);
-! mi = element_index(ae);
- }
- a->num_elements = i;
---- 141,145 ----
- n = array_create_element (element_index(p), element_value(p));
- ADD_BEFORE(a->head, n);
-! mi = element_index(n);
- }
- a->num_elements = i;
-***************
-*** 148,152 ****
- return a;
- }
-- #endif
-
- /*
---- 147,150 ----
-***************
-*** 301,304 ****
---- 299,319 ----
- }
-
-+ ARRAY *
-+ array_quote_escapes(array)
-+ ARRAY *array;
-+ {
-+ ARRAY_ELEMENT *a;
-+ char *t;
-+
-+ if (array == 0 || array_head(array) == 0 || array_empty(array))
-+ return (ARRAY *)NULL;
-+ for (a = element_forw(array->head); a != array->head; a = element_forw(a)) {
-+ t = quote_escapes (a->value);
-+ FREE(a->value);
-+ a->value = t;
-+ }
-+ return array;
-+ }
-+
- /*
- * Return a string whose elements are the members of array A beginning at
-***************
-*** 312,318 ****
- int starsub, quoted;
- {
- ARRAY_ELEMENT *h, *p;
- arrayind_t i;
-! char *ifs, sep[2];
-
- p = a ? array_head (a) : 0;
---- 327,334 ----
- int starsub, quoted;
- {
-+ ARRAY *a2;
- ARRAY_ELEMENT *h, *p;
- arrayind_t i;
-! char *ifs, sep[2], *t;
-
- p = a ? array_head (a) : 0;
-***************
-*** 337,340 ****
---- 353,363 ----
- ;
-
-+ a2 = array_slice(a, h, p);
-+
-+ if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
-+ array_quote(a2);
-+ else
-+ array_quote_escapes(a2);
-+
- if (starsub && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) {
- ifs = getifs();
-***************
-*** 344,348 ****
- sep[1] = '\0';
-
-! return (array_to_string_internal (h, p, sep, quoted));
- }
-
---- 367,374 ----
- sep[1] = '\0';
-
-! t = array_to_string (a2, sep, 0);
-! array_dispose(a2);
-!
-! return t;
- }
-
-***************
-*** 368,372 ****
-
- if (mflags & MATCH_QUOTED)
-! array_quote (a2);
- if (mflags & MATCH_STARSUB) {
- ifs = getifs();
---- 394,400 ----
-
- if (mflags & MATCH_QUOTED)
-! array_quote(a2);
-! else
-! array_quote_escapes(a2);
- if (mflags & MATCH_STARSUB) {
- ifs = getifs();
-*** ../bash-3.2-patched/array.h Sun Jun 1 15:50:30 2003
---- array.h Mon Jan 15 22:35:35 2007
-***************
-*** 56,59 ****
---- 56,60 ----
- extern int array_shift_element __P((ARRAY *, char *));
- extern ARRAY *array_quote __P((ARRAY *));
-+ extern ARRAY *array_quote_escapes __P((ARRAY *));
-
- extern char *array_subrange __P((ARRAY *, arrayind_t, arrayind_t, int, int));
-*** ../bash-3.2-patched/subst.c Fri Mar 2 16:20:50 2007
---- subst.c Tue Mar 6 11:40:55 2007
-***************
-*** 1888,1892 ****
---- 1889,1899 ----
- #endif
-
-+ /* XXX -- why call quote_list if ifs == 0? we can get away without doing
-+ it now that quote_escapes quotes spaces */
-+ #if 0
- tlist = ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (ifs && *ifs == 0))
-+ #else
-+ tlist = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
-+ #endif
- ? quote_list (list)
- : list_quote_escapes (list);
-***************
-*** 2922,2926 ****
- /* Quote escape characters in string s, but no other characters. This is
- used to protect CTLESC and CTLNUL in variable values from the rest of
-! the word expansion process after the variable is expanded. */
- char *
- quote_escapes (string)
---- 2935,2944 ----
- /* Quote escape characters in string s, but no other characters. This is
- used to protect CTLESC and CTLNUL in variable values from the rest of
-! the word expansion process after the variable is expanded. If IFS is
-! null, we quote spaces as well, just in case we split on spaces later
-! (in the case of unquoted $@, we will eventually attempt to split the
-! entire word on spaces). Corresponding code exists in dequote_escapes.
-! Even if we don't end up splitting on spaces, quoting spaces is not a
-! problem. */
- char *
- quote_escapes (string)
-***************
-*** 2930,2933 ****
---- 2948,2952 ----
- size_t slen;
- char *result, *send;
-+ int quote_spaces;
- DECLARE_MBSTATE;
-
-***************
-*** 2935,2938 ****
---- 2954,2958 ----
- send = string + slen;
-
-+ quote_spaces = (ifs_value && *ifs_value == 0);
- t = result = (char *)xmalloc ((slen * 2) + 1);
- s = string;
-***************
-*** 2940,2944 ****
- while (*s)
- {
-! if (*s == CTLESC || *s == CTLNUL)
- *t++ = CTLESC;
- COPY_CHAR_P (t, s, send);
---- 2960,2964 ----
- while (*s)
- {
-! if (*s == CTLESC || *s == CTLNUL || (quote_spaces && *s == ' '))
- *t++ = CTLESC;
- COPY_CHAR_P (t, s, send);
-***************
-*** 2982,2985 ****
---- 3002,3006 ----
- size_t slen;
- char *result, *send;
-+ int quote_spaces;
- DECLARE_MBSTATE;
-
-***************
-*** 2996,3002 ****
- return (strcpy (result, s));
-
- while (*s)
- {
-! if (*s == CTLESC && (s[1] == CTLESC || s[1] == CTLNUL))
- {
- s++;
---- 3017,3024 ----
- return (strcpy (result, s));
-
-+ quote_spaces = (ifs_value && *ifs_value == 0);
- while (*s)
- {
-! if (*s == CTLESC && (s[1] == CTLESC || s[1] == CTLNUL || (quote_spaces && s[1] == ' ')))
- {
- s++;
-***************
-*** 4462,4466 ****
- RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size, DEFAULT_ARRAY_SIZE);
-
-! if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || c == CTLESC || c == CTLNUL)
- istring[istring_index++] = CTLESC;
-
---- 4498,4510 ----
- RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size, DEFAULT_ARRAY_SIZE);
-
-! /* This is essentially quote_string inline */
-! if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) /* || c == CTLESC || c == CTLNUL */)
-! istring[istring_index++] = CTLESC;
-! /* Escape CTLESC and CTLNUL in the output to protect those characters
-! from the rest of the word expansions (word splitting and globbing.)
-! This is essentially quote_escapes inline. */
-! else if (c == CTLESC)
-! istring[istring_index++] = CTLESC;
-! else if (c == CTLNUL || (c == ' ' && (ifs_value && *ifs_value == 0)))
- istring[istring_index++] = CTLESC;
-
-***************
-*** 5552,5555 ****
---- 5610,5616 ----
- rely on array_subrange to understand how to deal with them). */
- tt = array_subrange (array_cell (v), e1, e2, starsub, quoted);
-+ #if 0
-+ /* array_subrange now calls array_quote_escapes as appropriate, so the
-+ caller no longer needs to. */
- if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0)
- {
-***************
-*** 5558,5561 ****
---- 5619,5623 ----
- }
- else
-+ #endif
- temp = tt;
- break;
-***************
-*** 5808,5811 ****
---- 5870,5876 ----
- case VT_ARRAYVAR:
- temp = array_patsub (array_cell (v), p, rep, mflags);
-+ #if 0
-+ /* Don't need to do this anymore; array_patsub calls array_quote_escapes
-+ as appropriate before adding the space separators. */
- if (temp && (mflags & MATCH_QUOTED) == 0)
- {
-***************
-*** 5814,5817 ****
---- 5879,5883 ----
- temp = tt;
- }
-+ #endif
- break;
- #endif
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-015 b/src/patches/bash/bash32-015
deleted file mode 100644
index d887f6e..0000000
--- a/src/patches/bash/bash32-015
+++ /dev/null
@@ -1,95 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-015
-
-Bug-Reported-by:
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-Under certain circumstances, when using FIFOs for process substitution,
-bash fails to unlink the FIFOs. This leaves open file descriptors that
-can cause the shell to hang and litters the file system.
-
-Patch:
-
-*** ../bash-3.2-patched/execute_cmd.c Fri Mar 2 16:20:50 2007
---- execute_cmd.c Wed Jan 31 23:12:06 2007
-***************
-*** 3051,3054 ****
---- 3051,3059 ----
- command_line = savestring (the_printed_command_except_trap);
-
-+ #if defined (PROCESS_SUBSTITUTION)
-+ if ((subshell_environment & SUBSHELL_COMSUB) && (simple_command->flags & CMD_NO_FORK) && fifos_pending() > 0)
-+ simple_command->flags &= ~CMD_NO_FORK;
-+ #endif
-+
- execute_disk_command (words, simple_command->redirects, command_line,
- pipe_in, pipe_out, async, fds_to_close,
-*** ../bash-3.2-patched/subst.c Fri Mar 2 16:20:50 2007
---- subst.c Tue Mar 6 11:40:55 2007
-***************
-*** 4129,4132 ****
---- 4151,4160 ----
- }
-
-+ int
-+ fifos_pending ()
-+ {
-+ return nfifo;
-+ }
-+
- static char *
- make_named_pipe ()
-***************
-*** 4178,4181 ****
---- 4206,4215 ----
- }
-
-+ int
-+ fifos_pending ()
-+ {
-+ return 0; /* used for cleanup; not needed with /dev/fd */
-+ }
-+
- void
- unlink_fifo_list ()
-***************
-*** 4671,4674 ****
---- 4719,4725 ----
- last_command_exit_value = rc;
- rc = run_exit_trap ();
-+ #if defined (PROCESS_SUBSTITUTION)
-+ unlink_fifo_list ();
-+ #endif
- exit (rc);
- }
-*** ../bash-3.2-patched/subst.h Tue Sep 19 08:34:41 2006
---- subst.h Wed Jan 10 09:46:47 2007
-***************
-*** 223,226 ****
---- 223,227 ----
- extern char *pat_subst __P((char *, char *, char *, int));
-
-+ extern int fifos_pending __P((void));
- extern void unlink_fifo_list __P((void));
-
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-016 b/src/patches/bash/bash32-016
deleted file mode 100644
index a0f065a..0000000
--- a/src/patches/bash/bash32-016
+++ /dev/null
@@ -1,52 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-016
-
-Bug-Reported-by: Peter Volkov
torre_cremata@mail.ru
-Bug-Reference-ID:
1171795523.8021.18.camel@localhost
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2007-02/msg00054.html
-
-Bug-Description:
-
-When moving the cursor, bash sometimes misplaces the cursor when the prompt
-contains two or more multibyte characters. The particular circumstance that
-uncovered the problem was having the (multibyte) current directory name in
-the prompt string.
-
-Patch:
-
-*** ../bash-3.2/lib/readline/display.c Fri Jan 19 13:34:50 2007
---- lib/readline/display.c Sat Mar 10 17:25:44 2007
-***************
-*** 1745,1749 ****
- {
- dpos = _rl_col_width (data, 0, new);
-! if (dpos > prompt_last_invisible) /* XXX - don't use woff here */
- {
- dpos -= woff;
---- 1745,1752 ----
- {
- dpos = _rl_col_width (data, 0, new);
-! /* Use NEW when comparing against the last invisible character in the
-! prompt string, since they're both buffer indices and DPOS is a
-! desired display position. */
-! if (new > prompt_last_invisible) /* XXX - don't use woff here */
- {
- dpos -= woff;
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-017 b/src/patches/bash/bash32-017
deleted file mode 100644
index 99e5e70..0000000
--- a/src/patches/bash/bash32-017
+++ /dev/null
@@ -1,85 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-017
-
-Bug-Reported-by: Peter Volkov
torre_cremata@mail.ru
-Bug-Reference-ID:
1173636022.7039.36.camel@localhost
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2007-03/msg00039.html
-
-Bug-Description:
-
-When restoring the original prompt after finishing an incremental search,
-bash sometimes places the cursor incorrectly if the primary prompt contains
-invisible characters.
-
-Patch:
-
-*** ../bash-3.2.16/lib/readline/display.c Fri Apr 20 13:30:16 2007
---- lib/readline/display.c Fri Apr 20 15:17:01 2007
-***************
-*** 1599,1604 ****
- if (temp > 0)
- {
- _rl_output_some_chars (nfd, temp);
-! _rl_last_c_pos += _rl_col_width (nfd, 0, temp);;
- }
- }
---- 1599,1618 ----
- if (temp > 0)
- {
-+ /* If nfd begins at the prompt, or before the invisible
-+ characters in the prompt, we need to adjust _rl_last_c_pos
-+ in a multibyte locale to account for the wrap offset and
-+ set cpos_adjusted accordingly. */
- _rl_output_some_chars (nfd, temp);
-! if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
-! {
-! _rl_last_c_pos += _rl_col_width (nfd, 0, temp);
-! if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible))
-! {
-! _rl_last_c_pos -= wrap_offset;
-! cpos_adjusted = 1;
-! }
-! }
-! else
-! _rl_last_c_pos += temp;
- }
- }
-***************
-*** 1608,1613 ****
---- 1622,1639 ----
- if (temp > 0)
- {
-+ /* If nfd begins at the prompt, or before the invisible
-+ characters in the prompt, we need to adjust _rl_last_c_pos
-+ in a multibyte locale to account for the wrap offset and
-+ set cpos_adjusted accordingly. */
- _rl_output_some_chars (nfd, temp);
- _rl_last_c_pos += col_temp; /* XXX */
-+ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
-+ {
-+ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible))
-+ {
-+ _rl_last_c_pos -= wrap_offset;
-+ cpos_adjusted = 1;
-+ }
-+ }
- }
- lendiff = (oe - old) - (ne - new);
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-018 b/src/patches/bash/bash32-018
deleted file mode 100644
index d729aaf..0000000
--- a/src/patches/bash/bash32-018
+++ /dev/null
@@ -1,98 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-018
-
-Bug-Reported-by: osicka@post.cz
-Bug-Reference-ID:
228.177-19682-1132061412-1179356692@post.cz
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2007-05/msg00061.html
-
-Bug-Description:
-
-In certain cases, bash can lose the saved status of a background job, though
-it should still be reported by `wait'. Bash can also loop infinitely after
-creating and waiting for 4096 jobs.
-
-Patch:
-
-*** ../bash-20070510/jobs.c Thu Mar 8 16:05:50 2007
---- jobs.c Fri May 18 11:40:14 2007
-***************
-*** 784,792 ****
- {
- old = js.j_firstj++;
- while (js.j_firstj != old)
- {
- if (js.j_firstj >= js.j_jobslots)
- js.j_firstj = 0;
-! if (jobs[js.j_firstj])
- break;
- js.j_firstj++;
---- 784,794 ----
- {
- old = js.j_firstj++;
-+ if (old >= js.j_jobslots)
-+ old = js.j_jobslots - 1;
- while (js.j_firstj != old)
- {
- if (js.j_firstj >= js.j_jobslots)
- js.j_firstj = 0;
-! if (jobs[js.j_firstj] || js.j_firstj == old) /* needed if old == 0 */
- break;
- js.j_firstj++;
-***************
-*** 798,806 ****
- {
- old = js.j_lastj--;
- while (js.j_lastj != old)
- {
- if (js.j_lastj < 0)
- js.j_lastj = js.j_jobslots - 1;
-! if (jobs[js.j_lastj])
- break;
- js.j_lastj--;
---- 800,810 ----
- {
- old = js.j_lastj--;
-+ if (old < 0)
-+ old = 0;
- while (js.j_lastj != old)
- {
- if (js.j_lastj < 0)
- js.j_lastj = js.j_jobslots - 1;
-! if (jobs[js.j_lastj] || js.j_lastj == old) /* needed if old == js.j_jobslots */
- break;
- js.j_lastj--;
-***************
-*** 964,968 ****
- realloc_jobs_list ();
-
-! return (js.j_lastj);
- }
-
---- 975,983 ----
- realloc_jobs_list ();
-
-! #ifdef DEBUG
-! itrace("compact_jobs_list: returning %d", (js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0);
-! #endif
-!
-! return ((js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0);
- }
-
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-019 b/src/patches/bash/bash32-019
deleted file mode 100644
index 647bd1f..0000000
--- a/src/patches/bash/bash32-019
+++ /dev/null
@@ -1,343 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-019
-
-Bug-Reported-by: Thomas Loeber
ifp@loeber1.de
-Bug-Reference-ID:
200703082223.08919.ifp@loeber1.de
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2007-03/msg00036.html
-
-Bug-Description:
-
-When rl_read_key returns -1, indicating that bash's controlling terminal
-has been invalidated for some reason (e.g., receiving a SIGHUP), the error
-status was not reported correctly to the caller. This could cause input
-loops.
-
-Patch:
-
-*** ../bash-3.2-patched/lib/readline/complete.c Fri Jul 28 11:35:49 2006
---- lib/readline/complete.c Tue Mar 13 08:50:16 2007
-***************
-*** 429,433 ****
- if (c == 'n' || c == 'N' || c == RUBOUT)
- return (0);
-! if (c == ABORT_CHAR)
- _rl_abort_internal ();
- if (for_pager && (c == NEWLINE || c == RETURN))
---- 440,444 ----
- if (c == 'n' || c == 'N' || c == RUBOUT)
- return (0);
-! if (c == ABORT_CHAR || c < 0)
- _rl_abort_internal ();
- if (for_pager && (c == NEWLINE || c == RETURN))
-*** ../bash-3.2-patched/lib/readline/input.c Wed Aug 16 15:15:16 2006
---- lib/readline/input.c Wed May 2 16:07:59 2007
-***************
-*** 514,518 ****
- int size;
- {
-! int mb_len = 0;
- size_t mbchar_bytes_length;
- wchar_t wc;
---- 522,526 ----
- int size;
- {
-! int mb_len, c;
- size_t mbchar_bytes_length;
- wchar_t wc;
-***************
-*** 521,531 ****
- memset(&ps, 0, sizeof (mbstate_t));
- memset(&ps_back, 0, sizeof (mbstate_t));
-!
- while (mb_len < size)
- {
- RL_SETSTATE(RL_STATE_MOREINPUT);
-! mbchar[mb_len++] = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
- mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps);
- if (mbchar_bytes_length == (size_t)(-1))
---- 529,545 ----
- memset(&ps, 0, sizeof (mbstate_t));
- memset(&ps_back, 0, sizeof (mbstate_t));
-!
-! mb_len = 0;
- while (mb_len < size)
- {
- RL_SETSTATE(RL_STATE_MOREINPUT);
-! c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
-+ if (c < 0)
-+ break;
-+
-+ mbchar[mb_len++] = c;
-+
- mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps);
- if (mbchar_bytes_length == (size_t)(-1))
-***************
-*** 565,569 ****
- c = first;
- memset (mb, 0, mlen);
-! for (i = 0; i < mlen; i++)
- {
- mb[i] = (char)c;
---- 579,583 ----
- c = first;
- memset (mb, 0, mlen);
-! for (i = 0; c >= 0 && i < mlen; i++)
- {
- mb[i] = (char)c;
-*** ../bash-3.2-patched/lib/readline/isearch.c Mon Dec 26 17:18:53 2005
---- lib/readline/isearch.c Fri Mar 9 14:30:59 2007
-***************
-*** 328,333 ****
-
- f = (rl_command_func_t *)NULL;
-!
-! /* Translate the keys we do something with to opcodes. */
- if (c >= 0 && _rl_keymap[c].type == ISFUNC)
- {
---- 328,340 ----
-
- f = (rl_command_func_t *)NULL;
-!
-! if (c < 0)
-! {
-! cxt->sflags |= SF_FAILED;
-! cxt->history_pos = cxt->last_found_line;
-! return -1;
-! }
-!
-! /* Translate the keys we do something with to opcodes. */
- if (c >= 0 && _rl_keymap[c].type == ISFUNC)
- {
-*** ../bash-3.2-patched/lib/readline/misc.c Mon Dec 26 17:20:46 2005
---- lib/readline/misc.c Fri Mar 9 14:44:11 2007
-***************
-*** 147,150 ****
---- 147,152 ----
- rl_clear_message ();
- RL_UNSETSTATE(RL_STATE_NUMERICARG);
-+ if (key < 0)
-+ return -1;
- return (_rl_dispatch (key, _rl_keymap));
- }
-*** ../bash-3.2-patched/lib/readline/readline.c Wed Aug 16 15:00:36 2006
---- lib/readline/readline.c Fri Mar 9 14:47:24 2007
-***************
-*** 646,649 ****
---- 669,677 ----
- {
- nkey = _rl_subseq_getchar (cxt->okey);
-+ if (nkey < 0)
-+ {
-+ _rl_abort_internal ();
-+ return -1;
-+ }
- r = _rl_dispatch_subseq (nkey, cxt->dmap, cxt->subseq_arg);
- cxt->flags |= KSEQ_DISPATCHED;
-*** ../bash-3.2-patched/lib/readline/text.c Fri Jul 28 11:55:27 2006
---- lib/readline/text.c Sun Mar 25 13:41:38 2007
-***************
-*** 858,861 ****
---- 864,870 ----
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
-+ if (c < 0)
-+ return -1;
-+
- #if defined (HANDLE_SIGNALS)
- if (RL_ISSTATE (RL_STATE_CALLBACK) == 0)
-***************
-*** 1521,1524 ****
---- 1530,1536 ----
- mb_len = _rl_read_mbchar (mbchar, MB_LEN_MAX);
-
-+ if (mb_len <= 0)
-+ return -1;
-+
- if (count < 0)
- return (_rl_char_search_internal (-count, bdir, mbchar, mb_len));
-***************
-*** 1537,1540 ****
---- 1549,1555 ----
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
-+ if (c < 0)
-+ return -1;
-+
- if (count < 0)
- return (_rl_char_search_internal (-count, bdir, c));
-*** ../bash-3.2-patched/lib/readline/vi_mode.c Sat Jul 29 16:42:28 2006
---- lib/readline/vi_mode.c Fri Mar 9 15:02:11 2007
-***************
-*** 887,890 ****
---- 887,897 ----
- c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-+
-+ if (c < 0)
-+ {
-+ *nextkey = 0;
-+ return -1;
-+ }
-+
- *nextkey = c;
-
-***************
-*** 903,906 ****
---- 910,918 ----
- c = rl_read_key (); /* real command */
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-+ if (c < 0)
-+ {
-+ *nextkey = 0;
-+ return -1;
-+ }
- *nextkey = c;
- }
-***************
-*** 1225,1236 ****
- _rl_callback_generic_arg *data;
- {
- #if defined (HANDLE_MULTIBYTE)
-! _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX);
- #else
- RL_SETSTATE(RL_STATE_MOREINPUT);
-! _rl_vi_last_search_char = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
- #endif
-
- _rl_callback_func = 0;
- _rl_want_redisplay = 1;
---- 1243,1262 ----
- _rl_callback_generic_arg *data;
- {
-+ int c;
- #if defined (HANDLE_MULTIBYTE)
-! c = _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX);
- #else
- RL_SETSTATE(RL_STATE_MOREINPUT);
-! c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
- #endif
-
-+ if (c <= 0)
-+ return -1;
-+
-+ #if !defined (HANDLE_MULTIBYTE)
-+ _rl_vi_last_search_char = c;
-+ #endif
-+
- _rl_callback_func = 0;
- _rl_want_redisplay = 1;
-***************
-*** 1248,1251 ****
---- 1274,1278 ----
- int count, key;
- {
-+ int c;
- #if defined (HANDLE_MULTIBYTE)
- static char *target;
-***************
-*** 1294,1302 ****
- {
- #if defined (HANDLE_MULTIBYTE)
-! _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX);
- #else
- RL_SETSTATE(RL_STATE_MOREINPUT);
-! _rl_vi_last_search_char = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
- #endif
- }
---- 1321,1335 ----
- {
- #if defined (HANDLE_MULTIBYTE)
-! c = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX);
-! if (c <= 0)
-! return -1;
-! _rl_vi_last_search_mblen = c;
- #else
- RL_SETSTATE(RL_STATE_MOREINPUT);
-! c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-+ if (c < 0)
-+ return -1;
-+ _rl_vi_last_search_char = c;
- #endif
- }
-***************
-*** 1468,1471 ****
---- 1501,1507 ----
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
-+ if (c < 0)
-+ return -1;
-+
- #if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
-***************
-*** 1486,1489 ****
---- 1522,1528 ----
- _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX);
-
-+ if (c < 0)
-+ return -1;
-+
- _rl_callback_func = 0;
- _rl_want_redisplay = 1;
-***************
-*** 1517,1520 ****
---- 1556,1562 ----
- _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX);
-
-+ if (c < 0)
-+ return -1;
-+
- return (_rl_vi_change_char (count, c, mb));
- }
-***************
-*** 1651,1655 ****
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
-! if (ch < 'a' || ch > 'z')
- {
- rl_ding ();
---- 1693,1697 ----
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
-! if (ch < 0 || ch < 'a' || ch > 'z') /* make test against 0 explicit */
- {
- rl_ding ();
-***************
-*** 1703,1707 ****
- return 0;
- }
-! else if (ch < 'a' || ch > 'z')
- {
- rl_ding ();
---- 1745,1749 ----
- return 0;
- }
-! else if (ch < 0 || ch < 'a' || ch > 'z') /* make test against 0 explicit */
- {
- rl_ding ();
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-020 b/src/patches/bash/bash32-020
deleted file mode 100644
index 8c7e328..0000000
--- a/src/patches/bash/bash32-020
+++ /dev/null
@@ -1,183 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-020
-
-Bug-Reported-by: Ian A Watson
WATSON_IAN_A@LILLY.COM
-Bug-Reference-ID:
OFEC551808.69D02C7F-ON8525729A.0045708D-8525729A.0046150B@EliLilly.lilly.com
-Bug-Reference-URL:
-
-Bug-Description:
-
-In some cases of error processing, a jump back to the top-level processing
-loop from a builtin command would leave the shell in an inconsistent state.
-
-Patch:
-
-*** ../bash-3.2-patched/sig.c Wed Jan 25 14:57:59 2006
---- sig.c Sat Mar 10 11:11:30 2007
-***************
-*** 351,354 ****
---- 351,373 ----
- #undef XHANDLER
-
-+ /* Run some of the cleanups that should be performed when we run
-+ jump_to_top_level from a builtin command context. XXX - might want to
-+ also call reset_parser here. */
-+ void
-+ top_level_cleanup ()
-+ {
-+ /* Clean up string parser environment. */
-+ while (parse_and_execute_level)
-+ parse_and_execute_cleanup ();
-+
-+ #if defined (PROCESS_SUBSTITUTION)
-+ unlink_fifo_list ();
-+ #endif /* PROCESS_SUBSTITUTION */
-+
-+ run_unwind_protects ();
-+ loop_level = continuing = breaking = 0;
-+ return_catch_flag = 0;
-+ }
-+
- /* What to do when we've been interrupted, and it is safe to handle it. */
- void
-*** ../bash-3.2-patched/sig.h Wed Jan 25 14:50:27 2006
---- sig.h Sat Mar 10 11:14:18 2007
-***************
-*** 122,125 ****
---- 122,126 ----
- extern void initialize_terminating_signals __P((void));
- extern void reset_terminating_signals __P((void));
-+ extern void top_level_cleanup __P((void));
- extern void throw_to_top_level __P((void));
- extern void jump_to_top_level __P((int)) __attribute__((__noreturn__));
-*** ../bash-3.2-patched/builtins/common.c Tue Apr 3 16:47:13 2007
---- builtins/common.c Mon Apr 30 15:01:33 2007
-***************
-*** 132,135 ****
---- 132,136 ----
- {
- builtin_error (_("too many arguments"));
-+ top_level_cleanup ();
- jump_to_top_level (DISCARD);
- }
-***************
-*** 396,400 ****
- throw_to_top_level ();
- else
-! jump_to_top_level (DISCARD);
- }
- no_args (list->next);
---- 410,417 ----
- throw_to_top_level ();
- else
-! {
-! top_level_cleanup ();
-! jump_to_top_level (DISCARD);
-! }
- }
- no_args (list->next);
-*** ../bash-3.2-patched/subst.c Tue Apr 3 16:47:19 2007
---- subst.c Tue Jul 17 09:45:11 2007
-***************
-*** 1279,1283 ****
- if (no_longjmp_on_fatal_error == 0)
- { /* { */
-! report_error ("bad substitution: no closing `%s' in %s", "}", string);
- last_command_exit_value = EXECUTION_FAILURE;
- exp_jump_to_top_level (DISCARD);
---- 1290,1294 ----
- if (no_longjmp_on_fatal_error == 0)
- { /* { */
-! report_error (_("bad substitution: no closing `%s' in %s"), "}", string);
- last_command_exit_value = EXECUTION_FAILURE;
- exp_jump_to_top_level (DISCARD);
-***************
-*** 7662,7665 ****
---- 7706,7711 ----
- expand_no_split_dollar_star = 0; /* XXX */
- expanding_redir = 0;
-+
-+ top_level_cleanup (); /* from sig.c */
-
- jump_to_top_level (v);
-***************
-*** 7880,7884 ****
- {
- report_error (_("no match: %s"), tlist->word->word);
-! jump_to_top_level (DISCARD);
- }
- else if (allow_null_glob_expansion == 0)
---- 7927,7931 ----
- {
- report_error (_("no match: %s"), tlist->word->word);
-! exp_jump_to_top_level (DISCARD);
- }
- else if (allow_null_glob_expansion == 0)
-*** ../bash-3.2-patched/arrayfunc.c Thu Jul 27 09:37:59 2006
---- arrayfunc.c Thu May 31 11:55:46 2007
-***************
-*** 619,622 ****
---- 619,624 ----
- {
- last_command_exit_value = EXECUTION_FAILURE;
-+
-+ top_level_cleanup ();
- jump_to_top_level (DISCARD);
- }
-*** ../bash-3.2-patched/expr.c Wed Dec 28 17:47:03 2005
---- expr.c Tue Apr 24 14:17:59 2007
-***************
-*** 930,933 ****
---- 930,934 ----
- {
- expr_unwind ();
-+ top_level_cleanup ();
- jump_to_top_level (DISCARD);
- }
-*** ../bash-3.2-patched/variables.c Fri Sep 8 13:33:32 2006
---- variables.c Tue Jul 17 09:54:59 2007
-***************
-*** 1822,1830 ****
- lval = evalexp (oval, &expok); /* ksh93 seems to do this */
- if (expok == 0)
-! jump_to_top_level (DISCARD);
- }
- rval = evalexp (value, &expok);
- if (expok == 0)
-! jump_to_top_level (DISCARD);
- if (flags & ASS_APPEND)
- rval += lval;
---- 1855,1869 ----
- lval = evalexp (oval, &expok); /* ksh93 seems to do this */
- if (expok == 0)
-! {
-! top_level_cleanup ();
-! jump_to_top_level (DISCARD);
-! }
- }
- rval = evalexp (value, &expok);
- if (expok == 0)
-! {
-! top_level_cleanup ();
-! jump_to_top_level (DISCARD);
-! }
- if (flags & ASS_APPEND)
- rval += lval;
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-021 b/src/patches/bash/bash32-021
deleted file mode 100644
index 003489c..0000000
--- a/src/patches/bash/bash32-021
+++ /dev/null
@@ -1,72 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-021
-
-Bug-Reported-by: BAGSHAW Paul RD-TECH-REN
paul.bagshaw@orange-ftgroup.com
-Bug-Reference-ID:
941BA0BF46DB8F4983FF7C8AFE800BC205EA7D4B@ftrdmel3.rd.francetelecom.fr
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2007-03/msg00065.html
-
-Bug-Description:
-
-When the parser read a backslash-escaped character that would be treated
-internally as an escape, it would double the number of escape characters.
-
-Patch:
-
-*** ../bash-3.2-patched/parse.y Mon Oct 30 17:22:00 2006
---- parse.y Sat Mar 24 17:13:20 2007
-***************
-*** 3377,3381 ****
- {
- pass_next_character = 0;
-! goto got_character;
- }
-
---- 3377,3381 ----
- {
- pass_next_character = 0;
-! goto got_escaped_character;
- }
-
-***************
-*** 3651,3660 ****
- got_character:
-
-- all_digit_token &= DIGIT (character);
-- dollar_present |= character == '$';
--
- if (character == CTLESC || character == CTLNUL)
- token[token_index++] = CTLESC;
-
- token[token_index++] = character;
-
---- 3651,3662 ----
- got_character:
-
- if (character == CTLESC || character == CTLNUL)
- token[token_index++] = CTLESC;
-
-+ got_escaped_character:
-+
-+ all_digit_token &= DIGIT (character);
-+ dollar_present |= character == '$';
-+
- token[token_index++] = character;
-
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-022 b/src/patches/bash/bash32-022
deleted file mode 100644
index d3679e6..0000000
--- a/src/patches/bash/bash32-022
+++ /dev/null
@@ -1,126 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-022
-
-Bug-Reported-by: Chet Ramey
chet.ramey@cwru.edu
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-POSIX specifies that the `read' builtin invoked from an interative shell
-must prompt with $PS2 when a line is continued using a backslash while
-reading from a terminal.
-
-Patch:
-
-*** ../bash-3.2-patched/builtins/read.def Tue Sep 19 08:45:48 2006
---- builtins/read.def Thu May 24 16:03:30 2007
-***************
-*** 128,133 ****
- {
- register char *varname;
-! int size, i, nr, pass_next, saw_escape, eof, opt, retval, code;
-! int input_is_tty, input_is_pipe, unbuffered_read;
- int raw, edit, nchars, silent, have_timeout, fd;
- unsigned int tmout;
---- 131,136 ----
- {
- register char *varname;
-! int size, i, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2;
-! int input_is_tty, input_is_pipe, unbuffered_read, skip_ctlesc, skip_ctlnul;
- int raw, edit, nchars, silent, have_timeout, fd;
- unsigned int tmout;
-***************
-*** 135,139 ****
- char c;
- char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname;
-! char *e, *t, *t1;
- struct stat tsb;
- SHELL_VAR *var;
---- 138,142 ----
- char c;
- char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname;
-! char *e, *t, *t1, *ps2;
- struct stat tsb;
- SHELL_VAR *var;
-***************
-*** 149,152 ****
---- 152,156 ----
- USE_VAR(i);
- USE_VAR(pass_next);
-+ USE_VAR(print_ps2);
- USE_VAR(saw_escape);
- USE_VAR(input_is_pipe);
-***************
-*** 164,167 ****
---- 168,172 ----
- #endif
- USE_VAR(list);
-+ USE_VAR(ps2);
-
- i = 0; /* Index into the string that we are reading. */
-***************
-*** 387,391 ****
- #endif
-
-! for (eof = retval = 0;;)
- {
- #if defined (READLINE)
---- 394,399 ----
- #endif
-
-! ps2 = 0;
-! for (print_ps2 = eof = retval = 0;;)
- {
- #if defined (READLINE)
-***************
-*** 413,416 ****
---- 421,433 ----
- #endif
-
-+ if (print_ps2)
-+ {
-+ if (ps2 == 0)
-+ ps2 = get_string_value ("PS2");
-+ fprintf (stderr, "%s", ps2 ? ps2 : "");
-+ fflush (stderr);
-+ print_ps2 = 0;
-+ }
-+
- if (unbuffered_read)
- retval = zread (fd, &c, 1);
-***************
-*** 441,445 ****
- pass_next = 0;
- if (c == '\n')
-! i--; /* back up over the CTLESC */
- else
- goto add_char;
---- 458,466 ----
- pass_next = 0;
- if (c == '\n')
-! {
-! i--; /* back up over the CTLESC */
-! if (interactive && input_is_tty && raw == 0)
-! print_ps2 = 1;
-! }
- else
- goto add_char;
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-023 b/src/patches/bash/bash32-023
deleted file mode 100644
index 34a6394..0000000
--- a/src/patches/bash/bash32-023
+++ /dev/null
@@ -1,51 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-023
-
-Bug-Reported-by: Chet Ramey
chet.ramey@cwru.edu
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-When an error occurs during the pattern removal word expansion, the shell
-can free unallocated memory or free memory multiple times.
-
-Patch:
-
-*** ../bash-3.2-patched/subst.c Tue Apr 3 16:47:19 2007
---- subst.c Tue Jul 17 09:45:11 2007
-***************
-*** 3975,3979 ****
- patstr++;
-
-! pattern = getpattern (patstr, quoted, 1);
-
- temp1 = (char *)NULL; /* shut up gcc */
---- 4008,4016 ----
- patstr++;
-
-! /* Need to pass getpattern newly-allocated memory in case of expansion --
-! the expansion code will free the passed string on an error. */
-! temp1 = savestring (patstr);
-! pattern = getpattern (temp1, quoted, 1);
-! free (temp1);
-
- temp1 = (char *)NULL; /* shut up gcc */
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-024 b/src/patches/bash/bash32-024
deleted file mode 100644
index 1575f37..0000000
--- a/src/patches/bash/bash32-024
+++ /dev/null
@@ -1,77 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-024
-
-Bug-Reported-by: Peter Volkov
torre_cremata@mail.ru
-Bug-Reference-ID:
1178376645.9063.25.camel@localhost
-Bug-Reference-URL:
http://bugs.gentoo.org/177095
-
-Bug-Description:
-
-The readline display code miscalculated the screen position when performing
-a redisplay in which the new text occupies more screen space that the old,
-but takes fewer bytes to do so (e.g., when replacing a shorter string
-containing multibyte characters with a longer one containing only ASCII).
-
-Patch:
-
-*** ../bash-3.2-patched/lib/readline/display.c Thu Apr 26 11:38:22 2007
---- lib/readline/display.c Thu Jul 12 23:10:10 2007
-***************
-*** 1519,1527 ****
- /* Non-zero if we're increasing the number of lines. */
- int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin;
- /* Sometimes it is cheaper to print the characters rather than
- use the terminal's capabilities. If we're growing the number
- of lines, make sure we actually cause the new line to wrap
- around on auto-wrapping terminals. */
-! if (_rl_terminal_can_insert && ((2 * col_temp) >= col_lendiff || _rl_term_IC) && (!_rl_term_autowrap || !gl))
- {
- /* If lendiff > prompt_visible_length and _rl_last_c_pos == 0 and
---- 1568,1596 ----
- /* Non-zero if we're increasing the number of lines. */
- int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin;
-+ /* If col_lendiff is > 0, implying that the new string takes up more
-+ screen real estate than the old, but lendiff is < 0, meaning that it
-+ takes fewer bytes, we need to just output the characters starting
-+ from the first difference. These will overwrite what is on the
-+ display, so there's no reason to do a smart update. This can really
-+ only happen in a multibyte environment. */
-+ if (lendiff < 0)
-+ {
-+ _rl_output_some_chars (nfd, temp);
-+ _rl_last_c_pos += _rl_col_width (nfd, 0, temp);
-+ /* If nfd begins before any invisible characters in the prompt,
-+ adjust _rl_last_c_pos to account for wrap_offset and set
-+ cpos_adjusted to let the caller know. */
-+ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible))
-+ {
-+ _rl_last_c_pos -= wrap_offset;
-+ cpos_adjusted = 1;
-+ }
-+ return;
-+ }
- /* Sometimes it is cheaper to print the characters rather than
- use the terminal's capabilities. If we're growing the number
- of lines, make sure we actually cause the new line to wrap
- around on auto-wrapping terminals. */
-! else if (_rl_terminal_can_insert && ((2 * col_temp) >= col_lendiff || _rl_term_IC) && (!_rl_term_autowrap || !gl))
- {
- /* If lendiff > prompt_visible_length and _rl_last_c_pos == 0 and
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-025 b/src/patches/bash/bash32-025
deleted file mode 100644
index 4d53d89..0000000
--- a/src/patches/bash/bash32-025
+++ /dev/null
@@ -1,79 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-025
-
-Bug-Reported-by: Tom Bjorkholm
tom.bjorkholm@ericsson.com
-Bug-Reference-ID:
AEA1A32F001C6B4F98614B5B80D7647D01C075E9@esealmw115.eemea.ericsson.se
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-readline/2007-04/msg00004.html
-
-Bug-Description:
-
-An off-by-one error in readline's input buffering caused readline to drop
-each 511th character of buffered input (e.g., when pasting a large amount
-of data into a terminal window).
-
-Patch:
-
-*** ../bash-3.2-patched/lib/readline/input.c Wed Aug 16 15:15:16 2006
---- lib/readline/input.c Tue Jul 17 09:24:21 2007
-***************
-*** 134,139 ****
-
- *key = ibuffer[pop_index++];
-!
- if (pop_index >= ibuffer_len)
- pop_index = 0;
-
---- 134,142 ----
-
- *key = ibuffer[pop_index++];
-! #if 0
- if (pop_index >= ibuffer_len)
-+ #else
-+ if (pop_index > ibuffer_len)
-+ #endif
- pop_index = 0;
-
-***************
-*** 251,255 ****
- {
- k = (*rl_getc_function) (rl_instream);
-! rl_stuff_char (k);
- if (k == NEWLINE || k == RETURN)
- break;
---- 254,259 ----
- {
- k = (*rl_getc_function) (rl_instream);
-! if (rl_stuff_char (k) == 0)
-! break; /* some problem; no more room */
- if (k == NEWLINE || k == RETURN)
- break;
-***************
-*** 374,378 ****
---- 378,386 ----
- }
- ibuffer[push_index++] = key;
-+ #if 0
- if (push_index >= ibuffer_len)
-+ #else
-+ if (push_index > ibuffer_len)
-+ #endif
- push_index = 0;
-
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-026 b/src/patches/bash/bash32-026
deleted file mode 100644
index ba7de50..0000000
--- a/src/patches/bash/bash32-026
+++ /dev/null
@@ -1,82 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-026
-
-Bug-Reported-by: Chet Ramey
chet.ramey@case.edu
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-This keeps the Apple linker from attempting to link bash against Apple's
-readline library "replacement" rather than the one shipped with bash. It
-extends the configure workaround to Mac OS X Leopard (10.5).
-
-As a side effect, the patch updates the copyright date displayed in the
-version string.
-
-You must re-run configure after applying the patch, and before rebuilding
-bash.
-
-Patch:
-
-*** ../bash-3.2-patched/configure.in 2007-03-06 11:07:38.000000000 -0500
---- configure.in 2007-11-23 15:37:41.000000000 -0500
-***************
-*** 519,523 ****
- # dynamic version
- case "${host_os}" in
-! darwin8*) READLINE_LIB='${READLINE_LIBRARY}' ;;
- *) READLINE_LIB=-lreadline ;;
- esac
---- 519,523 ----
- # dynamic version
- case "${host_os}" in
-! darwin[[89]]*) READLINE_LIB='${READLINE_LIBRARY}' ;;
- *) READLINE_LIB=-lreadline ;;
- esac
-*** ../bash-3.2-patched/configure 2007-03-24 14:51:22.000000000 -0400
---- configure 2007-11-23 15:46:15.000000000 -0500
-***************
-*** 4872,4876 ****
- # dynamic version
- case "${host_os}" in
-! darwin8*) READLINE_LIB='${READLINE_LIBRARY}' ;;
- *) READLINE_LIB=-lreadline ;;
- esac
---- 4872,4876 ----
- # dynamic version
- case "${host_os}" in
-! darwin[89]*) READLINE_LIB='${READLINE_LIBRARY}' ;;
- *) READLINE_LIB=-lreadline ;;
- esac
-*** ../bash-3.2-patched/version.c 2005-05-16 11:58:34.000000000 -0400
---- version.c 2007-11-23 16:03:40.000000000 -0500
-***************
-*** 80,83 ****
- printf ("GNU bash, version %s (%s)\n", shell_version_string (), MACHTYPE);
- if (extended)
-! printf (_("Copyright (C) 2005 Free Software Foundation, Inc.\n"));
- }
---- 80,83 ----
- printf ("GNU bash, version %s (%s)\n", shell_version_string (), MACHTYPE);
- if (extended)
-! printf (_("Copyright (C) 2007 Free Software Foundation, Inc.\n"));
- }
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-027 b/src/patches/bash/bash32-027
deleted file mode 100644
index 5e110cb..0000000
--- a/src/patches/bash/bash32-027
+++ /dev/null
@@ -1,85 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-027
-
-Bug-Reported-by: dAniel hAhler
ubuntu@thequod.de
-Bug-Reference-ID:
4702ED8A.5000503@thequod.de
-Bug-Reference-URL:
https://bugs.launchpad.net/ubuntu/+source/bash/+bug/119938
-
-Bug-Description:
-
-When updating the display after displaying, for instance, a list of possible
-completions, readline will place the cursor at the wrong position if the
-prompt contains invisible characters and a newline.
-
-Patch:
-
-*** ../bash-3.2.25/lib/readline/display.c Mon Aug 6 14:26:29 2007
---- lib/readline/display.c Wed Oct 10 22:43:58 2007
-***************
-*** 1049,1053 ****
- else
- tx = nleft;
-! if (_rl_last_c_pos > tx)
- {
- _rl_backspace (_rl_last_c_pos - tx); /* XXX */
---- 1049,1053 ----
- else
- tx = nleft;
-! if (tx >= 0 && _rl_last_c_pos > tx)
- {
- _rl_backspace (_rl_last_c_pos - tx); /* XXX */
-***************
-*** 1205,1209 ****
- {
- register char *ofd, *ols, *oe, *nfd, *nls, *ne;
-! int temp, lendiff, wsatend, od, nd;
- int current_invis_chars;
- int col_lendiff, col_temp;
---- 1205,1209 ----
- {
- register char *ofd, *ols, *oe, *nfd, *nls, *ne;
-! int temp, lendiff, wsatend, od, nd, o_cpos;
- int current_invis_chars;
- int col_lendiff, col_temp;
-***************
-*** 1466,1469 ****
---- 1466,1471 ----
- }
-
-+ o_cpos = _rl_last_c_pos;
-+
- /* When this function returns, _rl_last_c_pos is correct, and an absolute
- cursor postion in multibyte mode, but a buffer index when not in a
-***************
-*** 1475,1479 ****
- invisible characters in the prompt string. Let's see if setting this when
- we make sure we're at the end of the drawn prompt string works. */
-! if (current_line == 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0 && _rl_last_c_pos == prompt_physical_chars)
- cpos_adjusted = 1;
- #endif
---- 1477,1483 ----
- invisible characters in the prompt string. Let's see if setting this when
- we make sure we're at the end of the drawn prompt string works. */
-! if (current_line == 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0 &&
-! (_rl_last_c_pos > 0 || o_cpos > 0) &&
-! _rl_last_c_pos == prompt_physical_chars)
- cpos_adjusted = 1;
- #endif
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-028 b/src/patches/bash/bash32-028
deleted file mode 100644
index e818294..0000000
--- a/src/patches/bash/bash32-028
+++ /dev/null
@@ -1,60 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-028
-
-Bug-Reported-by: dAniel hAhler
ubuntu@thequod.de
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-Under some circumstances, readline will incorrectly display a prompt string
-containing invisible characters after the final newline.
-
-Patch:
-
-*** ../bash-3.2-patched/lib/readline/display.c 2007-08-25 13:47:08.000000000 -0400
---- lib/readline/display.c 2007-11-10 17:51:29.000000000 -0500
-***************
-*** 392,396 ****
- local_prompt = expand_prompt (p, &prompt_visible_length,
- &prompt_last_invisible,
-! (int *)NULL,
- &prompt_physical_chars);
- c = *t; *t = '\0';
---- 420,424 ----
- local_prompt = expand_prompt (p, &prompt_visible_length,
- &prompt_last_invisible,
-! &prompt_invis_chars_first_line,
- &prompt_physical_chars);
- c = *t; *t = '\0';
-***************
-*** 399,403 ****
- local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length,
- (int *)NULL,
-! &prompt_invis_chars_first_line,
- (int *)NULL);
- *t = c;
---- 427,431 ----
- local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length,
- (int *)NULL,
-! (int *)NULL,
- (int *)NULL);
- *t = c;
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-029 b/src/patches/bash/bash32-029
deleted file mode 100644
index 9de2085..0000000
--- a/src/patches/bash/bash32-029
+++ /dev/null
@@ -1,52 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-029
-
-Bug-Reported-by: Tomas Janousek
tjanouse@redhat.com
-Bug-Reference-ID:
20071102104034.GA26893@redhat.com
-Bug-Reference-URL:
https://bugzilla.redhat.com/show_bug.cgi?id=286861
-
-Bug-Description:
-
-When the bash arithmetic expression evaluator has temporarily turned off
-evalation, such as when parsing a pre- or post-decrement or -increment
-operator, and an error occurs, evaluation is not re-enabled.
-
-Patch:
-
-*** ../bash-3.2-patched/expr.c 2007-08-25 13:47:05.000000000 -0400
---- expr.c 2007-10-18 08:08:44.000000000 -0400
-***************
-*** 287,290 ****
---- 287,292 ----
- }
- free (expr_stack[expr_depth]); /* free the allocated EXPR_CONTEXT */
-+
-+ noeval = 0; /* XXX */
- }
-
-***************
-*** 320,323 ****
---- 322,326 ----
-
- val = 0;
-+ noeval = 0;
-
- FASTCOPY (evalbuf, oevalbuf, sizeof (evalbuf));
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-030 b/src/patches/bash/bash32-030
deleted file mode 100644
index 3f12c28..0000000
--- a/src/patches/bash/bash32-030
+++ /dev/null
@@ -1,50 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-030
-
-Bug-Reported-by: Paul Eggert
eggert@cs.ucla.edu Andreas Schwab
schwab@suse.de
-Bug-Reference-ID:
877il0nu84.fsf_-_@penguin.cs.ucla.edu m28x5gparz.fsf@igel.home
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2007-11/msg00023.html http://lists.gnu.org/archive/html/bug-bash/2007-11/msg00022.htmlhttp://lists...
-
-Bug-Description:
-
-If redirections attached to a compound command fail, bash does not set the
-command's exit status correctly. This only happens when the command is the
-first in a sequential list.
-
-Patch:
-
-*** ../bash-3.2-patched/execute_cmd.c 2007-03-24 14:51:05.000000000 -0400
---- execute_cmd.c 2007-11-05 22:31:14.000000000 -0500
-***************
-*** 615,619 ****
- redirection_undo_list = (REDIRECT *)NULL;
- dispose_exec_redirects ();
-! return (EXECUTION_FAILURE);
- }
-
---- 620,624 ----
- redirection_undo_list = (REDIRECT *)NULL;
- dispose_exec_redirects ();
-! return (last_command_exit_value = EXECUTION_FAILURE);
- }
-
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-031 b/src/patches/bash/bash32-031
deleted file mode 100644
index 6c96fb9..0000000
--- a/src/patches/bash/bash32-031
+++ /dev/null
@@ -1,62 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-031
-
-Bug-Reported-by: Miroslav Lichvar
mlichvar@redhat.com
-Bug-Reference-ID: Fri, 02 Nov 2007 14:07:45 +0100
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-readline/2007-11/msg00000.html
-
-Bug-Description:
-
-In certain cases when outputting characters at the end of the line,
-e.g., when displaying the prompt string, readline positions the cursor
-incorrectly if the prompt string contains invisible characters and the
-text being drawn begins before the last invisible character in the line.
-
-Patch:
-
-*** ../bash-3.2-patched/lib/readline/display.c 2007-08-25 13:47:08.000000000 -0400
---- lib/readline/display.c 2007-11-10 17:51:29.000000000 -0500
-***************
-*** 1566,1574 ****
- else
- {
-- /* We have horizontal scrolling and we are not inserting at
-- the end. We have invisible characters in this line. This
-- is a dumb update. */
- _rl_output_some_chars (nfd, temp);
- _rl_last_c_pos += col_temp;
- return;
- }
---- 1619,1632 ----
- else
- {
- _rl_output_some_chars (nfd, temp);
- _rl_last_c_pos += col_temp;
-+ /* If nfd begins before any invisible characters in the prompt,
-+ adjust _rl_last_c_pos to account for wrap_offset and set
-+ cpos_adjusted to let the caller know. */
-+ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible))
-+ {
-+ _rl_last_c_pos -= wrap_offset;
-+ cpos_adjusted = 1;
-+ }
- return;
- }
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-032 b/src/patches/bash/bash32-032
deleted file mode 100644
index 5e53e29..0000000
--- a/src/patches/bash/bash32-032
+++ /dev/null
@@ -1,47 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-032
-
-Bug-Reported-by: Uwe Doering
gemini@geminix.org
-Bug-Reference-ID:
46F3DD72.2090801@geminix.org
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2007-09/msg00102.html
-
-Bug-Description:
-
-There is an off-by-one error in the code that buffers characters received
-very quickly in succession, causing characters to be dropped.
-
-Patch:
-
-*** ../bash-3.2-patched/lib/readline/input.c 2007-08-25 13:47:10.000000000 -0400
---- lib/readline/input.c 2007-10-12 22:55:25.000000000 -0400
-***************
-*** 155,159 ****
- pop_index--;
- if (pop_index < 0)
-! pop_index = ibuffer_len - 1;
- ibuffer[pop_index] = key;
- return (1);
---- 155,159 ----
- pop_index--;
- if (pop_index < 0)
-! pop_index = ibuffer_len;
- ibuffer[pop_index] = key;
- return (1);
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-033 b/src/patches/bash/bash32-033
deleted file mode 100644
index 0d69810..0000000
--- a/src/patches/bash/bash32-033
+++ /dev/null
@@ -1,88 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-033
-
-Bug-Reported-by: Christophe Martin
schplurtz@free.fr
-Bug-Reference-ID:
465ABA4A.3030805@free.fr
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2007-05/msg00104.html
-
-Bug-Description:
-
-References made within a function to an uninitialized local array variable
-using the [*] subscript in a double-quoted string can result in spurious
-ASCII 127 characters in the expanded value.
-
-Patch:
-
-*** ../bash-3.2-patched/arrayfunc.c 2007-08-25 13:47:05.000000000 -0400
---- arrayfunc.c 2007-05-31 11:55:46.000000000 -0400
-***************
-*** 723,727 ****
- {
- if (rtype)
-! *rtype = 1;
- if (allow_all == 0)
- {
---- 723,727 ----
- {
- if (rtype)
-! *rtype = (t[0] == '*') ? 1 : 2;
- if (allow_all == 0)
- {
-*** ../bash-3.2-patched/subst.c 2007-08-25 13:47:08.000000000 -0400
---- subst.c 2007-11-14 15:43:00.000000000 -0500
-***************
-*** 4908,4915 ****
- intmax_t arg_index;
- SHELL_VAR *var;
-! int atype;
-
- ret = 0;
- temp = 0;
-
- /* Handle multiple digit arguments, as in ${11}. */
---- 4973,4981 ----
- intmax_t arg_index;
- SHELL_VAR *var;
-! int atype, rflags;
-
- ret = 0;
- temp = 0;
-+ rflags = 0;
-
- /* Handle multiple digit arguments, as in ${11}. */
-***************
-*** 4944,4947 ****
---- 5010,5015 ----
- ? quote_string (temp)
- : quote_escapes (temp);
-+ else if (atype == 1 && temp && QUOTED_NULL (temp) && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
-+ rflags |= W_HASQUOTEDNULL;
- }
- #endif
-***************
-*** 4971,4974 ****
---- 5039,5043 ----
- ret = alloc_word_desc ();
- ret->word = temp;
-+ ret->flags |= rflags;
- }
- return ret;
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-034 b/src/patches/bash/bash32-034
deleted file mode 100644
index 4f08162..0000000
--- a/src/patches/bash/bash32-034
+++ /dev/null
@@ -1,74 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-034
-
-Bug-Reported-by: Ian Campbell
ian.campbell@xensource.com
-Bug-Reference-ID:
EXCHPAFExU3l5bhn1ow00001dfe@rpc.xensource.com
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2007-10/msg00060.html
-
-Bug-Description:
-
-The bash getcwd replacement will write past the end of allocated memory
-when it allocates the buffer itself if it uses the buffer size passed as
-an argument, and that size is less than the length of the pathname.
-
-Patch:
-
-*** ../bash-3.2-patched/lib/sh/getcwd.c 2004-07-21 17:15:19.000000000 -0400
---- lib/sh/getcwd.c 2007-12-31 19:26:36.000000000 -0500
-***************
-*** 252,268 ****
- {
- size_t len = pathbuf + pathsize - pathp;
- if (buf == NULL)
- {
-! if (len < (size_t) size)
-! len = size;
-! buf = (char *) malloc (len);
- if (buf == NULL)
- goto lose2;
- }
-! else if ((size_t) size < len)
-! {
-! errno = ERANGE;
-! goto lose2;
-! }
- (void) memcpy((PTR_T) buf, (PTR_T) pathp, len);
- }
---- 287,305 ----
- {
- size_t len = pathbuf + pathsize - pathp;
-+ if (buf == NULL && size <= 0)
-+ size = len;
-+
-+ if ((size_t) size < len)
-+ {
-+ errno = ERANGE;
-+ goto lose2;
-+ }
- if (buf == NULL)
- {
-! buf = (char *) malloc (size);
- if (buf == NULL)
- goto lose2;
- }
-!
- (void) memcpy((PTR_T) buf, (PTR_T) pathp, len);
- }
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-035 b/src/patches/bash/bash32-035
deleted file mode 100644
index 55506ba..0000000
--- a/src/patches/bash/bash32-035
+++ /dev/null
@@ -1,159 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-035
-
-Bug-Reported-by: Ingo Molnar
mingo@elte.hu
-Bug-Reference-ID:
20071205202901.GA25202@elte.hu
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2007-12/msg00014.html
-
-Bug-Description:
-
-Bash incorrectly puts the second and subsequent children spawned by a
-shell forked to run a command substitution in the wrong process group.
-
-Patch:
-
-*** ../bash-3.2-patched/subst.c 2007-12-13 22:31:21.000000000 -0500
---- subst.c 2008-01-17 22:48:15.000000000 -0500
-***************
-*** 4621,4627 ****
-
- #if defined (JOB_CONTROL)
- set_sigchld_handler ();
- stop_making_children ();
-! pipeline_pgrp = old_pipeline_pgrp;
- #else
- stop_making_children ();
---- 4721,4728 ----
-
- #if defined (JOB_CONTROL)
- set_sigchld_handler ();
- stop_making_children ();
-! if (pid != 0)
-! pipeline_pgrp = old_pipeline_pgrp;
- #else
- stop_making_children ();
-*** ../bash-3.2-patched/jobs.c 2007-08-25 13:46:59.000000000 -0400
---- jobs.c 2007-12-08 16:47:43.000000000 -0500
-***************
-*** 251,254 ****
---- 251,255 ----
- static int set_job_status_and_cleanup __P((int));
-
-+ static WAIT job_signal_status __P((int));
- static WAIT raw_job_exit_status __P((int));
-
-***************
-*** 2220,2223 ****
---- 2238,2261 ----
- }
-
-+ static WAIT
-+ job_signal_status (job)
-+ int job;
-+ {
-+ register PROCESS *p;
-+ WAIT s;
-+
-+ p = jobs[job]->pipe;
-+ do
-+ {
-+ s = p->status;
-+ if (WIFSIGNALED(s) || WIFSTOPPED(s))
-+ break;
-+ p = p->next;
-+ }
-+ while (p != jobs[job]->pipe);
-+
-+ return s;
-+ }
-+
- /* Return the exit status of the last process in the pipeline for job JOB.
- This is the exit status of the entire job. */
-***************
-*** 2302,2310 ****
- received, only if one of the jobs run is killed via SIGINT. If
- job control is not set, the job will be run in the same pgrp as
-! the shell, and the shell will see any signals the job gets. */
-
- /* This is possibly a race condition -- should it go in stop_pipeline? */
- wait_sigint_received = 0;
-! if (job_control == 0)
- {
- old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
---- 2343,2354 ----
- received, only if one of the jobs run is killed via SIGINT. If
- job control is not set, the job will be run in the same pgrp as
-! the shell, and the shell will see any signals the job gets. In
-! fact, we want this set every time the waiting shell and the waited-
-! for process are in the same process group, including command
-! substitution. */
-
- /* This is possibly a race condition -- should it go in stop_pipeline? */
- wait_sigint_received = 0;
-! if (job_control == 0 || (subshell_environment&SUBSHELL_COMSUB))
- {
- old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
-***************
-*** 2452,2464 ****
- the last process in the pipeline. If no process exits due to a
- signal, S is left as the status of the last job in the pipeline. */
-! p = jobs[job]->pipe;
-! do
-! {
-! s = p->status;
-! if (WIFSIGNALED(s) || WIFSTOPPED(s))
-! break;
-! p = p->next;
-! }
-! while (p != jobs[job]->pipe);
-
- if (WIFSIGNALED (s) || WIFSTOPPED (s))
---- 2496,2500 ----
- the last process in the pipeline. If no process exits due to a
- signal, S is left as the status of the last job in the pipeline. */
-! s = job_signal_status (job);
-
- if (WIFSIGNALED (s) || WIFSTOPPED (s))
-***************
-*** 2494,2497 ****
---- 2530,2551 ----
- }
- }
-+ else if ((subshell_environment & SUBSHELL_COMSUB) && wait_sigint_received)
-+ {
-+ /* If waiting for a job in a subshell started to do command
-+ substitution, simulate getting and being killed by the SIGINT to
-+ pass the status back to our parent. */
-+ s = job_signal_status (job);
-+
-+ if (WIFSIGNALED (s) && WTERMSIG (s) == SIGINT && signal_is_trapped (SIGINT) == 0)
-+ {
-+ UNBLOCK_CHILD (oset);
-+ restore_sigint_handler ();
-+ old_sigint_handler = set_signal_handler (SIGINT, SIG_DFL);
-+ if (old_sigint_handler == SIG_IGN)
-+ restore_sigint_handler ();
-+ else
-+ kill (getpid (), SIGINT);
-+ }
-+ }
-
- /* Moved here from set_job_status_and_cleanup, which is in the SIGCHLD
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-036 b/src/patches/bash/bash32-036
deleted file mode 100644
index ef22e60..0000000
--- a/src/patches/bash/bash32-036
+++ /dev/null
@@ -1,44 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-036
-
-Bug-Reported-by: Len Lattanzi
llattanzi@apple.com
-Bug-Reference-ID:
87493131-7AEC-4301-A684-E6CC6D06E3E1@apple.com
-Bug-Reference-URL:
-
-Bug-Description:
-
-When initializing a subshell, bash did not reset a sentinel keeping track
-of the number of command substitutions, leading to an infinite loop if
-an error was encountered in the subshell.
-
-Patch:
-
-*** ../bash-3.2-patched/execute_cmd.c 2007-12-13 22:31:14.000000000 -0500
---- execute_cmd.c 2007-12-20 08:52:34.000000000 -0500
-***************
-*** 3881,3884 ****
---- 3916,3921 ----
-
- clear_unwind_protect_list (0);
-+ /* XXX -- are there other things we should be resetting here? */
-+ parse_and_execute_level = 0; /* nothing left to restore it */
-
- /* We're no longer inside a shell function. */
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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/bash32-037 b/src/patches/bash/bash32-037
deleted file mode 100644
index 376bd93..0000000
--- a/src/patches/bash/bash32-037
+++ /dev/null
@@ -1,110 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-037
-
-Bug-Reported-by: jared r r spiegel
jrrs@iorek.ice-nine.org
-Bug-Reference-ID:
200801152201.m0FM1lDp021260@iorek.ice-nine.org
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2008-01/msg00049.html
-
-Bug-Description:
-
-Bash inappropriately evaluates command substitutions while expanding
-directory names as part of command substitution.
-
-Patch:
-
-*** ../bash-3.2-patched/subst.c 2007-12-13 22:31:21.000000000 -0500
---- subst.c 2008-01-17 22:48:15.000000000 -0500
-***************
-*** 2815,2821 ****
- to jump_to_top_level here so we don't endlessly loop. */
- WORD_LIST *
-! expand_prompt_string (string, quoted)
- char *string;
- int quoted;
- {
- WORD_LIST *value;
---- 2895,2902 ----
- to jump_to_top_level here so we don't endlessly loop. */
- WORD_LIST *
-! expand_prompt_string (string, quoted, wflags)
- char *string;
- int quoted;
-+ int wflags;
- {
- WORD_LIST *value;
-***************
-*** 2825,2829 ****
- return ((WORD_LIST *)NULL);
-
-! td.flags = 0;
- td.word = savestring (string);
-
---- 2906,2910 ----
- return ((WORD_LIST *)NULL);
-
-! td.flags = wflags;
- td.word = savestring (string);
-
-*** ../bash-3.2-patched/subst.h 2007-03-24 14:51:05.000000000 -0400
---- subst.h 2008-01-17 22:46:08.000000000 -0500
-***************
-*** 136,140 ****
-
- /* Expand a prompt string. */
-! extern WORD_LIST *expand_prompt_string __P((char *, int));
-
- /* Expand STRING just as if you were expanding a word. This also returns
---- 137,141 ----
-
- /* Expand a prompt string. */
-! extern WORD_LIST *expand_prompt_string __P((char *, int, int));
-
- /* Expand STRING just as if you were expanding a word. This also returns
-*** ../bash-3.2-patched/parse.y 2007-08-25 13:47:06.000000000 -0400
---- parse.y 2008-01-17 22:46:30.000000000 -0500
-***************
-*** 4367,4371 ****
- {
- last_exit_value = last_command_exit_value;
-! list = expand_prompt_string (result, Q_DOUBLE_QUOTES);
- free (result);
- result = string_list (list);
---- 4367,4371 ----
- {
- last_exit_value = last_command_exit_value;
-! list = expand_prompt_string (result, Q_DOUBLE_QUOTES, 0);
- free (result);
- result = string_list (list);
-*** ../bash-3.2-patched/bashline.c 2006-07-29 16:39:30.000000000 -0400
---- bashline.c 2008-02-17 12:53:42.000000000 -0500
-***************
-*** 2358,2362 ****
- {
- new_dirname = savestring (local_dirname);
-! wl = expand_prompt_string (new_dirname, 0); /* does the right thing */
- if (wl)
- {
---- 2376,2380 ----
- {
- new_dirname = savestring (local_dirname);
-! wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB); /* does the right thing */
- if (wl)
- {
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 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_ */
diff --git a/src/patches/bash/bash32-038 b/src/patches/bash/bash32-038
deleted file mode 100644
index 842b1b5..0000000
--- a/src/patches/bash/bash32-038
+++ /dev/null
@@ -1,80 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-038
-
-Bug-Reported-by: Wojciech Puchar
wojtek@wojtek.tensor.gdynia.pl
-Bug-Reference-ID:
200803131141.m2DBf9vo001136@wojtek.tensor.gdynia.pl
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2008-03/msg00029.html
-
-Bug-Description:
-
-When reading input lines into a single variable using the `read' builtin,
-bash did not free the memory it read after assigining it to the named
-variable, causing a memory leak noticable when reading large amounts of
-data.
-
-
-Patch:
-
-*** ../bash-3.2-patched/builtins/read.def 2007-08-25 13:47:07.000000000 -0400
---- builtins/read.def 2008-03-07 12:55:47.000000000 -0500
-***************
-*** 135,139 ****
- char c;
- char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname;
-! char *e, *t, *t1, *ps2;
- struct stat tsb;
- SHELL_VAR *var;
---- 152,156 ----
- char c;
- char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname;
-! char *e, *t, *t1, *ps2, *tofree;
- struct stat tsb;
- SHELL_VAR *var;
-***************
-*** 675,678 ****
---- 728,732 ----
- /* Check whether or not the number of fields is exactly the same as the
- number of variables. */
-+ tofree = NULL;
- if (*input_string)
- {
-***************
-*** 680,684 ****
- t = get_word_from_string (&input_string, ifs_chars, &e);
- if (*input_string == 0)
-! input_string = t;
- else
- input_string = strip_trailing_ifs_whitespace (t1, ifs_chars, saw_escape);
---- 734,738 ----
- t = get_word_from_string (&input_string, ifs_chars, &e);
- if (*input_string == 0)
-! tofree = input_string = t;
- else
- input_string = strip_trailing_ifs_whitespace (t1, ifs_chars, saw_escape);
-***************
-*** 695,698 ****
---- 749,754 ----
- var = bind_read_variable (list->word->word, input_string);
- stupidly_hack_special_variables (list->word->word);
-+ FREE (tofree);
-+
- if (var)
- VUNSETATTR (var, att_invisible);
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 37
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 38
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-039 b/src/patches/bash/bash32-039
deleted file mode 100644
index c225a5a..0000000
--- a/src/patches/bash/bash32-039
+++ /dev/null
@@ -1,175 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-039
-
-Bug-Reported-by: rew@erebor.com
-Bug-Reference-ID:
20070119065603.546D011E9C@kansas.erebor.com
-Bug-Reference-URL:
-
-Bug-Description:
-
-Bash-3.2 changed the behavior of the [[ command's `=~' operator when the
-right-hand side was quoted: it matched the quoted portions as strings.
-This patch introduces a new shell option: compat31. When enabled, it
-restores the bash-3.1 behavior with respect to evaluating quoted arguments
-to the =~ operator.
-
-Patch:
-
-*** ../bash-3.2-patched/execute_cmd.c 2007-12-14 21:12:39.000000000 -0500
---- execute_cmd.c 2008-02-22 21:20:40.000000000 -0500
-***************
-*** 2547,2551 ****
- if (arg1 == 0)
- arg1 = nullstr;
-! arg2 = cond_expand_word (cond->right->op, rmatch ? 2 : (patmatch ? 1 : 0));
- if (arg2 == 0)
- arg2 = nullstr;
---- 2552,2557 ----
- if (arg1 == 0)
- arg1 = nullstr;
-! arg2 = cond_expand_word (cond->right->op,
-! (rmatch && shell_compatibility_level > 31) ? 2 : (patmatch ? 1 : 0));
- if (arg2 == 0)
- arg2 = nullstr;
-*** ../bash-3.2-patched/shell.h 2003-06-01 15:04:36.000000000 -0400
---- shell.h 2008-02-22 21:16:48.000000000 -0500
-***************
-*** 90,93 ****
---- 90,94 ----
- extern int interactive, interactive_shell;
- extern int startup_state;
-+ extern int shell_compatibility_level;
-
- /* Structure to pass around that holds a bitmap of file descriptors
-*** ../bash-3.2-patched/version.c 2007-12-14 21:12:29.000000000 -0500
---- version.c 2008-04-10 08:22:22.000000000 -0400
-***************
-*** 44,47 ****
---- 44,50 ----
- const char *sccs_version = SCCSVERSION;
-
-+ /* If == 31, shell compatible with bash-3.1, == 32 with bash-3.2, and so on */
-+ int shell_compatibility_level = 32;
-+
- /* Functions for getting, setting, and displaying the shell version. */
-
-*** ../bash-3.2-patched/builtins/shopt.def 2005-02-19 17:25:03.000000000 -0500
---- builtins/shopt.def 2008-04-10 08:13:32.000000000 -0400
-***************
-*** 102,105 ****
---- 102,107 ----
- static int set_shellopts_after_change __P((int));
-
-+ static int set_compatibility_level __P((int));
-+
- #if defined (RESTRICTED_SHELL)
- static int set_restricted_shell __P((int));
-***************
-*** 107,110 ****
---- 109,113 ----
-
- static int shopt_login_shell;
-+ static int shopt_compat31;
-
- typedef int shopt_set_func_t __P((int));
-***************
-*** 122,125 ****
---- 125,129 ----
- { "cmdhist", &command_oriented_history, (shopt_set_func_t *)NULL },
- #endif
-+ { "compat31", &shopt_compat31, set_compatibility_level },
- { "dotglob", &glob_dot_filenames, (shopt_set_func_t *)NULL },
- { "execfail", &no_exit_on_failed_exec, (shopt_set_func_t *)NULL },
-***************
-*** 460,463 ****
---- 464,479 ----
- }
-
-+ static int
-+ set_compatibility_level (mode)
-+ int mode;
-+ {
-+ /* Need to change logic here as we add more compatibility levels */
-+ if (shopt_compat31)
-+ shell_compatibility_level = 31;
-+ else
-+ shell_compatibility_level = 32;
-+ return 0;
-+ }
-+
- #if defined (RESTRICTED_SHELL)
- /* Don't allow the value of restricted_shell to be modified. */
-*** ../bash-3.2-patched/doc/bash.1 2006-09-28 10:26:05.000000000 -0400
---- doc/bash.1 2008-04-25 12:32:49.000000000 -0400
-***************
-*** 7978,7981 ****
---- 8200,8209 ----
- easy re-editing of multi-line commands.
- .TP 8
-+ .B compat31
-+ If set,
-+ .B bash
-+ changes its behavior to that of version 3.1 with respect to quoted
-+ arguments to the conditional command's =~ operator.
-+ .TP 8
- .B dotglob
- If set,
-*** ../bash-20080214/doc/bashref.texi 2008-02-08 21:28:35.000000000 -0500
---- doc/bashref.texi 2008-02-22 21:44:51.000000000 -0500
-***************
-*** 4053,4056 ****
---- 4061,4069 ----
- easy re-editing of multi-line commands.
-
-+ @item compat31
-+ If set, Bash
-+ changes its behavior to that of version 3.1 with respect to quoted
-+ arguments to the conditional command's =~ operator.
-+
- @item dotglob
- If set, Bash includes filenames beginning with a `.' in
-*** ../bash-3.2-patched/tests/shopt.right 2005-02-19 17:46:09.000000000 -0500
---- tests/shopt.right 2008-04-28 09:13:07.000000000 -0400
-***************
-*** 7,10 ****
---- 7,11 ----
- shopt -u checkwinsize
- shopt -s cmdhist
-+ shopt -u compat31
- shopt -u dotglob
- shopt -u execfail
-***************
-*** 54,57 ****
---- 55,59 ----
- shopt -u checkhash
- shopt -u checkwinsize
-+ shopt -u compat31
- shopt -u dotglob
- shopt -u execfail
-***************
-*** 78,81 ****
---- 80,84 ----
- checkhash off
- checkwinsize off
-+ compat31 off
- dotglob off
- execfail off
-
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 38
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 39
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-040 b/src/patches/bash/bash32-040
deleted file mode 100644
index 50b85bb..0000000
--- a/src/patches/bash/bash32-040
+++ /dev/null
@@ -1,47 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-040
-
-Bug-Reported-by: John McCabe-Dansted
-Bug-Reference-ID:
-Bug-Reference-URL:
https://bugs.launchpad.net/ubuntu/+source/bash/+bug/202885
-
-Bug-Description:
-
-When using the `set' builtin to list all shell variables, the shell uses
-the wrong variable when computing the length of a variable's value.
-
-Patch:
-
-*** ../bash-3.2-patched/array.c 2007-03-24 14:51:03.000000000 -0400
---- array.c 2008-08-17 13:07:04.000000000 -0400
-***************
-*** 684,688 ****
- valstr = element_value (ae) ? sh_double_quote (element_value(ae))
- : (char *)NULL;
-! elen = STRLEN (indstr) + 8 + STRLEN (valstr);
- RESIZE_MALLOCED_BUFFER (result, rlen, (elen + 1), rsize, rsize);
-
---- 809,813 ----
- valstr = element_value (ae) ? sh_double_quote (element_value(ae))
- : (char *)NULL;
-! elen = STRLEN (is) + 8 + STRLEN (valstr);
- RESIZE_MALLOCED_BUFFER (result, rlen, (elen + 1), rsize, rsize);
-
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 39
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 40
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-041 b/src/patches/bash/bash32-041
deleted file mode 100644
index 3c05c04..0000000
--- a/src/patches/bash/bash32-041
+++ /dev/null
@@ -1,154 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-041
-
-Bug-Reported-by: Dan Jacobson
jidanni@jidanni.org
-Bug-Reference-ID:
873arjs11h.fsf@jidanni.org
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2008-02/msg00049.html
-
-Bug-Description:
-
-Bash saved and restored the value of `set -o history' while sourcing files,
-preventing users from turning off history with `set +o history' in .bashrc.
-
-Patch:
-
-*** ../bash-3.2-patched/bashhist.c 2005-12-26 13:31:16.000000000 -0500
---- bashhist.c 2008-08-17 13:07:40.000000000 -0400
-***************
-*** 81,84 ****
---- 81,85 ----
- becomes zero when we read lines from a file, for example. */
- int remember_on_history = 1;
-+ int enable_history_list = 1; /* value for `set -o history' */
-
- /* The number of lines that Bash has added to this history session. The
-***************
-*** 235,239 ****
- history_expansion_inhibited = 1;
- #endif
-! remember_on_history = interact != 0;
- history_inhibit_expansion_function = bash_history_inhibit_expansion;
- }
---- 236,240 ----
- history_expansion_inhibited = 1;
- #endif
-! remember_on_history = enable_history_list = interact != 0;
- history_inhibit_expansion_function = bash_history_inhibit_expansion;
- }
-*** ../bash-3.2-patched/builtins/set.def 2006-07-27 09:41:43.000000000 -0400
---- builtins/set.def 2008-08-14 16:33:41.000000000 -0400
-***************
-*** 190,194 ****
- #endif /* BANG_HISTORY */
- #if defined (HISTORY)
-! { "history", '\0', &remember_on_history, bash_set_history, (setopt_get_func_t *)NULL },
- #endif
- { "ignoreeof", '\0', &ignoreeof, set_ignoreeof, (setopt_get_func_t *)NULL },
---- 198,202 ----
- #endif /* BANG_HISTORY */
- #if defined (HISTORY)
-! { "history", '\0', &enable_history_list, bash_set_history, (setopt_get_func_t *)NULL },
- #endif
- { "ignoreeof", '\0', &ignoreeof, set_ignoreeof, (setopt_get_func_t *)NULL },
-***************
-*** 382,385 ****
---- 390,394 ----
- if (on_or_off == FLAG_ON)
- {
-+ enable_history_list = 1;
- bash_history_enable ();
- if (history_lines_this_session == 0)
-***************
-*** 387,392 ****
- }
- else
-! bash_history_disable ();
-! return (1 - remember_on_history);
- }
- #endif
---- 396,404 ----
- }
- else
-! {
-! enable_history_list = 0;
-! bash_history_disable ();
-! }
-! return (1 - enable_history_list);
- }
- #endif
-***************
-*** 566,570 ****
- {
- #if defined (HISTORY)
-! remember_on_history = 1;
- #endif
- ignoreeof = 0;
---- 578,582 ----
- {
- #if defined (HISTORY)
-! remember_on_history = enable_history_list = 1;
- #endif
- ignoreeof = 0;
-*** ../bash-3.2-patched/builtins/evalstring.c 2006-07-28 15:12:16.000000000 -0400
---- builtins/evalstring.c 2008-11-10 21:17:16.000000000 -0500
-***************
-*** 68,71 ****
---- 68,79 ----
- static int cat_file __P((REDIRECT *));
-
-+ #if defined (HISTORY)
-+ static void
-+ set_history_remembering ()
-+ {
-+ remember_on_history = enable_history_list;
-+ }
-+ #endif
-+
- /* How to force parse_and_execute () to clean up after itself. */
- void
-***************
-*** 116,120 ****
-
- #if defined (HISTORY)
-! unwind_protect_int (remember_on_history); /* can be used in scripts */
- # if defined (BANG_HISTORY)
- if (interactive_shell)
---- 124,131 ----
-
- #if defined (HISTORY)
-! if (parse_and_execute_level == 0)
-! add_unwind_protect (set_history_remembering, (char *)NULL);
-! else
-! unwind_protect_int (remember_on_history); /* can be used in scripts */
- # if defined (BANG_HISTORY)
- if (interactive_shell)
-*** ../bash-3.2-patched/bashhist.h 2005-07-01 15:44:41.000000000 -0400
---- bashhist.h 2008-08-17 12:51:07.000000000 -0400
-***************
-*** 32,35 ****
---- 32,38 ----
-
- extern int remember_on_history;
-+ extern int enable_history_list; /* value for `set -o history' */
-+ extern int literal_history; /* controlled by `shopt lithist' */
-+ extern int force_append_history;
- extern int history_lines_this_session;
- extern int history_lines_in_file;
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 40
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 41
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-042 b/src/patches/bash/bash32-042
deleted file mode 100644
index 4c9f4d6..0000000
--- a/src/patches/bash/bash32-042
+++ /dev/null
@@ -1,48 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-042
-
-Bug-Reported-by: Archimerged Ark Submedes
archimerged@gmail.com
-Bug-Reference-ID:
5ba4bef00804182116g65ff71e0qdffcf672f205e708@mail.gmail.com
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2008-04/msg00041.html
-
-Bug-Description:
-
-An operator precedence error prevented the bash arithmetic evaluator from
-parsing conditional commands correctly.
-
-Patch:
-
-*** ../bash-3.2-patched/expr.c 2007-12-13 22:30:43.000000000 -0500
---- expr.c 2008-08-17 13:09:59.000000000 -0400
-***************
-*** 521,525 ****
- noeval++;
- }
-! val2 = explor ();
- if (set_noeval)
- noeval--;
---- 521,526 ----
- noeval++;
- }
-!
-! val2 = expcond ();
- if (set_noeval)
- noeval--;
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 41
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 42
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-043 b/src/patches/bash/bash32-043
deleted file mode 100644
index 5a51843..0000000
--- a/src/patches/bash/bash32-043
+++ /dev/null
@@ -1,62 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-043
-
-Bug-Reported-by: Morita Sho
morita-pub-en-debian@inz.sakura.ne.jp
-Bug-Reference-ID:
-Bug-Reference-URL:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=478096
-
-Bug-Description:
-
-Side effects caused by setting function-local versions of variables bash
-handles specially persisted after the function returned.
-
-Patch:
-
-*** ../bash-3.2-patched/variables.c 2007-08-25 13:47:05.000000000 -0400
---- variables.c 2008-11-09 17:47:31.000000000 -0500
-***************
-*** 3459,3465 ****
- var->attributes &= ~(att_tempvar|att_propagate);
- else
-! shell_variables->flags |= VC_HASTMPVAR;
- v->attributes |= var->attributes;
- }
-
- dispose_variable (var);
---- 3771,3779 ----
- var->attributes &= ~(att_tempvar|att_propagate);
- else
-! shell_variables->flags |= VC_HASTMPVAR;
- v->attributes |= var->attributes;
- }
-+ else
-+ stupidly_hack_special_variables (var->name); /* XXX */
-
- dispose_variable (var);
-***************
-*** 3548,3551 ****
---- 3862,3867 ----
- v->attributes |= var->attributes;
- }
-+ else
-+ stupidly_hack_special_variables (var->name); /* XXX */
-
- dispose_variable (var);
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 42
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 43
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-044 b/src/patches/bash/bash32-044
deleted file mode 100644
index 3e7a392..0000000
--- a/src/patches/bash/bash32-044
+++ /dev/null
@@ -1,150 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-044
-
-Bug-Reported-by: slinkp
stuff@slinkp.com
-Bug-Reference-ID:
da52a26a-9f38-4861-a918-14d3482b539d@c65g2000hsa.googlegroups.com
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2008-05/msg00085.html
-
-Bug-Description:
-
-The presence of invisible characters in a prompt longer than the screenwidth
-with invisible characters on the first and last prompt lines caused readline
-to place the cursor in the wrong physical location.
-
-Patch:
-
-*** ../bash-3.2-patched/lib/readline/display.c 2007-12-14 21:12:40.000000000 -0500
---- lib/readline/display.c 2008-10-23 09:39:46.000000000 -0400
-***************
-*** 911,914 ****
---- 944,951 ----
- OFFSET (which has already been calculated above). */
-
-+ #define INVIS_FIRST() (prompt_physical_chars > _rl_screenwidth ? prompt_invis_chars_first_line : wrap_offset)
-+ #define WRAP_OFFSET(line, offset) ((line == 0) \
-+ ? (offset ? INVIS_FIRST() : 0) \
-+ : ((line == prompt_last_screen_line) ? wrap_offset-prompt_invis_chars_first_line : 0))
- #define W_OFFSET(line, offset) ((line) == 0 ? offset : 0)
- #define VIS_LLEN(l) ((l) > _rl_vis_botlin ? 0 : (vis_lbreaks[l+1] - vis_lbreaks[l]))
-***************
-*** 945,949 ****
- _rl_last_c_pos > wrap_offset &&
- o_cpos < prompt_last_invisible)
-! _rl_last_c_pos -= wrap_offset;
-
- /* If this is the line with the prompt, we might need to
---- 982,992 ----
- _rl_last_c_pos > wrap_offset &&
- o_cpos < prompt_last_invisible)
-! _rl_last_c_pos -= prompt_invis_chars_first_line; /* XXX - was wrap_offset */
-! else if (linenum == prompt_last_screen_line && prompt_physical_chars > _rl_screenwidth &&
-! (MB_CUR_MAX > 1 && rl_byte_oriented == 0) &&
-! cpos_adjusted == 0 &&
-! _rl_last_c_pos != o_cpos &&
-! _rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - prompt_invis_chars_first_line))
-! _rl_last_c_pos -= (wrap_offset-prompt_invis_chars_first_line);
-
- /* If this is the line with the prompt, we might need to
-***************
-*** 1205,1209 ****
- {
- register char *ofd, *ols, *oe, *nfd, *nls, *ne;
-! int temp, lendiff, wsatend, od, nd, o_cpos;
- int current_invis_chars;
- int col_lendiff, col_temp;
---- 1264,1268 ----
- {
- register char *ofd, *ols, *oe, *nfd, *nls, *ne;
-! int temp, lendiff, wsatend, od, nd, twidth, o_cpos;
- int current_invis_chars;
- int col_lendiff, col_temp;
-***************
-*** 1221,1225 ****
- temp = _rl_last_c_pos;
- else
-! temp = _rl_last_c_pos - W_OFFSET(_rl_last_v_pos, visible_wrap_offset);
- if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode
- && _rl_last_v_pos == current_line - 1)
---- 1280,1284 ----
- temp = _rl_last_c_pos;
- else
-! temp = _rl_last_c_pos - WRAP_OFFSET (_rl_last_v_pos, visible_wrap_offset);
- if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode
- && _rl_last_v_pos == current_line - 1)
-***************
-*** 1587,1599 ****
- {
- _rl_output_some_chars (nfd + lendiff, temp - lendiff);
-- #if 1
- /* XXX -- this bears closer inspection. Fixes a redisplay bug
- reported against bash-3.0-alpha by Andreas Schwab involving
- multibyte characters and prompt strings with invisible
- characters, but was previously disabled. */
-! _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-col_lendiff);
-! #else
-! _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-lendiff);
-! #endif
- }
- }
---- 1648,1660 ----
- {
- _rl_output_some_chars (nfd + lendiff, temp - lendiff);
- /* XXX -- this bears closer inspection. Fixes a redisplay bug
- reported against bash-3.0-alpha by Andreas Schwab involving
- multibyte characters and prompt strings with invisible
- characters, but was previously disabled. */
-! if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
-! twidth = _rl_col_width (nfd+lendiff, 0, temp-col_lendiff);
-! else
-! twidth = temp - lendiff;
-! _rl_last_c_pos += twidth;
- }
- }
-***************
-*** 1789,1793 ****
- int cpos, dpos; /* current and desired cursor positions */
-
-! woff = W_OFFSET (_rl_last_v_pos, wrap_offset);
- cpos = _rl_last_c_pos;
- #if defined (HANDLE_MULTIBYTE)
---- 1850,1854 ----
- int cpos, dpos; /* current and desired cursor positions */
-
-! woff = WRAP_OFFSET (_rl_last_v_pos, wrap_offset);
- cpos = _rl_last_c_pos;
- #if defined (HANDLE_MULTIBYTE)
-***************
-*** 1803,1807 ****
- prompt string, since they're both buffer indices and DPOS is a
- desired display position. */
-! if (new > prompt_last_invisible) /* XXX - don't use woff here */
- {
- dpos -= woff;
---- 1864,1872 ----
- prompt string, since they're both buffer indices and DPOS is a
- desired display position. */
-! if ((new > prompt_last_invisible) || /* XXX - don't use woff here */
-! (prompt_physical_chars > _rl_screenwidth &&
-! _rl_last_v_pos == prompt_last_screen_line &&
-! wrap_offset != woff &&
-! new > (prompt_last_invisible-_rl_screenwidth-wrap_offset)))
- {
- dpos -= woff;
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 43
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 44
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-045 b/src/patches/bash/bash32-045
deleted file mode 100644
index 68b91ff..0000000
--- a/src/patches/bash/bash32-045
+++ /dev/null
@@ -1,50 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-045
-
-Bug-Reported-by: Roman Rakus
rrakus@redhat.com
-Bug-Reference-ID:
4864B4A0.1060402@redhat.com
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2008-06/msg00098.html
-
-Bug-Description:
-
-When short-circuiting execution due to the `break' or `continue' builtins,
-bash did not preserve the value of $?.
-
-Patch:
-
-*** ../bash-3.2-patched/execute_cmd.c 2008-04-28 22:00:24.000000000 -0400
---- execute_cmd.c 2008-10-18 14:35:03.000000000 -0400
-***************
-*** 502,507 ****
---- 514,526 ----
- volatile int save_line_number;
-
-+ #if 0
- if (command == 0 || breaking || continuing || read_but_dont_execute)
- return (EXECUTION_SUCCESS);
-+ #else
-+ if (breaking || continuing)
-+ return (last_command_exit_value);
-+ if (command == 0 || read_but_dont_execute)
-+ return (EXECUTION_SUCCESS);
-+ #endif
-
- QUIT;
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 44
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 45
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-046 b/src/patches/bash/bash32-046
deleted file mode 100644
index 78aaf01..0000000
--- a/src/patches/bash/bash32-046
+++ /dev/null
@@ -1,47 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-046
-
-Bug-Reported-by: Wang Xin
wxinee@gmail.com
-Bug-Reference-ID:
9a73e1570807062042ide16698m10e1b18036c95592@mail.gmail.com
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2008-07/msg00014.html
-
-Bug-Description:
-
-Bash did not compute the length of multibyte characters correctly when
-performing array element length references (e.g., ${#var[subscript]}).
-
-Patch:
-
-*** /usr/src/local/bash/bash-3.2-patched/subst.c 2008-04-28 22:00:20.000000000 -0400
---- subst.c 2008-11-10 22:02:38.000000000 -0500
-***************
-*** 4813,4817 ****
- t = (ind == 0) ? value_cell (var) : (char *)NULL;
-
-! len = STRLEN (t);
- return (len);
- }
---- 4813,4817 ----
- t = (ind == 0) ? value_cell (var) : (char *)NULL;
-
-! len = MB_STRLEN (t);
- return (len);
- }
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 45
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 46
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-047 b/src/patches/bash/bash32-047
deleted file mode 100644
index b8272b1..0000000
--- a/src/patches/bash/bash32-047
+++ /dev/null
@@ -1,65 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-047
-
-Bug-Reported-by: Roman Rakus
rrakus@redhat.com
-Bug-Reference-ID:
48A89EBC.906@redhat.com
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2008-08/msg00026.html
-
-Bug-Description:
-
-When using the `.' (source) builtin, under certain circumstances bash was
-too careful in discarding state to preserve internal consistency. One
-effect was that assignments to readonly variables would cause entire scripts
-to be aborted instead of execution of the offending command. This behavior
-was introduced by bash-3.2 patch 20.
-
-Patch:
-
-*** /usr/src/local/chet/src/bash/bash-3.2-patched/subst.c 2008-04-29 21:24:55.000000000 -0400
---- subst.c 2008-11-13 17:44:25.000000000 -0500
-***************
-*** 138,142 ****
- extern int last_command_exit_value, last_command_exit_signal;
- extern int subshell_environment;
-! extern int subshell_level;
- extern int eof_encountered;
- extern int return_catch_flag, return_catch_value;
---- 138,142 ----
- extern int last_command_exit_value, last_command_exit_signal;
- extern int subshell_environment;
-! extern int subshell_level, parse_and_execute_level;
- extern int eof_encountered;
- extern int return_catch_flag, return_catch_value;
-***************
-*** 7673,7677 ****
- expanding_redir = 0;
-
-! top_level_cleanup (); /* from sig.c */
-
- jump_to_top_level (v);
---- 7673,7679 ----
- expanding_redir = 0;
-
-! if (parse_and_execute_level == 0)
-! top_level_cleanup (); /* from sig.c */
-!
-
- jump_to_top_level (v);
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 46
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 47
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-048 b/src/patches/bash/bash32-048
deleted file mode 100644
index 551dade..0000000
--- a/src/patches/bash/bash32-048
+++ /dev/null
@@ -1,56 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-048
-
-Bug-Reported-by: Steffen Kiess
s-kiess@web.de
-Bug-Reference-ID:
1223929957.5383.6.camel@fips
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2008-10/msg00047.html
-
-Bug-Description:
-
-When invoked as `bash -c', bash did not execute an EXIT trap when the last
-command in the executed list was a command run from the file system.
-
-Patch:
-
-*** /Users/chet/src/bash/bash-3.2-patched/builtins/evalstring.c 2006-07-28 15:12:16.000000000 -0400
---- builtins/evalstring.c 2008-11-13 18:38:45.000000000 -0500
-***************
-*** 249,252 ****
---- 249,253 ----
- * we're not running a trap AND
- * we have parsed the full command (string == '\0') AND
-+ * we're not going to run the exit trap AND
- * we have a simple command without redirections AND
- * the command is not being timed AND
-***************
-*** 259,263 ****
- *bash_input.location.string == '\0' &&
- command->type == cm_simple &&
-! !command->redirects && !command->value.Simple->redirects &&
- ((command->flags & CMD_TIME_PIPELINE) == 0) &&
- ((command->flags & CMD_INVERT_RETURN) == 0))
---- 260,265 ----
- *bash_input.location.string == '\0' &&
- command->type == cm_simple &&
-! signal_is_trapped (EXIT_TRAP) == 0 &&
-! command->redirects == 0 && command->value.Simple->redirects == 0 &&
- ((command->flags & CMD_TIME_PIPELINE) == 0) &&
- ((command->flags & CMD_INVERT_RETURN) == 0))
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 47
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 48
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-049 b/src/patches/bash/bash32-049
deleted file mode 100644
index 469c4c8..0000000
--- a/src/patches/bash/bash32-049
+++ /dev/null
@@ -1,64 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-049
-
-Bug-Reported-by: Len Lattanzi
llattanzi@apple.com
-Bug-Reference-ID:
52B1297F-6675-45CC-B63E-24745337D006@apple.com
-Bug-Reference-URL:
-
-Bug-Description:
-
-On systems where mbrtowc() returns -2 when passed a length argument with
-value 0, when using a multibyte locale, Readline's emacs-mode forward-char
-at the end of a line will leave the point beyond the end of the line.
-
-Patch:
-
-*** ../bash-3.2-patched/lib/readline/mbutil.c 2009-05-29 23:09:26.000000000 -0400
---- lib/readline/mbutil.c 2009-05-29 23:10:12.000000000 -0400
-***************
-*** 78,82 ****
- int seed, count, find_non_zero;
- {
-! size_t tmp;
- mbstate_t ps;
- int point;
---- 78,82 ----
- int seed, count, find_non_zero;
- {
-! size_t tmp, len;
- mbstate_t ps;
- int point;
-***************
-*** 99,103 ****
- while (count > 0)
- {
-! tmp = mbrtowc (&wc, string+point, strlen(string + point), &ps);
- if (MB_INVALIDCH ((size_t)tmp))
- {
---- 99,106 ----
- while (count > 0)
- {
-! len = strlen (string + point);
-! if (len == 0)
-! break;
-! tmp = mbrtowc (&wc, string+point, len, &ps);
- if (MB_INVALIDCH ((size_t)tmp))
- {
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 48
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 49
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-050 b/src/patches/bash/bash32-050
deleted file mode 100644
index aef537e..0000000
--- a/src/patches/bash/bash32-050
+++ /dev/null
@@ -1,56 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-050
-
-Bug-Reported-by: Jan Hnatek
Jan.Hnatek@Sun.COM
-Bug-Reference-ID:
4A44991F.8010005@sun.com
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2009-06/msg00084.html
-
-Bug-Description:
-
-On systems where mbrtowc() returns -2 when passed a length argument with
-value 0, when using a multibyte locale, Readline's emacs-mode forward-char
-at the end of a line will leave the point beyond the end of the line.
-
-Patch:
-
-*** ../bash-3.2-patched/lib/readline/mbutil.c 2009-06-16 11:26:50.000000000 -0400
---- lib/readline/mbutil.c 2009-01-04 14:32:33.000000000 -0500
-***************
-*** 132,141 ****
- {
- tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
-! while (tmp > 0 && wcwidth (wc) == 0)
- {
- point += tmp;
- tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
-- if (MB_NULLWCH (tmp) || MB_INVALIDCH (tmp))
-- break;
- }
- }
---- 130,137 ----
- {
- tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
-! while (MB_NULLWCH (tmp) == 0 && MB_INVALIDCH (tmp) == 0 && wcwidth (wc) == 0)
- {
- point += tmp;
- tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
- }
- }
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 49
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 50
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash32-051 b/src/patches/bash/bash32-051
deleted file mode 100644
index 404fbd6..0000000
--- a/src/patches/bash/bash32-051
+++ /dev/null
@@ -1,46 +0,0 @@
- BASH PATCH REPORT
- =================
-
-Bash-Release: 3.2
-Patch-ID: bash32-051
-
-Bug-Reported-by: werner@suse.de
-Bug-Reference-ID:
201002251238.o1PCcYcg016893@boole.suse.de
-Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2010-02/msg00132.html
-
-Bug-Description:
-
-When the `read' builtin times out after the timeout specified with -t is
-exceeded, it does not reset the flags that tell signal handlers to process
-signals immediately instead of deferring their handling. This can result
-in unsafe functions being called from signal handlers, which can cause bash
-to hang or dump core.
-
-Patch:
-
-*** ../bash-3.2-patched/builtins/read.def 2008-04-29 21:25:00.000000000 -0400
---- builtins/read.def 2010-03-17 09:50:51.000000000 -0400
-***************
-*** 327,330 ****
---- 327,332 ----
- if (code)
- {
-+ interrupt_immediately--;
-+ terminate_immediately = 0;
- run_unwind_frame ("read_builtin");
- return (EXECUTION_FAILURE);
-*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
---- patchlevel.h Mon Oct 16 14:22:54 2006
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 50
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 51
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash43-001 b/src/patches/bash/bash43-001
new file mode 100644
index 0000000..ea1c6b2
--- /dev/null
+++ b/src/patches/bash/bash43-001
@@ -0,0 +1,58 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-001
+
+Bug-Reported-by: NBaH
nbah@sfr.fr
+Bug-Reference-ID:
ler0b5$iu9$1@speranza.aioe.org
+Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00092.html
+
+Bug-Description:
+
+A missing check for a valid option prevented `test -R' from working. There
+is another problem that causes bash to look up the wrong variable name when
+processing the argument to `test -R'.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3/test.c 2014-02-04 16:52:58.000000000 -0500
+--- test.c 2014-02-28 21:22:44.000000000 -0500
+***************
+*** 647,652 ****
+
+ case 'R':
+! v = find_variable (arg);
+! return (v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v) ? TRUE : FALSE);
+ }
+
+--- 647,652 ----
+
+ case 'R':
+! v = find_variable_noref (arg);
+! return ((v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v)) ? TRUE : FALSE);
+ }
+
+***************
+*** 724,727 ****
+--- 724,728 ----
+ case 'u': case 'v': case 'w': case 'x': case 'z':
+ case 'G': case 'L': case 'O': case 'S': case 'N':
++ case 'R':
+ return (1);
+ }
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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/bash43-002 b/src/patches/bash/bash43-002
new file mode 100644
index 0000000..735b7b8
--- /dev/null
+++ b/src/patches/bash/bash43-002
@@ -0,0 +1,62 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-002
+
+Bug-Reported-by: Moe Tunes
moetunes42@gmail.com
+Bug-Reference-ID:
53103F49.3070100@gmail.com
+Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00086.html
+
+Bug-Description:
+
+A change to save state while running the DEBUG trap caused pipelines to hang
+on systems which need process group synchronization while building pipelines.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3/trap.c 2014-02-05 10:03:21.000000000 -0500
+--- trap.c 2014-02-28 09:51:43.000000000 -0500
+***************
+*** 921,925 ****
+
+ #if defined (JOB_CONTROL)
+! save_pipeline (1); /* XXX only provides one save level */
+ #endif
+
+--- 921,926 ----
+
+ #if defined (JOB_CONTROL)
+! if (sig != DEBUG_TRAP) /* run_debug_trap does this */
+! save_pipeline (1); /* XXX only provides one save level */
+ #endif
+
+***************
+*** 941,945 ****
+
+ #if defined (JOB_CONTROL)
+! restore_pipeline (1);
+ #endif
+
+--- 942,947 ----
+
+ #if defined (JOB_CONTROL)
+! if (sig != DEBUG_TRAP) /* run_debug_trap does this */
+! restore_pipeline (1);
+ #endif
+
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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/bash43-003 b/src/patches/bash/bash43-003
new file mode 100644
index 0000000..0f32f41
--- /dev/null
+++ b/src/patches/bash/bash43-003
@@ -0,0 +1,48 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-003
+
+Bug-Reported-by: Anatol Pomozov
anatol.pomozov@gmail.com
+Bug-Reference-ID:
CAOMFOmXy3mT2So5GQ5F-smCVArQuAeBwZ2QKzgCtMeXJoDeYOQ@mail.gmail.com
+Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-readline/2014-03/msg00010.html
+
+Bug-Description:
+
+When in callback mode, some readline commands can cause readline to seg
+fault by passing invalid contexts to callback functions.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3/lib/readline/readline.c 2013-10-28 14:58:06.000000000 -0400
+--- lib/readline/readline.c 2014-03-10 14:15:02.000000000 -0400
+***************
+*** 745,749 ****
+
+ RL_CHECK_SIGNALS ();
+! if (r == 0) /* success! */
+ {
+ _rl_keyseq_chain_dispose ();
+--- 745,750 ----
+
+ RL_CHECK_SIGNALS ();
+! /* We only treat values < 0 specially to simulate recursion. */
+! if (r >= 0 || (r == -1 && (cxt->flags & KSEQ_SUBSEQ) == 0)) /* success! or failure! */
+ {
+ _rl_keyseq_chain_dispose ();
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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/bash43-004 b/src/patches/bash/bash43-004
new file mode 100644
index 0000000..010f04a
--- /dev/null
+++ b/src/patches/bash/bash43-004
@@ -0,0 +1,47 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-004
+
+Bug-Reported-by: Daan van Rossum
daan@flash.uchicago.edu
+Bug-Reference-ID:
20140307072523.GA14250@flash.uchicago.edu
+Bug-Reference-URL:
+
+Bug-Description:
+
+The `.' command in vi mode cannot undo multi-key commands beginning with
+`c', `d', and `y' (command plus motion specifier).
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3/lib/readline/readline.c 2013-10-28 14:58:06.000000000 -0400
+--- lib/readline/readline.c 2014-03-07 15:20:33.000000000 -0500
+***************
+*** 965,969 ****
+ if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap &&
+ key != ANYOTHERKEY &&
+! rl_key_sequence_length == 1 && /* XXX */
+ _rl_vi_textmod_command (key))
+ _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign);
+--- 965,969 ----
+ if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap &&
+ key != ANYOTHERKEY &&
+! _rl_dispatching_keymap == vi_movement_keymap &&
+ _rl_vi_textmod_command (key))
+ _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign);
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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/bash43-005 b/src/patches/bash/bash43-005
new file mode 100644
index 0000000..bcd4069
--- /dev/null
+++ b/src/patches/bash/bash43-005
@@ -0,0 +1,63 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-005
+
+Bug-Reported-by: David Sines
dave.gma@googlemail.com
+Bug-Reference-ID:
CAO3BAa_CK_Rgkhdfzs+NJ4KFYdB9qW3pvXQK0xLCi6GMmDU8bw@mail.gmail.com
+Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00037.html
+
+Bug-Description:
+
+When in Posix mode, bash did not correctly interpret the ANSI-C-style
+$'...' quoting mechanism when performing pattern substitution word
+expansions within double quotes.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3/parse.y 2014-02-11 09:42:10.000000000 -0500
+--- parse.y 2014-03-07 20:57:15.000000000 -0500
+***************
+*** 3399,3403 ****
+ unescaped double-quotes or single-quotes, if any, shall occur." */
+ /* This was changed in Austin Group Interp 221 */
+! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == ''')
+ continue;
+
+--- 3399,3403 ----
+ unescaped double-quotes or single-quotes, if any, shall occur." */
+ /* This was changed in Austin Group Interp 221 */
+! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2 && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == ''')
+ continue;
+
+*** ../bash-4.3/y.tab.c 2014-02-11 10:57:47.000000000 -0500
+--- y.tab.c 2014-03-28 10:41:15.000000000 -0400
+***************
+*** 5711,5715 ****
+ unescaped double-quotes or single-quotes, if any, shall occur." */
+ /* This was changed in Austin Group Interp 221 */
+! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == ''')
+ continue;
+
+--- 5711,5715 ----
+ unescaped double-quotes or single-quotes, if any, shall occur." */
+ /* This was changed in Austin Group Interp 221 */
+! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2 && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == ''')
+ continue;
+
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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/bash43-006 b/src/patches/bash/bash43-006
new file mode 100644
index 0000000..24ff057
--- /dev/null
+++ b/src/patches/bash/bash43-006
@@ -0,0 +1,48 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-006
+
+Bug-Reported-by: Eduardo A . Bustamante Lopez
dualbus@gmail.com
+Bug-Reference-ID:
20140228170013.GA16015@dualbus.me
+Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00091.html
+
+Bug-Description:
+
+A shell that started with job control active but was not interactive left
+the terminal in the wrong process group when exiting, causing its parent
+shell to get a stop signal when it attempted to read from the terminal.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3/jobs.c 2014-01-10 09:05:34.000000000 -0500
+--- jobs.c 2014-03-02 18:05:09.000000000 -0500
+***************
+*** 4375,4379 ****
+ end_job_control ()
+ {
+! if (interactive_shell) /* XXX - should it be interactive? */
+ {
+ terminate_stopped_jobs ();
+--- 4375,4379 ----
+ end_job_control ()
+ {
+! if (interactive_shell || job_control) /* XXX - should it be just job_control? */
+ {
+ terminate_stopped_jobs ();
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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/bash43-007 b/src/patches/bash/bash43-007
new file mode 100644
index 0000000..0d62c9e
--- /dev/null
+++ b/src/patches/bash/bash43-007
@@ -0,0 +1,50 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-007
+
+Bug-Reported-by: geir.hauge@gmail.com
+Bug-Reference-ID:
20140318093650.B181C1C5B0B@gina.itea.ntnu.no
+Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00095.html
+
+Bug-Description:
+
+Using compound assignments for associative arrays like
+
+assoc=( [x]= [y]=bar )
+
+left the value corresponding to the key `x' NULL. This caused subsequent
+lookups to interpret it as unset.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3/arrayfunc.c 2013-08-02 16:19:59.000000000 -0400
+--- arrayfunc.c 2014-03-18 11:08:15.000000000 -0400
+***************
+*** 598,601 ****
+--- 598,606 ----
+ {
+ val = expand_assignment_string_to_string (val, 0);
++ if (val == 0)
++ {
++ val = (char *)xmalloc (1);
++ val[0] = '\0'; /* like do_assignment_internal */
++ }
+ free_val = 1;
+ }
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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/bash43-008 b/src/patches/bash/bash43-008
new file mode 100644
index 0000000..0ae7c95
--- /dev/null
+++ b/src/patches/bash/bash43-008
@@ -0,0 +1,188 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-008
+
+Bug-Reported-by: Stephane Chazelas
stephane.chazelas@gmail.com
+Bug-Reference-ID:
20140318135901.GB22158@chaz.gmail.com
+Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00098.html
+
+Bug-Description:
+
+Some extended glob patterns incorrectly matched filenames with a leading
+dot, regardless of the setting of the `dotglob' option.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3/lib/glob/gmisc.c 2013-10-28 14:45:25.000000000 -0400
+--- lib/glob/gmisc.c 2014-03-19 09:16:08.000000000 -0400
+***************
+*** 211,214 ****
+--- 211,215 ----
+ case '!':
+ case '@':
++ case '?':
+ return (pat[1] == LPAREN);
+ default:
+*** ../bash-4.3/lib/glob/glob.c 2014-01-31 21:43:51.000000000 -0500
+--- lib/glob/glob.c 2014-03-20 09:01:26.000000000 -0400
+***************
+*** 180,202 ****
+ int flags;
+ {
+! char *pp, *pe, *t;
+! int n, r;
+
+ pp = pat + 2;
+! pe = pp + strlen (pp) - 1; /*(*/
+! if (*pe != ')')
+! return 0;
+! if ((t = strchr (pp, '|')) == 0) /* easy case first */
+ {
+ *pe = '\0';
+ r = skipname (pp, dname, flags); /*(*/
+ *pe = ')';
+ return r;
+ }
+ while (t = glob_patscan (pp, pe, '|'))
+ {
+ n = t[-1];
+ t[-1] = '\0';
+ r = skipname (pp, dname, flags);
+ t[-1] = n;
+ if (r == 0) /* if any pattern says not skip, we don't skip */
+--- 180,215 ----
+ int flags;
+ {
+! char *pp, *pe, *t, *se;
+! int n, r, negate;
+
++ negate = *pat == '!';
+ pp = pat + 2;
+! se = pp + strlen (pp) - 1; /* end of string */
+! pe = glob_patscan (pp, se, 0); /* end of extglob pattern (( */
+! /* we should check for invalid extglob pattern here */
+! /* if pe != se we have more of the pattern at the end of the extglob
+! pattern. Check the easy case first ( */
+! if (pe == se && *pe == ')' && (t = strchr (pp, '|')) == 0)
+ {
+ *pe = '\0';
++ #if defined (HANDLE_MULTIBYTE)
++ r = mbskipname (pp, dname, flags);
++ #else
+ r = skipname (pp, dname, flags); /*(*/
++ #endif
+ *pe = ')';
+ return r;
+ }
++
++ /* check every subpattern */
+ while (t = glob_patscan (pp, pe, '|'))
+ {
+ n = t[-1];
+ t[-1] = '\0';
++ #if defined (HANDLE_MULTIBYTE)
++ r = mbskipname (pp, dname, flags);
++ #else
+ r = skipname (pp, dname, flags);
++ #endif
+ t[-1] = n;
+ if (r == 0) /* if any pattern says not skip, we don't skip */
+***************
+*** 205,219 ****
+ } /*(*/
+
+! if (pp == pe) /* glob_patscan might find end of pattern */
+ return r;
+
+! *pe = '\0';
+! # if defined (HANDLE_MULTIBYTE)
+! r = mbskipname (pp, dname, flags); /*(*/
+! # else
+! r = skipname (pp, dname, flags); /*(*/
+! # endif
+! *pe = ')';
+! return r;
+ }
+ #endif
+--- 218,227 ----
+ } /*(*/
+
+! /* glob_patscan might find end of pattern */
+! if (pp == se)
+ return r;
+
+! /* but if it doesn't then we didn't match a leading dot */
+! return 0;
+ }
+ #endif
+***************
+*** 278,289 ****
+ {
+ #if EXTENDED_GLOB
+! wchar_t *pp, *pe, *t, n;
+! int r;
+
+ pp = pat + 2;
+! pe = pp + wcslen (pp) - 1; /*(*/
+! if (*pe != L')')
+! return 0;
+! if ((t = wcschr (pp, L'|')) == 0)
+ {
+ *pe = L'\0';
+--- 286,298 ----
+ {
+ #if EXTENDED_GLOB
+! wchar_t *pp, *pe, *t, n, *se;
+! int r, negate;
+
++ negate = *pat == L'!';
+ pp = pat + 2;
+! se = pp + wcslen (pp) - 1; /*(*/
+! pe = glob_patscan_wc (pp, se, 0);
+!
+! if (pe == se && *pe == ')' && (t = wcschr (pp, L'|')) == 0)
+ {
+ *pe = L'\0';
+***************
+*** 292,295 ****
+--- 301,306 ----
+ return r;
+ }
++
++ /* check every subpattern */
+ while (t = glob_patscan_wc (pp, pe, '|'))
+ {
+***************
+*** 306,313 ****
+ return r;
+
+! *pe = L'\0';
+! r = wchkname (pp, dname); /*(*/
+! *pe = L')';
+! return r;
+ #else
+ return (wchkname (pat, dname));
+--- 317,322 ----
+ return r;
+
+! /* but if it doesn't then we didn't match a leading dot */
+! return 0;
+ #else
+ return (wchkname (pat, dname));
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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/bash43-009 b/src/patches/bash/bash43-009
new file mode 100644
index 0000000..015835c
--- /dev/null
+++ b/src/patches/bash/bash43-009
@@ -0,0 +1,64 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-009
+
+Bug-Reported-by: Matthias Klose
doko@debian.org
+Bug-Reference-ID:
53346FC8.6090005@debian.org
+Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00171.html
+
+Bug-Description:
+
+There is a problem with unsigned sign extension when attempting to reallocate
+the input line when it is fewer than 3 characters long and there has been a
+history expansion. The sign extension causes the shell to not reallocate the
+line, which results in a segmentation fault when it writes past the end.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/parse.y 2014-02-11 09:42:10.000000000 -0500
+--- parse.y 2014-03-27 16:33:29.000000000 -0400
+***************
+*** 2425,2429 ****
+ if (shell_input_line_terminator != EOF)
+ {
+! if (shell_input_line_size < SIZE_MAX && shell_input_line_len > shell_input_line_size - 3)
+ shell_input_line = (char *)xrealloc (shell_input_line,
+ 1 + (shell_input_line_size += 2));
+--- 2425,2429 ----
+ if (shell_input_line_terminator != EOF)
+ {
+! if (shell_input_line_size < SIZE_MAX-3 && (shell_input_line_len+3 > shell_input_line_size))
+ shell_input_line = (char *)xrealloc (shell_input_line,
+ 1 + (shell_input_line_size += 2));
+*** ../bash-4.3-patched/y.tab.c 2014-03-28 11:17:06.000000000 -0400
+--- y.tab.c 2014-04-07 11:48:31.000000000 -0400
+***************
+*** 4737,4741 ****
+ if (shell_input_line_terminator != EOF)
+ {
+! if (shell_input_line_size < SIZE_MAX && shell_input_line_len > shell_input_line_size - 3)
+ shell_input_line = (char *)xrealloc (shell_input_line,
+ 1 + (shell_input_line_size += 2));
+--- 4737,4741 ----
+ if (shell_input_line_terminator != EOF)
+ {
+! if (shell_input_line_size < SIZE_MAX-3 && (shell_input_line_len+3 > shell_input_line_size))
+ shell_input_line = (char *)xrealloc (shell_input_line,
+ 1 + (shell_input_line_size += 2));
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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/bash43-010 b/src/patches/bash/bash43-010
new file mode 100644
index 0000000..835a96e
--- /dev/null
+++ b/src/patches/bash/bash43-010
@@ -0,0 +1,157 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-010
+
+Bug-Reported-by: Albert Shih
Albert.Shih@obspm.fr
+Bug-Reference-ID: Wed, 5 Mar 2014 23:01:40 +0100
+Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00028.html
+
+Bug-Description:
+
+Patch (apply with `patch -p0'):
+
+This patch changes the behavior of programmable completion to compensate
+for two assumptions made by the bash-completion package. Bash-4.3 changed
+to dequote the argument to programmable completion only under certain
+circumstances, to make the behavior of compgen more consistent when run
+from the command line -- closer to the behavior when run by a shell function
+run as part of programmable completion. Bash-completion can pass quoted
+arguments to compgen when the original word to be completed was not quoted,
+expecting programmable completion to dequote the word before attempting
+completion.
+
+This patch fixes two cases:
+
+1. An empty string that bash-completion passes to compgen as a quoted null
+ string ('').
+
+2. An unquoted word that bash-completion quotes using single quotes or
+ backslashes before passing it to compgen.
+
+In these cases, since readline did not detect a quote character in the original
+word to be completed, bash-4.3
+
+*** ../bash-4.3/externs.h 2014-01-02 14:58:20.000000000 -0500
+--- externs.h 2014-03-13 14:42:57.000000000 -0400
+***************
+*** 325,328 ****
+--- 325,329 ----
+ extern char *sh_backslash_quote_for_double_quotes __P((char *));
+ extern int sh_contains_shell_metas __P((char *));
++ extern int sh_contains_quotes __P((char *));
+
+ /* declarations for functions defined in lib/sh/spell.c */
+*** ../bash-4.3/lib/sh/shquote.c 2013-03-31 21:53:32.000000000 -0400
+--- lib/sh/shquote.c 2014-03-13 14:42:57.000000000 -0400
+***************
+*** 312,313 ****
+--- 312,327 ----
+ return (0);
+ }
++
++ int
++ sh_contains_quotes (string)
++ char *string;
++ {
++ char *s;
++
++ for (s = string; s && *s; s++)
++ {
++ if (*s == ''' || *s == '"' || *s == '\')
++ return 1;
++ }
++ return 0;
++ }
+*** ../bash-4.3/pcomplete.c 2013-08-26 15:23:45.000000000 -0400
+--- pcomplete.c 2014-03-25 17:23:23.000000000 -0400
+***************
+*** 184,187 ****
+--- 184,188 ----
+ COMPSPEC *pcomp_curcs;
+ const char *pcomp_curcmd;
++ const char *pcomp_curtxt;
+
+ #ifdef DEBUG
+***************
+*** 754,757 ****
+--- 755,784 ----
+ dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character);
+ }
++ /* Intended to solve a mismatched assumption by bash-completion. If
++ the text to be completed is empty, but bash-completion turns it into
++ a quoted string ('') assuming that this code will dequote it before
++ calling readline, do the dequoting. */
++ else if (iscompgen && iscompleting &&
++ pcomp_curtxt && *pcomp_curtxt == 0 &&
++ text && (*text == ''' || *text == '"') && text[1] == text[0] && text[2] == 0 &&
++ rl_filename_dequoting_function)
++ dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character);
++ /* Another mismatched assumption by bash-completion. If compgen is being
++ run as part of bash-completion, and the argument to compgen is not
++ the same as the word originally passed to the programmable completion
++ code, dequote the argument if it has quote characters. It's an
++ attempt to detect when bash-completion is quoting its filename
++ argument before calling compgen. */
++ /* We could check whether gen_shell_function_matches is in the call
++ stack by checking whether the gen-shell-function-matches tag is in
++ the unwind-protect stack, but there's no function to do that yet.
++ We could simply check whether we're executing in a function by
++ checking variable_context, and may end up doing that. */
++ else if (iscompgen && iscompleting && rl_filename_dequoting_function &&
++ pcomp_curtxt && text &&
++ STREQ (pcomp_curtxt, text) == 0 &&
++ variable_context &&
++ sh_contains_quotes (text)) /* guess */
++ dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character);
+ else
+ dfn = savestring (text);
+***************
+*** 1523,1527 ****
+ {
+ COMPSPEC *cs, *oldcs;
+! const char *oldcmd;
+ STRINGLIST *ret;
+
+--- 1550,1554 ----
+ {
+ COMPSPEC *cs, *oldcs;
+! const char *oldcmd, *oldtxt;
+ STRINGLIST *ret;
+
+***************
+*** 1546,1552 ****
+--- 1573,1581 ----
+ oldcs = pcomp_curcs;
+ oldcmd = pcomp_curcmd;
++ oldtxt = pcomp_curtxt;
+
+ pcomp_curcs = cs;
+ pcomp_curcmd = cmd;
++ pcomp_curtxt = word;
+
+ ret = gen_compspec_completions (cs, cmd, word, start, end, foundp);
+***************
+*** 1554,1557 ****
+--- 1583,1587 ----
+ pcomp_curcs = oldcs;
+ pcomp_curcmd = oldcmd;
++ pcomp_curtxt = oldtxt;
+
+ /* We need to conditionally handle setting *retryp here */
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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/bash43-011 b/src/patches/bash/bash43-011
new file mode 100644
index 0000000..cdc1572
--- /dev/null
+++ b/src/patches/bash/bash43-011
@@ -0,0 +1,49 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-011
+
+Bug-Reported-by: Egmont Koblinger
egmont@gmail.com
+Bug-Reference-ID:
CAGWcZk+bU5Jo1M+tutGvL-250UBE9DXjpeJVofYJSFcqFEVfMg@mail.gmail.com
+Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00153.html
+
+Bug-Description:
+
+The signal handling changes to bash and readline (to avoid running any code
+in a signal handler context) cause the cursor to be placed on the wrong
+line of a multi-line command after a ^C interrupts editing.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/lib/readline/display.c 2013-12-27 13:10:56.000000000 -0500
+--- lib/readline/display.c 2014-03-27 11:52:45.000000000 -0400
+***************
+*** 2678,2682 ****
+ if (_rl_echoing_p)
+ {
+! _rl_move_vert (_rl_vis_botlin);
+ _rl_vis_botlin = 0;
+ fflush (rl_outstream);
+--- 2678,2683 ----
+ if (_rl_echoing_p)
+ {
+! if (_rl_vis_botlin > 0) /* minor optimization plus bug fix */
+! _rl_move_vert (_rl_vis_botlin);
+ _rl_vis_botlin = 0;
+ fflush (rl_outstream);
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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/bash43-012 b/src/patches/bash/bash43-012
new file mode 100644
index 0000000..176fa15
--- /dev/null
+++ b/src/patches/bash/bash43-012
@@ -0,0 +1,43 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-012
+
+Bug-Reported-by: Eduardo A. Bustamante López
dualbus@gmail.com
+Bug-Reference-ID:
5346B54C.4070205@case.edu
+Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00051.html
+
+Bug-Description:
+
+When a SIGCHLD trap runs a command containing a shell builtin while
+a script is running `wait' to wait for all running children to complete,
+the SIGCHLD trap will not be run once for each child that terminates.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/jobs.c 2014-03-28 10:54:19.000000000 -0400
+--- jobs.c 2014-04-15 08:47:03.000000000 -0400
+***************
+*** 3598,3601 ****
+--- 3598,3602 ----
+ unwind_protect_pointer (the_pipeline);
+ unwind_protect_pointer (subst_assign_varlist);
++ unwind_protect_pointer (this_shell_builtin);
+
+ /* We have to add the commands this way because they will be run
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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/bash43-013 b/src/patches/bash/bash43-013
new file mode 100644
index 0000000..8f4006b
--- /dev/null
+++ b/src/patches/bash/bash43-013
@@ -0,0 +1,66 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-013
+
+Bug-Reported-by:
Trond.Endrestol@ximalas.info
+Bug-Reference-ID:
alpine.BSF.2.03.1404192114310.1973@enterprise.ximalas.info
+Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00069.html
+
+Bug-Description:
+
+Using reverse-i-search when horizontal scrolling is enabled does not redisplay
+the entire line containing the successful search results.
+
+Patch (apply with `patch -p0'):
+*** ../bash-4.3-patched/lib/readline/display.c 2014-04-08 18:19:36.000000000 -0400
+--- lib/readline/display.c 2014-04-20 18:32:52.000000000 -0400
+***************
+*** 1638,1642 ****
+ the spot of first difference is before the end of the invisible chars,
+ lendiff needs to be adjusted. */
+! if (current_line == 0 && !_rl_horizontal_scroll_mode &&
+ current_invis_chars != visible_wrap_offset)
+ {
+--- 1638,1642 ----
+ the spot of first difference is before the end of the invisible chars,
+ lendiff needs to be adjusted. */
+! if (current_line == 0 && /* !_rl_horizontal_scroll_mode && */
+ current_invis_chars != visible_wrap_offset)
+ {
+***************
+*** 1826,1831 ****
+ _rl_last_c_pos += bytes_to_insert;
+
+ if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new)))
+! goto clear_rest_of_line;
+ }
+ }
+--- 1826,1836 ----
+ _rl_last_c_pos += bytes_to_insert;
+
++ /* XXX - we only want to do this if we are at the end of the line
++ so we move there with _rl_move_cursor_relative */
+ if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new)))
+! {
+! _rl_move_cursor_relative (ne-new, new);
+! goto clear_rest_of_line;
+! }
+ }
+ }
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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/bash43-014 b/src/patches/bash/bash43-014
new file mode 100644
index 0000000..f837196
--- /dev/null
+++ b/src/patches/bash/bash43-014
@@ -0,0 +1,102 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-014
+
+Bug-Reported-by: Greg Wooledge
wooledg@eeg.ccf.org
+Bug-Reference-ID:
20140418202123.GB7660@eeg.ccf.org
+Bug-Reference-URL:
http://lists.gnu.org/archive/html/help-bash/2014-04/msg00004.html
+
+Bug-Description:
+
+Under certain circumstances, $@ is expanded incorrectly in contexts where
+word splitting is not performed.
+
+Patch (apply with `patch -p0'):
+*** ../bash-4.3-patched/subst.c 2014-01-23 16:26:37.000000000 -0500
+--- subst.c 2014-04-19 15:41:26.000000000 -0400
+***************
+*** 3249,3254 ****
+--- 3249,3256 ----
+ return ((char *)NULL);
+
++ expand_no_split_dollar_star = 1;
+ w->flags |= W_NOSPLIT2;
+ l = call_expand_word_internal (w, 0, 0, (int *)0, (int *)0);
++ expand_no_split_dollar_star = 0;
+ if (l)
+ {
+***************
+*** 7848,7851 ****
+--- 7850,7857 ----
+ according to POSIX.2, this expands to a list of the positional
+ parameters no matter what IFS is set to. */
++ /* XXX - what to do when in a context where word splitting is not
++ performed? Even when IFS is not the default, posix seems to imply
++ that we behave like unquoted $* ? Maybe we should use PF_NOSPLIT2
++ here. */
+ temp = string_list_dollar_at (list, (pflags & PF_ASSIGNRHS) ? (quoted|Q_DOUBLE_QUOTES) : quoted);
+
+***************
+*** 8817,8820 ****
+--- 8823,8827 ----
+ {
+ char *ifs_chars;
++ char *tstring;
+
+ ifs_chars = (quoted_dollar_at || has_dollar_at) ? ifs_value : (char *)NULL;
+***************
+*** 8831,8834 ****
+--- 8838,8865 ----
+ if (split_on_spaces)
+ list = list_string (istring, " ", 1); /* XXX quoted == 1? */
++ /* If we have $@ (has_dollar_at != 0) and we are in a context where we
++ don't want to split the result (W_NOSPLIT2), and we are not quoted,
++ we have already separated the arguments with the first character of
++ $IFS. In this case, we want to return a list with a single word
++ with the separator possibly replaced with a space (it's what other
++ shells seem to do).
++ quoted_dollar_at is internal to this function and is set if we are
++ passed an argument that is unquoted (quoted == 0) but we encounter a
++ double-quoted $@ while expanding it. */
++ else if (has_dollar_at && quoted_dollar_at == 0 && ifs_chars && quoted == 0 && (word->flags & W_NOSPLIT2))
++ {
++ /* Only split and rejoin if we have to */
++ if (*ifs_chars && *ifs_chars != ' ')
++ {
++ list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1);
++ tstring = string_list (list);
++ }
++ else
++ tstring = istring;
++ tword = make_bare_word (tstring);
++ if (tstring != istring)
++ free (tstring);
++ goto set_word_flags;
++ }
+ else if (has_dollar_at && ifs_chars)
+ list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1);
+***************
+*** 8836,8839 ****
+--- 8867,8871 ----
+ {
+ tword = make_bare_word (istring);
++ set_word_flags:
+ if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || (quoted_state == WHOLLY_QUOTED))
+ tword->flags |= W_QUOTED;
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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/bash43-015 b/src/patches/bash/bash43-015
new file mode 100644
index 0000000..9c4e5ea
--- /dev/null
+++ b/src/patches/bash/bash43-015
@@ -0,0 +1,58 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-015
+
+Bug-Reported-by: Clark Wang
dearvoid@gmail.com
+Bug-Reference-ID:
CADv8-og2TOSoabXeNVXVGaXN3tEMHnYVq1rwOLe5meaRPSGRig@mail.gmail.com
+Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00095.html
+
+Bug-Description:
+
+When completing directory names, the directory name is dequoted twice.
+This causes problems for directories with single and double quotes in
+their names.
+
+Patch (apply with `patch -p0'):
+*** ../bash-4.3-patched/bashline.c 2014-02-09 19:56:58.000000000 -0500
+--- bashline.c 2014-04-25 14:57:52.000000000 -0400
+***************
+*** 4168,4174 ****
+
+ qc = rl_dispatching ? rl_completion_quote_character : 0;
+! dfn = bash_dequote_filename ((char *)text, qc);
+ m1 = rl_completion_matches (dfn, rl_filename_completion_function);
+! free (dfn);
+
+ if (m1 == 0 || m1[0] == 0)
+--- 4209,4222 ----
+
+ qc = rl_dispatching ? rl_completion_quote_character : 0;
+! /* If rl_completion_found_quote != 0, rl_completion_matches will call the
+! filename dequoting function, causing the directory name to be dequoted
+! twice. */
+! if (rl_dispatching && rl_completion_found_quote == 0)
+! dfn = bash_dequote_filename ((char *)text, qc);
+! else
+! dfn = (char *)text;
+ m1 = rl_completion_matches (dfn, rl_filename_completion_function);
+! if (dfn != text)
+! free (dfn);
+
+ if (m1 == 0 || m1[0] == 0)
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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/bash43-016 b/src/patches/bash/bash43-016
new file mode 100644
index 0000000..882d593
--- /dev/null
+++ b/src/patches/bash/bash43-016
@@ -0,0 +1,132 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-016
+
+Bug-Reported-by: Pierre Gaston
pierre.gaston@gmail.com
+Bug-Reference-ID:
CAPSX3sTCD61k1VQLJ5r-LWzEt+e7Xc-fxXmwn2u8EA5gJJej8Q@mail.gmail.com
+Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00100.html
+
+Bug-Description:
+
+An extended glob pattern containing a slash (`/') causes the globbing code
+to misinterpret it as a directory separator.
+
+Patch (apply with `patch -p0'):
+*** ../bash-4.3-patched/lib/glob/glob.c 2014-03-28 10:54:23.000000000 -0400
+--- lib/glob/glob.c 2014-05-02 10:24:28.000000000 -0400
+***************
+*** 124,127 ****
+--- 124,129 ----
+ extern wchar_t *glob_patscan_wc __P((wchar_t *, wchar_t *, int));
+
++ extern char *glob_dirscan __P((char *, int));
++
+ /* Compile `glob_loop.c' for single-byte characters. */
+ #define CHAR unsigned char
+***************
+*** 188,191 ****
+--- 190,196 ----
+ pe = glob_patscan (pp, se, 0); /* end of extglob pattern (( */
+ /* we should check for invalid extglob pattern here */
++ if (pe == 0)
++ return 0;
++
+ /* if pe != se we have more of the pattern at the end of the extglob
+ pattern. Check the easy case first ( */
+***************
+*** 1016,1020 ****
+ char **result;
+ unsigned int result_size;
+! char *directory_name, *filename, *dname;
+ unsigned int directory_len;
+ int free_dirname; /* flag */
+--- 1021,1025 ----
+ char **result;
+ unsigned int result_size;
+! char *directory_name, *filename, *dname, *fn;
+ unsigned int directory_len;
+ int free_dirname; /* flag */
+***************
+*** 1032,1035 ****
+--- 1037,1052 ----
+ /* Find the filename. */
+ filename = strrchr (pathname, '/');
++ #if defined (EXTENDED_GLOB)
++ if (filename && extended_glob)
++ {
++ fn = glob_dirscan (pathname, '/');
++ #if DEBUG_MATCHING
++ if (fn != filename)
++ fprintf (stderr, "glob_filename: glob_dirscan: fn (%s) != filename (%s)\n", fn ? fn : "(null)", filename);
++ #endif
++ filename = fn;
++ }
++ #endif
++
+ if (filename == NULL)
+ {
+*** ../bash-4.3-patched/lib/glob/gmisc.c 2014-03-28 10:54:23.000000000 -0400
+--- lib/glob/gmisc.c 2014-05-02 09:35:57.000000000 -0400
+***************
+*** 43,46 ****
+--- 43,48 ----
+ #define WRPAREN L')'
+
++ extern char *glob_patscan __P((char *, char *, int));
++
+ /* Return 1 of the first character of WSTRING could match the first
+ character of pattern WPAT. Wide character version. */
+***************
+*** 376,377 ****
+--- 378,410 ----
+ return matlen;
+ }
++
++ /* Skip characters in PAT and return the final occurrence of DIRSEP. This
++ is only called when extended_glob is set, so we have to skip over extglob
++ patterns x(...) */
++ char *
++ glob_dirscan (pat, dirsep)
++ char *pat;
++ int dirsep;
++ {
++ char *p, *d, *pe, *se;
++
++ d = pe = se = 0;
++ for (p = pat; p && *p; p++)
++ {
++ if (extglob_pattern_p (p))
++ {
++ if (se == 0)
++ se = p + strlen (p) - 1;
++ pe = glob_patscan (p + 2, se, 0);
++ if (pe == 0)
++ continue;
++ else if (*pe == 0)
++ break;
++ p = pe - 1; /* will do increment above */
++ continue;
++ }
++ if (*p == dirsep)
++ d = p;
++ }
++ return d;
++ }
+
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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/bash43-017 b/src/patches/bash/bash43-017
new file mode 100644
index 0000000..4016fb9
--- /dev/null
+++ b/src/patches/bash/bash43-017
@@ -0,0 +1,51 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-017
+
+Bug-Reported-by: Dan Douglas
ormaaj@gmail.com
+Bug-Reference-ID:
7781746.RhfoTROLxF@smorgbox
+Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2014-05/msg00026.html
+
+Bug-Description:
+
+The code that creates local variables should not clear the `invisible'
+attribute when returning an existing local variable. Let the code that
+actually assigns a value clear it.
+
+Patch (apply with `patch -p0'):
+*** ../bash-4.3-patched/variables.c 2014-02-14 11:55:12.000000000 -0500
+--- variables.c 2014-05-07 10:53:57.000000000 -0400
+***************
+*** 2198,2205 ****
+ old_var = find_variable (name);
+ if (old_var && local_p (old_var) && old_var->context == variable_context)
+! {
+! VUNSETATTR (old_var, att_invisible); /* XXX */
+! return (old_var);
+! }
+
+ was_tmpvar = old_var && tempvar_p (old_var);
+--- 2260,2264 ----
+ old_var = find_variable (name);
+ if (old_var && local_p (old_var) && old_var->context == variable_context)
+! return (old_var);
+
+ was_tmpvar = old_var && tempvar_p (old_var);
+
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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/bash43-018 b/src/patches/bash/bash43-018
new file mode 100644
index 0000000..39499f6
--- /dev/null
+++ b/src/patches/bash/bash43-018
@@ -0,0 +1,44 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-018
+
+Bug-Reported-by: Geir Hauge
geir.hauge@gmail.com
+Bug-Reference-ID:
CAO-BiTLOvfPXDypg61jcBausADrxUKJejakV2WTWP26cW0=rgA@mail.gmail.com
+Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2014-05/msg00040.html
+
+Bug-Description:
+
+When assigning an array variable using the compound assignment syntax,
+but using `declare' with the rhs of the compound assignment quoted, the
+shell did not mark the variable as visible after successfully performing
+the assignment.
+
+Patch (apply with `patch -p0'):
+*** ../bash-4.3-patched/arrayfunc.c 2014-03-28 10:54:21.000000000 -0400
+--- arrayfunc.c 2014-05-12 11:19:00.000000000 -0400
+***************
+*** 180,183 ****
+--- 180,184 ----
+ FREE (newval);
+
++ VUNSETATTR (entry, att_invisible); /* no longer invisible */
+ return (entry);
+ }
+
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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/bash43-019 b/src/patches/bash/bash43-019
new file mode 100644
index 0000000..a93714b
--- /dev/null
+++ b/src/patches/bash/bash43-019
@@ -0,0 +1,84 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-019
+
+Bug-Reported-by: John Lenton
+Bug-Reference-ID:
+Bug-Reference-URL:
https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1317476
+
+Bug-Description:
+
+The -t timeout option to `read' does not work when the -e option is used.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/lib/readline/input.c 2014-01-10 15:07:08.000000000 -0500
+--- lib/readline/input.c 2014-05-22 18:40:59.000000000 -0400
+***************
+*** 535,540 ****
+--- 538,551 ----
+ else if (_rl_caught_signal == SIGHUP || _rl_caught_signal == SIGTERM)
+ return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF);
++ /* keyboard-generated signals of interest */
+ else if (_rl_caught_signal == SIGINT || _rl_caught_signal == SIGQUIT)
+ RL_CHECK_SIGNALS ();
++ /* non-keyboard-generated signals of interest */
++ else if (_rl_caught_signal == SIGALRM
++ #if defined (SIGVTALRM)
++ || _rl_caught_signal == SIGVTALRM
++ #endif
++ )
++ RL_CHECK_SIGNALS ();
+
+ if (rl_signal_event_hook)
+*** ../bash-4.3-patched/builtins/read.def 2013-09-02 11:54:00.000000000 -0400
+--- builtins/read.def 2014-05-08 11:43:35.000000000 -0400
+***************
+*** 443,447 ****
+ #if defined (READLINE)
+ if (edit)
+! add_unwind_protect (reset_attempted_completion_function, (char *)NULL);
+ #endif
+ falarm (tmsec, tmusec);
+--- 443,450 ----
+ #if defined (READLINE)
+ if (edit)
+! {
+! add_unwind_protect (reset_attempted_completion_function, (char *)NULL);
+! add_unwind_protect (bashline_reset_event_hook, (char *)NULL);
+! }
+ #endif
+ falarm (tmsec, tmusec);
+***************
+*** 1022,1025 ****
+--- 1025,1029 ----
+ old_attempted_completion_function = rl_attempted_completion_function;
+ rl_attempted_completion_function = (rl_completion_func_t *)NULL;
++ bashline_set_event_hook ();
+ if (itext)
+ {
+***************
+*** 1033,1036 ****
+--- 1037,1041 ----
+ rl_attempted_completion_function = old_attempted_completion_function;
+ old_attempted_completion_function = (rl_completion_func_t *)NULL;
++ bashline_reset_event_hook ();
+
+ if (ret == 0)
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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/bash43-020 b/src/patches/bash/bash43-020
new file mode 100644
index 0000000..5f533ef
--- /dev/null
+++ b/src/patches/bash/bash43-020
@@ -0,0 +1,110 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-020
+
+Bug-Reported-by: Jared Yanovich
slovichon@gmail.com
+Bug-Reference-ID:
20140417073654.GB26875@nightderanger.psc.edu
+Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00065.html
+
+Bug-Description:
+
+When PS2 contains a command substitution, here-documents entered in an
+interactive shell can sometimes cause a segmentation fault.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/shell.h 2012-12-25 21:11:01.000000000 -0500
+--- shell.h 2014-06-03 09:24:28.000000000 -0400
+***************
+*** 169,173 ****
+ int expand_aliases;
+ int echo_input_at_read;
+!
+ } sh_parser_state_t;
+
+--- 169,174 ----
+ int expand_aliases;
+ int echo_input_at_read;
+! int need_here_doc;
+!
+ } sh_parser_state_t;
+
+*** ../bash-4.3-patched/parse.y 2014-05-14 09:16:40.000000000 -0400
+--- parse.y 2014-04-30 09:27:59.000000000 -0400
+***************
+*** 2643,2647 ****
+
+ r = 0;
+! while (need_here_doc)
+ {
+ parser_state |= PST_HEREDOC;
+--- 2643,2647 ----
+
+ r = 0;
+! while (need_here_doc > 0)
+ {
+ parser_state |= PST_HEREDOC;
+***************
+*** 6076,6079 ****
+--- 6076,6080 ----
+ ps->expand_aliases = expand_aliases;
+ ps->echo_input_at_read = echo_input_at_read;
++ ps->need_here_doc = need_here_doc;
+
+ ps->token = token;
+***************
+*** 6124,6127 ****
+--- 6125,6129 ----
+ expand_aliases = ps->expand_aliases;
+ echo_input_at_read = ps->echo_input_at_read;
++ need_here_doc = ps->need_here_doc;
+
+ FREE (token);
+*** ../bash-4.3-patched/y.tab.c 2014-04-07 11:56:12.000000000 -0400
+--- y.tab.c 2014-07-30 09:55:57.000000000 -0400
+***************
+*** 4955,4959 ****
+
+ r = 0;
+! while (need_here_doc)
+ {
+ parser_state |= PST_HEREDOC;
+--- 5151,5155 ----
+
+ r = 0;
+! while (need_here_doc > 0)
+ {
+ parser_state |= PST_HEREDOC;
+***************
+*** 8388,8391 ****
+--- 8584,8588 ----
+ ps->expand_aliases = expand_aliases;
+ ps->echo_input_at_read = echo_input_at_read;
++ ps->need_here_doc = need_here_doc;
+
+ ps->token = token;
+***************
+*** 8436,8439 ****
+--- 8633,8637 ----
+ expand_aliases = ps->expand_aliases;
+ echo_input_at_read = ps->echo_input_at_read;
++ need_here_doc = ps->need_here_doc;
+
+ FREE (token);
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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/bash43-021 b/src/patches/bash/bash43-021
new file mode 100644
index 0000000..fd1c945
--- /dev/null
+++ b/src/patches/bash/bash43-021
@@ -0,0 +1,52 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-021
+
+Bug-Reported-by: Jared Yanovich
slovichon@gmail.com
+Bug-Reference-ID:
20140625225019.GJ17044@nightderanger.psc.edu
+Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00070.html
+
+Bug-Description:
+
+When the readline `revert-all-at-newline' option is set, pressing newline
+when the current line is one retrieved from history results in a double free
+and a segmentation fault.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/lib/readline/misc.c 2012-09-01 18:03:11.000000000 -0400
+--- lib/readline/misc.c 2014-06-30 13:41:19.000000000 -0400
+***************
+*** 462,465 ****
+--- 462,466 ----
+ /* Set up rl_line_buffer and other variables from history entry */
+ rl_replace_from_history (entry, 0); /* entry->line is now current */
++ entry->data = 0; /* entry->data is now current undo list */
+ /* Undo all changes to this history entry */
+ while (rl_undo_list)
+***************
+*** 469,473 ****
+ FREE (entry->line);
+ entry->line = savestring (rl_line_buffer);
+- entry->data = 0;
+ }
+ entry = previous_history ();
+--- 470,473 ----
+
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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/bash43-022 b/src/patches/bash/bash43-022
new file mode 100644
index 0000000..7ce39ec
--- /dev/null
+++ b/src/patches/bash/bash43-022
@@ -0,0 +1,56 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-022
+
+Bug-Reported-by: scorp.dev.null@gmail.com
+Bug-Reference-ID:
E1WxXw8-0007iE-Bi@pcm14
+Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00061.html
+
+Bug-Description:
+
+Using nested pipelines within loops with the `lastpipe' option set can result
+in a segmentation fault.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/execute_cmd.c 2014-01-31 10:54:52.000000000 -0500
+--- execute_cmd.c 2014-06-19 08:05:49.000000000 -0400
+***************
+*** 2410,2414 ****
+ lstdin = wait_for (lastpid);
+ #if defined (JOB_CONTROL)
+! exec_result = job_exit_status (lastpipe_jid);
+ #endif
+ unfreeze_jobs_list ();
+--- 2425,2438 ----
+ lstdin = wait_for (lastpid);
+ #if defined (JOB_CONTROL)
+! /* If wait_for removes the job from the jobs table, use result of last
+! command as pipeline's exit status as usual. The jobs list can get
+! frozen and unfrozen at inconvenient times if there are multiple pipelines
+! running simultaneously. */
+! if (INVALID_JOB (lastpipe_jid) == 0)
+! exec_result = job_exit_status (lastpipe_jid);
+! else if (pipefail_opt)
+! exec_result = exec_result | lstdin; /* XXX */
+! /* otherwise we use exec_result */
+!
+ #endif
+ unfreeze_jobs_list ();
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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/bash43-023 b/src/patches/bash/bash43-023
new file mode 100644
index 0000000..d1e4e9d
--- /dev/null
+++ b/src/patches/bash/bash43-023
@@ -0,0 +1,104 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-023
+
+Bug-Reported-by: Tim Friske
me@timfriske.com
+Bug-Reference-ID:
CAM1RzOcOR9zzC2i+aeES6LtbHNHoOV+0pZEYPrqxv_QAii-RXA@mail.gmail.com
+Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00056.html
+
+Bug-Description:
+
+Bash does not correctly parse process substitution constructs that contain
+unbalanced parentheses as part of the contained command.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/subst.h 2014-01-11 21:02:27.000000000 -0500
+--- subst.h 2014-07-20 17:25:01.000000000 -0400
+***************
+*** 83,87 ****
+ Start extracting at (SINDEX) as if we had just seen "<(".
+ Make (SINDEX) get the position just after the matching ")". */
+! extern char *extract_process_subst __P((char *, char *, int *));
+ #endif /* PROCESS_SUBSTITUTION */
+
+--- 83,87 ----
+ Start extracting at (SINDEX) as if we had just seen "<(".
+ Make (SINDEX) get the position just after the matching ")". */
+! extern char *extract_process_subst __P((char *, char *, int *, int));
+ #endif /* PROCESS_SUBSTITUTION */
+
+*** ../bash-4.3-patched/subst.c 2014-05-15 08:26:45.000000000 -0400
+--- subst.c 2014-07-20 17:26:44.000000000 -0400
+***************
+*** 1193,1202 ****
+ Make (SINDEX) get the position of the matching ")". */ /*))*/
+ char *
+! extract_process_subst (string, starter, sindex)
+ char *string;
+ char *starter;
+ int *sindex;
+ {
+ return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND));
+ }
+ #endif /* PROCESS_SUBSTITUTION */
+--- 1193,1208 ----
+ Make (SINDEX) get the position of the matching ")". */ /*))*/
+ char *
+! extract_process_subst (string, starter, sindex, xflags)
+ char *string;
+ char *starter;
+ int *sindex;
++ int xflags;
+ {
++ #if 0
+ return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND));
++ #else
++ xflags |= (no_longjmp_on_fatal_error ? SX_NOLONGJMP : 0);
++ return (xparse_dolparen (string, string+*sindex, sindex, xflags));
++ #endif
+ }
+ #endif /* PROCESS_SUBSTITUTION */
+***************
+*** 1786,1790 ****
+ if (string[si] == '\0')
+ CQ_RETURN(si);
+! temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si);
+ free (temp); /* no SX_ALLOC here */
+ i = si;
+--- 1792,1796 ----
+ if (string[si] == '\0')
+ CQ_RETURN(si);
+! temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si, 0);
+ free (temp); /* no SX_ALLOC here */
+ i = si;
+***************
+*** 8250,8254 ****
+ t_index = sindex + 1; /* skip past both '<' and LPAREN */
+
+! temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index); /*))*/
+ sindex = t_index;
+
+--- 8256,8260 ----
+ t_index = sindex + 1; /* skip past both '<' and LPAREN */
+
+! temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index, 0); /*))*/
+ sindex = t_index;
+
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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/bash43-024 b/src/patches/bash/bash43-024
new file mode 100644
index 0000000..a24b8fb
--- /dev/null
+++ b/src/patches/bash/bash43-024
@@ -0,0 +1,54 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-024
+
+Bug-Reported-by: Corentin Peuvrel
cpeuvrel@pom-monitoring.com
+Bug-Reference-ID:
53CE9E5D.6050203@pom-monitoring.com
+Bug-Reference-URL:
http://lists.gnu.org/archive/html/bug-bash/2014-07/msg00021.html
+
+Bug-Description:
+
+Indirect variable references do not work correctly if the reference
+variable expands to an array reference using a subscript other than 0
+(e.g., foo='bar[1]' ; echo ${!foo}).
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/subst.c 2014-06-03 09:32:44.000000000 -0400
+--- subst.c 2014-07-23 09:58:19.000000000 -0400
+***************
+*** 7375,7379 ****
+
+ if (want_indir)
+! tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at);
+ else
+ tdesc = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind);
+--- 7445,7455 ----
+
+ if (want_indir)
+! {
+! tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at);
+! /* Turn off the W_ARRAYIND flag because there is no way for this function
+! to return the index we're supposed to be using. */
+! if (tdesc && tdesc->flags)
+! tdesc->flags &= ~W_ARRAYIND;
+! }
+ else
+ tdesc = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind);
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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/bash43-025 b/src/patches/bash/bash43-025
new file mode 100644
index 0000000..721aca0
--- /dev/null
+++ b/src/patches/bash/bash43-025
@@ -0,0 +1,123 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-025
+
+Bug-Reported-by: Stephane Chazelas
stephane.chazelas@gmail.com
+Bug-Reference-ID:
+Bug-Reference-URL:
+
+Bug-Description:
+
+Under certain circumstances, bash will execute user code while processing the
+environment for exported function definitions.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/builtins/common.h 2013-07-08 16:54:47.000000000 -0400
+--- builtins/common.h 2014-09-12 14:25:47.000000000 -0400
+***************
+*** 34,37 ****
+--- 49,54 ----
+ #define SEVAL_PARSEONLY 0x020
+ #define SEVAL_NOLONGJMP 0x040
++ #define SEVAL_FUNCDEF 0x080 /* only allow function definitions */
++ #define SEVAL_ONECMD 0x100 /* only allow a single command */
+
+ /* Flags for describe_command, shared between type.def and command.def */
+*** ../bash-4.3-patched/builtins/evalstring.c 2014-02-11 09:42:10.000000000 -0500
+--- builtins/evalstring.c 2014-09-14 14:15:13.000000000 -0400
+***************
+*** 309,312 ****
+--- 313,324 ----
+ struct fd_bitmap *bitmap;
+
++ if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def)
++ {
++ internal_warning ("%s: ignoring function definition attempt", from_file);
++ should_jump_to_top_level = 0;
++ last_result = last_command_exit_value = EX_BADUSAGE;
++ break;
++ }
++
+ bitmap = new_fd_bitmap (FD_BITMAP_SIZE);
+ begin_unwind_frame ("pe_dispose");
+***************
+*** 369,372 ****
+--- 381,387 ----
+ dispose_fd_bitmap (bitmap);
+ discard_unwind_frame ("pe_dispose");
++
++ if (flags & SEVAL_ONECMD)
++ break;
+ }
+ }
+*** ../bash-4.3-patched/variables.c 2014-05-15 08:26:50.000000000 -0400
+--- variables.c 2014-09-14 14:23:35.000000000 -0400
+***************
+*** 359,369 ****
+ strcpy (temp_string + char_index + 1, string);
+
+! if (posixly_correct == 0 || legal_identifier (name))
+! parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST);
+!
+! /* Ancient backwards compatibility. Old versions of bash exported
+! functions like name()=() {...} */
+! if (name[char_index - 1] == ')' && name[char_index - 2] == '(')
+! name[char_index - 2] = '\0';
+
+ if (temp_var = find_function (name))
+--- 364,372 ----
+ strcpy (temp_string + char_index + 1, string);
+
+! /* Don't import function names that are invalid identifiers from the
+! environment, though we still allow them to be defined as shell
+! variables. */
+! if (legal_identifier (name))
+! parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
+
+ if (temp_var = find_function (name))
+***************
+*** 382,389 ****
+ report_error (_("error importing function definition for `%s'"), name);
+ }
+-
+- /* ( */
+- if (name[char_index - 1] == ')' && name[char_index - 2] == '\0')
+- name[char_index - 2] = '('; /* ) */
+ }
+ #if defined (ARRAY_VARS)
+--- 385,388 ----
+*** ../bash-4.3-patched/subst.c 2014-08-11 11:16:35.000000000 -0400
+--- subst.c 2014-09-12 15:31:04.000000000 -0400
+***************
+*** 8048,8052 ****
+ goto return0;
+ }
+! else if (var = find_variable_last_nameref (temp1))
+ {
+ temp = nameref_cell (var);
+--- 8118,8124 ----
+ goto return0;
+ }
+! else if (var && (invisible_p (var) || var_isset (var) == 0))
+! temp = (char *)NULL;
+! else if ((var = find_variable_last_nameref (temp1)) && var_isset (var) && invisible_p (var) == 0)
+ {
+ temp = nameref_cell (var);
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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/bash43-026 b/src/patches/bash/bash43-026
new file mode 100644
index 0000000..e48141b
--- /dev/null
+++ b/src/patches/bash/bash43-026
@@ -0,0 +1,60 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.3
+Patch-ID: bash43-026
+
+Bug-Reported-by: Tavis Ormandy <taviso () cmpxchg8b com>
+Bug-Reference-ID:
+Bug-Reference-URL:
http://twitter.com/taviso/statuses/514887394294652929
+
+Bug-Description:
+
+Under certain circumstances, bash can incorrectly save a lookahead character and
+return it on a subsequent call, even when reading a new line.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3.25/parse.y 2014-07-30 10:14:31.000000000 -0400
+--- parse.y 2014-09-25 20:20:21.000000000 -0400
+***************
+*** 2954,2957 ****
+--- 2954,2959 ----
+ word_desc_to_read = (WORD_DESC *)NULL;
+
++ eol_ungetc_lookahead = 0;
++
+ current_token = '\n'; /* XXX */
+ last_read_token = '\n';
+*** ../bash-4.3.25/y.tab.c 2014-07-30 10:14:32.000000000 -0400
+--- y.tab.c 2014-09-25 20:21:48.000000000 -0400
+***************
+*** 5266,5269 ****
+--- 5266,5271 ----
+ word_desc_to_read = (WORD_DESC *)NULL;
+
++ eol_ungetc_lookahead = 0;
++
+ current_token = '\n'; /* XXX */
+ last_read_token = '\n';
+***************
+*** 8540,8542 ****
+ }
+ #endif /* HANDLE_MULTIBYTE */
+-
+--- 8542,8543 ----
+*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h 2014-03-20 20: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_ */
hooks/post-receive
--
IPFire 2.x development tree