Update to 3.2.

This commit is contained in:
Tim Waugh 2006-12-15 18:02:32 +00:00
parent af68b6e2e8
commit 393b612da6
13 changed files with 824 additions and 74 deletions

View File

@ -1,2 +1,4 @@
bash-3.0.tar.gz
bash-doc-3.0.tar.gz
bash-3.2.tar.gz
bash-doc-3.2.tar.gz

View File

@ -1,28 +1,6 @@
--- bash-3.1/config.h.in.interpreter 2005-12-23 15:53:21.000000000 +0000
+++ bash-3.1/config.h.in 2005-12-23 15:53:21.000000000 +0000
@@ -622,6 +622,9 @@
/* Define if you have the pathconf function. */
#undef HAVE_PATHCONF
+/* Define if you have the pread function. */
+#undef HAVE_PREAD
+
/* Define if you have the putenv function. */
#undef HAVE_PUTENV
@@ -783,6 +786,9 @@
/* Define if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
+/* Define if you have the <elf.h> header file. */
+#undef HAVE_ELF_H
+
/* Define if you have the <grp.h> header file. */
#undef HAVE_GRP_H
--- bash-3.1/configure.in.interpreter 2005-12-01 14:36:03.000000000 +0000
+++ bash-3.1/configure.in 2005-12-23 15:55:10.000000000 +0000
@@ -632,7 +632,7 @@
--- bash-3.2/configure.in.interpreter 2006-09-26 16:05:45.000000000 +0100
+++ bash-3.2/configure.in 2006-12-15 17:56:15.000000000 +0000
@@ -634,7 +634,7 @@
AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \
memory.h locale.h termcap.h termio.h termios.h dlfcn.h \
@ -31,17 +9,17 @@
AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h \
sys/resource.h sys/param.h sys/socket.h sys/stat.h \
sys/time.h sys/times.h sys/types.h sys/wait.h)
@@ -695,7 +695,7 @@
AC_CHECK_FUNCS(dup2 fcntl getdtablesize getgroups gethostname getpagesize \
getpeername getrlimit getrusage gettimeofday kill killpg \
lstat readlink sbrk select setdtablesize tcgetpgrp uname \
- ulimit waitpid)
+ ulimit waitpid pread)
@@ -698,7 +698,7 @@
AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getgroups gethostname \
getpagesize getpeername getrlimit getrusage gettimeofday \
kill killpg lstat readlink sbrk select setdtablesize \
- tcgetpgrp uname ulimit waitpid)
+ tcgetpgrp uname ulimit waitpid pread)
AC_REPLACE_FUNCS(rename)
dnl checks for c library functions
--- bash-3.1/execute_cmd.c.interpreter 2005-12-23 15:53:21.000000000 +0000
+++ bash-3.1/execute_cmd.c 2005-12-23 15:56:44.000000000 +0000
--- bash-3.2/execute_cmd.c.interpreter 2006-12-15 17:55:53.000000000 +0000
+++ bash-3.2/execute_cmd.c 2006-12-15 17:55:53.000000000 +0000
@@ -40,6 +40,10 @@
# include <unistd.h>
#endif
@ -53,7 +31,7 @@
#include "posixtime.h"
#if defined (HAVE_SYS_RESOURCE_H) && !defined (RLIMTYPE)
@@ -3872,13 +3876,21 @@
@@ -3953,13 +3957,21 @@
{
/* The file has the execute bits set, but the kernel refuses to
run it for some reason. See why. */
@ -76,7 +54,7 @@
interp = getinterp (sample, sample_len, (int *)NULL);
ilen = strlen (interp);
errno = i;
@@ -3894,6 +3906,136 @@
@@ -3975,6 +3987,136 @@
return (EX_NOEXEC);
}
#endif
@ -213,3 +191,25 @@
errno = i;
file_error (command);
}
--- bash-3.2/config.h.in.interpreter 2006-12-15 17:55:53.000000000 +0000
+++ bash-3.2/config.h.in 2006-12-15 17:55:53.000000000 +0000
@@ -646,6 +646,9 @@
/* Define if you have the pathconf function. */
#undef HAVE_PATHCONF
+/* Define if you have the pread function. */
+#undef HAVE_PREAD
+
/* Define if you have the putenv function. */
#undef HAVE_PUTENV
@@ -823,6 +826,9 @@
/* Define if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
+/* Define if you have the <elf.h> header file. */
+#undef HAVE_ELF_H
+
/* Define if you have the <grp.h> header file. */
#undef HAVE_GRP_H

View File

@ -1,7 +1,7 @@
Version: 3.1
Version: 3.2
Name: bash
Summary: The GNU Bourne Again shell (bash) version %{version}.
Release: 16.1
Release: 1%{?dist}
Group: System Environment/Shells
License: GPL
Url: http://www.gnu.org/software/bash
@ -11,41 +11,28 @@ Source3: dot-bashrc
Source4: dot-bash_profile
Source5: dot-bash_logout
# Official upstream patches
Patch1: ftp://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-001
Patch2: ftp://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-002
Patch3: ftp://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-003
Patch4: ftp://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-004
Patch5: ftp://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-005
Patch6: ftp://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-006
Patch7: ftp://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-007
Patch8: ftp://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-008
Patch9: ftp://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-009
Patch10: ftp://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-010
Patch11: ftp://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-011
Patch12: ftp://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-012
Patch13: ftp://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-013
Patch14: ftp://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-014
Patch15: ftp://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-015
Patch16: ftp://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-016
Patch17: ftp://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-017
Patch1: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-001
Patch2: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-002
Patch3: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-003
Patch4: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-004
Patch5: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-005
Patch6: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-006
Patch7: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-007
Patch8: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-008
Patch9: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-009
# Other patches
Patch100: bash-2.03-paths.patch
Patch101: bash-2.02-security.patch
Patch102: bash-2.03-profile.patch
Patch103: bash-requires.patch
Patch105: bash-aq.patch
Patch106: bash-login.patch
Patch107: bash-2.05a-interpreter.patch
Patch108: bash-2.05b-readline-oom.patch
Patch112: bash-ulimit.patch
Patch114: bash-2.05b-xcc.patch
Patch115: bash-2.05b-pgrp_sync.patch
Patch116: bash-2.05b-manso.patch
Patch117: bash-2.05b-debuginfo.patch
Patch118: bash-tty-tests.patch
Patch126: bash-setlocale.patch
Patch127: bash-sighandler.patch
Patch129: bash-read-memleak.patch
Patch130: bash-infotags.patch
Prefix: %{_prefix}
Requires: mktemp
@ -76,33 +63,20 @@ compliance over previous versions.
%patch7 -p0 -b .007
%patch8 -p0 -b .008
%patch9 -p0 -b .009
%patch10 -p0 -b .010
%patch11 -p0 -b .011
%patch12 -p0 -b .012
%patch13 -p0 -b .013
%patch14 -p0 -b .014
%patch15 -p0 -b .015
%patch16 -p0 -b .016
%patch17 -p0 -b .017
# Other patches
%patch100 -p1 -b .paths
%patch101 -p1 -b .security
%patch102 -p1 -b .profile
%patch103 -p1 -b .requires
%patch105 -p1 -b .aq
%patch106 -p1 -b .login
%patch107 -p1 -b .interpreter
%patch108 -p1 -b .readline-oom
%patch112 -p1 -b .ulimit
%patch114 -p1 -b .xcc
%patch115 -p1 -b .pgrp_sync
%patch116 -p1 -b .manso
%patch117 -p1 -b .debuginfo
%patch118 -p1 -b .tty-tests
%patch126 -p1 -b .setlocale
%patch127 -p1 -b .sighandler
%patch129 -p1 -b .read-memleak
%patch130 -p1 -b .infotags
echo %{version} > _distribution
@ -236,6 +210,10 @@ fi
%doc doc/*.ps doc/*.0 doc/*.html doc/article.txt
%changelog
* Fri Dec 15 2006 Tim Waugh <twaugh@redhat.com>
- 3.2. No longer need aq, login, ulimit, sighandler or read-memleak
patches.
* Wed Jul 12 2006 Tim Waugh <twaugh@redhat.com> 3.1-17
- Fixed 'tags out of date' problem with 'info bash' (bug #150118).

47
bash32-001 Normal file
View File

@ -0,0 +1,47 @@
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_ */

48
bash32-002 Normal file
View File

@ -0,0 +1,48 @@
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_ */

147
bash32-003 Normal file
View File

@ -0,0 +1,147 @@
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_ */

96
bash32-004 Normal file
View File

@ -0,0 +1,96 @@
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_ */

223
bash32-005 Normal file
View File

@ -0,0 +1,223 @@
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_ */

45
bash32-006 Normal file
View File

@ -0,0 +1,45 @@
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_ */

55
bash32-007 Normal file
View File

@ -0,0 +1,55 @@
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_ */

48
bash32-008 Normal file
View File

@ -0,0 +1,48 @@
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_ */

61
bash32-009 Normal file
View File

@ -0,0 +1,61 @@
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_ */

View File

@ -1,2 +1,2 @@
ef5304c4b22aaa5088972c792ed45d72 bash-3.1.tar.gz
a8c517c6a7b21b8b855190399c5935ae bash-doc-3.1.tar.gz
00bfa16d58e034e3c2aa27f390390d30 bash-3.2.tar.gz
0e904cb46ca873fcfa65df19b024bec9 bash-doc-3.2.tar.gz