bash32-041   [plain text]


			     BASH PATCH REPORT
			     =================

Bash-Release: 3.2
Patch-ID: bash32-041

Bug-Reported-by:	Dan Jacobson <jidanni@jidanni.org>
Bug-Reference-ID:	<873arjs11h.fsf@jidanni.org>
Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2008-02/msg00049.html

Bug-Description:

Bash saved and restored the value of `set -o history' while sourcing files,
preventing users from turning off history with `set +o history' in .bashrc.

Patch:

*** ../bash-3.2-patched/bashhist.c	2005-12-26 13:31:16.000000000 -0500
--- bashhist.c	2008-08-17 13:07:40.000000000 -0400
***************
*** 81,84 ****
--- 81,85 ----
     becomes zero when we read lines from a file, for example. */
  int remember_on_history = 1;
+ int enable_history_list = 1;	/* value for `set -o history' */
  
  /* The number of lines that Bash has added to this history session.  The
***************
*** 235,239 ****
    history_expansion_inhibited = 1;
  #endif
!   remember_on_history = interact != 0;
    history_inhibit_expansion_function = bash_history_inhibit_expansion;
  }
--- 236,240 ----
    history_expansion_inhibited = 1;
  #endif
!   remember_on_history = enable_history_list = interact != 0;
    history_inhibit_expansion_function = bash_history_inhibit_expansion;
  }
*** ../bash-3.2-patched/builtins/set.def	2006-07-27 09:41:43.000000000 -0400
--- builtins/set.def	2008-08-14 16:33:41.000000000 -0400
***************
*** 190,194 ****
  #endif /* BANG_HISTORY */
  #if defined (HISTORY)
!   { "history",   '\0', &remember_on_history, bash_set_history, (setopt_get_func_t *)NULL },
  #endif
    { "ignoreeof", '\0', &ignoreeof, set_ignoreeof, (setopt_get_func_t *)NULL },
--- 198,202 ----
  #endif /* BANG_HISTORY */
  #if defined (HISTORY)
!   { "history",   '\0', &enable_history_list, bash_set_history, (setopt_get_func_t *)NULL },
  #endif
    { "ignoreeof", '\0', &ignoreeof, set_ignoreeof, (setopt_get_func_t *)NULL },
***************
*** 382,385 ****
--- 390,394 ----
    if (on_or_off == FLAG_ON)
      {
+       enable_history_list = 1;
        bash_history_enable ();
        if (history_lines_this_session == 0)
***************
*** 387,392 ****
      }
    else
!     bash_history_disable ();
!   return (1 - remember_on_history);
  }
  #endif
--- 396,404 ----
      }
    else
!     {
!       enable_history_list = 0;
!       bash_history_disable ();
!     }
!   return (1 - enable_history_list);
  }
  #endif
***************
*** 566,570 ****
  {
  #if defined (HISTORY)
!   remember_on_history = 1;
  #endif
    ignoreeof = 0;
--- 578,582 ----
  {
  #if defined (HISTORY)
!   remember_on_history = enable_history_list = 1;
  #endif
    ignoreeof = 0;
*** ../bash-3.2-patched/builtins/evalstring.c	2006-07-28 15:12:16.000000000 -0400
--- builtins/evalstring.c	2008-11-10 21:17:16.000000000 -0500
***************
*** 68,71 ****
--- 68,79 ----
  static int cat_file __P((REDIRECT *));
  
+ #if defined (HISTORY)
+ static void
+ set_history_remembering ()
+ {
+   remember_on_history = enable_history_list;
+ }
+ #endif
+ 
  /* How to force parse_and_execute () to clean up after itself. */
  void
***************
*** 116,120 ****
  
  #if defined (HISTORY)
!   unwind_protect_int (remember_on_history);	/* can be used in scripts */
  #  if defined (BANG_HISTORY)
    if (interactive_shell)
--- 124,131 ----
  
  #if defined (HISTORY)
!   if (parse_and_execute_level == 0)
!     add_unwind_protect (set_history_remembering, (char *)NULL);
!   else
!     unwind_protect_int (remember_on_history);	/* can be used in scripts */
  #  if defined (BANG_HISTORY)
    if (interactive_shell)
*** ../bash-3.2-patched/bashhist.h	2005-07-01 15:44:41.000000000 -0400
--- bashhist.h	2008-08-17 12:51:07.000000000 -0400
***************
*** 32,35 ****
--- 32,38 ----
  
  extern int remember_on_history;
+ extern int enable_history_list;		/* value for `set -o history' */
+ extern int literal_history;		/* controlled by `shopt lithist' */
+ extern int force_append_history;
  extern int history_lines_this_session;
  extern int history_lines_in_file;
*** ../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 40
  
  #endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
     looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 41
  
  #endif /* _PATCHLEVEL_H_ */