summaryrefslogtreecommitdiff
path: root/data/bash
diff options
context:
space:
mode:
authorJay Freeman <saurik@saurik.com>2009-04-10 22:47:10 +0000
committerJay Freeman <saurik@saurik.com>2009-04-10 22:47:10 +0000
commit261fcc9ff5e672c3cccceccf5c7bd9c5a2c353aa (patch)
treea91d768842e579ed5cc8eadf26d26b5aada18805 /data/bash
parent233274e39119a2e36b4cb27975639f199d3b149b (diff)
Upgraded to bash 4.0: that sucked :(.
git-svn-id: http://svn.telesphoreo.org/trunk@574 514c082c-b64e-11dc-b46d-3d985efe055d
Diffstat (limited to 'data/bash')
l---------data/bash/_metadata/gettext.dep1
l---------data/bash/_metadata/ncurses.dep1
-rw-r--r--data/bash/_metadata/version2
-rw-r--r--data/bash/bash-3.2.tar.gzbin2529838 -> 0 bytes
-rw-r--r--data/bash/bash-4.0.tar.gzbin0 -> 6230779 bytes
-rw-r--r--data/bash/bash32-00147
-rw-r--r--data/bash/bash32-00248
-rw-r--r--data/bash/bash32-003147
-rw-r--r--data/bash/bash32-00496
-rw-r--r--data/bash/bash32-005223
-rw-r--r--data/bash/bash32-00645
-rw-r--r--data/bash/bash32-00755
-rw-r--r--data/bash/bash32-00848
-rw-r--r--data/bash/bash32-00961
-rw-r--r--data/bash/bash32-010207
-rw-r--r--data/bash/bash32-011138
-rw-r--r--data/bash/bash32-01296
-rw-r--r--data/bash/bash32-01365
-rw-r--r--data/bash/bash32-014307
-rw-r--r--data/bash/bash32-01595
-rw-r--r--data/bash/bash32-01652
-rw-r--r--data/bash/bash32-01785
-rw-r--r--data/bash/bash32-01898
-rw-r--r--data/bash/bash32-019343
-rw-r--r--data/bash/bash32-020183
-rw-r--r--data/bash/bash32-02172
-rw-r--r--data/bash/bash32-022126
-rw-r--r--data/bash/bash32-02351
-rw-r--r--data/bash/bash32-02477
-rw-r--r--data/bash/bash32-02579
-rw-r--r--data/bash/bash32-02682
-rw-r--r--data/bash/bash32-02785
-rw-r--r--data/bash/bash32-02860
-rw-r--r--data/bash/bash32-02952
-rw-r--r--data/bash/bash32-03050
-rw-r--r--data/bash/bash32-03162
-rw-r--r--data/bash/bash32-03247
-rw-r--r--data/bash/bash32-03388
-rw-r--r--data/bash/bash32-03474
-rw-r--r--data/bash/bash32-035159
-rw-r--r--data/bash/bash32-03644
-rw-r--r--data/bash/bash32-037110
-rw-r--r--data/bash/bash32-03880
-rw-r--r--data/bash/bash32-039175
-rw-r--r--data/bash/bash40-001162
-rw-r--r--data/bash/bash40-00243
-rw-r--r--data/bash/bash40-00370
-rw-r--r--data/bash/bash40-00447
-rw-r--r--data/bash/bash40-00563
-rw-r--r--data/bash/bash40-00643
-rw-r--r--data/bash/bash40-007263
-rw-r--r--data/bash/bash40-00849
-rw-r--r--data/bash/bash40-00961
-rw-r--r--data/bash/bash40-01063
-rw-r--r--data/bash/bash40-01149
-rw-r--r--data/bash/bash40-01247
-rw-r--r--data/bash/bash40-013153
-rw-r--r--data/bash/bash40-014113
-rw-r--r--data/bash/bash40-01584
-rw-r--r--data/bash/bash40-016104
-rw-r--r--data/bash/bash40-01747
-rw-r--r--data/bash/installer.diff12
-rw-r--r--data/bash/make.sh14
-rw-r--r--data/bash/mdns.diff25
64 files changed, 1472 insertions, 4056 deletions
diff --git a/data/bash/_metadata/gettext.dep b/data/bash/_metadata/gettext.dep
deleted file mode 120000
index e8dbd8996..000000000
--- a/data/bash/_metadata/gettext.dep
+++ /dev/null
@@ -1 +0,0 @@
-../../gettext \ No newline at end of file
diff --git a/data/bash/_metadata/ncurses.dep b/data/bash/_metadata/ncurses.dep
new file mode 120000
index 000000000..a395fad08
--- /dev/null
+++ b/data/bash/_metadata/ncurses.dep
@@ -0,0 +1 @@
+../../ncurses \ No newline at end of file
diff --git a/data/bash/_metadata/version b/data/bash/_metadata/version
index 0c44c7da4..9d58a584e 100644
--- a/data/bash/_metadata/version
+++ b/data/bash/_metadata/version
@@ -1 +1 @@
-3.2.39
+4.0.17
diff --git a/data/bash/bash-3.2.tar.gz b/data/bash/bash-3.2.tar.gz
deleted file mode 100644
index 59f992a1d..000000000
--- a/data/bash/bash-3.2.tar.gz
+++ /dev/null
Binary files differ
diff --git a/data/bash/bash-4.0.tar.gz b/data/bash/bash-4.0.tar.gz
new file mode 100644
index 000000000..b5b6b9d4e
--- /dev/null
+++ b/data/bash/bash-4.0.tar.gz
Binary files differ
diff --git a/data/bash/bash32-001 b/data/bash/bash32-001
deleted file mode 100644
index b7d1f1e07..000000000
--- a/data/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/data/bash/bash32-002 b/data/bash/bash32-002
deleted file mode 100644
index b934df9fa..000000000
--- a/data/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/data/bash/bash32-003 b/data/bash/bash32-003
deleted file mode 100644
index 922041b4a..000000000
--- a/data/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/data/bash/bash32-004 b/data/bash/bash32-004
deleted file mode 100644
index cd2accfa3..000000000
--- a/data/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/data/bash/bash32-005 b/data/bash/bash32-005
deleted file mode 100644
index 903ec5840..000000000
--- a/data/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/data/bash/bash32-006 b/data/bash/bash32-006
deleted file mode 100644
index 589db9e59..000000000
--- a/data/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/data/bash/bash32-007 b/data/bash/bash32-007
deleted file mode 100644
index 9b86f4af7..000000000
--- a/data/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/data/bash/bash32-008 b/data/bash/bash32-008
deleted file mode 100644
index 7ec07ffe6..000000000
--- a/data/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/data/bash/bash32-009 b/data/bash/bash32-009
deleted file mode 100644
index 9cfd16e94..000000000
--- a/data/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/data/bash/bash32-010 b/data/bash/bash32-010
deleted file mode 100644
index 88de5758f..000000000
--- a/data/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/data/bash/bash32-011 b/data/bash/bash32-011
deleted file mode 100644
index c021f52f8..000000000
--- a/data/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/data/bash/bash32-012 b/data/bash/bash32-012
deleted file mode 100644
index 8d669d27c..000000000
--- a/data/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/data/bash/bash32-013 b/data/bash/bash32-013
deleted file mode 100644
index d47bc1a5f..000000000
--- a/data/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/data/bash/bash32-014 b/data/bash/bash32-014
deleted file mode 100644
index b706505b7..000000000
--- a/data/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/data/bash/bash32-015 b/data/bash/bash32-015
deleted file mode 100644
index d887f6e56..000000000
--- a/data/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/data/bash/bash32-016 b/data/bash/bash32-016
deleted file mode 100644
index a0f065ad3..000000000
--- a/data/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/data/bash/bash32-017 b/data/bash/bash32-017
deleted file mode 100644
index 99e5e70d2..000000000
--- a/data/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/data/bash/bash32-018 b/data/bash/bash32-018
deleted file mode 100644
index d729aaf5e..000000000
--- a/data/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/data/bash/bash32-019 b/data/bash/bash32-019
deleted file mode 100644
index 647bd1fa3..000000000
--- a/data/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/data/bash/bash32-020 b/data/bash/bash32-020
deleted file mode 100644
index 8c7e32890..000000000
--- a/data/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/data/bash/bash32-021 b/data/bash/bash32-021
deleted file mode 100644
index 003489c6b..000000000
--- a/data/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/data/bash/bash32-022 b/data/bash/bash32-022
deleted file mode 100644
index d3679e67f..000000000
--- a/data/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/data/bash/bash32-023 b/data/bash/bash32-023
deleted file mode 100644
index 34a63947f..000000000
--- a/data/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/data/bash/bash32-024 b/data/bash/bash32-024
deleted file mode 100644
index 1575f37a9..000000000
--- a/data/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/data/bash/bash32-025 b/data/bash/bash32-025
deleted file mode 100644
index 4d53d89d7..000000000
--- a/data/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/data/bash/bash32-026 b/data/bash/bash32-026
deleted file mode 100644
index ba7de50a8..000000000
--- a/data/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/data/bash/bash32-027 b/data/bash/bash32-027
deleted file mode 100644
index 5e110cb96..000000000
--- a/data/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/data/bash/bash32-028 b/data/bash/bash32-028
deleted file mode 100644
index e8182948d..000000000
--- a/data/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/data/bash/bash32-029 b/data/bash/bash32-029
deleted file mode 100644
index 9de208584..000000000
--- a/data/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/data/bash/bash32-030 b/data/bash/bash32-030
deleted file mode 100644
index 3f12c2833..000000000
--- a/data/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.gnu.org/archive/html/bug-bash/2007-11/msg00022.html
-
-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/data/bash/bash32-031 b/data/bash/bash32-031
deleted file mode 100644
index 6c96fb9d0..000000000
--- a/data/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/data/bash/bash32-032 b/data/bash/bash32-032
deleted file mode 100644
index 5e53e2919..000000000
--- a/data/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/data/bash/bash32-033 b/data/bash/bash32-033
deleted file mode 100644
index 0d698108b..000000000
--- a/data/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/data/bash/bash32-034 b/data/bash/bash32-034
deleted file mode 100644
index 4f081624b..000000000
--- a/data/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/data/bash/bash32-035 b/data/bash/bash32-035
deleted file mode 100644
index 55506baef..000000000
--- a/data/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/data/bash/bash32-036 b/data/bash/bash32-036
deleted file mode 100644
index ef22e60e0..000000000
--- a/data/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/data/bash/bash32-037 b/data/bash/bash32-037
deleted file mode 100644
index 376bd937c..000000000
--- a/data/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/data/bash/bash32-038 b/data/bash/bash32-038
deleted file mode 100644
index 842b1b501..000000000
--- a/data/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/data/bash/bash32-039 b/data/bash/bash32-039
deleted file mode 100644
index c225a5af4..000000000
--- a/data/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/data/bash/bash40-001 b/data/bash/bash40-001
new file mode 100644
index 000000000..5c6bb34b2
--- /dev/null
+++ b/data/bash/bash40-001
@@ -0,0 +1,162 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-001
+
+Bug-Reported-by: Mike Frysinger <vapier@gentoo.org>
+Bug-Reference-ID: <200902211821.42188.vapier@gentoo.org>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00147.html
+
+Bug-Description:
+
+Bash has problems parsing certain constructs inside Posix-style $(...)
+command substitutions, mostly with backslash-quoting and reserved word
+recognition. This is an issue because the contents are parsed at the
+time the word containing the command substitution is read.
+
+Patch:
+
+*** ../bash-4.0/parse.y 2009-01-08 08:29:12.000000000 -0500
+--- parse.y 2009-03-06 20:32:35.000000000 -0500
+***************
+*** 2928,2931 ****
+--- 2932,2936 ----
+ #define LEX_HEREDELIM 0x100 /* reading here-doc delimiter */
+ #define LEX_STRIPDOC 0x200 /* <<- strip tabs from here doc delim */
++ #define LEX_INWORD 0x400
+
+ #define COMSUB_META(ch) ((ch) == ';' || (ch) == '&' || (ch) == '|')
+***************
+*** 3180,3184 ****
+ int *lenp, flags;
+ {
+! int count, ch, peekc, tflags, lex_rwlen, lex_firstind;
+ int nestlen, ttranslen, start_lineno;
+ char *ret, *nestret, *ttrans, *heredelim;
+--- 3188,3192 ----
+ int *lenp, flags;
+ {
+! int count, ch, peekc, tflags, lex_rwlen, lex_wlen, lex_firstind;
+ int nestlen, ttranslen, start_lineno;
+ char *ret, *nestret, *ttrans, *heredelim;
+***************
+*** 3201,3205 ****
+
+ start_lineno = line_number;
+! lex_rwlen = 0;
+
+ heredelim = 0;
+--- 3209,3213 ----
+
+ start_lineno = line_number;
+! lex_rwlen = lex_wlen = 0;
+
+ heredelim = 0;
+***************
+*** 3268,3271 ****
+--- 3276,3319 ----
+ }
+
++ if (tflags & LEX_PASSNEXT) /* last char was backslash */
++ {
++ /*itrace("parse_comsub:%d: lex_passnext -> 0 ch = `%c' (%d)", line_number, ch, __LINE__);*/
++ tflags &= ~LEX_PASSNEXT;
++ if (qc != '\'' && ch == '\n') /* double-quoted \<newline> disappears. */
++ {
++ if (retind > 0)
++ retind--; /* swallow previously-added backslash */
++ continue;
++ }
++
++ RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64);
++ if MBTEST(ch == CTLESC || ch == CTLNUL)
++ ret[retind++] = CTLESC;
++ ret[retind++] = ch;
++ continue;
++ }
++
++ /* If this is a shell break character, we are not in a word. If not,
++ we either start or continue a word. */
++ if MBTEST(shellbreak (ch))
++ {
++ tflags &= ~LEX_INWORD;
++ /*itrace("parse_comsub:%d: lex_inword -> 0 ch = `%c' (%d)", line_number, ch, __LINE__);*/
++ }
++ else
++ {
++ if (tflags & LEX_INWORD)
++ {
++ lex_wlen++;
++ /*itrace("parse_comsub:%d: lex_inword == 1 ch = `%c' lex_wlen = %d (%d)", line_number, ch, lex_wlen, __LINE__);*/
++ }
++ else
++ {
++ /*itrace("parse_comsub:%d: lex_inword -> 1 ch = `%c' (%d)", line_number, ch, __LINE__);*/
++ tflags |= LEX_INWORD;
++ lex_wlen = 0;
++ }
++ }
++
+ /* Skip whitespace */
+ if MBTEST(shellblank (ch) && lex_rwlen == 0)
+***************
+*** 3400,3428 ****
+ }
+ else
+! ch = peekc; /* fall through and continue XXX - this skips comments if peekc == '#' */
+ }
+! /* Not exactly right yet, should handle shell metacharacters, too. If
+! any changes are made to this test, make analogous changes to subst.c:
+! extract_delimited_string(). */
+! else if MBTEST((tflags & LEX_CKCOMMENT) && (tflags & LEX_INCOMMENT) == 0 && ch == '#' && (retind == 0 || ret[retind-1] == '\n' || shellblank (ret[retind - 1])))
+ tflags |= LEX_INCOMMENT;
+
+! if (tflags & LEX_PASSNEXT) /* last char was backslash */
+! {
+! tflags &= ~LEX_PASSNEXT;
+! if (qc != '\'' && ch == '\n') /* double-quoted \<newline> disappears. */
+! {
+! if (retind > 0)
+! retind--; /* swallow previously-added backslash */
+! continue;
+! }
+!
+! RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64);
+! if MBTEST(ch == CTLESC || ch == CTLNUL)
+! ret[retind++] = CTLESC;
+! ret[retind++] = ch;
+! continue;
+! }
+! else if MBTEST(ch == CTLESC || ch == CTLNUL) /* special shell escapes */
+ {
+ RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64);
+--- 3442,3454 ----
+ }
+ else
+! ch = peekc; /* fall through and continue XXX */
+ }
+! else if MBTEST((tflags & LEX_CKCOMMENT) && (tflags & LEX_INCOMMENT) == 0 && ch == '#' && (((tflags & LEX_RESWDOK) && lex_rwlen == 0) || ((tflags & LEX_INWORD) && lex_wlen == 0)))
+! {
+! /*itrace("parse_comsub:%d: lex_incomment -> 1 (%d)", line_number, __LINE__);*/
+ tflags |= LEX_INCOMMENT;
++ }
+
+! if MBTEST(ch == CTLESC || ch == CTLNUL) /* special shell escapes */
+ {
+ RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64);
+*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h 2009-02-22 16:11:31.000000000 -0500
+***************
+*** 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/data/bash/bash40-002 b/data/bash/bash40-002
new file mode 100644
index 000000000..18bd25e7b
--- /dev/null
+++ b/data/bash/bash40-002
@@ -0,0 +1,43 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-002
+
+Bug-Reported-by: phil@Arcturus.universe
+Bug-Reference-ID: <20090221143709.13878.qmail@Arcturus.universe>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00142.html
+
+Bug-Description:
+
+A line inadvertenly omitted from a submitted patch results in core dumps
+when attempting filename completion while using the bash-completion
+package.
+
+Patch:
+
+*** ../bash-4.0/pcomplete.c 2009-02-01 17:12:31.000000000 -0500
+--- pcomplete.c 2009-02-22 17:08:25.000000000 -0500
+***************
+*** 1033,1036 ****
+--- 1033,1037 ----
+
+ pps = &ps;
++ save_parser_state (pps);
+ begin_unwind_frame ("gen-shell-function-matches");
+ add_unwind_protect (restore_parser_state, (char *)pps);
+*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h 2009-02-22 16:11:31.000000000 -0500
+***************
+*** 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/data/bash/bash40-003 b/data/bash/bash40-003
new file mode 100644
index 000000000..cc941d5e9
--- /dev/null
+++ b/data/bash/bash40-003
@@ -0,0 +1,70 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-003
+
+Bug-Reported-by: Bernd Eggink <monoped@sudrala.de>
+Bug-Reference-ID: <49A323F5.60503@sudrala.de>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00177.html
+
+Bug-Description:
+
+Under certain circumstances, constructs containing command substitutions
+prevent PS1 from being re-evaluated and updated before being displayed.
+
+Patch:
+
+*** ../bash-4.0/parse.y 2009-01-08 08:29:12.000000000 -0500
+--- parse.y 2009-02-25 15:58:25.000000000 -0500
+***************
+*** 1616,1623 ****
+ int *ret;
+
+! ret = (int *)xmalloc (3 * sizeof (int));
+ ret[0] = last_read_token;
+ ret[1] = token_before_that;
+ ret[2] = two_tokens_ago;
+ return ret;
+ }
+--- 1616,1624 ----
+ int *ret;
+
+! ret = (int *)xmalloc (4 * sizeof (int));
+ ret[0] = last_read_token;
+ ret[1] = token_before_that;
+ ret[2] = two_tokens_ago;
++ ret[3] = current_token;
+ return ret;
+ }
+***************
+*** 1632,1635 ****
+--- 1633,1637 ----
+ token_before_that = ts[1];
+ two_tokens_ago = ts[2];
++ current_token = ts[3];
+ }
+
+***************
+*** 2669,2672 ****
+--- 2671,2675 ----
+ word_desc_to_read = (WORD_DESC *)NULL;
+
++ current_token = '\n'; /* XXX */
+ last_read_token = '\n';
+ token_to_read = '\n';
+*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h 2009-02-22 16:11:31.000000000 -0500
+***************
+*** 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/data/bash/bash40-004 b/data/bash/bash40-004
new file mode 100644
index 000000000..6ab6c4ee6
--- /dev/null
+++ b/data/bash/bash40-004
@@ -0,0 +1,47 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-004
+
+Bug-Reported-by: Mike Frysinger <vapier@gentoo.org>
+Bug-Reference-ID: <200902231720.30519.vapier@gentoo.org>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00176.html
+
+Bug-Description:
+
+In some cases, enabling the `checkjobs' shell option will cause the shell
+to core dump when executing the `exit' builtin.
+
+Patch:
+
+*** ../bash-4.0/builtins/exit.def 2009-01-04 14:32:22.000000000 -0500
+--- builtins/exit.def 2009-02-23 22:56:58.000000000 -0500
+***************
+*** 114,118 ****
+ if (jobs[i] && STOPPED (i))
+ stopmsg = JSTOPPED;
+! else if (check_jobs_at_exit && stopmsg == 0 && RUNNING (i))
+ stopmsg = JRUNNING;
+
+--- 114,118 ----
+ if (jobs[i] && STOPPED (i))
+ stopmsg = JSTOPPED;
+! else if (check_jobs_at_exit && stopmsg == 0 && jobs[i] && RUNNING (i))
+ stopmsg = JRUNNING;
+
+*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h 2009-02-22 16:11:31.000000000 -0500
+***************
+*** 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/data/bash/bash40-005 b/data/bash/bash40-005
new file mode 100644
index 000000000..ccfde66da
--- /dev/null
+++ b/data/bash/bash40-005
@@ -0,0 +1,63 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-005
+
+Bug-Reported-by: Pierre Gaston <pierre.gaston@gmail.com>
+Bug-Reference-ID: <c440c9800902242338n69f594a4nd66b8748def9cf18@mail.gmail.com>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00206.html
+
+Bug-Description:
+
+The `declare' builtin dumped core when attempting to assign associative
+array indices containing some special characters, even when they were
+quoted before being expanded.
+
+Patch:
+
+*** ../bash-4.0/builtins/declare.def 2009-01-04 14:32:22.000000000 -0500
+--- builtins/declare.def 2009-02-26 11:40:16.000000000 -0500
+***************
+*** 296,299 ****
+--- 296,306 ----
+ if (t = strchr (name, '[')) /* ] */
+ {
++ /* If offset != 0 we have already validated any array reference */
++ if (offset == 0 && valid_array_reference (name) == 0)
++ {
++ sh_invalidid (name);
++ assign_error++;
++ NEXT_VARIABLE ();
++ }
+ subscript_start = t;
+ *t = '\0';
+***************
+*** 485,489 ****
+ /* declare -a name[[n]] or declare name[n] makes name an indexed
+ array variable. */
+! else if ((making_array_special || (flags_on & att_array)) && array_p (var) == 0)
+ var = convert_var_to_array (var);
+ #endif /* ARRAY_VARS */
+--- 492,496 ----
+ /* declare -a name[[n]] or declare name[n] makes name an indexed
+ array variable. */
+! else if ((making_array_special || (flags_on & att_array)) && array_p (var) == 0 && assoc_p (var) == 0)
+ var = convert_var_to_array (var);
+ #endif /* ARRAY_VARS */
+*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h 2009-02-22 16:11:31.000000000 -0500
+***************
+*** 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/data/bash/bash40-006 b/data/bash/bash40-006
new file mode 100644
index 000000000..3d044c72e
--- /dev/null
+++ b/data/bash/bash40-006
@@ -0,0 +1,43 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-006
+
+Bug-Reported-by: Evgeniy Zhemchugov <jini.zh@gmail.com>
+Bug-Reference-ID: <e7bc8dd30902241016m8bd543ej775717d007df975b@mail.gmail.com>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00202.html
+
+Bug-Description:
+
+Bash did not parse pipelines using the |& construct correctly if the
+pipeline elements were not simple commands.
+
+Patch:
+
+*** ../bash-4.0/parse.y 2009-01-08 08:29:12.000000000 -0500
+--- parse.y 2009-02-25 17:25:56.000000000 -0500
+***************
+*** 4478,4481 ****
+--- 4478,4482 ----
+ case AND_AND:
+ case BANG:
++ case BAR_AND:
+ case DO:
+ case DONE:
+*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h 2009-02-22 16:11:31.000000000 -0500
+***************
+*** 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/data/bash/bash40-007 b/data/bash/bash40-007
new file mode 100644
index 000000000..29071e129
--- /dev/null
+++ b/data/bash/bash40-007
@@ -0,0 +1,263 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-007
+
+Bug-Reported-by: AnMaster <anmaster@tele2.se>
+Bug-Reference-ID: <49A41C18.80807@tele2.se>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00188.html
+
+Bug-Description:
+
+Bash had a number of problems parsing associative array subscripts containing
+special characters. The subscripts are supposed to be read as if they are
+enclosed between double quotes.
+
+Patch:
+
+*** ../bash-4.0/parse.y 2009-01-08 08:29:12.000000000 -0500
+--- parse.y 2009-02-25 17:25:56.000000000 -0500
+***************
+*** 2919,2922 ****
+--- 2919,2923 ----
+ #define P_COMMAND 0x08 /* parsing a command, so look for comments */
+ #define P_BACKQUOTE 0x10 /* parsing a backquoted command substitution */
++ #define P_ARRAYSUB 0x20 /* parsing a [...] array subscript for assignment */
+
+ /* Lexical state while parsing a grouping construct or $(...). */
+***************
+*** 3134,3137 ****
+--- 3134,3139 ----
+ FREE (nestret);
+ }
++ else if ((flags & P_ARRAYSUB) && (tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */
++ goto parse_dollar_word;
+ }
+ /* Parse an old-style command substitution within double quotes as a
+***************
+*** 3150,3153 ****
+--- 3150,3154 ----
+ /* check for $(), $[], or ${} inside quoted string. */
+ {
++ parse_dollar_word:
+ if (open == ch) /* undo previous increment */
+ count--;
+***************
+*** 4277,4281 ****
+ (token_index == 0 && (parser_state&PST_COMPASSIGN))))
+ {
+! ttok = parse_matched_pair (cd, '[', ']', &ttoklen, 0);
+ if (ttok == &matched_pair_error)
+ return -1; /* Bail immediately. */
+--- 4277,4281 ----
+ (token_index == 0 && (parser_state&PST_COMPASSIGN))))
+ {
+! ttok = parse_matched_pair (cd, '[', ']', &ttoklen, P_ARRAYSUB);
+ if (ttok == &matched_pair_error)
+ return -1; /* Bail immediately. */
+*** ../bash-4.0/arrayfunc.c 2009-01-04 14:32:21.000000000 -0500
+--- arrayfunc.c 2009-02-25 07:58:54.000000000 -0500
+***************
+*** 605,666 ****
+ }
+
+! /* This function assumes s[i] == '['; returns with s[ret] == ']' if
+! an array subscript is correctly parsed. */
+! int
+! skipsubscript (s, i)
+! const char *s;
+! int i;
+! {
+! int count, c;
+! #if defined (HANDLE_MULTIBYTE)
+! mbstate_t state, state_bak;
+! size_t slength, mblength;
+! #endif
+!
+! #if defined (HANDLE_MULTIBYTE)
+! memset (&state, '\0', sizeof (mbstate_t));
+! slength = strlen (s + i);
+! #endif
+!
+! count = 1;
+! while (count)
+! {
+! /* Advance one (possibly multibyte) character in S starting at I. */
+! #if defined (HANDLE_MULTIBYTE)
+! if (MB_CUR_MAX > 1)
+! {
+! state_bak = state;
+! mblength = mbrlen (s + i, slength, &state);
+!
+! if (MB_INVALIDCH (mblength))
+! {
+! state = state_bak;
+! i++;
+! slength--;
+! }
+! else if (MB_NULLWCH (mblength))
+! return i;
+! else
+! {
+! i += mblength;
+! slength -= mblength;
+! }
+! }
+! else
+! #endif
+! ++i;
+!
+! c = s[i];
+!
+! if (c == 0)
+! break;
+! else if (c == '[')
+! count++;
+! else if (c == ']')
+! count--;
+! }
+!
+! return i;
+! }
+
+ /* This function is called with SUB pointing to just after the beginning
+--- 605,609 ----
+ }
+
+! /* skipsubscript moved to subst.c to use private functions. 2009/02/24. */
+
+ /* This function is called with SUB pointing to just after the beginning
+*** ../bash-4.0/subst.c 2009-01-28 14:34:12.000000000 -0500
+--- subst.c 2009-02-25 09:18:33.000000000 -0500
+***************
+*** 223,226 ****
+--- 223,227 ----
+ static char *extract_delimited_string __P((char *, int *, char *, char *, char *, int));
+ static char *extract_dollar_brace_string __P((char *, int *, int, int));
++ static int skip_matched_pair __P((const char *, int, int, int, int));
+
+ static char *pos_params __P((char *, int, int, int));
+***************
+*** 1375,1378 ****
+--- 1376,1480 ----
+ #define CQ_RETURN(x) do { no_longjmp_on_fatal_error = 0; return (x); } while (0)
+
++ /* This function assumes s[i] == open; returns with s[ret] == close; used to
++ parse array subscripts. FLAGS currently unused. */
++ static int
++ skip_matched_pair (string, start, open, close, flags)
++ const char *string;
++ int start, open, close, flags;
++ {
++ int i, pass_next, backq, si, c, count;
++ size_t slen;
++ char *temp, *ss;
++ DECLARE_MBSTATE;
++
++ slen = strlen (string + start) + start;
++ no_longjmp_on_fatal_error = 1;
++
++ i = start + 1; /* skip over leading bracket */
++ count = 1;
++ pass_next = backq = 0;
++ ss = (char *)string;
++ while (c = string[i])
++ {
++ if (pass_next)
++ {
++ pass_next = 0;
++ if (c == 0)
++ CQ_RETURN(i);
++ ADVANCE_CHAR (string, slen, i);
++ continue;
++ }
++ else if (c == '\\')
++ {
++ pass_next = 1;
++ i++;
++ continue;
++ }
++ else if (backq)
++ {
++ if (c == '`')
++ backq = 0;
++ ADVANCE_CHAR (string, slen, i);
++ continue;
++ }
++ else if (c == '`')
++ {
++ backq = 1;
++ i++;
++ continue;
++ }
++ else if (c == open)
++ {
++ count++;
++ i++;
++ continue;
++ }
++ else if (c == close)
++ {
++ count--;
++ if (count == 0)
++ break;
++ i++;
++ continue;
++ }
++ else if (c == '\'' || c == '"')
++ {
++ i = (c == '\'') ? skip_single_quoted (ss, slen, ++i)
++ : skip_double_quoted (ss, slen, ++i);
++ /* no increment, the skip functions increment past the closing quote. */
++ }
++ else if (c == '$' && (string[i+1] == LPAREN || string[i+1] == LBRACE))
++ {
++ si = i + 2;
++ if (string[si] == '\0')
++ CQ_RETURN(si);
++
++ if (string[i+1] == LPAREN)
++ temp = extract_delimited_string (ss, &si, "$(", "(", ")", SX_NOALLOC|SX_COMMAND); /* ) */
++ else
++ temp = extract_dollar_brace_string (ss, &si, 0, SX_NOALLOC);
++ i = si;
++ if (string[i] == '\0') /* don't increment i past EOS in loop */
++ break;
++ i++;
++ continue;
++ }
++ else
++ ADVANCE_CHAR (string, slen, i);
++ }
++
++ CQ_RETURN(i);
++ }
++
++ #if defined (ARRAY_VARS)
++ int
++ skipsubscript (string, start)
++ const char *string;
++ int start;
++ {
++ return (skip_matched_pair (string, start, '[', ']', 0));
++ }
++ #endif
++
+ /* Skip characters in STRING until we find a character in DELIMS, and return
+ the index of that character. START is the index into string at which we
+*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h 2009-02-22 16:11:31.000000000 -0500
+***************
+*** 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/data/bash/bash40-008 b/data/bash/bash40-008
new file mode 100644
index 000000000..7a2576aa6
--- /dev/null
+++ b/data/bash/bash40-008
@@ -0,0 +1,49 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-008
+
+Bug-Reported-by: Mike Frysinger <vapier@gentoo.org>
+Bug-Reference-ID: <200902261030.54062.vapier@gentoo.org>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00230.html
+
+Bug-Description:
+
+Patch:
+
+*** ../bash-4.0/parse.y 2009-01-08 08:29:12.000000000 -0500
+--- parse.y 2009-02-26 17:22:15.000000000 -0500
+***************
+*** 3443,3448 ****
+ else
+ shell_ungetc (peekc);
+! tflags |= LEX_HEREDELIM;
+! lex_firstind = -1;
+ continue;
+ }
+--- 3443,3451 ----
+ else
+ shell_ungetc (peekc);
+! if (peekc != '<')
+! {
+! tflags |= LEX_HEREDELIM;
+! lex_firstind = -1;
+! }
+ continue;
+ }
+*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h 2009-02-22 16:11:31.000000000 -0500
+***************
+*** 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/data/bash/bash40-009 b/data/bash/bash40-009
new file mode 100644
index 000000000..f58391929
--- /dev/null
+++ b/data/bash/bash40-009
@@ -0,0 +1,61 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-009
+
+Bug-Reported-by: "Chris F.A. Johnson" <cfajohnson@gmail.com>
+Bug-Reference-ID: <4d6b7$49a88cec$cef88ba3$16813@TEKSAVVY.COM>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00255.html
+
+Bug-Description:
+
+When the read builtin returned due to a timeout supplied with the -t option,
+it did not restore any modified terminal attribtues.
+
+Patch:
+
+*** ../bash-4.0/builtins/read.def 2009-01-15 23:11:21.000000000 -0500
+--- builtins/read.def 2009-03-02 10:15:39.000000000 -0500
+***************
+*** 370,381 ****
+ if (code)
+ {
+! #if 0
+ run_unwind_frame ("read_builtin");
+- return (EXECUTION_FAILURE);
+- #else
+ input_string[i] = '\0'; /* make sure it's terminated */
+! retval = 128+SIGALRM;;
+ goto assign_vars;
+- #endif
+ }
+ old_alrm = set_signal_handler (SIGALRM, sigalrm);
+--- 370,381 ----
+ if (code)
+ {
+! /* Tricky. The top of the unwind-protect stack is the free of
+! input_string. We want to run all the rest and use input_string,
+! so we have to remove it from the stack. */
+! remove_unwind_protect ();
+ run_unwind_frame ("read_builtin");
+ input_string[i] = '\0'; /* make sure it's terminated */
+! retval = 128+SIGALRM;
+ goto assign_vars;
+ }
+ old_alrm = set_signal_handler (SIGALRM, sigalrm);
+*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h 2009-02-22 16:11:31.000000000 -0500
+***************
+*** 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/data/bash/bash40-010 b/data/bash/bash40-010
new file mode 100644
index 000000000..3229c5736
--- /dev/null
+++ b/data/bash/bash40-010
@@ -0,0 +1,63 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-010
+
+Bug-Reported-by: Mike Frysinger <vapier@gentoo.org>
+Bug-Reference-ID: <200903030122.56206.vapier@gentoo.org>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00023.html
+
+Bug-Description:
+
+Bash has problems parsing comments in case statements when they appear in
+$(...) subshells.
+
+Patch:
+
+*** ../bash-4.0/parse.y 2009-03-07 15:18:35.000000000 -0500
+--- parse.y 2009-03-07 14:16:32.000000000 -0500
+***************
+*** 3413,3419 ****
+ tflags &= ~LEX_RESWDOK;
+ }
+! else if (shellbreak (ch) == 0)
+ {
+! tflags &= ~LEX_RESWDOK;
+ /*itrace("parse_comsub:%d: found `%c', lex_reswordok -> 0", line_number, ch);*/
+ }
+--- 3415,3433 ----
+ tflags &= ~LEX_RESWDOK;
+ }
+! else if MBTEST((tflags & LEX_CKCOMMENT) && ch == '#' && (lex_rwlen == 0 || ((tflags & LEX_INWORD) && lex_wlen == 0)))
+! ; /* don't modify LEX_RESWDOK if we're starting a comment */
+! else if MBTEST((tflags & LEX_INCASE) && ch != '\n')
+! /* If we can read a reserved word and we're in case, we're at the
+! point where we can read a new pattern list or an esac. We
+! handle the esac case above. If we read a newline, we want to
+! leave LEX_RESWDOK alone. If we read anything else, we want to
+! turn off LEX_RESWDOK, since we're going to read a pattern list. */
+ {
+! tflags &= ~LEX_RESWDOK;
+! /*itrace("parse_comsub:%d: lex_incase == 1 found `%c', lex_reswordok -> 0", line_number, ch);*/
+! }
+! else if MBTEST(shellbreak (ch) == 0)
+! {
+! tflags &= ~LEX_RESWDOK;
+ /*itrace("parse_comsub:%d: found `%c', lex_reswordok -> 0", line_number, ch);*/
+ }
+*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h 2009-02-22 16:11:31.000000000 -0500
+***************
+*** 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/data/bash/bash40-011 b/data/bash/bash40-011
new file mode 100644
index 000000000..61d1d3a8a
--- /dev/null
+++ b/data/bash/bash40-011
@@ -0,0 +1,49 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-011
+
+Bug-Reported-by: Matt Zyzik <Matt@ice.filescope.com>n
+Bug-Reference-ID: <20090312015018.C00741383ED@ice.filescope.com>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00092.html
+
+Bug-Description:
+
+When using the new |& operator following a simple command with a redirection,
+the redirection of stderr through the pipe was not performed under certain
+circumstances.
+
+Patch:
+
+*** ../bash-4.0-patched/parse.y 2009-03-08 21:24:47.000000000 -0400
+--- parse.y 2009-03-12 21:36:23.000000000 -0400
+***************
+*** 1123,1127 ****
+ REDIRECT *r;
+
+! tc = $1;
+ rd.dest = 1;
+ r = make_redirection (2, r_duplicating_output, rd);
+--- 1123,1127 ----
+ REDIRECT *r;
+
+! tc = $1->type == cm_simple ? (COMMAND *)$1->value.Simple : $1;
+ rd.dest = 1;
+ r = make_redirection (2, r_duplicating_output, rd);
+*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h 2009-02-22 16:11:31.000000000 -0500
+***************
+*** 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/data/bash/bash40-012 b/data/bash/bash40-012
new file mode 100644
index 000000000..014eae69a
--- /dev/null
+++ b/data/bash/bash40-012
@@ -0,0 +1,47 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-012
+
+Bug-Reported-by: "Clark J. Wang" <dearvoid@gmail.com>
+Bug-Reference-ID: <a96f63770903132300v7816dfb7hb7f48d46048bf3cb@mail.gmail.com>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00129.html
+
+Bug-Description:
+
+A case statement using the ;& pattern terminator followed immediately by
+"esac" caused a core dump due to a null pointer dereference.
+
+Patch:
+
+*** ../bash-4.0-patched/execute_cmd.c 2009-02-13 16:41:41.000000000 -0500
+--- execute_cmd.c 2009-03-14 13:23:00.000000000 -0400
+***************
+*** 2931,2935 ****
+ }
+ while ((clauses->flags & CASEPAT_FALLTHROUGH) && (clauses = clauses->next));
+! if ((clauses->flags & CASEPAT_TESTNEXT) == 0)
+ EXIT_CASE ();
+ else
+--- 2931,2935 ----
+ }
+ while ((clauses->flags & CASEPAT_FALLTHROUGH) && (clauses = clauses->next));
+! if (clauses == 0 || (clauses->flags & CASEPAT_TESTNEXT) == 0)
+ EXIT_CASE ();
+ else
+*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h 2009-02-22 16:11:31.000000000 -0500
+***************
+*** 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/data/bash/bash40-013 b/data/bash/bash40-013
new file mode 100644
index 000000000..df1fc493b
--- /dev/null
+++ b/data/bash/bash40-013
@@ -0,0 +1,153 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-013
+
+Bug-Reported-by: jidanni@jidanni.org
+Bug-Reference-ID:
+Bug-Reference-URL: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=519165
+
+Bug-Description:
+
+Though references to $@ when there are no positional parameters will now
+cause the shell to exit if the `errexit' option has been enabled, constructs
+such as ${@:-foo} should not cause an exit.
+
+Patch:
+
+*** ../bash-4.0-patched/subst.c 2009-03-08 21:24:39.000000000 -0400
+--- subst.c 2009-03-14 19:04:10.000000000 -0400
+***************
+*** 86,89 ****
+--- 86,90 ----
+ /* Flags for the `pflags' argument to param_expand() */
+ #define PF_NOCOMSUB 0x01 /* Do not perform command substitution */
++ #define PF_IGNUNBOUND 0x02 /* ignore unbound vars even if -u set */
+
+ /* These defs make it easier to use the editor. */
+***************
+*** 264,268 ****
+ static int chk_arithsub __P((const char *, int));
+
+! static WORD_DESC *parameter_brace_expand_word __P((char *, int, int));
+ static WORD_DESC *parameter_brace_expand_indir __P((char *, int, int, int *, int *));
+ static WORD_DESC *parameter_brace_expand_rhs __P((char *, char *, int, int, int *, int *));
+--- 265,269 ----
+ static int chk_arithsub __P((const char *, int));
+
+! static WORD_DESC *parameter_brace_expand_word __P((char *, int, int, int));
+ static WORD_DESC *parameter_brace_expand_indir __P((char *, int, int, int *, int *));
+ static WORD_DESC *parameter_brace_expand_rhs __P((char *, char *, int, int, int *, int *));
+***************
+*** 5196,5202 ****
+ NAME was found inside of a double-quoted expression. */
+ static WORD_DESC *
+! parameter_brace_expand_word (name, var_is_special, quoted)
+ char *name;
+! int var_is_special, quoted;
+ {
+ WORD_DESC *ret;
+--- 5197,5203 ----
+ NAME was found inside of a double-quoted expression. */
+ static WORD_DESC *
+! parameter_brace_expand_word (name, var_is_special, quoted, pflags)
+ char *name;
+! int var_is_special, quoted, pflags;
+ {
+ WORD_DESC *ret;
+***************
+*** 5230,5234 ****
+
+ ret = param_expand (tt, &sindex, quoted, (int *)NULL, (int *)NULL,
+! (int *)NULL, (int *)NULL, 0);
+ free (tt);
+ }
+--- 5231,5235 ----
+
+ ret = param_expand (tt, &sindex, quoted, (int *)NULL, (int *)NULL,
+! (int *)NULL, (int *)NULL, pflags);
+ free (tt);
+ }
+***************
+*** 5291,5295 ****
+ WORD_DESC *w;
+
+! w = parameter_brace_expand_word (name, var_is_special, quoted);
+ t = w->word;
+ /* Have to dequote here if necessary */
+--- 5292,5296 ----
+ WORD_DESC *w;
+
+! w = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND);
+ t = w->word;
+ /* Have to dequote here if necessary */
+***************
+*** 5308,5312 ****
+ return (WORD_DESC *)NULL;
+
+! w = parameter_brace_expand_word (t, SPECIAL_VAR(t, 0), quoted);
+ free (t);
+
+--- 5309,5313 ----
+ return (WORD_DESC *)NULL;
+
+! w = parameter_brace_expand_word (t, SPECIAL_VAR(t, 0), quoted, 0);
+ free (t);
+
+***************
+*** 6659,6663 ****
+ 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);
+
+ if (tdesc)
+--- 6660,6664 ----
+ 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);
+
+ if (tdesc)
+***************
+*** 6990,6994 ****
+ list = list_rest_of_args ();
+
+! if (list == 0 && unbound_vars_is_error)
+ {
+ uerror[0] = '$';
+--- 6991,6995 ----
+ list = list_rest_of_args ();
+
+! if (list == 0 && unbound_vars_is_error && (pflags & PF_IGNUNBOUND) == 0)
+ {
+ uerror[0] = '$';
+***************
+*** 7052,7056 ****
+ list = list_rest_of_args ();
+
+! if (list == 0 && unbound_vars_is_error)
+ {
+ uerror[0] = '$';
+--- 7053,7057 ----
+ list = list_rest_of_args ();
+
+! if (list == 0 && unbound_vars_is_error && (pflags & PF_IGNUNBOUND) == 0)
+ {
+ uerror[0] = '$';
+
+
+*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h 2009-02-22 16:11:31.000000000 -0500
+***************
+*** 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/data/bash/bash40-014 b/data/bash/bash40-014
new file mode 100644
index 000000000..eeba336cd
--- /dev/null
+++ b/data/bash/bash40-014
@@ -0,0 +1,113 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-014
+
+Bug-Reported-by: smallnow@gmail.com
+Bug-Reference-ID: <49C460FE.40307@gmail.com>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00166.html
+
+Bug-Description:
+
+When the fc builtin is run in a command substitution from a shell with history
+enabled, it does not correctly calculate the command on which to operate.
+
+Patch:
+
+*** ../bash-4.0-patched/builtins/fc.def 2009-01-04 14:32:22.000000000 -0500
+--- builtins/fc.def 2009-03-21 14:03:43.000000000 -0400
+***************
+*** 89,92 ****
+--- 89,93 ----
+ extern int literal_history;
+ extern int posixly_correct;
++ extern int subshell_environment, interactive_shell;
+
+ extern int unlink __P((const char *));
+***************
+*** 173,177 ****
+ register char *sep;
+ int numbering, reverse, listing, execute;
+! int histbeg, histend, last_hist, retval, opt;
+ FILE *stream;
+ REPL *rlist, *rl;
+--- 174,178 ----
+ register char *sep;
+ int numbering, reverse, listing, execute;
+! int histbeg, histend, last_hist, retval, opt, rh;
+ FILE *stream;
+ REPL *rlist, *rl;
+***************
+*** 276,279 ****
+--- 277,282 ----
+ fprintf (stderr, "%s\n", command);
+ fc_replhist (command); /* replace `fc -s' with command */
++ /* Posix says that the re-executed commands should be entered into the
++ history. */
+ return (parse_and_execute (command, "fc", SEVAL_NOHIST));
+ }
+***************
+*** 294,298 ****
+ so we check hist_last_line_added. */
+
+! last_hist = i - remember_on_history - hist_last_line_added;
+
+ if (list)
+--- 297,306 ----
+ so we check hist_last_line_added. */
+
+! /* Even though command substitution through parse_and_execute turns off
+! remember_on_history, command substitution in a shell when set -o history
+! has been enabled (interactive or not) should use it in the last_hist
+! calculation as if it were on. */
+! rh = remember_on_history || ((subshell_environment & SUBSHELL_COMSUB) && enable_history_list);
+! last_hist = i - rh - hist_last_line_added;
+
+ if (list)
+***************
+*** 457,461 ****
+ HIST_ENTRY **hlist;
+ {
+! int sign, n, clen;
+ register int i, j;
+ register char *s;
+--- 465,469 ----
+ HIST_ENTRY **hlist;
+ {
+! int sign, n, clen, rh;
+ register int i, j;
+ register char *s;
+***************
+*** 473,477 ****
+ so we check hist_last_line_added. This needs to agree with the
+ calculation of last_hist in fc_builtin above. */
+! i -= remember_on_history + hist_last_line_added;
+
+ /* No specification defaults to most recent command. */
+--- 481,490 ----
+ so we check hist_last_line_added. This needs to agree with the
+ calculation of last_hist in fc_builtin above. */
+! /* Even though command substitution through parse_and_execute turns off
+! remember_on_history, command substitution in a shell when set -o history
+! has been enabled (interactive or not) should use it in the last_hist
+! calculation as if it were on. */
+! rh = remember_on_history || ((subshell_environment & SUBSHELL_COMSUB) && enable_history_list);
+! i -= rh + hist_last_line_added;
+
+ /* No specification defaults to most recent command. */
+*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h 2009-02-22 16:11:31.000000000 -0500
+***************
+*** 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/data/bash/bash40-015 b/data/bash/bash40-015
new file mode 100644
index 000000000..c3e8d3346
--- /dev/null
+++ b/data/bash/bash40-015
@@ -0,0 +1,84 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-015
+
+Bug-Reported-by: Lubomir Rintel <lkundrak@v3.sk>
+Bug-Reference-ID: <1237654931.32737.13.camel@localhost.localdomain>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00174.html
+
+Bug-Description:
+
+Deferring handling of signals which should cause the shell to terminate until
+it is "safe" to run the handler functions does not work for some terminating
+signals.
+
+Patch:
+
+*** ../bash-4.0-patched/sig.c 2009-01-04 14:32:41.000000000 -0500
+--- sig.c 2009-03-22 14:47:56.000000000 -0400
+***************
+*** 449,452 ****
+--- 449,494 ----
+ int sig;
+ {
++ /* If we get called twice with the same signal before handling it,
++ terminate right away. */
++ if (
++ #ifdef SIGHUP
++ sig != SIGHUP &&
++ #endif
++ #ifdef SIGINT
++ sig != SIGINT &&
++ #endif
++ #ifdef SIGDANGER
++ sig != SIGDANGER &&
++ #endif
++ #ifdef SIGPIPE
++ sig != SIGPIPE &&
++ #endif
++ #ifdef SIGALRM
++ sig != SIGALRM &&
++ #endif
++ #ifdef SIGTERM
++ sig != SIGTERM &&
++ #endif
++ #ifdef SIGXCPU
++ sig != SIGXCPU &&
++ #endif
++ #ifdef SIGXFSZ
++ sig != SIGXFSZ &&
++ #endif
++ #ifdef SIGVTALRM
++ sig != SIGVTALRM &&
++ #endif
++ #ifdef SIGLOST
++ sig != SIGLOST &&
++ #endif
++ #ifdef SIGUSR1
++ sig != SIGUSR1 &&
++ #endif
++ #ifdef SIGUSR2
++ sig != SIGUSR2 &&
++ #endif
++ sig == terminating_signal)
++ terminate_immediately = 1;
++
+ terminating_signal = sig;
+
+*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h 2009-02-22 16:11:31.000000000 -0500
+***************
+*** 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/data/bash/bash40-016 b/data/bash/bash40-016
new file mode 100644
index 000000000..ace2e1e5f
--- /dev/null
+++ b/data/bash/bash40-016
@@ -0,0 +1,104 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-016
+
+Bug-Reported-by: Brian J. Murrell" <brian@interlinx.bc.ca>
+Bug-Reference-ID: <1237564627.7666.12.camel@pc.interlinx.bc.ca>
+Bug-Reference-URL:http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00160.html
+
+Bug-Description:
+
+There are several problems with the handling of $LINENO in an ERR trap.
+
+Patch:
+
+*** ../bash-4.0-patched/trap.c 2009-01-16 17:07:53.000000000 -0500
+--- trap.c 2009-03-20 21:37:00.000000000 -0400
+***************
+*** 756,760 ****
+
+ flags = SEVAL_NONINT|SEVAL_NOHIST;
+! if (sig != DEBUG_TRAP && sig != RETURN_TRAP)
+ flags |= SEVAL_RESETLINE;
+ if (function_code == 0)
+--- 756,760 ----
+
+ flags = SEVAL_NONINT|SEVAL_NOHIST;
+! if (sig != DEBUG_TRAP && sig != RETURN_TRAP && sig != ERROR_TRAP)
+ flags |= SEVAL_RESETLINE;
+ if (function_code == 0)
+*** ../bash-4.0-patched/execute_cmd.c 2009-02-13 16:41:41.000000000 -0500
+--- execute_cmd.c 2009-03-21 14:16:11.000000000 -0400
+***************
+*** 569,572 ****
+--- 569,573 ----
+ /* Fork a subshell, turn off the subshell bit, turn off job
+ control and call execute_command () on the command again. */
++ line_number_for_err_trap = line_number;
+ paren_pid = make_child (savestring (make_command_string (command)),
+ asynchronous);
+***************
+*** 611,615 ****
+--- 612,619 ----
+ {
+ last_command_exit_value = exec_result;
++ save_line_number = line_number;
++ line_number = line_number_for_err_trap;
+ run_error_trap ();
++ line_number = save_line_number;
+ }
+
+***************
+*** 767,771 ****
+--- 771,777 ----
+ {
+ last_command_exit_value = exec_result;
++ line_number = line_number_for_err_trap;
+ run_error_trap ();
++ line_number = save_line_number;
+ }
+
+***************
+*** 2106,2109 ****
+--- 2112,2116 ----
+ COMMAND *tc, *second;
+ int ignore_return, exec_result, was_error_trap, invert;
++ volatile int save_line_number;
+
+ ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0;
+***************
+*** 2175,2178 ****
+--- 2182,2186 ----
+ ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0;
+
++ line_number_for_err_trap = line_number;
+ exec_result = execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close);
+
+***************
+*** 2180,2184 ****
+--- 2188,2195 ----
+ {
+ last_command_exit_value = exec_result;
++ save_line_number = line_number;
++ line_number = line_number_for_err_trap;
+ run_error_trap ();
++ line_number = save_line_number;
+ }
+
+*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h 2009-02-22 16:11:31.000000000 -0500
+***************
+*** 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/data/bash/bash40-017 b/data/bash/bash40-017
new file mode 100644
index 000000000..ff42d7781
--- /dev/null
+++ b/data/bash/bash40-017
@@ -0,0 +1,47 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-017
+
+Bug-Reported-by: Lubomir Rintel <lkundrak@v3.sk>
+Bug-Reference-ID: <1237654931.32737.13.camel@localhost.localdomain>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00174.html
+
+Bug-Description:
+
+Adding a null line to a here-document (e.g., by hitting EOF) causes the
+shell to dump core attempting to dereference the NULL pointer.
+
+Patch:
+
+*** ../bash-4.0-patched/parse.y 2009-03-08 21:24:47.000000000 -0400
+--- parse.y 2009-03-21 14:38:42.000000000 -0400
+***************
+*** 1880,1884 ****
+ ret = read_a_line (remove_quoted_newline);
+ #if defined (HISTORY)
+! if (remember_on_history && (parser_state & PST_HEREDOC))
+ {
+ /* To make adding the the here-document body right, we need to rely
+--- 1880,1884 ----
+ ret = read_a_line (remove_quoted_newline);
+ #if defined (HISTORY)
+! if (ret && remember_on_history && (parser_state & PST_HEREDOC))
+ {
+ /* To make adding the the here-document body right, we need to rely
+*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h 2009-02-22 16:11:31.000000000 -0500
+***************
+*** 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/data/bash/installer.diff b/data/bash/installer.diff
deleted file mode 100644
index 3c229e5ae..000000000
--- a/data/bash/installer.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -r -u bash-3.2/flags.c bash-3.2+iPhone/flags.c
---- bash-3.2/flags.c 2004-07-17 01:19:42.000000000 +0000
-+++ bash-3.2+iPhone/flags.c 2008-02-28 14:34:30.000000000 +0000
-@@ -146,7 +146,7 @@
- is required if the shell is to run setuid. If the `-p' option is
- not supplied at startup, and the real and effective uids or gids
- differ, disable_priv_mode is called to relinquish setuid status. */
--int privileged_mode = 0;
-+int privileged_mode = 1;
-
- #if defined (BRACE_EXPANSION)
- /* Zero means to disable brace expansion: foo{a,b} -> fooa foob */
diff --git a/data/bash/make.sh b/data/bash/make.sh
index e1c2015fa..5640e2db5 100644
--- a/data/bash/make.sh
+++ b/data/bash/make.sh
@@ -1,12 +1,16 @@
-pkg:setup
+pkg:extract
+cd *
-for ((x = 1; x != 40; ++x)); do
- patch -p0 <"${PKG_DATA}/bash32-$(printf '%.3u\n' "$x")"
+for ((x = 1; x != 18; ++x)); do
+ patch -p0 <"${PKG_DATA}/bash40-$(printf '%.3u\n' "$x")"
done
-pkg:configure bash_cv_dev_fd=absent bash_cv_sys_named_pipes=present bash_cv_job_control_missing=present bash_cv_func_sigsetjmp=present bash_cv_func_ctype_nonascii=no bash_cv_must_reinstall_sighandlers=no bash_cv_func_strcoll_broken=yes ac_cv_c_stack_direction=-1 ac_cv_func_mmap_fixed_mapped=yes gt_cv_int_divbyzero_sigfpe=no ac_cv_func_setvbuf_reversed=no ac_cv_func_strcoll_works=yes ac_cv_func_working_mktime=yes ac_cv_type_getgroups=gid_t bash_cv_dup2_broken=no
+pkg:patch
+
+pkg:configure --disable-nls --with-installed-readline --disable-largefile bash_cv_dev_fd=absent bash_cv_sys_named_pipes=present bash_cv_job_control_missing=present bash_cv_func_sigsetjmp=present bash_cv_func_ctype_nonascii=no bash_cv_must_reinstall_sighandlers=no bash_cv_func_strcoll_broken=yes ac_cv_c_stack_direction=-1 ac_cv_func_mmap_fixed_mapped=yes gt_cv_int_divbyzero_sigfpe=no ac_cv_func_setvbuf_reversed=no ac_cv_func_strcoll_works=yes ac_cv_func_working_mktime=yes ac_cv_type_getgroups=gid_t bash_cv_dup2_broken=no ac_cv_prog_cc_g=no ac_cv_rl_version=6.0
#pgrp_pipe...
-make
+
+make CFLAGS='-O2 -mthumb'
pkg:install
pkg:bin bash
ln -s bash "${PKG_DEST}/bin/sh"
diff --git a/data/bash/mdns.diff b/data/bash/mdns.diff
deleted file mode 100644
index 79cfb0389..000000000
--- a/data/bash/mdns.diff
+++ /dev/null
@@ -1,25 +0,0 @@
-diff -ru bash-3.2/shell.c bash-3.2+iPhone/shell.c
---- bash-3.2/shell.c 2006-05-17 12:46:54.000000000 +0000
-+++ bash-3.2+iPhone/shell.c 2008-02-04 02:04:27.000000000 +0000
-@@ -1,3 +1,5 @@
-+#include <mach-o/nlist.h>
-+
- /* shell.c -- GNU's idea of the POSIX shell specification. */
-
- /* Copyright (C) 1987-2005 Free Software Foundation, Inc.
-@@ -328,6 +330,15 @@
- char **argv, **env;
- #endif /* !NO_MAIN_ENV_ARG */
- {
-+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
-+ struct nlist nl[2];
-+ memset(nl, 0, sizeof(nl));
-+ nl[0].n_un.n_name = (char *) "_useMDNSResponder";
-+ nlist("/usr/lib/libc.dylib", nl);
-+ if (nl[0].n_type != N_UNDF)
-+ *(int *) nl[0].n_value = 0;
-+#endif
-+
- register int i;
- int code, old_errexit_flag;
- #if defined (RESTRICTED_SHELL)