Hello community,
here is the log from the commit of package bash for openSUSE:Factory
checked in at Wed Mar 16 10:11:02 CET 2011.
--------
--- bash/bash.changes 2011-03-09 12:02:19.000000000 +0100
+++ /mounts/work_src_done/STABLE/bash/bash.changes 2011-03-15 18:31:41.000000000 +0100
@@ -1,0 +2,7 @@
+Tue Mar 15 18:28:58 CET 2011 - werner@suse.de
+
+- Update bash 4.2 to patch level 8
+- Add Ctr-C patch from upstream
+- Add fix for endless loop in UTF-8 locale
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
bash-4.2-history.dif
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ bash.spec ++++++
--- /var/tmp/diff_new_pack.K6CbqJ/_old 2011-03-16 10:09:16.000000000 +0100
+++ /var/tmp/diff_new_pack.K6CbqJ/_new 2011-03-16 10:09:16.000000000 +0100
@@ -37,7 +37,7 @@
%endif
AutoReqProv: on
Version: 4.2
-Release: 2
+Release: 3
Summary: The GNU Bourne-Again Shell
Url: http://www.gnu.org/software/bash/bash.html
Source0: ftp://ftp.gnu.org/gnu/bash/bash-%{bash_vers}.tar.bz2
@@ -66,7 +66,6 @@
Patch10: bash-3.2-printf.patch
Patch11: bash-4.0-loadables.dif
Patch12: bash-4.1-completion.dif
-Patch13: bash-4.2-history.dif
Patch14: bash-4.2-sigrestart.patch
Patch15: bash-3.2-longjmp.dif
Patch16: bash-4.0-setlocale.dif
@@ -107,7 +106,7 @@
Provides: bash:%{_infodir}/bash.info.gz
PreReq: %install_info_prereq
Version: 4.2
-Release: 2
+Release: 3
AutoReqProv: on
%if %suse_version > 1120
BuildArch: noarch
@@ -143,7 +142,7 @@
Summary: Include Files mandatory for Development of bash loadable builtins
Group: Development/Languages/C and C++
Version: 4.2
-Release: 2
+Release: 3
AutoReqProv: on
%description -n bash-devel
@@ -163,7 +162,7 @@
Summary: Loadable bash builtins
Group: System/Shells
Version: 4.2
-Release: 2
+Release: 3
AutoReqProv: on
%description -n bash-loadables
@@ -232,7 +231,7 @@
Group: System/Libraries
Provides: bash:/%{_lib}/libreadline.so.%{rl_major}
Version: 6.2
-Release: 2
+Release: 3
%if %suse_version > 1020
Recommends: readline-doc = %{version}
%endif
@@ -263,7 +262,7 @@
Group: Development/Libraries/C and C++
Provides: bash:%{_libdir}/libreadline.a
Version: 6.2
-Release: 2
+Release: 3
Requires: libreadline6 = %{version}
Requires: ncurses-devel
%if %suse_version > 1020
@@ -294,7 +293,7 @@
Provides: readline:%{_infodir}/readline.info.gz
PreReq: %install_info_prereq
Version: 6.2
-Release: 2
+Release: 3
AutoReqProv: on
%if %suse_version > 1120
BuildArch: noarch
@@ -330,7 +329,6 @@
%patch10 -p0 -b .printf
%patch11 -p0 -b .plugins
%patch12 -p0 -b .completion
-%patch13 -p0 -b .history
%patch14 -p0 -b .sigrestart
%patch15 -p0 -b .longjmp
%patch16 -p0 -b .setlocale
++++++ bash-4.2-patches.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bash-4.2-patches/bash-4.2-ctl-c.patch new/bash-4.2-patches/bash-4.2-ctl-c.patch
--- old/bash-4.2-patches/bash-4.2-ctl-c.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/bash-4.2-patches/bash-4.2-ctl-c.patch 2011-03-15 18:23:54.000000000 +0100
@@ -0,0 +1,174 @@
+*** ../bash-4.2-patched/jobs.c 2011-01-07 10:59:29.000000000 -0500
+--- jobs.c 2011-03-11 10:57:57.000000000 -0500
+***************
+*** 2213,2216 ****
+--- 2213,2220 ----
+ static SigHandler *old_sigint_handler = INVALID_SIGNAL_HANDLER;
+
++ static int wait_sigint_received;
++ static int child_caught_sigint;
++ static int waiting_for_child;
++
+ static void
+ restore_sigint_handler ()
+***************
+*** 2220,2228 ****
+ set_signal_handler (SIGINT, old_sigint_handler);
+ old_sigint_handler = INVALID_SIGNAL_HANDLER;
+ }
+ }
+
+- static int wait_sigint_received;
+-
+ /* Handle SIGINT while we are waiting for children in a script to exit.
+ The `wait' builtin should be interruptible, but all others should be
+--- 2224,2231 ----
+ set_signal_handler (SIGINT, old_sigint_handler);
+ old_sigint_handler = INVALID_SIGNAL_HANDLER;
++ waiting_for_child = 0;
+ }
+ }
+
+ /* Handle SIGINT while we are waiting for children in a script to exit.
+ The `wait' builtin should be interruptible, but all others should be
+***************
+*** 2257,2261 ****
+ /* XXX - should this be interrupt_state? If it is, the shell will act
+ as if it got the SIGINT interrupt. */
+! wait_sigint_received = 1;
+
+ /* Otherwise effectively ignore the SIGINT and allow the running job to
+--- 2260,2271 ----
+ /* XXX - should this be interrupt_state? If it is, the shell will act
+ as if it got the SIGINT interrupt. */
+! if (waiting_for_child)
+! wait_sigint_received = 1;
+! else
+! {
+! last_command_exit_value = 128+SIGINT;
+! restore_sigint_handler ();
+! kill (getpid (), SIGINT);
+! }
+
+ /* Otherwise effectively ignore the SIGINT and allow the running job to
+***************
+*** 2393,2400 ****
+
+ /* 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);
+ if (old_sigint_handler == SIG_IGN)
+ set_signal_handler (SIGINT, old_sigint_handler);
+--- 2403,2411 ----
+
+ /* This is possibly a race condition -- should it go in stop_pipeline? */
+! wait_sigint_received = child_caught_sigint = 0;
+ if (job_control == 0 || (subshell_environment&SUBSHELL_COMSUB))
+ {
+ old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
++ waiting_for_child = 0;
+ if (old_sigint_handler == SIG_IGN)
+ set_signal_handler (SIGINT, old_sigint_handler);
+***************
+*** 2448,2452 ****
+--- 2459,2465 ----
+ # endif
+ queue_sigchld = 1;
++ waiting_for_child++;
+ r = waitchld (pid, 1);
++ waiting_for_child--;
+ # if defined (MUST_UNBLOCK_CHLD)
+ sigaction (SIGCHLD, &oact, (struct sigaction *)NULL);
+***************
+*** 2490,2493 ****
+--- 2503,2509 ----
+ while (PRUNNING (child) || (job != NO_JOB && RUNNING (job)));
+
++ /* Restore the original SIGINT signal handler before we return. */
++ restore_sigint_handler ();
++
+ /* The exit state of the command is either the termination state of the
+ child, or the termination state of the job. If a job, the status
+***************
+*** 2586,2594 ****
+ 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)
+--- 2602,2609 ----
+ parent. */
+ s = job_signal_status (job);
+!
+! if (child_caught_sigint == 0 && signal_is_trapped (SIGINT) == 0)
+ {
+ UNBLOCK_CHILD (oset);
+ old_sigint_handler = set_signal_handler (SIGINT, SIG_DFL);
+ if (old_sigint_handler == SIG_IGN)
+***************
+*** 2616,2622 ****
+ UNBLOCK_CHILD (oset);
+
+- /* Restore the original SIGINT signal handler before we return. */
+- restore_sigint_handler ();
+-
+ return (termination_state);
+ }
+--- 2631,2634 ----
+***************
+*** 3118,3124 ****
+--- 3130,3150 ----
+ the only other error POSIX says it can return is EINTR. */
+ CHECK_TERMSIG;
++
++ /* If waitpid returns -1/EINTR and the shell saw a SIGINT, then we
++ assume the child has blocked or handled SIGINT. In that case, we
++ require the child to actually die due to SIGINT to act on the
++ SIGINT we received; otherwise we assume the child handled it and
++ let it go. */
++ if (pid < 0 && errno == EINTR && wait_sigint_received)
++ child_caught_sigint = 1;
++
+ if (pid <= 0)
+ continue; /* jumps right to the test */
+
++ /* If the child process did die due to SIGINT, forget our assumption
++ that it caught or otherwise handled it. */
++ if (WIFSIGNALED (status) && WTERMSIG (status) == SIGINT)
++ child_caught_sigint = 0;
++
+ /* children_exited is used to run traps on SIGCHLD. We don't want to
+ run the trap if a process is just being continued. */
+***************
+*** 3308,3312 ****
+ otherwise act as if we got the interrupt. */
+ if (wait_sigint_received && interactive_shell == 0 &&
+! WIFSIGNALED (child->status) == 0 && IS_FOREGROUND (job) &&
+ signal_is_trapped (SIGINT))
+ {
+--- 3334,3338 ----
+ otherwise act as if we got the interrupt. */
+ if (wait_sigint_received && interactive_shell == 0 &&
+! child_caught_sigint && IS_FOREGROUND (job) &&
+ signal_is_trapped (SIGINT))
+ {
+***************
+*** 3330,3334 ****
+ process by another process (or itself). If the shell did receive the
+ SIGINT, it needs to perform normal SIGINT processing. */
+! else if (wait_sigint_received && (WTERMSIG (child->status) == SIGINT) &&
+ IS_FOREGROUND (job) && IS_JOBCONTROL (job) == 0)
+ {
+--- 3356,3361 ----
+ process by another process (or itself). If the shell did receive the
+ SIGINT, it needs to perform normal SIGINT processing. */
+! else if (wait_sigint_received &&
+! child_caught_sigint == 0 &&
+ IS_FOREGROUND (job) && IS_JOBCONTROL (job) == 0)
+ {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bash-4.2-patches/bash-4.2-xdupmbstowcs2.patch new/bash-4.2-patches/bash-4.2-xdupmbstowcs2.patch
--- old/bash-4.2-patches/bash-4.2-xdupmbstowcs2.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/bash-4.2-patches/bash-4.2-xdupmbstowcs2.patch 2011-03-15 18:19:59.000000000 +0100
@@ -0,0 +1,19 @@
+*** ../bash-4.2-patched/lib/glob/xmbsrtowcs.c 2010-05-30 18:36:27.000000000 -0400
+--- lib/glob/xmbsrtowcs.c 2011-03-14 14:22:11.000000000 -0400
+***************
+*** 174,180 ****
+ wcslength = mbsnrtowcs(NULL, &tmp_p, nms, 0, &tmp_state);
+
+ /* Conversion failed. */
+! if (wcslength == (size_t)-1)
+ {
+ free (wsbuf);
+ *destp = NULL;
+--- 174,180 ----
+ wcslength = mbsnrtowcs(NULL, &tmp_p, nms, 0, &tmp_state);
+
+ /* Conversion failed. */
+! if (wcslength == 0 || wcslength == (size_t)-1)
+ {
+ free (wsbuf);
+ *destp = NULL;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bash-4.2-patches/bash42-008 new/bash-4.2-patches/bash42-008
--- old/bash-4.2-patches/bash42-008 1970-01-01 01:00:00.000000000 +0100
+++ new/bash-4.2-patches/bash42-008 2011-03-15 18:25:59.000000000 +0100
@@ -0,0 +1,74 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.2
+Patch-ID: bash42-008
+
+Bug-Reported-by: Doug McMahon