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]

Reply via email to