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 - [email protected] + +- 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 <[email protected]> +Bug-Reference-ID: <1299441211.2535.11.camel@doug-XPS-M1330> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-03/msg00050.html + +Bug-Description: + +Bash-4.2 does not attempt to save the shell history on receipt of a +terminating signal that is handled synchronously. Unfortunately, the +`close' button on most X11 terminal emulators sends SIGHUP, which +kills the shell. + +This is a very small patch to save the history in the case that an +interactive shell receives a SIGHUP or SIGTERM while in readline and +reading a command. + +The next version of bash will do this differently. + +Patch (apply with `patch -p0'): + +*** ../bash-4.2-patched/sig.c Tue Nov 23 08:21:22 2010 +--- sig.c Tue Mar 8 21:28:32 2011 +*************** +*** 47,50 **** +--- 47,51 ---- + #if defined (READLINE) + # include "bashline.h" ++ # include <readline/readline.h> + #endif + +*************** +*** 63,66 **** +--- 64,68 ---- + extern int history_lines_this_session; + #endif ++ extern int no_line_editing; + + extern void initialize_siglist (); +*************** +*** 506,510 **** + #if defined (HISTORY) + /* XXX - will inhibit history file being written */ +! history_lines_this_session = 0; + #endif + terminate_immediately = 0; +--- 508,515 ---- + #if defined (HISTORY) + /* XXX - will inhibit history file being written */ +! # if defined (READLINE) +! if (interactive_shell == 0 || interactive == 0 || (sig != SIGHUP && sig != SIGTERM) || no_line_editing || (RL_ISSTATE (RL_STATE_READCMD) == 0)) +! # endif +! history_lines_this_session = 0; + #endif + terminate_immediately = 0; +*** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010 +--- patchlevel.h Thu Feb 24 21:41:34 2011 +*************** +*** 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_ */ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
