11681 lines
		
	
	
	
		
			429 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			11681 lines
		
	
	
	
		
			429 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| 				 2/14/2011
 | ||
| 				 ---------
 | ||
| [bash-4.2 released]
 | ||
| 
 | ||
| 				   2/15
 | ||
| 				   ----
 | ||
| lib/glob/gmisc.c
 | ||
| 	- fix wmatchlen and umatchlen to avoid going past the end of the
 | ||
| 	  string on an incomplete bracket expression that ends with a
 | ||
| 	  NUL.  Partial fix for bug reported by Clark Wang <dearvoid@gmail.com>
 | ||
| 
 | ||
| 				   2/16
 | ||
| 				   ----
 | ||
| subst.h
 | ||
| 	- new string extract flag value: SX_WORD.  Used when calling
 | ||
| 	  extract_dollar_brace_string to skip over the word in
 | ||
| 	  ${param op word} from parameter_brace_expand
 | ||
| 
 | ||
| subst.c
 | ||
| 	- change parameter_brace_expand to add SX_WORD to flags passed to
 | ||
| 	  extract_dollar_brace_string
 | ||
| 	- change parameter_brace_expand to use SX_POSIXEXP for all non-posix
 | ||
| 	  word expansion operators that treat single quotes as special, not
 | ||
| 	  just % and #
 | ||
| 	- change extract_dollar_brace_string to initialize dolbrace_state to
 | ||
| 	  DOLBRACE_WORD if SX_WORD flag supplied and we shouldn't use
 | ||
| 	  DOLBRACE_QUOTE.  Fixes bug reported by Juergen Daubert <jue@jue.li>
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- document the exact expansions here strings undergo
 | ||
| 
 | ||
| 				   2/17
 | ||
| 				   ----
 | ||
| lib/readline/vi_mode.c
 | ||
| 	- make sure that `dd', `cc', and `yy' call vidomove_dispatch from
 | ||
| 	  rl_domove_read_callback.  Fixes bug reported by Clark Wang
 | ||
| 	  <dearvoid@gmail.com>
 | ||
| 
 | ||
| lib/readline/callback.c
 | ||
| 	- make sure _rl_internal_char_cleanup is called after the
 | ||
| 	  vi-motion callbacks (rl_vi_domove_callback) in rl_callback_read_char.
 | ||
| 	  Companion to above fix
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- make sure that the text describing the rhs of the == and =~
 | ||
| 	  operators to [[ states that only the quoted portion of the pattern
 | ||
| 	  is matched as a string
 | ||
| 
 | ||
| 				   2/18
 | ||
| 				   ----
 | ||
| lib/glob/gmisc.c
 | ||
| 	- better fix for umatchlen/wmatchlen: keep track of the number of
 | ||
| 	  characters in a bracket expression as the value to increase
 | ||
| 	  matchlen by if the bracket expression is not well-formed.  Fixes
 | ||
| 	  bug reported by Clark Wang <dearvoid@gmail.com>
 | ||
| 
 | ||
| subst.c
 | ||
| 	- change expand_string_for_rhs so that it sets the W_NOSPLIT2 flag
 | ||
| 	  in the word flags.  We will not perform word splitting or quote
 | ||
| 	  removal on the result, so we do not want to add quoted nulls if
 | ||
| 	  we see "" or ''.  Fixes bug reported by Mike Frysinger
 | ||
| 	  <vapier@gentoo.org>
 | ||
| 
 | ||
| 				   2/19
 | ||
| 				   ----
 | ||
| variables.c
 | ||
| 	- new function, int chkexport(name), checks whether variable NAME is
 | ||
| 	  exported and remakes the export environment if necessary.  Returns
 | ||
| 	  1 if NAME is exported and 0 if not
 | ||
| 	- call chkexport(name) to get tzset to look at the right variable in
 | ||
| 	  the environment when modifying TZ in sv_tz.  Don't call tzset if
 | ||
| 	  chkexport doesn't indicate that the variable is exported
 | ||
| 
 | ||
| variables.h
 | ||
| 	- new extern declaration for chkexport
 | ||
| 
 | ||
| 
 | ||
| {parse.y,builtins/printf.def}
 | ||
| 	- call sv_tz before calling localtime() when formatting time strings
 | ||
| 	  in prompt strings or using printf.  Fixes bug reported by
 | ||
| 	  Dennis Williamson <dennistwilliamson@gmail.com>
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- modify fix of 2/9 to add casts when those variables are passed to
 | ||
| 	  functions; some compilers throw errors instead of warnings.  Report
 | ||
| 	  and fix from Joachim Schmitz <jojo@schmitz-digital.de>
 | ||
| 
 | ||
| support/shobj-conf
 | ||
| 	- add a stanza for nsk on the Tandem from Joachim Schmitz
 | ||
| 	  <jojo@schmitz-digital.de>
 | ||
| 
 | ||
| {shell,lib/readline/shell}.c
 | ||
| 	- Tandem systems should use getpwnam (getlogin()); for some reason
 | ||
| 	  they don't do well with using getuid().  Fix from Joachim Schmitz
 | ||
| 	  <jojo@schmitz-digital.de>
 | ||
| 
 | ||
| 				    3/1
 | ||
| 				    ---
 | ||
| variables.c
 | ||
| 	- make sure that the return value from find_variable is non-null
 | ||
| 	  before trying to use it in chkexport.  Fixes bug reported by
 | ||
| 	  Evangelos Foutras <foutrelis@gmail.com>
 | ||
| 
 | ||
| 				    3/3
 | ||
| 				    ---
 | ||
| parse.y
 | ||
| 	- when adding $$ to the current token buffer in read_token_word(),
 | ||
| 	  don't xmalloc a buffer for two characters and then strcpy it, just
 | ||
| 	  copy the characters directly into the token buffer.  Fix from
 | ||
| 	  Michael Whitten <mfwitten@gmail.com>
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- fix expand_word_unsplit to add the W_NOSPLIT2 flag to the word to
 | ||
| 	  be expanded, so "" doesn't add CTLNUL.  Similar to fix of 2/18 to
 | ||
| 	  expand_string_for_rhs.  Fixes bug reported by Nathanael D. Noblet
 | ||
| 	  <nathanael@gnat.ca> and Matthias Klose <doko@debian.org>
 | ||
| 
 | ||
| parse.y
 | ||
| 	- fix extended_glob case of read_token_word to allocate an extra
 | ||
| 	  space in the buffer for the next character read after the extended
 | ||
| 	  glob specification if it's a CTLESC or CTLNUL.  Report and fix from
 | ||
| 	  Michael Witten <mfwitten@gmail.com>
 | ||
| 	- fix shell expansions case of read_token_word to allocate an extra
 | ||
| 	  space in the buffer for the next character read after the shell
 | ||
| 	  expansion if it's a CTLESC or CTLNUL.  Report and fix from
 | ||
| 	  Michael Witten <mfwitten@gmail.com>
 | ||
| 	- TENTATIVE: fix read_token_word to reduce the amount of buffer space
 | ||
| 	  required to hold the translated and double-quoted value of $"..."
 | ||
| 	  strings.  Report and fix from Michael Witten <mfwitten@gmail.com>
 | ||
| 	- change code around got_character and got_escaped_character labels to
 | ||
| 	  make sure that we call RESIZE_MALLOCED_BUFFER before adding the
 | ||
| 	  CTLESC before a CTLESC or CTLNUL, and before adding the character if
 | ||
| 	  we're not adding a CTLESC.  Report and fix from
 | ||
| 	  Michael Witten <mfwitten@gmail.com>
 | ||
| 
 | ||
| subst.c
 | ||
| 	- new param flags value, PF_ASSIGNRHS, mirrors W_ASSIGNRHS, noting that
 | ||
| 	  parameter expansion is on rhs of assignment statement.  That inhibits
 | ||
| 	  word splitting
 | ||
| 	- change param_expand to call string_list_dollar_at with quoted == 1
 | ||
| 	  if PF_ASSIGNRHS is set, so it will quote IFS characters in the
 | ||
| 	  positional parameter before separating them with the first char of
 | ||
| 	  $IFS.  This keeps the rhs from being split inappropriately.  Fixes
 | ||
| 	  bug reported by Andres Perera <andres.p@zoho.com>
 | ||
| 
 | ||
| 				    3/4
 | ||
| 				    ---
 | ||
| lib/readline/bind.c
 | ||
| 	- add a missing free of `names' in rl_function_dumper.  Bug report
 | ||
| 	  and fix from Michael Snyder <msnyder@vmware.com>
 | ||
| 
 | ||
| 				    3/5
 | ||
| 				    ---
 | ||
| lib/readline/rltty.c
 | ||
| 	- change rl_deprep_terminal so it uses fileno (stdin) for the tty fd
 | ||
| 	  if rl_instream is not set, like rl_prep_terminal
 | ||
| 
 | ||
| 				    3/6
 | ||
| 				    ---
 | ||
| lib/readline/display.c
 | ||
| 	- fix rl_message to use a dynamically-allocated buffer instead of a
 | ||
| 	  fixed-size buffer of 128 chars for the `local message prompt'.  Bug
 | ||
| 	  report and fix from Micah Cowan <micah@cowan.name>
 | ||
| 
 | ||
| 				    3/7
 | ||
| 				    ---
 | ||
| jobs.c
 | ||
| 	- add sentinel to wait_sigint_handler so it only sets wait_sigint_received
 | ||
| 	  if waiting_for_child is non-zero; otherwise, it restores the old
 | ||
| 	  SIGINT handler and sends itself the SIGINT
 | ||
| 	- set waiting_for_child around the calls to waitchld that use it to
 | ||
| 	  synchronously wait for a process
 | ||
| 	- change logic that decides whether or not the child process blocked
 | ||
| 	  or handled SIGINT based on whether or not waitpid returns -1/EINTR
 | ||
| 	  and the shell receives a SIGINT and the child does not exit.  If
 | ||
| 	  the child later exits due to SIGINT, cancel the assumoption that it
 | ||
| 	  was handled
 | ||
| 	- instead of testing whether or not the child exited due to SIGINT
 | ||
| 	  when deciding whether the shell should act on a SIGINT it received
 | ||
| 	  while waiting, test whether or not we think the child caught
 | ||
| 	  SIGINT.  If it did, we let it go (unless the shell has it trapped);
 | ||
| 	  if it did not catch it, the shell acts on the SIGINT.  Fix from
 | ||
| 	  Linus Torvalds <torvalds@linux-foundation.org>, bug report originally
 | ||
| 	  from Oleg Nesterov <oleg@redhat.com>
 | ||
| 
 | ||
| 				    3/8
 | ||
| 				    ---
 | ||
| shell.c
 | ||
| 	- initialize no_line_editing to 1 if READLINE is not defined -- we
 | ||
| 	  can't have line editing without readline
 | ||
| 
 | ||
| 				   3/12
 | ||
| 				   ----
 | ||
| lib/readline/signals.c
 | ||
| 	- add SIGHUP to the set of signals readline handles
 | ||
| 
 | ||
| lib/readline/doc/rltech.texi
 | ||
| 	- document that SIGHUP is now part of the set of signals readline
 | ||
| 	  handles
 | ||
| 
 | ||
| lib/readline/input.c
 | ||
| 	- if _rl_caught_signal indicates that read() was interrupted by a
 | ||
| 	  SIGHUP or SIGTERM, return READERR or EOF as appropriate
 | ||
| 	- call rl_event_hook, if it's set, if call to read in rl_getc
 | ||
| 	  returns -1/EINTR.  If rl_event_hook doesn't do anything, this
 | ||
| 	  continues the loop as before.  This handles the other fatal
 | ||
| 	  signals
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- add a couple of QUIT; calls to execute_disk_command and
 | ||
| 	  execute_simple_command to improve responsiveness to interrupts
 | ||
| 	  and fatal signals
 | ||
| 
 | ||
| input.c
 | ||
| 	- rearrange getc_with_restart so that the return values from read()
 | ||
| 	  are handled right
 | ||
| 
 | ||
| parse.y
 | ||
| 	- don't need to set terminate_immediately in yy_stream_get, since
 | ||
| 	  getc_with_restart checks for terminating signals itself
 | ||
| 	- since readline returns READERR on SIGHUP or SIGTERM, don't need
 | ||
| 	  to set terminate_immediately.  Still doesn't handle other
 | ||
| 	  signals well -- will have to check that some more
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- new function, bash_event_hook, for rl_event_hook.  Just checks for
 | ||
| 	  terminating signals and acts on them using CHECK_TERMSIG.
 | ||
| 	- set rl_event_hook to bash_event_hook
 | ||
| 
 | ||
| builtins/read.def
 | ||
| 	- take out setting terminate_immediately; add calls to CHECK_TERMSIG
 | ||
| 	  after read calls
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- move the text describing the effect of negative subscripts used to
 | ||
| 	  reference indexed array elements to the paragraphs describing
 | ||
| 	  ${parameter[subscript]}, since that's where they are implemented.
 | ||
| 	  Pointed out by Christopher F. A. Johnson <cfajohnson@gmail.com>
 | ||
| 
 | ||
| arrayfunc.[ch],subst.c
 | ||
| 	- array_expand_index now takes a new first argument: a SHELL_VAR *
 | ||
| 	  of the array variable being subscripted.  Can be used later to fully
 | ||
| 	  implement negative subscripts
 | ||
| 
 | ||
| 				   3/14
 | ||
| 				   ----
 | ||
| lib/glob/glob.c
 | ||
| 	- fix mbskipname to not turn the directory entry name into a wide char
 | ||
| 	  string if the conversion of the pattern to a wide char string fails
 | ||
| 	- fix mbskipname to call skipname if either the pattern or the filename
 | ||
| 	  can't be converted into a wide-char string
 | ||
| 
 | ||
| lib/glob/xmbsrtowcs.c
 | ||
| 	- fix xdupmbstowcs2 to handle return value of 0 from mbsnrtowcs and
 | ||
| 	  short-circuit with failure in that case.  Fixes bug reported by
 | ||
| 	  Roman Rakus <rrakus@redhat.com>
 | ||
| 
 | ||
| 				   3/15
 | ||
| 				   ----
 | ||
| bashline.c
 | ||
| 	- new variable, bash_filename_quote_characters to store the value
 | ||
| 	  assigned to rl_filename_quote_characters so it can be restored
 | ||
| 	  if changed.
 | ||
| 	- change bashline_reset and attempt_shell_completion to restore
 | ||
| 	  rl_filename_quote_characters if not set to default
 | ||
| 
 | ||
| 				   3/22
 | ||
| 				   ----
 | ||
| lib/glob/glob.c
 | ||
| 	- wdequote_pathname falls back to udequote_pathname if xdupmbstowcs
 | ||
| 	  fails to convert the pathname to a wide-character string
 | ||
| 
 | ||
| lib/glob/xmbsrtowcs.c
 | ||
| 	- xdupmbstowcs2: change to fix problem with leading '\\' (results in
 | ||
| 	  nms == 0, which causes it to short-circuit with failure right
 | ||
| 	  away).  Fixes bug pointed out by Werner Fink <werner@suse.de>
 | ||
| 	- xdupmbstowcs2: compensate for mbsnrtowcs returning 0 by taking the
 | ||
| 	  next single-byte character and going on
 | ||
| 	- xdupmbstowcs2: change memory allocation to increase by WSBUF_INC
 | ||
| 	  bytes; try to avoid calls to realloc (even if they don't actually
 | ||
| 	  result in more memory being allocated)
 | ||
| 
 | ||
| 				   3/24
 | ||
| 				   ----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- slightly modify BASH_SUBSHELL description based on complaint from
 | ||
| 	  Sam Liddicott <sam@liddicott.com>
 | ||
| 
 | ||
| 				   3/25
 | ||
| 				   ----
 | ||
| trap.c
 | ||
| 	- change free_trap_strings to not call free_trap_string for signals
 | ||
| 	  that are being ignored, like reset_or_restore_signal_handlers.
 | ||
| 	  Fixes bug reported by Satoshi Takahashi <blue3waters@gmail.com>
 | ||
| 
 | ||
| 				   3/26
 | ||
| 				   ----
 | ||
| lib/readline/rltypedefs.h
 | ||
| 	- remove old Function/VFunction/CPFunction/CPPFunction typedefs as
 | ||
| 	  suggested by Tom Tromey <tromey@redhat.com>
 | ||
| 
 | ||
| lib/readline/rlstdc.h
 | ||
| 	- move defines for USE_VARARGS/PREFER_STDARG/PREFER_VARARGS from
 | ||
| 	  config.h.in to here because declaration of rl_message in
 | ||
| 	  readline.h uses the defines.  This makes it hard for another packages
 | ||
| 	  to use after the header files are installed, since config.h is not
 | ||
| 	  one of the installed files.  Suggested by Tom Tromey
 | ||
| 	  <tromey@redhat.com>
 | ||
| 
 | ||
| 				   3/27
 | ||
| 				   ----
 | ||
| print_cmd.c
 | ||
| 	- change indirection_string from a static buffer to a dynamic one
 | ||
| 	  managed by indirection_level_string(), so we don't end up truncating
 | ||
| 	  PS4.  Suggested by Dennis Williamson <dennistwilliamson@gmail.com>
 | ||
| 
 | ||
| lib/readline/shell.c
 | ||
| 	- change sh_set_lines_and_columns to use static buffers instead of
 | ||
| 	  allocating the buffers to pass to setenv/putenv
 | ||
| 
 | ||
| lib/readline/terminal.c
 | ||
| 	- change _rl_get_screen_size to not call sh_set_lines_and_columns if
 | ||
| 	  ignore_env == 0
 | ||
| 	- _rl_sigwinch_resize_terminal: new function to just retrieve terminal
 | ||
| 	  size, ignoring environment
 | ||
| 
 | ||
| lib/readline/rlprivate.h
 | ||
| 	- new external declaration for _rl_sigwinch_resize_terminal() (currently
 | ||
| 	  unused)
 | ||
| 
 | ||
| lib/readline/signals.c
 | ||
| 	- rl_sigwinch_handler: set _rl_caught_signal to SIGWINCH
 | ||
| 	- rl_sigwinch_handler: don't immediately call rl_resize_terminal; just
 | ||
| 	  leave _rl_caught_signal set for RL_CHECK_SIGNALS to handle
 | ||
| 	- _rl_signal_handler: call rl_resize_terminal if sig == SIGWINCH.
 | ||
| 	  Should fix hang when sending multiple repeated SIGWINCH reported by
 | ||
| 	  Henning Bekel <h.bekel@googlemail.com>
 | ||
| 
 | ||
| 				   3/29
 | ||
| 				   ----
 | ||
| lib/sh/snprintf.c
 | ||
| 	- include math.h for any defines for isinf/isnan
 | ||
| 	- use code from gnulib documentation to implement isinf/isnan if they
 | ||
| 	  are not defined
 | ||
| 
 | ||
| configure.in
 | ||
| 	- don't check for isinf or isnan; c99 says they're macros anyway
 | ||
| 
 | ||
| config.h.in
 | ||
| 	- remove defines for ISINF_IN_LIBC and ISNAN_IN_LIBC, no longer used
 | ||
| 	  by snprintf.c
 | ||
| 
 | ||
| 				    4/2
 | ||
| 				    ---
 | ||
| braces.c
 | ||
| 	- brace_gobbler: fix to understand double-quoted command substitution,
 | ||
| 	  since the shell understands unquoted comsubs.  Fixes bug reported
 | ||
| 	  by Michael Whitten <mfwitten@gmail.com>
 | ||
| 
 | ||
| lib/readline/display.c
 | ||
| 	- include <pc.h> on MDOS
 | ||
| 	- get and set screen size using DJGPP-specific calls on MSDOS
 | ||
| 	- move cursor up clear screen using DJGPP-specific calls
 | ||
| 	- don't call tputs on DJGPP; there is no good terminfo support
 | ||
| 
 | ||
| lib/readline/terminal.c
 | ||
| 	- include <pc.h> on MDOS
 | ||
| 	- get and set screen size using DJGPP-specific calls on MSDOS
 | ||
| 	- use DJGPP-specific initialization on MSDOS, zeroing all the
 | ||
| 	  _rl_term_* variables
 | ||
| 	- don't call tputs on DJGPP; there is no good terminfo support
 | ||
| 	  DJGPP support from Eli Zaretskii  <eliz@gnu.org>
 | ||
| 
 | ||
| 				    4/6
 | ||
| 				    ---
 | ||
| 
 | ||
| config-top.h
 | ||
| 	- change DEFAULT_PATH_VALUE to something more useful and modern
 | ||
| 
 | ||
| 				    4/8
 | ||
| 				    ---
 | ||
| tests/printf2.sub
 | ||
| 	- make sure LC_ALL and LC_CTYPE are set so LANG assignment takes effect.
 | ||
| 	  Reported by Cedric Arbogast <arbogast.cedric@gmail.com>
 | ||
| 
 | ||
| 				   4/11
 | ||
| 				   ----
 | ||
| include/chartypes.h
 | ||
| 	- fix a couple of dicey defines (though ones that don't cause any
 | ||
| 	  compiler warnings) in IN_CTYPE_DOMAIN
 | ||
| 
 | ||
| doc/{bashref.texi,bash.1}
 | ||
| 	- add note referring to duplicating file descriptors in sections
 | ||
| 	  describing redirecting stdout and stderr and appending to stdout
 | ||
| 	  and stderr.  Suggested by Matthew Dinger <mdinger.bugzilla@gmail.com>
 | ||
| 
 | ||
| pcomplete.c
 | ||
| 	- it_init_helptopics: new function to support completing on help topics,
 | ||
| 	  not just builtins
 | ||
| 	- it_helptopics: new programmable completion list of help topics
 | ||
| 	- build list of helptopic completions in gen_action_completions on
 | ||
| 	  demand
 | ||
| 
 | ||
| pcomplete.h
 | ||
| 	- new extern declaration for it_helptopics
 | ||
| 
 | ||
| builtins/complete.def
 | ||
| 	- the `helptopic' action now maps to CA_HELPTOPIC intead of CA_BUILTIN,
 | ||
| 	  since there are more help topics than just builtins.  Suggested by
 | ||
| 	  Clark Wang <dearvoid@gmail.com>
 | ||
| 
 | ||
| 				   4/12
 | ||
| 				   ----
 | ||
| print_cmd.c
 | ||
| 	- fix print_arith_for_command to add a call to PRINT_DEFERRED_HEREDOCS
 | ||
| 	  before ending the body of the command, so heredocs get attached to
 | ||
| 	  the right command instead of to the loop.  From gentoo bug 363371
 | ||
| 	  http://bugs.gentoo.org/show_bug.cgi?id=363371
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- change coproc_pidchk to unset the appropriate shell variables when
 | ||
| 	  the (currently single) known coproc pid terminates
 | ||
| 	- cleanup and new functions to fully support multiple coprocesses when
 | ||
| 	  and if I decide to go there
 | ||
| 
 | ||
| 				   4/13
 | ||
| 				   ----
 | ||
| print_cmd.c
 | ||
| 	- fix print_group_command to add a call to PRINT_DEFERRED_HEREDOCS
 | ||
| 	  after call to make_command_string_internal before printing closing
 | ||
| 	  `}'
 | ||
| 	- fix make_command_string_internal to add a call to
 | ||
| 	  PRINT_DEFERRED_HEREDOCS after recursive call to
 | ||
| 	  make_command_string_internal in case cm_subshell before printing
 | ||
| 	  closing `)'
 | ||
| 
 | ||
| 				   4/14
 | ||
| 				   ----
 | ||
| print_cmd.c
 | ||
| 	- change overlapping strcpy in named_function_string to memmove
 | ||
| 
 | ||
| sig.h
 | ||
| 	- UNBLOCK_SIGNAL: convenience define, same as UNBLOCK_CHILD, just
 | ||
| 	  restores an old signal mask
 | ||
| 
 | ||
| trap.c
 | ||
| 	- set_signal: instead of setting the signal handler to SIG_IGN while
 | ||
| 	  installing the new trap handler, block the signal and unblock it
 | ||
| 	  after the new handler is installed.  Fixes bug reported by Roman
 | ||
| 	  Rakus <rrakus@redhat.com>
 | ||
| 
 | ||
| 				   4/15
 | ||
| 				   ----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- make it clear that enabling monitor mode means that all jobs run in
 | ||
| 	  separate process groups
 | ||
| 
 | ||
| 				   4/18
 | ||
| 				   ----
 | ||
| builtins/fc.def
 | ||
| 	- update fix of 4/15/2010 to not take saved_command_line_count into
 | ||
| 	  account when stepping down the history list to make sure that
 | ||
| 	  last_hist indexes something that is valid.  Fixes bug reported by
 | ||
| 	  <piuma@piumalab.org>
 | ||
| 
 | ||
| 				   4/19
 | ||
| 				   ----
 | ||
| builtins/fc.def
 | ||
| 	- fc_gethnum: make sure the calculation to decide the last history
 | ||
| 	  entry is exactly the same as fc_builtin.  Fixes bug uncovered by
 | ||
| 	  fix of 4/18 to stop seg fault
 | ||
| 
 | ||
| 				   4/22
 | ||
| 				   ----
 | ||
| lib/readline/terminal.c
 | ||
| 	- change _rl_enable_meta_key to set a flag indicating that it sent the
 | ||
| 	  enable-meta sequence
 | ||
| 	- _rl_disable_meta_key: new function to turn off meta mode after we
 | ||
| 	  turned it on with _rl_enable_meta_key
 | ||
| 
 | ||
| lib/readline/rlprivate.h
 | ||
| 	- extern declaration for _rl_disable_meta_key
 | ||
| 
 | ||
| configure.in
 | ||
| 	- if not cross-compiling, set CFLAGS_FOR_BUILD from any CFLAGS inherited
 | ||
| 	  from the environment.  Fixes HP/UX build problem reported by
 | ||
| 	  "Daniel Richard G." <skunk@iSKUNK.ORG>
 | ||
| 
 | ||
| 				   4/26
 | ||
| 				   ----
 | ||
| config-top.h
 | ||
| 	- define MULTIPLE_COPROCS to 0 so the code is still disabled but easy
 | ||
| 	  to enable via configure option or editing this file
 | ||
| 
 | ||
| 				   4/29
 | ||
| 				   ----
 | ||
| lib/sh/eaccess.c
 | ||
| 	- freebsd provides faccessat, with the same misfeature as their eaccess
 | ||
| 	  and access implementations (X_OK returns true for uid==0 regardless
 | ||
| 	  of the actual file permissions), so reorganize code to check the
 | ||
| 	  file permissions as with eaccess.  Report and fix from Johan Hattne
 | ||
| 	  <johan.hattne@utsouthwestern.edu>
 | ||
| 
 | ||
| 				    5/2
 | ||
| 				    ---
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- add forward reference to `Pattern Matching' from `Pathname
 | ||
| 	  Expansion', suggested by Greg Wooledge <wooledg@eeg.ccf.org>
 | ||
| 
 | ||
| 				    5/5
 | ||
| 				    ---
 | ||
| pcomplib.c
 | ||
| 	- the bash_completion project now distributes over 200 completions
 | ||
| 	  for various programs, with no end in sight, so increase the value
 | ||
| 	  of COMPLETE_HASH_BUCKETS from 32 to 128
 | ||
| 
 | ||
| pathexp.c
 | ||
| 	- quote_string_for_globbing: make sure CTLESC quoting CTLESC is
 | ||
| 	  translated into \<CTLESC> even if the flags include QGLOB_REGEXP.
 | ||
| 	  We don't want to process the second CTLESC as a quote character.
 | ||
| 	  Fixes bug reported by Shawn Bohrer <sbohrer@rgmadvisors.com>
 | ||
| 
 | ||
| 				    5/6
 | ||
| 				    ---
 | ||
| builtins/printf.def
 | ||
| 	- change PRETURN to not call fflush if ferror(stdout) is true
 | ||
| 	- if a call to one of the stdio functions or printstr leaves
 | ||
| 	  ferror(stdout) true, and PRETURN is going to be called, let PRETURN
 | ||
| 	  print the error message rather than doubling up the messages.  Fixes
 | ||
| 	  problem reported by Roman Rakus <rrakus@redhat.com>
 | ||
| 
 | ||
| 				    5/9
 | ||
| 				    ---
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- add note to the effect that lists inside compound command can be
 | ||
| 	  terminated by newlines as well as semicolons.  Suggested by
 | ||
| 	  Roman Byshko <rbyshko@gmail.com>
 | ||
| 
 | ||
| 				   5/10
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- remove_quoted_nulls: fix problem that caused it to skip over the
 | ||
| 	  character after a CTLNUL, which had the effect of skipping every
 | ||
| 	  other of a series of CTLNULs.  Fixes bug reported by
 | ||
| 	  Marten Wikstrom <marten.wikstrom@keystream.se>
 | ||
| 
 | ||
| 				   5/11
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- extract_process_subst: add SX_COMMAND flag to call to
 | ||
| 	  extract_delimited_string, since we're expanding the same sort of
 | ||
| 	  command as command substitution.  Fixes bug reported in Ubuntu
 | ||
| 	  bug 779848
 | ||
| 
 | ||
| 				   5/12
 | ||
| 				   ----
 | ||
| configure.in
 | ||
| 	- set the prefer_shared and prefer_static variables appropriately
 | ||
| 	  depending on the value of $opt_static_link
 | ||
| 
 | ||
| aclocal.m4
 | ||
| 	- AC_LIB_LINKFLAGS_BODY: change to not prefer shared versions of the
 | ||
| 	  libraries it's searching for if the prefer_shared variable is "no".
 | ||
| 	  Fixes problem reported by Cedric Arbogast <arbogast.cedric@gmail.com>
 | ||
| 
 | ||
| 				   5/13
 | ||
| 				   ----
 | ||
| lib/readline/readline.c
 | ||
| 	- _rl_internal_teardown: add call to _rl_disable_meta_key to make the
 | ||
| 	  meta key active only for the duration of the call to readline()
 | ||
| 	- _rl_internal_setup: move call to _rl_enable_meta_key here from
 | ||
| 	  readline_initialize_everything so the meta key is active only for
 | ||
| 	  the duration of the call to readline().  Suggestion from Miroslav
 | ||
| 	  Lichvar <mlichvar@redhat.com>
 | ||
| 
 | ||
| builtins/help.def
 | ||
| 	- help_builtin: change strncmp to strcmp so that `help read' no longer
 | ||
| 	  matches `readonly'.  Suggested by Clark Wang <dearvoid@gmail.com>
 | ||
| 
 | ||
| config.h.in
 | ||
| 	- add define for GLIBC21, checked using jm_GLIBC21 as part of the tests
 | ||
| 	  for libintl
 | ||
| 
 | ||
| lib/malloc/malloc.c
 | ||
| 	- internal_free: don't use the cached value of memtop when deciding
 | ||
| 	  whether or not to adjust the break and give memory back to the kernel
 | ||
| 	  when using the GNU C library, since glibc uses sbrk for its own
 | ||
| 	  internal purposes.  From Debian bug 614815, reported by Samuel
 | ||
| 	  Thibault <samuel.thibault@gnu.org>
 | ||
| 
 | ||
| aclocal.m4
 | ||
| 	- BASH_STRUCT_WEXITSTATUS_OFFSET: change AC_RUN_IFELSE to AC_TRY_RUN
 | ||
| 	  to avoid warning about not using AC_LANG_SOURCE
 | ||
| 
 | ||
| 				   5/14
 | ||
| 				   ----
 | ||
| bashline.[ch]
 | ||
| 	- two new functions, bashline_set_event_hook and bashline_reset_event_hook,
 | ||
| 	  to set rl_event_hook to bash_event_hook and back to NULL, respectively
 | ||
| 	- don't set rl_event_hook unconditionally
 | ||
| 
 | ||
| sig.c
 | ||
| 	- termsig_sighandler: if the shell is currently interactive and
 | ||
| 	  readline is active, call bashline_set_event_hook to cause
 | ||
| 	  termsig_handler to be called via bash_event_hook when the shell
 | ||
| 	  returns from the signal handler
 | ||
| 
 | ||
| 				   5/15
 | ||
| 				   ----
 | ||
| lib/readline/display.c
 | ||
| 	- _rl_col_width: Mac OS X has a bug in wcwidth: it does not return 0
 | ||
| 	  for UTF-8 combining characters.  Added workaround dependent on
 | ||
| 	  MACOSX.  Fixes problem pointed out by Thomas De Contes
 | ||
| 	  <d.l.tDecontes@free.fr>
 | ||
| 
 | ||
| 				   5/16
 | ||
| 				   ----
 | ||
| lib/readline/rlmbutil.h
 | ||
| 	- WCWIDTH: wrapper for wcwidth that returns 0 for Unicode combining
 | ||
| 	  characters on systems where wcwidth is broken (e.g., Mac OS X).
 | ||
| 
 | ||
| lib/readline/{complete,display,mbutil}.c
 | ||
| 	- use WCWIDTH instead of wcwidth
 | ||
| 
 | ||
| 				   5/17
 | ||
| 				   ----
 | ||
| lib/readline/display.c
 | ||
| 	- update_line: after computing ofd and nfd, see whether the next
 | ||
| 	  character in ofd is a zero-width combining character.  If it is,
 | ||
| 	  back ofd and nfd up one, so the base characters no longer compare
 | ||
| 	  as equivalent.  Fixes problem reported by Keith Winstein
 | ||
| 	  <keithw@mit.edu>
 | ||
| 
 | ||
| lib/readline/nls.c
 | ||
| 	- _rl_utf8locale: new flag variable, set to non-zero if the current
 | ||
| 	  locale is UTF-8
 | ||
| 	- utf8locale(): new function, returns 1 if the passed lspec (or the
 | ||
| 	  current locale) indicates that the locale is UTF-8.  Called from
 | ||
| 	  _rl_init_eightbit
 | ||
| 
 | ||
| lib/readline/rlprivate.h
 | ||
| 	- extern declaration for _rl_utf8locale
 | ||
| 
 | ||
| locale.c
 | ||
| 	- locale_utf8locale: new flag variable, set to non-zero if the current
 | ||
| 	  locale is UTF-8 (currently unused)
 | ||
| 	- locale_isutf8(): new function, returns 1 if the passed lspec (or the
 | ||
| 	  current locale) indicates that the locale is UTF-8.  Should be called
 | ||
| 	  whenever the locale or LC_CTYPE value is modified
 | ||
| 
 | ||
| aclocal.m4
 | ||
| 	- BASH_WCWIDTH_BROKEN: new test for whether or not wcwidth returns
 | ||
| 	  zero-width characters like unicode combining characters as having
 | ||
| 	  display length 1; define WCWIDTH_BROKEN in this case
 | ||
| 
 | ||
| config.h.in
 | ||
| 	- WCWIDTH_BROKEN: new define
 | ||
| 
 | ||
| lib/readline/rlmbutil.h
 | ||
| 	- change WCWIDTH macro to use _rl_utf8locale and the full range of
 | ||
| 	  Unicode combining characters (U+0300-U+036F)
 | ||
| 
 | ||
| 				   5/19
 | ||
| 				   ----
 | ||
| lib/readline/rlprivate.h
 | ||
| 	- _rl_search_context: new member, prevc, will hold character read
 | ||
| 	  prior to lastc
 | ||
| 
 | ||
| lib/readline/isearch.c
 | ||
| 	- _rl_isearch_dispatch: if the character causes us to index into
 | ||
| 	  another keymap, save that character in cxt->prevc
 | ||
| 	- _rl_isearch_dispatch: if we index into another keymap, but don't
 | ||
| 	  find a function that's special to i-search, and the character that
 | ||
| 	  caused us to index into that keymap would have terminated the
 | ||
| 	  search, push back cxt->prevc and cxt->lastc to make it appear as
 | ||
| 	  if `prevc' terminated the search, and execute lastc as a command.
 | ||
| 	  We have to push prevc back so we index into the same keymap before
 | ||
| 	  we read lastc.  Fixes bug report from Davor Cubranic
 | ||
| 	  <cubranic@stat.ubc.ca>
 | ||
| 
 | ||
| 				   5/20
 | ||
| 				   ----
 | ||
| expr.c
 | ||
| 	- expr_bind_variable: pay attention to the return value from
 | ||
| 	  bind_variable and check whether or not we should error out due to
 | ||
| 	  a readonly or noassign variable.  Fixes bug reported by Eric
 | ||
| 	  Blake <eblake@redhat.com>
 | ||
| 
 | ||
| 				   5/26
 | ||
| 				   ----
 | ||
| 
 | ||
| lib/readline/search.c
 | ||
| 	- include histlib.h for ANCHORED_SEARCH defines
 | ||
| 	- rl_history_search_flags: new variable, holds ANCHORED_SEARCH flag for
 | ||
| 	  the duration of a history search
 | ||
| 	- rl_history_search_reinit: takes a new flags variable, defines whether
 | ||
| 	  or not the search is anchored; assigned to rl_history_search_flags
 | ||
| 	- rl_history_serarch_reinit: if ANCHORED_SEARCH flag passed, add ^ to
 | ||
| 	  beginning of search string; otherwise search string is unmodified
 | ||
| 	- rl_history_search_internal: set rl_point appropriately based on
 | ||
| 	  whether or not rl_history_search_flags includes ANCHORED_SEARCH
 | ||
| 	- rl_history_substr_search_forward: new function, for non-anchored
 | ||
| 	  substring search forward through history for string of characters
 | ||
| 	  preceding rl_point
 | ||
| 	- rl_history_substr_search_backward: new function, for non-anchored
 | ||
| 	  substring search backward through history for string of characters
 | ||
| 	  preceding rl_point.  Original code from Niraj Kulkarni
 | ||
| 	  <kulkarniniraj14@gmail.com>
 | ||
| 
 | ||
| lib/readline/readline.h
 | ||
| 	- extern declarations for rl_history_substr_search_{for,back}ward
 | ||
| 
 | ||
| lib/readline/funmap.c
 | ||
| 	- history-substring-search-forward: new bindable command, invokes
 | ||
| 	  rl_history_substr_search_forward
 | ||
| 	- history-substring-search-backward: new bindable command, invokes
 | ||
| 	  rl_history_substr_search_backward
 | ||
| 
 | ||
| lib/readline/doc/{rluser.texi,readline.3}
 | ||
| 	- document history-substring-search-forward and
 | ||
| 	  history-substring-search-backward
 | ||
| 
 | ||
| 				   5/27
 | ||
| 				   ----
 | ||
| {nojobs,jobs}.c
 | ||
| 	- add support for DONT_REPORT_SIGTERM so that the shell doesn't print
 | ||
| 	  a message when a job exits due to SIGTERM since that's the default
 | ||
| 	  signal sent by the kill builtin.  Suggested by Marc Herbert
 | ||
| 	  <mark.herbert@gmail.com>
 | ||
| 
 | ||
| config-top.h
 | ||
| 	- DONT_REPORT_SIGTERM: new user-modifiable setting.  Commented out
 | ||
| 	  by default
 | ||
| 
 | ||
| 				   5/28
 | ||
| 				   ----
 | ||
| lib/readline/bind.c
 | ||
| 	- _rl_skip_to_delim: skip to a closing double quote or other delimiter,
 | ||
| 	  allowing backslash to quote any character, including the delimiter
 | ||
| 	- rl_parse_and_bind: call _rl_skip_to_delim instead of using inline
 | ||
| 	  code
 | ||
| 	- rl_parse_and_bind: allow quoted strings as the values of string
 | ||
| 	  variables.  Variable values without double quotes have trailing
 | ||
| 	  whitespace removed (which still allows embedded whitespace, for
 | ||
| 	  better or worse).  Fixes problem with string variables not matching
 | ||
| 	  in `set' command if values happen to have trailing spaces or tabs
 | ||
| 	  (debian bash bug #602762), but introduces slight incompatibility.
 | ||
| 
 | ||
| 				   5/29
 | ||
| 				   ----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- clarify unset description to specify that without options, a
 | ||
| 	  variable, then a shell function if there is no variable by that
 | ||
| 	  name, is unset.  Fixes discrepancy reported by Mu Qiao
 | ||
| 	  <qiaomuf@gentoo.org>
 | ||
| 
 | ||
| 				   6/4
 | ||
| 				   ----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- clarify description of LINES and COLUMNS (and checkwinsize shopt
 | ||
| 	  option) to make it clear that only interactive shells set a
 | ||
| 	  handler for SIGWINCH and update LINES and COLUMNS.  Original
 | ||
| 	  report submitted by Jonathan Nieder <jrnieder@gmail.com>
 | ||
| 
 | ||
| arrayfunc.c
 | ||
| 	- expand_compound_array_assignment: defer expansion of words between
 | ||
| 	  parens when performing compound assignmnt to an associative array
 | ||
| 	  variable
 | ||
| 	- assign_compound_array_list: perform the same expansions when doing
 | ||
| 	  a compound array assignment to an associative array variable as
 | ||
| 	  when doing a straight array index assignment.  The idea is that
 | ||
| 	  	foo=( [ind1]=bar [ind2]=quux)
 | ||
| 	  is the same as
 | ||
| 		foo[ind1]=bar ; foo[ind2]=quux
 | ||
| 
 | ||
| 	  This fixes problems with double-expansion and quote removal being
 | ||
| 	  performed on the array indices
 | ||
| 
 | ||
| 				   6/13
 | ||
| 				   ----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- Add a little text to make it clear that the locale determines how
 | ||
| 	  range expressions in glob patterns are handled.
 | ||
| 
 | ||
| 
 | ||
| 				   6/21
 | ||
| 				   ----
 | ||
| builtins/read.def
 | ||
| 	- display a message and return error status if -a is used with an
 | ||
| 	  existing associative array.  Fixes bug reported by Curtis Doty
 | ||
| 	  <curtis@greenkey.net>
 | ||
| 
 | ||
| 				   6/24
 | ||
| 				   ----
 | ||
| {jobs,nojobs}.c
 | ||
| 	- non-interactive shells now react to the setting of checkwinsize
 | ||
| 	  and set LINES and COLUMNS after a foreground job exits.  From a
 | ||
| 	  suggestion by Leslie Rhorer <lrhorer@satx.rr.com>
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- checkwinsize: remove language saying that only interactive shells
 | ||
| 	  check the window size after each command
 | ||
| 
 | ||
| lib/readline/histfile.c
 | ||
| 	- history_backupfile: new file, creates a backup history file name
 | ||
| 	  given a filename (appending `-')
 | ||
| 	- history_do_write: when overwriting the history file, back it up
 | ||
| 	  before writing.  Restore backup file on a write error.  Suggested
 | ||
| 	  by chkno@chkno.net
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- find_cmd_name: two new arguments, return the start and end of the
 | ||
| 	  actual text string used to find the command name, without taking
 | ||
| 	  whitespace into account
 | ||
| 	- attempt_shell_completion: small changes to make sure that completion
 | ||
| 	  attempted at the beginning of a non-empty line does not find a
 | ||
| 	  programmable completion, even if the command name starts at point
 | ||
| 	- attempt_shell_completion: small change to make sure that completion
 | ||
| 	  does not find a progcomp when in whitespace before the command
 | ||
| 	  name
 | ||
| 	- attempt_shell_completion: small change to make sure that completion
 | ||
| 	  does not find a progcomp when point is at the first character of a
 | ||
| 	  command name, even when there is leading whitespace (similar to
 | ||
| 	  above).  Fixes problems noted by Ville Skytta <ville.skytta@iki.fi>
 | ||
| 
 | ||
| subst.c
 | ||
| 	- brace_expand_word_list: since the individual strings in the strvec
 | ||
| 	  returned by brace_expand are already allocated, don't copy them to
 | ||
| 	  newly-allocated memory when building the WORD_LIST, just use them
 | ||
| 	  intact
 | ||
| 
 | ||
| locale.c
 | ||
| 	- locale_mb_cur_max: cache value of MB_CUR_MAX when we set or change
 | ||
| 	  the locale to avoid a function call every time we need to read it
 | ||
| 
 | ||
| shell.h
 | ||
| 	- new struct to save shell_input_line and associated variables:
 | ||
| 	  shell_input_line_state_t
 | ||
| 	- add members of sh_parser_state_t to save and restore token and the
 | ||
| 	  size of the token buffer
 | ||
| 
 | ||
| parse.y
 | ||
| 	- {save,restore}_input_line_state: new functions to save and restore
 | ||
| 	  shell_input_line and associated variables
 | ||
| 	- {save,restore}_parser_state: add code to save and restore the token
 | ||
| 	  and token buffer size
 | ||
| 	- xparse_dolparen: call save_ and restore_input_line_state to avoid
 | ||
| 	  problems with overwriting shell_input_line when we recursively
 | ||
| 	  call the parser to parse a command substitution.  Fixes bug
 | ||
| 	  reported by Rui Santos <rsantos@grupopie.com>
 | ||
| 
 | ||
| include/shmbutil.h
 | ||
| 	- use locale_mb_cur_max instead of MB_CUR_MAX in ADVANCE_CHAR and
 | ||
| 	  similar macros
 | ||
| 
 | ||
| lib/glob/smatch.c
 | ||
| 	- rangecmp,rangecmp_wc: change to take an additional argument, which
 | ||
| 	  forces the use of strcoll/wscoll when non-zero.  If it's 0, a new
 | ||
| 	  variable `glob_asciirange' controls whether or not we use strcoll/
 | ||
| 	  wscoll.  If glob_asciirange is non-zero, we use straight
 | ||
| 	  C-locale-like ordering. Suggested by  Aharon Robbins
 | ||
| 	  <arnold@skeeve.com>
 | ||
| 
 | ||
| 				   6/30
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- execute_pipeline: make sure the lastpipe code is protected by
 | ||
| 	  #ifdef JOB_CONTROL.  Fixes problem reported by Thomas Cort
 | ||
| 	  <tcort@minix3.org>
 | ||
| 
 | ||
| 				    7/2
 | ||
| 				    ---
 | ||
| lib/readline/complete.c
 | ||
| 	- EXPERIMENTAL: remove setting of _rl_interrupt_immediately around
 | ||
| 	  completion functions that touch the file system.  Idea from Jan
 | ||
| 	  Kratochvil <jan.ktratochvil@redhat.com> and the GDB development
 | ||
| 	  team
 | ||
| 
 | ||
| lib/readline/signals.c
 | ||
| 	- rl_signal_handler: if we're in callback mode, don't interrupt
 | ||
| 	  immediately on a SIGWINCH
 | ||
| 
 | ||
| 				    7/3
 | ||
| 				    ---
 | ||
| bashline.c
 | ||
| 	- set_directory_hook: and its siblings are a new set of functions to
 | ||
| 	  set, save, and restore the appropriate directory completion hook
 | ||
| 	- change callers to use {set,save,restore}_directory_hook instead of
 | ||
| 	  manipulating rl_directory_rewrite_hook directly
 | ||
| 	- dircomplete_expand: new variable, defaults to 0, if non-zero causes
 | ||
| 	  directory names to be word-expanded during word and filename
 | ||
| 	  completion
 | ||
| 	- change {set,save,restore}_directory_hook to look at dircomplete_expand
 | ||
| 	  and change rl_directory_completion_hook or rl_directory_rewrite_hook
 | ||
| 	  appropriately
 | ||
| 
 | ||
| bashline.h
 | ||
| 	- extern declaration for set_directory_hook so shopt code can use it
 | ||
| 
 | ||
| 				    7/6
 | ||
| 				    ---
 | ||
| builtins/shopt.def
 | ||
| 	- globasciiranges: new settable shopt option, makes glob ranges act
 | ||
| 	  as if in the C locale (so b no longer comes between A and B).
 | ||
| 	  Suggested by Aharon Robbins <arnold@skeeve.com>
 | ||
| 
 | ||
| 				    7/7
 | ||
| 				    ---
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- document new `globasciiranges' shopt option
 | ||
| 
 | ||
| 				    7/8
 | ||
| 				    ---
 | ||
| builtins/shopt.def
 | ||
| 	- direxpand: new settable option, makes filename completion expand
 | ||
| 	  variables in directory names like bash-4.1 did.
 | ||
| 	- shopt_set_complete_direxpand: new function, does the work for the
 | ||
| 	  above by calling set_directory_hook
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- document new `direxpand' shopt option
 | ||
| 
 | ||
| 				   7/15
 | ||
| 				   ----
 | ||
| lib/readline/isearch.c
 | ||
| 	- _rl_isearch_dispatch: when adding character to search string, use
 | ||
| 	  cxt->lastc (which we use in the switch statement) instead of c,
 | ||
| 	  since lastc can be modified earlier in the function
 | ||
| 
 | ||
| 				   7/18
 | ||
| 				   ----
 | ||
| lib/readline/rlprivate.h
 | ||
| 	- _rl_search_context: add another member to save previous value of
 | ||
| 	  (multibyte) lastc: pmb is to mb as prevc is to lastc
 | ||
| 
 | ||
| lib/readline/isearch.c:
 | ||
| 	- _rl_isearch_dispatch: if a key sequence indexes into a new keymap,
 | ||
| 	  but doesn't find any bound function (k[ind].function == 0) or is
 | ||
| 	  bound to self-insert (k[ind].function == rl_insert), back up and
 | ||
| 	  insert the previous character (the one that caused the index into a
 | ||
| 	  new keymap) and arrange things so the current character is the next
 | ||
| 	  one read, so both of them end up in the search string.  Fixes bug
 | ||
| 	  reported by Clark Wang <dearvoid@gmail.com>
 | ||
| 	- _rl_isearch_dispatch: a couple of efficiency improvements when adding
 | ||
| 	  characters to the isearch string
 | ||
| 
 | ||
| 				   7/24
 | ||
| 				   ----
 | ||
| lib/readline/isearch.c
 | ||
| 	- _rl_isearch_dispatch: save and restore cxt->mb and cxt->pmb
 | ||
| 	  appropriately when in a multibyte locale
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- correct description of {x}>file (and other redirection operators
 | ||
| 	  that allocate a file descriptor) to note the the fd range is
 | ||
| 	  greater than or equal to 10.  Fixes problem reported by
 | ||
| 	  Christian Ullrich 
 | ||
| 
 | ||
| lib/readline/signals.c
 | ||
| 	- rl_signal_handler: don't interrupt immediately if in callback mode
 | ||
| 
 | ||
| lib/readline/callback.c
 | ||
| 	- rl_callback_read_char: install signal handlers only when readline
 | ||
| 	  has control in callback mode, so readline's signal handlers aren't
 | ||
| 	  called when the application is active (e.g., between the calls to
 | ||
| 	  rl_callback_handler_install and rl_callback_read_char).  If the
 | ||
| 	  readline signal handlers only set a flag, which the application
 | ||
| 	  doesn't know about, the signals will effectively be ignored until
 | ||
| 	  the next time the application calls into the readline callback
 | ||
| 	  interface.  Fixes problem of calling unsafe functions from signal
 | ||
| 	  handlers when in callback mode reported by Jan Kratochvil
 | ||
| 	  <jan.kratochvil@redhat.com>
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- fix_assignment_words: when in Posix mode, the `command' builtin
 | ||
| 	  doesn't change whether or not the command name it protects is an
 | ||
| 	  assignment builtin.  One or more instances of `command'
 | ||
| 	  preceding `export', for instance, doesn't make `export' treat its
 | ||
| 	  assignment statement arguments differently.  Posix interpretation
 | ||
| 	  #351
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- document new Posix-mode behavior of `command' when preceding builtins
 | ||
| 	  that take assignment statements as arguments
 | ||
| 
 | ||
| builtins/printf.def
 | ||
| 	- printstr: if fieldwidth or precision are < 0 or > INT_MAX when
 | ||
| 	  supplied explicitly (since we take care of the `-' separately),
 | ||
| 	  clamp at INT_MAX like when using getint().  Fixes issue reported
 | ||
| 	  by Ralph Coredroy <ralph@inputplus.co.uk>
 | ||
| 
 | ||
| 				   7/25
 | ||
| 				   ----
 | ||
| lib/readline/chardefs.h
 | ||
| 	- isxdigit: don't define if compiling with c++; declared as a c++
 | ||
| 	  template function.  Fixes bug reported by Miroslav Lichvar
 | ||
| 	  <mlichvar@redhat.com>
 | ||
| 
 | ||
| builtins/printf.def
 | ||
| 	- getint: if garglist == 0, return whatever getintmax returns (0).
 | ||
| 	  Fixes bug reported  by Ralph Coredroy <ralph@inputplus.co.uk>
 | ||
| 
 | ||
| 				   7/28
 | ||
| 				   ----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- minor changes to the descriptions of the cd and pushd builtins
 | ||
| 
 | ||
| lib/sh/zread.c
 | ||
| 	- zsyncfd: change variable holding return value from lseek to
 | ||
| 	  off_t.  Bug report and fix from Gregory Margo <gmargo@pacbell.net>
 | ||
| 
 | ||
| 				    8/1
 | ||
| 				    ---
 | ||
| expr.c
 | ||
| 	- don't check for division by 0 when in a context where no evaluation
 | ||
| 	  is taking place.  Fixes bug reported by dnade.ext@orange-ftgroup.com
 | ||
| 
 | ||
| 				    8/6
 | ||
| 				    ---
 | ||
| execute_cmd.c
 | ||
| 	- execute_command_internal: the parent branch of the subshell code
 | ||
| 	  (where the child calls execute_in_subshell) should not close all
 | ||
| 	  open FIFOs with unlink_fifo_list if it's part of a shell function
 | ||
| 	  that's still executing.  Fixes bug reported by Maarten Billemont
 | ||
| 	  <lhunath@lyndir.com>
 | ||
| 
 | ||
| 				    8/9
 | ||
| 				    ---
 | ||
| builtins/common.c
 | ||
| 	- get_exitstat: return EX_BADUSAGE (2) on a non-numeric argument
 | ||
| 
 | ||
| builtins/return.def
 | ||
| 	- return_builtin: just call get_exitstat to get the return status,
 | ||
| 	  let it handle proper parsing and handling of arguments.  Fixes
 | ||
| 	  issue most recently raised by Linda Walsh <bash@tlinx.org>.
 | ||
| 	  Reverses change from 9/11/2008 (see above)
 | ||
| 
 | ||
| 				   8/16
 | ||
| 				   ----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- clean up `set -e' language to make it clearer that any failure of
 | ||
| 	  a compound command will cause the shell to exit, not just subshells
 | ||
| 	  and brace commands
 | ||
| 
 | ||
| 				   8/17
 | ||
| 				   ----
 | ||
| configure.in
 | ||
| 	- make the various XXX_FOR_BUILD variables `precious' to autoconf to
 | ||
| 	  avoid stale data
 | ||
| 	- change how CC_FOR_BUILD is initialized when cross-compiling and not,
 | ||
| 	  but do not change behavior
 | ||
| 	- initialize CFLAGS_FOR_BUILD to -g when cross-compiling
 | ||
| 	- initialize LIBS_FOR_BUILD to $(LIBS) when not cross-compiling, empty
 | ||
| 	  when cross-compiling
 | ||
| 	- create AUTO_CFLAGS variable to hold basic CFLAGS defaults; used when
 | ||
| 	  CFLAGS not inherited from environment (like effect of old
 | ||
| 	  auto_cflags variable)
 | ||
| 	- substitute LIBS_FOR_BUILD into output Makefiles
 | ||
| 	  [changes inspired by bug report from Nathan Phillip Brink
 | ||
| 	  <ohnobinki@ohnopublishing.net> -- gentoo bug 378941]
 | ||
| 
 | ||
| builtins/Makefile.in	
 | ||
| 	- substitute LIBS_FOR_BUILD from configure, not strictly initialized
 | ||
| 	  to $(LIBS)
 | ||
| 
 | ||
| 				   8/27
 | ||
| 				   ----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- minor changes to the here string description to clarify the
 | ||
| 	  expansions performed on the word
 | ||
| 
 | ||
| support/shobj-conf
 | ||
| 	- handle compilation on Lion (Mac OS X 10.7/darwin11) with changes
 | ||
| 	  to darwin stanzas.  Fixes readline bug reported by Vincent
 | ||
| 	  Sheffer <vince.sheffer@apisphere.com>
 | ||
| 
 | ||
| lib/sh/strtrans.c
 | ||
| 	- ansic_wshouldquote: check a string with multi-byte characters for
 | ||
| 	  characters that needs to be backslash-octal escaped for $'...'
 | ||
| 	- ansic_shouldquote: if is_basic fails for one character, let
 | ||
| 	  ansic_wshouldquote examine the rest of the string and return what
 | ||
| 	  it returns.  From a patch sent by Roman Rakus <rrakus@redhat.com>
 | ||
| 
 | ||
| 				   8/30
 | ||
| 				   ----
 | ||
| lib/sh/strtrans.c
 | ||
| 	- ansic_quote: changes to quote (or not) multibyte characters.  New
 | ||
| 	  code converts them to wide characters and uses iswprint to check
 | ||
| 	  valid wide chars.  From a patch sent by Roman Rakus
 | ||
| 	  <rrakus@redhat.com>
 | ||
| 
 | ||
| 				    9/7
 | ||
| 				    ---
 | ||
| lib/sh/shquote.c
 | ||
| 	- sh_backslash_quote: change to be table-driven so we can use a
 | ||
| 	  different table if we want to
 | ||
| 	- sh_backslash_quote: takes a second char table[256] argument;
 | ||
| 
 | ||
| externs.h
 | ||
| 	- sh_backslash_quote: add second argument to function prototype
 | ||
| 
 | ||
| bashline.c,braces.c,parse.y,builtins/printf.def
 | ||
| 	- change callers of sh_backslash_quote to add second argument
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- filename_bstab: table of characters to pass to sh_backslash_quote;
 | ||
| 	  characters with value 1 will be backslash-quoted
 | ||
| 	- set_filename_bstab: turn on characters in filename backslash-quote
 | ||
| 	  table according to passed string argument
 | ||
| 	- call set_filename_bstab every time rl_filename_quote_characters is
 | ||
| 	  assigned a value
 | ||
| 	- bash_quote_filename: call sh_backslash_quote with filename_bstab
 | ||
| 	  as second argument.  This allows other characters in filenames to
 | ||
| 	  be quoted without quoting, for instance, a dollar sign in a shell
 | ||
| 	  variable reference
 | ||
| 
 | ||
| 				    9/8
 | ||
| 				    ---
 | ||
| bashline.c
 | ||
| 	- complete_fullquote: new variable, controls table passed to
 | ||
| 	  sh_backslash_quote.  If non-zero (the default), the standard set
 | ||
| 	  of shell metacharacters -- as in bash versions up to and including
 | ||
| 	  bash-4.2 -- gets backslash-quoted by the completion code.  If zero,
 | ||
| 	  sh_backslash_quote gets the table with the characters in the
 | ||
| 	  variable reference removed, which means they are removed from the
 | ||
| 	  set of characters to be quoted in filenames
 | ||
| 
 | ||
| 				   9/10
 | ||
| 				   ----
 | ||
| bashline.c
 | ||
| 	- bash_filename_stat_hook: new function, designed to expand variable
 | ||
| 	  references in filenames before readline passes them to stat(2)
 | ||
| 	  to determine whether or not they are a directory
 | ||
| 
 | ||
| 				   9/15
 | ||
| 				   ----
 | ||
| builtins/declare.def
 | ||
| 	- if assign_array_element fails due to a bad (or empty) subscript, mark
 | ||
| 	  it as an assignment error and don't attempt any further processing
 | ||
| 	  of that declaration.  Fixes segfault bug reported by Diego Augusto
 | ||
| 	  Molina <diegoaugustomolina@gmail.com>
 | ||
| 
 | ||
| 				   9/19
 | ||
| 				   ----
 | ||
| expr.c
 | ||
| 	- exppower: replace the simple exponentiation algorithm with an
 | ||
| 	  implementation of exponentiation by squaring.  Inspired by report
 | ||
| 	  from Nicolas ARGYROU <nargy@yahoo.com>
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- bash_quote_filename: check for rtext being non-null before
 | ||
| 	  dereferencing it
 | ||
| 	- set_saved_history: operate_and_get_next assumes that the previous
 | ||
| 	  line was added to the history, even when the history is stifled and
 | ||
| 	  at the max number of entries.  If it wasn't, make sure the history
 | ||
| 	  number is incremented properly.  Partial fix for bug reported by
 | ||
| 	  gregrwm <backuppc-users@whitleymott.net>
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi},lib/readline/doc/{hsuser,rluser}.texi
 | ||
| 	- minor editorial changes inspired by suggestions from
 | ||
| 	  Roger Zauner <rogerx.oss@gmail.com>
 | ||
| 
 | ||
| 				   9/20
 | ||
| 				   ----
 | ||
| lib/intl/localealias.c
 | ||
| 	- read_alias_file: close resource leak (fp) when returning on error
 | ||
| 
 | ||
| 				   9/22
 | ||
| 				   ----
 | ||
| execute_command.c
 | ||
| 	- execute_intern_function: implement Posix interpretation 383 by making
 | ||
| 	  it an error to define a function with the same name as a special
 | ||
| 	  builtin when in Posix mode.
 | ||
| 	  http://austingroupbugs.net/view.php?id=383#c692
 | ||
| 
 | ||
| 				   9/25
 | ||
| 				   ----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- formatting and some content changes from Benno Schulenberg
 | ||
| 	  <bensberg@justemail.net>
 | ||
| 	- document new posix-mode behavior from interp 383 change of 9/22
 | ||
| 
 | ||
| 				   9/30
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- shell_execve: add strerror to error message about executable file
 | ||
| 	  that shell can't execute as a shell script.  From suggestion by
 | ||
| 	  daysleeper <daysleeper@centrum.cz>
 | ||
| 
 | ||
| 				   10/1
 | ||
| 				   ----
 | ||
| bashhist.c
 | ||
| 	- maybe_add_history: act as if literal_history is set when parser_state
 | ||
| 	  includes PST_HEREDOC, so we save the bodies of here-documents just
 | ||
| 	  as they were entered.  Fixes bug reported by Jonathan Wakely
 | ||
| 	  <bugs@kayari.org>
 | ||
| 	- bash_add_history: make sure that the second and subsequent lines of
 | ||
| 	  a here document don't have extra newlines or other delimiting
 | ||
| 	  chars added, since they have the trailing newline preserved, when
 | ||
| 	  `lithist' is set and history_delimiting_chars isn't called
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_command_internal: avoid fd exhaustion caused by using
 | ||
| 	  process substitution in loops inside shell functions by using
 | ||
| 	  copy_fifo_list and close_new_fifos ().  Fixes debian bash bug
 | ||
| 	  642504
 | ||
| 
 | ||
| lib/readline/complete.c
 | ||
| 	- new variable, rl_filename_stat_hook, used by append_to_match.  If
 | ||
| 	  filename completion is desired, and rl_filename_stat_hook points
 | ||
| 	  to a function, call that function to expand the filename in an
 | ||
| 	  application-specific way before calling stat.
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- bash_default_completion: if variable completion returns a single
 | ||
| 	  match, use bash_filename_stat_hook and file_isdir to determine
 | ||
| 	  whether or not the variable name expands to a directory.  If it
 | ||
| 	  does, set the filename_append_character to `/'.  This is not
 | ||
| 	  perfect, so we will see how it works out.  Adds functionality
 | ||
| 	  requested by Peter Toft <pto@linuxbog.dk> and Patrick Pfeifer
 | ||
| 	  <patrick@pfeifer.de>
 | ||
| 	- rl_filename_stat_hook: assigned bash_filename_stat_hook, so things
 | ||
| 	  like $HOME/Downloads (after completion) have a slash appended.
 | ||
| 	  In general, this causes the stat hook to be called whenever
 | ||
| 	  filename completion is appended.  Adds functionality requested by
 | ||
| 	  Patrick Pfeifer <patrick@pfeifer.de>
 | ||
| 
 | ||
| lib/readline/readline.h
 | ||
| 	- new extern declaration for rl_filename_stat_hook
 | ||
| 
 | ||
| lib/readline/doc/rltech.texi
 | ||
| 	- rl_directory_rewrite_hook: now documented
 | ||
| 	- rl_filename_stat_hook: document
 | ||
| 
 | ||
| pcomplete.c
 | ||
| 	- gen_action_completions: in the CA_DIRECTORY case, turn off
 | ||
| 	  rl_filename_completion_desired if it was off before we called
 | ||
| 	  rl_filename_completion_function and we didn't get any matches.
 | ||
| 	  Having it on causes readline to quote the matches as if they
 | ||
| 	  were filenames.  Adds functionality requested by many,
 | ||
| 	  including Clark Wang <dearvoid@gmail.com>
 | ||
| 
 | ||
| assoc.[ch]
 | ||
| 	- assoc_replace: new function, takes the same arguments as
 | ||
| 	  assoc_insert, but returns the old data instead of freeing it
 | ||
| 	- assoc_insert: if the object returned by hash_insert doesn't have
 | ||
| 	  the same value for its key as the key passed as an argument, we
 | ||
| 	  are overwriting an existing value.  In this case, we can free the
 | ||
| 	  key.  Fixes bug reported by David Parks <davidparks21@yahoo.com>
 | ||
| 
 | ||
| 				   10/5
 | ||
| 				   ----
 | ||
| print_cmd.c
 | ||
| 	- indirection_level_string: small change to only re-enable `x'
 | ||
| 	  option after calling decode_prompt_string if it was on before.  In
 | ||
| 	  normal mode, it will be, but John Reiser <jreiser@bitwagon.com>
 | ||
| 	  has a novel use for that code in conjunction with a pre-loaded
 | ||
| 	  shared library that traces system call usage in shell scripts
 | ||
| 
 | ||
| 				   10/10
 | ||
| 				   -----
 | ||
| Makefile.in
 | ||
| 	- Fix from Mike Frysinger <vapier@gentoo.org> to avoid trying to
 | ||
| 	  build y.tab.c and y.tab.h with two separate runs of yacc if
 | ||
| 	  parse.y changes.  Problem with parallel makes
 | ||
| 	- Fix from Mike Frysinger <vapier@gentoo.org> to avoid subdirectory
 | ||
| 	  builds each trying to make version.h (and all its dependencies)
 | ||
| 
 | ||
| lib/sh/Makefile.in
 | ||
| 	- remove some dependencies on version.h where it doesn't make sense
 | ||
| 
 | ||
| variables.c
 | ||
| 	- initialize_shell_variables: while reading the environment, a shell
 | ||
| 	  running in posix mode now checks for SHELLOPTS being readonly (it
 | ||
| 	  gets set early on in main()) before trying to assign to it.  It
 | ||
| 	  saves an error message and the variable gets parsed as it should.
 | ||
| 	  Fixes bug reported by Len Giambrone <Len.Giambrone@intersystems.com>
 | ||
| 
 | ||
| 				   10/14
 | ||
| 				   -----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- add to the "duplicating file descriptors" description that >&word
 | ||
| 	  doesn't redirect stdout and stderr if word expands to `-'
 | ||
| 	- add to the "appending standard output and standard error"
 | ||
| 	  description a note that >&word, where word is a number or `-',
 | ||
| 	  causes other redirection operators to apply for sh and Posix
 | ||
| 	  compatibility reasons.  Suggested by Greg Wooledge
 | ||
| 	  <wooledg@eeg.ccf.org>
 | ||
| 
 | ||
| 				   10/15
 | ||
| 				   -----
 | ||
| pcomplete.c
 | ||
| 	- change pcomp_filename_completion_function to only run the filename
 | ||
| 	  dequoting function in the cases (as best as it can figure) where
 | ||
| 	  readline won't do it via rl_filename_completion_function.  Based
 | ||
| 	  on reports from <lolilolicon@gmail.com>
 | ||
| 
 | ||
| 				   10/19
 | ||
| 				   -----
 | ||
| bashline.c
 | ||
| 	- attempt_shell_completion: add call to set_directory_hook() to make
 | ||
| 	  sure the rewrite functions are correct.  It's cheap and doesn't
 | ||
| 	  hurt
 | ||
| 	- command_word_completion_function: if completing a command name that
 | ||
| 	  starts with `.' or `..', temporarily suppress the effects of the
 | ||
| 	  `direxpand' option and restore the correct value after calling
 | ||
| 	  rl_filename_completion_function.  If it's enabled, the directory
 | ||
| 	  name will be rewritten and no longer match `./' or `../'.  Fixes
 | ||
| 	  problem reported by Michael Kalisz <michael@kalisz.homelinux.net>
 | ||
| 
 | ||
| 				   10/22
 | ||
| 				   -----
 | ||
| builtins/history.def
 | ||
| 	- push_history: make sure remember_on_history is enabled before we
 | ||
| 	  try to delete the last history entry -- the `history -s' command
 | ||
| 	  might not have been saved.  Fixes bug reported by
 | ||
| 	  lester@vmw-les.eng.vmware.com
 | ||
| 
 | ||
| lib/readline/complete.c
 | ||
| 	- rl_callback_read_char: add calls to a macro CALLBACK_READ_RETURN
 | ||
| 	  instead of straight return; add same call at end of function.
 | ||
| 	  Placeholder for future work in deinstalling signal handlers when
 | ||
| 	  readline is not active
 | ||
| 
 | ||
| 				   10/25
 | ||
| 				   -----
 | ||
| expr.c
 | ||
| 	- exp2: catch arithmetic overflow when val1 == INTMAX_MIN and val2 == -1
 | ||
| 	  for DIV and MOD and avoid SIGFPE.  Bug report and pointer to fix
 | ||
| 	  from Jaak Ristioja <jaak.ristioja@cyber.ee>
 | ||
| 	- expassign: same changes for arithmetic overflow for DIV and MOD
 | ||
| 
 | ||
| 				   10/28
 | ||
| 				   -----
 | ||
| subst.c
 | ||
| 	- parameter_brace_expand: allow pattern substitution when there is an
 | ||
| 	  expansion of the form ${var/} as a no-op: replacing nothing with
 | ||
| 	  nothing
 | ||
| 	- parameter_brace_patsub: don't need to check for PATSUB being NULL;
 | ||
| 	  it never is
 | ||
| 
 | ||
| flags.c
 | ||
| 	- if STRICT_POSIX is defined, initialize history_expansion to 0, since
 | ||
| 	  history expansion (and its treatment of ! within double quotes) is
 | ||
| 	  not a conforming posix environment.  From austin-group issue 500
 | ||
| 
 | ||
| lib/readline/histexpand.c
 | ||
| 	- history_expand: when processing a string within double quotes
 | ||
| 	  (DQUOTE == 1), make the closing double quote inhibit history
 | ||
| 	  expansion, as if the word were outside double quotes.  In effect,
 | ||
| 	  we assume that the double quote is followed by a character in
 | ||
| 	  history_no_expand_chars.  tcsh and csh seem to do this.  This
 | ||
| 	  answers a persistent complaint about history expansion
 | ||
| 
 | ||
| 				   10/29
 | ||
| 				   -----
 | ||
| make_cmd.c
 | ||
| 	- make_arith_for_command: use skip_to_delim to find the next `;'
 | ||
| 	  when breaking the string between the double parens into three
 | ||
| 	  separate components instead of a simple character loop.  Fixes
 | ||
| 	  bug reported by Dan Douglas <ormaaj@gmail.com>
 | ||
| 
 | ||
| 				   11/2
 | ||
| 				   ----
 | ||
| Makefile.in
 | ||
| 	- make libbuiltins.a depend on builtext.h to serialize its creation
 | ||
| 	  and avoid conflict between multiple invocations of mkbuiltins.
 | ||
| 	  Fix from Mike Frysinger <vapier@gentoo.org>
 | ||
| 
 | ||
| 				   11/5
 | ||
| 				   ----
 | ||
| findcmd.c
 | ||
| 	- user_command_matches: if stat(".", ...) returns -1, set st_dev
 | ||
| 	  and st_ino fields in dotinfo to 0 to avoid same_file matches
 | ||
| 	- find_user_command_in_path: check stat(2) return the same way
 | ||
| 
 | ||
| lib/glob/glob.c
 | ||
| 	- glob_vector: don't call strlen(pat) without checking pat == 0
 | ||
| 	- glob_dir_to_array: make sure to free `result' and all allocated
 | ||
| 	  members before returning error due to malloc failure
 | ||
| 	- glob_vector: make sure to free `nextname' and `npat' on errors
 | ||
| 	  (mostly when setting lose = 1)
 | ||
| 	- glob_vector: if flags & GX_MATCHDIRS but not GX_ALLDIRS, make
 | ||
| 	  sure we free `subdir'
 | ||
| 	- glob_filename: when expanding ** (GX_ALLDIRS), make sure we
 | ||
| 	  free temp_results (return value from glob_vector)
 | ||
| 
 | ||
| lib/glob/xmbsrtowcs.c
 | ||
| 	- xdupmbstowcs: fix call to realloc to use sizeof (char *) instead
 | ||
| 	  of sizeof (char **) when assigning idxtmp
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- print_index_and_element: return 0 right away if L == 0
 | ||
| 	- is_dirname: fix memory leak by freeing `temp'
 | ||
| 	- time_command: don't try to deref NULL `command' when assigning
 | ||
| 	  to `posix_time'
 | ||
| 	- shell_execve: null-terminate `sample' after READ_SAMPLE_BUF so it's
 | ||
| 	  terminated for functions that expect that
 | ||
| 
 | ||
| builtins/read.def
 | ||
| 	- read_builtin: don't call bind_read_variable with a potentially-null
 | ||
| 	  string
 | ||
| 
 | ||
| pcomplete.c
 | ||
| 	- gen_command_matches: don't call dispose_word_desc with a NULL arg
 | ||
| 	- gen_compspec_completions: fix memory leak by freeing `ret' before
 | ||
| 	  calling gen_action_completions (tcs, ...).  happens when
 | ||
| 	  performing directory completion as default and no completions
 | ||
| 	  have been generated
 | ||
| 	- gen_progcomp_completions: make sure to set foundp to 0 whenever
 | ||
| 	  returning NULL
 | ||
| 	- it_init_aliases: fix memory leak by freeing alias_list before
 | ||
| 	  returning
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- command_word_completion_function: don't call restore_tilde with a
 | ||
| 	  NULL directory_part argument
 | ||
| 	- bash_directory_expansion: bugfix: don't throw away results of
 | ||
| 	  rl_directory_rewrite_hook if it's set and returns non-zero
 | ||
| 	- bind_keyseq_to_unix_command: free `kseq' before returning error
 | ||
| 
 | ||
| arrayfunc.c
 | ||
| 	- assign_array_element_internal: make sure `akey' is freed if non-null
 | ||
| 	  before returning error
 | ||
| 	- assign_compound_array_list: free `akey' before returning error
 | ||
| 	- array_value_internal: free `akey' before returning error
 | ||
| 	- unbind_array_element: free `akey' before returning error
 | ||
| 
 | ||
| subst.c
 | ||
| 	- array_length_reference: free `akey' before returning error in case
 | ||
| 	  of expand_assignment_string_to_string error
 | ||
| 	- array_length_reference: free `akey' after call to assoc_reference
 | ||
| 	- skip_to_delim: if skipping process and command substitution, free
 | ||
| 	  return value from extract_process_subst
 | ||
| 	- parameter_brace_substring: free `val' (vtype == VT_VARIABLE) before
 | ||
| 	  returning if verify_substring_values fails
 | ||
| 	- parameter_brace_expand: remove two duplicate lines that allocate
 | ||
| 	  ret in parameter_brace_substring case
 | ||
| 	- parameter_brace_expand: convert `free (name); name = xmalloc (...)'
 | ||
| 	  to use `xrealloc (name, ...)'
 | ||
| 	- parameter_brace_expand: free `name' before returning when handling
 | ||
| 	  ${!PREFIX*} expansion
 | ||
| 	- split_at_delims: fix memory leak by freeing `d2' before returning
 | ||
| 
 | ||
| redir.c
 | ||
| 	- redirection_error: free `filename' if the redirection operator is
 | ||
| 	  REDIR_VARASSIGN by assigning allocname
 | ||
| 
 | ||
| eval.c
 | ||
| 	- send_pwd_to_eterm: fix memory leak by freeing value returned by
 | ||
| 	  get_working_directory()
 | ||
| 
 | ||
| builtins/cd.def
 | ||
| 	- change_to_directory: fix memory leak by freeing return value from
 | ||
| 	  resetpwd()
 | ||
| 	- cd_builtin: fix memory leak by freeing value returned by dirspell()
 | ||
| 	- cd_builtin: fix memory leak by freeing `directory' if appropriate
 | ||
| 	  before overwriting with return value from resetpwd()
 | ||
| 
 | ||
| builtins/type.def
 | ||
| 	- describe_command: free `full_path' before overwriting it with return
 | ||
| 	  value from sh_makepath
 | ||
| 
 | ||
| builtins/complete.def
 | ||
| 	- compgen_builtin: fix memory leak by calling strlist_dispose (sl)
 | ||
| 	  before overwriting sl with return value from completions_to_stringlist
 | ||
| 
 | ||
| builtins/hash.def
 | ||
| 	- list_hashed_filename_targets: fix memory leak by freeing `target'
 | ||
| 
 | ||
| make_cmd.c
 | ||
| 	- make_arith_for_command: free `init', `test', and `step' before
 | ||
| 	  returning error on parse error
 | ||
| 
 | ||
| jobs.c
 | ||
| 	- initialize_job_control: don't call move_to_high_fd if shell_tty == -1
 | ||
| 
 | ||
| general.c
 | ||
| 	- check_dev_tty: don't call close with an fd < 0
 | ||
| 	- legal_number: deal with NULL `string' argument, return invalid
 | ||
| 
 | ||
| lib/sh/fmtulong.c
 | ||
| 	- fmtulong: if the `base' argument is invalid, make sure we index
 | ||
| 	  buf by `len-1' at maximum
 | ||
| 
 | ||
| print_cmd.c
 | ||
| 	- print_deferred_heredocs: don't try to dereference a NULL `cstring'
 | ||
| 	- cprintf: make sure to call va_end (args)
 | ||
| 
 | ||
| variables.c
 | ||
| 	- push_dollar_vars: fix call to xrealloc to use sizeof (WORD_LIST *)
 | ||
| 	  instead of sizeof (WORD_LIST **)
 | ||
| 
 | ||
| lib/sh/zmapfd.c
 | ||
| 	- zmapfd: if read returns error, free result and return -1 immediately
 | ||
| 	  instead of trying to reallocate it
 | ||
| 
 | ||
| 				   11/6
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- cpl_reap: rewrote to avoid using pointer after freeing it; now builds
 | ||
| 	  new coproc list on the fly while traversing the old one and sets the
 | ||
| 	  right values for coproc_list when done
 | ||
| 
 | ||
| 				   11/12
 | ||
| 				   -----
 | ||
| builtins/set.def
 | ||
| 	- if neither -f nor -v supplied, don't allow a readonly function to
 | ||
| 	  be implicitly unset.  Fixes bug reported by Jens Schmidt
 | ||
| 	  <jens.schmidt35@arcor.de>
 | ||
| 
 | ||
| lib/readline/callback.c
 | ||
| 	- change CALLBACK_READ_RETURN to clear signal handlers before returning
 | ||
| 	  from rl_callback_read_char so readline's signal handlers aren't
 | ||
| 	  installed when readline doesn't have control.  Idea from Jan
 | ||
| 	  Kratochvil <jan.ktratochvil@redhat.com> and the GDB development
 | ||
| 	  team
 | ||
| 
 | ||
| pcomplete.h
 | ||
| 	- COPT_NOQUOTE: new complete/compgen option value
 | ||
| 
 | ||
| builtins/complete.def
 | ||
| 	- noquote: new complete/compgen option; will be used to disable
 | ||
| 	  filename completion quoting
 | ||
| 
 | ||
| pcomplete.c
 | ||
| 	- pcomp_set_readline_variables: pay attention to COPT_NOQUOTE; turns
 | ||
| 	  of rl_filename_quoting_desired if set; turns it on if unset (value
 | ||
| 	  is inverted, since default is on)
 | ||
| 
 | ||
| doc/bash.1,lib/readline/doc/rluser.texi
 | ||
| 	- document new -o noquote option to complete/compgen/compopt
 | ||
| 
 | ||
| pathexp.c
 | ||
| 	- quote_string_for_globbing: if QGLOB_REGEXP, make sure characters
 | ||
| 	  between brackets in an ERE bracket expression are not inappropriately
 | ||
| 	  quoted with backslashes.  This is a pretty substantial change,
 | ||
| 	  should be stressed when opening bash up for alpha and beta tests.
 | ||
| 	  Fixes bug pointed out by Stephane Chazleas
 | ||
| 	  <stephane_chazelas@yahoo.fr>
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- document that regexp matches can be inconsistent when quoting
 | ||
| 	  characters in bracket expressions, since usual quoting characters
 | ||
| 	  lose their meaning within brackets
 | ||
| 	- note that regular expression matching when the pattern is stored
 | ||
| 	  in a shell variable which is quoted for expansion causes string
 | ||
| 	  matching
 | ||
| 
 | ||
| redir.h
 | ||
| 	- RX_SAVEFD: new flag value; notes that a redirection denotes an
 | ||
| 	  fd used to save another even if it's not >= SHELL_FD_BASE
 | ||
| 
 | ||
| redir.c
 | ||
| 	- do_redirection_internal: when deciding whether or not to reset the
 | ||
| 	  close-on-exec flag on a restored file descriptor, trust the value
 | ||
| 	  of redirect->flags & RX_SAVCLEXEC even if the fd is < SHELL_FD_BASE
 | ||
| 	  if the RX_SAVEFD flag is set
 | ||
| 	- add_undo_redirect: set the RX_SAVEFD flag if the file descriptor
 | ||
| 	  limit is such that the shell can't duplicate to a file descriptor
 | ||
| 	  >= 10.  Fixes a limitation that tripped a coreutils test reported
 | ||
| 	  by Paul Eggert <eggert@cs.ucla.edu>
 | ||
| 
 | ||
| 				   11/19
 | ||
| 				   -----
 | ||
| doc/{bash.1,bashref.texi},lib/readline/doc/hsuser.texi
 | ||
| 	- make it clear that bash runs HISTFILESIZE=$HISTSIZE after reading
 | ||
| 	  the startup files
 | ||
| 	- make it clear that bash runs HISTSIZE=500 after reading the
 | ||
| 	  startup files
 | ||
| 	- make it clear that setting HISTSIZE=0 causes commands to not be
 | ||
| 	  saved in the history list
 | ||
| 	- make it clear that setting HISTFILESIZE=0 causes the history file
 | ||
| 	  to be truncated to zero size
 | ||
| 
 | ||
| variables.c
 | ||
| 	- sv_histsize: change so setting HISTSIZE to a value less than 0
 | ||
| 	  causes the history to be `unstifled'
 | ||
| 	- sv_histsize: change so setting HISTFILESIZE to a value less than 0
 | ||
| 	  results in no file truncation
 | ||
| 	- make it clear that numeric values less than 0 for HISTFILESIZE or
 | ||
| 	  HISTSIZE inhibit the usual functions
 | ||
| 
 | ||
| 				   11/23
 | ||
| 				   -----
 | ||
| parse.y
 | ||
| 	- save_input_line_state: add missing `return ls' at the end, since the
 | ||
| 	  function is supposed to return its argument.  Pointed out by
 | ||
| 	  Andreas Schwab <schwab@linux-m68k.org>
 | ||
| 
 | ||
| builtins/read.def
 | ||
| 	- skip over NUL bytes in input, as most modern shells seem to.  Bug
 | ||
| 	  report by Matthew Story <matt@tablethotels.com>
 | ||
| 
 | ||
| lib/readline/vi_mode.c
 | ||
| 	- rl_vi_replace: set _rl_vi_last_key_before_insert to invoking key
 | ||
| 
 | ||
| 				   11/25
 | ||
| 				   -----
 | ||
| builtins/read.def
 | ||
| 	- read_builtin: if xrealloc returns same pointer as first argument,
 | ||
| 	  don't bother with the remove_unwind_protect/add_unwind_protect pair
 | ||
| 	- read_builtin: set a flag (`reading') around calls to zread/zreadc
 | ||
| 	  and readline()
 | ||
| 	- sigalrm: change to set flag (`sigalrm_seen') and only longjmp if
 | ||
| 	  currently in read(2) (reading != 0)
 | ||
| 	- CHECK_ALRM: new macro, checks sigalrm_seen and longjmps if non-zero,
 | ||
| 	  behavior of old SIGALRM catching function
 | ||
| 	- read_builtin: call CHECK_ALRM in appropriate places while reading
 | ||
| 	  line of input.  Fixes bug reported by Pierre Gaston
 | ||
| 	  <pierre.gaston@gmail.com>
 | ||
| 
 | ||
| lib/readline/vi_mode.c
 | ||
| 	- rl_vi_replace: initialize characters before printing characters in
 | ||
| 	  vi_replace_keymap to their default values in vi_insertion_keymap,
 | ||
| 	  since we're supposed to be in insert mode replacing characters
 | ||
| 	- rl_vi_replace: call rl_vi_start_inserting to set last command to
 | ||
| 	  `R' for undo
 | ||
| 	- rl_vi_replace: set _rl_vi_last_key_before_insert to `R' for future
 | ||
| 	  use by _rl_vi_done_inserting
 | ||
| 	- vi_save_insert_buffer: new function, broke out code that copies text
 | ||
| 	  into vi_insert_buffer from _rl_vi_save_insert
 | ||
| 	- _rl_vi_save_replace: new function, saves text modified by
 | ||
| 	  rl_vi_replace (using current point and vi_replace_count to figure
 | ||
| 	  it out) to vi_replace_buffer
 | ||
| 	- _rl_vi_save_insert: call vi_save_insert_buffer
 | ||
| 	- _rl_vi_done_inserting: if _rl_vi_last_key_before_insert == 'R', call
 | ||
| 	  _rl_vi_save_replace to save text modified in replace mode (uses
 | ||
| 	  vi_save_insert_buffer)
 | ||
| 	- _rl_vi_replace_insert: new function, replaces the number of chars
 | ||
| 	  in vi_insert_buffer after rl_point with contents ov vi_insert_buffer
 | ||
| 	- rl_vi_redo: call _rl_vi_replace_insert if last command == 'R' and
 | ||
| 	  there's something in vi_insert_buffer.  Fixes bug with `.' not
 | ||
| 	  redoing the most recent `R' command, reported by Geoff Clare
 | ||
| 	  <g.clare@opengroup.org> in readline area on savannah
 | ||
| 
 | ||
| 				   11/26
 | ||
| 				   -----
 | ||
| lib/readline/rlprivate.h
 | ||
| 	- RL_SIG_RECEIVED(): evaluate to non-zero if there is a pending signal
 | ||
| 	  to be handled
 | ||
| 	- RL_SIGINT_RECEIVED(): evaluate to non-zero if there is a pending
 | ||
| 	  SIGINT to be handled
 | ||
| 
 | ||
| lib/readline/complete.c
 | ||
| 	- remove all mention of _rl_interrupt_immediately
 | ||
| 	- rl_completion_matches: check RL_SIG_RECEIVED after each call to
 | ||
| 	  the entry function, call RL_CHECK_SIGNALS if true to handle the
 | ||
| 	  signal
 | ||
| 	- rl_completion_matches: if RL_SIG_RECEIVED evaluates to true, free
 | ||
| 	  and zero out the match_list this function allocated
 | ||
| 	- rl_completion_matches: if the completion entry function is
 | ||
| 	  rl_filename_completion_function, free the contents of match_list,
 | ||
| 	  because that function does not keep state and will not free the
 | ||
| 	  entries; avoids possible memory leak pointed out by
 | ||
| 	  Garrett Cooper <yanegomi@gmail.com>
 | ||
| 	- gen_completion_matches: if RL_SIG_RECEIVED evalutes to true after
 | ||
| 	  calling rl_attempted_completion_function, free the returned match
 | ||
| 	  list and handle the signal with RL_CHECK_SIGNALS; avoids
 | ||
| 	  possible memory leak pointed out by Garrett Cooper
 | ||
| 	  <yanegomi@gmail.com>
 | ||
| 	- gen_completion_matches: if RL_SIG_RECEIVED evaluates to true after
 | ||
| 	  calling rl_completion_matches, free the returned match list and
 | ||
| 	  handle the signal with RL_CHECK_SIGNALS
 | ||
| 
 | ||
| lib/readline/util.c
 | ||
| 	- rl_settracefp: new utility function to set the tracing FILE *
 | ||
| 
 | ||
| lib/readline/signals.c
 | ||
| 	- _rl_sigcleanup: pointer to a function that will be called with the
 | ||
| 	  signal and a void * argument from _rl_handle_signal
 | ||
| 	- _rl_sigcleanarg: void * that the rest of the code can set to have
 | ||
| 	  passed to the signal cleanup function
 | ||
| 	- _rl_handle_signal: if _rl_sigcleanup set, call as
 | ||
| 		(*_rl_sigcleanup) (sig, _rl_sigcleanarg)
 | ||
| 
 | ||
| lib/readline/rlprivate.h
 | ||
| 	- extern declarations for _rl_sigcleanup and _rl_sigcleanarg
 | ||
| 
 | ||
| lib/readline/complete.c
 | ||
| 	- _rl_complete_sigcleanup: signal cleanup function for completion code;
 | ||
| 	  calls _rl_free_match_list on _rl_sigcleanarg if signal == SIGINT
 | ||
| 	- rl_complete_internal: before calling display_matches if what_to_do
 | ||
| 	  == `?', set _rl_sigcleanup to _rl_complete_sigcleanup so the match
 | ||
| 	  list gets freed on SIGINT; avoids possible memory leak pointed out
 | ||
| 	  by Garrett Cooper <yanegomi@gmail.com>
 | ||
| 	- rl_complete_internal: in default switch case, call _rl_free_match_list
 | ||
| 	  before returning to avoid memory leak
 | ||
| 
 | ||
| doc/bashref.texi
 | ||
| 	- start at a set of examples for the =~ regular expression matching
 | ||
| 	  operator, touching on keeping the pattern in a shell variable and
 | ||
| 	  quoting portions of the pattern to remove their special meaning
 | ||
| 
 | ||
| 				   12/1
 | ||
| 				   ----
 | ||
| lib/glob/gmisc.c
 | ||
| 	- extglob_pattern: new function, returns 1 if pattern passed as an
 | ||
| 	  argument looks like an extended globbing pattern
 | ||
| 
 | ||
| lib/glob/glob.c
 | ||
| 	- skipname: return 0 immediately if extglob_pattern returns non-zero,
 | ||
| 	  let the extended globbing code do the right thing with skipping
 | ||
| 	  names beginning with a `.'
 | ||
| 	- mbskipname: return 0 immediately if extglob_pattern returns non-zero,
 | ||
| 	  let the extended globbing code do the right thing with skipping
 | ||
| 	  names beginning with a `.'.  Fixes bug reported by Yongzhi Pan
 | ||
| 	  <panyongzhi@gmail.com>
 | ||
| 
 | ||
| 				   12/2
 | ||
| 				   ----
 | ||
| lib/glob/smatch.c
 | ||
| 	- patscan, patscan_wc: no longer static so other parts of the glob
 | ||
| 	  library can use them, renamed to glob_patscan, glob_patscan_wc
 | ||
| 
 | ||
| lib/glob/glob.c
 | ||
| 	- extern declarations for glob_patscan, glob_patscan_wc
 | ||
| 	- wchkname: new function, does skipname on wchar_t pattern and dname,
 | ||
| 	  old body of mbskipname after converting to wide chars
 | ||
| 	- extglob_skipname: new function, checks all subpatterns in an extglob
 | ||
| 	  pattern to determine whether or not a filename should be skipped.
 | ||
| 	  Calls skipname for each subpattern.  Dname is only skipped if all
 | ||
| 	  subpatterns indicate it should be.  Better fix for bug reported by
 | ||
| 	  Yongzhi Pan <panyongzhi@gmail.com>
 | ||
| 	- wextglob_skipname: wide-char version of extglob_skipname, calls
 | ||
| 	  wchkname instead of calling back into mbskipname for each
 | ||
| 	  subpattern to avoid problems with char/wchar_t mismatch
 | ||
| 	- skipname: call extglob_skipname if extglob_pattern returns non-zero
 | ||
| 	- mbskipname: call wextglob_skipname if extglob_pattern returns non-zero
 | ||
| 	- mbskipname: short-circuit immediately if no multibyte chars in
 | ||
| 	  pattern or filename
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_cond_node: added parens to patmatch assignment statement to
 | ||
| 	  make intent clearer
 | ||
| 
 | ||
| 				   12/3
 | ||
| 				   ----
 | ||
| configure.in,config.h.in
 | ||
| 	- check for imaxdiv, define HAVE_IMAXDIV if present
 | ||
| 
 | ||
| expr.c
 | ||
| 	- expassign, exp2: use imaxdiv if available.  Doesn't help with checks
 | ||
| 	  for overflow from 10/25
 | ||
| 
 | ||
| 				   12/6
 | ||
| 				   ----
 | ||
| lib/readline/complete.c
 | ||
| 	- compute_lcd_of_matches: if we're ignoring case in the matches, only
 | ||
| 	  use what the user typed as the lcd if it matches the first match
 | ||
| 	  (after sorting) up to the length of what was typed (if what the
 | ||
| 	  user typed is longer than the shortest of the possible matches, use
 | ||
| 	  the shortest common length of the matches instead).  If it doesn't
 | ||
| 	  match, use the first of the list of matches, as if case were not
 | ||
| 	  being ignored.  Fixes bug reported by Clark Wang
 | ||
| 	  <dearvoid@gmail.com>
 | ||
| 
 | ||
| 				   12/7
 | ||
| 				   ----
 | ||
| builtins/cd.def
 | ||
| 	- cd_builtin: add code to return error in case cd has more than one
 | ||
| 	  non-option argument, conditional on CD_COMPLAINS define (which is
 | ||
| 	  not defined anywhere)
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- note that additional arguments to cd following the directory name
 | ||
| 	  are ignored.  Suggested by Vaclav Hanzl <hanzl@noel.feld.cvut.cz>
 | ||
| 
 | ||
| 				   12/10
 | ||
| 				   -----
 | ||
| lib/readline/input.c
 | ||
| 	- rl_read_key: don't need to increment key sequence length here; doing
 | ||
| 	  it leads to an off-by-one error
 | ||
| 
 | ||
| lib/readline/macro.c
 | ||
| 	- rl_end_kbd_macro: after off-by-one error with rl_key_sequence_length
 | ||
| 	  fixed, can decrement current_macro_index by rl_key_sequence_length
 | ||
| 	  (length of key sequence that closes keyboard macro)
 | ||
| 
 | ||
| lib/readline/readline.c
 | ||
| 	- _rl_dispatch_subseq: fix extra increment of rl_key_sequence_length
 | ||
| 	  when ESC maps to a new keymap and we're converting meta characters
 | ||
| 	  to ESC+key
 | ||
| 	- _rl_dispatch_subseq: better increment of rl_key_sequence_length
 | ||
| 	  before we dispatch to a function in the ISFUNC case (where the
 | ||
| 	  second increment above should have happened)
 | ||
| 	- rl_executing_keyseq: the full key sequence that ended up executing
 | ||
| 	  a readline command.  Available to the calling application, maintained
 | ||
| 	  by _rl_dispatch_subseq, indexed by rl_key_sequence_length
 | ||
| 	- rl_executing_key: the key that was bound to the currently-executing
 | ||
| 	  readline command.  Same as the `key' argument to the function
 | ||
| 
 | ||
| lib/readline/readline.h
 | ||
| 	- rl_executing_keyseq: extern declaration
 | ||
| 	- rl_executing_key: extern declaration
 | ||
| 	- rl_key_sequence_length: declaration moved here from rlprivate.h,
 | ||
| 	  now part of public interface
 | ||
| 
 | ||
| lib/readline/rlprivate.h
 | ||
| 	- new extern declaration for _rl_executing_keyseq_size, buffer size
 | ||
| 	  for rl_executing_keyseq
 | ||
| 
 | ||
| lib/readline/doc/rltech.texi
 | ||
| 	- documented new variables: rl_executing_key, rl_executing_keyseq,
 | ||
| 	  rl_key_sequence_length
 | ||
| 
 | ||
| 				   12/13
 | ||
| 				   -----
 | ||
| bashline.c
 | ||
| 	- bash_execute_unix_command: replace ad-hoc code that searches
 | ||
| 	  cmd_xmap for correct command with call to rl_function_of_keyseq
 | ||
| 	  using rl_executing_keyseq; now supports key sequences longer
 | ||
| 	  than two characters.  Fixes bug reported by Michael Kazior
 | ||
| 	  <kazikcz@gmail.com>
 | ||
| 
 | ||
| 				   12/15
 | ||
| 				   -----
 | ||
| make_cmd.c
 | ||
| 	- make_function_def: don't null out source_file before calling
 | ||
| 	  make_command so it can be used later on when the function definition
 | ||
| 	  is executed
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_intern_function: second argument is now FUNCTION_DEF *
 | ||
| 	  instead of COMMAND *
 | ||
| 	- execute_command_internal: call execute_intern_function with the
 | ||
| 	  new second argument (the entire FUNCTION_DEF instead of just the
 | ||
| 	  command member)
 | ||
| 	- execute_intern_function: if DEBUGGER is defined, call
 | ||
| 	  bind_function_def before calling bind_function, just like
 | ||
| 	  make_function_def does (might be able to take out the call in
 | ||
| 	  make_function_def depending on what the debugger does with it).
 | ||
| 	  Fixes bug reported by <dethrophes@motd005>
 | ||
| 
 | ||
| expr.c
 | ||
| 	- more minor changes to cases of INTMAX_MIN % -1 and INTMAX_MIN / 1;
 | ||
| 	  fix typos and logic errors
 | ||
| 
 | ||
| 				   12/16
 | ||
| 				   -----
 | ||
| bashline.c
 | ||
| 	- find_cmd_start: change flags to remove SD_NOSKIPCMD so it skips over
 | ||
| 	  command substitutions and doesn't treat them as command separators
 | ||
| 	- attempt_shell_completion: instead of taking first return from
 | ||
| 	  find_cmd_name as command name to use for programmable completion,
 | ||
| 	  use loop to skip over assignment statements.  Fixes problem reported
 | ||
| 	  by Raphael Droz <raphael.droz+floss@gmail.com>
 | ||
| 	- attempt_shell_completion: if we don't find a command name but the
 | ||
| 	  command line is non-empty, assume the other words are all assignment
 | ||
| 	  statements and flag that point is in a command position so we can
 | ||
| 	  do command name completion
 | ||
| 	- attempt_shell_completion: if the word being completed is the first
 | ||
| 	  word following a series of assignment statements, and the
 | ||
| 	  command line is non-empty, flag that point is in a command position
 | ||
| 	  so we can do command name completion
 | ||
| 
 | ||
| lib/readline/history.c
 | ||
| 	- history_get_time: atol -> strtol
 | ||
| 
 | ||
| 				   12/18
 | ||
| 				   -----
 | ||
| parse.y
 | ||
| 	- parser_in_command_position: external interface to the
 | ||
| 	  command_token_position macro for use by other parts of the shell,
 | ||
| 	  like the completion mechanism
 | ||
| 
 | ||
| externs.h
 | ||
| 	- extern declaration for parser_in_command_position
 | ||
| 
 | ||
| 				   12/19
 | ||
| 				   -----
 | ||
| 
 | ||
| builtins/read.def
 | ||
| 	- read_builtin: make sure all calls to bind_read_variable are passed
 | ||
| 	  a non-null string.  Fixes bug reported by Dan Douglas
 | ||
| 	  <ormaaj@gmail.com>
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- attempt_shell_completion: mark that we're in a command position if
 | ||
| 	  we're at the start of the line and the parser is ready to accept
 | ||
| 	  a reserved word or command name.  Feature most recently suggested
 | ||
| 	  by Peng Yu <pengyu.ut@gmail.com>
 | ||
| 
 | ||
| 				   12/21
 | ||
| 				   -----
 | ||
| lib/readline/bind.c
 | ||
| 	- _rl_escchar: return the character that would be backslash-escaped
 | ||
| 	  to denote the control character passed as an argument ('\n' -> 'n')
 | ||
| 	- _rl_isescape: return 1 if character passed is one that has a
 | ||
| 	  backslash escape
 | ||
| 	- _rl_untranslate_macro_value: new second argument: use_escapes, if
 | ||
| 	  non-zero translate to backslash escapes where possible instead of
 | ||
| 	  using straight \C-x for control character `x'.  Change callers
 | ||
| 	- _rl_untranslate_macro_value: now global
 | ||
| 
 | ||
| lib/readline/rlprivate.h
 | ||
| 	- _rl_untranslate_macro_value: extern declaration
 | ||
| 
 | ||
| lib/readline/{macro.c,readline.h}
 | ||
| 	- rl_print_last_kbd_macro: new bindable function, inspired by patch
 | ||
| 	  from Mitchel Humpherys
 | ||
| 
 | ||
| lib/readline/funmap.c
 | ||
| 	- print-last-kbd-macro: new bindable command, bound to
 | ||
| 	  rl_print_last_kbd_macro
 | ||
| 
 | ||
| lib/readline/doc/{rluser.texi,readline.3},doc/bash.1
 | ||
| 	- print-last-kbd-macro: document.
 | ||
| 
 | ||
| lib/readline/text.c
 | ||
| 	- _rl_insert_next: if we're defining a macro, make sure the key gets
 | ||
| 	  added to the macro text (should really audit calls to rl_read_key()
 | ||
| 	  and make sure the right thing is happening for all of them)
 | ||
| 
 | ||
| bashline.[ch]
 | ||
| 	- print_unix_command_map: new function, prints all bound commands in
 | ||
| 	  cmd_xmap using rl_macro_dumper in a reusable format
 | ||
| 
 | ||
| builtins/bind.def
 | ||
| 	- new -X option: print all keysequences bound to Unix commands using
 | ||
| 	  print_unix_command_map.  Feature suggested by Dennis Williamson
 | ||
| 	  (2/2011)
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- document new `bind -X' option
 | ||
| 
 | ||
| 				   12/24
 | ||
| 				   -----
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- add a couple of sentences to the description of the case modification
 | ||
| 	  operators making it clearer that each character of parameter is
 | ||
| 	  tested against the pattern, and that the pattern should only attempt
 | ||
| 	  to match a single character.  Suggested by Bill Gradwohl
 | ||
| 	  <bill@ycc.com>
 | ||
| 
 | ||
| 				   12/28
 | ||
| 				   -----
 | ||
| shell.c
 | ||
| 	- init_noninteractive: instead of calling set_job_control(0) to
 | ||
| 	  unconditionally turn off job control, turn on job control if
 | ||
| 	  forced_interactive or jobs_m_flag is set
 | ||
| 	- shell_initialize: call initialize_job_control with jobs_m_flag as
 | ||
| 	  argument so `bash -m script' enables job control while running the
 | ||
| 	  script
 | ||
| 
 | ||
| jobs.c
 | ||
| 	- initialize_job_control: if the `force' argument is non-zero, turn on
 | ||
| 	  job control even if the shell is not currently interactive
 | ||
| 	  (interactive == 0)
 | ||
| 
 | ||
| 				   12/29
 | ||
| 				   -----
 | ||
| 
 | ||
| flags.h
 | ||
| 	- new extern declaration for jobs_m_flag
 | ||
| 
 | ||
| builtins/{cd,set}.def,doc/{bash.1,bashref.texi}
 | ||
| 	- added text clarifying the descriptions of cd -L and -P, suggested by
 | ||
| 	  Padraig Brady <p@draigbrady.com>
 | ||
| 	- slight change to the description of `set -P' about resolving symbolic
 | ||
| 	  links
 | ||
| 
 | ||
| lib/readline/doc/rluser.texi
 | ||
| 	- Added an example to the programmable completion section: _comp_cd,
 | ||
| 	  a completion function for cd, with additional verbiage.  Text
 | ||
| 	  includes a reference to the bash_completion project
 | ||
| 
 | ||
| 				 1/1/2012
 | ||
| 				 --------
 | ||
| jobs.c
 | ||
| 	- set_job_status_and_cleanup: note that a job is stopped due to
 | ||
| 	  SIGTSTP (any_tstped) if job_control is set; there's no need to
 | ||
| 	  test interactive
 | ||
| 
 | ||
| 				    1/5
 | ||
| 				    ---
 | ||
| quit.h
 | ||
| 	- LASTSIG(): new macro, expands to signal number of last terminating
 | ||
| 	  signal received (terminating_signal or SIGINT)
 | ||
| 
 | ||
| trap.c
 | ||
| 	- first_pending_trap: returns lowest signal number with a trap pending
 | ||
| 	- trapped_signal_received: set to the last trapped signal the shell
 | ||
| 	  received in trap_handler(); reset to 0 in run_pending_traps
 | ||
| 
 | ||
| builtins/read.def
 | ||
| 	- read_builtin: changes to posix-mode (posixly_correct != 0) to make
 | ||
| 	  `read' interruptible by a trapped signal.  After the trap runs,
 | ||
| 	  read returns 128+sig and does not assign the partially-read line
 | ||
| 	  to the named variable(s).  From an austin-group discussion started
 | ||
| 	  by David Korn
 | ||
| 
 | ||
| 				   1/11
 | ||
| 				   ----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- slight changes to the descriptions of the compat32 and compat40 shell
 | ||
| 	  options to clarify their meaning
 | ||
| 
 | ||
| 				   1/12
 | ||
| 				   ----
 | ||
| lib/readline/{colors.[ch],parse-colors.[ch]}
 | ||
| 	- new files, part of color infrastructure support
 | ||
| 
 | ||
| Makefile.in,lib/readline/Makefile.in
 | ||
| 	- arrange to have colors.o and parse-colors.o added to readline
 | ||
| 	  library
 | ||
| 
 | ||
| {configure,config.h}.in
 | ||
| 	- check for stdbool.h, define HAVE_STDBOOL_H if found
 | ||
| 
 | ||
| 				   1/14
 | ||
| 				   ----
 | ||
| lib/readline/bind.c
 | ||
| 	- colored_stats: new bindable variable, enables using colors to
 | ||
| 	  indicate file type when listing completions
 | ||
| 
 | ||
| lib/readline/complete.c
 | ||
| 	- _rl_colored_stats: new variable, controlled by colored-stats bindable
 | ||
| 	  variable
 | ||
| 	- colored_stat_start, colored_stat_end: new functions to set and reset
 | ||
| 	  the terminal color appropriately depending on the type of the
 | ||
| 	  filename to be printed
 | ||
| 	- print_filename: changes to print colors if `colored-stats' variable
 | ||
| 	  set.  Changes contributed by Raphael Droz
 | ||
| 	  <raphael.droz+floss@gmail.com>
 | ||
| 
 | ||
| lib/readline/readline.c
 | ||
| 	- rl_initialize_everything: add call to _rl_parse_colors to parse
 | ||
| 	  color values out of $LS_COLORS.  May have to add to rl_initialize
 | ||
| 	  to make more dynamic if LS_COLORS changes (which doesn't happen
 | ||
| 	  very often, if at all)
 | ||
| 
 | ||
| lib/readline/rlprivate.h
 | ||
| 	- _rl_colored_stats: new extern declaration
 | ||
| 
 | ||
| lib/readline/doc/{readline.3,rluser.texi},doc/bash.1
 | ||
| 	- colored-stats: document new bindable readline variable
 | ||
| 
 | ||
| lib/readline/colors.c
 | ||
| 	- _rl_print_color_indicator: call rl_filename_stat_hook before calling
 | ||
| 	  lstat/stat so we can get color indicators for stuff like
 | ||
| 	  $HOME/Applications
 | ||
| 
 | ||
| lib/readline/complete.c
 | ||
| 	- stat_char: call rl_filename_stat_hook before calling lstat/stat
 | ||
| 
 | ||
| findcmd.[ch],execute_cmd.c
 | ||
| 	- search_for_command: now takes a second `flags' argument; changed
 | ||
| 	  header function prototype and callers
 | ||
| 	- search_for_command: if (flags & 1), put the command found in $PATH
 | ||
| 	  into the command hash table (previous default behavior)
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- is_dirname: call search_for_command with flags argument of 0 so it
 | ||
| 	  doesn't try to put something in the command hash table
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- bash_command_name_stat_hook: a hook function for readline's
 | ||
| 	  filename_stat_hook that does $PATH searching the same way that
 | ||
| 	  execute_cmd.c:execute_disk_command() does it, and rewrites the
 | ||
| 	  passed filename if found.  Does not put names into command hash
 | ||
| 	  table.  This allows command name completion to take advantage
 | ||
| 	  of `visible-stats' and `colored-stats' settings.
 | ||
| 	- executable_completion: new function, calls the directory completion
 | ||
| 	  hook to expand the filename before calling executable_file or
 | ||
| 	  executable_or_directory; change command_word_completion_function to
 | ||
| 	  call executable_completion.  This allows $HOME/bin/[TAB] to do
 | ||
| 	  command completion and display alternatives
 | ||
| 
 | ||
| 				   1/17
 | ||
| 				   ----
 | ||
| pcomplete.c
 | ||
| 	- gen_command_matches: now takes a new second argument: the command
 | ||
| 	  name as deciphered by the programmable completion code and used
 | ||
| 	  to look up the compspec; changed callers (gen_compspec_completions)
 | ||
| 	- gen_shell_function_matches: now takes a new second argument: the
 | ||
| 	  command that originally caused the completion function to be
 | ||
| 	  invoked; changed callers (gen_compspec_completions))
 | ||
| 	- build_arg_list: now takes a new second argument: the command name
 | ||
| 	  corresponding to the current compspec; changed callers
 | ||
| 	  (gen_command_matches, gen_shell_function_matches)
 | ||
| 	- build_arg_list: now uses `cmd' argument to create $1 passed to
 | ||
| 	  invoked command or shell function
 | ||
| 	- gen_compspec_completions: if we skipped a null command at the
 | ||
| 	  beginning of the line (e.g., for completing `>'), add a new word for
 | ||
| 	  it at the beginning of the word list and increment nw and cw
 | ||
| 	  appropriately.  This is all a partial fix for the shortcoming
 | ||
| 	  pointed out by Sung Pae <sungpae@gmail.com>
 | ||
| 
 | ||
| 				   1/18
 | ||
| 				   ----
 | ||
| 
 | ||
| {configure,config.h}.in
 | ||
| 	- new check: check for AUDIT_USER_TTY defined in <linux/audit.h>,
 | ||
| 	  define HAVE_DECL_AUDIT_USER_TTY if both are found
 | ||
| 
 | ||
| lib/readline/rlconf.h
 | ||
| 	- ENABLE_TTY_AUDIT_SUPPORT: new define, allows use of the Linux kernel
 | ||
| 	  tty auditing system if it's available and enabled
 | ||
| 
 | ||
| lib/readline/util.c
 | ||
| 	- _rl_audit_tty: new function, send a string to the kernel tty audit
 | ||
| 	  system
 | ||
| 
 | ||
| lib/readline/rlprivate.h
 | ||
| 	- _rl_audit_tty: new extern declaration
 | ||
| 
 | ||
| lib/readline/readline.c
 | ||
| 	- readline: call _rl_audit_tty with line to be returned before returning
 | ||
| 	  it if the Linux tty audit system is available and it's been enabled
 | ||
| 	  in rlconf.h  Original patch from Miroslav Trmac; recent request
 | ||
| 	  from Miroslav Lichvar <mlichvar@redhat.com>
 | ||
| 
 | ||
| 				   1/21
 | ||
| 				   ----
 | ||
| 
 | ||
| lib/readline/readline.c:
 | ||
| 	- _rl_dispatch_subseq: add an inter-character timeout for multi-char
 | ||
| 	  key sequences.  Suggested by <rogerx.oss@gmail.com>.  Still needs
 | ||
| 	  work to make a user-settable variable
 | ||
| 
 | ||
| parse.y
 | ||
| 	- shell_getc: make code that uses the pop_alias dependent on ALIAS
 | ||
| 	  define
 | ||
| 
 | ||
| variables.h
 | ||
| 	- sv_tz: extern define should only depend on HAVE_TZSET
 | ||
| 
 | ||
| expr.c
 | ||
| 	- expr_streval: if ARRAY_VARS is not defined, set lvalue->ind to -1;
 | ||
| 	  move assignment to `ind' inside define
 | ||
| 	- expr_bind_array_element: declaration and uses need to be #ifdef
 | ||
| 	  ARRAY_VARS
 | ||
| 
 | ||
| arrayfunc.h
 | ||
| 	- AV_ALLOWALL, AV_QUOTED, AV_USEIND: define to 0 if ARRAY_VARS not
 | ||
| 	  defined; used in subst.c unconditionally
 | ||
| 
 | ||
| sig.h
 | ||
| 	- make the signal blocking functions not dependent on JOB_CONTROL
 | ||
| 
 | ||
| sig.c
 | ||
| 	- sigprocmask: make the replacement definition not dependent on
 | ||
| 	  JOB_CONTROL
 | ||
| 
 | ||
| trap.c
 | ||
| 	- use BLOCK_SIGNAL/UNBLOCK_SIGNAL instead of code dependent on
 | ||
| 	  HAVE_POSIX_SIGNALS and BSD signals
 | ||
| 
 | ||
| 				   1/24
 | ||
| 				   ----
 | ||
| 
 | ||
| print_cmd.c
 | ||
| 	- print_redirection_list: change the conditions under which
 | ||
| 	  r_duplicating_output_word is mapped to r_err_and_out to more or
 | ||
| 	  less match those used in redir.c.  Fixes bug pointed out by
 | ||
| 	  Dan Douglas <ormaaj@gmail.com>
 | ||
| 
 | ||
| 
 | ||
| 				   1/29
 | ||
| 				   ----
 | ||
| lib/readline/signals.c
 | ||
| 	- _rl_block_sigwinch,_rl_release_sigwinch: don't compile in bodies
 | ||
| 	  unless SIGWINCH is defined.  Fixes bug reported by Pierre Muller
 | ||
| 	  <pierre.muller@ics-cnrs.unistra.fr>
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- small modifications to the introduction to the REDIRECTION section
 | ||
| 	  to describe how redirections can modify file handles
 | ||
| 	- small modification to the section describing base#n to make it
 | ||
| 	  clearer that n can be denoted using non-numerics.  From a posting
 | ||
| 	  by Linda Walsh <bash@tlinx.org>
 | ||
| 
 | ||
| 				    2/2
 | ||
| 				    ---
 | ||
| builtins/printf.def
 | ||
| 	- printf_builtin: make sure vbuf is intialized and non-null when -v
 | ||
| 	  is supplied, since other parts of the code assume that it's not
 | ||
| 	  null (e.g., bind_printf_variable()).  Fixes bug reported by Jim
 | ||
| 	  Avera <james_avera@yahoo.com>
 | ||
| 
 | ||
| 				    2/4
 | ||
| 				    ---
 | ||
| lib/readline/undo.c
 | ||
| 	- _rl_free_undo_list: new function, old body of rl_free_undo_list,
 | ||
| 	  frees undo entries in UNDO_LIST * passed as argument
 | ||
| 	- rl_free_undo_list: call _rl_free_undo_list
 | ||
| 
 | ||
| lib/readline/rlprivate.h
 | ||
| 	- _rl_free_undo_list: new extern declaration
 | ||
| 	- _rl_keyseq_timeout: new extern declaration (see below)
 | ||
| 
 | ||
| lib/readline/misc.c
 | ||
| 	- rl_clear_history: new function.  Clears the history list and frees
 | ||
| 	  all associated data similar to history.c:clear_history(), but
 | ||
| 	  takes rl_undo_list into account and frees and UNDO_LISTs saved as
 | ||
| 	  `data' members of a history list entry
 | ||
| 
 | ||
| lib/readline/doc/rltech.texi
 | ||
| 	- rl_clear_history: documented
 | ||
| 
 | ||
| lib/readline/readline.c
 | ||
| 	- _rl_keyseq_timeout: new variable to hold intra-key timeout value
 | ||
| 	  from 1/21 fix; specified in milliseconds.  Default value is 500
 | ||
| 	- _rl_dispatch_subseq: change to use _rl_keyseq_timeout as intra-key
 | ||
| 	  timeout if it's greater than 0; no timeout if <= 0
 | ||
| 	- _rl_dispatch_subseq: don't check for queued keyboard input if we have
 | ||
| 	  pushed or pending input, or if we're reading input from a macro
 | ||
| 
 | ||
| lib/readline/bind.c
 | ||
| 	- keyseq-timeout: new bindable variable, shadows _rl_keyseq_timeout
 | ||
| 	- string_varlist: add keyseq-timeout
 | ||
| 	- sv_seqtimeout: new function to modify value of _rl_keyseq_timeout;
 | ||
| 	  clamps negative values at 0 for now
 | ||
| 	- _rl_get_string_variable_value: return value for keyseq-timeout
 | ||
| 
 | ||
| doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
 | ||
| 	- keyseq-timeout: documented
 | ||
| 
 | ||
| lib/readline/isearch.c
 | ||
| 	- _rl_isearch_dispatch: modification to fix from 7/18 to not use
 | ||
| 	  cxt->keymap and cxt->okeymap, since by the time this code is
 | ||
| 	  executed, they are equal.  Use `f' to check for rl_insert or
 | ||
| 	  unbound func
 | ||
| 	- _rl_isearch_dispatch: if we're switching keymaps, not in
 | ||
| 	  callback mode, and don't have pending or pushed input, use
 | ||
| 	  _rl_input_queued to resolve a potentially ambiguous key sequence.
 | ||
| 	  Suggested by Roger Zauner <rogerx.oss@gmail.com>
 | ||
| 	- _rl_isearch_dispatch: if we have changed keymaps and resolved to
 | ||
| 	  an editing function (not self-insert), make sure we stuff the
 | ||
| 	  right characters back onto the input after changing the keymap
 | ||
| 	  back so the right editing function is executed after the search
 | ||
| 	  is terminated.  Rest of fix for bug reported by Roger Zauner
 | ||
| 	  <rogerx.oss@gmail.com>
 | ||
| 
 | ||
| 				    2/5
 | ||
| 				    ---
 | ||
| builtins/gen-helpfiles.c
 | ||
| 	- new file: reads struct builtin and writes the long docs to files
 | ||
| 	  in the `helpdirs' subdirectory.  The filename is given in the
 | ||
| 	  previously-unused `handle' member of the struct builtin.  Links
 | ||
| 	  with `tmpbuiltins.o', which is created by Makefile to have the
 | ||
| 	  right long documentation.  When not cross-compiling, gets the
 | ||
| 	  right #defines based on configuration options from config.h instead
 | ||
| 	  of trying to parse conditional parts of def files.  Fixes
 | ||
| 	  shortcoming pointed out by Andreas Schwab <schwab@linux-m68k.org>
 | ||
| 
 | ||
| builtins/Makefile.in
 | ||
| 	- tmpbuiltins.c: new generated file, created to enable creation of
 | ||
| 	  separate helpfiles based on correct #defines instead of trying to
 | ||
| 	  parse conditional parts of def files
 | ||
| 	- gen-helpfiles: new program to generate helpfiles, links with
 | ||
| 	  tmpbuiltins.o
 | ||
| 	- HELPFILES_TARGET: new target, substituted by configure to `helpdoc'
 | ||
| 	  if separate helpfiles requested
 | ||
| 	- targets: new target, libbuiltins.a and $(HELPFILES_TARGET)
 | ||
| 	- CREATED_OBJECTS: new variable, holds created object files for
 | ||
| 	  make clean; changed make clean to remove created objects
 | ||
| 	- helpdoc: changed to call gen-helpfiles instead of mkbuiltins
 | ||
| 
 | ||
| Makefile.in
 | ||
| 	- when building libbuiltins.a, recursively call make with `targets'
 | ||
| 	  argument to make sure separate helpfiles get built
 | ||
| 
 | ||
| configure.in
 | ||
| 	- substitute `helpdoc' as value of HELPFILES_TARGET if
 | ||
| 	  --enable-separate-helpfiles supplied as configure argument
 | ||
| 
 | ||
| builtins/mkbuiltins.c
 | ||
| 	- `-nofunctions': new argument, causes mkbuiltins to not write value
 | ||
| 	  for function implementing a particular builtin to struct builtin
 | ||
| 	  and to write document file name to `handle' member of struct builtin
 | ||
| 	- no longer writes separate helpfiles; that is left to gen-helpfiles
 | ||
| 
 | ||
| 				    2/8
 | ||
| 				    ---
 | ||
| subst.c
 | ||
| 	- make sure last_command_exit_value is set to a non-zero value before
 | ||
| 	  any calls to report_error, since `-e' set will short-circuit
 | ||
| 	  report_error.  Fixes bug reported by Ewan Mellor
 | ||
| 	  <Ewan.Mellor@eu.citrix.com>
 | ||
| 
 | ||
| variables.c
 | ||
| 	- make_local_array_variable: added second argument; if non-zero,
 | ||
| 	  function will return an existing local associative array variable
 | ||
| 	  instead of insisting on an indexed array
 | ||
| 
 | ||
| variable.h,subst.c
 | ||
| 	- make_local_array_variable: changed prototype and caller
 | ||
| 
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: add second arg to call to make_local_array_variable;
 | ||
| 	  making_array_special, which indicates we're processing an
 | ||
| 	  assignment like declare a[b]=c.  Fixes seg fault resulting from
 | ||
| 	  a being an already-declared local associative array variable in a
 | ||
| 	  function.  Ubuntu bash bug 928900.
 | ||
| 
 | ||
| 				   2/14
 | ||
| 				   ----
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_command_internal: if redirections into or out of a loop fail,
 | ||
| 	  don't try to free ofifo_list unless saved_fifo is non-zero.  It's
 | ||
| 	  only valid if saved_fifo is set
 | ||
| 
 | ||
| 				   2/15
 | ||
| 				   ----
 | ||
| {arrayfunc,braces,variables}.c
 | ||
| 	- last_command_exit_value: make sure it's set before any calls to
 | ||
| 	  report_error, since -e will cause that to exit the shell
 | ||
| 
 | ||
| builtins/common.c
 | ||
| 	- get_job_by_name: call internal_error instead of report_error so this
 | ||
| 	  doesn't exit the shell
 | ||
| 
 | ||
| 				   2/18
 | ||
| 				   ----
 | ||
| builtins/evalstring.c
 | ||
| 	- parse_and_execute: make sure the file descriptor to be redirected to
 | ||
| 	  is 1 before calling cat_file.  One fix for bug reported by Dan Douglas
 | ||
| 	  <ormaaj@gmail.com>
 | ||
| 
 | ||
| parse.y
 | ||
| 	- read_token_word: don't return NUMBER if a string of all digits
 | ||
| 	  resolves to a number that overflows the bounds of an intmax_t.
 | ||
| 	  Other fix for bug reported by Dan Douglas <ormaaj@gmail.com>
 | ||
| 
 | ||
| 				   2/19
 | ||
| 				   ----
 | ||
| lib/sh/strtrans.c
 | ||
| 	- ansicstr: use 0x7f as the boundary for characters that translate
 | ||
| 	  directly from ASCII to unicode (\u and \U escapes) instead of
 | ||
| 	  UCHAR_MAX, since everything >= 0x80 requires more than one byte.
 | ||
| 	  Bug and fix from John Kearney <dethrophes@web.de>
 | ||
| 
 | ||
| builtins/printf.def
 | ||
| 	- tescape: ditto for printf \u and \U escape sequences
 | ||
| 
 | ||
| 				   2/20
 | ||
| 				   ----
 | ||
| lib/sh/unicode.c
 | ||
| 	- u32toutf8: fix to handle encodings up to six bytes long correctly
 | ||
| 	  (though technically UTF-8 only has characters up to 4 bytes long).
 | ||
| 	  Report and fix from John Kearney <dethrophes@web.de>
 | ||
| 	- u32toutf8: first argument is now an unsigned 32-bit quantity,
 | ||
| 	  changed callers (u32cconv) to pass c instead of wc
 | ||
| 	- u32reset: new function, resets local static state to uninitialized
 | ||
| 	  (locale information, currently)
 | ||
| 
 | ||
| locale.c
 | ||
| 	- call u32reset whenever LC_CTYPE/LC_ALL/LANG is changed to reset the
 | ||
| 	  cached locale information used by u32cconv.  From a report from
 | ||
| 	  John Kearney <dethrophes@web.de>
 | ||
| 
 | ||
| 				   2/21
 | ||
| 				   ----
 | ||
| doc/{bash,builtins}.1
 | ||
| 	- minor changes from Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
 | ||
| 
 | ||
| lib/sh/unicode.c
 | ||
| 	- u32cconv: only assume you can directly call wctomb on the passed
 | ||
| 	  value if __STDC_ISO_10646__ is defined and the value is <=
 | ||
| 	  0x7fffffff
 | ||
| 	- stub_charset: return locale as default instead of "ASCII", let
 | ||
| 	  rest of code decide what to do with it
 | ||
| 
 | ||
| lib/readline/parens.c
 | ||
| 	- _rl_enable_paren_matching: make paren matching work in vi insert
 | ||
| 	  mode.  Bug report from <derflob@derflob.de>
 | ||
| 
 | ||
| 				   2/22
 | ||
| 				   ----
 | ||
| lib/sh/shquote.c
 | ||
| 	- sh_backslash_quote: quote tilde in places where it would be
 | ||
| 	  expanded.  From a report from John Kearney <dethrophes@web.de>
 | ||
| 
 | ||
| 				   2/23
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- execute_pipeline: wrap the discard_unwind_frame call in #ifdef
 | ||
| 	  JOB_CONTROL, since the frame is only created if JOB_CONTROL is
 | ||
| 	  defined.  Bug and fix from Doug Kehn <rdkehn@yahoo.com>
 | ||
| 
 | ||
| 				   2/25
 | ||
| 				   ----
 | ||
| error.c
 | ||
| 	- report_error: make sure last_command_exit_value is non-zero before
 | ||
| 	  we call exit_shell, since the exit trap may reference it.  Call
 | ||
| 	  exit_shell with last_command_exit_value to allow exit statuses
 | ||
| 	  other than 1
 | ||
| 
 | ||
| unicode.c
 | ||
| 	- stub_charset: use local static buffer to hold charset, don't change
 | ||
| 	  value returned by get_locale_var.  Based on idea and code from
 | ||
| 	  John Kearney <dethrophes@web.de>
 | ||
| 	- u32toutf16: function to convert unsigned 32-bit value (unicode) to
 | ||
| 	  UTF-16.  From John Kearney <dethrophes@web.de>
 | ||
| 	- u32cconv: call u32toutf16 if __STDC_ISO_10646__ defined and wchar_t
 | ||
| 	  is two bytes, send result to wcstombs, return if not encoding error.
 | ||
| 	  From John Kearney <dethrophes@web.de>
 | ||
| 	- u32cconv: return UTF-8 conversion if iconv conversion to local
 | ||
| 	  charset is unsupported
 | ||
| 
 | ||
| 				    3/2
 | ||
| 				    ---
 | ||
| lib/readline/complete.c
 | ||
| 	- print_filename: if there is no directory hook, but there is a stat
 | ||
| 	  hook, and we want to append a slash to directories, call the stat
 | ||
| 	  hook before calling path_isdir on the expanded directory name.
 | ||
| 	  Report and pointer to fix from Steve Rago <sar@nec-labs.com>
 | ||
| 
 | ||
| 				    3/3
 | ||
| 				    ---
 | ||
| builtins/evalstring.c
 | ||
| 	- parse_and_execute: fix to change of 2/18: make sure the file
 | ||
| 	  descriptor being redirected to is 0 before calling cat_file when
 | ||
| 	  we see something like $(< file).  Real fix for bug reported by
 | ||
| 	  Dan Douglas <ormaaj@gmail.com>
 | ||
| 
 | ||
| subst.c
 | ||
| 	- parameter_brace_patsub: run the replacement string through quote
 | ||
| 	  removal even if the expansion is within double quotes, because
 | ||
| 	  the parser and string extract functions treat the quotes and
 | ||
| 	  backslashes as special.  If they're treated as special, quote
 | ||
| 	  removal should remove them (this is the Posix position and
 | ||
| 	  compatible with ksh93).  THIS IS NOT BACKWARDS COMPATIBLE.
 | ||
| 
 | ||
| 				    3/4
 | ||
| 				    ---
 | ||
| lib/readline/complete.c
 | ||
| 	- rl_menu_complete: fix to make show-all-if-ambiguous and
 | ||
| 	  menu-complete-display-prefix work together if both are set.  Fix
 | ||
| 	  from Sami Pietila <sami.pietila@gmail.com>
 | ||
| 
 | ||
| 				    3/5
 | ||
| 				    ---
 | ||
| bashline.c
 | ||
| 	- dircomplete_expand_relpath: new variable, if non-zero, means that
 | ||
| 	  `shopt -s direxpand' should expand relative pathnames.  Zero by
 | ||
| 	  default, not user-settable yet
 | ||
| 	- bash_directory_completion_hook: if we have a relative pathname that
 | ||
| 	  isn't changed by canonicalization or spell checking after being
 | ||
| 	  appended to $PWD, then don't change what the user typed.  Controlled
 | ||
| 	  by dircomplete_expand_relpath
 | ||
| 
 | ||
| 				    3/7
 | ||
| 				    ---
 | ||
| m4/timespec.m4
 | ||
| 	- new macros, cribbed from gnulib and coreutils: find out whether we
 | ||
| 	  have `struct timespec' and what file includes it
 | ||
| 
 | ||
| m4/stat-time.m4
 | ||
| 	- new macros, cribbed from gnulib and coreutils: find out whether the
 | ||
| 	  mtime/atime/ctime/etctime fields of struct stat are of type
 | ||
| 	  struct timespec, and what the name is
 | ||
| 
 | ||
| include/stat-time.h
 | ||
| 	- new file, cribbed from gnulib, with additions from coreutils: include
 | ||
| 	  the right file to get the struct timespec define, or provide our own
 | ||
| 	  replacement.  Provides a bunch of inline functions to turn the
 | ||
| 	  appropriate members of struct stat into `struct timespec' values,
 | ||
| 	  zeroing out the tv_nsec field if necessary
 | ||
| 
 | ||
| test.c
 | ||
| 	- include "stat-time.h" for the nanosecond timestamp resolution stuff
 | ||
| 	- stat_mtime: new function, returns struct stat and the mod time
 | ||
| 	  normalized into a `struct timespec' for the filename passed as the
 | ||
| 	  first argument
 | ||
| 	- filecomp: call stat_mtime instead of sh_stat for each filename
 | ||
| 	  argument to get the mtime as a struct timespec
 | ||
| 	- filecomp: call timespec_cmp instead of using a straight arithmetic
 | ||
| 	  comparison for the -nt and -ot operators, using timespec returned by
 | ||
| 	  stat_mtime.  Added functionality requested by by Werner Fink
 | ||
| 	  <werner@suse.de> for systems that can support it
 | ||
| 
 | ||
| 				   3/10
 | ||
| 				   ----
 | ||
| include/posixdir.h
 | ||
| 	- REAL_DIR_ENTRY: remove dependency on _POSIX_SOURCE, only use feature
 | ||
| 	  test macros to decide whether dirent.d_ino is present and usable;
 | ||
| 	  define D_INO_AVAILABLE.  Report and fix from Fabrizion Gennari
 | ||
| 	  <fabrizio.ge@tiscali.it>
 | ||
| 	- D_FILENO_AVAILABLE: define if we can use dirent.d_fileno
 | ||
| 
 | ||
| lib/sh/getcwd.c
 | ||
| 	- use D_FILENO_AVAILABLE to decide whether or not to compile in
 | ||
| 	  _path_checkino and whether or not to call it.  Report and initial
 | ||
| 	  fix from Fabrizion Gennari <fabrizio.ge@tiscali.it>
 | ||
| 
 | ||
| lib/readline/signals.c
 | ||
| 	- make sure all occurrences of SIGWINCH are protected by #ifdef
 | ||
| 
 | ||
| sig.c
 | ||
| 	- make sure all occurrences of SIGCHLD are protected by #ifdef
 | ||
| 
 | ||
| nojobs.c
 | ||
| 	- make sure SA_RESTART is defined to 0 if the OS doesn't define it
 | ||
| 
 | ||
| version.c
 | ||
| 	- show_shell_version: don't use string literals in printf, use %s.
 | ||
| 	  Has added benefit of removing newline from string to be translated
 | ||
| 
 | ||
| trap.c
 | ||
| 	- queue_sigchld_trap: new function, increments the number of pending
 | ||
| 	  SIGCHLD signals by the argument, which is by convention the number
 | ||
| 	  of children reaped in a call to waitchld()
 | ||
| 
 | ||
| trap.h
 | ||
| 	- queue_sigchld_trap: new extern declaration
 | ||
| 
 | ||
| jobs.c
 | ||
| 	- waitchld: if called from the SIGCHLD signal handler (sigchld > 0),
 | ||
| 	  then call queue_sigchld_trap to avoid running the trap in a signal
 | ||
| 	  handler context.  Report and original fix from Siddhesh Poyarekar
 | ||
| 	  <siddhesh@redhat.com>
 | ||
| 
 | ||
| lib/sh/unicode.c
 | ||
| 	- u32tocesc: take an unsigned 32-bit quantity and encode it using
 | ||
| 	  ISO C99 string notation (\u/\U)
 | ||
| 	- u32cconv: call u32tocesc as a fallback instead of u32cchar
 | ||
| 	- u32cconv: call u32tocesc if iconv cannot convert the character.
 | ||
| 	  Maybe do the same thing if iconv_open fails
 | ||
| 	- u32reset: call iconv_close on localconv if u32init == 1
 | ||
| 
 | ||
| 				   3/11
 | ||
| 				   ----
 | ||
| config-top.h
 | ||
| 	- CHECKWINSIZE_DEFAULT: new define, set to initial value of
 | ||
| 	  check_window_size (shopt checkwinsize): 0 for off, 1 for on.
 | ||
| 	  Default is 0
 | ||
| 
 | ||
| {jobs,nojobs}.c
 | ||
| 	- check_window_size: default initial value to CHECKWINSIZE_DEFAULT
 | ||
| 
 | ||
| 				   3/13
 | ||
| 				   ----
 | ||
| doc/bashref.texi
 | ||
| 	- change text referring to the copying restrictions to that
 | ||
| 	  recommended by the FSF (no Front-Cover Texts and no Back-Cover
 | ||
| 	  Texts)
 | ||
| 
 | ||
| lib/readline/doc/{history,rlman,rluserman}.texi
 | ||
| 	- change text referring to the copying restrictions to that
 | ||
| 	  recommended by the FSF (no Front-Cover Texts and no Back-Cover
 | ||
| 	  Texts)
 | ||
| 
 | ||
| 				   3/15
 | ||
| 				   ----
 | ||
| array.c
 | ||
| 	- LASTREF_START: new macro to set the starting position for an array
 | ||
| 	  traversal to `lastref' if that's valid, and to the start of the array
 | ||
| 	  if not.  Used in array_reference, array_insert, array_remove
 | ||
| 	- array_remove: try to be a little smarter with lastref instead of
 | ||
| 	  unconditionally invalidating it
 | ||
| 
 | ||
| 				   3/16
 | ||
| 				   ----
 | ||
| array.c
 | ||
| 	- array_insert: fix memory leak by deleting element to be added in the
 | ||
| 	  case of an error
 | ||
| 
 | ||
| 				   3/18
 | ||
| 				   ----
 | ||
| lib/sh/mbschr.c
 | ||
| 	- mbschr: don't call mbrlen unless is_basic is false; devolves to a
 | ||
| 	  straight character-by-character run through the string
 | ||
| 
 | ||
| 				   3/19
 | ||
| 				   ----
 | ||
| stringlib.c
 | ||
| 	- substring: use memcpy instead of strncpy, since we know the length
 | ||
| 	  and are going to add our own NUL terminator
 | ||
| 
 | ||
| 				   3/20
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- parameter_brace_expand_rhs: if expand_string_for_rhs returns a quoted
 | ||
| 	  null string (a list with one element for which
 | ||
| 	  QUOTED_NULL(list->word->word) returns true), return the quoted null
 | ||
| 	  and set the flags in the returned word to indicate it.  Fixes bug
 | ||
| 	  reported by Mark Edgar <medgar123@gmail.com>
 | ||
| 
 | ||
| lib/sh/tmpfile.c
 | ||
| 	- use random(3) instead of get_random_number to avoid perturbing the
 | ||
| 	  random sequence you get using $RANDOM.  Bug report and fix from
 | ||
| 	  Jurij Mihelic <jurij.mihelic@fri.uni-lj.si>
 | ||
| 
 | ||
| 				   3/21
 | ||
| 				   ----
 | ||
| config-top.h
 | ||
| 	- OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT: define to 1 to optimize
 | ||
| 	  sequential indexed array assignment patterns.  Defined to 1 by
 | ||
| 	  default
 | ||
| 
 | ||
| array.c
 | ||
| 	- array_insert: if OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT is defined,
 | ||
| 	  start the search at lastref (see change from 3/15)
 | ||
| 
 | ||
| 				   3/27
 | ||
| 				   ----
 | ||
| print_cmd.c
 | ||
| 	- debug_print_word_list: new debugging function, prints a word list
 | ||
| 	  preceded by an optional string and using a caller-specified
 | ||
| 	  separator
 | ||
| 
 | ||
| 				    4/1
 | ||
| 				    ---
 | ||
| command.h
 | ||
| 	- W_ASSNGLOBAL: new flag, set to indicate declare -g
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- fix_assignment_words: note that we have a -g argument to an assignment
 | ||
| 	  builtin and set the W_ASSNGLOBAL flag in the variable word
 | ||
| 
 | ||
| subst.c
 | ||
| 	- dump_word_flags: print out W_ASSNGLOBAL if present
 | ||
| 	- do_assignment_internal: only set ASS_MKLOCAL if W_ASSIGNARG is set
 | ||
| 	  and W_ASSNGLOBAL is not.  Don't want to create a local variable even
 | ||
| 	  if variable_context is non-zero if ASSNGLOBAL is set.  Fixes bug
 | ||
| 	  reported by Bill Gradwohl <bill@ycc.com>
 | ||
| 
 | ||
| 				    4/7
 | ||
| 				    ---
 | ||
| lib/readline/readline.c
 | ||
| 	- _rl_dispatch_subseq: make the `keyseq-timeout' variable apply to
 | ||
| 	  ESC processing when in vi mode.  After hitting ESC, readline will
 | ||
| 	  wait up to _rl_keyseq_timeout*1000 microseconds (if set) for
 | ||
| 	  additional input before dispatching on the ESC and switching to
 | ||
| 	  command/movement mode.  Completes timeout work suggested by
 | ||
| 	  <rogerx.oss@gmail.com>; this prompted by report from Barry Downes
 | ||
| 	  <barry.downes@gmail.com>
 | ||
| 
 | ||
| lib/sh/shmbchar.c
 | ||
| 	- sh_mbsnlen: new function, returns the number of (possibly multibyte)
 | ||
| 	  characters in a passed string with a passed length, examining at most
 | ||
| 	  maxlen (third argument) bytes
 | ||
| 
 | ||
| externs.h
 | ||
| 	- sh_mbsnlen: extern declaration for new function
 | ||
| 
 | ||
| shell.c
 | ||
| 	- exit_shell: call maybe_save_shell_history if remember_on_history is
 | ||
| 	  set, not just in interactive shells.  That means the history is
 | ||
| 	  saved if history is enabled, regardless of whether or not the shell
 | ||
| 	  is interactive
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- TMOUT: fix description to make it explicit that TMOUT is the timeout
 | ||
| 	  period for a complete line of input, not just any input.  Fixes
 | ||
| 	  problem reported in Ubuntu bug 957303:
 | ||
| 	  https://bugs.launchpad.net/ubuntu/+source/bash/+bug/957303
 | ||
| 	- HISTFILE: document change to write history list to history file in
 | ||
| 	  any shell with history enabled, not just interactive shells.  This
 | ||
| 	  seems to be more logical behavior.  Suggested by Greg Wooledge
 | ||
| 	  <wooledg@eeg.ccf.org>
 | ||
| 
 | ||
| 				   4/12
 | ||
| 				   ----
 | ||
| lib/readline/colors.h
 | ||
| 	- only include stdbool.h if HAVE_STDBOOL_H is defined
 | ||
| 	- if HAVE_STDBOOL_H is not defined, provide enough definition for the
 | ||
| 	  library to use `bool', `true', and `false'
 | ||
| 
 | ||
| lib/readline/parse-colors.[ch]
 | ||
| 	- don't try to include <stdbool.h> at all; rely on colors.h to do it
 | ||
| 
 | ||
| lib/sh/snprintf.c
 | ||
| 	- vsnprintf_internal: only treat '0' as a flag to indicate zero padding
 | ||
| 	  if `.' hasn't been encountered ((flags&PF_DOT) == 0); otherwise treat
 | ||
| 	  it as the first digit of a precision specifier.  Fixes bug reported
 | ||
| 	  by Petr Sumbera <petr.sumbera@sun.com>
 | ||
| 
 | ||
| 				   4/15
 | ||
| 				   ----
 | ||
| lib/sh/snprintf.c
 | ||
| 	- vsnprintf_internal: if the '0' and '-' flags both occur, the '0'
 | ||
| 	  flag is ignored -- Posix.  Start of a series of fixes based on
 | ||
| 	  tests and patches from Petr Sumbera <petr.sumbera@sun.com>
 | ||
| 	- PUT_PLUS: make sure PF_PLUS flag is specified before putting the `+'
 | ||
| 	- vsnprintf_internal: when '+' is read as a flag, don't set right-
 | ||
| 	  justify flag if the LADJUST (`-') flag has already been supplied
 | ||
| 	- floating: make sure to output space padding before the `+', zero
 | ||
| 	  padding after
 | ||
| 	- exponent: make sure to output space padding before the `+', zero
 | ||
| 	  padding after
 | ||
| 	- exponent: only subtract one from the width for the decimal point
 | ||
| 	  if we're really going to print one
 | ||
| 	- floating: use presence of PF_PLUS flag to decide whether to account
 | ||
| 	  for the `+' in the padded field width.  Ditto for exponent()
 | ||
| 
 | ||
| 				   4/16
 | ||
| 				   ----
 | ||
| lib/sh/snprintf.c
 | ||
| 	- vsnprint_internal: only reduce precision by 1 when processing the `g'
 | ||
| 	  format if it's > 0.  A precision of 0 should stay 0; otherwise it
 | ||
| 	  gets set to -1 (NOT_FOUND) and converted to the default
 | ||
| 	- number, lnumber: if an explicit precision is supplied, turn off the
 | ||
| 	  zero-padding flag and set the pad character back to space
 | ||
| 	- number, lnumber: only account for a `+' when performing the field
 | ||
| 	  width calculation if the coversion is base 10; we don't add a `+'
 | ||
| 	  for other bases
 | ||
| 
 | ||
| 				   4/18
 | ||
| 				   ----
 | ||
| tests/printf3.sub
 | ||
| 	- try using "perl -e 'print time'" to get the current time in seconds
 | ||
| 	  since the epoch if "date +%s" is not available (solaris 8-10)
 | ||
| 
 | ||
| 				   4/19
 | ||
| 				   ----
 | ||
| tests/run-printf
 | ||
| 	- use cat -v instead of relying on diff -a being available to convert
 | ||
| 	  control characters to ascii and avoid the dreaded "Binary files
 | ||
| 	  /tmp/xx and printf.right differ"
 | ||
| 
 | ||
| 				   4/20
 | ||
| 				   ----
 | ||
| lib/sh/strftime.c
 | ||
| 	- incoporated new version from Aharon Robbins <arnold@skeeve.com>
 | ||
| 
 | ||
| 				   4/22
 | ||
| 				   ----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- slight change to the description of /dev/tcp and /dev/udp
 | ||
| 
 | ||
| subst.c
 | ||
| 	- match_wpattern: logic fix to the calculation of `simple' (was |=,
 | ||
| 	  needs to be &=).  Bug report from Mike Frysinger <vapier@gentoo.org>,
 | ||
| 	  fix from Andreas Schwab <schwab@linux-m68k.org>
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- bash_filename_stat_hook: add code from bash_directory_completion_hook
 | ||
| 	  that performs pathname canonicalization in the same way that cd and
 | ||
| 	  other builtins will do
 | ||
| 
 | ||
| 				   4/25
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- execute_pipeline: change the call to move_to_high_fd to make it use
 | ||
| 	  getdtablesize() and to not stomp on existing open file descriptors,
 | ||
| 	  like the fd the shell is using to read a script.  Bug report from
 | ||
| 	  Greg Wooledge <wooledg@eeg.ccf.org>
 | ||
| 
 | ||
| 				    5/6
 | ||
| 				    ---
 | ||
| subst.c
 | ||
| 	- expand_word_internal: case '$': after calling param_expand and
 | ||
| 	  setting had_quoted_null, set TEMP to null.  The code that builds the
 | ||
| 	  returned string at the end of the function will take care of making
 | ||
| 	  and returning a quoted null string if there's nothing else in
 | ||
| 	  ISTRING.  If there is, the quoted null should just go away.  Part of
 | ||
| 	  fix for bug reported by Ruediger Kuhlmann <RKuhlmann@orga-systems.com>
 | ||
| 	- expand_word_internal: when processing ISTRING to build return value,
 | ||
| 	  only set W_HASQUOTEDNULL in the returned word flags if the word is
 | ||
| 	  a quoted null string AND had_quoted_null is set.  Rest of fix
 | ||
| 
 | ||
| 				    5/9
 | ||
| 				    ---
 | ||
| variables.c
 | ||
| 	- bind_variable_internal: if we get an array variable here (implicit
 | ||
| 	  assignment to index 0), call make_array_variable_value, which
 | ||
| 	  dummies up a fake SHELL_VAR * from array[0].  This matters when
 | ||
| 	  we're appending and have to use the current value
 | ||
| 	- bind_variable_internal: after computing the new value, treat assoc
 | ||
| 	  variables with higher precedence than simple array variables; it
 | ||
| 	  might be that a variable has both attributes set
 | ||
| 
 | ||
| arrayfunc.c
 | ||
| 	- bind_array_var_internal: break code out that handles creating the
 | ||
| 	  new value to be assigned to an array variable index into a new
 | ||
| 	  function, make_array_variable_value.  This handles creating a
 | ||
| 	  dummy SHELL_VAR * for implicit array[0] assignment.  Fixes bug
 | ||
| 	  reported by Dan Douglas <ormaaj@gmail.com>
 | ||
| 
 | ||
| arrayfunc.h
 | ||
| 	- make_array_variable_value: new extern declaration
 | ||
| 
 | ||
| 				   5/19
 | ||
| 				   ----
 | ||
| variables.c
 | ||
| 	- bind_int_variable: if an assignment statement like x=y comes in
 | ||
| 	  from the expression evaluator, and x is an array, handle it like
 | ||
| 	  x[0]=y.  Fixes bug reported by Dan Douglas <ormaaj@gmail.com>
 | ||
| 
 | ||
| 				   5/24
 | ||
| 				   ----
 | ||
| 
 | ||
| braces.c
 | ||
| 	- mkseq: handle possible overflow and break the sequence generating
 | ||
| 	  loop if it occurs.  Fixes OpenSUSE bug 763591:
 | ||
| 	  https://bugzilla.novell.com/show_bug.cgi?id=763591
 | ||
| 
 | ||
| 				   5/25
 | ||
| 				   ----
 | ||
| Makefile.in
 | ||
| 	- LDFLAGS_FOR_BUILD: add to compilation recipes for build tools
 | ||
| 	  buildversion, mksignames, mksyntax
 | ||
| 	- LDFLAGS_FOR_BUILD: add to compilation recipes for test tools
 | ||
| 	  recho, zecho, printenv, xcase
 | ||
| 
 | ||
| builtins/Makefile.in
 | ||
| 	- LDFLAGS_FOR_BUILD: add to compilation recipes for build tools
 | ||
| 	  gen-helpfiles, psize.aux
 | ||
| 
 | ||
| variables.c
 | ||
| 	- bind_int_variable: if LHS is a simple variable name without an array
 | ||
| 	  reference, but resolves to an array variable, call
 | ||
| 	  bind_array_variable with index 0 to make x=1 equivalent to x[0]=1.
 | ||
| 	  Fixes bug reported by Dan Douglas <ormaaj@gmail.com>
 | ||
| 
 | ||
| 				   5/27
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- expand_word_internal: make sure has_dollar_at doesn't get reset before
 | ||
| 	  recursive calls to param_expand or expand_word_internal, since it has
 | ||
| 	  to save state of what came before.  Use temp variable and make sure
 | ||
| 	  has_dollar_at is incremented if recursive call processes "$@".
 | ||
| 	  Fixes bug reported by gregrwm <backuppc-users@whitleymott.net> and
 | ||
| 	  supplemented by Dan Douglas <ormaaj@gmail.com>
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- changes to the description of substring expansion inspired by
 | ||
| 	  suggestions from Bill Gradwohl <bill@ycc.com>
 | ||
| 
 | ||
| doc/bashref.texi
 | ||
| 	- added substring expansion examples inspired by suggestions from
 | ||
| 	  Bill Gradwohl <bill@ycc.com>
 | ||
| 
 | ||
| variables.c
 | ||
| 	- find_shell_variable: search for a variable in the list of shell
 | ||
| 	  contexts, ignore the temporary environment
 | ||
| 	- find_variable_tempenv: search for a variable in the list of shell
 | ||
| 	  contexts, force search of the temporary environment
 | ||
| 	- find_variable_notempenv: search for a variable in the list of shell
 | ||
| 	  contexts, don't force search of the temporary environment
 | ||
| 
 | ||
| variables.h
 | ||
| 	- find_shell_variable: extern declaration
 | ||
| 	- find_variable_tempenv: extern declaration
 | ||
| 	- find_variable_notempenv: extern declaration
 | ||
| 
 | ||
| arrayfunc.c
 | ||
| 	- bind_array_variable: call find_shell_variable instead of calling
 | ||
| 	  var_lookup directly
 | ||
| 
 | ||
| findcmd.c
 | ||
| 	- search_for_command: call find_variable_tempenv instead of
 | ||
| 	  find_variable_internal directly
 | ||
| 	- _find_user_command_internal: call find_variable_tempenv instead of
 | ||
| 	  find_variable_internal directly
 | ||
| 
 | ||
| builtins/setattr.def
 | ||
| 	- set_var_attribute: call find_variable_notempenv instead of
 | ||
| 	  find_variable_internal directly
 | ||
| 	- show_name_attributes:  call find_variable_tempenv instead of
 | ||
| 	  find_variable_internal directly
 | ||
| 
 | ||
| 				    6/1
 | ||
| 				    ---
 | ||
| sig.c
 | ||
| 	- termsig_handler: don't try to save the shell history on a terminating
 | ||
| 	  signal any more, since it just causes too many problems on Linux
 | ||
| 	  systems using glibc and glibc malloc
 | ||
| 
 | ||
| lib/readline/vi_mode.c
 | ||
| 	- rl_vi_change_to: change to correctly redo `cc', since `c' is not a vi
 | ||
| 	  motion character.  From Red Hat bug 813289
 | ||
| 	- rl_vi_delete_to: change to correctly redo `dd', since `d' is not a vi
 | ||
| 	  motion character
 | ||
| 	- rl_vi_yank_to: change to correctly redo `yy', since `y' is not a vi
 | ||
| 	  motion character
 | ||
| 
 | ||
| 				    6/4
 | ||
| 				    ---
 | ||
| lib/sh/mktime.c
 | ||
| 	- current versions of VMS do not need to include <stddef.h>.  Fix from
 | ||
| 	  John E. Malmberg <wb8tyw@qsl.net>
 | ||
| 
 | ||
| 				    6/5
 | ||
| 				    ---
 | ||
| lib/sh/eaccess.c
 | ||
| 	- sh_stat: instead of using a static buffer to do the DEV_FD_PREFIX
 | ||
| 	  translation, use a dynamically-allocated buffer that we keep
 | ||
| 	  resizing.  Fixes potential security hole reported by David Leverton
 | ||
| 	  <levertond@googlemail.com>
 | ||
| 
 | ||
| 				    6/5
 | ||
| 				    ---
 | ||
| braces.c
 | ||
| 	- expand_seqterm: check errno == ERANGE after calling strtoimax for
 | ||
| 	  rhs and incr.  Part of a set of fixes from Scott McMillan
 | ||
| 	  <scotty.mcmillan@gmail.com>
 | ||
| 	- expand_seqterm: incr now of type `intmax_t', which changes
 | ||
| 	  arguments to mkseq
 | ||
| 	- mkseq: a better fix for detecting overflow and underflow since it's
 | ||
| 	  undefined in C and compilers `optimize' out overflow checks.  Uses
 | ||
| 	  ADDOVERFLOW and SUBOVERFLOW macros
 | ||
| 	- mkseq: use sh_imaxabs (new macro) instead of abs() for intmax_t
 | ||
| 	  variables
 | ||
| 	- mkseq: don't allow incr to be converted to -INTMAX_MIN
 | ||
| 	- mkseq: make sure that strvec_create isn't called with a size argument
 | ||
| 	  greater than INT_MAX, since it only takes an int
 | ||
| 
 | ||
| 				    6/6
 | ||
| 				    ---
 | ||
| braces.c
 | ||
| 	- mkseq: try and be smarter about not overallocating elements in
 | ||
| 	  the return array if the increment is not 1 or -1
 | ||
| 
 | ||
| 				    6/7
 | ||
| 				    ---
 | ||
| parse.y
 | ||
| 	- history_delimiting_chars: if the parser says we're in the middle of
 | ||
| 	  a compound assignment (PST_COMPASSIGN), just return a space to avoid
 | ||
| 	  adding a stray semicolon to the history entry.  Fixes bug reported
 | ||
| 	  by "Davide Brini" <dave_br@gmx.com>
 | ||
| 
 | ||
| 				    6/8
 | ||
| 				    ---
 | ||
| bashline.c
 | ||
| 	- bash_directory_completion_hook: don't attempt spelling correction
 | ||
| 	  on the directory name unless the direxpand option is set and we are
 | ||
| 	  going to replace the directory name with the corrected one in the
 | ||
| 	  readline line.  Suggested by Linda Walsh <bash@tlinx.org>
 | ||
| 
 | ||
| lib/sh/shquote.c
 | ||
| 	- sh_backslash_quote: now takes a third argument: flags.  If non-zero,
 | ||
| 	  tildes are not backslash-escaped.  Have to handle both printf %q,
 | ||
| 	  where they should be escaped, and filename completion, where they
 | ||
| 	  should not when used as usernames
 | ||
| 
 | ||
| externs.h
 | ||
| 	- sh_backslash_quote: declaration now takes a third argument
 | ||
| 
 | ||
| builtins/printf.def
 | ||
| 	- printf_builtin: call sh_backslash_quote with 1 as third argument
 | ||
| 	  so tildes get escaped
 | ||
| 
 | ||
| {bashline,bracecomp}.c
 | ||
| 	- call sh_backslash_quote with 0 as third argument so tildes are not
 | ||
| 	  escaped in completed words
 | ||
| 
 | ||
| doc/bash.1
 | ||
| 	- add `coproc' to the list of reserved words.  From a report by
 | ||
| 	  Jens Schweikhardt <schweikh@schweikhardt.net>
 | ||
| 
 | ||
| 				   6/10
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- line_number_for_err_trap: now global, so parse_and_execute can save
 | ||
| 	  and restore it with unwind-protect
 | ||
| 
 | ||
| builtins/evalstring.c
 | ||
| 	- parse_prologue: save and restore line_number_for_err_trap along
 | ||
| 	  with line_number
 | ||
| 	- restore_lastcom: new function, unwind-protect to restore
 | ||
| 	  the_printed_command_except_trap
 | ||
| 	- parse_prologue: use restore_lastcom to save and restore the value
 | ||
| 	  of the_printed_command_except_trap around calls to parse_and_execute
 | ||
| 	  (eval/source/.)
 | ||
| 
 | ||
| 				   6/15
 | ||
| 				   ----
 | ||
| lib/readline/complete.c
 | ||
| 	- complete_fncmp: change filename comparison code to understand
 | ||
| 	  multibyte characters, even when doing case-sensitive or case-mapping
 | ||
| 	  comparisons.  Fixes problem reported by Nikolay Shirokovskiy
 | ||
| 	  <nshyrokovskiy@gmail.com>
 | ||
| 
 | ||
| 				   6/20
 | ||
| 				   ----
 | ||
| builtins/mapfile.def
 | ||
| 	- mapfile: move the line count increment and check for having read
 | ||
| 	  the specified number of lines to the end of the loop to avoid
 | ||
| 	  reading an additional line with zgetline.  Fixes bug reported by
 | ||
| 	  Dan Douglas <ormaaj@gmail.com>
 | ||
| 
 | ||
| 				   6/21
 | ||
| 				   ----
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_pipeline: make sure `lastpipe_flag' is initialized to 0 on
 | ||
| 	  all systems, since it's tested later in the function.  Fixes bug
 | ||
| 	  reported by John E. Malmberg <wb8tyw@qsl.net>
 | ||
| 
 | ||
| 				   6/22
 | ||
| 				   ----
 | ||
| mailcheck.c
 | ||
| 	- file_mod_date_changed: return 0 right away if mailstat() does not
 | ||
| 	  return success.  Fixes bug with using uninitialized values reported
 | ||
| 	  by szymon.kalasz@uj.edu.pl
 | ||
| 
 | ||
| builtins/set.def
 | ||
| 	- the `monitor' option is not available when the shell is compiled
 | ||
| 	  without job control, since the underlying `m' flag is not available
 | ||
| 
 | ||
| nojobs.c
 | ||
| 	- job_control: now declared as int variable, initialized to 0, never
 | ||
| 	  modified
 | ||
| 
 | ||
| jobs.h
 | ||
| 	- job_control: extern declaration no longer dependent on JOB_CONTROL
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_pipeline: made necessary changes so `lastpipe' shell option
 | ||
| 	  is now available in all shells, even those compiled without
 | ||
| 	  JOB_CONTROL defined
 | ||
| 
 | ||
| 				   6/23
 | ||
| 				   ----
 | ||
| lib/glob/glob.c
 | ||
| 	- glob_filename: check for interrupts before returning if glob_vector
 | ||
| 	  returns NULL or an error.  Bug reported by Serge van den Boom
 | ||
| 	  <svdb@stack.nl>, fix from Andreas Schwab <schwab@linux-m68k.org>
 | ||
| 	- call run_pending_traps after each call to QUIT or test of
 | ||
| 	  interrupt_state, like we do in mainline shell code
 | ||
| 	- glob_vector: don't call QUIT; in `if (lose)' code block; just free
 | ||
| 	  memory, return NULL, and let callers deal with interrupt_state or
 | ||
| 	  other signals and traps
 | ||
| 
 | ||
| 				   6/25
 | ||
| 				   ----
 | ||
| lib/readline/input.c
 | ||
| 	- rl_read_key: restructure the loop that calls the event hook a little,
 | ||
| 	  so that the hook is called only after rl_gather_tyi returns no input,
 | ||
| 	  and any pending input is returned first.  This results in better
 | ||
| 	  efficiency for processing pending input without calling the hook
 | ||
| 	  on every input character as bash-4.1 did.  From a report from
 | ||
| 	  Max Horn <max@quendi.de>
 | ||
| 
 | ||
| 				   6/26
 | ||
| 				   ----
 | ||
| trap.c
 | ||
| 	- signal_is_pending: return TRUE if SIG argument has been received and
 | ||
| 	  a trap is waiting to execute
 | ||
| 
 | ||
| trap.h
 | ||
| 	- signal_is_pending: extern declaration
 | ||
| 
 | ||
| lib/glob/glob.c
 | ||
| 	- glob_vector: check for pending SIGINT trap each time through the loop,
 | ||
| 	  just like we check for interrupt_state or terminating_signal, and
 | ||
| 	  set `lose = 1' so we clean up after ourselves and interrupt the
 | ||
| 	  operation before running the trap.  This may require a change later,
 | ||
| 	  maybe call run_pending_traps and do that if run_pending_traps returns?
 | ||
| 
 | ||
| variables.c
 | ||
| 	- sv_histtimefmt: set history_comment_character to default (`#') if
 | ||
| 	  it's 0 when we're turning on history timestamps.  The history code
 | ||
| 	  uses the history comment character to prefix timestamps, and
 | ||
| 	  leaving it at 0 effectively removes them from the history.  From a
 | ||
| 	  report to help-bash by Dennis Williamson <dennistwilliamson@gmail.com>
 | ||
| 
 | ||
| 				   6/27
 | ||
| 				   ----
 | ||
| lib/readline/signals.c
 | ||
| 	- rl_maybe_restore_sighandler: new function, sets handler for SIG to
 | ||
| 	  HANDLER->sa_handler only if it's not SIG_IGN.  Needs to be called
 | ||
| 	  on same signals set using rl_maybe_set_sighandler, which does not
 | ||
| 	  override an existing SIG_IGN handler (SIGALRM is ok since it does
 | ||
| 	  the check inline; doesn't mess with SIGWINCH)
 | ||
| 
 | ||
| 				   6/30
 | ||
| 				   ----
 | ||
| variables.h
 | ||
| 	- additional defines for the new `nameref' variable attribute
 | ||
| 	  (att_nameref): nameref_p, nameref_cell, var_setref
 | ||
| 
 | ||
| variables.c
 | ||
| 	- find_variable_nameref: resolve SHELL_VAR V through chain of namerefs
 | ||
| 	- find_variable_last_nameref: resolve variable NAME until last in a
 | ||
| 	  chain of possibly more than one nameref starting at shell_variables
 | ||
| 	- find_global_variable_last_nameref: resolve variable NAME until last
 | ||
| 	  in a chain of possibly more than one nameref starting at
 | ||
| 	  global_variables
 | ||
| 	- find_nameref_at_context: resolve SHELL_VAR V through chain of namerefs	
 | ||
| 	  in a specific variable context (usually a local variable hash table)
 | ||
| 	- find_variable_nameref_context: resolve SHELL_VAR V through chain of
 | ||
| 	  namerefs following a chain of varible contexts
 | ||
| 	- find_variable_last_nameref_context: resolve SHELL_VAR V as in
 | ||
| 	  find_variable_last_context, but return the final nameref instead of
 | ||
| 	  what the final nameref resolves to
 | ||
| 	- find_variable_tempenv, find_variable_notempenv, find_global_variable,
 | ||
| 	  find_shell_variable, find_variable: modified to follow namerefs
 | ||
| 	- find_global_variable_noref: look up a global variable without following
 | ||
| 	  any namerefs
 | ||
| 	- find_variable_noref: look up a shell variable without following any
 | ||
| 	  namerefs
 | ||
| 	- bind_variable_internal: modify to follow a chain of namerefs in the
 | ||
| 	  global variables table; change to handle assignments to a nameref by
 | ||
| 	  following nameref chain
 | ||
| 	- bind_variable: modify to follow chain of namerefs when binding to a
 | ||
| 	  local variable
 | ||
| 	- unbind_variable: changes to unset nameref variables (unsets both
 | ||
| 	  nameref and variable it resolves to)
 | ||
| 
 | ||
| subst.c
 | ||
| 	- parameter_brace_expand_word: change to handle expanding nameref whose
 | ||
| 	  value is x[n]
 | ||
| 	- parameter_brace_expand_indir: change to expand in ksh93-compatible
 | ||
| 	  way if variable to be indirected is nameref and a simple (non-array)
 | ||
| 	  expansion
 | ||
| 	- param_expand: change to expand $foo where foo is a nameref whose value
 | ||
| 	  is x[n]
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_for_command: changes to implement ksh93 semantics when index
 | ||
| 	  variable is a nameref
 | ||
| 
 | ||
| builtins/setattr.def
 | ||
| 	- show_var_attributes: change to add `n' to flags list if att_nameref
 | ||
| 	  is set
 | ||
| 
 | ||
| builtins/set.def
 | ||
| 	- unset_builtin: changes to error messages to follow nameref variables
 | ||
| 
 | ||
| builtins/declare.def
 | ||
| 	- document new -n option
 | ||
| 	- declare_internal: new `-n' and `+n' options
 | ||
| 	- declare_internal: handle declare -n var[=value] and
 | ||
| 	  declare +n var[=value] for existing and non-existant variables.
 | ||
| 	  Enforce restriction that nameref variables cannot be arrays.
 | ||
| 	  Implement semi-peculiar ksh93 semantics for typeset +n ref=value
 | ||
| 
 | ||
| 				    7/5
 | ||
| 				    ---
 | ||
| variables.c
 | ||
| 	- unbind_variable: unset whatever a nameref resolves to, leaving the
 | ||
| 	  nameref variable itself alone
 | ||
| 	- unbind_nameref: new function, unsets a nameref variable, not the
 | ||
| 	  variable it references
 | ||
| 
 | ||
| variables.h
 | ||
| 	- unbind_nameref: extern declaration
 | ||
| 
 | ||
| builtins/set.def
 | ||
| 	- unset_builtin: modify to add -n option, which calls unbind_nameref
 | ||
| 	  leaving unbind_variable for the usual case.  This required slight
 | ||
| 	  changes and additions to the test suite
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- document namerefs and typeset/declare/local/unset -n
 | ||
| 
 | ||
| 				   7/13
 | ||
| 				   ----
 | ||
| lib/sh/casemod.c
 | ||
| 	- include shmbchar.h for is_basic and supporting pieces
 | ||
| 	- sh_casemod: use _to_wupper and _to_wlower to convert wide character
 | ||
| 	  case instead of TOUPPER and TOLOWER.  Fixes bug reported by
 | ||
| 	  Dennis Williamson <dennistwilliamson@gmail.com>, fix from
 | ||
| 	  Andreas Schwab <schwab@linux-m68k.org>
 | ||
| 	- cval: short-circuit and return ascii value if is_basic tests true
 | ||
| 	- sh_casemod: short-circuit and use non-multibyte case modification
 | ||
| 	  and toggling code if is_basic tests true
 | ||
| 
 | ||
| lib/readline/signals.c
 | ||
| 	- _rl_{block,release}_sigint: remove the code that actually blocks and
 | ||
| 	  releases the signals, since we defer signal handling until calls to
 | ||
| 	  RL_CHECK_SIGNALS()
 | ||
| 
 | ||
| lib/readline/{callback,readline,util}.c
 | ||
| 	- if HAVE_POSIX_SIGSETJMP is defined, use sigsetjmp/siglongjmp without
 | ||
| 	  saving and restoring the signal mask instead of setjmp/longjmp
 | ||
| 
 | ||
| lib/readline/rltty.c
 | ||
| 	- prepare_terminal_settings: don't mess with IXOFF setting if
 | ||
| 	  USE_XON_XOFF defined
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- add some text to the description of set -e clarifying its effect
 | ||
| 	  on shell functions and shell function execution.  Suggested by
 | ||
| 	  Rainer Blome <rainer.blome@gmx.de>
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- edit_and_execute_command: increment current_command_line_count before
 | ||
| 	  adding partial line to command history (for command-oriented-history
 | ||
| 	  because of rl_newline at beginning of function), then reset it to 0
 | ||
| 	  before adding the dummy history entry to make sure the dummy entry
 | ||
| 	  doesn't get added to previous incomplete command.  Partial fix for
 | ||
| 	  problem reported by Peng Yu <pengyu.ut@gmail.com>
 | ||
| 
 | ||
| 				   7/24
 | ||
| 				   ----
 | ||
| configure.in
 | ||
| 	- interix: define RECYCLES_PIDS.  Based on a report from Michael
 | ||
| 	  Haubenwallner <michael.haubenwallner@salomon.at>
 | ||
| 
 | ||
| 				   7/26
 | ||
| 				   ----
 | ||
| jobs.c
 | ||
| 	- make_child: call bgp_delete on the newly-created pid unconditionally.
 | ||
| 	  Some systems reuse pids before cycling through an entire set of
 | ||
| 	  CHILD_MAX/_SC_CHILD_MAX unique pids.  This is no longer dependent
 | ||
| 	  on RECYCLES_PIDS.  Based on a report from Michael Haubenwallner
 | ||
| 	  <michael.haubenwallner@salomon.at>
 | ||
| 
 | ||
| support/shobj-conf
 | ||
| 	- Mac OS X: drop MACOSX_DEPLOYMENT_TARGET=10.3 from the LDFLAGS. We
 | ||
| 	  can finally kill Panther
 | ||
| 
 | ||
| 				   7/28
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- command_substitute: make sure last_made_pid gets reset if make_child
 | ||
| 	  fails
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_command_internal: case cm_simple: decide whether or not to
 | ||
| 	  wait_for a child if already_making_children is non-zero, indicates
 | ||
| 	  that there is an unwaited-for child.  More of fix for bug report
 | ||
| 	  from Michael Haubenwallner <michael.haubenwallner@salomon.at>
 | ||
| 
 | ||
| jobs.c
 | ||
| 	- make_child: call delete_old_job (new_pid) unconditionally, don't
 | ||
| 	  bother to check whether or not pid wrap occurred.  Rest of fix for
 | ||
| 	  bug report from Michael Haubenwallner
 | ||
| 	  <michael.haubenwallner@salomon.at>
 | ||
| 
 | ||
| 				   7/29
 | ||
| 				   ----
 | ||
| shell.c
 | ||
| 	- subshell_exit: new function, exits the shell (via call to sh_exit())
 | ||
| 	  after calling any defined exit trap
 | ||
| 
 | ||
| externs.h
 | ||
| 	- subshell_exit: new extern declaration
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_command_internal: make sure to call subshell_exit for
 | ||
| 	  {} group commands executed asynchronously (&).  Part of fix for
 | ||
| 	  EXIT trap bug reported by Maarten Billemont <lhunath@lyndir.com>
 | ||
| 
 | ||
| sig.c
 | ||
| 	- reset_terminating_signals: make sure to set termsigs_initialized back
 | ||
| 	  to 0, so a subsequent call to initialize_terminating_signals works
 | ||
| 	  right.  Rest of fix for bug reported by Maarten Billemont
 | ||
| 	  <lhunath@lyndir.com>
 | ||
| 
 | ||
| {execute_cmd,general,jobs,mailcheck,mksyntax,test}.c
 | ||
| builtins/{cd,fc,pushd,ulimit}.def
 | ||
| lib/malloc/getpagesize.h
 | ||
| lib/sh/{clktck,fpurge,inet_aton,mailstat,oslib,pathcanon,pathphys,spell,strerror}.c
 | ||
| 	- make inclusion of <sys/param.h> dependent on HAVE_SYS_PARAM_H
 | ||
| 	  consistently
 | ||
| 
 | ||
| 				    8/6
 | ||
| 				    ---
 | ||
| lib/readline/histexpand.c
 | ||
| 	- history_expand_internal: now takes an additional argument saying
 | ||
| 	  whether the history expansion occurs within a quoted string, set to
 | ||
| 	  the open quote character
 | ||
| 	- history_expand_internal: use new argument instead of checking prev
 | ||
| 	  char and initializing quoted_search_delimiter, pass qc directly to
 | ||
| 	  get_history_event, where it allows a matching quote to terminate a
 | ||
| 	  string defining an event
 | ||
| 	- history_expand: change single-quote handling code so that if
 | ||
| 	  history_quotes_inhibit_expansion is 0, single quotes are treated
 | ||
| 	  like double quotes
 | ||
| 	- history_expand: change call to history_expand_internal to pass new
 | ||
| 	  argument of `"' if double-quoted string, `'' if single-quoted string;
 | ||
| 	  this lets history_expand decide what is a quoted string and what
 | ||
| 	  is not
 | ||
| 
 | ||
| 				    8/7
 | ||
| 				    ---
 | ||
| configure.in
 | ||
| 	- AC_CANONICAL_BUILD: invoke for later use
 | ||
| 
 | ||
| lib/readline/macro.c
 | ||
| 	- _rl_prev_macro_key: new function, inverse of _rl_next_macro_key:
 | ||
| 	  backs up the index into the current macro by 1
 | ||
| 
 | ||
| lib/readline/rlprivate.h
 | ||
| 	- _rl_prev_macro_key: extern declaration
 | ||
| 
 | ||
| 
 | ||
| lib/readline/readline.c
 | ||
| 	- _rl_dispatch_subseq, _rl_subseq_result: don't call _rl_unget_char
 | ||
| 	  if we're currently reading from a macro; call _rl_prev_macro_key
 | ||
| 	  instead.  Fixes bug reported by Clark Wang <clark.wang@oracle.com>
 | ||
| 
 | ||
| 				   8/13
 | ||
| 				   ----
 | ||
| builtins/evalstring.c
 | ||
| 	- evalstring(): new function, wrapper around parse_and_execute.
 | ||
| 	  make sure we handle cases where parse_and_execute can call `return'
 | ||
| 	  and short-circuit without cleaning up properly.  We call
 | ||
| 	  parse_and_execute_cleanup() then jump to the previous-saved return
 | ||
| 	  location
 | ||
| 
 | ||
| builtins/common.h
 | ||
| 	- extern declaration for evalstring()
 | ||
| 
 | ||
| builtins/eval.def
 | ||
| 	- eval_builtin: make sure we handle `eval " ... return"' in contexts
 | ||
| 	  where `return' is valid by calling evalstring().  Fixes bug with
 | ||
| 	  `eval return' in sourced files reported by Clark Wang
 | ||
| 	  <dearvoid@gmail.com>
 | ||
| 
 | ||
| trap.c
 | ||
| 	- run_pending_traps: call evalstring instead of parse_and_execute.
 | ||
| 	  XXX - still needs to handle saving and restoring token state in the
 | ||
| 	  presence of `return'; could use unwind_protects for that
 | ||
| 
 | ||
| builtins/mapfile.def
 | ||
| 	- run_callback: call evalstring instead of parse_and_execute
 | ||
| 
 | ||
| 				   8/15
 | ||
| 				   ----
 | ||
| bashline.c
 | ||
| 	- bash_filename_stat_hook: make sure we don't free local_dirname
 | ||
| 	  before using it to canonicalize any expanded filename.  Make sure
 | ||
| 	  it always points to *dirname and only free it if we're replacing
 | ||
| 	  it.
 | ||
| 
 | ||
| lib/readline/complete.c
 | ||
| 	- append_to_match: make sure we call rl_filename_stat_hook with
 | ||
| 	  newly-allocated memory to avoid problems with freeing it twice
 | ||
| 
 | ||
| 				   8/17
 | ||
| 				   ----
 | ||
| variables.c,config-top.h
 | ||
| 	- if ARRAY_EXPORT is defined to 1 when variables.c is compiled, the
 | ||
| 	  code that allows indexed arrays to be exported is enabled and
 | ||
| 	  included
 | ||
| 
 | ||
| 				   8/19
 | ||
| 				   ----
 | ||
| shell.c
 | ||
| 	- call start_debugger from main() only if dollar_vars[1] != 0 (close
 | ||
| 	  enough to a non-interactive shell, since we can be interactive with
 | ||
| 	  -i while running a shell script).  Fixes oddity reported by
 | ||
| 	  Techlive Zheng <techlivezheng@gmail.com>
 | ||
| 
 | ||
| 				   8/20
 | ||
| 				   ----
 | ||
| arrayfunc.c
 | ||
| 	- quote_array_assignment_chars: don't bother quoting if the word has
 | ||
| 	  not been marked as an assignment (W_ASSIGNMENT)
 | ||
| 	- quote_array_assignment_chars: turn on W_NOGLOB in the word flags
 | ||
| 	  so assignment statements don't undergo globbing.  Partial fix for
 | ||
| 	  problems reported by Dan Douglas <ormaaj@gmail.com>
 | ||
| 
 | ||
| 				   8/21
 | ||
| 				   ----
 | ||
| command.h
 | ||
| 	- W_NOBRACE: new word flag that means to inhibit brace expansion
 | ||
| 
 | ||
| subst.c
 | ||
| 	- brace_expand_word_list: suppress brace expansion for words with
 | ||
| 	  W_NOBRACE flag
 | ||
| 
 | ||
| 				   8/22
 | ||
| 				   ----
 | ||
| builtins/read.def
 | ||
| 	- read_builtin: don't call dequote_string on what we've read, even if
 | ||
| 	  we saw an escape character, unless (input_string && *input_string).
 | ||
| 	  We may have escaped an IFS whitespace character.  Fixes seg fault
 | ||
| 	  reported by <armandsl@gmail.com>
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_command_internal: set the_printed_command_except trap when
 | ||
| 	  about to execute a ( ... ) user subshell.  For now, set it only if
 | ||
| 	  ERR is trapped; can relax that later.  Fixes bug reported by
 | ||
| 	  Mike Frysinger <vapier@gentoo.org>
 | ||
| 
 | ||
| 				   8/23
 | ||
| 				   ----
 | ||
| jobs.c
 | ||
| 	- remove references to first_pid and pid_wrap, since we're not using
 | ||
| 	  them for anything anymore
 | ||
| 
 | ||
| 				   8/24
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- changes for W_NOBRACE everywhere appropriate: so it can be displayed
 | ||
| 	  for debugging, and passed out of expand_word_internal
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- small changes to make it clearer that the = and == operators are
 | ||
| 	  equivalent, and will cause pattern matching when used with [[.
 | ||
| 	  From a question from Michal Soltys <soltys@ziu.info>
 | ||
| 
 | ||
| doc/bashref.texi
 | ||
| 	- some small formatting changes from Karl Berry <karl@freefriends.org>
 | ||
| 
 | ||
| 				   8/27
 | ||
| 				   ----
 | ||
| lib/readline/doc/{history,rlman,rluserman}.texi
 | ||
| 	- some small formatting changes from Karl Berry <karl@freefriends.org>
 | ||
| 
 | ||
| arrayfunc.c
 | ||
| 	- assign_array_element_internal, assign_compound_array_list,
 | ||
| 	  unbind_array_element, array_value_internal: changes to make
 | ||
| 	  assignment statements to negative indices (a[-1]=2) and unsetting
 | ||
| 	  array elements using negative indices (unset 'a[-1]') work.
 | ||
| 	  From suggestions by Dennis Williamson <dennistwilliamson@gmail.com>
 | ||
| 	  and Chris F. A. Johnson <chris@cfajohnson.com>
 | ||
| 
 | ||
| subst.c
 | ||
| 	- array_length_reference: changes to make length references to array
 | ||
| 	  elements using negative indices (${#a[-1]}) work
 | ||
| 
 | ||
| 				   8/28
 | ||
| 				   ----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- document new treatment of negative indices to indexed arrays when
 | ||
| 	  assigning, referencing, calculating length, and unsetting
 | ||
| 
 | ||
| 				   8/29
 | ||
| 				   ----
 | ||
| shell.c
 | ||
| 	- show_shell_usage: add -l to list of shell invocation options (short
 | ||
| 	  for --login).  From Red Hat bug 852469
 | ||
| 
 | ||
| configure.ac
 | ||
| 	- renamed from configure.in, as latest autoconf versions want.  Patches
 | ||
| 	  Stefano Lattarini <stefano.lattarini@gmail.com>
 | ||
| 
 | ||
| MANIFEST,Makefile.in,doc/bashref.texi,support/mkconffiles
 | ||
| 	- configure.in -> configure.ac
 | ||
| 
 | ||
| 				    9/1
 | ||
| 				    ---
 | ||
| 
 | ||
| parse.y
 | ||
| 	- read_token_word: allow words like {array[ind]} to be valid redirection
 | ||
| 	  words for constructs like {x}<file
 | ||
| 
 | ||
| redir.c
 | ||
| 	- redir_varassign: bind_var_to_int already handles array assignments,
 | ||
| 	  so don't need to do anything more for things like {a[i]}<file
 | ||
| 	- redir_varvalue: changes to allow references to {a[i]} when
 | ||
| 	  performing redirections using valid_array_reference and
 | ||
| 	  get_array_value.  Adds functionality requested most recently by
 | ||
| 	  <unknown@vmw-les.eng.vmware.com>
 | ||
| 
 | ||
| lib/readline/display.c
 | ||
| 	- update_line: if the first difference between the old and new lines
 | ||
| 	  is completely before any invisible characters in the prompt, we
 | ||
| 	  should not adjust _rl_last_c_pos, since it's before any invisible
 | ||
| 	  characters.  Fixed in two places
 | ||
| 	- prompt_modechar: return a character indicating the editing mode:
 | ||
| 	  emacs (@), vi command (:), or vi insert (+)
 | ||
| 	- _rl_reset_prompt: new function, just calls rl_expand_prompt.  Will be
 | ||
| 	  inlined, placeholder for more changes
 | ||
| 	- expand_prompt: if show-mode-in-prompt is enabled, add a character to
 | ||
| 	  the front of the prompt indicating the editing mode, adjusting the
 | ||
| 	  various variables as appropriate to keep track of the number of
 | ||
| 	  visible characters and number of screen positions
 | ||
| 
 | ||
| lib/readline/bind.c
 | ||
| 	- show-mode-in-prompt: new bindable boolean variable, shadowed by
 | ||
| 	  _rl_show_mode_in_prompt variable
 | ||
| 	- hack_special_boolean_var: call _rl_reset_prompt when toggling or
 | ||
| 	  setting show-mode-in-prompt
 | ||
| 
 | ||
| lib/readline/readline.c
 | ||
| 	- readline_internal_setup: make sure the correct vi mode keymap is set
 | ||
| 	  before expanding the prompt string for the first time
 | ||
| 
 | ||
| lib/readline/misc.c
 | ||
| 	- rl_emacs_editing_mode: make sure to call _rl_reset_prompt if we're
 | ||
| 	  showing the editing mode in the prompt
 | ||
| 
 | ||
| lib/readline/rlprivate.h
 | ||
| 	- _rl_reset_prompt, _rl_show_mode_in_prompt: extern declarations
 | ||
| 
 | ||
| lib/readline/vi_mode.c
 | ||
| 	- rl_vi_insertion_mode: call _rl_reset_prompt
 | ||
| 	- rl_vi_movement_mode: call _rl_reset_prompt.  Finishes changes for
 | ||
| 	  showing mode in prompt string, originally requested by Miroslav
 | ||
| 	  Koskar <mkoskar@gmail.com> and most recently by Jordan Michael
 | ||
| 	  Ziegler <jziegler@bnl.gov>
 | ||
| 
 | ||
| doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
 | ||
| 	- document new show-mode-in-prompt variable, off by default
 | ||
| 
 | ||
| 				    9/3
 | ||
| 				    ---
 | ||
| 
 | ||
| jobs.c
 | ||
| 	- set_childmax: new function, external mechanism for other parts of
 | ||
| 	  the shell to set js.c_childmax, the number of saved exited child
 | ||
| 	  statuses to remember
 | ||
| jobs.h
 | ||
| 	- set_childmax: extern declaration
 | ||
| 
 | ||
| variables.c
 | ||
| 	- CHILD_MAX: new special variable, with sv_childmax function to
 | ||
| 	  run when it changes.  Setting CHILD_MAX to a value greater than
 | ||
| 	  zero but less than some maximum (currently 8192) sets the number of
 | ||
| 	  exited child statuses to remember.  set_childmax (jobs.c) ensures
 | ||
| 	  that the number does not drop below the posix-mandated minimum
 | ||
| 	  (CHILD_MAX)
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- CHILD_MAX: document new meaning and action when variable is set
 | ||
| 
 | ||
| 				    9/5
 | ||
| 				    ---
 | ||
| redir.c
 | ||
| 	- redir_varassign: call stupidly_hack_special_variables after
 | ||
| 	  assigning fd number to specified variable, so we can use constructs
 | ||
| 	  like {BASH_XTRACEFD}>foo.  Suggested by Pierre Gaston
 | ||
| 	  <pierre.gaston@gmail.com>
 | ||
| 
 | ||
| 				    9/8
 | ||
| 				    ---
 | ||
| expr.c
 | ||
| 	- readtok: invalidate previous contents of `curlval' before freeing
 | ||
| 	  and reallocating tokstr (which, chances are, will get the same
 | ||
| 	  pointer as before and render curlval inconsistent).  Fixes other
 | ||
| 	  bug reported by Dan Douglas <ormaaj@gmail.com>
 | ||
| 
 | ||
| 				    9/9
 | ||
| 				    ---
 | ||
| lib/readline/complete.c
 | ||
| 	- rl_username_completion_function: protect call to setpwent() with
 | ||
| 	  #ifdef (HAVE_GETPWENT)/#endif.  Fixes bug reported by
 | ||
| 	  Gerd Hofmann <gerd.hofmann.nbg@googlemail.com>
 | ||
| 
 | ||
| lib/readline/display.c
 | ||
| 	- rl_message: second and subsequent calls to rl_message can result in
 | ||
| 	  local_prompt being overwritten with new values (e.g., from the
 | ||
| 	  successive calls displaying the incremental search string).  Need
 | ||
| 	  to free before overwriting if it's not the same as the value saved
 | ||
| 	  in saved_local_prompt.  Fixes memory leak reported by
 | ||
| 	  Wouter Vermaelen <vermaelen.wouter@gmail.com>
 | ||
| 
 | ||
| lib/readline/{terminal.c,rlprivate.h}
 | ||
| 	- move CUSTOM_REDISPLAY_FUNC and CUSTOM_INPUT_FUNC defines from
 | ||
| 	  terminal.c to rlprivate.h so other files can use them
 | ||
| 
 | ||
| expr.c
 | ||
| 	- expr_streval: if noeval is non-zero, just return 0 right away,
 | ||
| 	  short-circuiting evaluation completely.  readtok will leave curtok
 | ||
| 	  set correctly without re-entering the evaluator at all.  Rest of
 | ||
| 	  fix for bug reported by Dan Douglas <ormaaj@gmail.com>
 | ||
| 
 | ||
| 				   9/11
 | ||
| 				   ----
 | ||
| 
 | ||
| parse.y
 | ||
| 	- parse_comsub: make sure the `reserved word ok in this context' flag
 | ||
| 	  is preserved after we read `do' followed by whitespace.  Fixes bug
 | ||
| 	  reported by Benoit Vaugon <benoit.vaugon@gmail.com>
 | ||
| 
 | ||
| 				   9/13
 | ||
| 				   ----
 | ||
| configure.ac,config.h.in
 | ||
| 	- enable-direxpand-default: new configure option, turns the `direxpand'
 | ||
| 	  shell option on by default
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- dircomplete_expand, dircomplete_expand_relpath: initialize to 1 if
 | ||
| 	  DIRCOMPLETE_EXPAND_DEFAULT is defined and non-zero
 | ||
| 
 | ||
| doc/bashref.texi
 | ||
| 	- enable-direxpand-default: document new configure option
 | ||
| 
 | ||
| 				   9/14
 | ||
| 				   ----
 | ||
| shell.c
 | ||
| 	- --protected: make option valid only when wordexp is compiled into
 | ||
| 	  the shell.  Fix from Roman Rakus <rrakus@redhat.com>
 | ||
| 
 | ||
| configure.ac
 | ||
| 	- HP NonStop (*-nsk*): compile --without-bash-malloc. Change from
 | ||
| 	  Joachim Schmitz <jojo@schmitz-digital.de>
 | ||
| 
 | ||
| 				   9/16
 | ||
| 				   ----
 | ||
| subst.c,execute_cmd.c,lib/glob/sm_loop.c,lib/sh/shquote.c
 | ||
| 	- minor code cleanups from Joachim Schmitz <jojo@schmitz-digital.de>
 | ||
| 
 | ||
| lib/readline/colors.h
 | ||
| 	- workaround for HP NonStop compiler issue with <stdbool.h> from
 | ||
| 	  Joachim Schmitz <jojo@schmitz-digital.de>
 | ||
| 
 | ||
| 				   9/17
 | ||
| 				   ----
 | ||
| builtins/printf.def
 | ||
| 	- printf_builtin: handle localtime returning NULL, as can happen when
 | ||
| 	  encountering overflow.  Bug report and initial fix from
 | ||
| 	  Eduardo A. Bustamante López <dualbus@gmail.com>
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- emphasize that brace expansion using character ranges ({a..c}) acts
 | ||
| 	  as if the C locale were in use.  Prompted by message from
 | ||
| 	  Marcel Giannelia <info@skeena.net>
 | ||
| 
 | ||
| 				   9/20
 | ||
| 				   ----
 | ||
| lib/sh/wcsnwidth.c
 | ||
| 	- wcsnwidth: new function, variant of wcwidth, returns the number of
 | ||
| 	  wide characters from a string that will be displayed to not exceed
 | ||
| 	  a specified max column position
 | ||
| 
 | ||
| 				   9/21
 | ||
| 				   ----
 | ||
| builtins/help.def
 | ||
| 	- show_builtin_command_help: break code that displays the short-doc
 | ||
| 	  for each builtin in two columns into a new function: dispcolumn
 | ||
| 	- wdispcolumn: multibyte-char version of dispcolumn; uses wide
 | ||
| 	  chars and printf "%ls" format.  Fixes problem reported by
 | ||
| 	  Nguy<75><79>n Thái Ng<4E><67>c Duy <pclouds@gmail.com>
 | ||
| 
 | ||
| 				   9/22
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- execute_disk_command: before running the command-not-found hook,
 | ||
| 	  call kill_current_pipeline() to make sure we don't add processes
 | ||
| 	  to an existing pipeline or wait for processes erroneously
 | ||
| 
 | ||
| 				   9/23
 | ||
| 				   ----
 | ||
| lib/readline/input.c
 | ||
| 	- rl_input_available_hook: new hook function, called from
 | ||
| 	  _rl_input_available (or _rl_input_queued) to return whether or not
 | ||
| 	  input is available wherever the input source is
 | ||
| 
 | ||
| lib/readline/doc/rltech.texi
 | ||
| 	- rl_input_available_hook: document
 | ||
| 
 | ||
| 				   9/27
 | ||
| 				   ----
 | ||
| lib/glob/sm_loop.c:
 | ||
| 	- GMATCH: after one or more `*', an instance of ?(x) can match zero or
 | ||
| 	  1 times (unlike ?, which has to match one character).  The old code
 | ||
| 	  failed if it didn't match at least once.  Fixes `a*?(x)' bug.
 | ||
| 	- GMATCH: if we hit the end of the search string, but not the end of
 | ||
| 	  the pattern, and the rest of the pattern is something that can
 | ||
| 	  match the NUL at the end of the search string, we should successfully
 | ||
| 	  match.  Fixes `a*!(x)' bug reported by <hans1worst@gmail.com>
 | ||
| 
 | ||
| 				   10/2
 | ||
| 				   ----
 | ||
| command.h
 | ||
| 	- add c_lock member to coproc structure for future use to tell who is
 | ||
| 	  manipulating it
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_coproc: block SIGCHLD while parent is forking coproc
 | ||
| 	  process and adding pid to sh_coproc struct to avoid race condition
 | ||
| 	  where child is reaped before the pid is assigned and the coproc is
 | ||
| 	  never marked as having died.  Fixes race condition identified by
 | ||
| 	  Davide Baldini <baldiniebaldini@gmail.com>
 | ||
| 	- add assignments to c_lock member of struct coproc in various
 | ||
| 	  functions that manipulate it; was used to identify race condition
 | ||
| 	- coproc_pidchk: don't call coproc_dispose to avoid using malloc and
 | ||
| 	  other functions in a signal handler context
 | ||
| 	- coproc_dispose: call BLOCK_SIGNAL/UNBLOCK_SIGNAL for SIGCHLD while
 | ||
| 	  manipulating the sh_coproc struct
 | ||
| 
 | ||
| 				   10/6
 | ||
| 				   ----
 | ||
| lib/readline/complete.c
 | ||
| 	- rl_display_match_list: if printing completions horizontally, don't
 | ||
| 	  bother with spacing calculations if limit == 1, which means we are
 | ||
| 	  printing one completion per line no matter what.  Fixes bug
 | ||
| 	  reported by David Kaasen <kaasen@nvg.ntnu.no>
 | ||
| 
 | ||
| 				   10/7
 | ||
| 				   ----
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: add error checking for nameref attribute and
 | ||
| 	  variable assignments: self-references, attempts to make an array
 | ||
| 	  variable a nameref
 | ||
| 
 | ||
| subst.c
 | ||
| 	- parameter_brace_expand: handle parameter_brace_expand_word returning
 | ||
| 	  &expand_param_fatal or &expand_param_error and return the appropriate
 | ||
| 	  error value
 | ||
| 	- parameter_brace_expand_word: if a nameref variable's value is not a
 | ||
| 	  valid identifier, return an error
 | ||
| 	- param_expand: if a nameref variable's value is not a valid identifier,
 | ||
| 	  return an error
 | ||
| 
 | ||
| test.c
 | ||
| 	- unary_operator: add new -R variable, returns true if variable is set
 | ||
| 	  and has the nameref attribute. From ksh93
 | ||
| 
 | ||
| builtins/test.def
 | ||
| 	- add -R to description of conditional commands for help test
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- document new -R unary conditional operator
 | ||
| 
 | ||
| 				   10/13
 | ||
| 				   -----
 | ||
| trap.c
 | ||
| 	- check_signals_and_traps: new function, convenience function for the
 | ||
| 	  rest of the shell to check for pending terminating and interrupt
 | ||
| 	  signals, and to check for and process any pending traps
 | ||
| 	- any_signals_trapped: new function, returns non-zero if any signals
 | ||
| 	  are trapped and -1 if not
 | ||
| 
 | ||
| trap.h
 | ||
| 	- extern declaration for check_signals_and_traps
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- bashline_reset: make sure we reset the event hook
 | ||
| 	- bash_event_hook: call check_signals_and_traps instead of just
 | ||
| 	  checking for terminating signals so we can run pending traps and
 | ||
| 	  react to interrupts, and reset the event hook when we're done
 | ||
| 
 | ||
| 
 | ||
| 				   10/14
 | ||
| 				   -----
 | ||
| trap.c
 | ||
| 	- trap_handler: if executing in a readline signal handler context,
 | ||
| 	  call bashline_set_event_hook to install bash_event_hook to process
 | ||
| 	  the signal (if bash cares about it)
 | ||
| 
 | ||
| sig.c
 | ||
| 	- sigint_sighandler: call bashline_set_event_hook to set the event
 | ||
| 	  hook if we're executing in a readline signal handler context
 | ||
| 
 | ||
| lib/readline/input.c
 | ||
| 	- rl_getc: call RL_CHECK_SIGNALS if read returns -1/EINTR and the caught
 | ||
| 	  signal is SIGINT or SIGQUIT rather than waiting until the next time
 | ||
| 	  around the loop
 | ||
| 	- rl_getc: call rl_event_hook after calling RL_CHECK_SIGNALS to allow
 | ||
| 	  an application signal handler to set the event hook in its own
 | ||
| 	  signal handler (e.g., like bash trap_handler or sigint_sighandler)
 | ||
| 
 | ||
| 
 | ||
| parse.y
 | ||
| 	- yy_readline_get: don't set interrupt_immediately before we call
 | ||
| 	  readline().  Inspired by report from lanshun zhou
 | ||
| 	  <zls.sogou@gmail.com>
 | ||
| 
 | ||
| input.c
 | ||
| 	- getc_with_restart: add call to run_pending_traps after call to
 | ||
| 	  CHECK_TERMSIG
 | ||
| 
 | ||
| lib/sh/zread.c
 | ||
| 	- zread: call check_signals_and_traps if read() returns -1/EINTR
 | ||
| 	  instead of just ignoring the EINTR and deferring handling any
 | ||
| 	  signal that generated it
 | ||
| 
 | ||
| builtins/mapfile.def
 | ||
| 	- mapfile: don't set interrupt_immediately before calling zgetline()
 | ||
| 	  (which uses zread internally)
 | ||
| 
 | ||
| builtins/read.def
 | ||
| 	- read_builtin: don't set interrupt_immediately before calling zread
 | ||
| 	  (moved code around so that it was only being set right around calls
 | ||
| 	  to zread to avoid signal handler conflicts).  Inspired by report
 | ||
| 	  from lanshun zhou <zls.sogou@gmail.com>
 | ||
| 	- edit_line: don't set interrupt_immediately around call to readline()
 | ||
| 	- include shmbutil.h
 | ||
| 	- read_builtin: don't call read_mbchar unless is_basic(c) returns
 | ||
| 	  false for the character we just read
 | ||
| 
 | ||
| 				   10/15
 | ||
| 				   -----
 | ||
| sig.c
 | ||
| 	- throw_to_top_level: if interrupt_state is non-zero, make sure that
 | ||
| 	  last_command_exit_value reflects 128+SIGINT if it's not already
 | ||
| 	  greater than 128
 | ||
| 
 | ||
| 				   10/20
 | ||
| 				   -----
 | ||
| builtins/wait.def
 | ||
| 	- WAIT_RETURN: set wait_signal_received back to 0 for the potential
 | ||
| 	  next call to wait
 | ||
| 
 | ||
| quit.h
 | ||
| 	- CHECK_WAIT_INTR: macro to check whether trap_handler handled a
 | ||
| 	  signal and set wait_signal_received; longjmp to wait_intr_buf in
 | ||
| 	  that case
 | ||
| 
 | ||
| jobs.c
 | ||
| 	- wait_for, waitchld: call CHECK_WAIT_INTR at the same places we call
 | ||
| 	  CHECK_TERMSIG to check for terminating signals
 | ||
| 	- wait_sigint_handler: don't longjmp out of the wait builtin unless
 | ||
| 	  interrupt_immediately is set; otherwise just SIGRETURN from the
 | ||
| 	  handler
 | ||
| 	- wait_sigint_handler: if interrupt_immediately not set, but we are
 | ||
| 	  executing in the wait builtin and SIGINT is not trapped, treat it
 | ||
| 	  as a `normally received' SIGINT: restore the signal handler and
 | ||
| 	  send SIGINT to ourselves
 | ||
| 	- waitchld: when in posix mode and running SIGCHLD traps, don't longjmp
 | ||
| 	  to wait_intr_buf (and let wait be interrupted) if we're running from
 | ||
| 	  a signal handler.  Wait for CHECK_WAIT_INTR to do the longjmp.
 | ||
| 	  run_pending_traps will run the SIGCHLD trap later
 | ||
| 
 | ||
| nojobs.c
 | ||
| 	- reap_zombie_children, wait_for_single_pid, wait_for: call
 | ||
| 	  CHECK_WAIT_INTR where we call CHECK_TERMSIG
 | ||
| 	- wait_sigint_handler: don't longjmp out of the wait builtin unless
 | ||
| 	  interrupt_immediately is set; otherwise just SIGRETURN from the
 | ||
| 	  handler
 | ||
| 
 | ||
| trap.c
 | ||
| 	- trap_handler: make sure wait_signal_received is set if the wait
 | ||
| 	  builtin is executing, and only longjmp if interrupt_immediately is
 | ||
| 	  set.  This whole set of fixes was prompted by report from
 | ||
| 	  lanshun zhou <zls.sogou@gmail.com>
 | ||
| 
 | ||
| 				   10/24
 | ||
| 				   -----
 | ||
| lib/glob/glob.c
 | ||
| 	- glob_filename: only check directory_name for globbing chars if
 | ||
| 	  it's of non-zero length
 | ||
| 
 | ||
| lib/sh/strchrnul.c
 | ||
| 	- new simpler implementation
 | ||
| 
 | ||
| subst.c
 | ||
| 	- command_substitute: call set_shellopts after turning off errexit
 | ||
| 	  in subshells so it's reflected in $SHELLOPTS
 | ||
| 
 | ||
| 				   11/7
 | ||
| 				   ----
 | ||
| builtins/evalstring.c
 | ||
| 	- parse_and_execute: treat ERREXIT case like reader_loop does: set
 | ||
| 	  variable_context to 0 before longjmping back to top_level. Don't
 | ||
| 	  run the unwind-protect context to avoid side effects from popping
 | ||
| 	  function contexts.  Part of fix for problem reported by Nikolai
 | ||
| 	  Kondrashov <nikolai.kondrashov@redhat.com>
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_simple_command: call unlink_fifo_list only if this is the
 | ||
| 	  last element of a pipeline (or not in a pipeline), rather than for
 | ||
| 	  every child.  Fixes difference in behavior between /dev/fd and
 | ||
| 	  FIFOs reported by Zev Weiss <zev@bewilderbeest.net>
 | ||
| 	- execute_null_command: do the same thing in the parent branch after
 | ||
| 	  make_child
 | ||
| 
 | ||
| 				   11/14
 | ||
| 				   -----
 | ||
| subst.c
 | ||
| 	- parameter_brace_expand: a variable is null if it's special ($@, $*),
 | ||
| 	  the expansion occurs within double quotes, and the expansion turns
 | ||
| 	  into a quoted null.  Fixes debian bug 692447 reported by
 | ||
| 	  Matrosov Dmitriy <sgf.dma@gmail.com>
 | ||
| 
 | ||
| jobs.c
 | ||
| 	- run_sigchld_trap: make sure `running_trap' sentinel is set
 | ||
| 	  appropriately
 | ||
| 	- waitchld: only run the sigchld trap if we're not in a signal
 | ||
| 	  handler, not running a trap, and executing the wait builtin.
 | ||
| 	  Otherwise, queue for later handling.  We still run one instance
 | ||
| 	  of the trap handler per exited child.  Bulk of fix for bug
 | ||
| 	  reported by Elliott Forney <idfah@cs.colostate.edu>
 | ||
| 
 | ||
| trap.c
 | ||
| 	- queue_sigchld_trap: set catch_flag so run_pending_traps notices,
 | ||
| 	  and set trapped_signal_received for completeness.  Rest of fix
 | ||
| 	  for bug reported by Elliott Forney <idfah@cs.colostate.edu>
 | ||
| 
 | ||
| lib/malloc/malloc.c
 | ||
| 	- block_signals: renamed to _malloc_block_signals, made public
 | ||
| 	- unblock_signals: renamed to _malloc_unblock_signals, made public
 | ||
| 
 | ||
| lib/malloc/imalloc.h
 | ||
| 	- extern declarations for _malloc_{un,}block_signals
 | ||
| 
 | ||
| lib/malloc/table.c
 | ||
| 	- mregister_alloc, mregister_free: block signals around table
 | ||
| 	  manipulation
 | ||
| 
 | ||
| 				   11/15
 | ||
| 				   -----
 | ||
| trap.c
 | ||
| 	- run_pending_traps: set SIG_INPROGRESS flag around calls to
 | ||
| 	  run_sigchld_handler so other parts of the shell know that the
 | ||
| 	  SIGCHLD trap handler is executing
 | ||
| 	- run_pending_traps: if we get a situation where we are looking at
 | ||
| 	  running a SIGCHLD trap but the trap string is IMPOSSIBLE_TRAP_HANDLER
 | ||
| 	  and the SIG_INPROGRESS flag is set, just skip it.  This is possible
 | ||
| 	  if run_pending_traps is called from a SIGCHLD trap handler run by
 | ||
| 	  run_sigchld_trap
 | ||
| 
 | ||
| doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
 | ||
| 	- corrected description of the effect of `set history-size 0'.  Report
 | ||
| 	  from Vesa-Matti J Kari <vmkari@cc.helsinki.fi>
 | ||
| 
 | ||
| include/stdc.h
 | ||
| 	- CPP_STRING: new define, replaces __STRING
 | ||
| 
 | ||
| lib/malloc/{malloc.c,imalloc.h}
 | ||
| 	- replace __STRING with CPP_STRING
 | ||
| 
 | ||
| 				   11/16
 | ||
| 				   -----
 | ||
| lib/readline/bind.c
 | ||
| 	- sv_histsize: if argument evaluates to a value < 0, unstifle the
 | ||
| 	  history
 | ||
| 
 | ||
| 				   11/22
 | ||
| 				   -----
 | ||
| redir.c
 | ||
| 	- do_redirection_internal: if we have REDIR_VARASSIGN set in the
 | ||
| 	  redirection flags and we set up `redirector' using fcntl or dup2,
 | ||
| 	  don't add a redirect to make sure it stays open.  Let the
 | ||
| 	  script programmer manage the file handle.  Fixes bug reported by
 | ||
| 	  Sam Liddicott <sam@liddicott.com>
 | ||
| 
 | ||
| 				   11/24
 | ||
| 				   -----
 | ||
| jobs.c
 | ||
| 	- wait_for_any_job: new function, waits for an unspecified background
 | ||
| 	  job to exit and returns its exit status.  Returns -1 on no background
 | ||
| 	  jobs or no children or other errors.  Calls wait_for with new
 | ||
| 	  sentinel value ANY_PID
 | ||
| 	- wait_for: changes to handle argument of ANY_PID: don't look up or
 | ||
| 	  try to modify the child struct, only go through the wait loop once.
 | ||
| 	  Return -1 if waitpid returns no children
 | ||
| 
 | ||
| jobs.h
 | ||
| 	- ANY_PID: new define
 | ||
| 
 | ||
| builtins/wait.def
 | ||
| 	- new option: -n. Means to wait for the next job and return its exit
 | ||
| 	  status.  Returns 127 if there are no background jobs (or no
 | ||
| 	  children).  Feature most recently requested by Elliott Forney
 | ||
| 	  <idfah@cs.colostate.edu>
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- document new `wait -n' option
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_command_internal: save make_command_string () result in a
 | ||
| 	  temp variable before calling savestring() on it; avoids evaluating
 | ||
| 	  make_command_string() result twice.  Fix from John E. Malmberg
 | ||
| 	  <wb8tyw@qsl.net>
 | ||
| 
 | ||
| 				   11/28
 | ||
| 				   -----
 | ||
| 
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: if an array variable is declared using `declare -a'
 | ||
| 	  or `declare -A', but not assigned a value, set the `invisible'
 | ||
| 	  attribute so the variable does not show up as set.  Fix for bug
 | ||
| 	  about variable initialization reported by Tim Friske <me@timfriske.com>
 | ||
| 
 | ||
| builtins/{mapfile,read}.def
 | ||
| 	- after calling find_or_make_array_variable, make sure the invisible
 | ||
| 	  flag is turned off, in case the variable was declared previously
 | ||
| 	  using `declare -a' or `declare -A'.  Side effect of above change to
 | ||
| 	  declare_internal
 | ||
| 
 | ||
| subst.c
 | ||
| 	- shell_expand_word_list: handle the W_ASSNGLOBAL flag and put -g into
 | ||
| 	  the list of options passed to make_internal_declare as appropriate.
 | ||
| 	  Fix for bug reported by Tim Friske <me@timfriske.com>
 | ||
| 
 | ||
| 				   11/30
 | ||
| 				   -----
 | ||
| test.c
 | ||
| 	- unary_op: make sure -v and -n check that the variable is not marked
 | ||
| 	  as invisible before calling var_isset.  Fix for bug reported by Tim
 | ||
| 	  Friske <me@timfriske.com>
 | ||
| 
 | ||
| 				   12/2
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- process_substitute: turn off the `expanding_redir' flag, which
 | ||
| 	  controls whether or not variables.c:find_variable_internal uses the
 | ||
| 	  temporary environment to find variables.  We want to use the
 | ||
| 	  temp environment, since we don't have to worry about order of
 | ||
| 	  evaluation in a subshell.  Fixes bug reported by Andrey Borzenkov
 | ||
| 	  <arvidjaar@gmail.com>
 | ||
| 
 | ||
| 				   12/4
 | ||
| 				   ----
 | ||
| lib/glob/glob.c
 | ||
| 	- glob_filename: changes to avoid null filenames and multiple entries
 | ||
| 	  returned for patterns like **/** (globstar enabled).  Fixes bug
 | ||
| 	  reported by Ulf Magnusson <ulfalizer@gmail.com>
 | ||
| 
 | ||
| 				   12/10
 | ||
| 				   -----
 | ||
| lib/glob/glob.c
 | ||
| 	- glob_filename: finish up a series of changes to make globstar-style	
 | ||
| 	  globbing more efficient, avoid more duplicate filenames, and be more
 | ||
| 	  compatible with other shells that implement it
 | ||
| 		o collapse a sequence of **/**/** to one **
 | ||
| 		o note when the directory name is all ** or ends in ** so we
 | ||
| 		  can treat it specially when the filename is **
 | ||
| 	  All inspired by report from Andrey Borzenkov <arvidjaar@gmail.com>
 | ||
| 
 | ||
| lib/sh/zread.c
 | ||
| 	- zreadn: new function, like zread, but takes an additional argument
 | ||
| 	  saying how many bytes to read into the local buffer.  Can be used to
 | ||
| 	  implement `read -N' without so many one-byte calls to zreadc.  Code
 | ||
| 	  from Mike Frysinger <vapier@gentoo.org>
 | ||
| 
 | ||
| 				   12/12
 | ||
| 				   -----
 | ||
| lib/glob/sm_loop.c
 | ||
| 	- PATSCAN (glob_patscan): if passed string already points to end of
 | ||
| 	  pattern, return NULL immediately.  Fixes problem with
 | ||
| 	  extglob_skipname reported by Raphaël Droz <raphael.droz@gmail.com>
 | ||
| 
 | ||
| 				   12/13
 | ||
| 				   -----
 | ||
| execute_cmd.c
 | ||
| 	- execute_coproc: handle the command's exit status being inverted
 | ||
| 	  (an oversight).  Fixes bug reported by DJ Mills
 | ||
| 	  <danielmills1@gmail.com> and Andreas Schwab <schwab@linux-m68k.org>
 | ||
| 
 | ||
| 				   12/14
 | ||
| 				   -----
 | ||
| lib/readline/readline.c
 | ||
| 	- bind_arrow_keys_internal: add MINGW key bindings for Home, End,
 | ||
| 	  Delete, and Insert keys.  Fix from Pierre Muller
 | ||
| 	  <pierre.muller@ics-cnrs.unistra.fr>
 | ||
| 
 | ||
| builtins/printf.def
 | ||
| 	- printf_builtin: '%()T' conversion: if there is no argument supplied,
 | ||
| 	  behave as if -1 had been supplied (current time).  ksh93-like feature
 | ||
| 	  suggested by Clark Wang <dearvoid@gmail.com>
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- document new printf %()T default argument behavior
 | ||
| 
 | ||
| 				   12/15
 | ||
| 				   -----
 | ||
| lib/readline/display.c
 | ||
| 	- displaying_prompt_first_line: new variable, indicates whether or
 | ||
| 	  not the first line of output is displaying the prompt.  Always true
 | ||
| 	  in normal mode, sometimes false in horizontal scrolling mode
 | ||
| 	- rl_redisplay: set displaying_prompt_first_line to true unless we
 | ||
| 	  are in horizontal mode; set to false in horizontal mode if the left
 | ||
| 	  margin of the displayed line is greater than the end of the prompt
 | ||
| 	  string
 | ||
| 	- rl_redisplay: when in horizontal scroll mode, don't adjust
 | ||
| 	  _rl_last_c_pos by the wrap offset unless the line is displaying
 | ||
| 	  a prompt containing invisible chars
 | ||
| 	- update line: don't adjust _rl_last_c_pos by the wrap offset unless
 | ||
| 	  the line is displaying a prompt containing invisible chars
 | ||
| 	- update_line: if shrinking the line by reducing the number of
 | ||
| 	  displayed characters, but we have already moved the cursor to the
 | ||
| 	  beginning of the line where the first difference starts, don't
 | ||
| 	  try to delete characters
 | ||
| 
 | ||
| builtins/read.def
 | ||
| 	- unbuffered_read: set to 2 if invoked as `read -N'
 | ||
| 	- if unbuffered_read is set to 2, compute the number of chars we
 | ||
| 	  need to read and read that many with zreadn.  Posix mode still
 | ||
| 	  uses zreadintr.  Code from Mike Frysinger <vapier@gentoo.org>
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- read: make it clear that if read times out, it saves any input
 | ||
| 	  read to that point into the variable arguments.  Report from
 | ||
| 	  Fiedler Roman <Roman.Fiedler@ait.ac.at>
 | ||
| 
 | ||
| subst.c
 | ||
| 	- command_substitute: change direct assignment of exit_immediately_on_error
 | ||
| 	  to use change_flag ('e', FLAG_OFF) instead
 | ||
| 
 | ||
| flags.c
 | ||
| 	- use errexit_flag as the variable modified by changes to the -e
 | ||
| 	  option, reflect those changes to exit_immediately_on_error
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_builtin: new global variable, builtin_ignoring_errexit, set
 | ||
| 	  to 0 by default and set to 1 if eval/source/command executing in a
 | ||
| 	  context where -e should be ignored
 | ||
| 	- execute_builtin: set exit_immediately_on_error to errextit_flag
 | ||
| 	  after executing eval/source/command in a context where -e should
 | ||
| 	  be ignored
 | ||
| 
 | ||
| flags.c
 | ||
| 	- if builtin_ignoring_errexit is set, changes to errexit_flag are
 | ||
| 	  not reflected in the setting of exit_immediately_on_error.  Fixes
 | ||
| 	  bug reported by Robert Schiele <rschiele@gmail.com>
 | ||
| 
 | ||
| 				   12/23
 | ||
| 				   -----
 | ||
| include/posixjmp.h
 | ||
| 	- setjmp_nosigs: new define, call setjmp in such a way that it will
 | ||
| 	  not manipulate the signal mask
 | ||
| 
 | ||
| {expr,test,trap}.c
 | ||
| 	- setjmp_nosigs: call instead of setjmp; don't need to manipulate
 | ||
| 	  signal mask
 | ||
| 
 | ||
| builtins/read.def
 | ||
| 	- read_builtin: setjmp_nosigs: call instead of setjmp; don't need
 | ||
| 	  to manipulate signal mask
 | ||
| 
 | ||
| builtins/evalstring.c:
 | ||
| 	- parse_and_execute: setjmp_nosigs: call instead of setjmp; don't need
 | ||
| 	  to manipulate signal mask
 | ||
| 	- parse_string: setjmp_nosigs: call instead of setjmp; don't need
 | ||
| 	  to manipulate signal mask
 | ||
| 	- parse_and_execute: save and restore the signal mask if we get a
 | ||
| 	  longjmp that doesn't cause us to return or exit (case DISCARD)
 | ||
| 
 | ||
| 				   12/24
 | ||
| 				   -----
 | ||
| general.c
 | ||
| 	- bash_tilde_expand: only set interrupt_immediately if there are no
 | ||
| 	  signals trapped; we want to jump to top level if interrupted but
 | ||
| 	  not run any trap commands
 | ||
| 
 | ||
| 				   12/25
 | ||
| 				   -----
 | ||
| jobs.c
 | ||
| 	- run_sigchld_trap: no longer set interrupt_immediately before calling
 | ||
| 	  parse_and_execute, even if this is no longer run in a signal handler
 | ||
| 	  context
 | ||
| 
 | ||
| input.c
 | ||
| 	- getc_with_restart: add call to QUIT instead of CHECK_TERMSIG
 | ||
| 
 | ||
| parse.y
 | ||
| 	- yy_stream_get: now that getc_with_restart calls QUIT, don't need to
 | ||
| 	  set interrupt_immediately (already had call to run_pending_traps)
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_subshell_builtin_or_function,execute_function,execute_in_subshell:
 | ||
| 	  setjmp_nosigs: call instead of setjmp when saving return_catch; don't
 | ||
| 	  need to manipulate signal mask
 | ||
| 	- execute_subshell_builtin_or_function,execute_in_subshell:
 | ||
| 	  setjmp_nosigs: call instead of setjmp where appropriate when saving
 | ||
| 	  top_level; don't need to manipulate signal mask if we're going to
 | ||
| 	  exit right away
 | ||
| 
 | ||
| subst.c
 | ||
| 	- command_substitute: setjmp_nosigs: call instead of setjmp when saving
 | ||
| 	  return_catch; don't need to manipulate signal mask
 | ||
| 	- command_substitute: setjmp_nosigs: call instead of setjmp where
 | ||
| 	  appropriate when saving top_level; don't need to manipulate signal
 | ||
| 	  mask if we're going to exit right away
 | ||
| 
 | ||
| trap.c
 | ||
| 	- run_exit_trap: setjmp_nosigs: call instead of setjmp when saving
 | ||
| 	  return_catch; don't need to manipulate signal mask
 | ||
| 	- run_exit_trap: setjmp_nosigs: call instead of setjmp where
 | ||
| 	  appropriate when saving top_level; don't need to manipulate signal
 | ||
| 	  mask if we're going to exit right away
 | ||
| 	- _run_trap_internal: setjmp_nosigs: call instead of setjmp when saving
 | ||
| 	  return_catch; don't need to manipulate signal mask
 | ||
| 
 | ||
| builtins/evalfile.c
 | ||
| 	- _evalfile: setjmp_nosigs: call instead of setjmp when saving
 | ||
| 	  return_catch; don't need to manipulate signal mask
 | ||
| 
 | ||
| builtins/evalstring.c
 | ||
| 	- evalstring: setjmp_nosigs: call instead of setjmp when saving
 | ||
| 	  return_catch; don't need to manipulate signal mask
 | ||
| 
 | ||
| shell.c
 | ||
| 	- main: setjmp_nosigs: call instead of setjmp where appropriate when
 | ||
| 	  saving top_level; don't need to manipulate signal mask if we're
 | ||
| 	  going to exit right away
 | ||
| 	- run_one_command: setjmp_nosigs: call instead of setjmp where
 | ||
| 	  appropriate when saving top_level; don't need to manipulate signal
 | ||
| 	  mask if we're going to exit right away
 | ||
| 	- run_wordexp: setjmp_nosigs: call instead of setjmp where
 | ||
| 	  appropriate when saving top_level; don't need to manipulate signal
 | ||
| 	  mask if we're going to exit right away
 | ||
| 
 | ||
| eval.c
 | ||
| 	- reader_loop: save and restore the signal mask if we get a longjmp
 | ||
| 	  that doesn't cause us to return or exit (case DISCARD)
 | ||
| 
 | ||
| 				   12/26
 | ||
| 				   -----
 | ||
| parse.y
 | ||
| 	- shell_input_line_{index,size,len}: now of type size_t; in some cases
 | ||
| 	  the unsigned property makes a difference
 | ||
| 	- STRING_SAVER: saved_line_{size,index} now of type size_t
 | ||
| 	- shell_getc: don't allow shell_input_line to grow larger than SIZE_MAX;
 | ||
| 	  lines longer than that are truncated until read sees a newline;
 | ||
| 	  addresses theoretical buffer overflow described by Paul Eggert
 | ||
| 	  <eggert@cs.ucla.edu>
 | ||
| 	- set_line_mbstate: size_t changes like shell_getc
 | ||
| 	- shell_getc: if shell_input_line is larger than 32K, free it and
 | ||
| 	  start over to avoid large memory allocations sticking around
 | ||
| 
 | ||
| variables.c
 | ||
| 	- bind_global_variable: new function, binds value to a variable in
 | ||
| 	  the global shell_variables table
 | ||
| 
 | ||
| variables.h
 | ||
| 	- bind_global_variable: new extern declaration
 | ||
| 
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: if -g given with name=value, but variable is not
 | ||
| 	  found in the global variable table, make sure to call
 | ||
| 	  bind_global_variable so the variable is created and modified at
 | ||
| 	  global scope.  Fixes a bug where declare -g x=y could modify `x'
 | ||
| 	  at a previous function scope
 | ||
| 
 | ||
| command.h
 | ||
| 	- W_ASSIGNARRAY: new word flag, compound indexed array assignment
 | ||
| 
 | ||
| subst.h
 | ||
| 	- ASS_MKGLOBAL: new assignment flag, forcing global assignment even in
 | ||
| 	  a function context, used by declare -g
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- fix_assignment_words: set W_ASSIGNARRAY flag if -a option given to
 | ||
| 	  declaration builtin
 | ||
| 
 | ||
| subst.c
 | ||
| 	- do_assignment_internal: explicitly handle case where we are
 | ||
| 	  executing in a function and we want to create a global array or
 | ||
| 	  assoc variable
 | ||
| 	- shell_expand_word_list: call make_internal_declare if -a option
 | ||
| 	  given to declaration builtin (W_ASSIGNARRAY); handle -g option with
 | ||
| 	  it (W_ASSNGLOBAL).  Fixes inconsistency noticed by Vicente Couce
 | ||
| 	  Diaz <vituko@gmail.com>, where declare -ag foo=(bar) could modify
 | ||
| 	  array variable foo at previous function scope, not global scope
 | ||
| 
 | ||
| 				   12/27
 | ||
| 				   -----
 | ||
| bashline.c
 | ||
| 	- Minix needs the third argument to tputs to be a void funtion taking
 | ||
| 	  an int argument, not an int-returning function.  Fix from
 | ||
| 	  John E. Malmberg <wb8tyw@qsl.net> as part of VMS bash port
 | ||
| 
 | ||
| 				   12/29
 | ||
| 				   -----
 | ||
| configure.ac,version.c,patchlevel.h
 | ||
| 	- bash-4.3-devel: new version, new shell compatibility level (43)
 | ||
| 
 | ||
| subst.c
 | ||
| 	- parameter_brace_patsub: put the bash-4.2 code back in from the
 | ||
| 	  change of 3/3 that runs the replacement string through quote
 | ||
| 	  removal, make it dependent on shell_compatibility_level <= 42
 | ||
| 
 | ||
| builtins/shopt.def
 | ||
| 	- compat42: new shopt option
 | ||
| 	- set_compatibility_level: change logic to set and unset various
 | ||
| 	  compat variables and shell_compatibility_level
 | ||
| 
 | ||
| COMPAT
 | ||
| 	- new documentation for bash-4.3 compatibility changes
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- compat42: document new shopt option
 | ||
| 
 | ||
| builtins/shopt.def
 | ||
| 	- set_compatibility_opts: new function, sets the various shopt
 | ||
| 	  compat variables based on the value of shell_compatibility_level
 | ||
| 
 | ||
| builtins/common.h
 | ||
| 	- set_compatibility_opts: new extern declaration
 | ||
| 
 | ||
| variables.c
 | ||
| 	- BASH_COMPAT: new special variable; sets the shell compatibility
 | ||
| 	  level.  Accepts values in decimal (4.2) or integer (42) form;
 | ||
| 	  Unsetting variable, setting it to empty string, or setting it to
 | ||
| 	  out-of-range value sets the shell's compatibility level to the
 | ||
| 	  default for the current version.  Valid values are 3.1/31 through
 | ||
| 	  the current version
 | ||
| 	- sv_shcompat: new function implementing logic for BASH_COMPAT
 | ||
| 
 | ||
| variables.h
 | ||
| 	- sv_shcompat: new extern declaration
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- BASH_COMPAT: description of new variable
 | ||
| 
 | ||
| lib/readline/complete.c
 | ||
| 	- _rl_colored_stats: default back to 0 for 4.3 release branch
 | ||
| 
 | ||
| 				 1/5/2013
 | ||
| 				 --------
 | ||
| quit.h
 | ||
| 	- remove spurious call to itrace in CHECK_WAIT_INTR
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- bash_event_hook: if we're going to jump to top_level, make sure we
 | ||
| 	  clean up after readline() by calling rl_cleanup_after_signal().
 | ||
| 	  Fixes bug reported against devel branch by Raphaël Droz
 | ||
| 	  <raphael.droz@gmail.com>
 | ||
| 	- bash_event_hook: reset the event hook before checking for signals
 | ||
| 	  or traps in case we longjmp
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- small additions to the set -e section to make it more clear that
 | ||
| 	  contexts where -e is ignored extend to compound commands as well
 | ||
| 	  as shell functions
 | ||
| 
 | ||
| lib/readline/readline.h
 | ||
| 	- rl_signal_event_hook: new extern declaration
 | ||
| 
 | ||
| lib/readline/input.c
 | ||
| 	- rl_signal_event_hook: new variable, hook function to call when a
 | ||
| 	  function (currently just read(2)) is interrupted by a signal and
 | ||
| 	  not restarted
 | ||
| 	- rl_getc: call rl_signal_event_hook instead of rl_event_hook
 | ||
| 
 | ||
| lib/readline/doc/rltech.texi
 | ||
| 	- rl_signal_event_hook: document new function
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- changes to set rl_signal_event_hook instead of rl_event_hook
 | ||
| 
 | ||
| lib/readline/readline.h
 | ||
| 	- change readline version numbers to 6.3
 | ||
| 
 | ||
| 				    1/6
 | ||
| 				    ---
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- a couple of changes to the descriptions of the ERR trap and its
 | ||
| 	  effects based on a message from Rob Nagler <nagler@bivio.biz>
 | ||
| 
 | ||
| 				    1/9
 | ||
| 				    ---
 | ||
| expr.c
 | ||
| 	- expassign: invalidate curlval before freeing and NULLing tokstr to
 | ||
| 	  avoid aliasing issues.  Fixes bug reported by Eduardo A. Bustamante
 | ||
| 	  López<dualbus@gmail.com>  and Dan Douglas <ormaaj@gmail.com>
 | ||
| 
 | ||
| braces.c
 | ||
| 	- array_concat: don't be so aggressive in trying to short-circuit. We
 | ||
| 	  can only short-circuit if we have a single-element array where the
 | ||
| 	  element is an empty string (array[0] == "" array[1] = 0x0).  Existing
 | ||
| 	  practice requires us to replicate arrays and prefix or append empty
 | ||
| 	  strings.  Fixes bug reported by Eduardo A. Bustamante López
 | ||
| 	  <dualbus@gmail.com>
 | ||
| 
 | ||
| 				   1/11
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- execute_builtin: since mapfile uses evalstring() to run its callbacks
 | ||
| 	  internally, just like eval, so it needs to handle the case where the
 | ||
| 	  temp environment given to mapfile persists throughout the entire
 | ||
| 	  set of callback commands.  This might be a problem with trap also, but
 | ||
| 	  trap isn't run in the same way.  Fixes bug reported by Dan Douglas
 | ||
| 	  <ormaaj@gmail.com>
 | ||
| 
 | ||
| 				   1/13
 | ||
| 				   ----
 | ||
| redir.c
 | ||
| 	- redirection_error: before expanding the redirection word (if
 | ||
| 	  expandable_redirection_filename returns true), disable command
 | ||
| 	  substitution during expansion.  Fixes bug reported by Dan Douglas
 | ||
| 	  <ormaaj@gmail.com>
 | ||
| 
 | ||
| subst.c
 | ||
| 	- expand_word_internal: case '\\': if the next character is an IFS
 | ||
| 	  character, and the expansion occurs within double quotes, and the
 | ||
| 	  character is not one for which backslash retains its meaning, add
 | ||
| 	  the (escaped) '\' and the (escaped) character.  Fixes bug reported
 | ||
| 	  by Dan Douglas <ormaaj@gmail.com>
 | ||
| 
 | ||
| 				   1/15
 | ||
| 				   ----
 | ||
| builtins/cd.def
 | ||
| 	- cd_builtin: make sure call to internal_getopt handles -e option.
 | ||
| 	  Fixes bug reported by <mashimiao.fnst@cn.fujitsu.com>
 | ||
| 
 | ||
| 				   1/17
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- expand_word_list_internal: make sure tempenv_assign_error is
 | ||
| 	  initialized to 0
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_simple_command: make sure tempenv_assign_error is reset to 0
 | ||
| 	  after it's tested to see if an error should force the shell to exit.
 | ||
| 	  Fixes problem where a the failure of a tempenv assignment preceding
 | ||
| 	  a non-special builtin `sticks' and causes the next special builtin
 | ||
| 	  to exit the shell.  From a discussion on bug-bash started by
 | ||
| 	  douxin <wq-doux@cn.fujitsu.com>
 | ||
| 
 | ||
| 				   1/20
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- parameter_brace_expand_rhs: call stupidly_hack_special_variables
 | ||
| 	  after assigning with ${param[:]=word} even if IFS is changing.
 | ||
| 	  Suggested by Dan Douglas <ormaaj@gmail.com> [TENTATIVE, needs work
 | ||
| 	  on IFS side effects]
 | ||
| 
 | ||
| command.h
 | ||
| 	- W_GLOBEXP (which was unused) is now W_SPLITSPACE (which isn't used
 | ||
| 	  yet)
 | ||
| 
 | ||
| {execute_cmd,subst,variables}.c
 | ||
| 	- removed all code that mentioned W_GLOBEXP
 | ||
| 	- removed mention of gnu_argv_flags and code that set it
 | ||
| 
 | ||
| 				   1/22
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- param_expand: set W_SPLITSPACE if we expand (unquoted) $* and
 | ||
| 	  IFS is unset or null so we can be sure to split this on spaces
 | ||
| 	  no matter what happens with IFS later
 | ||
| 	- expand_word_internal: note that param_expand returns W_SPLITSPACE
 | ||
| 	  in the returned word flags and keep track of that state with
 | ||
| 	  `split_on_spaces'
 | ||
| 
 | ||
| 				   1/23
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- expand_word_internal: if split_on_spaces is non-zero, make sure
 | ||
| 	  we split `istring' on spaces and return the resultant word.  The
 | ||
| 	  previous expansions should have quoted spaces in the positional
 | ||
| 	  parameters where necessary.  Suggested by Dan Douglas
 | ||
| 	  <ormaaj@gmail.com>
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_command_internal: make sure any subshell forked to run a
 | ||
| 	  group command or user subshell at the end of a pipeline runs any
 | ||
| 	  EXIT trap it sets.  Fixes debian bash bug 698411
 | ||
| 	  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=698411
 | ||
| 
 | ||
| subst.c
 | ||
| 	- shell_expand_word_list: fix code that creates args for and calls
 | ||
| 	  make_internal_declare to avoid calling it twice (missing `else'
 | ||
| 	  in 12/26 change)
 | ||
| 	- do_assignment_internal: fix code from 12/26 change to fix problem
 | ||
| 	  where an existing assoc variable could be converted to an array
 | ||
| 	  without checking `mkassoc'
 | ||
| 
 | ||
| 				   1/24
 | ||
| 				   ----
 | ||
| builtins/evalfile.c
 | ||
| 	- _evalfile: add missing `close (fd)' calls before returning to
 | ||
| 	  avoid fd leaks.  Bug and fix from Roman Rakus <rrakus@redhat.com>
 | ||
| 
 | ||
| 				   1/25
 | ||
| 				   ----
 | ||
| builtins/read.def
 | ||
| 	- read_builtin: don't try to play tricks with the top of the unwind-
 | ||
| 	  protect stack after read gets a SIGALRM; save input_string to new
 | ||
| 	  memory, run the stack, then restore input_string and assign the
 | ||
| 	  variables.  Part of fix for bug reported by konsolebox
 | ||
| 	  <konsolebox@gmail.com>; the rest of the fix is with the changes in
 | ||
| 	  trap and signal handling and doing away with interrupt_immediately
 | ||
| 
 | ||
| 				   1/26
 | ||
| 				   ----
 | ||
| redir.c
 | ||
| 	- redirection_expand, write_here_string, write_here_document: before
 | ||
| 	  calling any of the word expansion functions, after setting
 | ||
| 	  expanding_redir to 1 (which bypasses the temp environment in the
 | ||
| 	  variable lookup functions), call sv_ifs to reset the cached IFS-
 | ||
| 	  related variables set by subst.c:setifs().  This ensures that
 | ||
| 	  redirections will not get any IFS values that are set in the
 | ||
| 	  temporary environment, as Posix specifies.  Then, after the word
 | ||
| 	  expansions, after resetting expanding_redir to 0, call sv_ifs
 | ||
| 	  again to make sure the cached IFS values are set from any
 | ||
| 	  assignments in the temporary environment.  We force executing_builtin
 | ||
| 	  to 1 to `fool' the variable lookup functions into using any temp
 | ||
| 	  environment, then reset it to its old value after sv_ifs returns.
 | ||
| 	  This is what allows read() to use the (cached) IFS variables set
 | ||
| 	  in the temp environment. Fixes inconsistency reported by Dan Douglas
 | ||
| 	  <ormaaj@gmail.com>
 | ||
| 
 | ||
| 				   1/29
 | ||
| 				   ----
 | ||
| lib/readline/display.c
 | ||
| 	- update_line: fix off-by-one error when updating vis_lbreaks array
 | ||
| 	  in a multibyte locale that occurs when moving multibyte chars from
 | ||
| 	  one line down to another.  Bug report and fix from Egmont
 | ||
| 	  Koblinger <egmont@gmail.com>
 | ||
| 
 | ||
| 				   1/30
 | ||
| 				   ----
 | ||
| configure.ac
 | ||
| 	- changed version to 4.3-alpha
 | ||
| 
 | ||
| redir.c
 | ||
| 	- redir_open: handle open returning -1/EINTR, which seems to happen
 | ||
| 	  a lot with FIFOs and SIGCHLD, and call QUIT to handle other
 | ||
| 	  signals that can interrupt open(2).  Bug report and initial fix
 | ||
| 	  from Mike Frysinger <vapier@gentoo.org>
 | ||
| 
 | ||
| 				   1/31
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- parameter_brace_expand: make sure to propagate the PF_ASSIGNRHS flag
 | ||
| 	  to parameter_brace_expand_word
 | ||
| 	- parameter_brace_expand_word: make sure that if the PF_ASSIGNRHS flag
 | ||
| 	  is set and we are expanding ${a[@]} or ${a[*]} we set quoted to
 | ||
| 	  include Q_DOUBLE_QUOTES before calling array_value_internal, mirroring
 | ||
| 	  what we do for $@ and $*.  Fixes inconsistency reported by Dan
 | ||
| 	  Douglas <ormaaj@gmail.com>
 | ||
| 
 | ||
| configure.ac
 | ||
| 	- use AC_CHECK_TOOL instead of AC_CHECK_PROG to check for ar, since it
 | ||
| 	  will find $host-prefixed versions of utilities.  Report and fix from
 | ||
| 	  Mike Frysinger <vapier@gentoo.org>
 | ||
| 
 | ||
| builtins/setattr.def
 | ||
| 	- set_var_attribute: check whether bind_variable (called when the
 | ||
| 	  variable whose attributes are being modified is found in the temp
 | ||
| 	  environment) just modified a read-only global variable, and don't
 | ||
| 	  bother marking the temporary variable for propagation if so.  The
 | ||
| 	  propagation is superfluous and will result in a strange error
 | ||
| 	  message
 | ||
| 
 | ||
| 				    2/2
 | ||
| 				    ---
 | ||
| variables.c
 | ||
| 	- initialize_shell_variables: don't try to import function definitions
 | ||
| 	  with invalid names from the environment if already in posix mode,
 | ||
| 	  but create them as (invisible) exported variables so they pass
 | ||
| 	  through the environment.  Print an error message so user knows
 | ||
| 	  what's wrong.  Fixes bug reported by Tomas Trnka <ttrnka@mail.muni.cz>
 | ||
| 
 | ||
| 				    2/9
 | ||
| 				    ---
 | ||
| 
 | ||
| builtins/read.def
 | ||
| 	- sigalrm_seen, alrmbuf: now global so the rest of the shell (trap.c)
 | ||
| 	  can use them
 | ||
| 	- sigalrm: just sets flag, no longer longjmps to alrmbuf; problem was
 | ||
| 	  longjmp without manipulating signal mask, leaving SIGALRM blocked
 | ||
| 
 | ||
| quit.h
 | ||
| 	- move CHECK_ALRM macro here from builtins/read.def so trap.c:
 | ||
| 	  check_signals() can call it
 | ||
| 
 | ||
| trap.c
 | ||
| 	- check_signals: add call to CHECK_ALRM before QUIT
 | ||
| 	- check_signals_and_traps: call check_signals() instead of including
 | ||
| 	  CHECK_ALRM and QUIT inline.  Integrating check for read builtin's
 | ||
| 	  SIGALRM (where zread call to check_signals_and_traps can see it)
 | ||
| 	  fixes problem reported by Mike Frysinger <vapier@gentoo.org>
 | ||
| 
 | ||
| 				   2/12
 | ||
| 				   ----
 | ||
| lib/glob/xmbsrtowcs.c
 | ||
| 	- xdupmbstowcs2: fixed but where end of string was not handled
 | ||
| 	  correctly, causing loop to go past end of string in a bunch of cases.
 | ||
| 	  Fixes bug reported by "Dashing" <dashing@hushmail.com>
 | ||
| 
 | ||
| 
 | ||
| 				   2/13
 | ||
| 				   ----
 | ||
| builtins/pushd.def
 | ||
| 	- popd_builtin: treat any argument that isn't -n or of the form
 | ||
| 	  [-+][[:digit:]]* as an error.  Fixes problem reported by Bruce
 | ||
| 	  Korb <bruce.korb@gmail.com>
 | ||
| 
 | ||
| 				   2/14
 | ||
| 				   ----
 | ||
| configure.ac
 | ||
| 	- add check for sig_atomic_t; already a placeholder for it in
 | ||
| 	  config.h.in
 | ||
| 
 | ||
| 				   2/15
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- do_compound_assignment: don't call assign_compound_array_list with
 | ||
| 	  a NULL variable in case make_local_xxx_variable returns NULL
 | ||
| 	  (it will if you try to shadow a readonly or noassign variable).
 | ||
| 	  Fixes bug reported by Richard Tollerton <rich.tollerton@ni.com>
 | ||
| 
 | ||
| 				   2/16
 | ||
| 				   ----
 | ||
| variables.c
 | ||
| 	- make_local_variable: print error messager if an attempt is made to
 | ||
| 	  create a local variable shadowing a `noassign' variable.  Previously
 | ||
| 	  we just silently refused to do it
 | ||
| 
 | ||
| trap.[ch]
 | ||
| 	- get_original_signal: now global so rest of the shell can use it
 | ||
| 
 | ||
| sig.c
 | ||
| 	- initialize_shell_signals: install a signal handler for SIGTERM
 | ||
| 	  that does nothing except set a sigterm_received flag instead of
 | ||
| 	  ignoring it with SIG_IGN, as long as SIGTERM is not ignored when
 | ||
| 	  the shell is started.  Use get_original_signal early to get the
 | ||
| 	  original handler, since we will do that later anyway
 | ||
| 	- set_signal_handler: if installing sigterm_sighandler as the SIGTERM
 | ||
| 	  handler, make sure to add SA_RESTART flag to make it as close to
 | ||
| 	  SIG_IGN as possible
 | ||
| 
 | ||
| sig.h
 | ||
| 	- sigterm_sighandler: new extern declaration
 | ||
| 
 | ||
| quit.h
 | ||
| 	- RESET_SIGTERM: set sigterm_receved to 0
 | ||
| 	- CHECK_SIGTERM: check sigterm_received; if it's non-zero, treat it
 | ||
| 	  as a fatal signal and call termsig_handler to exit the shell
 | ||
| 
 | ||
| jobs.c
 | ||
| 	- make_child: call RESET_SIGTERM just before fork() so we can detect
 | ||
| 	  if the child process received a SIGTERM before it's able to change
 | ||
| 	  the signal handler back to what it was when the shell started
 | ||
| 	  (presumably SIG_DFL).  Only has effect if the shell installed
 | ||
| 	  sigterm_sighandler for SIGTERM, interactive shells that were not
 | ||
| 	  started with SIG_IGN as the SIGTERM handler
 | ||
| 	- make_child: call RESET_SIGTERM in the parent after fork() so the
 | ||
| 	  rest of the shell won't react to it
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_simple_command: call CHECK_SIGTERM after make_child in child
 | ||
| 	  to catch SIGTERM received after fork() and before restoring old
 | ||
| 	  signal handlers
 | ||
| 	- execute_disk_command: call CHECK_SIGTERM after make_child in child
 | ||
| 	  process after restoring old signal handlers and again just before
 | ||
| 	  calling shell_execve.  Fixes race condition observed by
 | ||
| 	  Padraig Brady <p@draigbrady.com> when testing with his `timeout'
 | ||
| 	  program
 | ||
| 
 | ||
| lib/readline/display.c
 | ||
| 	- open_some_spaces: new function, subset of insert_some_chars that just
 | ||
| 	  opens up a specified number of spaces to be overwritten
 | ||
| 	- insert_some_spaces: now just calls to open_some_spaces followed by
 | ||
| 	  _rl_output_some_chars
 | ||
| 	- update_line: use col_temp instead of recalculating it using
 | ||
| 	  _rl_col_width in the case where we use more columns with fewer bytes
 | ||
| 	- update_line: use open_some_spaces and then output the right number
 | ||
| 	  of chars instead of trying to print new characters then overwrite
 | ||
| 	  existing characters in two separate calls.  This includes removing
 | ||
| 	  some dodgy code and making things simpler.  Fix from Egmont
 | ||
| 	  Koblinger <egmont@gmail.com>
 | ||
| 	- use new variable `bytes_to_insert' instead of overloading temp in
 | ||
| 	  some code blocks (nls - nfd, bytes that comprise the characters
 | ||
| 	  different in the new line from the old)
 | ||
| 
 | ||
| 				   2/18
 | ||
| 				   ----
 | ||
| redir.c
 | ||
| 	- do_redirection_internal: add undoable redirection for the implicit
 | ||
| 	  close performed by the <&n- and >&n- redirections.  Fixes bug
 | ||
| 	  reported by Stephane Chazelas <stephane.chazelas@gmail.com>
 | ||
| 
 | ||
| 				   2/19
 | ||
| 				   ----
 | ||
| sig.c
 | ||
| 	- termsig_handler: an interactive shell killed by SIGHUP and keeping
 | ||
| 	  command history will try to save the shell history before exiting.
 | ||
| 	  This is an attempt to preserve the save-history-when-the-terminal-
 | ||
| 	  window-is-closed behavior
 | ||
| 
 | ||
| 				   2/21
 | ||
| 				   ----
 | ||
| braces.c
 | ||
| 	- brace_expand: if a sequence expansion fails (e.g. because the
 | ||
| 	  integers overflow), treat that expansion as a simple string, including
 | ||
| 	  the braces, and try to process any remainder of the string.  The
 | ||
| 	  remainder may include brace expansions.  Derived from SuSE bug
 | ||
| 	  804551 example (https://bugzilla.novell.com/show_bug.cgi?id=804551)
 | ||
| 
 | ||
| 				   2/23
 | ||
| 				   ----
 | ||
| {quit,sig}.h,sig.c
 | ||
| 	- sigterm_received declaration now in sig.h; type is sig_atomic_t
 | ||
| 	- sigwinch_received type now sig_atomic_t
 | ||
| 	- sig.h includes bashtypes.h and <signal.h> if SIG_DFL not defined
 | ||
| 	  (same logic as trap.h) to pick up sig_atomic_t
 | ||
| 
 | ||
| unwind_prot.c
 | ||
| 	- include sig.h before quit.h (reverse order)
 | ||
| 
 | ||
| 				   2/27
 | ||
| 				   ----
 | ||
| builtins/shopt.def
 | ||
| 	- reset_shopt_options: make sure check_window_size is reset to the
 | ||
| 	  default from config.h, not unconditionally to 0
 | ||
| 
 | ||
| jobs.[ch]
 | ||
| 	- last_made_pid, last_asynchronous_pid: now volatile.  Change from SuSE
 | ||
| 
 | ||
| jobs.c
 | ||
| 	- wait_for: if we're using sigaction to install a handler for SIGCHLD,
 | ||
| 	  make sure we specify SA_RESTART
 | ||
| 
 | ||
| lib/{tilde,readline}/shell.c
 | ||
| 	- get_home_dir: instead of looking in the password file every time,
 | ||
| 	  look once and cache the result
 | ||
| 
 | ||
| sig.[ch]
 | ||
| 	- sigwinch_received, sigterm_received: now `volatile' qualified
 | ||
| 
 | ||
| sig.c,quit.h
 | ||
| 	- interrupt_state,terminating_signal: now sig_atomic_t
 | ||
| 
 | ||
| 				    3/1
 | ||
| 				    ---
 | ||
| MANIFEST,examples/*
 | ||
| 	- removed around 120 files without FSF copyrights; requested by
 | ||
| 	  Karl Berry in early January
 | ||
| 
 | ||
| 				    3/2
 | ||
| 				    ---
 | ||
| lib/malloc/malloc.c
 | ||
| 	- morecore: only check whether SIGCHLD is trapped if SIGCHLD is defined
 | ||
| 
 | ||
| doc/bashref.texi
 | ||
| 	- Fixed most of the examples in the GNU Parallel section to use better
 | ||
| 	  shell idioms following complaints on bug-bash; added a couple of
 | ||
| 	  examples and smoothed out the text
 | ||
| 
 | ||
| quit.h
 | ||
| 	- include "sig.h" for sig_atomic_t
 | ||
| 
 | ||
| lib/readline/display.c
 | ||
| 	- update_line: when inserting one or more characters at the end of
 | ||
| 	  the display line in a non-multibyte environment, just write from the
 | ||
| 	  first difference to the end of the line and return. We don't have
 | ||
| 	  to adjust _rl_last_c_pos.  This is needed to adjust from the old
 | ||
| 	  two-part copy to a single call to _rl_output_some_chars (change of
 | ||
| 	  2/16)
 | ||
| 
 | ||
| 				    3/4
 | ||
| 				    ---
 | ||
| Makefile.in,doc/Makefile.in
 | ||
| 	- PACKAGE_TARNAME, docdir: new variables substituted by autoconf
 | ||
| 	- OTHER_DOCS,OTHER_INSTALLED_DOCS: new variables with auxiliary
 | ||
| 	  documentation files to be installed into $(docdir)
 | ||
| 	- install: add new rule to install $(OTHER_DOCS)
 | ||
| 	- uninstall: add new rule to uninstall $(docdir)/$(OTHER_INSTALLED_DOCS)
 | ||
| 
 | ||
| doc/bash.1
 | ||
| 	- add URL to `POSIX' file in `SEE ALSO' section; put pointer to that
 | ||
| 	  section in --posix and set -o posix descriptions
 | ||
| 
 | ||
| examples/
 | ||
| 	- removed around 110 examples at the request of the FSF due to copyright
 | ||
| 	  issues
 | ||
| 
 | ||
| 				    3/5
 | ||
| 				    ---
 | ||
| builtins/setattr.def
 | ||
| 	- readonly: modified help text slightly to make it clearer that
 | ||
| 	  functions aren't changed or displayed unless the -f option is given.
 | ||
| 	  Report from <gotmynick@gmail.com>
 | ||
| 
 | ||
| 				    3/9
 | ||
| 				    ---
 | ||
| include/typemax.h
 | ||
| 	- SIZE_MAX: define to 65535 (Posix minimum maximum) if not defined
 | ||
| 
 | ||
| parse.y
 | ||
| 	- include "typemax.h" for possible SIZE_MAX definition, make sure we
 | ||
| 	  include it after shell.h
 | ||
| 
 | ||
| {braces,expr}.c
 | ||
| 	- include "typemax.h" for possible INTMAX_MIN and INTMAX_MAX definitions
 | ||
| 
 | ||
| 				   3/10
 | ||
| 				   ----
 | ||
| bashline.c
 | ||
| 	- bash_default_completion: make sure completion type of `!' (same as
 | ||
| 	  TAB but with show-all-if-ambiguous set) and glob-word-completion
 | ||
| 	  sets rl_filename_completion_desired to 0 so extra backslashes don't
 | ||
| 	  get inserted by `quoting' the completion.  We can't kill all the
 | ||
| 	  matches because show-all-if-ambiguous needs them.   Bug report from
 | ||
| 	  Marcel (Felix) Giannelia <info@skeena.net>
 | ||
| 
 | ||
| [bash-4.3-alpha frozen]
 | ||
| 
 | ||
| 				   3/14
 | ||
| 				   ----
 | ||
| general.c
 | ||
| 	- trim_pathname: use memmove instead of memcpy since the source and
 | ||
| 	  destination pathnames may overlap.  Report and fix from Matthew
 | ||
| 	  Riley <mattdr@google.com>
 | ||
| 
 | ||
| 				   3/18
 | ||
| 				   ----
 | ||
| configure.ac
 | ||
| 	- socklen_t is defined as `unsigned int' if configure can't find it
 | ||
| 
 | ||
| 				   3/20
 | ||
| 				   ----
 | ||
| lib/readline/complete.c
 | ||
| 	- S_ISVTX: since it's not defined on all platforms (Minix), make sure
 | ||
| 	  its use is protected with #ifdef
 | ||
| 
 | ||
| 				   3/21
 | ||
| 				   ----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- Added mention of ${!name[@]} and ${!name[*]} expansions to get all
 | ||
| 	  indices of an array.  Suggested by Jonathan Leffler
 | ||
| 	  <jonathan.leffler@gmail.com>
 | ||
| 
 | ||
| 				   3/24
 | ||
| 				   ----
 | ||
| subst.h
 | ||
| 	- SD_IGNOREQUOTE: new define for skip_to_delim; if set, means that
 | ||
| 	  single quotes (for now) will be treated as ordinary characters
 | ||
| 
 | ||
| subst.c
 | ||
| 	- skip_to_delim: handle SD_IGNOREQUOTE. no callers use it for now
 | ||
| 
 | ||
| 				   3/25
 | ||
| 				   ----
 | ||
| support/config.{guess,sub}
 | ||
| 	- updated to versions from autoconf-2.69
 | ||
| 
 | ||
| 				   3/31
 | ||
| 				   ----
 | ||
| lib/sh/shquote.c
 | ||
| 	- sh_single_quote: short-circuit quoting a single "'" instead of
 | ||
| 	  creating a long string with empty single-quoted strings
 | ||
| 
 | ||
| parser.h
 | ||
| 	- DOLBRACE_QUOTE2: new define, like DOLBRACE_QUOTE, but need to single-
 | ||
| 	  quote results of $'...' expansion because quote removal will be
 | ||
| 	  done later.  Right now this is only done for ${word/pat/rep}
 | ||
| 
 | ||
| parse.y
 | ||
| 	- parse_matched_pair: set state to DOLBRACE_QUOTE2 for pattern
 | ||
| 	  substitution word expansion so we don't treat single quote specially
 | ||
| 	  in the pattern or replacement string
 | ||
| 	- parse_matched_pair: if we're parsing a dollar-brace word expansion
 | ||
| 	  (${...}) and we're not treating single quote specially within
 | ||
| 	  double quotes, single-quote the translation of $'...' ansi-c
 | ||
| 	  escaped strings.  Original report and fix from Eduardo A.
 | ||
| 	  Bustamante López <dualbus@gmail.com>
 | ||
| 
 | ||
| subst.c
 | ||
| 	- extract_dollar_brace_string: ${word/pat/rep} scanning now sets the
 | ||
| 	  DOLBRACE_QUOTE2 flag instead of DOLBRACE_QUOTE so we don't treat
 | ||
| 	  single quotes specially within a double-quoted string
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- fix_assignment_words: skip over assignment statements preceding a
 | ||
| 	  command word before trying to figure out whether or not assignment
 | ||
| 	  statements following a possible declaration command should be 
 | ||
| 	  treated specially.  Fixes bug reported by Dan Douglas
 | ||
| 	  <ormaaj@gmail.com>
 | ||
| 
 | ||
| 				    4/4
 | ||
| 				    ---
 | ||
| lib/readline/readline.c
 | ||
| 	- _rl_dispatch_subseq: only call _rl_vi_set_last (and check whether
 | ||
| 	  the key is a text modification command) if the key sequence length
 | ||
| 	  is 1.  That keeps the arrow keys from setting the last command
 | ||
| 	  when called in vi command mode.  Fixes bug reported by Ian A.
 | ||
| 	  Watson <watson_ian_a@lilly.com>
 | ||
| 
 | ||
| 				    4/6
 | ||
| 				    ---
 | ||
| lib/readline/bind.c
 | ||
| 	- rl_parse_and_bind: when parsing a double-quoted string as the value
 | ||
| 	  of a variable, make sure we skip past the leading double quote.
 | ||
| 	  Fix from Andreas Schwab <schwab@linux-m68k.org>
 | ||
| 
 | ||
| variables.c
 | ||
| 	- hash_lookup: set new local variable last_table_searched to the table
 | ||
| 	  a successful lookup appears in; tested in make_local_variable to
 | ||
| 	  solve the problem below
 | ||
| 	- make_local_variable: if we find a variable with the tempenv flag
 | ||
| 	  set at the same `level' as variable_context', but not found in the
 | ||
| 	  temporary_env (temp environment preceding the builtin), return it.
 | ||
| 	  The temp environment preceding the function call has already been
 | ||
| 	  merged (in execute_function) into the list of variable contexts the
 | ||
| 	  function sees as shell_variables by the time this is called.  Fixes
 | ||
| 	  inconsistency pointed out by Dan Douglas <ormaaj@gmail.com>
 | ||
| 
 | ||
| subst.c
 | ||
| 	- expand_arith_string: expanded out contents of expand_string,
 | ||
| 	  expand_string_internal, expand_string_if_necessary to create a
 | ||
| 	  WORD_DESC and call call_expand_word_internal() on it directly.
 | ||
| 	  We don't want process substitution to be performed ( 1<(2) ) should
 | ||
| 	  mean something different in an arithmetic expression context.
 | ||
| 	  It doesn't work to just turn on the DQUOTE flag, since that means
 | ||
| 	  that things like ${x["expression"]} are not expanded correctly.
 | ||
| 	  Fixes problem pointed out by Dan Douglas <ormaaj@gmail.com>
 | ||
| 
 | ||
| 				   4/13
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- process_substitute: run the EXIT trap before exiting, as other
 | ||
| 	  shells seem to.  Fixes problem pointed out by Dan Douglas
 | ||
| 	  <ormaaj@gmail.com>
 | ||
| 
 | ||
| lib/readline/readline.c
 | ||
| 	- readline_internal_setup: call rl_vi_insertion_mode to enter vi
 | ||
| 	  mode instead of rl_vi_insert_mode to avoid resetting the saved last
 | ||
| 	  command information.  Posix says that `.' can repeat a command
 | ||
| 	  that was entered on a previous line so we need to save the info.
 | ||
| 	  Fixes bug reported by Ian A. Watson <watson_ian_a@lilly.com>
 | ||
| 
 | ||
| 				   4/14
 | ||
| 				   ----
 | ||
| lib/readline/complete.c
 | ||
| 	- rl_completion_matches: make sure xrealloc returns something non-null
 | ||
| 	  (can happen when interrupted by a signal) before trying to add
 | ||
| 	  matches to match_list
 | ||
| 
 | ||
| subst.c
 | ||
| 	- array_remove_pattern: return NULL right away if array_variable_part
 | ||
| 	  returns an invisible variable
 | ||
| 	- array_length_reference: handle array_variable_part returning an
 | ||
| 	  invisible variable
 | ||
| 	- get_var_and_type: handle array_variable_part returning an invisible
 | ||
| 	  variable
 | ||
| 
 | ||
| 				   4/15
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- execute_command_internal: make sure to run the EXIT trap for group
 | ||
| 	  commands anywhere in pipelines, not just at the end.  From a point
 | ||
| 	  raised by Andreas Schwab <schwab@linux-m68k.org>
 | ||
| 
 | ||
| variables.c
 | ||
| 	- bind_int_variable: make sure invisible flag is unset.  Fixes problems
 | ||
| 	  like "declare -ai a; : $(( a[4]=4 ));"
 | ||
| 
 | ||
| arrayfunc.c
 | ||
| 	- array_variable_part: return variable even if invisible flag set,
 | ||
| 	  callers must handle invisible vars
 | ||
| 
 | ||
| 				   4/18
 | ||
| 				   ----
 | ||
| builtins/set.def
 | ||
| 	- unset_builtin: if -n flag given, call unset_nameref instead of
 | ||
| 	  unset_variable
 | ||
| 
 | ||
| variables.c
 | ||
| 	- find_variable_nameref: print warning message if nameref circular
 | ||
| 	  reference detected, return NULL and let caller deal with it
 | ||
| 
 | ||
| builtins/declare.def
 | ||
| 	- declare_builtin: only disallow global references at this point if
 | ||
| 	  we are at the global scope
 | ||
| 
 | ||
| 				   5/16
 | ||
| 				   ----
 | ||
| configure.ac
 | ||
| 	- update release status to beta
 | ||
| 
 | ||
| 				   5/23
 | ||
| 				   ----
 | ||
| trap.c
 | ||
| 	- run_pending_traps: save and restore pipeline around calls to
 | ||
| 	  evalstring() in case we get a trap while running a trap. Have to
 | ||
| 	  figure out the recursive running traps issue elsewhere.  Fixes
 | ||
| 	  bug reported by Roman Rakus <rrakus@redhat.com>
 | ||
| 	- run_pending_traps: make sure to set running_trap to the appropriate
 | ||
| 	  signal value when running a trap command
 | ||
| 	- run_pending_traps: short-circuit immediately if running_trap set
 | ||
| 	  when invoked.  Could change this later to only skip if it would
 | ||
| 	  run the same trap as currently being run (running_trap == sig + 1)
 | ||
| 
 | ||
| configure.ac
 | ||
| 	- add warning if bison not found
 | ||
| 
 | ||
| lib/readline/doc/rltech.texi
 | ||
| 	- new section with an example program illustrating the callback
 | ||
| 	  interface. Suggested by Peng Yu <pengyu.ut@gmail.com>
 | ||
| 
 | ||
| examples/loadables/Makefile.in
 | ||
| 	- remove references to `cut' and `getconf', which were removed in
 | ||
| 	  early March
 | ||
| 
 | ||
| 				   5/28
 | ||
| 				   ----
 | ||
| lib/sh/pathphys.c
 | ||
| 	- sh_realpath: correct inverted two arguments to call to sh_makepath.
 | ||
| 	  Report and fix from Julien Thomas <jthomas@exosec.fr>
 | ||
| 
 | ||
| 				    6/7
 | ||
| 				    ---
 | ||
| execute_cmd.c
 | ||
| 	- executing_line_number: the else clauses that are conditional on
 | ||
| 	  various options being defined can simply be if clauses -- they are
 | ||
| 	  mutually exclusive and all have `return' in the body.  Fixes bug
 | ||
| 	  reported by Flavio Medeiros <flaviomotamedeiros@gmail.com>
 | ||
| 
 | ||
| 				   6/25
 | ||
| 				   ----
 | ||
| lib/readline/readline.c
 | ||
| 	- readline_internal_setup: only sent the meta-key enable string to the
 | ||
| 	  terminal if we've been told to use one and the terminal has been
 | ||
| 	  successfully initialized (RL_ISSTATE (RL_STATE_TERMPREPPED) != 0).
 | ||
| 	  Suggested by Dan Mick <dan.mick@inktank.com>
 | ||
| 
 | ||
| lib/readline/signals.c
 | ||
| 	- _rl_signal_handler: call any defined signal hook after calling
 | ||
| 	  rl_resize_terminal when handling a SIGWINCH.  We already have called
 | ||
| 	  the original SIGWINCH handler but will not be resending the signal
 | ||
| 	  to ourselves
 | ||
| 
 | ||
| 				   6/27
 | ||
| 				   ----
 | ||
| lib/readline/doc/history.3, doc/bash.1
 | ||
| 	- fix description of the `$' modifier to note that it expands to the
 | ||
| 	  last *word*, which is not always the last argument.  Report from
 | ||
| 	  ariyetz@gmail.com via gnu.org RT
 | ||
| 
 | ||
| 				   6/29
 | ||
| 				   ----
 | ||
| lib/glob/smatch.c
 | ||
| 	- glob_asciiranges: initialize to value of GLOBASCII_DEFAULT instead
 | ||
| 	  of 0 (0 if not defined)
 | ||
| 
 | ||
| configure.ac,config.h.in
 | ||
| 	- --enable-glob-asciiranges-default: new option, controls the value of
 | ||
| 	  GLOBASCII_DEFAULT; use it to turn globasciiranges shopt option on
 | ||
| 	  by default
 | ||
| 
 | ||
| doc/bashref.texi
 | ||
| 	- document new --enable-glob-asciiranges-default configure option
 | ||
| 
 | ||
| variables.c
 | ||
| 	- assign_in_env: implement += value appending semantics for assignments
 | ||
| 	  preceding command names
 | ||
| 
 | ||
| 				    7/4
 | ||
| 				    ---
 | ||
| expr.c
 | ||
| 	- set lasttok = NUM in all of the functions that result in a number,
 | ||
| 	  even if it's a boolean, to avoid errors with constructs like
 | ||
| 	  1 * x = 1, which should be an asignment error.  Fixes problem
 | ||
| 	  pointed out by Dan Douglas <ormaaj@gmail.com>
 | ||
| 
 | ||
| parse.y
 | ||
| 	- decode_prompt_string: don't bother to call strcpy if
 | ||
| 	  polite_directory_format returns its argument unchanged.  It's not
 | ||
| 	  necessary and Mac OS X 10.9 aborts because of a supposed overlapping
 | ||
| 	  string copy.  Bug and fix from simon@hitzemann.org
 | ||
| 
 | ||
| subst.c
 | ||
| 	- parameter_brace_find_indir: new function, code from
 | ||
| 	  parameter_brace_expand_indir that looks up the indirectly-referenced
 | ||
| 	  variable, but does not expand it
 | ||
| 	- parameter_brace_expand_indir: call parameter_brace_find_indir to
 | ||
| 	  look up indirected variable reference
 | ||
| 	- get_var_and_type: call parameter_brace_find_indir if it looks like we
 | ||
| 	  are trying to manipulate an indirect variable reference like
 | ||
| 	  ${!b%%foo}.  This makes a difference if !b references an array
 | ||
| 	  variable.  Bug report from Dan Douglas <ormaaj@gmail.com>
 | ||
| 
 | ||
| 				    7/6
 | ||
| 				    ---
 | ||
| lib/sh/casemod.c
 | ||
| 	- sh_modcase: make sure argument passed to is_basic is <= UCHAR_MAX,
 | ||
| 	  since cval can convert something to a wchar_t greater than UCHAR_MAX.
 | ||
| 	  Fixes bug reported by Tomasz Tomasik <scx.mail@gmail.com>
 | ||
| 
 | ||
| 				    7/8
 | ||
| 				    ---
 | ||
| lib/readline/history.c
 | ||
| 	- add_history_time: if history_length == 0, referencing history_length
 | ||
| 	  - 1 will result in an array bounds error, so make history_length be
 | ||
| 	  at least 1 before going on.  Fixes bug reported by Geng Sheng Liu
 | ||
| 	  <gsliu.tju@gmail.com>
 | ||
| 
 | ||
| builtins/setattr.def
 | ||
| 	- show_func_attributes: display definition (if NODEFS argument is 0) and
 | ||
| 	  attributes for a particular function; used by `declare -fp name'
 | ||
| 
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: call show_func_attributes if -f supplied with -p.
 | ||
| 	  Fixes inconsistency observed by Linda Walsh <bash@tlinx.org>
 | ||
| 
 | ||
| builtins/common.h
 | ||
| 	- new extern declaration for show_func_attributes
 | ||
| 
 | ||
| builtins/read.def
 | ||
| 	- read_builtin: check the first supplied variable name for validity
 | ||
| 	  before attempting to read any input, since we know we will have to
 | ||
| 	  at least use that one.  Don't check any other names yet.  Suggested
 | ||
| 	  by jidanni@jidanni.org
 | ||
| 
 | ||
| 				   7/10
 | ||
| 				   ----
 | ||
| redir.c
 | ||
| 	- do_redirection_internal: when closing a file descriptor with
 | ||
| 	  r_close_this ([n]<&-) count close errors as redirection errors if
 | ||
| 	  errno ends up as EIO or ENOSPC.  Originally reported back in April
 | ||
| 	  2012 by Andrey Zaitsev <jstcdr@gmail.com>
 | ||
| 
 | ||
| 				   7/11
 | ||
| 				   ----
 | ||
| redir.c
 | ||
| 	- do_redirection_internal: before calling check_bash_input, make sure
 | ||
| 	  that we don't call check_bash_input for an asynchronous process that
 | ||
| 	  is replacing stdin with something else. The seek backwards affects
 | ||
| 	  the parent process as well, since parents and children share the
 | ||
| 	  file pointer. Fixes problem originally reported in March 2013 by
 | ||
| 	  Martin Jackson <mjackson220.list@gmail.com>
 | ||
| 
 | ||
| 				   7/13
 | ||
| 				   ----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- slight change to add a description of `shopt -o' suggested by Bruce
 | ||
| 	  Korb <bruce.korb@gmail.com>
 | ||
| 
 | ||
| 				   7/19
 | ||
| 				   ----
 | ||
| lib/readline/histfile.c
 | ||
| 	- history_do_write: if close returns < 0, make sure we restore the
 | ||
| 	  backup history file and return a non-zero value
 | ||
| 	- history_truncate_file: if write or close return < 0, make sure we
 | ||
| 	  return a non-zero value
 | ||
| 
 | ||
| [bash-4.3-beta frozen]
 | ||
| 
 | ||
| 				   7/21
 | ||
| 				   ----
 | ||
| lib/readline/isearch.c
 | ||
| 	- rl_display_search: now takes an entire search context flags word as
 | ||
| 	  the second argument, instead of just reverse flag; changed callers
 | ||
| 	- rl_display_search: if the search has failed, add `failed ' to the
 | ||
| 	  beginning of the search prompt
 | ||
| 	- _rl_isearch_dispatch: if the search has failed, display the entire
 | ||
| 	  search string with an indication that the search failed but with the
 | ||
| 	  last matching line.  Suggested by jidanni@jidanni.org
 | ||
| 
 | ||
| command.h
 | ||
| 	- W_ASSIGNINT: new word flag; used internally for make_internal_declare
 | ||
| 	  and set by fix_assignment_words
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- fix_assignment_words: set W_ASSIGNINT if compound assignment and -i
 | ||
| 	  given as option.  We don't do anything with the value yet
 | ||
| 
 | ||
| subst.c
 | ||
| 	- shell_expand_word_list: rework the way the option list that is
 | ||
| 	  passed to make_internal_declare is created
 | ||
| 
 | ||
| 				    8/1
 | ||
| 				    ---
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- minor changes to description of $! based on a report from Chris
 | ||
| 	  Down <chris@chrisdown.name>
 | ||
| 
 | ||
| arrayfunc.c
 | ||
| 	- assign_array_element_internal: before trying to get an array's max
 | ||
| 	  index to process a negative subscript, make sure the array exists.
 | ||
| 	  Bug report from Geir Hauge <geir.hauge@gmail.com>
 | ||
| 
 | ||
| 				    8/2
 | ||
| 				    ---
 | ||
| arrayfunc.c
 | ||
| 	- assign_array_element_internal: before using array_max_index() when
 | ||
| 	  processing a negative subscript, make sure the variable is an array.
 | ||
| 	  if it's not, use 0 as array_max_index assuming it's a string.
 | ||
| 	  Fixes bug report from Geir Hauge <geir.hauge@gmail.com>
 | ||
| 
 | ||
| 				    8/3
 | ||
| 				    ---
 | ||
| Makefile.in
 | ||
| 	- pcomplete.o: add dependency on $(DEFDIR)/builtext.h. Suggested by
 | ||
| 	  Curtis Doty <curtis@greenkey.net>
 | ||
| 
 | ||
| 				    8/5
 | ||
| 				    ---
 | ||
| lib/glob/sm_loop.c
 | ||
| 	- strcompare: short-circuit and return FNM_NOMATCH if the lengths of the
 | ||
| 	  pattern and string (pe - p  and se - s, respectively) are not equal
 | ||
| 	- strcompare: don't bother trying to set *pe or *se to '\0' if that's
 | ||
| 	  what they already are.  Fixes bug reported by Geir Hauge
 | ||
| 	  <geir.hauge@gmail.com>
 | ||
| 
 | ||
| 				    8/6
 | ||
| 				    ---
 | ||
| doc/{bash.1,bashref.texi},builtins/hash.def,lib/readline/doc/rluser.texi
 | ||
| 	- minor typo changes from Geir Hauge <geir.hauge@gmail.com>
 | ||
| 
 | ||
| bultins/help.def
 | ||
| 	- show_longdoc: avoid trying to translate the empty string because it
 | ||
| 	  often translates to some boilerplate about the project and
 | ||
| 	  translation.  Report and fix from Geir Hauge <geir.hauge@gmail.com>
 | ||
| 
 | ||
| 				    8/8
 | ||
| 				    ---
 | ||
| builtins/help.def
 | ||
| 	- help_builtin: try two passes through the list of help topics for each
 | ||
| 	  argument: one doing exact string matching and one, if the first pass
 | ||
| 	  fails to find a match, doing string prefix matching like previous
 | ||
| 	  versions.  This prevents `help read' from matching both `read' and
 | ||
| 	  `readonly', but allows `help r' to match everything beginning with
 | ||
| 	  `r'.  Inspired by report from Geir Hauge <geir.hauge@gmail.com>
 | ||
| 
 | ||
| 				   8/13
 | ||
| 				   ----
 | ||
| builtins/fc.def
 | ||
| 	- fc_builtin,fc_gethnum: calculate `real' end of the history list and
 | ||
| 	  use it if -0 is specified as the beginning or end of the history
 | ||
| 	  range to list.  Doesn't work for fc -e or fc -s by design.  Feature
 | ||
| 	  requested by Mike Fied <micfied@gmail.com>
 | ||
| 
 | ||
| 				   8/16
 | ||
| 				   ----
 | ||
| trap.c
 | ||
| 	- _run_trap_internal: use {save,restore}_parser_state instead of
 | ||
| 	  {save,restore}_token_state. It's more comprehensive
 | ||
| 
 | ||
| 				   8/23
 | ||
| 				   ----
 | ||
| doc/bash.1
 | ||
| 	- disown: remove repeated text.  Report and fix from Thomas Hood
 | ||
| 	  <jdthood@gmail.com>
 | ||
| 
 | ||
| 				   8/25
 | ||
| 				   ----
 | ||
| lib/readline/rltty.c
 | ||
| 	- set_special_char: fix prototype (last arg is rl_command_func_t *)
 | ||
| 
 | ||
| sig.c
 | ||
| 	- set_signal_handler: return oact.sa_handler only if sigaction
 | ||
| 	  succeeds; if it doesn't, return SIG_DFL (reasonable default).  From
 | ||
| 	  https://bugzilla.redhat.com/show_bug.cgi?id=911404
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- attempt_shell_completion: fix to skip assignment statements preceding
 | ||
| 	  command name even if there are no programmable completions defined.
 | ||
| 	  From https://bugzilla.redhat.com/show_bug.cgi?id=994659
 | ||
| 	- attempt_shell_completion: if still completing command word following
 | ||
| 	  assignment statements, do command completion even if programmable
 | ||
| 	  completion defined for partial command name entered so far
 | ||
| 
 | ||
| 				   8/26
 | ||
| 				   ----
 | ||
| pcomplete.c
 | ||
| 	- pcomp_filename_completion_function: make sure rl_filename_dequoting_function
 | ||
| 	  is non-NULL before trying to call it.  Bug and fix from
 | ||
| 	  Andreas Schwab <schwab@linux-m68k.org>
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- bash_command_name_stat_hook: if *name is not something we're going
 | ||
| 	  to look up in $PATH (absolute_program(*name) != 0), just call the
 | ||
| 	  usual bash_filename_stat_hook and return those results.  This makes
 | ||
| 	  completions like $PWD/exam[TAB] add a trailing slash
 | ||
| 
 | ||
| 				    9/2
 | ||
| 				    ---
 | ||
| builtins/read.def
 | ||
| 	- read_builtin: before comparing what we read to the delim, make sure
 | ||
| 	  we are not supposed to be ignoring the delimiter (read -N).  We
 | ||
| 	  set the delim to -1, but it's possible to read a character whose
 | ||
| 	  int value ends up being between -1 and -128.  Fixes bug
 | ||
| 	  reported by Stephane Chazelas <stephane.chazelas@gmail.com>
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- word splitting: crib some language from Posix to make it clear that
 | ||
| 	  characters in IFS are treated as field *terminators*, not field
 | ||
| 	  *separators*.  Addresses issue raised by DJ Mills
 | ||
| 	  <danielmills1@gmail.com>
 | ||
| 
 | ||
| lib/readline/{util.c,rldefs.h}
 | ||
| 	- _rl_stricmp,_rl_strnicmp: now take const char * string arguments;
 | ||
| 	  changed prototype declarations
 | ||
| 
 | ||
| 				    9/5
 | ||
| 				    ---
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- [[: modify description of pattern matching to make it clear that the
 | ||
| 	  match is performed as if the extglob option were enabled.  From Red
 | ||
| 	  Hat bug https://bugzilla.redhat.com/show_bug.cgi?id=1002078
 | ||
| 
 | ||
| 				   9/12
 | ||
| 				   ----
 | ||
| lib/readline/isearch.c
 | ||
| 	- _rl_isearch_dispatch: if we read an ESC and it's supposed to
 | ||
| 	  terminate the search, make sure we check for typeahead with
 | ||
| 	  _rl_pushed_input_available, since installing a hook function causes
 | ||
| 	  typeahead to be collected in `ibuffer' (input.c).  If there is any,
 | ||
| 	  make sure we still use the ESC as a prefix character.  Bug and fix
 | ||
| 	  from Mike Miller <mtmiller@ieee.org>
 | ||
| 
 | ||
| 				   9/16
 | ||
| 				   ----
 | ||
| builtins/{caller,cd,kill,pushd,wait}.def
 | ||
| 	- builtin_usage(): make sure call to this sets return status to
 | ||
| 	  EX_USAGE
 | ||
| 
 | ||
| 				   9/18
 | ||
| 				   ----
 | ||
| terminal.c
 | ||
| 	- rl_change_environment: new application-settable variable; if non-
 | ||
| 	  zero (the default), readline will modify LINES and COLUMNS in the
 | ||
| 	  environment when it handles SIGWINCH
 | ||
| 	- _rl_get_screen_size: if rl_change_environment is non-zero, use setenv
 | ||
| 	  to modify LINES and COLUMNS environment variables
 | ||
| 
 | ||
| readline.h
 | ||
| 	- rl_change_environment: new extern declaration for applications
 | ||
| 
 | ||
| 				   9/22
 | ||
| 				   ----
 | ||
| configure.ac
 | ||
| 	- relstatus: bumped version to bash-4.3-beta2
 | ||
| 
 | ||
| 				   9/24
 | ||
| 				   ----
 | ||
| 
 | ||
| lib/readline/readline.c
 | ||
| 	- bind_arrow_keys_internal: added more key bindings for the numeric key
 | ||
| 	  pad arrow keys on mingw32.  Patch from Pierre Muller
 | ||
| 	  <pierre.muller@ics-cnrs.unistra.fr>
 | ||
| 
 | ||
| 				   10/19
 | ||
| 				   -----
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- maybe_restore_tilde: version of restore_tilde that honors `direxpand';
 | ||
| 	  calls restore_tilde after saving directory expansion hook if
 | ||
| 	  necessary.  Report from Andreas Schwab <schwab@linux-m68k.org>
 | ||
| 
 | ||
| builtins/cd.def
 | ||
| 	- -@: new option, allows cd to use `extended attributes' present in
 | ||
| 	  NFSv4, ZFS; idea taken from ksh93.  Attributes associated with a
 | ||
| 	  file are presented as a directory containing the attributes as
 | ||
| 	  individual files.  Original patch contributed by Cedric Blancher
 | ||
| 	  <cedric.blancher@gmail.com>
 | ||
| 
 | ||
| 				   10/20
 | ||
| 				   -----
 | ||
| aclocal.m4
 | ||
| 	- BASH_CHECK_MULTIBYTE: check for wcwidth being broken with unicode
 | ||
| 	  combining characters needs a value to use when cross-compiling.
 | ||
| 	  Bug report from Bert Sutherland <bertsutherland@gmail.com>
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- document new -@ option to cd builtin
 | ||
| 
 | ||
| 				   10/28
 | ||
| 				   -----
 | ||
| lib/glob/{{gmisc,glob}.c,glob.h}
 | ||
| 	- extglob_pattern renamed to extglob_pattern_p, declared in glob.h
 | ||
| 
 | ||
| subst.c
 | ||
| 	- expand_word_internal: typo fix: case to fix " $@\ " bug in bash-4.2
 | ||
| 	  had a typo (& isexp instead of &&)
 | ||
| 
 | ||
| 				   10/29
 | ||
| 				   -----
 | ||
| input.c
 | ||
| 	- getc_with_restart: make sure local_index and local_bufused are
 | ||
| 	  reset to 0 before returning EOF, in case we are running an interactive
 | ||
| 	  shell without line editing and ignoreeof is set.  Report and fix
 | ||
| 	  from Yong Zhang <yong.zhang@windriver.com>
 | ||
| 
 | ||
| lib/readline/search.c
 | ||
| 	- _rl_nsearch_init: take out extra third argument to rl_message; it
 | ||
| 	  only matches prototype (and maybe format) in cases where
 | ||
| 	  PREFER_STDARG and USE_VARARGS are both undefined, which is rare
 | ||
| 
 | ||
| 				   10/31
 | ||
| 				   -----
 | ||
| subst.c
 | ||
| 	- process_substitute: when opening the named pipe in the child, open
 | ||
| 	  without O_NONBLOCK to avoid race conditions.  Happens often on AIX.
 | ||
| 	  Bug report and fix from Michael Haubenwallner
 | ||
| 	  <michael.haubenwallner@salomon.at>
 | ||
| 
 | ||
| builtins/ulimit.def
 | ||
| 	- RLIMIT_NTHR: if RLIMIT_PTHREAD is not defined, but RLIMIT_NTHR is,
 | ||
| 	  use RLIMIT_NTHR (NetBSD)
 | ||
| 
 | ||
| 				   11/5
 | ||
| 				   ----
 | ||
| locale.c
 | ||
| 	- set_default_locale_vars,set_locale_var: if TEXTDOMAINDIR has been
 | ||
| 	  set, and default_dir has a non-null value, call bindtextdomain(3)
 | ||
| 	  when TEXTDOMAIN is assigned a value.  Fixes problem reported by
 | ||
| 	  Michael Arlt <qwertologe@googlemail.com>
 | ||
| 
 | ||
| 				   11/6
 | ||
| 				   ----
 | ||
| builtins/cd.def
 | ||
| 	- cdxattr: only create synthetic pathname in `buf' if NDIRP argument
 | ||
| 	  is non-null
 | ||
| 	- change_to_directory: if we have specified -@ and cdxattr returns
 | ||
| 	  failure, fail immediately.  Fixes bug reported by Joshuah Hurst
 | ||
| 	  <joshhurst@gmail.com>
 | ||
| 
 | ||
| 				   11/12
 | ||
| 				   -----
 | ||
| redir.c
 | ||
| 	- print_redirection: change r_err_and_out (&>) and its append form,
 | ||
| 	  r_append_err_and_out (&>>) cases to separate redirection operator
 | ||
| 	  from filename by a space, in case we have a process substitution.
 | ||
| 	  Fixes bug reported by admn ombres <admn.ombres@gmail.com>
 | ||
| 
 | ||
| 				   11/15
 | ||
| 				   -----
 | ||
| execute_cmd.c
 | ||
| 	- execute_simple_command: don't close process substitution fds until
 | ||
| 	  we are finished executing any current shell function.  Partial fix
 | ||
| 	  for bug reported by John Dawson <john.dawson@gmail.com>
 | ||
| 
 | ||
| support/shobj-conf
 | ||
| 	- add support for Darwin 13 (Mac OS X 10.9, Mavericks).  Based on a
 | ||
| 	  report by Ludwig Schwardt <ludwig.schwardt@gmail.com>
 | ||
| 
 | ||
| 				   11/20
 | ||
| 				   -----
 | ||
| [bash-4.3-rc1 frozen]
 | ||
| 
 | ||
| 				   11/24
 | ||
| 				   -----
 | ||
| builtins/printf.def
 | ||
| 	- bind_printf_variable: make sure that the variable assigned to is
 | ||
| 	  no longer marked as invisible. Fixes bug reported by NBaH
 | ||
| 	  <nbah@sfr.fr>
 | ||
| 
 | ||
| 				   11/28
 | ||
| 				   -----
 | ||
| jobs.c
 | ||
| 	- delete_old_job: fix off-by-one error in job index in call to
 | ||
| 	  internal_warning. Bug report from Peter Cordes <peter@cordes.ca>
 | ||
| 
 | ||
| 				   11/30
 | ||
| 				   -----
 | ||
| doc/bashref.texi
 | ||
| 	- add string to description of special parameters with name of
 | ||
| 	  special parameter prefixed by a $, so you can search for $#,
 | ||
| 	  for instance
 | ||
| 
 | ||
| 				   12/2
 | ||
| 				   ----
 | ||
| lib/readline/{histexpand.c
 | ||
| 	- get_history_event: account for current_history() possibly returning
 | ||
| 	  NULL. Report and fix from Pankaj Sharma <pankaj.s01@samsung.com>
 | ||
| 
 | ||
| 
 | ||
| 				   12/11
 | ||
| 				   -----
 | ||
| 
 | ||
| lib/readline/parse-colors.c
 | ||
| 	- get_funky_string: don't call abort if we see something we can't
 | ||
| 	  parse; just return an error
 | ||
| 	- _rl_parse_colors: if we encounter an error while parsing $LS_COLORS
 | ||
| 	  we need to leave _rl_color_ext_list as NULL after freeing its
 | ||
| 	  elements, then turn off _rl_colored_stats. Report and fix from Martin
 | ||
| 	  Wesdorp <mwesdorp@casema.nl>
 | ||
| 
 | ||
| 				   12/13
 | ||
| 				   -----
 | ||
| 
 | ||
| lib/readline/parse-colors.c
 | ||
| 	- _rl_parse_colors: if we encounter an unrecognized prefix, throw an
 | ||
| 	  error but try to recover and go on to the next specification
 | ||
| 
 | ||
| variables.c
 | ||
| 	- make_local_variable: for new variables this function creates, set
 | ||
| 	  the att_invisible attribute.  All callers from declare_internal.
 | ||
| 	  Indirectly, this is a fix for bug with `declare -n var; var=foo;'
 | ||
| 	  reported by Pierre Gaston <pierre.gaston@gmail.com>
 | ||
| 	- bind_variable: if assigning to nameref variable that doesn't have
 | ||
| 	  a value yet (e.g., with `declare -n var; var=foo'), don't try to
 | ||
| 	  use the unset name. Fixes a segfault reported by Pierre Gaston
 | ||
| 	  <pierre.gaston@gmail.com>
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_command_internal: make sure last_command_exit_value is set
 | ||
| 	  to 0 after any command executed in the background.  Fixes bug
 | ||
| 	  reported by Martin Kealey <martin@kurahaupo.gen.nz>
 | ||
| 
 | ||
| 				   12/17
 | ||
| 				   -----
 | ||
| support/config.{guess,sub}
 | ||
| 	- updated to latest versions from git
 | ||
| 
 | ||
| 				   12/19
 | ||
| 				   -----
 | ||
| parse.y
 | ||
| 	- struct STRING_SAVER: now has a new `flags' element, to identify the
 | ||
| 	  caller: alias expansion, double-paren parsing, or parse_and_execute
 | ||
| 	- push_string: now sets flags to PSH_ALIAS if `ap' argument is non-NULL
 | ||
| 	- push_string: now doesn't attempt to call strlen on a NULL string to
 | ||
| 	  set shell_input_line_size
 | ||
| 	- parser_expanding_alias, parser_save_alias, parser_restore_alias: new
 | ||
| 	  functions to provide an external interface to push_string and
 | ||
| 	  pop_string; parser_save_alias sets flags element to PSH_SOURCE (could
 | ||
| 	  be renamed PSH_EXTERN someday)
 | ||
| 	- shell_getc: when yy_getc returns '\0', instead of just testing
 | ||
| 	  whether the pushed_string_list is not-empty before popping it, don't
 | ||
| 	  pop if if the saved string has flags PSH_SOURCE, indicating that
 | ||
| 	  parse_and_execute set it before setting bash_input to the string.
 | ||
| 	  We should continue reading to the end of that string before popping
 | ||
| 	  back to a potential alias. Partial solution for the problem of aliases
 | ||
| 	  with embedded newlines containing `.' commands being executed out of
 | ||
| 	  order reported by Andrew Martin <andrew.martin@gmail.com>
 | ||
| 	- shell_getc: when yy_getc returns '\0' and there is a saved string of
 | ||
| 	  type PSH_SOURCE, restart the read without popping the string stack
 | ||
| 	  if we have not read to the end of bash_input.location.string.  Rest
 | ||
| 	  of fix for out-of-order execution problem
 | ||
| 
 | ||
| externs.h
 | ||
| 	- parser_expanding_alias, parser_save_alias, parser_restore_alias: new
 | ||
| 	  extern function declarations
 | ||
| 
 | ||
| builtins/evalstring.c
 | ||
| 	- pe_prologue: if the parser is expanding an alias, make sure to add
 | ||
| 	  an unwind-protect to restore the alias; undoes the work that will be
 | ||
| 	  performed by parse_and_execute/parse_string
 | ||
| 	- parse_and_execute,parse_string: after calling push_stream to save
 | ||
| 	  bash_input, check whether or not the parser is currently expanding
 | ||
| 	  an alias (parser_expanding_alias() != 0). If it is, we want to save
 | ||
| 	  that string in the pushed_string_list, which we do with
 | ||
| 	  parser_save_alias.
 | ||
| 
 | ||
| 				   12/23
 | ||
| 				   -----
 | ||
| execute_cmd.c
 | ||
| 	- execute_for_command: make sure to set line_number before expanding
 | ||
| 	  the word list, so expansion errors have the right line number.
 | ||
| 	  From a report from Ben Okopnik <ben@okopnik.com>
 | ||
| 
 | ||
| expr.c
 | ||
| 	- exp2: save token pointer before calling readtok(), arrange to use
 | ||
| 	  saved token pointer when printing error token on a division by 0
 | ||
| 	  error
 | ||
| 
 | ||
| 				   12/27
 | ||
| 				   -----
 | ||
| lib/readline/display.c
 | ||
| 	- rl_redisplay: when calculating effects of invisible characters in a
 | ||
| 	  prompt that is split across physical screen lines to set the indices
 | ||
| 	  of linebreaks, don't bother testing local_prompt_prefix (line 751).
 | ||
| 	  That prefix doesn't matter when calculating prompt visible and
 | ||
| 	  invisible characters.  Fixes problem reported by Jinesh Choksi
 | ||
| 	  <jinesh@onelittlehope.com>
 | ||
| 
 | ||
| Makefile.in
 | ||
| 	- install: make sure to use $(DESTDIR) when installing OTHER_DOCS.
 | ||
| 	  Report and fix from Matthias Klose <doko@debian.org>
 | ||
| 
 | ||
| doc/texinfo.tex
 | ||
| 	- updated to version of 2013-09-11
 | ||
| 
 | ||
| 				   12/28
 | ||
| 				   -----
 | ||
| lib/readline/undo.c
 | ||
| 	- rl_do_undo: if we are undoing from a history entry (rl_undo_list ==
 | ||
| 	  current_history()->data), make sure the change to rl_line_buffer is
 | ||
| 	  reflected in the history entry. We use the guts of
 | ||
| 	  rl_maybe_replace_line to do the work.  Fixes problem reported by
 | ||
| 	  gregrwm <backuppc-users@whitleymott.net>
 | ||
| 
 | ||
| 				   12/30
 | ||
| 				   -----
 | ||
| sig.c
 | ||
| 	- sigint_sighandler: if we get a SIGINT (and this signal handler is
 | ||
| 	  installed) while the wait builtin is running, note that we received
 | ||
| 	  it in the same way as jobs.c:wait_sigint_handler and return.  The
 | ||
| 	  various wait_for functions will look for that with CHECK_WAIT_INTR.
 | ||
| 	  This fixes the wait builtin not being interruptible in an interactive
 | ||
| 	  job control shell
 | ||
| 
 | ||
| 				   12/31
 | ||
| 				   -----
 | ||
| trap.c
 | ||
| 	- set_signal_hard_ignored: rename set_signal_ignored to this, since it
 | ||
| 	  both sets original_signals[sig] and sets the HARD_IGNORE flag
 | ||
| 	- set_signal_ignored: new function, now just sets original_signals[sig]
 | ||
| 
 | ||
| trap.h
 | ||
| 	- set_signal_hard_ignored: new external declaration
 | ||
| 
 | ||
| sig.c
 | ||
| 	- initialize_terminating_signals: call set_signal_hard_ignored instead
 | ||
| 	  of set_signal_ignored for signals with disposition SIG_IGN when the
 | ||
| 	  shell starts
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- setup_async_signals: make sure we get the original dispositions for
 | ||
| 	  SIGINT and SIGQUIT before starting the subshell, and don't call
 | ||
| 	  set_signal_ignored  because that sets original_signals[sig].  If we
 | ||
| 	  don't, subsequent attempts to reset handling using trap will fail
 | ||
| 	  because it thinks the original dispositions were SIG_IGN. Posix
 | ||
| 	  interpretation 751 (http://austingroupbugs.net/view.php?id=751)
 | ||
| 
 | ||
| 				 1/2/2014
 | ||
| 				 --------
 | ||
| lib/sh/stringvec.c
 | ||
| 	- strvec_mcreate, strvec_mresize: versions of create and resize that
 | ||
| 	  use malloc and realloc, respectively, instead of xmalloc/xrealloc
 | ||
| 
 | ||
| braces.c
 | ||
| 	- expand_amble,mkseq: use strvec_mcreate/strvec_mresize so we can
 | ||
| 	  catch and handle memory allocation failures instead of aborting
 | ||
| 	  with the xmalloc/xrealloc interface
 | ||
| 
 | ||
| lib/sh/strdup.c
 | ||
| 	- strdup replacement function for ancient systems that don't have it
 | ||
| 
 | ||
| lib/sh/itos.c
 | ||
| 	- mitos: new function, itos that uses strdup instead of savestring
 | ||
| 
 | ||
| externs.h
 | ||
| 	- strvec_mcreate/strvec_mresize: new extern declarations
 | ||
| 	- mitos: new extern declaration
 | ||
| 
 | ||
| configure.ac
 | ||
| 	- bash version moved to 4.3-rc2
 | ||
| 
 | ||
| 				    1/6
 | ||
| 				    ---
 | ||
| doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
 | ||
| 	- separate the description of what happens when readline reads the
 | ||
| 	  tty EOF character from the description of delete-char, leaving a
 | ||
| 	  note in the delete-char description about common binding for ^D.
 | ||
| 	  From suggestion by Parke <parke.nexus@gmail.com>
 | ||
| 
 | ||
| lib/readline/doc/{version.texi,history.3,*.texi}
 | ||
| 	- updated email addresses and copyright dates
 | ||
| 
 | ||
| 				    1/7
 | ||
| 				    ---
 | ||
| variables.c
 | ||
| 	- delete_var: new function, just removes a variable from a hash table
 | ||
| 	  and frees it, without doing anything else
 | ||
| 	- make_variable_value: if we are trying to assign to a nameref variable,
 | ||
| 	  return NULL if the value is null or the empty string or not a valid
 | ||
| 	  identifier
 | ||
| 
 | ||
| variables.h
 | ||
| 	- delete_var: new extern declaration
 | ||
| 
 | ||
| subst.h
 | ||
| 	- ASS_NAMEREF: new define for assignments, means assigning to a nameref
 | ||
| 	  variable
 | ||
| 
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: if we are creating and assigning to a nameref
 | ||
| 	  variable, make sure the value is a valid variable name (checks done
 | ||
| 	  by make_variable_value via bind_variable_value) and display an
 | ||
| 	  error message, deleting the variable we just created, if it is not.
 | ||
| 	  Fixes bug reported by Peggy Russell <prusselltechgroup@gmail.com>
 | ||
| 
 | ||
| 				    1/9
 | ||
| 				    ---
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: turning on nameref attribute for an existing
 | ||
| 	  variable turns off -i/-l/-u/-c attributes (essentially the ones
 | ||
| 	  that cause evaluation at assignment time) for ksh93 compat
 | ||
| 
 | ||
| builtins/setattr.def
 | ||
| 	- show_name_attributes: if asked to display attributes and values for
 | ||
| 	  a nameref variable, don't follow the nameref chain to the end. More
 | ||
| 	  ksh93 compat
 | ||
| 
 | ||
| 				   1/10
 | ||
| 				   ----
 | ||
| trap.c
 | ||
| 	- _run_trap_internal: use {save,restore}_parser_state instead of
 | ||
| 	  {save,restore}_token_state, like in run_pending_traps(); don't
 | ||
| 	  need to save and restore last_command_exit_value as a result
 | ||
| 	- _run_trap_internal: call {save,restore}_pipeline like in
 | ||
| 	  run_pending_traps()
 | ||
| 	- run_pending_traps: since we no longer run traps in a signal handler
 | ||
| 	  context, do not block and unblock the trapped signal while the
 | ||
| 	  trap is executing
 | ||
| 	- run_pending_traps: allow recursive invocations (basically, running
 | ||
| 	  traps from a trap handler) with only a warning if the shell is
 | ||
| 	  compiled in debug mode.  If a caller doesn't want this to happen,
 | ||
| 	  it should test running_trap > 0. signal_in_progress (sig) only works
 | ||
| 	  for the signals the shell handles specially
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- bash_event_hook: make sure we clean up readline if interrupt_state
 | ||
| 	  is set, not only when SIGINT is not trapped.  check_signals_and_traps
 | ||
| 	  will call check_signals, which calls QUIT, which will longjmp back
 | ||
| 	  to top_level, running the interrupt trap along the way.  Fixes the
 | ||
| 	  problem of signal handlers being reset out from under readline, and
 | ||
| 	  not being set properly the next time readline is called, because
 | ||
| 	  signals_set_flag is still set to 1.  XXX - might need to do this
 | ||
| 	  for other signals too?
 | ||
| 
 | ||
| 				   1/11
 | ||
| 				   ----
 | ||
| subst.h
 | ||
| 	- SD_GLOB: new define for skip_to_delim; means we are scanning a
 | ||
| 	  glob pattern.
 | ||
| 
 | ||
| subst.c
 | ||
| 	- skip_to_delim: if flags include SD_GLOB, assume we are scanning a
 | ||
| 	  glob pattern.  Currently only used to skip bracket expressions
 | ||
| 	  which may contain one of the delimiters
 | ||
| 
 | ||
| 				   1/12
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- parameter_brace_expand: when expanding $@ as part of substring
 | ||
| 	  expansion, pattern substitution, or case modification, don't turn
 | ||
| 	  on the QUOTED_NULL flag.  The code that constructs the word to be
 | ||
| 	  returned from expand_word_internal expects a different code path
 | ||
| 	  when $@ is being expanded.  Fixes bug reported by Theodoros
 | ||
| 	  V. Kalamatianos <thkala@gmail.com>
 | ||
| 
 | ||
| 				   1/19
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- list_dequote_escapes: new function; analogue of list_quote_escapes
 | ||
| 
 | ||
| pathexp.c
 | ||
| 	- quote_string_for_globbing: fix case where unescaped ^A is last char
 | ||
| 	  in string; need to pass it through unaltered instead of turning it
 | ||
| 	  into a bare backslash
 | ||
| 	- quote_string_for_globbing: when quoting for regexp matching in [[,
 | ||
| 	  don't treat backslash as a quote character; quote the backslash as
 | ||
| 	  any other character.  Part of investigation into reports from
 | ||
| 	  Eduardo A. Bustamante López <dualbus@gmail.com>
 | ||
| 
 | ||
| 				   1/25
 | ||
| 				   ----
 | ||
| builtins/gen-helpfiles.c
 | ||
| 	- write_helpfiles: add prototype
 | ||
| 	- make sure to #undef xmalloc/xfree/xrealloc/free if USING_BASH_MALLOC
 | ||
| 	  is defined. the code does not use them, and we don't link against
 | ||
| 	  xmalloc.o. Report from Linda Walsh <bash@tlinx.org>
 | ||
| 
 | ||
| Makefile.in
 | ||
| 	- variables.o: add dependency on builtins/builtext.h; helps with
 | ||
| 	  parallel builds.  Report from Linda Walsh <bash@tlinx.org>
 | ||
| 
 | ||
| support/shobj-conf
 | ||
| 	- darwin: combine the stanzas into one that will not require them to
 | ||
| 	  be updated on each Mac OS X release.  Report and fix from Max Horn
 | ||
| 	  <max@quendi.de>
 | ||
| 
 | ||
| 				   1/27
 | ||
| 				   ----
 | ||
| support/shobj-conf
 | ||
| 	- darwin: changed the install_name embedded into the shared library
 | ||
| 	  to contain only the major version number, not the minor one. The
 | ||
| 	  idea is that the minor versions should all be API/ABI compatible,
 | ||
| 	  and it is better to link automatically with the latest one.  Idea
 | ||
| 	  from Max Horn <max@quendi.de>
 | ||
| 
 | ||
| 				   1/29
 | ||
| 				   ----
 | ||
| [bash-4.3-rc2 released]
 | ||
| 
 | ||
| 				   1/30
 | ||
| 				   ----
 | ||
| lib/readline/readline.h
 | ||
| 	- rl_clear_history, rl_free_keymap: add extern declarations.  Report
 | ||
| 	  from Hiroo Hayashi <hiroo.hayashi@computer.org>
 | ||
| 
 | ||
| general.c
 | ||
| 	- include trap.h for any_signals_trapped() prototype
 | ||
| 
 | ||
| lib/sh/unicode.c
 | ||
| 	- include <stdio.h> for sprintf prototype
 | ||
| 
 | ||
| 				   1/31
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- execute_simple_command: only posix-mode shells should exit on an
 | ||
| 	  assignment failure in the temporary environment preceding a special
 | ||
| 	  builtin. This is what the documentation and code comments have
 | ||
| 	  always said
 | ||
| 	- execute_simple_command: make sure redirection errors, word expansion
 | ||
| 	  errors, and assignment errors to Posix special builtins cause a
 | ||
| 	  non-interactive posix mode shell to exit.  Previously the shell
 | ||
| 	  would not exit if the failed special builtin was on the LHS of ||
 | ||
| 	  or &&
 | ||
| 
 | ||
| pathexp.c
 | ||
| 	- quote_string_for_globbing: when quoting a regular expression
 | ||
| 	  (QGLOB_REGEXP), allow an unquoted backslash to pass through
 | ||
| 	  unaltered. Don't use it as a quote character or quote it.  More
 | ||
| 	  investigation from 1/24 and report by Mike Frysinger
 | ||
| 	  <vapier@gentoo.org>
 | ||
| 	- quote_string_for_globbing: when quoting a regular expression
 | ||
| 	  (QGLOB_REGEXP), turn CTLESC CTLESC into CTLESC without adding a
 | ||
| 	  backslash to quote it. We should not have to quote it because it is
 | ||
| 	  not a character special to EREs. More investigation from 1/24
 | ||
| 
 | ||
| lib/glob/glob.c
 | ||
| 	- glob_testdir: now takes a second flags argument (currently unused);
 | ||
| 	  changed prototype and callers
 | ||
| 
 | ||
| 				    2/1
 | ||
| 				    ---
 | ||
| lib/glob/glob.c
 | ||
| 	- glob_testdir: if flags argument includes GX_ALLDIRS (globstar), use
 | ||
| 	  lstat so we skip symlinks when traversing the directory tree.
 | ||
| 	  Originally reported by Chris Down <chris@chrisdown.name>
 | ||
| 
 | ||
| 				    2/2
 | ||
| 				    ---
 | ||
| lib/readline/undo.c
 | ||
| 	- rl_do_undo: make sure CUR is non-zero before dereferencing it to
 | ||
| 	  check cur->data against rl_undo_list.  Report and fix from
 | ||
| 	  Andreas Schwab <schwab@linux-m68k.org>
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- added slight clarifying language to the description of $*,
 | ||
| 	  describing what happens when the expansion is not within double
 | ||
| 	  quotes
 | ||
| 
 | ||
| 				    2/4
 | ||
| 				    ---
 | ||
| test.c
 | ||
| 	- unary_test: add code to -v case so that it interprets `bare' array
 | ||
| 	  references (foo[1]) and returns true if that index has a value
 | ||
| 
 | ||
| 				    2/5
 | ||
| 				    ---
 | ||
| trap.c
 | ||
| 	- restore_default_signal: fix SIGCHLD special case for SIG_TRAPPED flag
 | ||
| 	  off but SIG_INPROGRESS mode set and handler IMPOSSIBLE_TRAP_HANDLER;
 | ||
| 	  continue with resetting handler in this case. maybe_set_sigchld_trap
 | ||
| 	  will check these things before resetting sigchld trap from
 | ||
| 	  run_sigchld_trap.  Fixes (apparently long-standing?) problem reported
 | ||
| 	  by Alexandru Damian <alexandru.damian@intel.com>
 | ||
| 
 | ||
| 				    2/6
 | ||
| 				    ---
 | ||
| lib/sh/strtrans.c
 | ||
| 	- ansic_quote: fixed a bug when copying a printable character that
 | ||
| 	  consumes more than one byte; byte counter was not being incremented.
 | ||
| 	  Bug report from jidanni@jidanni.org
 | ||
| 
 | ||
| 				    2/7
 | ||
| 				    ---
 | ||
| input.c
 | ||
| 	- getc_with_restart: if read(2) returns -1/EINTR and interrupt_state or
 | ||
| 	  terminating_signal is set (which means QUIT; will longjmp out of this
 | ||
| 	  function), make sure the local buffer variables are zeroed out to
 | ||
| 	  avoid reading past the end of the buffer on the next call.  Bug report
 | ||
| 	  from Dan Jacobson <jidanni@jidanni.org>
 | ||
| 
 | ||
| 				    2/9
 | ||
| 				    ---
 | ||
| bashline.c
 | ||
| 	- command_word_completion_function: if a directory in $PATH contains
 | ||
| 	  quote characters, we need to quote them before passing the candidate
 | ||
| 	  path to rl_filename_completion_function, which performs dequoting on
 | ||
| 	  the pathname it's passed.  Fixes bug reported by Ilyushkin Nikita
 | ||
| 	  <ilyushkeane@gmail.com>
 | ||
| 
 | ||
| 				   2/11
 | ||
| 				   ----
 | ||
| parse.y
 | ||
| 	- xparse_dolparen: save and restore shell_eof_token around call to
 | ||
| 	  parse_string, intead of just leaving it set to ')'
 | ||
| 	- shell_getc: when -v is set, only print the command line when
 | ||
| 	  shell_eof_token is 0, so we don't print it multiple times when
 | ||
| 	  recursively entering the parser to parse $(...) commands.  Fixes
 | ||
| 	  bug reported by Greg Wooledge <wooledg@eeg.ccf.org>
 | ||
| 
 | ||
| [changed release status to 4.3-release]
 | ||
| 
 | ||
| 				   2/13
 | ||
| 				   ----
 | ||
| lib/sh/strtrans.c
 | ||
| 	- ansic_quote: handle case where mbrtowc reports that the multibyte
 | ||
| 	  sequence is incomplete or invalid.  Fixes bug reported by
 | ||
| 	  Eduardo A. Bustamante López <dualbus@gmail.com>
 | ||
| 
 | ||
| 				   2/14
 | ||
| 				   ----
 | ||
| variables.c
 | ||
| 	- find_variable_nameref_context: fix a problem that caused the loop
 | ||
| 	  to go one context too close to the global context.  In some cases,
 | ||
| 	  simple variable assignment would set a variable in the global
 | ||
| 	  context instead of a local context.  Bug report from
 | ||
| 	  Geir Hauge <geir.hauge@gmail.com>
 | ||
| 
 | ||
| 				   2/26
 | ||
| 				   ----
 | ||
| [bash-4.3 released]
 | ||
| 
 | ||
| 				   2/27
 | ||
| 				   ----
 | ||
| aclocal.m4
 | ||
| 	- broken wcwidth check: fix typo reported by David Michael
 | ||
| 	  <fedora.dm0@gmail.com>
 | ||
| 
 | ||
| 				   2/28
 | ||
| 				   ----
 | ||
| support/bashbug.sh
 | ||
| 	- add ${BUGADDR} to error message printed if sending mail fails
 | ||
| 
 | ||
| trap.c
 | ||
| 	- _run_trap_internal: don't call {save,restore}_pipeline if running
 | ||
| 	  DEBUG trap; run_debug_trap calls them itself.  Fixes bug reported
 | ||
| 	  by Moe Tunes <moetunes42@gmail.com>
 | ||
| 
 | ||
| test.c
 | ||
| 	- unary_test: fix 'R' case by using find_variable_noref instead of
 | ||
| 	  find_variable
 | ||
| 	- test_unop: add back missing 'R' case.  Fixes bug reported by
 | ||
| 	  NBaH <nbah@sfr.fr>
 | ||
| 
 | ||
| 				    3/2
 | ||
| 				    ---
 | ||
| jobs.c
 | ||
| 	- end_job_control: if job control is active, we changed the terminal's
 | ||
| 	  process group, so make sure we restore it.  Fixes bug reported by
 | ||
| 	  Eduardo A. Bustamante López <dualbus@gmail.com>
 | ||
| 
 | ||
| 				    3/7
 | ||
| 				    ---
 | ||
| pcomplete.c
 | ||
| 	- pcomp_curtxt: new variable, holds the original text to be completed
 | ||
| 	  as passed to the programmable completion code
 | ||
| 	- pcomp_filename_completion_function: if we are running compgen
 | ||
| 	  (presumably in a shell function completion) and performing readline
 | ||
| 	  completion, check the word being completed.  If it's not empty, but
 | ||
| 	  the original word passed to the programmable completion code is an
 | ||
| 	  empty string (""), call a dequoting function if one is available.
 | ||
| 	  This compensates for an assumption in bash-completion.  Reported by
 | ||
| 	  Albert Shih <Albert.Shih@obspm.fr>
 | ||
| 
 | ||
| lib/readline/readline.c
 | ||
| 	- _rl_dispatch_subseq: when deciding whether or not to set vi mode's
 | ||
| 	  idea of the last command, use whether or not the dispatching keymap
 | ||
| 	  is vi_movement_keymap instead of the key sequence length.  The `c',
 | ||
| 	  `d', and `y' commands all take motion commands as `arguments' and
 | ||
| 	  will produce key sequences longer than 1 character.  The arrow keys
 | ||
| 	  will end up dispatching out of a different keymap, so the test will
 | ||
| 	  prevent arrow keys from setting the last command (the problem in
 | ||
| 	  bash-4.2). Bug report from Daan van Rossum <daan@flash.uchicago.edu>
 | ||
| 
 | ||
| lib/readline/vi_mode.c
 | ||
| 	- _rl_vi_motion_command: convenience function to test whether a key is
 | ||
| 	  a vi-mode motion command
 | ||
| 
 | ||
| lib/readline/rlprivate.h
 | ||
| 	- _rl_vi_motion_command: extern declaration
 | ||
| 
 | ||
| parse.y
 | ||
| 	- parse_matched_pair: we should not skip processing single quotes in
 | ||
| 	  posix mode if dolbrace_state == DOLBRACE_QUOTE2 (pattern
 | ||
| 	  substitution).  Fixes bug reported by David Sines
 | ||
| 	  <dave.gma@googlemail.com>
 | ||
| 
 | ||
| 				   3/10
 | ||
| 				   ----
 | ||
| lib/readline/readline.c
 | ||
| 	- _rl_dispatch_callback: treat a return value of -1 as the end of
 | ||
| 	  a command dispatch sequence if the current context doesn't
 | ||
| 	  indicate that we're reading a multi-key sequence
 | ||
| 	  ((cxt->flags & KSEQ_SUBSEQ) == 0).  Turn off the multikey flag
 | ||
| 	  and free the context chain in this case.  Fixes one bug reported
 | ||
| 	  by Felix Yan <felixonmars@gmail.com> to bug-readline list
 | ||
| 	- _rl_dispatch_callback: treat a return value of > 0 the same as 0
 | ||
| 	  and return from the function, since only values < 0 cause us to
 | ||
| 	  simulate recursion.  Rest of fix for bug tracked down by
 | ||
| 	  Anatol Pomozov <anatol.pomozov@gmail.com>
 | ||
| 
 | ||
| 				   3/11
 | ||
| 				   ----
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_in_subshell: if a longjmp occurs, set result to
 | ||
| 	  EXECUTION_FAILURE only if last_command_exit_value == EXECUTION_SUCCESS;
 | ||
| 	  use value of last_command_exit_value otherwise.  Fixes cosmetic
 | ||
| 	  issue reported by Dennis Lambe Jr. <malsyned@malsyned.net>
 | ||
| 
 | ||
| doc/bash.1
 | ||
| 	- shell-kill-word and shell-backward-kill-word should be documented
 | ||
| 	  as unbound by default.  Report from Oliver Hartley
 | ||
| 	  <ohartley@talktalk.net>
 | ||
| 
 | ||
| trap.c
 | ||
| 	- run_pending_traps: save value of $? before running trap commands in
 | ||
| 	  trap_saved_exit_value, like run_exit_trap
 | ||
| 	- _run_trap_internal: save value of $? before running trap commands in
 | ||
| 	  trap_saved_exit_value, like run_exit_trap
 | ||
| 
 | ||
| builtins/common.c
 | ||
| 	- get_exitstat: when running `return' in a trap action, and it is not
 | ||
| 	  supplied an argument, use the saved exit status in
 | ||
| 	  trap_saved_exit_value.  Fixes Posix problem reported by
 | ||
| 	  Eduardo A. Bustamante López <dualbus@gmail.com>
 | ||
| 
 | ||
| 				   3/13
 | ||
| 				   ----
 | ||
| lib/sh/shquote.c
 | ||
| 	- sh_contains_quotes: new function, returns true if a given string
 | ||
| 	  contains any of the shell quote characters (single quote, double
 | ||
| 	  quote, or backslash)
 | ||
| 
 | ||
| externs.h
 | ||
| 	- sh_contains_quotes: new extern declaration
 | ||
| 
 | ||
| pcomplete.c
 | ||
| 	- pcomp_filename_completion_function: more changes for the benefit of
 | ||
| 	  bash-completion: if the argument is not the same as the original
 | ||
| 	  argument passed to the programmable completion code (pcomp_curtxt),
 | ||
| 	  and we are being run by compgen as part of a completion, dequote the
 | ||
| 	  argument as bash-completion expects.  Fix for the complete-word-
 | ||
| 	  with-quoted-special-chars problem with bash-completion
 | ||
| 
 | ||
| 				   3/17
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- execute_intern_function: when in posix mode, make defining a function
 | ||
| 	  with the same name as a special builtin a fatal error only when the
 | ||
| 	  shell is not interactive. Interactive shells display an error
 | ||
| 	  message and go on.  From a discussion with Doug McIlroy
 | ||
| 	  <doug@cs.dartmouth.edu>
 | ||
| 
 | ||
| 				   3/18
 | ||
| 				   ----
 | ||
| arrayfunc.c
 | ||
| 	- assign_compound_array_list: when using expand_assignment_string_to_string
 | ||
| 	  to expand the value in a ( [x]=y ) compound assignment, make sure
 | ||
| 	  that we convert 0x0 to "" when expanding [x]= so it doesn't appear as
 | ||
| 	  if the index is unset.  Fixes bug reported by Geir Hauge
 | ||
| 	  <geir.hauge@gmail.com>
 | ||
| 
 | ||
| builtins/common.c
 | ||
| 	- get_exitstat: update fix of 3/11 to allow the DEBUG trap to use the
 | ||
| 	  current value of $? instead of the value it had before the trap
 | ||
| 	  action was run.  This is one reason the DEBUG trap exists, and
 | ||
| 	  extended debug mode uses it.  Might want to do this only in Posix
 | ||
| 	  mode
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- return: add language cribbed from Posix saying what happens when
 | ||
| 	  return is run without an argument from a trap, including the DEBUG
 | ||
| 	  trap exception
 | ||
| 
 | ||
| 				   3/19
 | ||
| 				   ----
 | ||
| lib/glob/gmisc.c
 | ||
| 	- extglob_pattern_p: make sure ?(patlist) is flagged as an extglob
 | ||
| 	  pattern
 | ||
| 
 | ||
| lib/glob/glob.c
 | ||
| 	- extglob_skipname: rewrite to handle patterns that begin but do not
 | ||
| 	  end with an extglob pattern; change test for easy case and loop
 | ||
| 	  through patterns accordingly.  Fixes problem with matching filenames
 | ||
| 	  with a leading dot reported by Stephane Chazelas
 | ||
| 	  <stephane.chazelas@gmail.com>
 | ||
| 	- wextglob_skipname: make analogous changes
 | ||
| 
 | ||
| 				   3/20
 | ||
| 				   ----
 | ||
| Makefile.in
 | ||
| 	- pass -DDEBUG down to builds in readline and history directories
 | ||
| 
 | ||
| lib/readline/util.c
 | ||
| 	- _rl_trace and related functions are now only compiled in if DEBUG
 | ||
| 	  is defined
 | ||
| 
 | ||
| lib/readline/Makefile.in
 | ||
| 	- substitute @DEBUG@ and pass -DDEBUG, if necessary, to compilation
 | ||
| 	  in LOCAL_CFLAGS
 | ||
| 
 | ||
| 				   3/21
 | ||
| 				   ----
 | ||
| parse.y
 | ||
| 	- shell_getc: when checking whether or not to reallocate
 | ||
| 	  shell_input_line to add trailing newline, don't try to subtract from
 | ||
| 	  shell_input_line_size.  size_t is unsigned, so if its value is less
 | ||
| 	  than 3 (like, say, 2), size-3 is a very large number and the string
 | ||
| 	  will not be reallocated.  Use len+3 > size instead of len > size-3.
 | ||
| 	  Fixes bug reported in
 | ||
| 	  https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1295467
 | ||
| 
 | ||
| 				   3/27
 | ||
| 				   ----
 | ||
| lib/readline/display.c
 | ||
| 	- _rl_clean_up_for_exit: don't bother to call _rl_move_vert to whatever
 | ||
| 	  readline thinks the last displayed line is if it's 0.  Two reasons: a
 | ||
| 	  minor optimization, and it protects against unwanted moving if this
 | ||
| 	  function is called twice, as it is when ^C is pressed.  Fixes bug
 | ||
| 	  reported by Egmont Koblinger <egmont@gmail.com>
 | ||
| 
 | ||
| 				   3/28
 | ||
| 				   ----
 | ||
| bashline.c
 | ||
| 	- invalid_completion: new function, used to identify attempts to
 | ||
| 	  complete words that are syntax errors
 | ||
| 	- attempt_shell_completion: if invalid_completion returns true for a
 | ||
| 	  word in a command position, punt on all completions.  Fixes cosmetic
 | ||
| 	  issue reported by Uwe Storbeck <uwe@ibr.ch>
 | ||
| 	- attempt_shell_completion: add clause so that in_command_position
 | ||
| 	  remains set to 1 for an empty word following a command separator like
 | ||
| 	  (, &, or |
 | ||
| 
 | ||
| lib/readline/kill.c
 | ||
| 	- rl_yank, rl_yank_nth_arg_internal: don't return -1 from bindable
 | ||
| 	  functions, return 1 instead
 | ||
| 
 | ||
| lib/readline/text.c
 | ||
| 	- rl_rubout, _rl_rubout_char, rl_delete, rl_change_case,
 | ||
| 	  rl_transpose_chars, rl_transpose_words, _rl_set_mark_at_pos,
 | ||
| 	  rl_exchange_point_and_mark, _rl_insert_next, _rl_char_search,
 | ||
| 	  _rl_char_search_internal:
 | ||
| 	  don't return -1 from bindable functions, return 1 instead
 | ||
| 
 | ||
| lib/readline/vi_mode.c
 | ||
| 	- rl_vi_end_word, rl_vi_rubout, rl_vi_delete, rl_vi_char_search,
 | ||
| 	  rl_vi_match, _rl_vi_set_mark, _rl_vi_goto_mark:
 | ||
| 	  don't return -1 from bindable functions, return 1 instead
 | ||
| 
 | ||
| lib/readline/macro.c
 | ||
| 	- rl_start_kbd_macro, rl_end_kbd_macro:
 | ||
| 	  don't return -1 from bindable functions, return 1 instead
 | ||
| 
 | ||
| builtins/setattr.def
 | ||
| 	- set_var_attribute: honor setting of no_invisible_vars when setting
 | ||
| 	  att_invisible on a variable
 | ||
| 	- include "../flags.h" for no_invisible_vars
 | ||
| 
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: honor setting of no_invisible_vars when setting
 | ||
| 	  att_invisible on a variable
 | ||
| 	- include "../flags.h" for no_invisible_vars
 | ||
| 
 | ||
| Makefile.in,builtins/Makefile.in
 | ||
| 	- make sure declare.o and setattr.o depend on flags.h
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- decpoint: new function, returns locale's decimal point or `.' default
 | ||
| 	- mkfmt: use decpoint() to get decimal point instead of unconditionally
 | ||
| 	  using `.'.  Fixes bug reported by Andrey Tataranovich
 | ||
| 	  <tataranovich@gmail.com> in debian bug 741669
 | ||
| 
 | ||
| 				   4/10
 | ||
| 				   ----
 | ||
| lib/readline/rltypedefs.h
 | ||
| 	- add back old Function/VFunction/etc typedefs, since other packages
 | ||
| 	  (python, samba) use them. Mark as deprecated using gcc and clang
 | ||
| 	  attributes.  Report and fix from Max Horn <max@quendi.de>
 | ||
| 
 | ||
| 				   4/14
 | ||
| 				   ----
 | ||
| jobs.c
 | ||
| 	- run_sigchld_trap: unwind-protect value of this_shell_builtin, since
 | ||
| 	  it matters in some cases whether or not we are running `wait' or
 | ||
| 	  `eval'.  Fixes bug reported by Eduardo A. Bustamante López
 | ||
| 	  <dualbus@gmail.com>
 | ||
| 
 | ||
| 				   4/18
 | ||
| 				   ----
 | ||
| shell.h
 | ||
| 	- sh_parser_state_t: add `need_here_doc' flags member, since
 | ||
| 	  xparse_dolparen (via parse_command) sets it to 0
 | ||
| 
 | ||
| parse.y
 | ||
| 	- gather_here_documents: make sure need_here_doc is > 0, since we
 | ||
| 	  don't want to just decrement it forever if it ends up < 0. Partial
 | ||
| 	  fix for bug reported by Jared Yanovich <slovichon@gmail.com>
 | ||
| 	- {save,restore}_parser_state: save and restore need_here_doc flag.
 | ||
| 	  Rest of fix for bug reported by Jared Yanovich <slovichon@gmail.com>
 | ||
| 
 | ||
| 				   4/19
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- cond_expand_word: since we are not supposed to be performing word
 | ||
| 	  splitting here, set expand_no_split_dollar_star to 1 in addition to
 | ||
| 	  setting W_NOSPLIT2
 | ||
| 	- expand_word_internal: if we have a case where we have an unquoted
 | ||
| 	  $@ but we are in a case where we don't want to split (W_NOSPLIT2),
 | ||
| 	  make sure we return a list consisting of a single word with the
 | ||
| 	  arguments separated by spaces and don't do word splitting.  Fixes
 | ||
| 	  bug reported by Greg Wooledge <wooledg@eeg.ccf.org> from an IRC
 | ||
| 	  discussion
 | ||
| 
 | ||
| builtins/hash.def
 | ||
| 	- print_portable_hash_info: single-quote pathnames and hashed filenames
 | ||
| 	  that contain shell metacharacters.  Fixes bug reported by
 | ||
| 	  <g1pi@libero.it> in debian bash bug #739853
 | ||
| 
 | ||
| 				   4/20
 | ||
| 				   ----
 | ||
| lib/readline/display.c
 | ||
| 	- When using horizontal scrolling, the redisplay code erases too much
 | ||
| 	  of the line containing successful results, so make sure we only
 | ||
| 	  erase to the end of the line after making sure we move the cursor
 | ||
| 	  to the end.  Fixes bug reported by <Trond.Endrestol@ximalas.info>
 | ||
| 
 | ||
| 				   4/23
 | ||
| 				   ----
 | ||
| {bashhist,bashline}.c
 | ||
| builtins{bind,help,type}.def
 | ||
| lib/glob/glob.c, lib/intl/{loadmsgcat,localealias}.c,lib/sh/mktime.c
 | ||
| 	- fixes to memory leaks uncovered by coverity scan
 | ||
| 
 | ||
| 				   4/24
 | ||
| 				   ----
 | ||
| {bashhist,subst,redir,assoc,jobs,array,trap}.c
 | ||
| lib/intl/l10flist.c
 | ||
| builtins/complete.def
 | ||
| 	- fixes to memory leaks and other resource usage problems uncovered by
 | ||
| 	  coverity scan
 | ||
| 
 | ||
| redir.c
 | ||
| 	- do_redirection_internal: if dup2 fails (presumably because of a
 | ||
| 	  resource limit), close the file descriptor we opened before returning
 | ||
| 	  error
 | ||
| 
 | ||
| 				   4/25
 | ||
| 				   ----
 | ||
| config-top.h
 | ||
| 	- DEFAULT_BASHRC: new define with the name of the default shell
 | ||
| 	  startup file
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- bash_directory_completion_matches: don't dequote the directory name.
 | ||
| 	  If rl_completion_found_quote is non-zero, readline will dequote the
 | ||
| 	  filename itself.  Fixes bug reported by Clark Wang
 | ||
| 	  <dearvoid@gmail.com>
 | ||
| 
 | ||
| 				   4/27
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- parameter_brace_expand_rhs: if parameter_brace_find_indir returns
 | ||
| 	  NULL or "", or if it returns something that is not a valid identifier,
 | ||
| 	  report an error and return &expand_wdesc_error so the error can
 | ||
| 	  propagate up.  Fixes bug reported by Andre Holzhey
 | ||
| 	  <andre.holzhey@gmx.de>
 | ||
| 
 | ||
| 				   4/29
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- parameter_brace_substring: don't short-circuit right away if the
 | ||
| 	  value is NULL but we are looking at the positional parameters.  Part
 | ||
| 	  of fix for bug reported by Pierre Gaston <pierre.gaston@gmail.com>
 | ||
| 	- pos_params: if there are no positional parameters, only short-circuit
 | ||
| 	  if we are looking for $1 and above.  Rest of fix for bug reported
 | ||
| 	  by Pierre Gaston <pierre.gaston@gmail.com>
 | ||
| 
 | ||
| subst.h
 | ||
| 	- SD_NOPROCSUB: new flag for skip_to_delim, means to not allow any
 | ||
| 	  process subsitutions (should not have overloaded SD_NOSKIPCMD)
 | ||
| 
 | ||
| subst.c
 | ||
| 	- skip_to_delim: honor SD_NOPROCSUB flag
 | ||
| 
 | ||
| make_cmd.c
 | ||
| 	- make_arith_for_expr: set W_NOPROCSUB flag in the created word
 | ||
| 	- make_arith_for_command: set SD_NOPROCSUB in the flags argument to
 | ||
| 	  skip_to_delim so we don't treat <( or >( as a process substitution
 | ||
| 	  (we won't evaluate them in eval_arith_for_expr anyway).  Fixes
 | ||
| 	  bug reported by Pierre Gaston <pierre.gaston@gmail.com>
 | ||
| 
 | ||
| 				    5/1
 | ||
| 				    ---
 | ||
| lib/glob/gmisc.c
 | ||
| 	- glob_dirscan: new function, takes a pattern and a directory separator
 | ||
| 	  argument and advances the pattern to the last occurrence of the
 | ||
| 	  separator. Like strrchr, but understands extended glob patterns and
 | ||
| 	  uses glob_patscan to skip over them
 | ||
| 
 | ||
| lib/glob/glob.c
 | ||
| 	- extglob_skipname: if the extended globbing pattern is invalid, don't
 | ||
| 	  skip the name
 | ||
| 	- glob_filename: if there is a slash in the pattern to be matched, and
 | ||
| 	  extglob is enabled, use glob_dirscan to find the real last occurrence
 | ||
| 	  of `/' to avoid being confused by slashes in extglob patterns.  Fix
 | ||
| 	  for bug reported by Pierre Gaston <pierre.gaston@gmail.com>
 | ||
| 
 | ||
| 				    5/6
 | ||
| 				    ---
 | ||
| variables.c
 | ||
| 	- make_local_variable: only set the att_invisible attribute if
 | ||
| 	  no_invisible_vars isn't set
 | ||
| 	- find_variable_for_assignment: new function, intended to be called by
 | ||
| 	  code that eventually wants to assign a value to the variable; will not
 | ||
| 	  skip invisible variables; currently identical to find_variable
 | ||
| 	- find_variable_no_invisible: new function, finds the first visible
 | ||
| 	  instance of variable with a given name in the variable context chain;
 | ||
| 	  eventually will be used to replace find_variable; separate right now
 | ||
| 	  for testing
 | ||
| 
 | ||
| variables.h
 | ||
| 	- find_variable_for_assignment: extern declaration
 | ||
| 	- find_variable_no_invisible: extern declaration
 | ||
| 
 | ||
| 				    5/7
 | ||
| 				    ---
 | ||
| variables.c
 | ||
| 	- make_local_variable: don't clear `invisible' attribute if we are
 | ||
| 	  returning an existing local variable at the right context.  Let the
 | ||
| 	  upper layers do that. Fixes bug reported by Dan Douglas
 | ||
| 	  <ormaaj@gmail.com>
 | ||
| 
 | ||
| 				    5/8
 | ||
| 				    ---
 | ||
| lib/readline/input.c
 | ||
| 	- rl_getc: call RL_CHECK_SIGNALS if a read(2) is interrupted (-1/EINTR)
 | ||
| 	  by SIGALRM or SIGVTALRM (placeholder for non-keyboard-generated
 | ||
| 	  signals of interest)
 | ||
| 
 | ||
| builtins/read.def
 | ||
| 	- edit_line: call bashline_set_event_hook and
 | ||
| 	  bashline_reset_event_hook around call to readline(), so the right
 | ||
| 	  signal handling happens
 | ||
| 	- read_builtin: make sure we add an unwind_protect call to
 | ||
| 	  bashline_reset_event_hook.  These changes fix bug reported in
 | ||
| 	  https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1317476
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- bash_event_hook: make sure we clean up the readline state by calling
 | ||
| 	  rl_cleanup_after_signal if sigalrm_seen is non-zero.  The read builtin
 | ||
| 	  sets this when it times out
 | ||
| 
 | ||
| 				   5/12
 | ||
| 				   ----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- clarify language to make it clear that changing attributes of a
 | ||
| 	  nameref variable (e.g., export), actually changes the attributes of
 | ||
| 	  the referenced variable.  Fixes omission noted by Jeff Haemer
 | ||
| 	  <jeffrey.haemer@gmail.com>
 | ||
| 
 | ||
| arrayfunc.c
 | ||
| 	- bind_array_var_internal: make sure ENTRY no longer has invisible
 | ||
| 	  attribute before returning.  Fixes bug reported by Geir Hauge
 | ||
| 	  <geir.hauge@gmail.com>
 | ||
| 
 | ||
| 				   5/22
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- shell_execve: if execve fails and we return 127 or 126, make sure to
 | ||
| 	  set last_command_exit_value if a call to file_error or report_error
 | ||
| 	  causes the shell to exit.  This ensures that the shell exits with
 | ||
| 	  the right value.
 | ||
| 
 | ||
| 				    6/6
 | ||
| 				    ---
 | ||
| shell.c
 | ||
| 	- drop_priv_mode: print an error message on setuid() failure, optionally
 | ||
| 	  exit if errno == EAGAIN, as it can be on Linux when RLIMIT_NPROC for
 | ||
| 	  the target user is exceeded.
 | ||
| 
 | ||
| config-top.h
 | ||
| 	- EXIT_ON_SETUID_FAILURE: new settable define, will cause the shell to
 | ||
| 	  exit if setuid fails with errno == EAGAIN
 | ||
| 
 | ||
| 				   6/10
 | ||
| 				   ----
 | ||
| parse.y
 | ||
| 	- time_command_acceptable: fix so time is accepted everywhere the
 | ||
| 	  grammar is looking for a `compound_list'.  Fixes bug reported by
 | ||
| 	  Dale Worley <worley@alum.mit.edu>
 | ||
| 
 | ||
| 				   6/12
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- clear_fifo_list: new function, clears FDs associated with open pipes
 | ||
| 	  in current FIFO list without closing the file descriptors.  Can
 | ||
| 	  possibly be used when shell_execve fails and the shell jumps back
 | ||
| 	  to top_level and we don't want the shell to close the open FIFOs
 | ||
| 	  each time through the read-execute loop.  Bug reported by Harald
 | ||
| 	  Koenig <koenig@tat.physik.uni-tuebingen.de>
 | ||
| 
 | ||
| 
 | ||
| 				   6/16
 | ||
| 				   ----
 | ||
| builtins/shopt.def
 | ||
| 	- compat42: make sure the `compat42' option sets the correct variable
 | ||
| 	  for compatibility level.  Fixes bug reported by Ondrej Oprala
 | ||
| 	  <ooprala@redhat.com>
 | ||
| 
 | ||
| support/bashbug.sh
 | ||
| 	- fix typo when echoing $USAGE.  Report from Shantanu Kulkarni
 | ||
| 	  <djbware@shantanukulkarni.org>
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- shell_execve: before longjmp back to subshell_top_level, clear out the
 | ||
| 	  FIFO fd list by calling clear_fifo_list so the FDs (which we inherited
 | ||
| 	  from our parent) aren't closed every time through the read-eval loop.
 | ||
| 	  Fix for bug reported by Harald Koenig <koenig@tat.physik.uni-tuebingen.de>
 | ||
| 
 | ||
| 				   6/18
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- extract_process_subst: add additional argument: xflags, allow callers to
 | ||
| 	  pass flags like extract_command_subst
 | ||
| 	- extract_process_subst: call xparse_dolparen like command substitution
 | ||
| 	  to avoid problems when parsing commands constructs with embedded open
 | ||
| 	  parens.  Fixes bug reported by Tim Friske <me@timfriske.com>
 | ||
| 
 | ||
| subst.h
 | ||
| 	- extract_process_subst: modified prototype for extern declaration
 | ||
| 
 | ||
| 				   6/19
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- execute_pipeline: if running with lastpipe enabled, make sure that we
 | ||
| 	  check whether or not the job id is valid using INVALID_JOB before
 | ||
| 	  calling job_exit_status. the jobs list can get frozen and unfrozen in
 | ||
| 	  the presence of nested pipelines and loops and wait_for can clear a
 | ||
| 	  job table entry.  Fixes bug reported by <scorp.dev.null@gmail.com>
 | ||
| 
 | ||
| jobs.c
 | ||
| 	- freeze_jobs_list: now returns old value of jobs_list_frozen; unused at
 | ||
| 	  current time
 | ||
| 
 | ||
| jobs.h
 | ||
| 	- freeze_jobs_list: change return value
 | ||
| 
 | ||
| 				   6/20
 | ||
| 				   ----
 | ||
| lib/glob/smatch.c
 | ||
| 	- MEMCHR: single-byte and wide character defines (memchr/wmemchr)
 | ||
| 
 | ||
| lib/glob/sm_loop.c
 | ||
| 	- GMATCH: when the wildcards are the last element of the pattern, make
 | ||
| 	  sure they do not match a string containing a `/' if FNM_PATHNAME is
 | ||
| 	  set in FLAGS
 | ||
| 	- GMATCH: when recursively calling GMATCH after we see a `*', don't
 | ||
| 	  try to consume the rest of the pattern with `*' if FNM_PATHNAME is
 | ||
| 	  set in FLAGS, just consume up to the next slash and then see whether
 | ||
| 	  or not the rest of the pattern matches.  Fixes bug reported by Ian
 | ||
| 	  Kelling <ian@iankelling.org>
 | ||
| 	- GMATCH: when processing `*' in the pattern, after skipping consecutive
 | ||
| 	  wildcards, if we hit a literal `/' in the pattern and we're looking
 | ||
| 	  for a pathname, skip characters in the string until we find a `/'
 | ||
| 	  (no slash means the match fails), and try to match the rest of the
 | ||
| 	  pattern against the portion of the string after the next `/'.  Picked
 | ||
| 	  up from gnulib/glibc
 | ||
| 
 | ||
| pathexp.c
 | ||
| 	- split_ignorespec: since split_ignorespec gets globbing patterns,
 | ||
| 	  make sure we call skip_to_delim with the SD_GLOB flag so delimiters
 | ||
| 	  that occur within bracket expressions don't delimit the pattern.
 | ||
| 	  Fixes problem with [[:digit:]] in GLOBIGNORE reported by Ian Kelling
 | ||
| 	  <ian@iankelling.org>
 | ||
| 
 | ||
| unwind_prot.c
 | ||
| 	- unwind_protect_tag_on_stack: new function, returns 1 if unwind-protect
 | ||
| 	  frame corresponding to `tag' argument is on unwind-protect stack
 | ||
| 
 | ||
| unwind_prot.h
 | ||
| 	- unwind_protect_tag_on_stack: extern declaration
 | ||
| 
 | ||
| 				   6/30
 | ||
| 				   ----
 | ||
| lib/readline/misc.c
 | ||
| 	- _rl_revert_all_lines: set entry->data to 0 after assigning it to
 | ||
| 	  rl_undo_list to avoid pointer aliasing problems that would result
 | ||
| 	  in entry->line being freed by an undo.  The subsequent free would
 | ||
| 	  be a double free.  Report and fix from Jared Yanovich
 | ||
| 	  <slovichon@gmail.com>
 | ||
| 
 | ||
| subst.c
 | ||
| 	- command_substitute: other shells do not appear to inherit the -v
 | ||
| 	  option when reading and executing command substitutions.  Reported
 | ||
| 	  by Ondrej Oprala <ooprala@redhat.com>
 | ||
| 
 | ||
| 				    7/1
 | ||
| 				    ---
 | ||
| config-top.h
 | ||
| 	- CHECKHASH_DEFAULT: new define that supplies the default value for
 | ||
| 	  check_hashed_filenames (`checkhash' shopt option); still 0 by default
 | ||
| 
 | ||
| findcmd.c
 | ||
| 	- check_hashed_filenames: initialize using CHECKHASH_DEFAULT
 | ||
| 
 | ||
| lib/readline/histexpand.c
 | ||
| 	- history_expand: double quotes can inhibit recognition of the history
 | ||
| 	  comment character if history_quotes_inhibit_expansion is non-zero
 | ||
| 
 | ||
| lib/readline/doc/{history.3,hstech.texi}
 | ||
| 	- history_quotes_inhibit_expansion: expand definition to note that it
 | ||
| 	  inhibits scanning for the history comment character as well; correct
 | ||
| 	  typo to make it clear that it only works on double-quoted strings
 | ||
| 
 | ||
| lib/sh/zgetline.c
 | ||
| 	- add new fourth argument: DELIM, allows delimiter to be something
 | ||
| 	  other than newline (if DELIM != '\n', UNBUFFERED_READ should be
 | ||
| 	  non-zero)
 | ||
| 	- UNBUFFERED_READ is now fifth argument
 | ||
| 	- check character against DELIM rather than strictly newline
 | ||
| 
 | ||
| externs.h
 | ||
| 	- zgetline: change function prototype for extern declaration
 | ||
| 
 | ||
| builtins/mapfile.def
 | ||
| 	- mapfile: change calling sequence for zgetline calls
 | ||
| 	- mapfile_builtin: new -d option: DELIM, like in read builtin
 | ||
| 	- mapfile_builtin: pass `delim' to mapfile() as new argument; default
 | ||
| 	  to '\n' unless -d option supplied
 | ||
| 	- mapfile: take new DELIM argument, pass to zgetline
 | ||
| 	- mapfile: if DELIM != '\n', set unbuffered_read to 1
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- mapfile: document new `-d DELIM' option
 | ||
| 
 | ||
| 				    7/5
 | ||
| 				    ---
 | ||
| lib/readline/histfile.c
 | ||
| 	- history_truncate_file: if there is an error writing the truncated
 | ||
| 	  history list back to the history file, use the same strategy as
 | ||
| 	  history_do_write: create a backup file, rename the history file to
 | ||
| 	  the backup file, and restore the original history file from the
 | ||
| 	  backup file name if the write or the close fails.  Suggestion from
 | ||
| 	  Chen Gang <gang.chen.5i5j@gmail.com> to bug-readline
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- evalnest, evalnest_max: new variables establishing maximum number of
 | ||
| 	  recursive `eval' calls; current max is 4096
 | ||
| 	- execute_builtin: unwind-protect value of evalnest around calls to
 | ||
| 	  eval builtin. Suggested by Oliver Morais <oliver.morais@gmail.com>
 | ||
| 	- {initialize_subshell,execute_subshell_builtin_or_function}: reset
 | ||
| 	  evalnest to 0 in a subshell
 | ||
| 
 | ||
| builtins/setattr.def
 | ||
| 	- show_name_attributes: show a variable's attributes even if it's
 | ||
| 	  invisible (don't show any value since it has none). This means that
 | ||
| 	  declare -p var will display VAR's attributes even when var marked
 | ||
| 	  as invisible.  Feature request from Peggy Russell
 | ||
| 	  <prusselltechgroup@gmail.com>
 | ||
| 	- show_var_attributes: don't print assignment if array or assoc
 | ||
| 	  attribute is set but variable marked as invisible
 | ||
| 
 | ||
| tests/array.right
 | ||
| 	- special note: changed all declare -a output tests because the shell
 | ||
| 	  will no longer print out values for invisible array variables. This
 | ||
| 	  is a change, but one for correctness:
 | ||
| 
 | ||
| 		declare -a foo='()'
 | ||
| 	  and
 | ||
| 		declare -a foo
 | ||
| 	  are not equivalent
 | ||
| 
 | ||
| 				   7/22
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- parameter_brace_expand: after calling parameter_brace_expand_indir,
 | ||
| 	  turn off the W_ARRAYIND flag in the word it returns, because there
 | ||
| 	  is no way for it to return the index that should be used, and the
 | ||
| 	  rest of the function assumes that IND is valid if W_ARRAYIND is set.
 | ||
| 	  Fixes bug reported by Corentin Peuvrel <cpeuvrel@pom-monitoring.com>
 | ||
| 
 | ||
| 				    8/2
 | ||
| 				    ---
 | ||
| parse.y
 | ||
| 	- read_token_word: if we read a character that will end a command
 | ||
| 	  substitution, don't skip over quoted newlines when we read an
 | ||
| 	  additional character to figure out whether it's a two-character
 | ||
| 	  token. This lets the higher layers deal with quoted newlines after
 | ||
| 	  the command substitution. Fixes bug reported by EmanueL Czirai
 | ||
| 	  <amanual@riseup.net>
 | ||
| 
 | ||
| 				   8/11
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- execute_pipeline: check whether lastpipe_jid corresponds to a valid
 | ||
| 	  job before calling append_process, for the same reason as fix from
 | ||
| 	  6/19.  Fixes bug reported by <lolilolicon@gmail.com>
 | ||
| 
 | ||
| 				   8/12
 | ||
| 				   ----
 | ||
| lib/sh/unicode.c
 | ||
| 	- stub_charset: use strncpy instead of strcpy because we are copying
 | ||
| 	  into a local fixed-length buffer.  Fixes vulnerability reported by
 | ||
| 	  <romerox.adrian@gmail.com>
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_pipeline: if we don't call append_process, call
 | ||
| 	  wait_for_single_pid to get the status of `lastpid', since that will
 | ||
| 	  check the status of already-reaped processes.  Fixes spurious error
 | ||
| 	  message about non-existent process from fix of 8/11
 | ||
| 
 | ||
| 				   8/15
 | ||
| 				   ----
 | ||
| jobs.c
 | ||
| 	- running_in_background: new variable, keeps track of whether or not we
 | ||
| 	  are running in the background (not perfect yet)
 | ||
| 	- initialize_job_control: even if we are not turning on job control,
 | ||
| 	  get the terminal pgrp so we can use it later
 | ||
| 	- {set_job_control,initialize_job_control}: set running_in_background
 | ||
| 	  to 1 if terminal pgrp != shell pgrp
 | ||
| 	- {stop_pipeline,make_child,wait_for}: if we are running in the
 | ||
| 	  background, don't mess with the terminal's process group; assume that
 | ||
| 	  the parent shell will do that.  Fixes bug reported by Greg Wooledge
 | ||
| 	  <wooledg@eeg.ccf.org>
 | ||
| 
 | ||
| shell.c
 | ||
| 	- shell_reinitialize: reset running_in_background back to 0
 | ||
| 
 | ||
| 				   8/24
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- {execute_connection,execute_command_internal}: make sure that
 | ||
| 	  asynchronous commands always set $? to 0 and are not affected by the
 | ||
| 	  command's exit status being inverted using `!'.  Fixes bug reported
 | ||
| 	  by Vincent Lefevre <vincent@vinc17.net>
 | ||
| 
 | ||
| lib/readline/display.c
 | ||
| 	- rl_message: call vsnprintf with full msg_bufsiz, since it counts 
 | ||
| 	  one fewer than the buffer length passed as an argument.  Bug report
 | ||
| 	  and fix from Dylan Cali <calid1984@gmail.com>
 | ||
| 
 | ||
| 				   8/26
 | ||
| 				   ----
 | ||
| builtins/evalstring.c
 | ||
| 	- evalstring: if CURRENT_TOKEN == yacc_EOF, reset it to newline.  This
 | ||
| 	  is instead of calling reset_parser(); that might still be needed.
 | ||
| 	  Fixes bug with eval and a subsequent statement ending with EOF
 | ||
| 	  reported by <jim.avera@gmail.org>
 | ||
| 
 | ||
| pcomplete.c
 | ||
| 	- filter_stringlist: when extglob is on, a leading ! in the filter
 | ||
| 	  pattern should be left alone when it introduces a !(pat) pattern;
 | ||
| 	  otherwise it messes up the pattern.  Fixes bug reported by David
 | ||
| 	  Korn <dgkorn@gmail.com>
 | ||
| 
 | ||
| 				   8/27
 | ||
| 				   ----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- clarify the behavior of bash when given the -c option, since $0 is
 | ||
| 	  technically not a positional parameter.  Bug reported by Stephane
 | ||
| 	  Chazelas <stephane.chazelas@gmail.com>
 | ||
| 
 | ||
| 				   8/28
 | ||
| 				   ----
 | ||
| lib/readline/history.c
 | ||
| 	- add_history: use history_max_entries (if history is stifled) or
 | ||
| 	  DEFAULT_HISTORY_INITIAL_SIZE if not (new define, defaults to 502)
 | ||
| 	  to size the initial allocation of the history array.  Assumption
 | ||
| 	  is that this will reduce the number of allocations
 | ||
| 
 | ||
| 				   8/29
 | ||
| 				   ----
 | ||
| execute_command.c:
 | ||
| 	- sourcenest, sourcenest_max: new variables used to track level of
 | ||
| 	  sourced files and (maybe) one day catch infinite source recursion
 | ||
| 	- execute_builtin: if current source level exceeds sourcenest_max,
 | ||
| 	  trigger an error and jump back to the top level
 | ||
| 	- {initialize_subshell,execute_subshell_builtin_or_function}: reset
 | ||
| 	  sourcenest to 0 in a subshell
 | ||
| 
 | ||
| 				    9/2
 | ||
| 				    ---
 | ||
| variables.c
 | ||
| 	- bind_variable: if a nameref expands to an array reference, make
 | ||
| 	  sure that assign_array_element gets called (maybe even
 | ||
| 	  recursively) instead of bind_variable_internal, so invalid variable
 | ||
| 	  names (like arr[0]) don't get created.  Fixes bug reported by
 | ||
| 	  <lolilolicon@gmail.com>
 | ||
| 
 | ||
| 				    9/3
 | ||
| 				    ---
 | ||
| execute_cmd.c
 | ||
| 	- evalnest_max,sourcenest_max: initialize from EVALNEST_MAX and
 | ||
| 	  SOURCENEST_MAX, respectively.  Feature suggested by
 | ||
| 	  <bogun.dmitriy@gmail.com>
 | ||
| 
 | ||
| config-top.h
 | ||
| 	- define EVALNEST_MAX and SOURCENEST_MAX to 0
 | ||
| 
 | ||
| 				    9/6
 | ||
| 				    ---
 | ||
| bashline.c
 | ||
| 	- find_cmd_start: fix to (crudely) deal with >| token; even though
 | ||
| 	  skip_to_delim finds `|' as a delimiter, we call it again and use
 | ||
| 	  what the second call finds.  Fixes bug reported by Dan Jacobson
 | ||
| 	  <jidanni@jidanni.org>
 | ||
| 
 | ||
| findcmd.c
 | ||
| 	- find_in_path_element: if in posix mode, do not expand a literal
 | ||
| 	  tilde in a $PATH element
 | ||
| 
 | ||
| doc/bashref.texi
 | ||
| 	- add change to tilde expansion in $PATH elements to posix mode
 | ||
| 	  description
 | ||
| 
 | ||
| builtins/common.h
 | ||
| 	- ISHELP: new define for builtins that do their own option parsing
 | ||
| 	  and don't use internal_getopt(); checks whether argument is --help
 | ||
| 	- CHECK_HELPOPT: convenience define to help builtins that do their
 | ||
| 	  own option parsing to check for --help with one line of code
 | ||
| 	- CASE_HELPOPT: convenience define to help builtins that use
 | ||
| 	  internal_getopt() check for --help with one line of code
 | ||
| 
 | ||
| builtins/help.def
 | ||
| 	- builtin_help: new function, prints out --help output for current
 | ||
| 	  builtin
 | ||
| 
 | ||
| builtins/{kill,let,pushd}.def
 | ||
| 	- add CHECK_HELPOPT to builtins that use ISOPTION; call builtin_help
 | ||
| 	  and return EX_USAGE (kill/let/pushd/popd/dirs)
 | ||
| 
 | ||
| builtins/{caller,fg_bg}.def
 | ||
| 	- use CHECK_HELPOPT to recognize --help, since these builtins perform
 | ||
| 	  checks that can cause them to return before calling no_options
 | ||
| 	  (caller/fg/bg)
 | ||
| 
 | ||
| builtins/{exit,return}.def
 | ||
| 	- use CHECK_HELPOPT to recognize --help before calling get_exitstat()
 | ||
| 	  (return/exit/logout)
 | ||
| 
 | ||
| builtins/{break,shift}.def
 | ||
| 	- use CHECK_HELPOPT to recognize --help before any other checks
 | ||
| 	  (break/continue/shift)
 | ||
| 
 | ||
| builtins/bashgetopt.h
 | ||
| 	- GETOPT_EOF: convenience define
 | ||
| 	- GETOPT_HELP: new define, to indicate internal_getopt saw --help
 | ||
| 
 | ||
| builtins/bashgetopt.c
 | ||
| 	- internal_getopt: return GETOPT_HELP for --help
 | ||
| 
 | ||
| builtins/common.c
 | ||
| 	- no_options: recognize --help, call builtin_help and return 2
 | ||
| 	  (builtin/eval/source/./times)
 | ||
| 
 | ||
| builtins/command.def
 | ||
| 	- use CASE_HELPOPT() to handle --help after calling internal_getopt()
 | ||
| 	  (command)
 | ||
| 
 | ||
| builtins/{colon,echo,test}.def
 | ||
| 	- do not recognize --help (:/true/false/echo/test)
 | ||
| 
 | ||
| 				    9/8
 | ||
| 				    ---
 | ||
| sig.c
 | ||
| 	- termsig_sighandler: if readline is active now, set the bashline event
 | ||
| 	  hook. Old code just set it for interactive shells.  Part of fix for
 | ||
| 	  bug reported by <mickael9@gmail.com>
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- bash_event_hook: call rl_cleanup_after_signal if terminating_signal
 | ||
| 	  is non-zero, since check_signals_and_traps() will cause the shell to
 | ||
| 	  exit if it is and we want to clean up the readline state first.  Rest
 | ||
| 	  of fix for bug reported by <mickael9@gmail.com>
 | ||
| 
 | ||
| 				    9/9
 | ||
| 				    ---
 | ||
| jobs.c
 | ||
| 	- waitchld: when running the wait builtin in posix mode, with a trap set
 | ||
| 	  on SIGCHLD, use queue_sigchld_trap instead of trap_handler (SIGCHLD),
 | ||
| 	  otherwise you will lose SIGCHLDs when children_exited > 1.  Fixes bug
 | ||
| 	  reported by <crispusfairbairn@gmail.com>
 | ||
| 
 | ||
| builtins/read.def
 | ||
| 	- read_builtin: if we are changing the tty settings, call
 | ||
| 	  initialize_terminating_signals so we have a chance to catch all
 | ||
| 	  terminating signals and potentially clean up the terminal before
 | ||
| 	  exiting
 | ||
| 	- read_builtin: tty_modified: new variable, set to 1 if we change the
 | ||
| 	  terminal attributes and have to call ttyrestore() to restore them
 | ||
| 	- if one of the `reads' returns -1/EINTR due to a terminating signal,
 | ||
| 	  and we have modified the terminal, call ttyrestore before calling
 | ||
| 	  CHECK_TERMSIG
 | ||
| 	- ttyrestore: set tty_modified to 0 when called
 | ||
| 
 | ||
| 				   9/10
 | ||
| 				   ----
 | ||
| builtins/read.def
 | ||
| 	- termsave: now global to file so other functions can use it
 | ||
| 	- read_tty_cleanup: if tty_modified is non-zero, call ttycleanup to
 | ||
| 	  restore old terminal settings and turn off tty_modified
 | ||
| 
 | ||
| sig.c
 | ||
| 	- termsig_handler: call read_tty_cleanup if currently executing read
 | ||
| 	  builtin; it does the right thing.  Final piece of fix for bug reported
 | ||
| 	  by Jan Rome <jan.rome@gmail.com>
 | ||
| 
 | ||
| 				   9/11
 | ||
| 				   ----
 | ||
| general.c
 | ||
| 	- printable_filename: general function to return a printable
 | ||
| 	  representation of a string (presumed to be a filename)
 | ||
| 
 | ||
| general.h
 | ||
| 	- extern declaration for printable_filename
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_disk_command: use printable_filename
 | ||
| 
 | ||
| builtins/{bind,cd,enable,hash,source}.def
 | ||
| 	- use printable_filename as appropriate when printing error messages.
 | ||
| 	  From a suggestion by Vincent Lefevre <vincent@vinc17.net>
 | ||
| 
 | ||
| builtins/bind.def
 | ||
| 	- use CASE_HELPOPT() to handle --help after calling internal_getopt()
 | ||
| 	  (bind)
 | ||
| 
 | ||
| 				   9/12
 | ||
| 				   ----
 | ||
| builtins/common.h
 | ||
| 	- SEVAL_FUNCDEF: new flag for parse_and_execute; it means that we only
 | ||
| 	  accept a single function definition command, as when we are importing
 | ||
| 	  functions from the environment
 | ||
| 	- SEVAL_ONECMD: new flag for parse_and_execute; for future use
 | ||
| 
 | ||
| builtins/evalstring.c
 | ||
| 	- parse_and_execute: if the SEVAL_FUNCDEF flag is set, disallow anything
 | ||
| 	  but a function definition command
 | ||
| 
 | ||
| variables.c
 | ||
| 	- initialize_shell_variables: don't allow functions with invalid names
 | ||
| 	  to be imported from the environment, even though we still allow them
 | ||
| 	  to be defined
 | ||
| 	- initialize_shell_variables: when importing function definitions from
 | ||
| 	  the environment, call parse_and_execute with the SEVAL_FUNCDEF flag
 | ||
| 	  to force the command to be just a function definition
 | ||
| 
 | ||
| subst.c
 | ||
| 	- param_expand: when expanding a $name variable expansion, make sure that
 | ||
| 	  the variable is visible and set before following the nameref chain
 | ||
| 	- param_expand: when expanding a $name variable expansion and following the
 | ||
| 	  nameref chain, make sure the resulting variable is visible and set
 | ||
| 	  before using it
 | ||
| 
 | ||
| 				   9/13
 | ||
| 				   ----
 | ||
| variables.c
 | ||
| 	- initialize_shell_variables: when importing function definitions from
 | ||
| 	  environment, use SEVAL_ONECMD flag for parse_and_execute.  Part of
 | ||
| 	  CVE-2014-6271
 | ||
| 
 | ||
| builtins/evalstring.c
 | ||
| 	- parse_and_execute: if SEVAL_ONECMD flag set, return immediately after
 | ||
| 	  calling execute_command_internal.  Final piece for fix for bug
 | ||
| 	  reported by Stephane Chazelas <stephane.chazelas@gmail.com>.  Part of
 | ||
| 	  CVE-2014-6271
 | ||
| 
 | ||
| 				   9/24
 | ||
| 				   ----
 | ||
| parse.y
 | ||
| 	- reset_parser: reset eol_ungetc_lookahead to 0 here, since we don't want
 | ||
| 	  shell_getc returning it on the next call.  Fixes problem reported by
 | ||
| 	  Tavis Ormandy <taviso@cmpxchg8b.com> and Michal Zalewski
 | ||
| 	  <lcamtuf@coredump.cx>.  Potentially part of CVE-2014-6271; fix for
 | ||
| 	  CVE-2014-7169
 | ||
| 
 | ||
| 				   9/25
 | ||
| 				   ----
 | ||
| parse.y
 | ||
| 	- push_heredoc: new function, pushes a here-doc redirection onto
 | ||
| 	  redir_stack handling overflow of redir_stack. Exits on overflow.
 | ||
| 	  Original fix from Florian Weimer <fweimer@redhat.com>.  Fix for
 | ||
| 	  CVE-2014-7186
 | ||
| 	- change straight assignments to redir_stack to call push_redir
 | ||
| 	- add one to size of word_lineno stack to avoid off-by-one error
 | ||
| 	  below in read_token_word. Overflow just results in line numbers
 | ||
| 	  being wrong.  Fix for CVE-2014-7187
 | ||
| 
 | ||
| 				   9/27
 | ||
| 				   ----
 | ||
| {execute_cmd,trap}.c
 | ||
| 	- changes to make minimal-config builds work again, mostly missing
 | ||
| 	  #ifdefs for optional features
 | ||
| 
 | ||
| builtins/common.c
 | ||
| 	- builtin_help: dummy version to be included if HELP_BUILTIN not
 | ||
| 	  defined, for minimal-config builds
 | ||
| 
 | ||
| variables.c
 | ||
| 	- initialize_shell_variables: incorporated patches from Florian
 | ||
| 	  Weimer <fweimer@redhat.com> to change the strings bash looks
 | ||
| 	  for when importing shell functions from the environment.  It
 | ||
| 	  adds a prefix (BASH_FUNC_) and a suffix (%%) to the name to
 | ||
| 	  mark it as having been created by bash as an exported function.
 | ||
| 	  Fix for remote attacks part of CVE-2014-6271 and CVE-2014-7169
 | ||
| 	- mk_env_string: takes new argument, indicating whether we are
 | ||
| 	  constructing a function
 | ||
| 	- mk_env_string: encodes function names as described above, so
 | ||
| 	  initialize_shell_variables can find them
 | ||
| 
 | ||
| 				   9/28
 | ||
| 				   ----
 | ||
| copy_cmd.c
 | ||
| 	- copy_redirects: before calling savestring on here_doc_eof, make
 | ||
| 	  sure it's not NULL (it could have been the result of a here
 | ||
| 	  document delimited by EOF or EOS).  Fixes bug reported by
 | ||
| 	  Michal Zalewski <lcamtuf@coredump.cx>.  Fix for CVE-2014-6277
 | ||
| 
 | ||
| make_cmd.c
 | ||
| 	- make_redirection: initialize here_doc_eof member to NULL.  Rest of
 | ||
| 	  fix for CVE-2014-6277
 | ||
| 
 | ||
| 				   9/29
 | ||
| 				   ----
 | ||
| parse.y
 | ||
| 	- current_input_line_state: return a sh_input_line_state_t containing
 | ||
| 	  the current shell_input_line and its index and size variables
 | ||
| 
 | ||
| shell.h
 | ||
| 	- current_input_line_state: extern declaration
 | ||
| 
 | ||
| builtins/evalstring.c
 | ||
| 	- parse_and_execute: call reset_parser() before returning if
 | ||
| 	  SEVAL_ONECMD set.  Fixes bug reported by Michal Zalewski
 | ||
| 	  <lcamtuf@coredump.cx> and designated CVE-2014-6278
 | ||
| 	- parse_and_execute: if we parse a function definition when
 | ||
| 	  SEVAL_FUNCDEF is set, but don't consume the entire passed string,
 | ||
| 	  throw an error, reset the parser, and return.  Part of fix for
 | ||
| 	  CVE-2014-6278
 | ||
| 	- parse_and_execute: if parsing the shell function definition when
 | ||
| 	  SEVAL_FUNCDEF is set transforms the function name (e.g., if it
 | ||
| 	  begins with a newline or begins or ends with whitespace), throw
 | ||
| 	  an error, reset the parser, and return.  Fixes bug reported by
 | ||
| 	  Eric Kobrin <ekobrin@akamai.com>
 | ||
| 
 | ||
| 				   10/2
 | ||
| 				   ----
 | ||
| jobs.c
 | ||
| 	- bgp_prune: don't do anything if bgpids.npid == 0 or
 | ||
| 	  bgpids.list == NULL.  This can happen if something gets run before
 | ||
| 	  the job control framework is initialized.  Bug report from
 | ||
| 	  <mancha1@zoho.com>
 | ||
| 
 | ||
| 				   10/3
 | ||
| 				   ----
 | ||
| parse.y
 | ||
| 	- xparse_dolparen: don't set token_to_read to newline after calling
 | ||
| 	  parse_string() and cleaning up when the shell is not interactive.  This
 | ||
| 	  makes the parser think it's ok to read new commands even if it's not in
 | ||
| 	  a state where that should be possible.  Underlying fix for bug reported
 | ||
| 	  by Michal Zalewski <lcamtuf@coredump.cx> and designated CVE-6278
 | ||
| 	- parser_remaining_input: new function, returns the portion of
 | ||
| 	  shell_input_line that hasn't yet been read
 | ||
| 	- current_input_line_state: removed
 | ||
| 
 | ||
| shell.h
 | ||
| 	- parser_remaining_input: extern declaration
 | ||
| 	- current_input_line_state: removed
 | ||
| 
 | ||
| builtins/evalstring.c
 | ||
| 	- parse_and_execute: change code that checks whether parse_command has
 | ||
| 	  consumed the entire passed string when SEVAL_FUNCDEF is used to use
 | ||
| 	  parser_remaining_input instead of messing around with (new)
 | ||
| 	  current_input_line_state.  Part of fix for CVE-2014-6278
 | ||
| 
 | ||
| variables.c
 | ||
| 	- initialize_shell_variables: if we don't call parse_and_execute, free
 | ||
| 	  the temporary string, since parse_and_execute won't.  Report and fix
 | ||
| 	  from Eric Kobrin <ekobrin@akamai.com>
 | ||
| 
 | ||
| 				   10/4
 | ||
| 				   ----
 | ||
| print_cmd.c
 | ||
| 	- print_function_def: when in posix mode, print shell function
 | ||
| 	  definitions as posix specifies them, without the leading
 | ||
| 	  `function' keyword
 | ||
| 
 | ||
| general.c
 | ||
| 	- exportable_function_name: return 1 if the passed string can be
 | ||
| 	  added to the environment as an exported function name.  Currently
 | ||
| 	  prohibits function names containing  `/' and `=' from being
 | ||
| 	  exported
 | ||
| 
 | ||
| general.h
 | ||
| 	- exportable_function_name: extern declaration
 | ||
| 
 | ||
| builtins/setattr.def
 | ||
| 	- set_or_show_attributes: if exporting a function with export -f,
 | ||
| 	  call exportable_function_name to determine whether the function
 | ||
| 	  should be exported; don't export function if it returns 0
 | ||
| 
 | ||
| 				   10/7
 | ||
| 				   ----
 | ||
| builtins/setattr.def
 | ||
| 	- set_or_show_attributes: don't show identifiers that are invisible
 | ||
| 	  and imported from the environment, since that combination of
 | ||
| 	  attributes means that the imported variable is not a valid shell
 | ||
| 	  identifier.  Report from Stephane Chazelas
 | ||
| 	  <stephane.chazelas@gmail.com>
 | ||
| 
 | ||
| 				   10/8
 | ||
| 				   ----
 | ||
| shell.c
 | ||
| 	- shell_initialize: set new variable should_be_restricted, which
 | ||
| 	  says whether or not the shell will be a restricted one based on the
 | ||
| 	  shell name; use in calls to initialize_shell_variables (to inhibit
 | ||
| 	  importing shell functions) and initialize_shell_options (to inhibit
 | ||
| 	  parsing $SHELLOPTS) and initialize_bashopts (to inhibit parsing
 | ||
| 	  $BASHOPTS).  Report from <paulfm@umn.edu>
 | ||
| 
 | ||
| 				   10/12
 | ||
| 				   -----
 | ||
| execute_cmd.c
 | ||
| 	- execute_function: unwind-protect loop_level, set loop_level to 0
 | ||
| 	  when entering a function so break and continue in functions don't
 | ||
| 	  break loops running outside of the function. Fix picked up from
 | ||
| 	  dash via Herbert Xu <herbert@gnodor.apana.org.au>
 | ||
| 
 | ||
| 				   10/13
 | ||
| 				   -----
 | ||
| doc/Makefile.in
 | ||
| 	- bashref.pdf: create using texi2dvi --pdf rather than postprocessing
 | ||
| 	  the dvi file, so we have PDF bookmarks and links.  Fix from
 | ||
| 	  Siep Kroonenberg <siepo@cybercomm.nl>
 | ||
| 
 | ||
| 				   10/14
 | ||
| 				   -----
 | ||
| subst.h
 | ||
| 	- Q_ARITH: new quoting flag. Semantics are per Posix's spec for
 | ||
| 	  arithmetic expansion: act as if string is quoted, but don't treat
 | ||
| 	  double quotes specially (in this case, they will be removed by quote
 | ||
| 	  removal)
 | ||
| 	- Q_ARRAYSUB: new quoting flag, indicates we are expanding an indexed
 | ||
| 	  array subscript
 | ||
| 
 | ||
| subst.c
 | ||
| 	- expand_arith_string: if we are not expanding the string, but we saw
 | ||
| 	  a quote with Q_ARITH specified as one of quoting flags, perform
 | ||
| 	  quote removal even if Q_DOUBLE_QUOTES is specified
 | ||
| 	- param_expand: change calls to expand_arith_string for $[ and $((
 | ||
| 	  cases to specify Q_ARITH.  Now $(( "$x" )) and $(( "x" )) work if x
 | ||
| 	  has a value that evaluates to a valid number, as Posix specifies
 | ||
| 	- expand_word_internal: add test for quoted&Q_ARITH to the tilde case,
 | ||
| 	  so we continue to perform tilde expansion in arithmetic contexts
 | ||
| 	- expand_word_internal: if quoted&Q_ARITH, continue processing when we
 | ||
| 	  see a `"', acting as if the double quote isn't present (already
 | ||
| 	  Q_DOUBLE_QUOTED)
 | ||
| 
 | ||
| arrayfunc.c
 | ||
| 	- array_expand_index: pass Q_DOUBLE_QUOTED|Q_ARITH|Q_ARRAYSUB as quoted
 | ||
| 	  argument in call to expand_arith_string.  This inhibits word
 | ||
| 	  splitting (Q_DOUBLE_QUOTED) while discarding double quotes (Q_ARITH),
 | ||
| 	  identical to the quote flags passed while expanding $(( )) and $[ ].
 | ||
| 	  Q_ARRAYSUB reserved for future use.  Fixes problem reported by
 | ||
| 	  Stephane Chazelas <stephane.chazelas@gmail.com>
 | ||
| 
 | ||
| 				   10/16
 | ||
| 				   -----
 | ||
| subst.c
 | ||
| 	- parameter_brace_expand_word: if the PF_ASSIGNRHS flag is set and we
 | ||
| 	  are expanding what looks like an array subscripted with @ or *,
 | ||
| 	  make sure the variable we're expanding is actually an array before
 | ||
| 	  we add Q_DOUBLE_QUOTES to the flags.  If we don't, things like
 | ||
| 	  scalar[@] will remain quoted.  Fixes ubuntu bug 1381567
 | ||
| 	  https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1381567
 | ||
| 
 | ||
| 				   10/17
 | ||
| 				   -----
 | ||
| {jobs,nojobs}.c
 | ||
| 	- get_original_tty_job_signals: get original signal dispostions for
 | ||
| 	  SIGTSTP, SIGTTIN, SIGTTOU before we start manipulating them in
 | ||
| 	  make_child
 | ||
| 	- default_tty_job_signals: make sure we set SIGTSTP, SIGTTIN, or
 | ||
| 	  SIGTTOU to SIG_IGN if they were ignored at shell startup instead of
 | ||
| 	  unconditionally setting them to SIG_DFL.  Fixes bug reported by
 | ||
| 	  idallen@idallen.ca
 | ||
| 
 | ||
| jobs.h
 | ||
| 	- get_original_tty_job_signals: extern declaration
 | ||
| 
 | ||
| trap.c
 | ||
| 	- initialize_traps: add call to get_original_tty_job_signals
 | ||
| 
 | ||
| 				   10/22
 | ||
| 				   -----
 | ||
| subst.c
 | ||
| 	- expand_string_for_rhs: when expanding in this context (rhs of a word
 | ||
| 	  expansion or pattern removal), we don't perform word splitting, so
 | ||
| 	  we don't want to split $* if IFS is empty.  Fixes bug reported by
 | ||
| 	  Stephane Chazelas <stephane.chazelas@gmail.com>
 | ||
| 
 | ||
| 				   10/23
 | ||
| 				   -----
 | ||
| subst.c
 | ||
| 	- param_expand: when expanding $* in a pattern context where the
 | ||
| 	  expansion is quoted (Q_PATQUOTE), don't quote the expansion --
 | ||
| 	  the outer quotes don't make the characters in the expansion of
 | ||
| 	  $* special.  Posix interp 221.  Reported by Stephane Chazelas
 | ||
| 	  <stephane.chazelas@gmail.com>
 | ||
| 
 | ||
| 				   10/28
 | ||
| 				   -----
 | ||
| lib/readline/bind.c
 | ||
| 	- enable-bracketed-paste: new bindable variable, enables support for
 | ||
| 	  a terminal's `bracketed paste mode'.  Code contributed by
 | ||
| 	  Daniel Colascione <dancol@dancol.org>
 | ||
| 
 | ||
| doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
 | ||
| 	- enable-bracketed-paste: add description
 | ||
| 
 | ||
| lib/readline/{readline.c,rlprivate.h}
 | ||
| 	- _rl_enable_bracketed_paste: declarations
 | ||
| 	- #defines for use by bracketed paste implementation
 | ||
| 
 | ||
| lib/readline/rltty.c
 | ||
| 	- rl_prep_terminal: send BRACK_PASTE_INIT string to terminal if we
 | ||
| 	  are supposed to enable bracketed-paste mode; change terminal_prepped
 | ||
| 	  to indicate we sent that string and need to clean up
 | ||
| 	- rl_deprep_terminal: if terminal_prepped indicates we sent the
 | ||
| 	  bracketed-paste mode init string to the terminal, send the cleanup
 | ||
| 	  string before restoring the terminal modes
 | ||
| 
 | ||
| lib/readline/kill.c
 | ||
| 	- rl_bracketed_paste_begin: function to read bracketed paste until
 | ||
| 	  BRACK_PASTE_SUFF; discard the suffix, and insert the rest of the
 | ||
| 	  paste as a single (undoable) object.  Bound to BRACK_PASTE_PREF
 | ||
| 
 | ||
| lib/readline/funmap.c
 | ||
| 	- bracketed-paste-begin: new bindable command, executes
 | ||
| 	  rl_bracketed_paste_begin
 | ||
| 
 | ||
| lib/readline/readline.c
 | ||
| 	- bind_bracketed_paste_prefix: new function, sets up to recognize
 | ||
| 	  the bracketed paste prefix sequence (BRACK_PASTE_PREF) in emacs
 | ||
| 	  keymap and vi insertion keymap
 | ||
| 	- readline_initialize_everything: call bind_bracketed_paste_prefix
 | ||
| 
 | ||
| 				   11/1
 | ||
| 				   ----
 | ||
| builtins/ulimit.def
 | ||
| 	- RLIMIT_POSIXLOCKS: now synonym for RLIMIT_LOCKS
 | ||
| 	- -k: new option: RLIMIT_KQUEUES, max kqueues allocated for this
 | ||
| 	  process
 | ||
| 	- -P: new option: RLIMIT_NPTS, max number of pseudoterminals available
 | ||
| 	  to this process
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- document `ulimit -k' option
 | ||
| 	- document `ulimit -P' option
 | ||
| 
 | ||
| parse.y
 | ||
| 	- `timespec list_terminator' production: if the list terminator is `;'
 | ||
| 	  set last_read_token to `;' to allow things like `time ; command' to
 | ||
| 	  time null commands and not throw a syntax error.  Patch from
 | ||
| 	  Piotr Grzybowski <narsil.pl@gmail.com>
 | ||
| 	- `BANG list_terminator' production: do the same thing
 | ||
| 
 | ||
| variables.c
 | ||
| 	- sv_optind: use find_shell_variable and get_variable_value so we can
 | ||
| 	  have the variable's context in the case we need to do something
 | ||
| 	  when we are restoring a previous variable context's value
 | ||
| 
 | ||
| builtins/getopt.h
 | ||
| 	- sh_getopt_state_t: struct to save sh_getopt's internal state so we
 | ||
| 	  can restore it around function calls in the event that we have a
 | ||
| 	  local copy of OPTIND
 | ||
| 
 | ||
| builtins/getopt.[ch]
 | ||
| 	- sh_getopt_{save,restore}_istate: new functions to save and restore
 | ||
| 	  getopt's internal state
 | ||
| 	- sh_getopt_{alloc,dispose}_istate: new functions to allocate and
 | ||
| 	  deallocate sh_getopt_istate_t objects
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- maybe_restore_getopt_state: restore sh_getopt state after executing
 | ||
| 	  function body iff the funtion declared a local copy of OPTIND
 | ||
| 	- execute_function: save sh_getopt state before executing function body
 | ||
| 	- execute_function: note in getopt_state->flags whether or not the
 | ||
| 	  function declared a local copy of OPTIND; used by
 | ||
| 	  maybe_restore_getopt_state
 | ||
| 	- execute_function: maybe restore sh_getopt state before returning via
 | ||
| 	  call to maybe_restore_getopt_state.  Fixes bugs with getopts and
 | ||
| 	  state between calls reported in 2011 by Bernd Eggink
 | ||
| 	  <monoped@sudrala.de> and in 2014 by Oyvind Hvidsten
 | ||
| 	  <oyvind.hvidsten@dampir.no>
 | ||
| 
 | ||
| configure.ac
 | ||
| 	- enable-function-import: new option, controls whether function imports
 | ||
| 	  are included.  Enabled by default.  Patch from David Galos
 | ||
| 	  <davegalos@google.com>
 | ||
| 
 | ||
| config.h.in
 | ||
| 	- FUNCTION_IMPORT: define controlled by enable-function-import above
 | ||
| 
 | ||
| variables.c
 | ||
| 	- initialize_shell_variables: include code to import function
 | ||
| 	  definitions from the environment if FUNCTION_IMPORT is defined
 | ||
| 
 | ||
| doc/bashref.texi
 | ||
| 	- --enable_function-import: document new configuration option
 | ||
| 
 | ||
| 				   11/5
 | ||
| 				   ----
 | ||
| lib/readline/history.c
 | ||
| 	- history_lines_read_from_file: new variable, set by read_history and
 | ||
| 	  read_history_range to the actual number of lines read from the
 | ||
| 	  history file.  The value is valid immediately after a call to one
 | ||
| 	  of those functions
 | ||
| 	- history_lines_written_to_file: new variable, set by write_history,
 | ||
| 	  history_do_write, and history_truncate_file to the actual number of
 | ||
| 	  lines written to the history file.  The value is valid immediately
 | ||
| 	  after a call to one of those functions
 | ||
| 
 | ||
| variables.c
 | ||
| 	- sv_histsize: set history_lines_in_file after history_truncate_file()
 | ||
| 	  only if hmax < history_lines_in_file (lines we've already read); a
 | ||
| 	  cosmetic change only
 | ||
| 
 | ||
| bashhist.c
 | ||
| 	- load_history: set history_lines_in_file after read_history() from
 | ||
| 	  history_lines_read_from_file, since read_history reads all of the
 | ||
| 	  lines from the history file even if it's more than $HISTSIZE
 | ||
| 	- maybe_save_shell_history: after calling write_history(), set
 | ||
| 	  history_lines_in_file to history_lines_written_to_file, since we
 | ||
| 	  can assume that we read everyhing we just wrote
 | ||
| 
 | ||
| builtins/history.def
 | ||
| 	- history_builtin: after calling read_history (history -r), set the
 | ||
| 	  new value of history_lines_in_file, for the same reason as above
 | ||
| 	- history_builtin: after calling read_history_range (history -n), set
 | ||
| 	  history_lines_in_file from history_lines_read_from_file
 | ||
| 
 | ||
| 				   11/6
 | ||
| 				   ----
 | ||
| lib/readline/histfile.c
 | ||
| 	- history_truncate_file: since we move the old file to a backup copy
 | ||
| 	  before truncating, make sure the new file is owned by the same uid
 | ||
| 	  as the old
 | ||
| 	- history_do_write: use chown in the same way as history_truncate_file
 | ||
| 
 | ||
| 				   11/12
 | ||
| 				   -----
 | ||
| lib/readline/display.c
 | ||
| 	- expand_prompt: takes a new `flags' argument; only one flag defined
 | ||
| 	  so far: PMT_MULTILINE
 | ||
| 	- expand_prompt: changed all callers to add new flags argument
 | ||
| 	- rl_expand_prompt, redraw_prompt: make sure to set PMT_MULTILINE in
 | ||
| 	  FLAGS argument to expand_prompt if expanding parts of a prompt
 | ||
| 	  containing embedded newlines
 | ||
| 	- expand_prompt: only add mode char to last line of a prompt with
 | ||
| 	  embedded newlines, so mode indicator doesn't get lost and gets
 | ||
| 	  updated properly.  Fixes problem reported by Renlin Li
 | ||
| 	  <lirenlin@gmail.com>
 | ||
| 
 | ||
| 				   11/13
 | ||
| 				   -----
 | ||
| 
 | ||
| lib/readline/display.c
 | ||
| 	- prompt_modestr: changed prompt_modechar to return a string denoting
 | ||
| 	  the editing mode; default strings for emacs and both vi modes are
 | ||
| 	  #defines in this file.  prompt_modestr takes an argument in which
 | ||
| 	  it returns the length of the mode string
 | ||
| 	- expand_prompt: if expanding mode strings in the prompt, get the
 | ||
| 	  mode string to use and add it at the beginning of the prompt string,
 | ||
| 	  before expanding it.  This will allow future work allowing the mode
 | ||
| 	  string to contain invisible characters
 | ||
| 
 | ||
| 				   11/15
 | ||
| 				   -----
 | ||
| lib/readline/rlprivate.h
 | ||
| 	- _rl_{emacs,vi_cmd,vi_ins}_mode_str: extern declarations for
 | ||
| 	  variables to hold current values of user-settable mode strings;
 | ||
| 	  variables to hold lengths 
 | ||
| 
 | ||
| lib/readline/rlconf.h
 | ||
| 	- defines for default values of the mode strings for each editing mode
 | ||
| 	  and keymap
 | ||
| 
 | ||
| lib/readline/display.c
 | ||
| 	- _rl_{emacs,vi_cmd,vi_ins}_mode_str: new variables to hold values of
 | ||
| 	  user-settable mode strings
 | ||
| 	- _rl_{emacs,vi_cmd,vi_ins}_modestr_len: new variables to hold lengths
 | ||
| 	  of corresponding mode string variables
 | ||
| 	- prompt_modestr: return appropriate user-settable mode string
 | ||
| 	  variables
 | ||
| 
 | ||
| lib/readline/bind.c
 | ||
| 	- {emacs,vi-ins,vi-cmd}-mode-string: new user-settable mode string
 | ||
| 	  variables
 | ||
| 	- sv_{emacs,viins,vicmd}_modestr: variable handling functions for user-
 | ||
| 	  settable mode string variables. Non-null values are run through
 | ||
| 	  rl_translate_keyseq so users can include invisible character
 | ||
| 	  sequences in the mode strings; null values restore the default
 | ||
| 	- _rl_get_string_variable_value: handle values for new user-settable
 | ||
| 	  mode string variables. Original code contributed by Dylan Cali
 | ||
| 	  <calid1984@gmail.com>
 | ||
| 
 | ||
| lib/readline/doc/rluser.texi
 | ||
| 	- {emacs,vi-ins,vi-cmd}-mode-string: document, including the fact that
 | ||
| 	  you can use \1 and \2 to bracket sequences of non-printing
 | ||
| 	  characters
 | ||
| 
 | ||
| 				   11/16
 | ||
| 				   -----
 | ||
| lib/readline/history.c
 | ||
| 	- add_history: replace loop that copies history list down one item
 | ||
| 	  with call to memmove to take advantage of whatever efficiencies
 | ||
| 	  libc can offer.  Won't be any slower than current loop
 | ||
| 
 | ||
| lib/readline/display.c
 | ||
| 	- rl_redraw_prompt_last_line: new function, calls redraw_prompt if
 | ||
| 	  the prompt contains multiple lines; calls rl_forced_update_display
 | ||
| 	  if not
 | ||
| 
 | ||
| lib/readline/readline.h
 | ||
| 	- rl_redraw_prompt_last_line: extern declaration, undocumented in
 | ||
| 	  texinfo manual until I get it a little more work
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- bash_execute_unix_command: instead of unconditionally calling
 | ||
| 	  rl_forced_update_display, call rl_redraw_prompt_last_line if we
 | ||
| 	  cleared the last line before executing the command.  This keeps
 | ||
| 	  commands that don't display any other output but just manipulate
 | ||
| 	  the contents of the line buffer from redisplaying the prompt lines
 | ||
| 	  before the last newline multiple times.  Fixes bug reported by
 | ||
| 	  Jesper Nygards <jesper.nygards@gmail.com> and Rob Foehl
 | ||
| 	  <rwf@loonybin.net>.  This means that commands that display output
 | ||
| 	  will *only* display the final line of the prompt
 | ||
| 	- bash_execute_unix_command: if the command returns 124, we redraw
 | ||
| 	  the line unconditionally, including all lines of the prompt
 | ||
| 
 | ||
| 				   11/18
 | ||
| 				   -----
 | ||
| builtins/mapfile.def
 | ||
| 	- mapfile_builtin: don't allow a valid array reference through to
 | ||
| 	  mapfile(), since it will just create a shell variable with that name.
 | ||
| 	  Bug and fix from Eduardo A. Bustamante López <dualbus@gmail.com>
 | ||
| 
 | ||
| 				   11/19
 | ||
| 				   -----
 | ||
| lib/readline/complete.c
 | ||
| 	- _rl_colored_completion_prefix: new variable, if non-zero, and color
 | ||
| 	  support is compiled in, and the $LS_COLORS variable exists and
 | ||
| 	  contains color definitions, display any common prefix of a set of
 | ||
| 	  completions in blue when displaying all the possible completions.
 | ||
| 	  Doesn't work with menu-complete, which inserts possible completions
 | ||
| 	  inline
 | ||
| 	- colored_prefix_start(), colored_prefix_end(): new functions, used to
 | ||
| 	  bracket colored completion prefixes
 | ||
| 	- fnprint: if prefix_bytes is non-zero, and _rl_colored_completion_prefix
 | ||
| 	  is > 0, display the first PREFIX_BYTES bytes of the word bracketed
 | ||
| 	  by calls to colored_prefix_start and colored_prefix_end
 | ||
| 	- print_filename: if _rl_colored_completion_prefix is > 0, compute the
 | ||
| 	  length in bytes of the common prefix and pass that to fnprint
 | ||
| 
 | ||
| lib/readline/readline.c
 | ||
| 	- readline_initialize_everything: initialize the colors from $LS_COLORS
 | ||
| 	  if _rl_colored_completion_prefix is non-zero
 | ||
| 
 | ||
| lib/readline/colors.c
 | ||
| 	- _rl_print_prefix_color: new function, changes text color to that
 | ||
| 	  defined for the common prefix of a set of possible completions
 | ||
| 	  (currently cyan, same as directories); currently uses C_PREFIX,
 | ||
| 	  defined in colors.h as C_DIR
 | ||
| 
 | ||
| lib/readline/colors.h
 | ||
| 	- _rl_print_prefix_color: new extern declaration
 | ||
| 
 | ||
| lib/readline/bind.c
 | ||
| 	- colored-completion-prefix: new bindable variable, if set, common
 | ||
| 	  prefix of a set of possible completions is displayed in color.
 | ||
| 	  Feature requested by several, most recently by Richard Neill
 | ||
| 	  <rn214@richardneill.org> (in a slightly different form) and
 | ||
| 	  Duy Nguyen <pclouds@gmail.com>
 | ||
| 
 | ||
| 				   11/20
 | ||
| 				   -----
 | ||
| builtins/printf.def
 | ||
| 	- printf_builtin: allow null (empty) format strings supplied with
 | ||
| 	  -v var to set `var' to the empty string.  That is, printf -v var ""
 | ||
| 	  is now the same as var="".  Change suggested by Mike Frysinger
 | ||
| 	  <vapier@gentoo.org>
 | ||
| 
 | ||
| pathexp.h
 | ||
| 	- FNMATCH_NOCASEGLOB: macro to decide whether or not to pass
 | ||
| 	  FNM_CASEFOLD flag to strmatch depending on whether glob_ignore_case
 | ||
| 	  is set; analogout to FNMATCH_IGNCASE
 | ||
| 
 | ||
| pathexp.c
 | ||
| 	- glob_name_is_acceptable: use FNMATCH_NOCASEMATCH to determine flags
 | ||
| 	  passed to strmatch; if nocaseglob is used to generate glob matches,
 | ||
| 	  it should be used to generate ignored matches
 | ||
| 
 | ||
| 				   11/21
 | ||
| 				   -----
 | ||
| pcomplete.c
 | ||
| 	- filter_stringlist: the call to strmatch now honors the setting of
 | ||
| 	  nocasematch.  Feature request from Ville Skytta <ville.skytta@iki.fi>
 | ||
| 	  back in 2010
 | ||
| 
 | ||
| doc/bash.1,lib/readline/doc/rluser.texi
 | ||
| 	- complete -X: document that filtering the list of possible completions
 | ||
| 	  honors the nocasematch option when performing matching
 | ||
| 
 | ||
| lib/glob/gmisc.c
 | ||
| 	- include chartypes.h and strmatch.h for new defines
 | ||
| 	- match_pattern_{wchar,char}: now take new third FLAGS argument, flags
 | ||
| 	  have same meanings as strmatch(); intent is to handle case
 | ||
| 	  insensitive comparisons under same conditions as strmatch
 | ||
| 	- FOLD: imported case-folding define from sm_loop.c; wide and single-
 | ||
| 	  byte character versions
 | ||
| 	- match_pattern_{wchar,char}: use FOLD when comparing characters to
 | ||
| 	  honor FNM_CASEFOLD if set in FLAGS argument
 | ||
| 
 | ||
| externs.h
 | ||
| 	- match_pattern_{wchar,char}: updated extern declarations
 | ||
| 
 | ||
| subst.c
 | ||
| 	- match_{upattern,wpattern}: update strmatch/wcsmatch calls to include
 | ||
| 	  FNMATCH_IGNCASE in flags argument
 | ||
| 	- match_{upattern,wpattern}: update match_pattern_{char,wchar} calls
 | ||
| 	  to include FNMATCH_IGNCASE in flags argument (consistent with calls
 | ||
| 	  to strmatch).  This makes pattern substitution word expansion honor
 | ||
| 	  nocasematch shell option.  Feature requested by Davide Baldini
 | ||
| 	  <baldiniebaldini@gmail.com>
 | ||
| 	- match_wpattern: make sure to fold case if necessary when doing simple
 | ||
| 	  matching
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- pattern substitution: updated description to include honoring setting
 | ||
| 	  of nocasematch when performing matching
 | ||
| 
 | ||
| subst.c
 | ||
| 	- expand_word_internal: optimize handling of "$@" idiom by calling
 | ||
| 	  list_rest_of_args() and quote_list() directly at the top of the
 | ||
| 	  function instead of going through normal code path
 | ||
| 	- cached_quoted_dollar_at: WORD_LIST of quoted positional parameters,
 | ||
| 	  used by same code above that optimizes "$@"; if non-null we just
 | ||
| 	  return a copy of the list; if null, we save a copy of the list we
 | ||
| 	  create
 | ||
| 	- invalidate_cached_quoted_dollar_at: convenience function to allow
 | ||
| 	  other parts of the shell (e.g., remember_args()) to destroy the
 | ||
| 	  cached list of quoted positional parameter when the positional
 | ||
| 	  parameters change
 | ||
| 
 | ||
| builtins/common.c
 | ||
| 	- remember_args: call invalidate_cached_quoted_dollar_at()
 | ||
| 
 | ||
| builtins/shift.def
 | ||
| 	- shift_builtin: call invalidate_cached_quoted_dollar_at after modifying
 | ||
| 	  dollar_vars[]
 | ||
| 
 | ||
| builtins/source.def
 | ||
| 	- maybe_pop_dollar_vars: call invalidate_cached_quoted_dollar_at just
 | ||
| 	  to be safe
 | ||
| 
 | ||
| 				   11/23
 | ||
| 				   -----
 | ||
| builtins/evalfile.c
 | ||
| 	- _evalfile: return -1 if errno == ENOENT and the flags don't include
 | ||
| 	  FEVAL_ENOENTOK.  If we print an error message we should return an
 | ||
| 	  error
 | ||
| 	- force_execute_file: new function, reads and executes commands from
 | ||
| 	  a file but returns an error if file  doesn't exist
 | ||
| 
 | ||
| builtins/common.h
 | ||
| 	- force_execute_file: new extern declaration
 | ||
| 
 | ||
| shell.c
 | ||
| 	- main: call start_debugger even if dollar_vars[1] == 0 if the shell
 | ||
| 	  isn't interactive (interactive_shell == 0)
 | ||
| 	- start_debugger: call force_execute_file instead of maybe_execute_file;
 | ||
| 	  turn off debugging mode if it returns value < 0
 | ||
| 
 | ||
| 				   11/24
 | ||
| 				   -----
 | ||
| hashlib.h
 | ||
| 	- DEFAULT_HASH_BUCKETS: doubled to 128, cost in memory use is small but
 | ||
| 	  changes traversal order when not sorting results
 | ||
| 
 | ||
| 				   11/25
 | ||
| 				   -----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- make it clearer, by breaking it out into a separate paragraph, that
 | ||
| 	  referencing an array without a subscript is equivalent to referencing
 | ||
| 	  it with subscript 0
 | ||
| 	- add text saying that referencing any variable using a valid subscript
 | ||
| 	  is OK
 | ||
| 
 | ||
| 				   11/28
 | ||
| 				   -----
 | ||
| 
 | ||
| arrayfunc.c
 | ||
| 	- bind_array_variable, bind_assoc_variable: allow binding value to a
 | ||
| 	  readonly variable if the ASS_FORCE flag is set in the FLAGS
 | ||
| 	  argument
 | ||
| 
 | ||
| subst.h
 | ||
| 	- ASS_FORCE: new assignment flag; means to allow assignment even if
 | ||
| 	  variable is marked readonly
 | ||
| 
 | ||
| builtins/declare.def
 | ||
| 	- when assigning a value to an array or assoc variable using
 | ||
| 	  something like `declare -r foo=bar' where foo is an existing array
 | ||
| 	  variable, pass the ASS_FORCE to assign_array_var_from_string so
 | ||
| 	  the assignment is allowed.  Fixes debian bug 765759
 | ||
| 	  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=765759
 | ||
| 
 | ||
| builtins/setattr.def
 | ||
| 	- var_attribute_string: new function to return (as argument) a char
 | ||
| 	  array with attribute flag values for a given variable; returns the
 | ||
| 	  length of the array
 | ||
| 
 | ||
| lib/sh/shquote.c
 | ||
| 	- sh_quote_reusable: function returning a version of its string
 | ||
| 	  argument that is quoted for reuse
 | ||
| 
 | ||
| externs.h
 | ||
| 	- sh_quote_reusable: extern declaration
 | ||
| 
 | ||
| builtins/common.h
 | ||
| 	- MAX_ATTRIBUTES: define used to size arrays for attribute flag
 | ||
| 	  characters
 | ||
| 	- var_attribute_string: new extern function declaration
 | ||
| 
 | ||
| subst.c
 | ||
| 	- array_remove_pattern: fixed a bug where `var' instead of `v' was
 | ||
| 	  tested for invisible attribute
 | ||
| 	- get_var_and_type: fill in a valid *VARP if returning VT_VARIABLE
 | ||
| 	  because callers may need to use it
 | ||
| 	- parameter_brace_transform: family of functions to implement the new
 | ||
| 	  mksh-inspired ${param@spec} transformation word expansions.  Some
 | ||
| 	  of the operators transform the (expanded) value of the parameter,
 | ||
| 	  the rest expand to information about the parameter itself
 | ||
| 	  (array_transform, parameter_list_transform, list_transform,
 | ||
| 	  string_transform, pos_params_assignment, array_var_assignment,
 | ||
| 	  string_var_assignment)
 | ||
| 	- parameter_brace_expand: changes to parse the new `@' word expansion
 | ||
| 	  operator and call parameter_brace_transform appropriately
 | ||
| 	- parameter_brace_expand: make sure we handle ${#@} as we have before
 | ||
| 	  even in the presence of the new `@' operator
 | ||
| 
 | ||
| variables.c
 | ||
| 	- push_temp_var: make sure to call bind_variable_internal with the
 | ||
| 	  ASS_FORCE flag so we override readonly variables created with
 | ||
| 	  something like `tempvar=foo declare -r foo'.
 | ||
| 	- bind_variable_internal: honor ASS_FORCE flag to allow binding even
 | ||
| 	  if a variable is readonly
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- struct func_array_state: new state to save state of BASH_LINENO,
 | ||
| 	  BASH_SOURCE, and FUNCNAME during function execution so it can be
 | ||
| 	  restored on a jump to top level
 | ||
| 	- restore_funcarray_state: new function to restore func_array_state
 | ||
| 	- execute_function: fill in func_array_state variable, add unwind-
 | ||
| 	  protect to restore it on jump to top level, call explicitly at
 | ||
| 	  end of function if subshell != 0 (may not be necessary, but safe
 | ||
| 	  for now).  Fixes bug with local assignments to FUNCNAME reported
 | ||
| 	  by Arfrever Frehtes Taifersar Arahesis <arfrever.fta@gmail.com>
 | ||
| 
 | ||
| 				   11/29
 | ||
| 				   -----
 | ||
| arrayfunc.c
 | ||
| 	- assign_compound_array_list: turn off ASS_APPEND flag when processing
 | ||
| 	  each individual assignment inside the parens in var+=(...).  The
 | ||
| 	  outer += should not affect assignments to existing subscripts;
 | ||
| 	  those should be treated like usual assignments unless += supplied
 | ||
| 	  inside the parens.  Bug report from Maarten Billemont
 | ||
| 	  <lhunath@lyndir.com>, fix from Eduardo A. Bustamante López
 | ||
| 	  <dualbus@gmail.com>
 | ||
| 
 | ||
| config.h.in
 | ||
| 	- HAVE_PSELECT: define if pselect(2) available
 | ||
| 
 | ||
| configure.ac
 | ||
| 	- check for pselect(2), define HAVE_PSELECT if found
 | ||
| 
 | ||
| lib/readline/input.c
 | ||
| 	- rl_getc: use pselect(2) to wait for input ready on readline's
 | ||
| 	  input fd or for a signal to arrive, will handle SIGWINCH (which
 | ||
| 	  does not interrupt read(2)) and thus allow resize to happen without
 | ||
| 	  having to wait to read more input.  Only works if pselect available
 | ||
| 	  and returns -1/EINTR on a signal even if the signal was installed
 | ||
| 	  with SA_RESTART.  From a suggestion from Egmont Koblinger
 | ||
| 	  <egmont@gmail.com>
 | ||
| 
 | ||
| 				   12/3
 | ||
| 				   ----
 | ||
| variables.c
 | ||
| 	- flush_temporary_env: new function, disposes all temp variables in
 | ||
| 	  temporary_env hash table
 | ||
| 	- bind_variable: only try to update a temporary variable's value in the
 | ||
| 	  temporary env if the value argument is not null.  Fixes bug reported
 | ||
| 	  by <tangqinghao@360.cn>
 | ||
| 
 | ||
| variables.h
 | ||
| 	- flush_temporary_env: new extern declaration
 | ||
| 
 | ||
| subst.c
 | ||
| 	- command_substitute: if running command substitution as part of
 | ||
| 	  expanding a redirection (expanding_redir == 1), flush any temporary
 | ||
| 	  environment we've inherited as part of this command, since we are not
 | ||
| 	  supposed to have access to the temporary environment.  Since
 | ||
| 	  expanding_redir only controls access to the temporary environment for
 | ||
| 	  variable lookup and binding, we can turn it off in the subshell
 | ||
| 
 | ||
| 				   12/4
 | ||
| 				   ----
 | ||
| builtins/printf.def
 | ||
| 	- printstr: make sure a missing precision specifier after a `.' is
 | ||
| 	  treated as 0, as printf(3) specifies.  Fixes ubuntu bash bug
 | ||
| 	  1399087 (https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1399087)
 | ||
| 
 | ||
| 				   12/5
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- skip_to_delim: if scanning past process substitution (skipcmd == 1,
 | ||
| 	  noprocsub == 0), use extract_delimited_string instead of
 | ||
| 	  extract_process_subst, which was changed a while back (bash-4.3.23)
 | ||
| 	  to use xparse_dolparen.  xparse_dolparen complains if the command
 | ||
| 	  or process substitution is unterminated, since it runs the parser,
 | ||
| 	  which is not what we want here.  Command substitution does the same
 | ||
| 	  thing.  Fixes bug reported by  Daniel Kahn Gillmor
 | ||
| 	  <dkg@fifthhorseman.net> as Debian bash bug 771968
 | ||
| 	  (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=771968)
 | ||
| 
 | ||
| 				   12/6
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- command_substitute: short-circuit without forking on a command string
 | ||
| 	  that consists entirely of <blank>s and newlines
 | ||
| 
 | ||
| jobs.c
 | ||
| 	- make_child: changes to allow interrupts through if fork fails and
 | ||
| 	  we are sleeping for `forksleep' seconds
 | ||
| 	- waitchld: make things a little more resilient if CHILD ends up NULL
 | ||
| 
 | ||
| 				   12/12
 | ||
| 				   -----
 | ||
| lib/readline/complete.c
 | ||
| 	- rl_display_match_list: when calculating common prefix to display in
 | ||
| 	  color, make sure we correctly handle a common prefix with a trailing
 | ||
| 	  `/' as we do when checking whether or not to add an ellipis.
 | ||
| 	  printable_part() doesn't return the whole pathname if it ends in a
 | ||
| 	  slash, to avoid printing null strings, so we have to make sure we
 | ||
| 	  have the entire prefix
 | ||
| 
 | ||
| lib/readline/complete.c
 | ||
| 	- _rl_complete_display_matches_interrupt: new variable, set to 1 by
 | ||
| 	  _rl_complete_sigcleanup to let rl_display_match_list know it has
 | ||
| 	  freed the match list
 | ||
| 	- display_matches: check for signals during the printing loops with
 | ||
| 	  RL_SIG_RECEIVED(), return immediately if there is a pending signal
 | ||
| 	  (might not want to do this if it's SIGWINCH -- CHECK)
 | ||
| 	- rl_complete_internal: if _rl_complete_display_matches_interrupt
 | ||
| 	  set after calling display_matches, just null out `matches' since
 | ||
| 	  it's already been freed and call any application-set signal hook
 | ||
| 
 | ||
| 				   12/14
 | ||
| 				   -----
 | ||
| parse.y
 | ||
| 	- time_command_acceptable: if the token before a newline is `|',
 | ||
| 	  return 0, since it's not really valid to time inside a pipeline.
 | ||
| 	  Only handles a single newline but allows things like
 | ||
| 		echo a |
 | ||
| 		 time cat
 | ||
| 	  to invoke /usr/bin/time, which is probably enough to catch the
 | ||
| 	  stray carriage return.  Fixes bug reported by Andre Majorel
 | ||
| 	  <aym-ung@teaser.fr>
 | ||
| 
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: don't try to perform compound assignments unless
 | ||
| 	  the WORD_DESC has flags including W_COMPASSIGN (maybe should check
 | ||
| 	  W_ASSIGNMENT as well), avoiding unexpected evaluation if a word
 | ||
| 	  is of the form (word) and is assigned to an array variable like so:
 | ||
| 	  declare -x var=$value.  Bug reported by Stephane Chazelas
 | ||
| 	  <stephane.chazelas@gmail.com>. Will eventually be contingent on
 | ||
| 	  compatibility level > 43, but not there yet. TENTATIVE
 | ||
| 
 | ||
| 				   12/15
 | ||
| 				   -----
 | ||
| lib/sh/Makefile.in
 | ||
| 	- add missing dependencies for shmatch.o.  Pointed out by Sergey
 | ||
| 	  Mikhailov <sergey.mikhailov@gmail.com>
 | ||
| 
 | ||
| 				   12/16
 | ||
| 				   -----
 | ||
| {execute_cmd,subst}.c
 | ||
| 	- W_ASSIGNINT: remove, not used any more
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- fix_assignment_words: don't look for `-i' option and set W_ASSIGNINT
 | ||
| 	  flag any more; doing things a different way
 | ||
| 	- shell_expand_word_list: instead of using W_ASSIGNINT flag, since it
 | ||
| 	  doesn't take into account all options that can transform values on
 | ||
| 	  assignment (-l/-u/-c can also), go through option arguments looking
 | ||
| 	  for options that need special handling and add them to the `opts'
 | ||
| 	  array for make_internal_declare to use.  Fixes bug with constructs
 | ||
| 	  like `declare -al foo=(UPONE UPTWO UPTHREE)' not being lowercased on
 | ||
| 	  assignment reported by Linda Walsh <bash@tlinx.org>
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| 				   12/18
 | ||
| 				   -----
 | ||
| lib/readline/readline.c
 | ||
| 	- rl_internal_char: when we read EOF on a non-empty line, check for
 | ||
| 	  signals and invoke any readline signal handling and any application-
 | ||
| 	  installed signal hook
 | ||
| 
 | ||
| 				   12/20
 | ||
| 				   -----
 | ||
| lib/readline/readline.c
 | ||
| 	- rl_internal_char: if we read EOF on a non-empty line, set c to
 | ||
| 	  _rl_eof_char the first time through.  If we read EOF the next time,
 | ||
| 	  return EOF from readline().  If callbacks are defined, this returns
 | ||
| 	  EOF immediately, since lastc isn't available.  Fix for problem
 | ||
| 	  most recently identified by Jiri Kukacka <jiri.kukacka@orcle.com>,
 | ||
| 	  it has come up in the past
 | ||
| 
 | ||
| 				   12/21
 | ||
| 				   -----
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: keep track of whether or not an assignment statement
 | ||
| 	  argument to declare is an array subscript assignment; need to
 | ||
| 	  differentiate assignments from straight declarations (declare a[4])
 | ||
| 	  which are accepted for backwards compatibility
 | ||
| 	- assignment statements like declare a[2]=foo are now treated as
 | ||
| 	  straight subscript assignment statements if a already exists as an
 | ||
| 	  array variable
 | ||
| 	- declare foo='(1 2 3)' is treated as an assignment to foo[0] if foo
 | ||
| 	  exists and is an array, just as it would be if it were an assignment
 | ||
| 	  statement and `declare' was not present.  All this from a proposal
 | ||
| 	  by Stephane Chazelas <stephane.chazelas@gmail.com>
 | ||
| 
 | ||
| 				   12/22
 | ||
| 				   -----
 | ||
| builtins/read.def
 | ||
| 	- read_tty_modified: function to tell the rest of the shell if the
 | ||
| 	  read builtin has modified the tty
 | ||
| 	- read_builtin: make sure to initialize terminating signals before
 | ||
| 	  installing a SIGALRM signal handler in case we modify the tty as
 | ||
| 	  well as ask for a timeout; the subsequent call to
 | ||
| 	  initialize_terminating_signals would overwrite the read-builtin-
 | ||
| 	  local SIGALRM handler
 | ||
| 
 | ||
| builtins/common.h
 | ||
| 	- read_tty_modified: new extern declaration
 | ||
| 
 | ||
| shell.c
 | ||
| 	- exit_shell: if read_tty_modified() returns true, call read_tty_cleanup
 | ||
| 	  to undo the terminal modifications. Extension of previous fixes;
 | ||
| 	  fixes bug with read -s reported by Richard W. Marsden
 | ||
| 	  <richard@marsden.nu>
 | ||
| 
 | ||
| 
 | ||
| 				   12/23
 | ||
| 				   -----
 | ||
| builtins/setattr.def
 | ||
| 	- show_var_attributes: call print_array_assignment and print_assoc_assignment
 | ||
| 	  with a `not quoted' flag so the assignment statements are not
 | ||
| 	  surrounded by single quotes.  Caused changes to a lot of test output
 | ||
| 
 | ||
| 				   12/29
 | ||
| 				   -----
 | ||
| lib/readline/complete.c
 | ||
| 	- stat_char: Windows doesn't handle X_OK flag to access(2); use file
 | ||
| 	  extensions to determine whether or not a file is executable.  Bug
 | ||
| 	  report and fix from Eli Zaretskii <eliz@gnu.org>
 | ||
| 
 | ||
| configure.ac
 | ||
| 	- changed version to bash-4.4-devel
 | ||
| 
 | ||
| lib/readline/readline.h
 | ||
| 	- changed version to readline-6.4
 | ||
| 
 | ||
| 				   12/30
 | ||
| 				   -----
 | ||
| readline.h
 | ||
| 	- struct readline_state: fix types of `ignorefunc' and `attemptfunc'
 | ||
| 	  members
 | ||
| 
 | ||
| lib/sh/shquote.c,externs.h
 | ||
| 	- sh_contains_shell_metas, sh_contains_quotes: now take `const char *'
 | ||
| 	  as parameter
 | ||
| 
 | ||
| stringlib.c,externs.h
 | ||
| 	- strcreplace: `text' argument now `const char *'
 | ||
| 
 | ||
| pathexp.[ch]
 | ||
| 	- quote_globbing_chars: `string' argument now `const char *', accompanying
 | ||
| 	  changes to function local variables
 | ||
| 
 | ||
| pcomplete.c
 | ||
| 	- preproc_filterpat: `text' argument now `const char *'
 | ||
| 	- filter_stringlist: `text' argument now `const char *'
 | ||
| 
 | ||
| 				   12/31
 | ||
| 				   -----
 | ||
| builtins/evalstring.c
 | ||
| 	- should_suppress_fork: new function, broke code that decides whether
 | ||
| 	  to turn on CMD_NO_FORK flag out of parse_and_execute into a separate
 | ||
| 	  function
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_command_internal: AND_AND, OR_OR: call should_suppress_fork
 | ||
| 	  for the RHS of && and ||, make `make' invocations marginally more
 | ||
| 	  efficient
 | ||
| 
 | ||
| flags.c
 | ||
| 	- get_current_flags: returns a bitmap of all single-letter shell
 | ||
| 	  options with a non-zero value meaning option is enabled
 | ||
| 	- set_current_flags: set current single-letter options from a passed
 | ||
| 	  bitmap, which has presumably been initialized with get_current_flags
 | ||
| 
 | ||
| flags.h
 | ||
| 	- {get,set}_current_flags: new extern declarations
 | ||
| 
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: if invoked as `local', interpret name argument of
 | ||
| 	  `-' to mean to save (and restore at shell return) single-letter
 | ||
| 	  shell options
 | ||
| 
 | ||
| variables.c
 | ||
| 	- push_func_var: if we encounter `-' as the name of a local variable,
 | ||
| 	  take the value and call set_current_flags on it to restore old
 | ||
| 	  flag settings
 | ||
| 
 | ||
| builtins/set.def
 | ||
| 	- get_current_options: returns a bitmap of all shell options settable
 | ||
| 	  with `set', with a non-zero value meaning option is enabled
 | ||
| 	- set_current_options: set current shell options from a passed
 | ||
| 	  bitmap, which has presumably been initialized with get_current_options
 | ||
| 
 | ||
| 
 | ||
| 				 1/1/2015
 | ||
| 				 --------
 | ||
| lib/readline/parens.c
 | ||
| 	- _rl_blink_matching_paren: initialize to 0 whether or not select(2) is
 | ||
| 	  available.  Inconsistency reported by Mark Karpov
 | ||
| 	  <markkarpov@opmbx.org>
 | ||
| 
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: use get_current_options instead of
 | ||
| 	  get_current_flags, so `local -' can be generalized
 | ||
| 
 | ||
| variables.c
 | ||
| 	- push_func_var: use set_current_options instead of set_current_flags
 | ||
| 	  so `local -' can be generalized
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- document new `local -' feature; originally inspired by Robert Elz
 | ||
| 	  <kre@munnari.oz.au> describing feature in NetBSD sh
 | ||
| 
 | ||
| 				    1/3
 | ||
| 				    ---
 | ||
| lib/readline/{complete,funmap,kill,histfile,util}
 | ||
| lib/readline/readline.h
 | ||
| lib/tilde/tilde.c
 | ||
| 	- fixes for filename- and evironment-related issues on Windows.  Fixes
 | ||
| 	  from Eli Zaretskii <eliz@gnu.org>
 | ||
| 	- Windows can paste to the console from the clipboard like Cygwin
 | ||
| 	- Windows uses $APPDATA as a pseudo-$HOME
 | ||
| 
 | ||
| lib/readline/input.c
 | ||
| 	- rl_getc: use _getch on Windows to avoid being overridden by a getch
 | ||
| 	  ncurses function
 | ||
| 	- win32_isatty: replace Windows isatty(3) with a function that does
 | ||
| 	  additional checks, sinces Windows isatty returns non-zero for
 | ||
| 	  every character device.  From Eli Zaretskii <eliz@gnu.org>
 | ||
| 
 | ||
| lib/readline/display.c
 | ||
| 	- delete_chars: if compiled with ncurses on Windows, this code can
 | ||
| 	  work, so build it in if NCURSES_VERSION defined
 | ||
| 	- open_some_spaces: ditto
 | ||
| 
 | ||
| 				    1/6
 | ||
| 				    ---
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- minor grammar and typo corrections from TonyMc <afmcc@btinternet.com>
 | ||
| 
 | ||
| 				    1/8
 | ||
| 				    ---
 | ||
| sig.c
 | ||
| 	- throw_to_top_level: only attempt to run the interrupt trap if SIGINT
 | ||
| 	  is trapped -- minor optimization
 | ||
| 	- throw_to_top_level: if we are running a trap, call run_trap_cleanup
 | ||
| 	  to turn off the sigmodes flags
 | ||
| 
 | ||
| trap.c
 | ||
| 	- _run_trap_internal: temporarily suppress pending SIGINTs while running
 | ||
| 	  one of the traps the shell handles internally (e.g., ERR).  Fixes bug
 | ||
| 	  reported by Keith Thompson <keithsthompson@gmail.com>
 | ||
| 
 | ||
| 				   1/10
 | ||
| 				   ----
 | ||
| bashhist.c
 | ||
| 	- bash_history_inhibit_expansion: use skip_to_delim with the history
 | ||
| 	  expansion character to see whether or not the instance of the
 | ||
| 	  history expansion character should be skipped because, for instance,
 | ||
| 	  it is in a command substitution.  Fixes issue reported by
 | ||
| 	  Zigmund.Ozean@zig-home.localdomain
 | ||
| 
 | ||
| 				   1/14
 | ||
| 				   ----
 | ||
| lib/readline/isearch.c
 | ||
| 	- _rl_isearch_dispatch: if we are in a multibyte locale, make sure to
 | ||
| 	  use _rl_find_prev_mbchar when trying to delete characters from the
 | ||
| 	  search string, instead of just chopping off the previous byte.
 | ||
| 	  Fixes bug reported by Kyrylo Shpytsya <kshpitsa@gmail.com>
 | ||
| 
 | ||
| lib/readline/complete.c
 | ||
| 	- rl_filename_completion_function: if we tilde-expand `dirname', make
 | ||
| 	  sure we use the expanded result instead of throwing it away for the
 | ||
| 	  quote-removed `users_dirname', which still has any leading tilde.
 | ||
| 	  Fixes bug reported by Dave Rutherford <dave@evilpettingzoo.com>
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- select_query: if the read builtin doesn't return anything in REPLY,
 | ||
| 	  return NULL (failure). Fixes bug reported by Etherial Raine
 | ||
| 	  <osirisgothra@hotmail.com>
 | ||
| 
 | ||
| builtins/read.def
 | ||
| 	- read_builtin: if REPLY has the readonly or noassign attribute, return
 | ||
| 	  failure
 | ||
| 
 | ||
| 				   1/16
 | ||
| 				   ----
 | ||
| redir.c
 | ||
| 	- redir_open: if open() returns -1/EINTR, check traps as well as
 | ||
| 	  using QUIT to handle signals
 | ||
| 
 | ||
| 				   1/18
 | ||
| 				   ----
 | ||
| jobs.c
 | ||
| 	- wait_for: make sure queue_sigchld is set to 1 before unblocking
 | ||
| 	  SIGCHLD if MUST_UNBLOCK_CHLD is defined
 | ||
| 
 | ||
| 				   1/19
 | ||
| 				   ----
 | ||
| pcomplete.h
 | ||
| 	- new progcomp option: COPT_NOSORT, means to not sort list of possible
 | ||
| 	  completions
 | ||
| 
 | ||
| pcomplete.c
 | ||
| 	- pcomp_set_readline_variables: if COPT_NOSORT set in compspec flags,
 | ||
| 	  set rl_sort_completion_duplicates to 0
 | ||
| 
 | ||
| builtins/complete.def
 | ||
| 	- _compopt: new option value: -o nosort, sets COPT_NOSORT in compspec
 | ||
| 	  option flags. Provides new -o nosort option for complete and compgen
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- attempt_shell_completion: make sure rl_sort_completion_matches is
 | ||
| 	  set to 1 before completion is attempted; allow a compspec to turn
 | ||
| 	  it off
 | ||
| 
 | ||
| lib/readline/kill.c
 | ||
| 	- rl_vi_yank_pop: new function, vi-mode version of yank-pop.  Original
 | ||
| 	  code from Ian Kelling <ian@iankelling.org>
 | ||
| 
 | ||
| lib/readline/funmap.c
 | ||
| 	- `vi-yank-pop': bindable name mapped to rl_vi_yank_pop
 | ||
| 
 | ||
| lib/readline/readline.h
 | ||
| 	- rl_vi_yank_pop: extern declaration
 | ||
| 
 | ||
| 				   1/21
 | ||
| 				   ----
 | ||
| lib/sh/shquote.c
 | ||
| 	- sh_backslash_quote: change to understand and handle multibyte
 | ||
| 	  characters, using is_basic, COPY_CHAR_P.  See
 | ||
| 	  https://bugzilla.redhat.com/show_bug.cgi?id=1184320 for original
 | ||
| 	  report
 | ||
| 
 | ||
| 				   1/23
 | ||
| 				   ----
 | ||
| include/posixjmp.h
 | ||
| 	- use setjmp_sigs instead of redefined setjmp, it fails on Cygwin.
 | ||
| 	  Report from Eric Blake <eblake@redhat.com>
 | ||
| 
 | ||
| builtins/wait.def,shell.c
 | ||
| 	- use setjmp_sigs instead of setjmp call, since setjmp no longer
 | ||
| 	  redefined to something known
 | ||
| 
 | ||
| include/chartypes.h, lib/readline/chardefs.h
 | ||
| 	- make sure all ctype.h macros are called with unsigned char args,
 | ||
| 	  casting to make sure
 | ||
| 
 | ||
| lib/sh/casemod.c
 | ||
| 	- sh_modcase: don't assume that the upper and lower case versions of a
 | ||
| 	  character are the same width, so don't try to do the conversion in
 | ||
| 	  place: convert and copy the converted characters one or more at a
 | ||
| 	  time to the returned string
 | ||
| 	- sh_modcase: since upper and lower case versions of same character
 | ||
| 	  may have different widths in some locales, don't shortcut and assume
 | ||
| 	  that we can do single-byte case modification (toupper) with a
 | ||
| 	  single-byte input character (e.g., `i').  Fix for problem reported
 | ||
| 	  by Stephane Chazelas <stephane.chazelas@gmail.com>
 | ||
| 
 | ||
| 				   1/31
 | ||
| 				   ----
 | ||
| lib/readline/histfile.c
 | ||
| 	- history_truncate_file, history_do_write: if the first rename(2)
 | ||
| 	  of the history file to the backup file fails, set the backup file
 | ||
| 	  name to NULL to prevent any later attempts to restore the
 | ||
| 	  original.  Report from Jonathan Hankins <jhankins@homewood.k12.al.us>
 | ||
| 	- history_do_write: don't attempt to back up non-regular files.
 | ||
| 	  Report from Jonathan Hankins <jhankins@homewood.k12.al.us>
 | ||
| 
 | ||
| 				    2/2
 | ||
| 				    ---
 | ||
| trap.c
 | ||
| 	- run_interrupt_trap: now takes an argument indicating whether or not
 | ||
| 	  it was called just before a longjmp to top_level; change callers
 | ||
| 	- run_interrupt_trap: if running a trap and we are being called before
 | ||
| 	  a longjmp to top_level, call run_trap_cleanup on running trap so
 | ||
| 	  a QUIT call while running a DEBUG trap, for instance, doesn't leave
 | ||
| 	  sigmodes[DEBUG_TRAP] including SIG_INPROGRESS.  Fixes bug reported
 | ||
| 	  by Chih-Chieh Chou <ccchou@gmail.com>
 | ||
| 
 | ||
| sig.c
 | ||
| 	- throw_to_top_level: change call to run_interrupt_trap to pass arg 1
 | ||
| 	- termsig_handler: change call to run_interrupt_trap
 | ||
| 
 | ||
| trap.h
 | ||
| 	- run_interrupt_trap: update extern prototype declaration
 | ||
| 
 | ||
| 				    2/4
 | ||
| 				    ---
 | ||
| lib/readline/histfile.c
 | ||
| 	- histfile_backup, histfile_restore: new functions to back up and restore
 | ||
| 	  history file to `filename-', following (one level of) symlinks through
 | ||
| 	  so we don't rename the symlink itself.  From a suggestion by
 | ||
| 	  Jonathan Hankins <jhankins@homewood.k12.al.us>
 | ||
| 
 | ||
| assoc.c
 | ||
| 	- assoc_to_assign: if an index happens to be `@' or `*', make sure it's
 | ||
| 	  double-quoted.  Bug report from Greg Wooledge <wooledg@eeg.ccf.org>
 | ||
| 
 | ||
| 				    2/5
 | ||
| 				    ---
 | ||
| lib/readline/bind.c
 | ||
| 	- rl_bind_key: if we are rebinding a key that is not bound to a
 | ||
| 	  function or a macro, construct a key sequence and pass it to
 | ||
| 	  rl_bind_keyseq.  Make sure that '\' when it is used as a key is
 | ||
| 	  changed to "\\" so it can survive rl_translate_keyseq.  Fixes
 | ||
| 	  https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=776743
 | ||
| 
 | ||
| 				    2/8
 | ||
| 				    ---
 | ||
| include/posixjmp.h
 | ||
| 	- _rl_longjmp, sh_longjmp: new defines, expand to siglongjmp or longjmp
 | ||
| 	  depending on autoconf results, used to avoid redefining longjmp,
 | ||
| 	  remove _OPENNT conditional code.  Report from Eric Blake
 | ||
| 	  <eblake@redhat.com>
 | ||
| 
 | ||
| {bashjmp,quit}.h,{execute_cmd,expr,jobs,sig,trap}.c,builtins/{evalstring.c,return.def}
 | ||
| 	- change calls to longjmp to use sh_longjmp
 | ||
| 
 | ||
| lib/readline/util.c
 | ||
| 	- change calls to longjmp to use _rl_longjmp
 | ||
| 
 | ||
| 				   2/18
 | ||
| 				   ----
 | ||
| variables.c
 | ||
| 	- bind_int_variable: make sure `v' is non-null before making it visible
 | ||
| 
 | ||
| 				   2/19
 | ||
| 				   ----
 | ||
| arrayfunc.c
 | ||
| 	- assign_array_var_from_word_list: after assignment, mark variable as no
 | ||
| 	  longer invisible
 | ||
| 	- assign_array_var_from_string: after assignment, mark variable as no
 | ||
| 	  longer invisible
 | ||
| 
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: add warning if an attempt is made to use a quoted
 | ||
| 	  compound assignment as an argument to declare (declare -a foo='( 1 2 )');
 | ||
| 	  backwards compatible with bash-4.3. Still a tentative change
 | ||
| 
 | ||
| 				   2/20
 | ||
| 				   ----
 | ||
| lib/glob/smatch.c
 | ||
| 	- is_wcclass: check malloc() return value, return -1 if it fails
 | ||
| 	  Report from Tobias Stoeckmann <tobias@stoeckmann.org>
 | ||
| 
 | ||
| lib/sh/shmatch.c
 | ||
| 	- sh_regmatch: check malloc() return value, handle NULL value if it
 | ||
| 	  fails.  Report from Tobias Stoeckmann <tobias@stoeckmann.org>
 | ||
| 
 | ||
| 				   2/22
 | ||
| 				   ----
 | ||
| lib/readline/doc/rltech.texi
 | ||
| 	- rl_callback_handler_install: note that the handler function should
 | ||
| 	  free the line it receives, as with readline.  Suggested by
 | ||
| 	  Ulf Magnusson <ulfalizer@gmail.com>
 | ||
| 	- Readline Signal Handling: note that application needs to clean up
 | ||
| 	  readline's terminal state if it wants to handle a signal before
 | ||
| 	  the line handler restores it.  Suggested by Ulf Magnusson
 | ||
| 	  <ulfalizer@gmail.com>
 | ||
| 
 | ||
| 				   2/24
 | ||
| 				   ----
 | ||
| lib/readline/histfile.c
 | ||
| 	- history_do_write,history_truncate_file: if the write fails, make sure
 | ||
| 	  to set history_lines_written_to_file to 0 so we don't lose those
 | ||
| 	  history entries
 | ||
| 
 | ||
| 				   2/27
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- execute_function: unwind-protect the value of line_number_for_err_trap,
 | ||
| 	  so a function that returns a non-zero value and triggers an ERR trap
 | ||
| 	  has the right value for LINENO. Any simple command in the function
 | ||
| 	  body can change it.  Bug report from Paul Donohue <gnu@paulsd.com>
 | ||
| 
 | ||
| 				    3/5
 | ||
| 				    ---
 | ||
| lib/sh/shquote.c
 | ||
| 	- sh_backslash_quote: cast `c' to `unsigned char' before using as
 | ||
| 	  index into backslash_table.  Report and fix from
 | ||
| 	  alexeyv.90@gmail.com
 | ||
| 
 | ||
| arrayfunc.[ch]
 | ||
| 	- valid_array_reference: added second `flags' argument for future use;
 | ||
| 	  currently unused
 | ||
| 
 | ||
| parse.y,{redir,subst,variables,test}.c
 | ||
| builtins/{declare,printf,read,set}.def
 | ||
| 	- valid_array_reference: changed callers
 | ||
| 
 | ||
| 				    3/7
 | ||
| 				    ---
 | ||
| lib/readline/signals.c
 | ||
| 	- _rl_handle_signal: if readline gets a SIGTSTP or SIGTTIN, block
 | ||
| 	  SIGTTOU so a backgrounded readline can reset the terminal settings
 | ||
| 	  appropriately, otherwise the terminal state and readline's idea
 | ||
| 	  of it can get messed up.  Original report from Dave Wysochanski
 | ||
| 	  <dwysocha@redhat.com> and Dave Anderson <anderson@redhat.com>
 | ||
| 
 | ||
| trap.c
 | ||
| 	- run_pending_traps: don't allow recursive SIGWINCH trap invocations;
 | ||
| 	  they're wasteful and trying to handle a stream of signals while a
 | ||
| 	  user resizes the terminal can lead to malloc errors trying to save
 | ||
| 	  and restore the_pipeline multiple times.  Problem reported most
 | ||
| 	  recently by Martin M. S. Pederson (Fedora bash bug 1197768
 | ||
| 	  https://bugzilla.redhat.com/show_bug.cgi?id=1197768)
 | ||
| 	- reset_or_restore_signal_handlers: set pending_traps to 0 for all
 | ||
| 	  signals when forking a child. TENTATIVE fix
 | ||
| 
 | ||
| jobs.c
 | ||
| 	- {save,restore}_pipeline: block SIGCHLD while manipulating the_pipeline
 | ||
| 	  like cleanup_the_pipeline does. XXX - may not be necessary
 | ||
| 
 | ||
| lib/readline/display.c
 | ||
| 	- rl_redisplay: fixed case where multibyte character in the prompt
 | ||
| 	  (e.g., \u03bb) in the last screen column causes problems with line
 | ||
| 	  wrapping because the newline marker is put in the middle of the
 | ||
| 	  multibyte char.  Most recently reported on Ubuntu by
 | ||
| 	  <sterpe@gmail.com>
 | ||
| 
 | ||
| pathexp.c
 | ||
| 	- quote_string_for_globbing: if a bracket expression doesn't have a
 | ||
| 	  closing right bracket, rescan it from just after the opening
 | ||
| 	  bracket without treating it as a bracket expression.  Bug report
 | ||
| 	  from Stephane Chazelas <stephane.chazelas@gmail.com>
 | ||
| 
 | ||
| 				    3/9
 | ||
| 				    ---
 | ||
| subst.c
 | ||
| 	- process_substitute: keep the last pipeline created to run a process
 | ||
| 	  substitution in LAST_PROCSUB_CHILD; discard it when another one is
 | ||
| 	  created
 | ||
| 
 | ||
| jobs.[ch]
 | ||
| 	- discard_pipeline: now global, so process_substitute can call it
 | ||
| 
 | ||
| jobs.c
 | ||
| 	- last_procsub_child: new variable, set and modified only by the process
 | ||
| 	  substitution code
 | ||
| 	- find_pipeline: if the requested pid is in LAST_PROCSUB_CHILD, return
 | ||
| 	  it; analogous to the way this code handles the_pipeline
 | ||
| 	- waitchld: if we find a child via find_pipeline that is a part of the
 | ||
| 	  last process substitution child, mark that child appropriately.  If
 | ||
| 	  the child is dead, add it to the bgp list.  This and the previous
 | ||
| 	  change allow waiting for the most recent process substitution (the
 | ||
| 	  one corresponding to $!).  Original report from Stephane Chazelas
 | ||
| 	  <stephane.chazelas@gmail.com>
 | ||
| 
 | ||
| 				   3/10
 | ||
| 				   ----
 | ||
| arrayfunc.c
 | ||
| 	- unbind_array_element: make sure skipsubscript() doesn't try to parse
 | ||
| 	  embedded quotes in the subscript, since this has already been through
 | ||
| 	  one round of word expansion before calling the unset builtin.  (This
 | ||
| 	  function is only called by the unset builtin).  Fixes bug reported by
 | ||
| 	  <vampyrebat@gmail.com>
 | ||
| 
 | ||
| 				   3/17
 | ||
| 				   ----
 | ||
| jobs.c
 | ||
| 	- waitchld: move code that adds the last process substitution pid to
 | ||
| 	  the bgpids array from waitchld (where it can call malloc in a signal
 | ||
| 	  handler context) to cleanup_dead_jobs
 | ||
| 
 | ||
| 				   3/19
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- parameter_brace_expand: if expanding an array in a context where word
 | ||
| 	  splitting will not take place (W_ASSIGNRHS only for now), make sure
 | ||
| 	  to pass the double-quoted flag to chk_atstar so we don't get the
 | ||
| 	  unquoted $* behavior, which will cause unwanted word splitting.
 | ||
| 	  Fixes bug reported by isabella parakiss <izaberina@gmail.com>
 | ||
| 
 | ||
| arrayfunc.c
 | ||
| 	- unbind_array_element: don't assume that caller will check and pass
 | ||
| 	  only array variables; don't allow non-array variables to be unset
 | ||
| 	  using the `@' or `*' subscripts and don't allow any subscripts other
 | ||
| 	  than 0; return -2 in those cases
 | ||
| 	- unbind_array_element: unset a non-array variable if passed a subscript
 | ||
| 	  of `0' (e.g., `unbind "scalar[0]"').  This is new functionality that
 | ||
| 	  parallels the ${scalar[0]} expansion
 | ||
| 
 | ||
| builtins/set.def
 | ||
| 	- unset_builtin: don't check whether a variable is an array if it's
 | ||
| 	  referenced using array syntax (scalar[0]); pass it to
 | ||
| 	  unbind_array_element anyway and check the result.  This means that
 | ||
| 	  `unset scalar' and `unset scalar[0]' are equivalent
 | ||
| 
 | ||
| 				   3/20
 | ||
| 				   ----
 | ||
| builtins/set.def
 | ||
| 	- set_builtin: make `-i' an invalid option, unconditionally for now.
 | ||
| 	  From a bug-bash discussion started by Peng Yu <pengyu.ut@gmail.com>
 | ||
| 
 | ||
| 				   3/21
 | ||
| 				   ----
 | ||
| lib/readline/colors.c
 | ||
| 	- _rl_print_color_indicator: handle dangling symlinks (C_ORPHAN) and
 | ||
| 	  the `target' specifier for links (dereference S_ISLNK if the target
 | ||
| 	  exists).  Bug report and fix from andreas@stapelspeicher.org
 | ||
| 
 | ||
| {arrayfunc,subst}.c
 | ||
| 	- add code to save and restore this_command_name in places that set
 | ||
| 	  this_command_name to NULL to prevent error messages from arithmetic
 | ||
| 	  evaluation.  Fixes bug reported by brian.carpenter@gmail.com
 | ||
| 
 | ||
| builtins/mapfile.def
 | ||
| 	- do_chop: remove a new DELIM argument from the line, instead of
 | ||
| 	  unconditionally removing newline
 | ||
| 	- mapfile: if -d delim is supplied and we are breaking fields at DELIM,
 | ||
| 	  remove DELIM if the -t option is supplied by passing DELIM to do_chop().
 | ||
| 	  Suggested by Geir Hauge <geir.hauge@gmail.com>
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- mapfile: document new -t option behavior, defaults are the same
 | ||
| 
 | ||
| builtins/alias.def
 | ||
| 	- print_alias: if the first character of an alias name is `-', add a
 | ||
| 	  `-- ' after `alias' to avoid option errors when trying to reuse the
 | ||
| 	  output.  Bug report and fix on savannah from Pasha Bolokhov
 | ||
| 	  <pasha.bolokhov@gmail.com>
 | ||
| 
 | ||
| 				   3/22
 | ||
| 				   ----
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: if creating a variable does not return a valid
 | ||
| 	  variable in VAR, check for null variable before dereferencing it.
 | ||
| 	  This happens with nameref variables referencing variables set to
 | ||
| 	  the empty string.
 | ||
| 	  Fixes bug reported by Arthur200000 <arthur200126@163.com> 
 | ||
| 
 | ||
| 				   3/23
 | ||
| 				   ----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- INVOCATION: add language to make it clear that non-interactive login
 | ||
| 	  shells execute ~/.bash_logout if they run the `exit' builtin.  From a
 | ||
| 	  question from Christoph Anton Mitterer <calestyo@scientia.net>
 | ||
| 
 | ||
| 				    4/6
 | ||
| 				    ---
 | ||
| subst.c
 | ||
| 	- process_substitute: increment and decrement subshell_level around
 | ||
| 	  calls to parse_and_execute, as in command substitution, so
 | ||
| 	  $BASH_SUBSHELL gets new values in the subshell.  Fixes inconsistency
 | ||
| 	  pointed out by Peng Yu <pengyu.ut@gmail.com>
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- read: add clarifying text to note that the -N option does not split
 | ||
| 	  on $IFS, but does retain backslash as an escape character subject
 | ||
| 	  to -r.  Report from isabella parakiss <izaberina@gmail.com>
 | ||
| 
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: unless it's the last statement in a {...} block,
 | ||
| 	  NEXT_VARIABLE must be protected by braces.  Bug introduced in patch
 | ||
| 	  from 3/22, reported by Eduardo A. Bustamante López
 | ||
| 	  <dualbus@gmail.com>
 | ||
| 
 | ||
| 				    4/7
 | ||
| 				    ---
 | ||
| parse.y
 | ||
| 	- shell_getc: if bash is reading input from a string that ends with an
 | ||
| 	  unquoted backslash, add another backslash instead of a newline, since
 | ||
| 	  the backslash and newline will disappear in normal processing.  Fixes
 | ||
| 	  bug with `bash -c 'eval \\; echo y' ' skipping the eval command and
 | ||
| 	  setting incorrect exit status, and `bash -ic 'eval \\; echo y' '
 | ||
| 	  seeing EOF on empty line and exiting before the echo.  Keep track of
 | ||
| 	  backslash state with last_was_backslash; set in char reading loop.
 | ||
| 	  Fixes bug reported by Eduardo A. Bustamante López <dualbus@gmail.com>
 | ||
| 
 | ||
| 				    4/8
 | ||
| 				    ---
 | ||
| shell.c
 | ||
| 	- main: check for $INSIDE_EMACS as well as $EMACS when deciding whether
 | ||
| 	  or not bash is being run in a GNU emacs shell window.  Don't bother
 | ||
| 	  checking whether $TERM is unset because variable initialization sets
 | ||
| 	  it to `dumb' if unset.  Fixes from Paul Eggert <eggert@CS.UCLA.EDU>
 | ||
| 
 | ||
| parse.y
 | ||
| 	- push_token: new function, rotates current_token through last_read_token,
 | ||
| 	  saving old values like yylex() does, sets current_token to argument
 | ||
| 
 | ||
| evalfile.c
 | ||
| 	- _evalfile: if current_token is yacc_EOF, push a newline as the value
 | ||
| 	  of current_token instead, using push_token().  yacc_EOF can result if
 | ||
| 	  sourced file doesn't end with a newline but does end with an unescaped
 | ||
| 	  backslash.  Fixes bug reported by Pedro Gimeno
 | ||
| 	  <pgwr-842@personal.formauri.es>
 | ||
| 
 | ||
| lib/readline/histfile.c
 | ||
| 	- use PARAMS(x) instead of __P(x).  Bug reported by Evan Gates
 | ||
| 	  <evan.gates@gmail.com>
 | ||
| 
 | ||
| 				    4/9
 | ||
| 				    ---
 | ||
| execute_cmd.c
 | ||
| 	- execute_simple_command: if we haven't already forked, and we have
 | ||
| 	  created FIFOs, turn off the no-fork optimization in the simple
 | ||
| 	  command's flags. Originally reported to savannah by Kuang-che Wu as
 | ||
| 	  https://savannah.gnu.org/support/index.php?108732
 | ||
| 
 | ||
| 				   4/10
 | ||
| 				   ----
 | ||
| trap.c
 | ||
| 	- trap_if_untrapped: new function, sets a trap on a signal if that
 | ||
| 	  signal is not already trapped
 | ||
| 	- maybe_set_debug_trap: new function, sets DEBUG trap to command string
 | ||
| 	  argument only if it's not already trapped
 | ||
| 
 | ||
| trap.h
 | ||
| 	- maybe_set_debug_trap: new extern declaration
 | ||
| 
 | ||
| 
 | ||
| builtins/source.def
 | ||
| 	- source_builtin: if the -T option isn't set, use maybe_set_debug_trap
 | ||
| 	  in the unwind-protect instead of unconditionally restoring the old
 | ||
| 	  trap string. That means if the sourced file changes the DEBUG trap,
 | ||
| 	  that new trap will persist instead of being undone when the old
 | ||
| 	  value is restored. Fixes bug reported by Scott Bronson
 | ||
| 	  <bronson@rinspin.com>
 | ||
| 
 | ||
| builtins/evalstring.c
 | ||
| 	- parse_string: before we jump to top_level, if we are at the `bottom'
 | ||
| 	  of the parse_and_execute stack (parse_and_execute_level == 0), call
 | ||
| 	  top_level_cleanup() before jumping so the right cleanup happens (e.g.,
 | ||
| 	  cleaning up redirections and other state).  Fixes bug reported by
 | ||
| 	  Sam Liddicott <sam@liddicott.com>
 | ||
| 
 | ||
| 				   4/15
 | ||
| 				   ----
 | ||
| jobs.c
 | ||
| 	- delete_job: only add J_ASYNC (and not J_FOREGROUND) jobs to the
 | ||
| 	  bgpids array, since Posix says shells only need to save the status
 | ||
| 	  of async jobs.  Report and fix from John Fremlin <john@fb.com>
 | ||
| 
 | ||
| 				   4/17
 | ||
| 				   ----
 | ||
| pcomplib.c
 | ||
| 	- COMPLETE_HASH_BUCKETS: increase to 256 since bash-completion is
 | ||
| 	  over 300 completions by now
 | ||
| 
 | ||
| variables.c
 | ||
| 	- VARIABLES_HASH_BUCKETS: constant used to size shell variables hash
 | ||
| 	  table instead of relying on hash library default.  Used in calls
 | ||
| 	  to hash_create in create_variable_tables(), push_temp_var(), and
 | ||
| 	  push_func_var().  Currently set to 1024 because why not?  From a
 | ||
| 	  discussion starting at
 | ||
| 	  https://lists.gnu.org/archive/html/bug-bash/2015-04/msg00089.html
 | ||
| 	- initialize_shell_variables: if FUNCTION_IMPORT is not defined, the
 | ||
| 	  nested conditional compilation causes syntax errors.  Bug and fix
 | ||
| 	  from Eric Blake <eblake@redhat.com>
 | ||
| 
 | ||
| configure.ac
 | ||
| 	- function-import: fix typo, assign to correct variable.  Found as the
 | ||
| 	  result of a report by Eric Blake <eblake@redhat.com>
 | ||
| 
 | ||
| shell.c
 | ||
| 	- open_shell_script: check whether or not file argument is a
 | ||
| 	  directory before opening; Posix says that implementations may open
 | ||
| 	  a directory with O_RDONLY.  Bug report from
 | ||
| 	  Eduardo A. Bustamante López <dualbus@gmail.com>
 | ||
| 
 | ||
| 				   4/19
 | ||
| 				   ----
 | ||
| ulimit.def
 | ||
| 	- fix typo in limits[] declaration of `k'
 | ||
| 
 | ||
| 				   4/20
 | ||
| 				   ----
 | ||
| configure.ac
 | ||
| 	- add template definitions set by AC_USE_SYSTEM_EXTENSIONS from a report
 | ||
| 	  from Andreas Schwab <schwab@linux-m68k.org>
 | ||
| 
 | ||
| variables.c
 | ||
| 	- FUNCTIONS_HASH_BUCKETS: constant used to size the hash tables used for
 | ||
| 	  shell functions and the text of shell function definitions.  Initially
 | ||
| 	  set to 512, even though it's a really rare case that someone has more
 | ||
| 	  than around 150 functions, even with bash-completion
 | ||
| 
 | ||
| 				   4/21
 | ||
| 				   ----
 | ||
| shell.c
 | ||
| 	- main: malloc_set_register: change arg to 0 to disable keeping track of
 | ||
| 	  allocations and frees in table; change to 1 for malloc debugging on
 | ||
| 	  demand.  Table is too small to keep effective track of allocations on
 | ||
| 	  a modern system, need to use something like valgrind
 | ||
| 
 | ||
| 				   4/22
 | ||
| 				   ----
 | ||
| shell.c
 | ||
| 	- main: move cmd_init() (initialize word desc and word list object
 | ||
| 	  caches) after startup files are read so the cache doesn't get filled
 | ||
| 	  up with semi-permanent storage for shell functions and variables
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_function: use maybe_set_debug_trap in the same way as source
 | ||
| 	  builtin change from 4/10 to allow functions to reset a DEBUG trap
 | ||
| 	  when set -T not in effect.  From a report by Peng Yu
 | ||
| 	  <pengyu.ut@gmail.com>
 | ||
| 
 | ||
| 				   4/23
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- execute_disk_command: don't overwrite value of subshell_environment
 | ||
| 	  by assigning SUBSHELL_FORK; just OR in SUBSHELL_FORK so something
 | ||
| 	  like SUBSHELL_ASYNC or SUBSHELL_PIPE is preserved
 | ||
| 
 | ||
| jobs.c
 | ||
| 	- wait_for: don't call give_terminal_to if running in a subshell
 | ||
| 	  environment, not just if running_in_background is set; don't want
 | ||
| 	  shell functions waiting for a process to complete in a pipeline to
 | ||
| 	  give the terminal to the wrong process group.  Part of fix for bug
 | ||
| 	  reported by Valentin Bajrami <valentin.bajrami@gmail.com>
 | ||
| 	- make_child: child process should not try to give the terminal to the
 | ||
| 	  pipeline_pgrp if running as part of a pipeline (SUBSHELL_PIPE in
 | ||
| 	  subshell_environment); functions in execute_cmd.c don't set that
 | ||
| 	  flag until after make_child returns and the child process is running.
 | ||
| 	  Rest of fix for bug reported by Valentin Bajrami
 | ||
| 	  <valentin.bajrami@gmail.com>
 | ||
| 
 | ||
| 				   4/24
 | ||
| 				   ----
 | ||
| redir.c
 | ||
| 	- redirection_error: if the redirection involves {varname}, only use
 | ||
| 	  `varname' in the error message if the error code is < 0 (one of the
 | ||
| 	  internal redirection errors, like ambiguous or bad variable name);
 | ||
| 	  otherwise the issue is probably with the filename and should be treated
 | ||
| 	  as usual.  Fixes problem reported by Dr. David Alan Gilbert
 | ||
| 	  <dgilbert@redhat.com>
 | ||
| 
 | ||
| configure.ac,config.h.in
 | ||
| 	- sys/ioctl.h: add check in AC_CHECK_HEADERS macro, define HAVE_SYS_IOCTL_H
 | ||
| 
 | ||
| lib/readline/{rltty,terminal}.c
 | ||
| 	- sys/ioctl.h: include unconditionally for ioctl declaration, avoid
 | ||
| 	  issues with `implicit declaration' warnings.  Issue originally
 | ||
| 	  raised on gdb list by Chen Gang <xili_gchen_5257@hotmail.com>
 | ||
| 
 | ||
| 				   4/27
 | ||
| 				   ----
 | ||
| lib/malloc/table.c
 | ||
| 	- mem_table: now a circular buffer showing the state of the last
 | ||
| 	  REG_TABLE_SIZE allocations rather than a hash table that quickly
 | ||
| 	  fills up
 | ||
| 
 | ||
| builtins/declare.def
 | ||
| 	- typeset_builtin: add -n to list of supported options.  Omission
 | ||
| 	  reported by Valentin Bajrami <valentin.bajrami@gmail.com>
 | ||
| 
 | ||
| unwind_prot.c
 | ||
| 	- use object caches instead of malloc/free to allocate and deallocate
 | ||
| 	  unwind-protect elements
 | ||
| 	- uwp_init: initialize unwind-protect element object cache
 | ||
| 
 | ||
| unwind_prot.h
 | ||
| 	- uwp_init: extern declaration
 | ||
| 
 | ||
| shell.c
 | ||
| 	- main: call uwp_init right after calling cmd_init -- initialize all the
 | ||
| 	  object caches at the same place
 | ||
| 
 | ||
| lib/malloc/table.[ch]
 | ||
| 	- mlocation_table: new table to keep track of allocation locations by
 | ||
| 	  file and line, functions to initialize table, record an allocation,
 | ||
| 	  and dump the table to stderr
 | ||
| 	- mregister_alloc: call mlocation_register_alloc to record the location
 | ||
| 	  (source file/line) for each allocation to pinpoint malloc hot spots
 | ||
| 	  by number of calls.  More detail than gprof
 | ||
| 
 | ||
| parse.y
 | ||
| 	- set_line_mbstate: replace free/xmalloc pair with xrealloc call
 | ||
| 	- read_token_word: call alloc_word_desc instead of xmalloc so we can take
 | ||
| 	  advantage of the WORD_DESC cache
 | ||
| 
 | ||
| 				   4/28
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- execute_simple_command: if command execution fails because the command
 | ||
| 	  is a directory, and the `autocd' option is set, add a `--' argument
 | ||
| 	  to the constructed `cd' command to protect against command names with
 | ||
| 	  the same name as options to `cd'.  Report and fix from
 | ||
| 	  isabella parakiss <izaberina@gmail.com>
 | ||
| 
 | ||
| 				   4/30
 | ||
| 				   ----
 | ||
| jobs.c
 | ||
| 	- printable_job_status, j_strsignal: change calls to strcpy and sprintf
 | ||
| 	  that write to retcode_name_buffer to use strncpy and snprintf to
 | ||
| 	  avoid buffer overflows caused by malicious translations.  Bug and fix
 | ||
| 	  from Trammell Hudson <Trammell.Hudson@twosigma.com>
 | ||
| 
 | ||
| 				    5/1
 | ||
| 				    ---
 | ||
| strtrans.c
 | ||
| 	- ansicstr: make sure the buffer is at least 12 bytes to ensure enough
 | ||
| 	  space for any eventual call to u32cesc for one multibyte char
 | ||
| 
 | ||
| 				    5/4
 | ||
| 				    ---
 | ||
| jobs.c
 | ||
| 	- wait_for: if an interactive shell is running a loop and waiting for
 | ||
| 	  a non-builtin command to exit, and the command exits due to SIGINT,
 | ||
| 	  act as if the shell received the SIGINT as well and break the loop.
 | ||
| 	  This matches the behavior when the shell is running a builtin command
 | ||
| 	  in a loop, and when running a non-builtin command outside a loop, and
 | ||
| 	  seems more broadly useful than running the trap handler over and over
 | ||
| 	  again.  Report originally from Kaz Kylheku <kkylheku@gnu.org>
 | ||
| 
 | ||
| builtins/set.def
 | ||
| 	- unset_builtin: use different variables for keeping the state of the
 | ||
| 	  -f and -v options than the loop uses to decide whether or not to
 | ||
| 	  treat a name as a function or a variable.  Fixes problem with
 | ||
| 	  unset_function setting `sticking' after you unset a function when
 | ||
| 	  invoked with no options.  Bug report from Dreamcat4
 | ||
| 	  <dreamcat4@gmail.com>
 | ||
| 
 | ||
| shell.c
 | ||
| 	- open_shell_script: set running_shell_script to 1, set to 0 in every
 | ||
| 	  other case (new variable)
 | ||
| 	- main: when checking whether or not to call start_debugger, test
 | ||
| 	  running_shell_script instead of dollar_vars[1].  The goal is to not
 | ||
| 	  invoke the debugger for interactive shells but allow it to run for
 | ||
| 	  things like `bash --debugger -i /tmp/script'.  Problem reported by
 | ||
| 	  Rocky Bernstein <rocky@gnu.org>
 | ||
| 
 | ||
| lib/readline/histexpand.c
 | ||
| 	- history_event_delimiter_chars: new (as yet undocumented) variable
 | ||
| 	  containing by default characters that can delimit a history event
 | ||
| 	  specifier without requiring a `:': "^$*%-" as the documentation has
 | ||
| 	  always said.  Fixes bug reported by Anders Granlund
 | ||
| 	  <anders.granlund.0@gmail.com>
 | ||
| 
 | ||
| 				   5/10
 | ||
| 				   ----
 | ||
| lib/glob/gmisc.c
 | ||
| 	- match_pattern_char, match_pattern_wchar: if passed an empty string,
 | ||
| 	  return a match if the first character of the pattern is `*'
 | ||
| 
 | ||
| subst.c
 | ||
| 	- pat_subst: change to allow empty strings to be replaced as long as
 | ||
| 	  pattern matches empty string.  Report and fix from isabella parakiss
 | ||
| 	  <izaberina@gmail.com>
 | ||
| 
 | ||
| 				   5/12
 | ||
| 				   ----
 | ||
| lib/sh/strtrans.c
 | ||
| 	- ansic_wshouldquote: make behavior consistent in the event of an
 | ||
| 	  invalid multibyte sequence: return 1 to the caller so the string
 | ||
| 	  will be $'...' quoted
 | ||
| 
 | ||
| builtins/cd.def
 | ||
| 	- cd_builtin: print the right error message even if printable_filename
 | ||
| 	  changes errno (e.g., EILSEQ)
 | ||
| 
 | ||
| lib/sh/shquote.c
 | ||
| 	- sh_backslash_quote: in multibyte locales, even if is_basic does not
 | ||
| 	  return true, backslash-quote an ASCII character that backslash_table
 | ||
| 	  says should be quoted.  Part of fix for bug reported by Igor
 | ||
| 	  Bogomazov <ygrex@ygrex.ru>
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- directory_exists: new function, dequotes the string argument, removes
 | ||
| 	  any trailing slash, and returns true if the result is a valid
 | ||
| 	  existing filename
 | ||
| 	- bash_filename_stat_hook,bash_directory_completion_hook: use
 | ||
| 	  directory_exists instead of calling lstat/stat on the quoted
 | ||
| 	  directory name.  Rest of fix for bug reported by Igor Bogomazov
 | ||
| 	  <ygrex@ygrex.ru>
 | ||
| 
 | ||
| 				   5/15
 | ||
| 				   ----
 | ||
| aclocal.m4
 | ||
| 	- BASH_CHECK_MULTIBYTE: when checking for locale_charset, add $LIBINTL
 | ||
| 	  to $LIBS.  If we're using the included lib/intl/libintl.a, it will
 | ||
| 	  include a version of locale_charset
 | ||
| 
 | ||
| 				   5/17
 | ||
| 				   ----
 | ||
| lib/readline/bind.c
 | ||
| 	- sv_isrchterm: make sure we check for v[end] == 0 while in the loop
 | ||
| 	  looking for whitespace.  Bug report and fix from Sergio Durigan
 | ||
| 	  Junior <sergiodj@sergiodj.net>
 | ||
| 
 | ||
| lib/sh/shmbchar.c
 | ||
| 	- mbstrlen,mbsmbchar: move calculation of MB_CUR_MAX out of loop;
 | ||
| 	  calculate it once at beginning
 | ||
| 
 | ||
| lib/sh/mbscmp.c
 | ||
| 	- mbscmp: move calculation of MB_CUR_MAX out of loop; calculate it once
 | ||
| 	  at beginning
 | ||
| 
 | ||
| lib/sh/mbscasecmp.c
 | ||
| 	- mbscasecmp: move calculation of MB_CUR_MAX out of loop; calculate it
 | ||
| 	  once at beginning
 | ||
| 
 | ||
| lib/sh/shquote.c
 | ||
| 	- sh_backslash_quote: move calculation of MB_CUR_MAX out of loop;
 | ||
| 	  calculate it once at beginning
 | ||
| 
 | ||
| lib/sh/casemod.c
 | ||
| 	- sh_modcase: move calculation of MB_CUR_MAX out of loop; calculate it
 | ||
| 	  once at beginning
 | ||
| 
 | ||
| subst.c
 | ||
| 	- expand_word_internal: move calculation of MB_CUR_MAX out of loops;
 | ||
| 	  calculate it once at beginning of function (XXX should use
 | ||
| 	  locale_mb_cur_max)
 | ||
| 
 | ||
| 				   5/22
 | ||
| 				   ----
 | ||
| lib/readline/rlmbutil.h
 | ||
| 	- _rl_wcwidth: new function, short-circuits wcwidth calls for ASCII
 | ||
| 	  printable characters, returns 1 for those
 | ||
| 	- WCWIDTH: call _rl_wcwidth instead of wcwidth
 | ||
| 
 | ||
| lib/readline/display.c
 | ||
| 	- rl_redisplay: move calculation of MB_CUR_MAX out of loop; calculate
 | ||
| 	  it once at beginning.  Report and patch from Ole Laursen
 | ||
| 	  <ole.laursen@gmail.com>
 | ||
| 
 | ||
| 				   5/24
 | ||
| 				   ----
 | ||
| lib/readline/text.c
 | ||
| 	- rl_insert: change to attempt to batch-insert pending typeahead (not
 | ||
| 	  pushed input or input from a macro) that maps to rl_insert.  An
 | ||
| 	  attempt to suppress redisplay until readline reads all typeahead --
 | ||
| 	  pasted input, for instance.  Inspired by report from Ole Laursen
 | ||
| 	  <ole.laursen@gmail.com>.  XXX - need to make this a bindable
 | ||
| 	  variable; already controlled by _rl_optimize_typeahead
 | ||
| 
 | ||
| lib/readline/rlprivate.h
 | ||
| 	- _rl_optimize_typeahead: extern declaration
 | ||
| 
 | ||
| lib/readline/doc/{hstech.texi,history.3}
 | ||
| 	- next_history: clarify under what circumstances the history offset is
 | ||
| 	  incremented; suggestion from Glenn Golden <gdg@zplane.com>
 | ||
| 
 | ||
| print_cmd.c
 | ||
| 	- print_arith_command: should be compiled in if either DPAREN_ARITHMETIC
 | ||
| 	  or ARITH_FOR_COMMAND is defined.  Report from Flavio Medeiros
 | ||
| 	  <flaviomotamederios@gmail.com>
 | ||
| 
 | ||
| flags.c
 | ||
| 	- change_flag: new variable verbose_flag, set when `v' flag modified;
 | ||
| 	  sets value of echo_input_at_read correspondingly
 | ||
| 
 | ||
| flags.h
 | ||
| 	- verbose_flag: new extern declaration
 | ||
| 
 | ||
| shell.c
 | ||
| 	- long_options: --verbose now sets verbose_flag
 | ||
| 	- main: set echo_input_at_read from verbose_flag after parsing any
 | ||
| 	  long options
 | ||
| 
 | ||
| builtins/fc.def
 | ||
| 	- fc_builtin: don't unwind-protect echo_input_at_read directly; set it
 | ||
| 	  to 1 before calling fc_execute_file as before, and reset it to value
 | ||
| 	  of global verbose_flag using set_verbose_flag called from an
 | ||
| 	  unwind_protect.  Report from isabella parakiss <izaberina@gmail.com>
 | ||
| 
 | ||
| builtins/shopt.def
 | ||
| 	- shopt_set_debug_mode: new function, called when the extdebug shell
 | ||
| 	  option changes.  Right now, it sets function_trace_mode when extdebug
 | ||
| 	  is enabled, and turns off when extdebug is disabled.  The
 | ||
| 	  documentation has always said that shopt does this.  Report from
 | ||
| 	  Peng Yu <pengyu.ut@gmail.com>
 | ||
| 
 | ||
| 				   5/27
 | ||
| 				   ----
 | ||
| findcmd.[ch]
 | ||
| 	- add support for EXECIGNORE shell variable, list of extglob patterns
 | ||
| 	  that prevent matching filenames from being identified as executable
 | ||
| 	  files
 | ||
| 
 | ||
| variables.c
 | ||
| 	- EXECIGNORE: arrange for findcmd.c:setup_exec_ignore to be called when
 | ||
| 	  $EXECIGNORE changes
 | ||
| 
 | ||
| variables.h
 | ||
| 	- sv_execignore: extern declaration
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- document EXECIGNORE variable
 | ||
| 
 | ||
| 				   5/28
 | ||
| 				   ----
 | ||
| lib/readline/callback.c
 | ||
| 	- rl_callback_sigcleanup: new function, cleans up and unsets any state
 | ||
| 	  rl_callback_read_char uses.  Intended to be used after a signal
 | ||
| 
 | ||
| lib/readline/signals.c
 | ||
| 	- _rl_handle_signal: call rl_callback_sigcleanup on SIGINT.  Fixes bug
 | ||
| 	  reported to python group by Martin Panter <vadmium+floss@gmail.com>
 | ||
| 
 | ||
| lib/readline/isearch.c
 | ||
| 	- _rl_isearch_cleanup: now a public function so rl_callback_cleanup can
 | ||
| 	  call it
 | ||
| 
 | ||
| lib/readline/search.c
 | ||
| 	- _rl_nsearch_cleanup: now a public function so rl_callback_cleanup can
 | ||
| 	  call it
 | ||
| 
 | ||
| lib/readline/rlprivate.h
 | ||
| 	- _rl_[in]search_cleanup: extern declarations
 | ||
| 
 | ||
| lib/readline/readline.h
 | ||
| 	- rl_callback_sigcleanup: new extern declaration
 | ||
| 
 | ||
| lib/readline/doc/rltech.texi
 | ||
| 	- rl_callback_sigcleanup: documented
 | ||
| 
 | ||
| lib/readline/readline.h
 | ||
| 	- bump readline version to 7.0 due to addition of rl_callback_sigcleanup
 | ||
| 
 | ||
| 				   5/29
 | ||
| 				   ----
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: if we are trying to change attributes or value for
 | ||
| 	  a nameref variable whose value points to an unset variable, make
 | ||
| 	  sure we create a new variable whose name is the value of the nameref
 | ||
| 	  variable. That is,
 | ||
| 
 | ||
| 		declare -n foo=bar
 | ||
| 		unset foo	# unsets bar
 | ||
| 		declare -i foo
 | ||
| 
 | ||
| 	  should create a (invisible) variable named `bar' with the integer
 | ||
| 	  attribute.  Fixes problem reported by Greg Wooledge
 | ||
| 	  <wooledg@eeg.ccf.org>
 | ||
| 
 | ||
| builtins/set.def
 | ||
| 	- unset_builtin: if we find a nameref variable when we look it up with
 | ||
| 	  find_variable (the returned variable has a name different from what
 | ||
| 	  we looked up), make sure we use that new name for the rest of the
 | ||
| 	  function rather than rely on unbind_variable to do the same thing as
 | ||
| 	  find_variable.  Fixes problem reported by Greg Wooledge
 | ||
| 	  <wooledg@eeg.ccf.org>
 | ||
| 	- unset_builtin: if we try to unset a nameref variable whose value is
 | ||
| 	  not a set variable, make sure we don't try to unset the nameref
 | ||
| 	  itself, but rather the variable it points to.  This ensures that the
 | ||
| 	  following always works as it should
 | ||
| 
 | ||
| 		declare -n foo=bar
 | ||
| 		unset foo	# unsets bar and leaves foo unchanged
 | ||
| 
 | ||
| lib/readline/funmap.c
 | ||
| 	- vi-insertion-mode: make sure it maps to rl_vi_insert_mode, which is
 | ||
| 	  actually what the `i' keybinding in vi_movement_keymap maps to.
 | ||
| 	  Cosmetic fix from isabella parakiss <izaberina@gmail.com>
 | ||
| 
 | ||
| 				    6/2
 | ||
| 				    ---
 | ||
| general.c
 | ||
| 	- conf_standard_path: moved get_standard_path here from command.def; made
 | ||
| 	  public function
 | ||
| 
 | ||
| general.h
 | ||
| 	- conf_standard_path: extern declaration
 | ||
| 
 | ||
| 
 | ||
| 				    6/3
 | ||
| 				    ---
 | ||
| parse.y
 | ||
| 	- parse_matched_pair: make sure that command substitution constructs
 | ||
| 	  within ${...} expansions are parsed as such using parse_comsub, so
 | ||
| 	  the P_FIRSTCLOSE flag doesn't stop parsing if a right brace appears
 | ||
| 	  within the comsub.  Report from Christos Zoulas <christos@zoulas.com>
 | ||
| 
 | ||
| findcmd.c
 | ||
| 	- search_for_command: take two new flags for FLAGS arg: CMDSRCH_STDPATH,
 | ||
| 	  which means use the command -p path, and CMDSRCH_TEMPENV, currently
 | ||
| 	  unused.  Existing flag value of 1 now CMDSRCH_HASH
 | ||
| 	- search_for_command: don't set `path' to NULL if it wasn't found in
 | ||
| 	  the temporary environment; we can use it later
 | ||
| 	- search_for_command: look for the hashed file if temp_path == 0, not
 | ||
| 	  if we set path back to 0 (or path lookup failed)
 | ||
| 	- search_for_command: just call find_user_command_in_path with a
 | ||
| 	  pathlist argument that's set depending on the flags passed
 | ||
| 	- find_in_path: new function, just calls find_user_command_in_path at 
 | ||
| 	  this point
 | ||
| 	- search_for_command: don't put non-existent files into the hash table
 | ||
| 
 | ||
| findcmd.h
 | ||
| 	- CMDSRCH_*: new flags for search_for_command
 | ||
| 	- find_in_path: extern declaration
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_disk_command: check for CMD_STDPATH and call search_for_command
 | ||
| 	  with CMDSRCH_STDPATH if it's set
 | ||
| 
 | ||
| builtins/command.def
 | ||
| 	- command_builtin: if -p given without -v or -V, set the CMD_STDPATH
 | ||
| 	  flag in the simple command we construct from the rest of the
 | ||
| 	  argument list.  This fixes the command -p cmd issue with changing
 | ||
| 	  $PATH for the duration  of `cmd's execution reported by
 | ||
| 	  <sdowdy@rap.ucar.edu>
 | ||
| 
 | ||
| builtins/common.h
 | ||
| 	- CDESC_STDPATH: new flag for describe_command; means to use standard
 | ||
| 	  path for command -pv or -pV
 | ||
| 
 | ||
| builtins/command.def
 | ||
| 	- command_builtin: if -p given with -v or -V, pass the CDESC_STDPATH
 | ||
| 	  flag to describe_command
 | ||
| 
 | ||
| builtins/type.def
 | ||
| 	- describe_command: if given the CDESC_STDPATH flag, use find_in_path
 | ||
| 	  with the conf_standard_path() result. Since `all' will never be on
 | ||
| 	  with this flag, at least not yet, we can allocate and free the path
 | ||
| 	  list.  Fixes the bug of a temporary environment value for PATH
 | ||
| 	  preceding a `command -pv' or `command -pV' persisting when the
 | ||
| 	  command finishes and means we use fewer unwind-protects
 | ||
| 
 | ||
| 				    6/4
 | ||
| 				    ---
 | ||
| Makefile.in (plus other Makefile.ins)
 | ||
| 	- VPATH: remove `.' from VPATH value.  It's not needed any more and it
 | ||
| 	  trips a GNU make 4.1 bug on Cygwin.  Report and fix from Eric Blake
 | ||
| 	  <eblake@redhat.com>
 | ||
| 
 | ||
| lib/readline/histfile.c
 | ||
| 	- history_tempfile: new function, takes history file name as template
 | ||
| 	  and creates a temp file name including the PID
 | ||
| 	- history_truncate_file, history_do_write: instead of creating backup
 | ||
| 	  and restoring it on failure, use history_tempfile to create a temp
 | ||
| 	  file name, write to it, then rename to original history filename
 | ||
| 	  (handling symlinks using history_restore()).  Original report and
 | ||
| 	  patch from Russell Stuart <russell-savannah@stuart.id.au>
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- ulimit: clarify that -c and -f are in increments of 512 bytes when
 | ||
| 	  in posix mode.  Fix from Robin Johnson <robbat2@gentoo.org> via
 | ||
| 	  <vapier@gentoo.org>
 | ||
| 
 | ||
| 				    6/9
 | ||
| 				    ---
 | ||
| execute_cmd.c
 | ||
| 	- execute_in_subshell: don't call restore_default_signal for the exit
 | ||
| 	  trap, reset_signal_handlers already does the right thing and keeps
 | ||
| 	  the trap string around; no need to kill trap string.  Bug report
 | ||
| 	  from Miroslav Koskar <mk@mkoskar.com>
 | ||
| 
 | ||
| 				   6/11
 | ||
| 				   ----
 | ||
| nojobs.c
 | ||
| 	- find_proc_slot: now takes pid as an argument to avoid finding old
 | ||
| 	  procs when pids wrap around
 | ||
| 	- add_pid: pass pid to find_proc_slot to avoid multiple instances of
 | ||
| 	  the same pid in the list when pids wrap around.  Fixes bug reported
 | ||
| 	  by Roy Keene <rkeene@rkeene.org>
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- REAP: test for job_control == 0 also to determine whether or not
 | ||
| 	  to call reap_dead_jobs, since shells without job control enabled
 | ||
| 	  don't report on background process status
 | ||
| 
 | ||
| doc/bash.1,lib/readline/doc/hsuser.texi
 | ||
| 	- history: clarify documentation of -a option to note that it will not
 | ||
| 	  append the same line to the history file more than once.  Fixes
 | ||
| 	  problem reported by Reuben Thomas <rrt@sc3d.org>
 | ||
| 
 | ||
| 				   6/12
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- execute_in_subshell: don't bother decrementing subshell_level before
 | ||
| 	  this returns; the caller will just exit.  This means that
 | ||
| 	  $BASH_SUBSHELL will have consistent values in the subshell and any
 | ||
| 	  subsequent exit trap.  Fixes bug reported by Miroslav Koskar
 | ||
| 	  <mk@mkoskar.com>
 | ||
| 	- shell_execve: before longjmp to subshell_top_level, call reset_parser
 | ||
| 	  to free up any input line and stack of pushed strings
 | ||
| 
 | ||
| parse.y
 | ||
| 	- mk_alexpansion: if the last character of the alias is a shell
 | ||
| 	  metacharacter, don't add a space to the string following the alias
 | ||
| 	  value, since that will change the meaning of the command.  THIS IS
 | ||
| 	  NOT BACKWARDS COMPATIBLE AND MAY REQUIRE REVERTING. Inspired by an
 | ||
| 	  email message from Jilles Tjoelker <jilles@stack.nl> to austin
 | ||
| 	  group
 | ||
| 
 | ||
| 				   6/13
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- dequote_string: don't turn strings consisting of a single CTLESC
 | ||
| 	  into empty strings; return them unmodified.  The idea is that there
 | ||
| 	  is nothing to quote.  This means that something like
 | ||
| 		c=$'\001'
 | ||
| 		x=$c
 | ||
| 	  results in x containing '\001' when IFS=$'\001'.  See if this will
 | ||
| 	  cause problems by adding a debugging statement in the code
 | ||
| 
 | ||
| 				   6/15
 | ||
| 				   ----
 | ||
| parse.y
 | ||
| 	- CHECK_FOR_RESERVED_WORD: don't return ESAC when you read `esac'
 | ||
| 	  after a `|' while in a case pattern list (parser_state & PST_CASEPAT).
 | ||
| 	  This is Posix grammar rule 4
 | ||
| 	  (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_10_02)
 | ||
| 
 | ||
| 				   6/16
 | ||
| 				   ----
 | ||
| jobs.c
 | ||
| 	- wait_for: make sure we queue SIGCHLD signals if a SIGCHLD trap
 | ||
| 	  handler is running (signal_in_progress or IMPOSSIBLE_TRAP_HANDLER),
 | ||
| 	  since we allow recursive trap invocations now
 | ||
| 	- wait_for: make sure we treat SIGCHLD as trapped if the trap handler
 | ||
| 	  is set to IMPOSSIBLE_TRAP_HANDLER so we don't miss signals during
 | ||
| 	  calls to run_sigchld_trap()
 | ||
| 
 | ||
| trap.c
 | ||
| 	- run_pending_traps: since we allow recursive trap handler invocations,
 | ||
| 	  make sure we set pending_traps[SIGCHLD] to 0 while we mark the
 | ||
| 	  signal handler in progress (SIG_INPROGRESS) and don't reset it to 0
 | ||
| 	  after run_sigchld_trap returns in case more SIGCHLDs have been
 | ||
| 	  queued while it's running
 | ||
| 
 | ||
| 				   6/22
 | ||
| 				   ----
 | ||
| lib/readline/readline.c
 | ||
| 	- _rl_dispatch_subseq: if we shadowed any function, not just self-
 | ||
| 	  insert, bind that function to the key we shadowed and dispatch on it.
 | ||
| 	  This preserves and dispatches off the original key, not ANYOTHERKEY,
 | ||
| 	  and makes sure we are dispatching from a keymap with the right key
 | ||
| 	  binding.  Fixes bug reported by Carlos Pita
 | ||
| 	  <carlosjosepita@gmail.com>
 | ||
| 
 | ||
| 				   6/23
 | ||
| 				   ----
 | ||
| bashline.c
 | ||
| 	- attempt_shell_completion: don't read past the end of rl_line_buffer
 | ||
| 	  while skipping assignment statements before command names.  Fix for
 | ||
| 	  bug reported by Hanno Böck <hanno@hboeck.de>
 | ||
| 
 | ||
| lib/readline/parens.c
 | ||
| 	- _rl_enable_paren_matching: make paren matching work in vi insert
 | ||
| 	  mode. Really, this time.  Bug report from Carlos Pita
 | ||
| 	  <carlosjosepita@gmail.com>
 | ||
| 
 | ||
| 				   6/29
 | ||
| 				   ----
 | ||
| parse.y
 | ||
| 	- parse_comsub: when starting to parse a word, make sure that we set
 | ||
| 	  lex_rwlen to 0 along with lex_wlen if we are in a position where we
 | ||
| 	  can read a reserved word.  Fixes bug reported by  Nathan Neulinger
 | ||
| 	  <nneul@neulinger.org>
 | ||
| 
 | ||
| 				   6/30
 | ||
| 				   ----
 | ||
| sig.h
 | ||
| 	- include <signal.h> unconditionally and rely on guards in sig.h to
 | ||
| 	  keep from including it more than once.  Irix 6.5 defines SIG_DFL
 | ||
| 	  in other files and defeats the test of SIG_DFL.  Fixes bug
 | ||
| 	  reported by Klaus Ziegler <klausz@haus-gisela.de>
 | ||
| 
 | ||
| alias.c
 | ||
| 	- ALIAS_HASH_BUCKETS: table size increased to 64
 | ||
| 
 | ||
| 				    7/7
 | ||
| 				    ---
 | ||
| 
 | ||
| {jobs,nojobs}.c
 | ||
| 	- wait_sigint_cleanup: new function, to be called by longjmp targets
 | ||
| 	  for wait_intr_buf. Performs any necessary cleanup of internal waitchld
 | ||
| 	  state before going back to top level
 | ||
| 
 | ||
| jobs.h
 | ||
| 	- wait_sigint_cleanup: new extern declaration
 | ||
| 
 | ||
| builtins/wait.def
 | ||
| 	- wait_builtin: call wait_sigint_cleanup after longjmp back to
 | ||
| 	  wait_intr_buf on interrupt
 | ||
| 
 | ||
| [bash-4.4-alpha frozen]
 | ||
| 
 | ||
| 				    7/7
 | ||
| 				    ---
 | ||
| bashline.c
 | ||
| 	- attempt_shell_completion: when skipping assignment statements, don't
 | ||
| 	  skip past rl_point to find the word on which to perform programmable
 | ||
| 	  completion.  Fixes bug reported by Hanno Böck <hanno@hboeck.de>
 | ||
| 
 | ||
| 				   7/10
 | ||
| 				   ----
 | ||
| 
 | ||
| pcomplib.c
 | ||
| 	- compspec_copy: set the refcount on the copy to 1, since it's a freshly
 | ||
| 	  allocated copy and there are no other pointers to it.  Fixes memory
 | ||
| 	  leak from gen_progcomp_completions
 | ||
| 
 | ||
| lib/readline/complete.c
 | ||
| 	- printable_part: if the pathname passed is just `/', just return it
 | ||
| 	  instead of potentially reading before the `/'.  Fixes bug reported
 | ||
| 	  by Hanno Böck <hanno@hboeck.de>
 | ||
| 
 | ||
| 				   7/11
 | ||
| 				   ----
 | ||
| support/man2html.c
 | ||
| 	- change calls to malloc to use xmalloc; provide standard xmalloc
 | ||
| 	  definition.  Report from Bill Parker <wp02855@gmail.com>
 | ||
| 
 | ||
| builtins/wait.def
 | ||
| 	- wait_intr_flag: set to denote validity of wait_intr_buf as target
 | ||
| 	  for longjmp; reset by WAIT_RETURN macro; should always be 0 when
 | ||
| 	  wait_builtin returns
 | ||
| 
 | ||
| quit.h
 | ||
| 	- CHECK_WAIT_INTR: now also checks wait_intr_flag to ensure valid state
 | ||
| 	  of wait_intr_buf before sh_longjmp
 | ||
| 
 | ||
| {jobs,nojobs}.c
 | ||
| 	- wait_intr_flag: extern declaration for use by CHECK_WAIT_INTR
 | ||
| 
 | ||
| sig.c
 | ||
| 	- wait_intr_flag: set back to 0 every place the shell resets state after
 | ||
| 	  a jump to top_level
 | ||
| 	- sigint_sighandler: only set wait_signal_received if wait_intr_flag
 | ||
| 	  indicates that the wait builtin has correctly set wait_intr_buf.
 | ||
| 	  Final fix for bug reported by Ondrej Oprala <ooprala@redhat.com>
 | ||
| 
 | ||
| subst.c
 | ||
| 	- parameter_brace_expand: fix so that ${!vvv@} is not interpreted as
 | ||
| 	  introducing a `@' operator, but instead retains its meaning as all
 | ||
| 	  variables whose name begins with vvv.  Fixes bug reported by
 | ||
| 	  konsolebox <konsolebox@gmail.com>
 | ||
| 
 | ||
| 				   7/14
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- execute_connection: remove the fork optimization from and AND_AND
 | ||
| 	  and OR_OR cases; it has trouble with `a && b && c', since the `&&'
 | ||
| 	  is left-associative.  Putting that code here can result in unwanted
 | ||
| 	  fork optimizations since the `b' will end up as `second' on a
 | ||
| 	  recursive call to execute_command.  Bug reported by Mike Frysinger
 | ||
| 	  <vapier@gentoo.org>
 | ||
| 
 | ||
| builtins/evalstring.c
 | ||
| 	- optimize_fork: moved code from execute_connection to here; checks
 | ||
| 	  whether the RHS of a && or || passes the suppress_fork() tests and
 | ||
| 	  turns on the NO_FORK bit if so
 | ||
| 	- parse_and_execute: if suppress_fork() tests fail, check whether the
 | ||
| 	  command to be executed is a connection and attempt to optimize the
 | ||
| 	  fork for the right side using optimize_fork().  The key is dealing
 | ||
| 	  with the entire command passed to `bash -c' or `eval'
 | ||
| 
 | ||
| builtins/common.h
 | ||
| 	- optimize_fork: new extern declaration
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_command_internal: enable code put in to undo redirections
 | ||
| 	  before exiting the shell due to `set -e' in the case of a shell
 | ||
| 	  function that gets command-not-found or a syntax error.  Reported
 | ||
| 	  back in May, 2014 by Mark Ferrell <major@homeonderanged.org>
 | ||
| 
 | ||
| bashhist.c
 | ||
| 	- bash_history_inhibit_expansion: enable change from 1/10 that skips
 | ||
| 	  over history expansion character in command and process
 | ||
| 	  substitution
 | ||
| 
 | ||
| 				   7/15
 | ||
| 				   ----
 | ||
| lib/readline/{history,undo}.c
 | ||
| 	- replace_history_data now _hs_replace_history_data
 | ||
| 
 | ||
| 				   7/16
 | ||
| 				   ----
 | ||
| lib/readline/readline.c
 | ||
| 	- make sure _rl_to_lower doesn't ever get characters that are outside
 | ||
| 	  of its valid range by casting arg to unsigned char
 | ||
| 
 | ||
| lib/readline/colors.h
 | ||
| 	- change completion prefix color (C_PREFIX) to be the same as C_SOCK,
 | ||
| 	  which is less likely to collide with file type colorings (magenta)
 | ||
| 
 | ||
| lib/readline/complete.c
 | ||
| 	- fnprint: now takes an additional argument: the full, expanded pathname
 | ||
| 	  corresponding to the `toprint' argument
 | ||
| 	- fnprint: don't zero out prefix_bytes if we're not printing the
 | ||
| 	  ellipisis but we still want to use prefix_bytes for displaying
 | ||
| 	  the common prefix in a color
 | ||
| 	- print_filename: move colored-stats display responsibility into fnprint
 | ||
| 	- fnprint: change so colored-prefix and colored-stats can cooperate
 | ||
| 	  and display filenames with multiple colors: one for the prefix and
 | ||
| 	  one for the file type.  The prefix is displayed in the prefix color
 | ||
| 	  and the remainder of the pathname, if any, is displayed in the color
 | ||
| 	  corresponding to the file type.  Report and suggestion from Mike
 | ||
| 	  Frysinger <vapier@gentoo.org>
 | ||
| 
 | ||
| 				   7/17
 | ||
| 				   ----
 | ||
| lib/readline/readline.[ch]
 | ||
| 	- rl_readline_state: now unsigned long, prepare for more than 32 states
 | ||
| 
 | ||
| 
 | ||
| 				   7/18
 | ||
| 				   ----
 | ||
| lib/readline/history.h
 | ||
| 	- history_offset: now declared here, was always a global variable
 | ||
| 	- copy_history_entry: now declared here, part of the public interface
 | ||
| 	- alloc_history_entry: now declared here, part of the public interface
 | ||
| 
 | ||
| 				   7/20
 | ||
| 				   ----
 | ||
| lib/readline/readline.h
 | ||
| 	- RL_STATE_CHARSEARCH: new state, for vi mode character search.  Was
 | ||
| 	  previously handled by simply setting _rl_callback_func
 | ||
| 
 | ||
| lib/readline/vi_mode.c
 | ||
| 	- rl_domove_motion_callback: split into two functions, remaining code
 | ||
| 	  after _rl_dispatch call goes into new function
 | ||
| 	  _rl_vi_domove_motion_cleanup
 | ||
| 	- rl_vi_char_search: set RL_STATE_CHARSEARCH
 | ||
| 	- rl_vi_char_search: sets `i2' member of callback data to the key used
 | ||
| 	  to invoke the char search
 | ||
| 	- _rl_vi_callback_char_search: unset RL_STATE_CHARSEARCH after reading
 | ||
| 	  the character to find
 | ||
| 	- _rl_vi_domove_motion_cleanup: make sure RL_STATE_VIMOTION is unset in
 | ||
| 	  all cases where this function returns
 | ||
| 	- _rl_vi_domove_motion_cleanup: use `end' member of vi motion context
 | ||
| 	  as value of rl_end to restore after adding blank at end of line in
 | ||
| 	  rl_domove_motion_callback; avoids need to keep `old_end' and somehow
 | ||
| 	  pass it between the two functions
 | ||
| 
 | ||
| lib/readline/rlprivate.h
 | ||
| 	- _rl_vi_domove_motion_cleanup: new extern declaration
 | ||
| 
 | ||
| lib/readline/callback.c
 | ||
| 	- rl_callback_read_char: handle RL_STATE_CHARSEARCH, including case
 | ||
| 	  where char search is vi motion command for d/c/y/m and RL_STATE_VIMOTION
 | ||
| 	  is set when this is called.  Last of set of fixes for bug reported
 | ||
| 	  by Carlos Pita <carlosjosepita@gmail.com> with vi-mode `dty' command
 | ||
| 	  in callback mode
 | ||
| 
 | ||
| 				   7/21
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- command_substitute, process_substitute: add QUIT call in the child
 | ||
| 	  after restoring original signal handlers to catch post-fork SIGINT
 | ||
| 	  or terminating signal
 | ||
| 
 | ||
| jobs.c,nojobs.c
 | ||
| 	- make_child: after forking, clear interrupt_state in child
 | ||
| 	  before restoring signal mask so children get their own set of
 | ||
| 	  interrupts
 | ||
| 
 | ||
| 				   7/22
 | ||
| 				   ----
 | ||
| lib/sh/shquote.c
 | ||
| 	- sh_double_quote: since all uses of the return value from this function
 | ||
| 	  are for display and not subject to subsequent expansion, we don't
 | ||
| 	  need to protect CTLESC and CTLNUL with CTLESC.  Bug report and fix
 | ||
| 	  from isabella parakiss <izaberina@gmail.com>
 | ||
| 
 | ||
| parse.y
 | ||
| 	- decode_prompt_string: need to protect literal instances of CTLESC
 | ||
| 	  and CTLNUL with CTLESC, even if they are not coming out of one of
 | ||
| 	  the backslash-expansions
 | ||
| 
 | ||
| subst.c
 | ||
| 	- make_internal_declare: fixed memory leak; make_internal_declare should
 | ||
| 	  free the memory it allocates to construct the word list.  From Red
 | ||
| 	  Hat bug 1245233; https://bugzilla.redhat.com/show_bug.cgi?id=1245233
 | ||
| 
 | ||
| lib/readline/readline.c
 | ||
| 	- _rl_dispatch_subseq: when checking whether an ESC in vi insert mode
 | ||
| 	  should be treated as part of a key sequence or as a single char,
 | ||
| 	  make sure we are getting input from the keyboard before we check
 | ||
| 	  _rl_input_queued().  If we are getting input from a macro, this
 | ||
| 	  causes a needless delay.  Report from Carlos Pita
 | ||
| 	  <carlosjosepita@gmail.com>
 | ||
| 
 | ||
| 				   7/23
 | ||
| 				   ----
 | ||
| input.c
 | ||
| 	- save_bash_input: before checking to see whether or not a new fd has a
 | ||
| 	  stale associated buffer, make sure that the new fd is within bounds.
 | ||
| 	  Bug report and fix from Alexey Makhalov <makhaloff@gmail.com>
 | ||
| 
 | ||
| 
 | ||
| 				   7/24
 | ||
| 				   ----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- note that the `return' builtin accepts arguments beginning with `-'
 | ||
| 	  without requiring `--'
 | ||
| 
 | ||
| 				   7/27
 | ||
| 				   ----
 | ||
| examples/loadables/Makefile.in
 | ||
| 	- add variables and targets to support `make install'; installs
 | ||
| 	  supported builtins in $(libdir)/bash
 | ||
| 
 | ||
| 				   7/28
 | ||
| 				   ----
 | ||
| lib/readline/{readline,rlprivate}.h, lib/readline/display.c
 | ||
| 	- rearrange some structure members for better alignment and to reduce
 | ||
| 	  padding.  Fix from <git-dpa@aegee.org>
 | ||
| 
 | ||
| tests/run-*
 | ||
| 	- use BASH_TSTOUT instead of hardcoded /tmp/xx as output file
 | ||
| 
 | ||
| trap.[ch]
 | ||
| 	- maybe_set_error_trap: set a trap for the ERR trap if it is not already
 | ||
| 	  trapped; similar to maybe_set_debug_trap back from 4/10
 | ||
| 
 | ||
| lib/malloc/malloc.c
 | ||
| 	- internal_free: make sure `ubytes' is initialized if MALLOC_WATCH is
 | ||
| 	  defined and we'll be passing it to _malloc_ckwatch.  Report from
 | ||
| 	  Flavio Medeiros <flaviomotamederios@gmail.com>
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_function: use maybe_set_error_trap in the same way as
 | ||
| 	  maybe_set_debug_trap.  Fixes bug reported by David Waddell
 | ||
| 	  <David.Waddell@owmobility.com>
 | ||
| 
 | ||
| 				   7/29
 | ||
| 				   ----
 | ||
| jobs.c
 | ||
| 	- wait_for: no longer need to call job_signal_status when checking
 | ||
| 	  whether a comsub shell reaped a child that died due to SIGINT; code
 | ||
| 	  now uses child_caught_sigint
 | ||
| 
 | ||
| 				   7/30
 | ||
| 				   ----
 | ||
| builtins/exec.def
 | ||
| 	- exec_builtin: after call to restore_original_signals, need to call
 | ||
| 	  default_tty_job_signals to undo changes done by initialize_job_signals.
 | ||
| 	  Fix for problem reported by Andreas Schwab <schwab@suse.de>
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- clarify definition of metacharacter to explicitly include newline;
 | ||
| 	  prompted by report from George Gallo <georgeggallo@gmail.com>
 | ||
| 
 | ||
| 				    8/3
 | ||
| 				    ---
 | ||
| lib/readline/search.c
 | ||
| 	- _rl_free_history_entry: should be void, not int.  Report from
 | ||
| 	  Dilyan Palauzov <dilyan.palauzov@aegee.org>
 | ||
| 
 | ||
| general.h
 | ||
| 	- sh_load_func_t, sh_unload_func_t: new function pointer types, used by
 | ||
| 	  enable for load and unload hook functions
 | ||
| 
 | ||
| builtins/enable.def
 | ||
| 	- dyn_load_builtin: attempt to execute a function named
 | ||
| 	  BUILTIN_builtin_load, where BUILTIN is the name of the command being
 | ||
| 	  loaded.  If that function returns 0, the load fails
 | ||
| 	- dyn_unload_builtin: attempt to execute a function named
 | ||
| 	  BUILTIN_builtin_unload, where BUILTIN is the name of the command
 | ||
| 	  being unloaded.  It offers a dynamic builtin a way to clean up after
 | ||
| 	  itself.  Inspired by suggestion from Piotr Grzybowski
 | ||
| 	  <narsil.pl@gmail.com> in response to a bug report from isabella
 | ||
| 	  parakiss <izaberina@gmail.com>
 | ||
| 
 | ||
| 				    8/6
 | ||
| 				    ---
 | ||
| lib/readline/colors.[ch]
 | ||
| 	- _rl_print_color_indicator: now takes `const char *' argument
 | ||
| 
 | ||
| lib/readline/complete.c
 | ||
| 	- colored_stat_start: now takes `const char *' argument
 | ||
| 
 | ||
| lib/malloc/table.h
 | ||
| 	- ma_table_t: `file' member is now `const char *'
 | ||
| 
 | ||
| lib/malloc/table.c
 | ||
| 	- mlocation_register_alloc: make sure variable assigned to `file' in
 | ||
| 	  ma_table_t is of type `const char *'.  Fixes from Dilyan Palauzov
 | ||
| 	  <dilyan.palauzov@aegee.org>
 | ||
| 
 | ||
| lib/termcap/termcap.[ch]
 | ||
| 	- tputs: should return int instead of void
 | ||
| 
 | ||
| lib/readline/readline.h
 | ||
| 	- RL_STATE_DONE: correct value, avoid collision
 | ||
| 
 | ||
| lib/readline/vi_mode.c
 | ||
| 	- _rl_vi_redoing: now global, added _rl_ prefix to `vi_redoing'
 | ||
| 
 | ||
| lib/readline/readline.c
 | ||
| 	- _rl_subseq_result: call _rl_dispatch_subseq instead of rl_dispatch to
 | ||
| 	  avoid changing _rl_dispatching_keymap
 | ||
| 	- _rl_subseq_result: in the -2 case, set _rl_dispatching_keymap to the
 | ||
| 	  map passed as an argument.  Without this, vi mode doesn't call
 | ||
| 	  rl_vi_set_last when it should
 | ||
| 	- _rl_dispatch_subseq: if redoing a vi mode command with `.'
 | ||
| 	  (_rl_vi_redoing != 0) in callback mode and we're indirecting into
 | ||
| 	  another keymap that has shadowed the key corresponding to the command
 | ||
| 	  we are redoing, just call _rl_subseq_result immediately: vi redo
 | ||
| 	  doesn't need to read any additional input, and rl_vi_redo assumes
 | ||
| 	  that a single call to rl_dispatch is sufficient.  Fixes bug reported
 | ||
| 	  by Carlos Pita <carlosjosepita@gmail.com>
 | ||
| 
 | ||
| 				    8/7
 | ||
| 				    ---
 | ||
| subst.c
 | ||
| 	- parameter_brace_expand: if a substitution (parameter expansion) error
 | ||
| 	  occurs, and shell_compatibility_level is <= 43, return expansion error
 | ||
| 	  as in all previous versions.  If shell_compatibility_level is > 43,
 | ||
| 	  a posix-mode non-interactive shell will consider this a fatal error.
 | ||
| 	  Problem reported by Christian Neukirchen <chneukirchen@gmail.com>
 | ||
| 
 | ||
| doc/bashref.texi
 | ||
| 	- documented that word expansion errors cause fatal errors in posix mode
 | ||
| 	  non-interactive shells
 | ||
| 
 | ||
| 				    8/8
 | ||
| 				    ---
 | ||
| subst.h
 | ||
| 	- SD_COMPLETE: skip_to_delim being called as part of word completion
 | ||
| 	- SX_COMPLETE: one of the string_extract functions being called as
 | ||
| 	  part of word completion
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- find_cmd_start,find_cmd_end,find_cmd_name: call skip_to_delim with
 | ||
| 	  SD_COMPLETE flag
 | ||
| 
 | ||
| subst.c
 | ||
| 	- skip_double_quoted: takes new flags argument; changed callers
 | ||
| 	- skip_double_quoted: if flags argument includes SX_COMPLETE, pass it
 | ||
| 	  to extract_command_subst
 | ||
| 	- extract_command_subst: if flags&SX_COMPLETE, call
 | ||
| 	  extract_delimited_string instead of xparse_dolparen, since completion
 | ||
| 	  may call this for unterminated command substitutions.  Fixes
 | ||
| 	  (imperfectly) bug reported by Ingo Ruhnke <grumbel@gmail.com>
 | ||
| 	- skip_to_delim: if passed the SD_COMPLETE flag, pass the SX_COMPLETE
 | ||
| 	  flag to skip_double_quoted 
 | ||
| 	- char_is_quoted: pass SX_COMPLETE flag to skip_double_quoted
 | ||
| 	- unclosed_pair: pass SX_COMPLETE flag to skip_double_quoted
 | ||
| 
 | ||
| 				    8/9
 | ||
| 				    ---
 | ||
| execute_cmd.c
 | ||
| 	- time_command: catch longjmps to top_level and print command timing
 | ||
| 	  statistics even after a jump to top_level.  Fixes issue reported by
 | ||
| 	  Sam Watkins <sam@nipl.net>
 | ||
| 
 | ||
| 				   8/10
 | ||
| 				   ----
 | ||
| config-top.h
 | ||
| 	- OPENLOG_OPTS: if SYSLOG_HISTORY is defined, define to LOG_PID, so
 | ||
| 	  each message is tagged with the pid
 | ||
| 
 | ||
| bashhist.h
 | ||
| 	- bash_syslog_history: the first time it's called, call openlog with
 | ||
| 	  OPENLOG_OPTS and SYSLOG_FACILITY
 | ||
| 
 | ||
| 				   8/11
 | ||
| 				   ----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- GROUPS,FUNCNAME: change description to note that assignments are
 | ||
| 	  silently ignored, but do not return an error (which would constitute
 | ||
| 	  an assignment error and cause posix mode shells to abort).  Problem
 | ||
| 	  pointed out by Grzegorz Bajson <gbajson@gmail.com>
 | ||
| 
 | ||
| 				   8/12
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- parameter_brace_expand_indir: if the value of the indirectly expanded
 | ||
| 	  variable isn't something that the shell would expand if it were inside
 | ||
| 	  ${}, error out right away before calling parameter_brace_expand_word.
 | ||
| 	  Fixes problem reported by isabella parakiss <izaberina@gmail.com>
 | ||
| 	- parameter_brace_expand: handle returning &expand_wdesc_error or
 | ||
| 	  &expand_wdesc_fatal from parameter_brace_expand_indir in case it does
 | ||
| 	  that someday
 | ||
| 
 | ||
| 				   8/13
 | ||
| 				   ----
 | ||
| jobs.c
 | ||
| 	- {save,restore}_pipeline: saved_pipeline now a linked list of pipelines,
 | ||
| 	  new ones allocated in save_pipeline and freed in restore_pipeline.
 | ||
| 	  This allow multiple nested calls to save_pipeline (e.g., in traps
 | ||
| 	  and then in process substitution).  Fix for bug reported by isabella
 | ||
| 	  parakiss <izaberina@gmail.com>
 | ||
| 
 | ||
| print_cmd.c
 | ||
| 	- named_function_string: if printing a function with the same name as a
 | ||
| 	  reserved word, add the `function ' keyword before the name to avoid
 | ||
| 	  parsing problems when trying to reuse it as input.  Fix for bug
 | ||
| 	  reported by isabella parakiss <izaberina@gmail.com>
 | ||
| 
 | ||
| 				   8/14
 | ||
| 				   ----
 | ||
| lib/readline/text.c
 | ||
| 	- rl_insert: when optimizing typeahead, make sure we set rl_last_func
 | ||
| 	  ourselves if we set pending input, since the mainline code path
 | ||
| 	  won't set rl_last_func if input is pending.  Fixes bug reported by
 | ||
| 	  Hiroo Hayashi <hiroo.hayashi@computer.org>
 | ||
| 
 | ||
| 				   8/15
 | ||
| 				   ----
 | ||
| builtins/type.def
 | ||
| 	- describe_command: if using the short description (CDESC_SHORTDESC) in
 | ||
| 	  posix mode, describe posix special builtins as such.  Requested by
 | ||
| 	  Stephane Chazelas <stephane.chazelas@gmail.com>
 | ||
| 
 | ||
| builtins/enable.def
 | ||
| 	- BASH_LOADABLES_PATH: a colon-separated list of directories where bash
 | ||
| 	  looks for loadable builtins specified as arguments to `enable -f'
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- BASH_LOADABLES_PATH: document new shell variable
 | ||
| 
 | ||
| configure.ac,Makefile.in,builtins/Makefile.in
 | ||
| 	- loadablesdir: set in configure, substitute into Makefiles.  Reserved
 | ||
| 	  for future use
 | ||
| 
 | ||
| 				   8/18
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- shell_expand_word_list: if make_internal_declare fails, make sure to
 | ||
| 	  propagate that error return back and make the assignment statement
 | ||
| 	  fail. Fixes seg fault reported by Sergey Tselikh <stselikh@gmail.com>
 | ||
| 
 | ||
| 				   8/20
 | ||
| 				   ----
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: made a slight tweak to the warning message about
 | ||
| 	  quoted compound assignments by printing it only if the array (indexed
 | ||
| 	  or assoc) does not already exist
 | ||
| 
 | ||
| 				   8/21
 | ||
| 				   ----
 | ||
| braces.c
 | ||
| 	- mkseq: call strvec_dispose before throw_to_top_level if we saw SIGINT
 | ||
| 	  to avoid a memory leak
 | ||
| 
 | ||
| trap.c
 | ||
| 	- maybe_set_return_trap: set the RETURN trap to string if it's not
 | ||
| 	  already trapped, in the same way as the debug and error traps
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_function: use maybe_set_return_trap to allow functions to set
 | ||
| 	  return traps that persist across calls even if function tracing is
 | ||
| 	  enabled
 | ||
| 
 | ||
| lib/readline/input.c
 | ||
| 	- rl_gather_tyi: make sure errno reset to 0 after select call, for
 | ||
| 	  ioctl and read
 | ||
| 	- rl_gather_tyi: if read returns -1/EIO, return -1
 | ||
| 	- rl_read_key: if rl_gather_tyi returns -1/EIO, return READERR if in
 | ||
| 	  RL_STATE_READCMD (reading command in readline_internal_char), EOF
 | ||
| 	  if not (like rl_getc). Continue to return '\n' on other errors;
 | ||
| 	  rl_done = 1 in any case.  Fix for issue reported by
 | ||
| 	  Lubomir Rintel <lkundrak@v3.sk>
 | ||
| 
 | ||
| lib/readline/{misc,text,vi_mode}.c
 | ||
| 	- fix return values from rl_read_key to handle < 0
 | ||
| 
 | ||
| 				   8/22
 | ||
| 				   ----
 | ||
| 
 | ||
| parse.y
 | ||
| 	- parsing_redirection: macro that expands to true if the last read
 | ||
| 	  token (always passed as an argument) is a redirection token that
 | ||
| 	  will leave us reading a word that's the target of the redirection
 | ||
| 	- command_token_position: make sure that even if the parser state
 | ||
| 	  indicates we are reading a simple command (PST_REDIRLIST), we do
 | ||
| 	  not perform alias expansion on a WORD that is part of a redirection,
 | ||
| 	  using parsing_redirection() to do so.  Fixes but reported to Red Hat
 | ||
| 	  by Robert Alm Nilsson <rorialni@gmail.com>
 | ||
| 	  https://bugzilla.redhat.com/show_bug.cgi?id=795795
 | ||
| 
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: only print the warning now if the variable is not
 | ||
| 	  already an array or if we are not creating an array with -a or -A,
 | ||
| 	  cuts down the spurious warnings
 | ||
| 	- declare_internal: even if the rhs of the assignment looks like a
 | ||
| 	  compound array, if we're not assigning to an existing array or we're
 | ||
| 	  not creating an array, make it an array subscript assignment.  This
 | ||
| 	  means things like declare a[1]='(foo)' and a[1]='(foo)' behave
 | ||
| 	  identically
 | ||
| 
 | ||
| builtins/help.def
 | ||
| 	- wdispcolumn: change use of displen and add new dispchars variable to
 | ||
| 	  deal with locales where each wide character does not take up one
 | ||
| 	  column position.  Fix for bug reported by Mingye (Arthur) Wang
 | ||
| 	  <arthur200126@hotmail.com>
 | ||
| 
 | ||
| 				   8/23
 | ||
| 				   ----
 | ||
| sig.c
 | ||
| 	- sigint_sighandler: if we get a SIGINT while this_shell_builtin ==
 | ||
| 	  wait_builtin, perform the special handling only if wait_intr_flag
 | ||
| 	  is non-zero, don't just use it to set wait_sigint_received.  This
 | ||
| 	  makes sure we run bashline_set_event_hook.  Fixes bug reported by
 | ||
| 	  isabella parakiss <izaberina@gmail.com>
 | ||
| 
 | ||
| 				   8/25
 | ||
| 				   ----
 | ||
| subst.h
 | ||
| 	- SD_HISTEXP: new flag for skip_to_delim, indicates we are looking for
 | ||
| 	  the history expansion character (special double quote handling)
 | ||
| 	- skip_to_delim: handle SD_HISTEXP flag, changes double quote handling
 | ||
| 	  to be similar to history library: don't call skip_double_quote, make
 | ||
| 	  sure single quotes aren't special in double quotes, but continue to
 | ||
| 	  skip over $(), ${}, and other similar constructs
 | ||
| 
 | ||
| 				   8/27
 | ||
| 				   ----
 | ||
| support/bash.pc.in
 | ||
| 	- new file, pkgconfig template for bash, installed to support nascent
 | ||
| 	  loadable builtins dev environment
 | ||
| 
 | ||
| examples/loadables/Makefile.inc
 | ||
| 	- new file, example Makefile with correct definitions for loadable
 | ||
| 	  builtin development
 | ||
| 
 | ||
| configure.ac
 | ||
| 	- headersdir: directory where headers get installed to support loadable
 | ||
| 	  builtin development
 | ||
| 	- examples/loadables/Makefile.inc, support/bash.pc: create 
 | ||
| 
 | ||
| Makefile.in
 | ||
| 	- INSTALLED_HEADERS, INSTALLED_BUILTINS_HEADERS, INSTALLED_INCFILES,
 | ||
| 	  CREATED_HEADERS: new variables holding names of include files to
 | ||
| 	  install into $(headersdir) for loadable builtin development
 | ||
| 	- install-headers,install-headers-dirs: new targets to support
 | ||
| 	  installing headers into $(headersdir) and subdirectories for loadable
 | ||
| 	  builtin development
 | ||
| 	- uninstall-headers: target to uninistall headers in $(headersdir)
 | ||
| 	- uninstall: call uninstall-headers whether or not install-headers
 | ||
| 	  was done; add uninstall in examples/loadables
 | ||
| 	- install: add install in examples/loadables
 | ||
| 	- clean: add clean in examples/loadables
 | ||
| 
 | ||
| examples/loadables/Makefile.in
 | ||
| 	- install-supported, install-unsupported: new targets, make install
 | ||
| 	  chooses one based on $(SHOBJ_STATUS)
 | ||
| 	- install-supported: now cds to the top level build directory and
 | ||
| 	  installs the header files
 | ||
| 	- install-supported: now installs Makefile.inc to $(loadablesdir) as
 | ||
| 	  an example
 | ||
| 	- uninstall-supported,uninistall-unsupported: uninstall targets,
 | ||
| 	  make uninstall chooses one based on $(SHOBJ_STATUS)
 | ||
| 
 | ||
| 				   8/31
 | ||
| 				   ----
 | ||
| lib/glob/Makefile.in
 | ||
| 	- CPPFLAGS: move after ${INCLUDES} so library-specific include paths
 | ||
| 	  take precedence.  This is what the other parts of the shell do.
 | ||
| 	  Report from Poor Yorick <org.gnu.lists.bug-bash@pooryorick.com>
 | ||
| 
 | ||
| builtins/read.def
 | ||
| 	- reset_alarm: cancel alarm before restoring signal handler to avoid
 | ||
| 	  possible race condition.  Report and fix from Oleg Popov
 | ||
| 	  <dev-random@mail.ru>
 | ||
| 
 | ||
| subst.c
 | ||
| 	- string_extract_verbatim: if SEPARATORS is "'", don't short-circuit
 | ||
| 	  to string_extract_single_quoted unless the SX_NOCTLESC flag is set.
 | ||
| 	  Callers expect this function to honor CTLESC, even to quote a single
 | ||
| 	  quote.  Fixes bug reported by isabella parakiss <izaberina@gmail.com>
 | ||
| 	  and several others
 | ||
| 
 | ||
| 				    9/2
 | ||
| 				    ---
 | ||
| include/chartypes.h
 | ||
| 	- TOCTRL: handle '?' by special-casing it to 0x7f.  Fixes a problem
 | ||
| 	  with $'\c?' reported by Helmut Karlowski <helmut.karlowski@ish.de>
 | ||
| 
 | ||
| redir.c
 | ||
| 	- write_here_string: don't word-split the here string document.  The
 | ||
| 	  bash documentation has always said this doesn't happen, even though
 | ||
| 	  bash has done so for years, and other shells that implement here-
 | ||
| 	  strings don't perform any word splitting.  The practical effect is
 | ||
| 	  that sequences of IFS characters are collapsed to spaces.  Fixes
 | ||
| 	  bug reported by Clint Hepner <clint.hepner@gmail.com>
 | ||
| 
 | ||
| 				    9/3
 | ||
| 				    ---
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- add \? to the list of backslash escapes expanded by $'...' ANSI-C
 | ||
| 	  quoting.  It was expanded but not documented
 | ||
| 
 | ||
| lib/readline/util.c
 | ||
| 	- _rl_audit_tty: updated from Red Hat patch
 | ||
| 
 | ||
| lib/readline/readline.c
 | ||
| 	- HAVE_DECL_AUDIT_USER_TTY: correct #define check
 | ||
| 
 | ||
| 				   9/13
 | ||
| 				   ----
 | ||
| shell.c
 | ||
| 	- read_from_stdin: make sure value set to 1 appropriately if the shell
 | ||
| 	  is reading from standard input, as Posix seems to specify (?)
 | ||
| 
 | ||
| lib/readline/kill.c
 | ||
| 	- _rl_copy_to_kill_ring: don't assume that rl_kill_ring has been
 | ||
| 	  allocated if _rl_last_command_was_kill is non-zero; make sure it's
 | ||
| 	  non-null before indexing into it
 | ||
| 
 | ||
| 				   9/15
 | ||
| 				   ----
 | ||
| variables.c
 | ||
| 	- initialize_shell_variables: cope with a NULL env pointer.  Fixes bug
 | ||
| 	  reported by ziyunfei <446240525@qq.com>
 | ||
| 
 | ||
| 				   9/16
 | ||
| 				   ----
 | ||
| builtins/exec.def
 | ||
| 	- exec_builtin: if -c is supplied, pass an empty array instead of a NULL
 | ||
| 	  pointer to shell_execve
 | ||
| 
 | ||
| variables.c
 | ||
| 	- set_pwd: only believe $PWD if it begins with a slash; try to
 | ||
| 	  canonicalize it and set it to physical path if canonicalization fails.
 | ||
| 	  Reported by ziyunfei <446240525@qq.com>
 | ||
| 
 | ||
| 				   9/17
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- do_compound_assignment: make sure to dispose of word list generated
 | ||
| 	  by expand_compound_array_assignment; fixes memory leak reported in
 | ||
| 	  https://bugzilla.redhat.com/show_bug.cgi?id=1264101
 | ||
| 
 | ||
| variables.c
 | ||
| 	- adjust_shell_level: clamp the value of shell_level at 1000 and reset
 | ||
| 	  there, instead of > 1000, since the itos replacement code doesn't
 | ||
| 	  handle the value 1000.  Fixes bug reported by ziyunfei
 | ||
| 	  <446240525@qq.com>
 | ||
| 
 | ||
| shell.h,parse.y
 | ||
| 	- save_parser_state,restore_parser_state: now save and restore
 | ||
| 	  redir_stack, short-circuiting if need_here_doc == 0.  If we save a
 | ||
| 	  non-zero value for need_here_doc, we have to make sure there is
 | ||
| 	  something valid for gather_here_documents to work on.  Fixes bug
 | ||
| 	  reported by Brian Carpenter <brian.carpenter@gmail.com>
 | ||
| 
 | ||
| 				   9/18
 | ||
| 				   ----
 | ||
| array.c
 | ||
| 	- array_to_assign: use ansic_shouldquote to check whether each element
 | ||
| 	  value contains non-printable characters and use ansic_quote to
 | ||
| 	  generate the value instead of using sh_double_quote unconditionally
 | ||
| 
 | ||
| assoc.c
 | ||
| 	- assoc_to_assign: if either the key or the value of an associative
 | ||
| 	  array element contains non-printable characters (ansic_shouldquote
 | ||
| 	  returns true), use ansic_quote to quote them instead of using double
 | ||
| 	  quotes unconditionally
 | ||
| 
 | ||
| 				   9/19
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- pat_subst: handle REP being NULL.  Fixes bug reported by Brian
 | ||
| 	  Carpenter <brian.carpenter@gmail.com>
 | ||
| 
 | ||
| builtins/evalstring.c
 | ||
| 	- parse_string: if we get a longjmp to top_level with DISCARD as the
 | ||
| 	  code (in which case we are going to go on), return -DISCARD to our
 | ||
| 	  caller (always xparse_dolparen) after doing our own cleanup instead
 | ||
| 	  of calling jump_to_top_level
 | ||
| 
 | ||
| parse.y
 | ||
| 	- xparse_dolparen: if parse_string returns < 0, do the appropriate
 | ||
| 	  cleanup and then jump_to_top_level with the negative of the return
 | ||
| 	  value.  This allows us to do the appropriate parser cleanup in
 | ||
| 	  case we're not going to exit the shell.  Fixes bug reported by Brian
 | ||
| 	  Carpenter <brian.carpenter@gmail.com>
 | ||
| 
 | ||
| subst.c
 | ||
| 	- extract_delimited_string: if a recursive call to one of the extract_
 | ||
| 	  functions or a call to ADVANCE_CHAR leaves i past the end of the
 | ||
| 	  string, cut the loop off at the end of the string.  Fixes bug
 | ||
| 	  reported by Brian Carpenter <brian.carpenter@gmail.com>
 | ||
| 
 | ||
| 				   9/20
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- get_var_and_type: return appropriate values if variable indirection
 | ||
| 	  results in a NULL variable.  Fixes bug reported by Brian Carpenter
 | ||
| 	  <brian.carpenter@gmail.com>
 | ||
| 
 | ||
| lib/readline/history.c
 | ||
| 	- history_get_time: handle strtol overflows caused by malicious
 | ||
| 	  modifications to timestamps in the history file.  Fixes issue
 | ||
| 	  reported by rens@endoria.net
 | ||
| 
 | ||
| 				   9/21
 | ||
| 				   ----
 | ||
| lib/readline/rlconf.h
 | ||
| 	- ENABLE_AUDIT_TTY_SUPPORT: now undefined (off) by default
 | ||
| 
 | ||
| 				   9/24
 | ||
| 				   ----
 | ||
| jobs.c
 | ||
| 	- waitchld: if we get a SIGINT while waiting for a child to exit, but
 | ||
| 	  the kernel doesn't interrupt the waitpid(2) call, assume the child
 | ||
| 	  caught SIGINT if it exited for some reason other than SIGINT.  Fix
 | ||
| 	  suggested by Stephane Chazelas <stephane.chazelas@gmail.com>
 | ||
| 
 | ||
| input.c
 | ||
| 	- make_buffered_stream: use B_TEXT in buffered stream flags instead
 | ||
| 	  of (typo) O_TEXT.  Report and fix from Eric Blake <eblake@redhat.com>
 | ||
| 
 | ||
| 				   9/27
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- shell_execve: call reset_parser before calling initialize_subshell,
 | ||
| 	  which calls delete_all_aliases.  reset_parser wants to free the
 | ||
| 	  pushed string list, which has pointers back into the alias table
 | ||
| 	  (use after free)
 | ||
| 	- execute_simple_command: if we fork for an async command, make sure
 | ||
| 	  the child process increments shell_level before performing any
 | ||
| 	  word expansions, so $BASH_SUBSHELL is incremented.  Fixes issue
 | ||
| 	  reported by ziyunfei <446240525@qq.com>
 | ||
| 
 | ||
| 				   10/1
 | ||
| 				   ----
 | ||
| builtins/kill.def
 | ||
| 	- kill_builtin: make -L equivalent to -l for compatibility with other
 | ||
| 	  (Linux) versions of kill
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- kill: document new `-L' option
 | ||
| 
 | ||
| 				   10/2
 | ||
| 				   ----
 | ||
| [bash-4.4-beta frozen]
 | ||
| 
 | ||
| 				   10/5
 | ||
| 				   ----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- LC_TIME: document that the shell recognizes it and calls setlocale
 | ||
| 	  when it changes; and that the shell uses it for time formatting
 | ||
| 
 | ||
| 				   10/6
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- skip_single_quoted: now takes an additional `flags' argument, like
 | ||
| 	  skip_double_quoted; changed callers
 | ||
| 	- skip_single_quoted: now pays attention to SX_COMPLETE flag, allows
 | ||
| 	  backslash to escape single quote, like $'...' allows
 | ||
| 	- skip_to_delim: added case where we are completing and we are
 | ||
| 	  skipping over a $'...' string to call skip_single_quoted with
 | ||
| 	  SX_COMPLETE flag to allow backslash to quote single quote.  Fixes
 | ||
| 	  bug reported by Daniel Colascione <dancol@dancol.org>
 | ||
| 	- char_is_quoted: make analogous changes to handle $'...' so we can
 | ||
| 	  accommodate $'ab \' cd'
 | ||
| 
 | ||
| 				   10/11
 | ||
| 				   -----
 | ||
| subst.c,bashjmp.h
 | ||
| 	- no_longjmp_on_fatal_error: now global so other parts of the shell can
 | ||
| 	  use it
 | ||
| 
 | ||
| arrayfunc.c
 | ||
| 	- expand_array_index: if no_longjmp_on_fatal_error is non-zero, don't
 | ||
| 	  longjmp to top_level, just return 0.  Fixes bug reported by
 | ||
| 	  isabella parakiss <izaberina@gmail.com>
 | ||
| 
 | ||
| subst.c
 | ||
| 	- CQ_RETURN: restore old value of no_longjmp_on_fatal_error (oldjmp);
 | ||
| 	  make sure all callers (skip_matched_pair, skip_to_delim,
 | ||
| 	  char_is_quoted) save no_longjmp_on_fatal_error to oldjmp before
 | ||
| 	  setting it to 1
 | ||
| 
 | ||
| expr.c
 | ||
| 	- expr_streval: if longjmping after an unbound variable error, jump
 | ||
| 	  back to expr toplevel (evalbuf) if no_longjmp_on_fatal_error is set
 | ||
| 	  in an interactive shell
 | ||
| 
 | ||
| variables.c
 | ||
| 	- push_func_var: if pushing an array variable, such as when a variable
 | ||
| 	  in the temporary environment is promoted to an array by mapfile when
 | ||
| 	  the shell is in posix mode (so variable assignments preceding special
 | ||
| 	  builtins or shell functions persist in the shell environment after
 | ||
| 	  the builtin returns), make sure to copy the array or hash table so
 | ||
| 	  the variable is duplicated correctly.  Fixes seg fault reported by
 | ||
| 	  Linda Walsh <bash@tlinx.org>
 | ||
| 
 | ||
| 				   10/13
 | ||
| 				   -----
 | ||
| variables.c
 | ||
| 	- initialize_shell_variables: add call to sv_shcompat, so BASH_COMPAT
 | ||
| 	  can be set in the initial environment
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_function: set loop_level to 0 only if shell_compatibility_level
 | ||
| 	  is greater than bash-4.3; this was kind of an incompatible change.
 | ||
| 	  Report from Carlos Pita <carolosjosepita@gmail.com>
 | ||
| 
 | ||
| COMPAT,doc/{bash.1,bashref.texi}
 | ||
| 	- compat43: added loop_level changes to description
 | ||
| 
 | ||
| 				   10/15
 | ||
| 				   -----
 | ||
| lib/sh/casemod.c,lib/readline/display.c
 | ||
| 	- make sure mb_cur_max variable is defined outside of HANDLE_MULTIBYTE
 | ||
| 	  if it's used outside HANDLE_MULTIBYTE.  Fixes from Greg Wooledge
 | ||
| 	  <wooledg@eeg.ccf.org>
 | ||
| 
 | ||
| support/Makefile.in
 | ||
| 	- bash.pc: remove as part of distclean, not clean.  Report from Andreas
 | ||
| 	  Schwab <schwab@linux-m68k.org>
 | ||
| 
 | ||
| 				   10/17
 | ||
| 				   -----
 | ||
| subst.c
 | ||
| 	- array_var_assignment: make sure to call quote_string or quote_escapes
 | ||
| 	  on the assignment string, so spaces in the assignment survive word
 | ||
| 	  splitting.  Fixes bug reported by isabella parakiss
 | ||
| 	  <izaberina@gmail.com>
 | ||
| 
 | ||
| 				   10/20
 | ||
| 				   -----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- word splitting: make sure that newline is listed as one of the IFS
 | ||
| 	  whitespace characters.  Fixes omission reported by ziyunfei
 | ||
| 	  <446240525@qq.com>
 | ||
| 
 | ||
| lib/readline/histfile.c
 | ||
| 	- history_do_write: make sure that we only create and use the tempfile
 | ||
| 	  if the history file exists and is a regular file.  Reported several
 | ||
| 	  times, most recent check the result of a report from
 | ||
| 	  <marko.teiste@gmail.com>
 | ||
| 
 | ||
| 				   10/22
 | ||
| 				   -----
 | ||
| jobs.c
 | ||
| 	- delete_all_jobs: if running_only == 0, we are eventually going to
 | ||
| 	  clear the bgpids list, so don't bother to add pids to it in
 | ||
| 	  delete_job (call with DEL_NOBGPID flag if running_only == 0)
 | ||
| 
 | ||
| 				   10/24
 | ||
| 				   -----
 | ||
| jobs.[ch]
 | ||
| 	- bgpids: new implementation from a patch from John Fremlin
 | ||
| 	  <john@fb.com>, uses an array for the list of the last CHILD_MAX
 | ||
| 	  terminated background pids, and a separate hash table to search it.
 | ||
| 	  The storage can be freed as a unit, and the size of the hash table
 | ||
| 	  (currently 4096) is independent of the size of the bgpids table
 | ||
| 
 | ||
| subst.c
 | ||
| 	- inherit_errexit: new variable to control whether or not command
 | ||
| 	  substitution inherits the -e (errexit) option.  Disabled by default
 | ||
| 
 | ||
| general.c
 | ||
| 	- posix_initialize: set inherit_errexit = 1 when Posix mode is enabled
 | ||
| 
 | ||
| builtins/shopt.def
 | ||
| 	- inherit_errexit: new shell option, tracks value of inherit_errexit,
 | ||
| 	  allows command substitution to inherit the setting of errexit without
 | ||
| 	  posix mode.  From a request and patch submitted by Christoph Gysin
 | ||
| 	  <christoph.gysin@gmail.com>
 | ||
| 
 | ||
| {version,version2}.c
 | ||
| 	- use #if HAVE_SNPRINTF instead of #if defined in case configure
 | ||
| 	  decides to #define it to 0.  Fixes problem reported by Klaus Ziegler
 | ||
| 	  <klausz@haus-gisela.de>
 | ||
| 
 | ||
| configure.ac
 | ||
| 	- when checking for sys/resource.h, make sure to include <sys/time.h>
 | ||
| 	  for the benefit of both old systems that require it and new versions
 | ||
|  	  of autoconf that require a header file to compile to report its
 | ||
| 	  presence.  Reported by Klaus Ziegler <klausz@haus-gisela.de>
 | ||
| 
 | ||
| 				   10/26
 | ||
| 				   -----
 | ||
| subst.h
 | ||
| 	- SD_ARITHEXP: new flag value for skip_to_delim, supports parsing
 | ||
| 	  arithmetic expressions in parameter expansions
 | ||
| 
 | ||
| subst.c
 | ||
| 	- skip_to_delim: handle SD_ARITHEXP flag by skipping parentheses for
 | ||
| 	  subexpressions and allowing ?: expression to not terminate an
 | ||
| 	  arithmetic expression delimited by `:'
 | ||
| 	- skiparith: just call skip_to_delim with the SD_ARITHEXP option and
 | ||
| 	  the right delimiter string and return the right result.  Fixes bug
 | ||
| 	  reported by <grishalevit@gmail.com>
 | ||
| 
 | ||
| include/shmbchar.h
 | ||
| 	- strip out everything except what is needed to support is_basic and
 | ||
| 	  similar functions, since the mbchar_t typedef apparently conflicts
 | ||
| 	  with some AIX-specific type definition.  Problem reported by
 | ||
| 	  Michael Felt <aixtools@gmail.com>
 | ||
| 
 | ||
| 				   10/27
 | ||
| 				   -----
 | ||
| builtins/{set,ulimit}.def
 | ||
| 	- {set,ulimit}_builtin: make sure that --help is treated the same as
 | ||
| 	  -? and prints a message and returns.  Fixes bug reported by ziyunfei
 | ||
| 	  <446240525@qq.com>
 | ||
| 
 | ||
| builtins/*.def
 | ||
| 	- make sure to consistently use builtin_help() instead of mix of that
 | ||
| 	  function and builtin_usage()
 | ||
| 
 | ||
| 				   10/29
 | ||
| 				   -----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- BASH_CMDS, BASH_ALIASES: note that removing elements from these
 | ||
| 	  array variables is not currently reflected in the command hash
 | ||
| 	  table and alias list, respectively.  Reported by isabella parakiss
 | ||
| 	  <izaberina@gmail.com>
 | ||
| 
 | ||
| 				   10/30
 | ||
| 				   -----
 | ||
| eval.c
 | ||
| 	- reader_loop: if PS0 is set in an interactive shell, expand and
 | ||
| 	  display it after reading a (complete) command but before executing
 | ||
| 	  it.  This differs from the DEBUG trap because the DEBUG trap is
 | ||
| 	  executed once for each simple command (and some others, like each
 | ||
| 	  time through a for loop).  From a patch submitted by Dan Stromberg
 | ||
| 	  <dstromberglists@gmail.com>
 | ||
| 
 | ||
| parse.y
 | ||
| 	- prompt_again: set ps0_prompt from $PS0 in an interactive shell
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- PS0: document new prompt string
 | ||
| 
 | ||
| 				   11/3
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- cond_expand_node: if special > 0, remove quoted nulls from the word
 | ||
| 	  list, since no word splitting takes place.  Fixes bug reported by
 | ||
| 	  Corentin Peuvrel <cpeuvrel@pom-monitoring.com>
 | ||
| 
 | ||
| 				   11/4
 | ||
| 				   ----
 | ||
| doc/{bash.1,builtins.texi}
 | ||
| 	- inherit_errexit: add to shopt description; modify Posix mode
 | ||
| 	  description
 | ||
| 
 | ||
| 				   11/9
 | ||
| 				   ----
 | ||
| lib/readline/util.c
 | ||
| 	- rl_tilde_expand: fix out-of-bounds read caused when this function
 | ||
| 	  is invoked with rl_point == 0.  Bug reported by Hanno Böck
 | ||
| 	  <hanno@hboeck.de>
 | ||
| 
 | ||
| 				   11/11
 | ||
| 				   -----
 | ||
| {nojobs,jobs}.c
 | ||
| 	- get_original_tty_job_signals: force the original signal disposition
 | ||
| 	  for SIGTSTP/SIGTTIN/SIGTTOU to SIG_DFL in interactive shells.  This
 | ||
| 	  will force child processes to get SIG_DFL even if the shell is
 | ||
| 	  started with those signals ignored.  From a bug report from
 | ||
| 	  Keith Thompson <keithsthompson@gmail.com>
 | ||
| 
 | ||
| 				   11/13
 | ||
| 				   -----
 | ||
| make_cmd.c
 | ||
| 	- make_function_def: if a function is being defined without a source
 | ||
| 	  file, and the shell has not been initialized, assume that the
 | ||
| 	  function is being imported from the environment and set the
 | ||
| 	  source_file struct member to "environment".  Set to "main" if the
 | ||
| 	  shell has been initialized.  Fixes bug reported on savannah by
 | ||
| 	  Arno-Can Uestuensoez
 | ||
| 	  https://savannah.gnu.org/support/index.php?108903
 | ||
| 
 | ||
| subst.c
 | ||
| 	- skip_to_delim: if the shell is in posix mode (posixly_correct != 0)
 | ||
| 	  and performing history expansion ((flags & SD_HISTEXP) != 0), allow
 | ||
| 	  double quotes to quote the history expansion character.  TENTATIVE
 | ||
| 	  CHANGE, inspired by
 | ||
| 	  https://savannah.gnu.org/support/index.php?108491
 | ||
| 
 | ||
| 				   11/14
 | ||
| 				   -----
 | ||
| jobs.c
 | ||
| 	- wait_for: modify change from 4/23 to only give the terminal to
 | ||
| 	  shell_pgrp if not running in the background and subshell_environment
 | ||
| 	  indicates we're not in a pipeline and not an async command.  Fixes
 | ||
| 	  bug reported by konsolebox <konsolebox@gmail.com>
 | ||
| 
 | ||
| 				   11/16
 | ||
| 				   -----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- document new posix-mode behavior of not giving ! special meaning
 | ||
| 	  within double quotes, even if histexpand is enabled
 | ||
| 
 | ||
| 				   11/17
 | ||
| 				   -----
 | ||
| builtins/evalfile.c
 | ||
| 	- fc_execute_file: pass FEVAL_BUILTIN flag to _evalfile so it returns
 | ||
| 	  the value of parse_and_execute after executing the commands in the
 | ||
| 	  file.  Fixes bug reported by Chris Marusich <cmmarusich@gmail.com>
 | ||
| 
 | ||
| 				   11/20
 | ||
| 				   -----
 | ||
| subst.c
 | ||
| 	- process_substitute: don't unconditionally set pipeline_pgrp to
 | ||
| 	  shell_pgrp; do that only if pipeline_pgrp == 0 (we haven't forked
 | ||
| 	  yet) or if we know we haven't forked for a command, a pipeline,
 | ||
| 	  or an async command.  Fixes bug reported by
 | ||
| 	  <gnu.20.drkshadow@spamgourmet.com>
 | ||
| 	  as https://savannah.gnu.org/support/index.php?108593
 | ||
| 
 | ||
| 				   11/24
 | ||
| 				   -----
 | ||
| variables.c
 | ||
| 	- set_pwd: inherit the value of OLDPWD from the initial environment
 | ||
| 	  if it names a directory.  From a report from John Wiersba
 | ||
| 	  <jrw32982@yahoo.com>
 | ||
| 
 | ||
| builtins/set.def
 | ||
| 	- -T: fix help text to note that the DEBUG and RETURN traps are both
 | ||
| 	  inherited if this is set.  Report from Grisha Levin
 | ||
| 	  <grishalevit@gmail.com>
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- HISTIGNORE,GLOBIGNORE: note that the pattern matching is subject to
 | ||
| 	  the setting of the `extglob' variable.  Clarification raised by
 | ||
| 	  Aharon Robbins <arnold@skeeve.com>
 | ||
| 
 | ||
| builtins/jobs.def,doc/{bash.1,bashref.texi}
 | ||
| 	- disown: add text to synopsis making it clear that disown takes a
 | ||
| 	  pid argument.  From a report from Matthew Stanfield
 | ||
| 	  <matthew@i-dig.info>
 | ||
| 
 | ||
| findcmd.c,doc/{bash.1,bashref.texi}
 | ||
| 	- EXECIGNORE: change pattern matching to use FNMATCH_EXTFLAG like other
 | ||
| 	  IGNORE variables.  From a report from Aharon Robbins <arnold@skeeve.com>
 | ||
| 
 | ||
| trap.c
 | ||
| 	- _run_trap_internal: make sure to catch and use return values supplied
 | ||
| 	  as arguments to `return'; instead of just catching return, make sure
 | ||
| 	  we use return_catch_value as well.  Fixes bug reported by
 | ||
| 	  Grisha Levit <grishalevit@gmail.com>, affects RETURN, DEBUG, ERROR
 | ||
| 	  traps
 | ||
| 
 | ||
| 				   11/30
 | ||
| 				   -----
 | ||
| lib/readline/display.c
 | ||
| 	- rl_redisplay: fix code that deals with prompts that contain
 | ||
| 	  multibyte characters whose physical length is longer than the screen
 | ||
| 	  width (so the prompt line wraps) to deal with invisible characters
 | ||
| 	  in the prompt and set the inv_lbreaks offsets correctly and set
 | ||
| 	  lpos appropriately
 | ||
| 	- _rl_move_cursor_relative: always called with either visible line or
 | ||
| 	  invisible line. Decide whether we are being called with the invisible
 | ||
| 	  line (or a portion thereof) as the DATA argument; make sure to account
 | ||
| 	  for invisible characters in the last line of the prompt by offsetting
 | ||
| 	  the desired buffer offset (NEW) by where DATA starts in invisible line
 | ||
| 	  and checking whether that is past the last invisible character in
 | ||
| 	  the prompt
 | ||
| 	- _rl_move_cursor_relative: do the same for the visible line by using
 | ||
| 	  the visible line lbreaks array instead of _rl_screenwidth, since
 | ||
| 	  that fails in the presence of multibyte characters (buffer offset
 | ||
| 	  vs. physical screen position).  These fix bug with prompts with
 | ||
| 	  multibyte characters and invisible characters that are longer than
 | ||
| 	  the screen width reported by Ryo Furue <ryofurue@gmail.com>
 | ||
| 
 | ||
| 				   12/1
 | ||
| 				   ----
 | ||
| parse.y,make_cmd.c
 | ||
| 	- here_doc_first_line: new variable, set to non-zero to indicate the
 | ||
| 	  first line of possibly multiple here documents associated with the
 | ||
| 	  current command.  Set in parse.y:gather_here_documents() before
 | ||
| 	  reading any here documents, set to 0 after reading the first line
 | ||
| 	  of any here document in make_cmd.c:make_here_document().
 | ||
| 
 | ||
| parse.y
 | ||
| 	- history_delimiting_chars: if parser_state indicates we are reading
 | ||
| 	  a here document, don't use current_command_line_count to see whether
 | ||
| 	  or not we're on the first line of a here document -- it can be fooled
 | ||
| 	  by multi-line commands (or even backslash-escaped newlines).  Use
 | ||
| 	  here_doc_first_line to check that directly.  Fixes bug reported by
 | ||
| 	  Geoffrey Allott <geoffrey@allott.email>
 | ||
| 
 | ||
| shell.h,parse.y
 | ||
| 	- save and restore here_doc_first_line as part of the shell's parser
 | ||
| 	  state
 | ||
| 
 | ||
| lib/sh/tmpfile.c
 | ||
| 	- use ANSI-C rand() interface if random() not available.  Fixes problem
 | ||
| 	  with linking on (ancient) Solaris 2.4 reported by Klaus Ziegler
 | ||
| 	  <klausz@haus-gisela.de>
 | ||
| 
 | ||
| 				   12/2
 | ||
| 				   ----
 | ||
| aclocal.m4
 | ||
| 	- RL_LIB_READLINE_VERSION: if cross-compiling, assume current version
 | ||
| 	  of readline if cross-compiling bash while using an external readline
 | ||
| 	  library.  Fix from Barry Davis <barry_davis@stormagic.com>
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_builtin: save and restore value of builtin_ignoring_errexit
 | ||
| 	  instead of assuming we can set it back to 0 -- the ignore-errexit
 | ||
| 	  cases might be nested
 | ||
| 	- execute_builtin: after a builtin executes and eval_unwind is set,
 | ||
| 	  set exit_immediately_on_error to 0 if builtin_ignoring_errexit is
 | ||
| 	  set, and back to the value of errexit otherwise, just like the
 | ||
| 	  code that sets -e does.  Fixes short-circuiting bug reported by
 | ||
| 	  Marcin Swigon <swigon.mar@gmail.com>
 | ||
| 
 | ||
| 				   12/5
 | ||
| 				   ----
 | ||
| builtins/setattr.def
 | ||
| 	- set_or_show_attributes: instead of using a fixed string for the
 | ||
| 	  options argument to `declare', which results in export adding the
 | ||
| 	  readonly attribute, build the option string dynamically like in
 | ||
| 	  subst.c:shell_expand_word_list()
 | ||
| 	- set_or_show_attributes: don't add the -r option to declare if the
 | ||
| 	  attribute passed as an argument doesn't include att_readonly; add
 | ||
| 	  -x if the attribute includes att_exported
 | ||
| 	- set_or_show_attributes: add the -g option to declare so readonly
 | ||
| 	  and export in functions that go through this code path don't create
 | ||
| 	  local variables.  Part of fix for bug reported by ziyunfei
 | ||
| 	  <446240525@qq.com>
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- make_internal_declare: if we have an assignment builtin that isn't
 | ||
| 	  supposed to create local variables (export/readonly), make sure to
 | ||
| 	  add the W_ASSNGLOBAL flag to each assignment statement word.
 | ||
| 	  Part of fix for bug reported by ziyunfei <446240525@qq.com> where
 | ||
| 	  readonly can create local variables when invoked with a compound
 | ||
| 	  array assignment as an argument within a shell function
 | ||
| 
 | ||
| subst.c
 | ||
| 	- make_internal_declare: added third argument: command name.  Not used
 | ||
| 	  in any useful way yet
 | ||
| 	- do_compound_assignment: handle attempted assignments to readonly
 | ||
| 	  variables and print error messages, like bind_variable does and the
 | ||
| 	  callers expect. This means that assignments to readonly array
 | ||
| 	  variables can't go through a code path that allows them to fail
 | ||
| 	  silently
 | ||
| 
 | ||
| doc/Makefile.in
 | ||
| 	- uninstall: run install-info --delete after removing the installed
 | ||
| 	  info file to update the directory file
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_disk_command: since we still (and have always) perform
 | ||
| 	  redirections in child processes, we need to mark that state so
 | ||
| 	  we know that we're in a child process.  subshell_performing_redirections
 | ||
| 	  is the new variable; non-zero when executing do_redirections()
 | ||
| 
 | ||
| subst.c
 | ||
| 	- process_substitute: if we are executing process substitution in a
 | ||
| 	  redirection expansion context (expanding_redir == 1), the child
 | ||
| 	  process should not have access to any temporary environment the
 | ||
| 	  parent has.  Call flush_tempenv() in the child process to get rid
 | ||
| 	  of it.  Fix for bug reported by Clint Hepner <clint.hepner@gmail.com>
 | ||
| 
 | ||
| 				   12/9
 | ||
| 				   ----
 | ||
| jobs.c
 | ||
| 	- waitchld: if in posix mode and attempting to let SIGCHLD interrupt the
 | ||
| 	  wait builtin, make sure wait_intr_flag is non-zero before trying to
 | ||
| 	  longjmp to wait_intr_buf.  Fixes bug reported by Aharon Robbins
 | ||
| 	  <arnold@skeeve.com>
 | ||
| 
 | ||
| 				   12/10
 | ||
| 				   -----
 | ||
| lib/readline/display.c
 | ||
| 	- update_line: if a prompt containing invisible characters changes,
 | ||
| 	  and the change is within the prompt string, we need to redraw the
 | ||
| 	  entire prompt.  After that redraw, if the cursor position is after
 | ||
| 	  the first index where the old and new lines differ, we can short-
 | ||
| 	  circuit the update if the line length stays the same
 | ||
| 	- update_line: if we redraw the entire prompt string because the prompt
 | ||
| 	  contains invisible characters and the first difference is in the
 | ||
| 	  middle of the prompt, we possibly need to adjust our idea of the
 | ||
| 	  first differing character in the old and new lines.  We punt and do
 | ||
| 	  a dumb update in this case.  Fixes bug with dynamic vi-mode mode
 | ||
| 	  strings containing invisible characters reported by Dylan Cali
 | ||
| 	  <calid1984@gmail.com>
 | ||
| 
 | ||
| 				   12/11
 | ||
| 				   -----
 | ||
| lib/readline/display.c
 | ||
| 	- update_line: if we move up to a new screen line, we need to recompute
 | ||
| 	  the number of invisible characters on the new current line
 | ||
| 	  (visible_wrap_offset).  Fixes bug reported to bug-readline by
 | ||
| 	  Per Bothner <per@bothner.com>
 | ||
| 	- update_line: update code that attempts to compute where we are in
 | ||
| 	  the new line buffer.  Fixes `vt100' bug reported to bug-readline by
 | ||
| 	  Per Bothner <per@bothner.com>
 | ||
| 
 | ||
| 				   12/18
 | ||
| 				   -----
 | ||
| execute_cmd.c
 | ||
| 	- execute_function: unwind-protect and restore BASH_ARGC and BASH_ARGV
 | ||
| 	- restore_funcarray_state: now global
 | ||
| 
 | ||
| execute_cmd.h
 | ||
| 	- make func_array_state type global, add extern function declaration
 | ||
| 	  for restore_funcarray_state
 | ||
| 
 | ||
| builtins/evalfile.c
 | ||
| 	- _evalfile: use restore_funcarray_state and pop_args as unwind-protects
 | ||
| 	  to restore BASH_{SOURCE,LINENO,ARGC,ARGV} and FUNCNAME on interrupts.
 | ||
| 	  Fixes bug reported back on 11/10 by Grisha Levit
 | ||
| 	  <grishalevit@gmail.com>
 | ||
| 
 | ||
| 				   12/20
 | ||
| 				   -----
 | ||
| lib/readline/isearch.c
 | ||
| 	- _rl_isearch_dispatch: after removing the only character from the
 | ||
| 	  search string with DEL, leaving the search string empty, don't match
 | ||
| 	  the previous line if we didn't have a match before
 | ||
| 
 | ||
| 				   12/22
 | ||
| 				   -----
 | ||
| bashhist.c
 | ||
| 	- enable_history_list,remember_on_history: initialize to 0 instead of 1
 | ||
| 
 | ||
| shell.c
 | ||
| 	- init_interactive,init_interactive_script: set enable_history_list and
 | ||
| 	  remember_on_history to 1 (defaults)
 | ||
| 
 | ||
| 				   12/23
 | ||
| 				   -----
 | ||
| variables.c
 | ||
| 	- initialize_shell_variables: don't inherit PS4 from the environment
 | ||
| 	  if the shell is running with euid == 0; just reset it to `+ '.  This
 | ||
| 	  is a known potential vulnerability, since PS4 expansion performs
 | ||
| 	  command substitution in the root shell's context before displaying
 | ||
| 	  it.  Discussion started by up201407890@alunos.dcc.fc.up.pt
 | ||
| 
 | ||
| bashhist.c
 | ||
| 	- bash_history_reinit: initialize remember_on_history to the value of
 | ||
| 	  enable_history_list (set -o history).  Fixes bug reported by
 | ||
| 	  Stephane Chazelas <stephane.chazelas@gmail.com> with command-line
 | ||
| 	  option `-o history' not having any effect
 | ||
| 
 | ||
| 				   12/28
 | ||
| 				   -----
 | ||
| lib/readline/{history.h,histfile.c}
 | ||
| 	- history_file_version: new int variable, reserved for future use
 | ||
| 	- history_multiline_entries: new int variable, can be set by the
 | ||
| 	  calling application to enable reading multi-line history entries
 | ||
| 	  from the history file (currently undocumented)
 | ||
| 
 | ||
| lib/readline/history.c
 | ||
| 	- _hs_append_history_line: new function, append a line passed as an
 | ||
| 	  argument to a specified history entry, used to create multi-line
 | ||
| 	  history entries
 | ||
| 
 | ||
| lib/readline/histfile.c
 | ||
| 	- read_history_range: implement a heuristic that temporarily sets the
 | ||
| 	  history comment character if the first line read from the history
 | ||
| 	  file looks like it has is a timestamp (#[:digit:]) so we can read
 | ||
| 	  timestamps from the history file properly.  Originally reported
 | ||
| 	  back in March 2015 by Christoph Anton Mitterer <calestyo@gmail.com>
 | ||
| 	- read_history_range: make sure history_multiline_entries is non-zero
 | ||
| 	  if the history file looks like it has timestamps
 | ||
| 	- read_history_range: if we think we have a history file with timestamps
 | ||
| 	  and we read more than one non-timestamp consecutive history lines,
 | ||
| 	  assume they are part of a single multi-line history entry and paste
 | ||
| 	  them together using _hs_append_history_line.  Feature most recently
 | ||
| 	  requested by james harvey <jamespharvey20@gmail.com>, also suggested
 | ||
| 	  by Christoph Anton Mitterer <calestyo@gmail.com>
 | ||
| 
 | ||
| examples/loadables/setpgid.c
 | ||
| 	- setpgid: new loadable builtin, originally contributed by Jason
 | ||
| 	  Vas Dias <jason.vas.dias@gmail.com>
 | ||
| 
 | ||
| 				   12/29
 | ||
| 				   -----
 | ||
| bashhist.c
 | ||
| 	- bash_history_inhibit_expansion: fix cases where a history expansion
 | ||
| 	  should be skipped because it's in a command or process substitution
 | ||
| 	  but there is another history expansion preceding the substitution
 | ||
| 	  on the command line.  Don't let the previous history expansion fool
 | ||
| 	  the function into saying the command substitution history expansion
 | ||
| 	  should be performed
 | ||
| 
 | ||
| builtins/evalstring.c
 | ||
| 	- parse_prologue: always unwind-protect history_expansion_inhibited,
 | ||
| 	  since history expansion can be enabled in non-interactive shells,
 | ||
| 	  and calling eval once in a non-interactive shell inhibits history
 | ||
| 	  expansion forever even if `set -o histexpand' was run before the
 | ||
| 	  eval
 | ||
| 
 | ||
| builtins/common.h
 | ||
| 	- SEVAL_NOHISTEXP: new flag for parse_and_execute/parse_string; means
 | ||
| 	  to not perform history expansion (decouple from SEVAL_NOHIST, which
 | ||
| 	  now means to not remember commands on history); changed all callers
 | ||
| 	  that had SEVAL_NOHIST to have SEVAL_NOHIST|SEVAL_NOHISTEXP
 | ||
| 
 | ||
| builtins/evalstring.c
 | ||
| 	- parse_prologue: instead of calling bash_history_disable, set
 | ||
| 	  remember_on_history to 0 if SEVAL_NOHIST and history_expansion_inhibited
 | ||
| 	  to 1 if SEVAL_NOHISTEXP
 | ||
| 
 | ||
| 				   12/30
 | ||
| 				   -----
 | ||
| subst.c
 | ||
| 	- skip_to_histexp: new function, a stripped-down version of skip_to_delim.
 | ||
| 	  Used to skip to the next unquoted instance of the history expansion
 | ||
| 	  character, handles peculiar quoting and command/process substitution
 | ||
| 	  requirements.  Better fix for bug reported by
 | ||
| 	  Zigmund.Ozean@zig-home.localdomain back in January, prompted by report
 | ||
| 	  from Keith Thompson <keithsthompson@gmail.com>
 | ||
| 
 | ||
| bashhist.c
 | ||
| 	- bash_history_inhibit_expansion: use skip_to_histexp instead of
 | ||
| 	  skip_to_delim
 | ||
| 
 | ||
| subst.c
 | ||
| 	- parameter_brace_expand_rhs: if the rhs of an expansion is "$@" and
 | ||
| 	  IFS is null, we need to separate the (quoted) positional parameters
 | ||
| 	  in the returned word with a space, and mark the word as needing to
 | ||
| 	  be split on spaces (W_SPLITSPACE).  Fix for issues reported back in
 | ||
| 	  October 2014 as the result of an austin-group discussion, and just
 | ||
| 	  re-reported by Martijn Dekker <martijn@inlv.org>
 | ||
| 
 | ||
| 				 1/4/2016
 | ||
| 				 --------
 | ||
| execute_cmd.c
 | ||
| 	- execute_simple_command: if autocd is set, invoke a function named
 | ||
| 	  `cd' if one exists, instead of the shell builtin.  Feature requested
 | ||
| 	  by transl8czech@gmail.com
 | ||
| 
 | ||
| builtins/mkbuiltins.c
 | ||
| 	- if a command's short description is the same as its name (e.g., `true'),
 | ||
| 	  don't mark the short doc to be translated.  Report and fix from
 | ||
| 	  Benno Schulenberg <bensberg@justemail.net>
 | ||
| 
 | ||
| 				    1/6
 | ||
| 				    ---
 | ||
| subst.c
 | ||
| 	- command_substitute,process_substitute: before replacing the file
 | ||
| 	  descriptor underlying stdout (fd 1), make sure to purge any pending
 | ||
| 	  stdio output that hasn't been written successfully, even after a
 | ||
| 	  call to fflush().  Fixes bug reported by cks@cs.toronto.edu
 | ||
| 
 | ||
| 				    1/7
 | ||
| 				    ---
 | ||
| builtins/{echo,printf}.def
 | ||
| 	- echo_builtin,printf_builtin: don't use terminate_immediately; use
 | ||
| 	  calls to QUIT in the body of the print loop after writes and flushes.
 | ||
| 	  Fixes problem with running the signal handler and exit trap in a
 | ||
| 	  signal context and other bug reported by cks@cs.toronto.edu
 | ||
| 
 | ||
| builtins/common.c
 | ||
| 	- sh_chkwrite: put in calls to QUIT to catch signals that interrupt
 | ||
| 	  writes
 | ||
| 
 | ||
| shell.c
 | ||
| 	- get_current_user_info: protect endpwent() with #ifdef HAVE_GETPWENT.
 | ||
| 	  Fixes bug reported by pb <p-bauer-schriesheim@t-online.de>
 | ||
| 
 | ||
| 				    1/8
 | ||
| 				    ---
 | ||
| lib/readline/bind.c
 | ||
| 	- _rl_init_file_error: now a varargs function so it can take format
 | ||
| 	  strings and arguments and pass them to vfprintf
 | ||
| 	- rl_parse_and_bind: print a warning if we encounter a key binding
 | ||
| 	  string with one or more hyphens but we don't find a valid modifier
 | ||
| 	  (`control', `meta', etc.).  Prompted by a report from Andrew Kurn
 | ||
| 	  <kurn@sfu.ca>
 | ||
| 	- rl_parse_and_bind: improve several existing error messages now that
 | ||
| 	  _rl_init_file_error takes a variable number of arguments
 | ||
| 	- rl_variable_bind: print error message upon encountering unknown
 | ||
| 	  variable
 | ||
| 
 | ||
| 				   1/10
 | ||
| 				   ----
 | ||
| lib/readline/bind.c
 | ||
| 	- rl_parse_and_bind: if a `bare' keybinding is supplied without any
 | ||
| 	  terminating `:' or whitespace separating it from the command to be
 | ||
| 	  bound, signal an error
 | ||
| 
 | ||
| 				   1/11
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- process_substitute: when compiled without job control (JOB_CONTROL not
 | ||
| 	  defined), make sure we call stop_making_children like we do in the job
 | ||
| 	  control code branch, so already_making_children is reset to 0.  This
 | ||
| 	  is what command substitution does.  Fixes bug reported by Alastair
 | ||
| 	  Hughes <hobbitalastair@yandex.com>
 | ||
| 
 | ||
| 				   1/12
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- execute_in_subshell: if a user subshell (`(command)') or other shell
 | ||
| 	  compound command has an input pipe, note for later by setting
 | ||
| 	  stdin_redir.  This will inhibit the implicit redirection of standard
 | ||
| 	  input from /dev/null for async commands executed as part of this
 | ||
| 	  subshell.  Fixes bug reported by Martin D Kealey <martin@kurahaupo.gen.nz>
 | ||
| 	- execute_simple_command: if the shell forks to execute this command
 | ||
| 	  because it has an input pipe, set stdin_redir to inhibit later redirection
 | ||
| 	  from /dev/null for async commands
 | ||
| 
 | ||
| 				   1/13
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- HASH_BANG_BUFSIZE: use #define for size of buffer used in
 | ||
| 	  READ_SAMPLE_BUF instead of straight constant 80
 | ||
| 	- HASH_BANG_BUFSIZ: increase to 128 because Linux allows 128 chars in
 | ||
| 	  exec header.  Reported by Ludovic Courtès <ludo@gnu.org>
 | ||
| 
 | ||
| configure.ac
 | ||
| 	- remove support for purify and purecoverage
 | ||
| 	- change release level to `rc1'
 | ||
| 
 | ||
| 				   1/15
 | ||
| 				   ----
 | ||
| builtins/enable.def
 | ||
| 	- dyn_load_builtin: fix missing argument to builtin_error if load function
 | ||
| 	  returns an error.  Fix from Aharon Robbins <arnold@skeeve.com>
 | ||
| 
 | ||
| 				   1/18
 | ||
| 				   ----
 | ||
| builtins/history.def
 | ||
| 	- histtime: display a better error message for invalid timestamps; use
 | ||
| 	  existing `??' string for empty/missing timestamps or invalid history
 | ||
| 	  entries.  Suggestion from Reuben Thomas <rrt@sc3d.org>
 | ||
| 
 | ||
| 				   1/21
 | ||
| 				   ----
 | ||
| lib/readline/text.c
 | ||
| 	- rl_insert: when trying to optimize typeahead, make sure to reset the
 | ||
| 	  key sequence and key sequence length when we read a character that is
 | ||
| 	  not bound to self-insert.  Bug report from Geir Hauge
 | ||
| 	  <geir.hauge@gmail.com>
 | ||
| 
 | ||
| 				   1/25
 | ||
| 				   ----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- word splitting: add example showing how -d'' is equivalent to -d
 | ||
| 	  after word splitting and null argument removal
 | ||
| 
 | ||
| 				   1/27
 | ||
| 				   ----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- read: modify description to make it more clear that the line is split
 | ||
| 	  using the same rules as word splitting, and use `delimiters' instead
 | ||
| 	  of `separators', which people read the wrong way
 | ||
| 
 | ||
| 				    2/2
 | ||
| 				    ---
 | ||
| variables.c
 | ||
| 	- initialize_shell_variables: allow FUNCNEST to set funcnest_max when
 | ||
| 	  imported from the environment.  Inspired by
 | ||
| 	  https://bugzilla.redhat.com/show_bug.cgi?id=1274553
 | ||
| 
 | ||
| 				   2/11
 | ||
| 				   ----
 | ||
| bashhist.c
 | ||
| 	- bash_history_inhibit_expansion: function should be compiled in only if
 | ||
| 	  BANG_HISTORY is defined.  Report from isabella parakiss
 | ||
| 	  <izaberina@gmail.com>
 | ||
| 
 | ||
| [bash-4.4-rc1 frozen]
 | ||
| 
 | ||
| 				   2/15
 | ||
| 				   ----
 | ||
| lib/readline/text.c
 | ||
| 	- rl_refresh_line: call rl_redraw_prompt_last_line instead of
 | ||
| 	  rl_forced_update_display to avoid redrawing all lines of a multiline
 | ||
| 	  prompt (overwriting the last line of the multiline prompt in the
 | ||
| 	  process).  Report from Hugh Davenport <hugh@davenport.net.nz>
 | ||
| 
 | ||
| 				   2/18
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- parameter_brace_expand: when processing ${!name[@]}, make sure to
 | ||
| 	  free `name' before returning the list of keys to avoid a memory leak.
 | ||
| 	  Fixes bug reported by Emilio PastorMira <Emilio.PastorMira@utimaco.com>
 | ||
| 
 | ||
| 				   2/19
 | ||
| 				   ----
 | ||
| trap.c
 | ||
| 	- free_trap_strings: when freeing the `special' traps (NSIG to BASH_NSIG),
 | ||
| 	  check whether or not the `signal' is trapped, as it would be if the
 | ||
| 	  subshell inherited it (errtrace) and don't free the trap string in that
 | ||
| 	  case.  Fixes bug reported by Jan Klötzke <jan@kloetzke.net>
 | ||
| 
 | ||
| 				   2/21
 | ||
| 				   ----
 | ||
| lib/sh/netconn.c
 | ||
| 	- isnetconn: return false if getpeername fails with errno == EBADF.
 | ||
| 	  Bug and fix from Andrew Gregory <andrew.gregory.8@gmail.com>
 | ||
| 
 | ||
| builtins/shopt.def
 | ||
| 	- parse_bashopts: when reading BASHOPTS from the environment, make
 | ||
| 	  sure to call any set functions associated with a variable, instead
 | ||
| 	  of just setting the value to 1.  Report and fix from
 | ||
| 	  Vehlow, Jörg <Joerg.Vehlow@kratzer-automation.com>
 | ||
| 
 | ||
| 				   2/22
 | ||
| 				   ----
 | ||
| lib/readline/complete.c
 | ||
| 	- rl_display_match_list: don't bother calling strrchr to check the
 | ||
| 	  return value from printable_part() if rl_filename_completion_desired
 | ||
| 	  is non-zero, since in that case printable_part just returns its
 | ||
| 	  argument.  Fixes git completion issue reported by
 | ||
| 	  Dilyan Palauzov <dilyan.palauzov@aegee.org>
 | ||
| 	- _rl_colored_completion_prefix: default is now 0, testing is complete
 | ||
| 
 | ||
| 				   2/23
 | ||
| 				   ----
 | ||
| variables.c
 | ||
| 	- assign_hashcmd: if the shell is restricted, reject attempts to add
 | ||
| 	  pathnames containing slashes to the hash table, as the hash builtin
 | ||
| 	  does.  Fixes bug reported to savannah by Sylvain Beucler as
 | ||
| 	  https://savannah.gnu.org/support/?108969
 | ||
| 
 | ||
| 				   2/24
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- NEED_FPURGE_DECL: need it before externs.h included, since fpurge
 | ||
| 	  is now used in this file.  Fixes warning reported by Mike
 | ||
| 	  Frysinger <vapier@gentoo.org>
 | ||
| 	- skip_double_quoted: add missing argument to declaration
 | ||
| 
 | ||
| parse.y
 | ||
| 	- shell_getc: in call to internal_warning, use %lu to print an argument
 | ||
| 	  cast explicitly to unsigned long.  Fixes warning reported by Mike
 | ||
| 	  Frysinger <vapier@gentoo.org>
 | ||
| 
 | ||
| 				   2/27
 | ||
| 				   ----
 | ||
| parse.y
 | ||
| 	- decode_prompt_string: quote result of \s expansion in case shell has
 | ||
| 	  been invoked with a pathname like '$(id)'.  Inspired by report from
 | ||
| 	  Travis Garrell <travis.garrell@oracle.com>
 | ||
| 	- decode_prompt_string: quote result of \h and \H expansions in the
 | ||
| 	  (unlikely) case that the hostname has been changed to something
 | ||
| 	  malicious including a command substitution.  From report from
 | ||
| 	  Travis Garrell <travis.garrell@oracle.com>
 | ||
| 
 | ||
| builtins/getopts.def
 | ||
| 	- getopts_unbind_variable: new static function, just calls unbind_variable
 | ||
| 	  for now.  Placeholder for any future work to do something special if
 | ||
| 	  OPTARG is readonly.  Based on discussion started by Robert Elz
 | ||
| 	  <kre@munnari.oz.au>
 | ||
| 
 | ||
| lib/readline/vi_mode.c
 | ||
| 	- rl_vi_unix_word_rubout: new function, implements ^W as Posix specifies
 | ||
| 	  it for vi mode, using whitespace and punctuation characters as word
 | ||
| 	  boundaries. Prompted by question from Carlos Pita
 | ||
| 	  <carolosjosepita@gmail.com>
 | ||
| 
 | ||
| lib/readline/vi_keymap.c
 | ||
| 	- bind rl_vi_unix_word_rubout to ^W by default in both insert and
 | ||
| 	  command mode
 | ||
| 
 | ||
| lib/readline/rltty.c
 | ||
| 	- _rl_bind_tty_special_chars: if in vi mode, bind the WERASE character
 | ||
| 	  to rl_vi_unix_word_rubout
 | ||
| 
 | ||
| lib/readline/funmap.c
 | ||
| 	- vi-unix-word-rubout is new bindable name for rl_vi_unix_word_rubout
 | ||
| 
 | ||
| lib/readline/readline.h
 | ||
| 	- rl_vi_unix_word_rubout: new extern declaration
 | ||
| 
 | ||
| 				   2/28
 | ||
| 				   ----
 | ||
| doc/bash.1
 | ||
| 	- document readline blink-matching-paren variable
 | ||
| 	- document readline completion-display-width variable
 | ||
| 	- document readline completion-map-case variable
 | ||
| 	- note that the default value of history-size depends on the value of
 | ||
| 	  the HISTSIZE variable.  All from a message from Branden Robinson
 | ||
| 	  <g.branden.robinson@gmail.com>
 | ||
| 
 | ||
| doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
 | ||
| 	- convert-meta: modify the description to note that readline will turn
 | ||
| 	  the default to off if the locale contains eight-bit characters
 | ||
| 	- input-meta: modify the description to note that readline will turn
 | ||
| 	  the default to on if the locale contains eight-bit characters
 | ||
| 	- output-meta: modify the description to note that readline will turn
 | ||
| 	  the default to on if the locale contains eight-bit characters.  From
 | ||
| 	  a message from Branden Robinson <g.branden.robinson@gmail.com>
 | ||
| 
 | ||
| 				    3/6
 | ||
| 				    ---
 | ||
| examples/loadables/Makefile.in
 | ||
| 	- install-dev: make installdirs a prerequisite; don't rely on the
 | ||
| 	  install-supported target to create it first.  Bug with parallel
 | ||
| 	  install (`make -j 4 install') reported by Chris Staub
 | ||
| 	  <cstaub67@gmail.com>
 | ||
| 
 | ||
| 				   3/12
 | ||
| 				   ----
 | ||
| lib/readline/display.c:
 | ||
| 	- rl_clear_visible_line: clear all screen lines occupied by the current
 | ||
| 	  visible readline line.  Inspired by report from Lauri Ranta
 | ||
| 	  <lauri.ranta@gmail.com>
 | ||
| 
 | ||
| lib/readline/readline.h
 | ||
| 	- rl_clear_visible_line: extern declaration
 | ||
| 
 | ||
| lib/readline/doc/rltech.texi
 | ||
| 	- rl_clear_visible_line: add documentation
 | ||
| 
 | ||
| 				   3/19
 | ||
| 				   ----
 | ||
| findcmd.c
 | ||
| 	- file_status: add inadvertently-dropped test for EXECIGNORE to the
 | ||
| 	  `other' bits check.  The check was in the original patch
 | ||
| 	- search_for_command: if the file should not be considered executable
 | ||
| 	  because it's in the EXECIGNORE blacklist, don't set file_to_lose_on,
 | ||
| 	  since the attempt to execute the last-ditch path will circumvent the
 | ||
| 	  EXECIGNORE setting.  Fixes bug reported by Dennis Williamson
 | ||
| 	  <dennistwilliamson@gmail.com>
 | ||
| 
 | ||
| 				   3/28
 | ||
| 				   ----
 | ||
| lib/readline/display.c
 | ||
| 	- rl_redisplay: when computing where the cursor should go (and the
 | ||
| 	  physical cursor position) after displaying the prompt, don't adjust
 | ||
| 	  the cursor position by wadjust if there are no multibyte chars in
 | ||
| 	  the prompt.  lpos is already a physical cursor position; _rl_screenwidth
 | ||
| 	  is the physical screen width, and we're not calling _rl_col_width and
 | ||
| 	  don't need to take invisible characters into account again.  Fixes
 | ||
| 	  bug reported by Andreas Schwab <schwab@linux-m68k.org>
 | ||
| 
 | ||
| 				    4/1
 | ||
| 				    ---
 | ||
| parse.y
 | ||
| 	- parse_comsub: when we read `esac' followed by a break character,
 | ||
| 	  turn on the LEX_RESWDOK flag because we can now read another case
 | ||
| 	  statement or other compound command.  Fixes bug reported by
 | ||
| 	  Christian Franke <Christian.Franke@t-online.de>, original version
 | ||
| 	  of patch from Piotr Grzybowski <narsil.pl@gmail.com>
 | ||
| 	- parse_comsub: leave the reserved-word-ok flag set for four-char
 | ||
| 	  reserved words (then/else/elif/done/time) that can be followed by
 | ||
| 	  reserved words; set lex_rwlen to 0 so we know to start reading a
 | ||
| 	  new one
 | ||
| 
 | ||
| 				    4/7
 | ||
| 				    ---
 | ||
| builtins/{alias,complete,jobs}.def
 | ||
| 	- {alias,compopt,disown}: add missing `CASE_HELPOPT;' so --help option
 | ||
| 	  prints help longdoc instead of builtin_usage()
 | ||
| 
 | ||
| 				    4/8
 | ||
| 				    ---
 | ||
| arrayfunc.c
 | ||
| 	- assign_array_var_from_word_list: use bind_array_var_internal instead
 | ||
| 	  of inline code, so value conversions happen on assignment (case
 | ||
| 	  modification, arithmetic evaluation, etc).  Fixes bug reported by
 | ||
| 	  Geir Hauge <geir.hauge@gmail.com>
 | ||
| 
 | ||
| 				    4/9
 | ||
| 				    ---
 | ||
| shell.c
 | ||
| 	- main: change the logic that determines whether or not bash is running
 | ||
| 	  under an emacs terminal emulator so it works with future versions of
 | ||
| 	  emacs, which will change to use only $INSIDE_EMACS.  Report and fix
 | ||
| 	  from Paul Eggert <eggert@cs.ucla.edu>
 | ||
| 
 | ||
| lib/glob/sm_loop.c
 | ||
| 	- EXT: if we see ?(pat), we can match 0 or 1 times, so if we don't
 | ||
| 	  match, we should consume the extglob pattern and go on to attempt
 | ||
| 	  to match the rest of the pattern against the string.  Fixes bug
 | ||
| 	  reported by Isabella Parakiss <izaberina@gmail.com>
 | ||
| 	- GMATCH: in case `*', don't short-circuit and match anything if the
 | ||
| 	  * is the last character in the pattern until after we check the
 | ||
| 	  special cases for matching a `.'.  Fixes bugs reported back on 3/23
 | ||
| 	  by Isabella Parakiss <izaberina@gmail.com>
 | ||
| 
 | ||
| 				   4/13
 | ||
| 				   ----
 | ||
| bashhist.c
 | ||
| 	- hc_erasedups: fix memory leak by freeing history entry returned by
 | ||
| 	  remove_history.  Bug and fix from Seiichi Ishitsuka
 | ||
| 	  <ishitsuka.sc@ncos.nec.co.jp>
 | ||
| 
 | ||
| 				   4/19
 | ||
| 				   ----
 | ||
| config-top.h
 | ||
| 	- CD_COMPLAINS: now settable in config-top.h; enables (fatal) error
 | ||
| 	  messages if cd is given multiple directory arguments
 | ||
| 
 | ||
| 				   4/20
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- coproc_setvars: refuse to create variables with names that are not
 | ||
| 	  valid identifiers.  Suggestion from Piotr Grzybowski
 | ||
| 	  <narsil.pl@gmail.com>
 | ||
| 
 | ||
| rltty.c
 | ||
| 	- rl_tty_set_echoing: interface to set _rl_echoing_p, returning old
 | ||
| 	  value.  Inspired by gdb use of _rl_echoing_p when switching
 | ||
| 	  between terminal and curses modes described by Doug Evans
 | ||
| 	  <dje@google.com>
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- bash_execute_unix_command: use rl_clear_visible_line instead of
 | ||
| 	  erasing current line on the screen, inspired by same report from
 | ||
| 	  3/12.  Still tentative change
 | ||
| 
 | ||
| configure.ac
 | ||
| 	- update release status to rc2, may skip this and go directly to
 | ||
| 	  release
 | ||
| 
 | ||
| 				   4/21
 | ||
| 				   ----
 | ||
| arrayfunc.c
 | ||
| 	- convert_var_to_array: make sure that the newly-converted array
 | ||
| 	  variable is not marked as being an associative array.  Fixes bug
 | ||
| 	  reported by Grisha Levit <grishalevit@gmail.com>
 | ||
| 	- convert_var_to_assoc: make sure that the newly-converted associative
 | ||
| 	  array variable is not marked as being an indexed array
 | ||
| 
 | ||
| 				   4/22
 | ||
| 				   ----
 | ||
| builtins/evalstring.c
 | ||
| 	- should_suppress_fork: don't suppress the fork if there are any traps
 | ||
| 	  set, since that requires that we hang around to react to a signal or
 | ||
| 	  collect the command's exit status and run something.  Fixes bug
 | ||
| 	  reported by Brian Vandenberg <phantall@gmail.com>
 | ||
| 
 | ||
| histexpand.c
 | ||
| 	- history_tokenize_word: handle >| as a single token.  Fix from
 | ||
| 	  Piotr Grzybowski <narsil.pl@gmail.com> from a report from
 | ||
| 	  idallen@idallen-fibe.dyndns.org
 | ||
| 
 | ||
| 				   4/24
 | ||
| 				   ----
 | ||
| execute_cmd.
 | ||
| 	- coproc_setvars: don't overwrite readonly variables used as coproc
 | ||
| 	  names.  From a report from Grisha Levit <grishalevit@gmail.com>
 | ||
| 
 | ||
| histexpand.c
 | ||
| 	- history_tokenize_word: handle strings of digits before redirections
 | ||
| 	  beginning with `<' or `>' as part of the redirection word; handle
 | ||
| 	  strings of digits following `<&' or `>&' as part of the redirection
 | ||
| 	  word.  Inspired by patch from  Piotr Grzybowski <narsil.pl@gmail.com>
 | ||
| 	  from a report from idallen@idallen-fibe.dyndns.org
 | ||
| 
 | ||
| lib/readline/complete.c
 | ||
| 	- rl_display_match_list: if the common prefix is longer than any of
 | ||
| 	  the possible matches, set the length of the common prefix to 0 so
 | ||
| 	  the entire match gets printed for each match
 | ||
| 	- rl_display_match_list: make sure to output at least one space
 | ||
| 	  between each displayed match, even if the displayed length is
 | ||
| 	  longer than our computed max
 | ||
| 	- fnprint: if the length of the prefix (prefix_bytes) is greater than
 | ||
| 	  or equal to the length of the string to be printed (print_len), make
 | ||
| 	  sure to set the prefix length to 0 so the entire string is printed.
 | ||
| 	  From a report from Grisha Levit <grishalevit@gmail.com>
 | ||
| 
 | ||
| 				   4/25
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- command_substitute: update the conditions under which we give the
 | ||
| 	  terminal to pipeline_pgrp with give_terminal_to to the same ones
 | ||
| 	  where wait_for uses to decide whether to give the terminal back to
 | ||
| 	  shell_pgrp.  This code exists to undo the work wait_for does; it
 | ||
| 	  has to give the terminal back to pipeline_pgrp only under those
 | ||
| 	  conditions when wait_for gives it back to the shell pgrp.  Fix for
 | ||
| 	  bug reported by Paulo Bardes <bardes0022@gmail.com>
 | ||
| 
 | ||
| 				   4/26
 | ||
| 				   ----
 | ||
| bashline.c
 | ||
| 	- bash_filename_stat_hook: temporarily disable the `nounset' shell
 | ||
| 	  option around calls to expand_prompt_string so we don't get error
 | ||
| 	  messages during completion.  Fixes issue reported by Eric Pruitt
 | ||
| 	  <eric.pruitt@gmail.com>
 | ||
| 
 | ||
| 				   4/27
 | ||
| 				   ----
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- extdebug: clarify that having this option enabled at shell startup
 | ||
| 	  acts identically to --debugger.  From a report from Grisha Levit
 | ||
| 	  <grishalevit@gmail.com>
 | ||
| 
 | ||
| jobs.[ch]
 | ||
| 	- wait_for_single_pid: now takes additional `int flags' argument
 | ||
| 
 | ||
| {jobs,execute_cmd}.c,builtins/wait.def
 | ||
| 	- wait_for_single_pid: changed callers to add extra argument
 | ||
| 
 | ||
| jobs.c
 | ||
| 	- wait_for_single_pid: if (flags & 1) == 0, don't print the error
 | ||
| 	  message if PID isn't found; changed execute_pipeline call when
 | ||
| 	  lastpipe is set
 | ||
| 
 | ||
| 				   4/28
 | ||
| 				   ----
 | ||
| general.c
 | ||
| 	- bash_tilde_expand: try not setting interrupt_immediately or
 | ||
| 	  terminate_immediately; see what happens with networked password
 | ||
| 	  databases
 | ||
| 
 | ||
| 				   4/29
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- parameter_brace_expand, parameter_brace_expand_rhs: now take an
 | ||
| 	  additional `pflags' argument from its caller so we can pass
 | ||
| 	  state
 | ||
| 	- parameter_brace_expand_rhs: if expand_string_for_rhs returns a
 | ||
| 	  quoted null, but l_hasdollat is set to 1, meaning we saw a quoted
 | ||
| 	  "$@" of some form, we need to turn off special handling of "$@"
 | ||
| 	  so something like "${@-${@-$@}}" expands to an empty string like
 | ||
| 	  Posix says it should.  Fixes bug reported by Grisha Levit
 | ||
| 	  <grishalevit@gmail.com>
 | ||
| 
 | ||
| 				    5/1
 | ||
| 				    ---
 | ||
| variables.c
 | ||
| 	- bind_variable_internal: if we have a nameref variable with a valid
 | ||
| 	  array reference that is invalid for assignment (e.g., a[*]), and
 | ||
| 	  assign_array_element returns NULL, short-circuit and return NULL.
 | ||
| 	  Fixes bug reported by Grisha Levit <grishalevit@gmail.com>
 | ||
| 
 | ||
| general.[ch]
 | ||
| 	- valid_nameref_value: new function, return 1 if passed argument is
 | ||
| 	  a valid variable name argument for a nameref variable: a valid
 | ||
| 	  identifier, a valid array reference, or a valid positional
 | ||
| 	  parameter.  Second argument indicates whether the value is to be
 | ||
| 	  used for an assignment; in this case, return an error if the name
 | ||
| 	  consists of all digits
 | ||
| 
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: disallow values for nameref variables that don't
 | ||
| 	  pass the tests in valid_nameref_value.  Part of fix for bug
 | ||
| 	  reported by Grisha Levit <grishalevit@gmail.com>
 | ||
| 
 | ||
| variables.c
 | ||
| 	- bind_variable_internal: if trying to assign a value to a nameref
 | ||
| 	  variable, throw an error if valid_nameref_value fails (with a second
 | ||
| 	  argument of 1).  More fixes for bug reported by Grisha Levit
 | ||
| 	  <grishalevit@gmail.com>
 | ||
| 
 | ||
| 				    5/2
 | ||
| 				    ---
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: don't allow nameref attribute to be applied to an
 | ||
| 	  existing readonly variable; it can be used to circumvent readonly
 | ||
| 	  value.  Fix for bug reported by Grisha Levit <grishalevit@gmail.com>
 | ||
| 
 | ||
| variables.[ch]
 | ||
| 	- find_variable_last_nameref, find_global_variable_last_nameref: takes
 | ||
| 	  a new flags argument.  If flags is non-zero, and we find a nameref
 | ||
| 	  variable that is unset (has no value), return that variable instead
 | ||
| 	  of NULL.
 | ||
| 
 | ||
| {variables,execute_cmd,arrayfunc,subst}.c,builtins/{declare,set}.def
 | ||
| 	- find_variable_last_nameref, find_global_variable_last_nameref: change
 | ||
| 	  callers to add flags argument (initially 0)
 | ||
| 
 | ||
| 				    5/3
 | ||
| 				    ---
 | ||
| variables.c
 | ||
| 	- bind_variable_internal: make sure we run the value of a namref
 | ||
| 	  variable through valid_nameref_value before doing the assignment.
 | ||
| 	  This can go away if we stop allowing namerefs to refer to positional
 | ||
| 	  parameters
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_select_command: if bind_variable returns NULL, handle it as
 | ||
| 	  an error, as if attempting assignment to a readonly variable
 | ||
| 	- execute_for_command: use 1 as second argument to
 | ||
| 	  find_variable_last_nameref, so it will return an invisible nameref
 | ||
| 	  to assign for each variable in the list
 | ||
| 	- execute_for_command: if the current word in the list is an invalid
 | ||
| 	  identifier and the loop variable is a nameref, handle it as an error,
 | ||
| 	  as if attempting assignment to a readonly variable
 | ||
| 
 | ||
| 				    5/4
 | ||
| 				    ---
 | ||
| variables.c
 | ||
| 	- bind_int_variable: add warning if assigning an int to a nameref
 | ||
| 	  variable
 | ||
| 	- assign_in_env: if assigning a variable in the temporary environment
 | ||
| 	  that is a namref, throw an error if trying to assign an invalid
 | ||
| 	  value
 | ||
| 	- bind_variable_value: use valid_nameref_value instead of calls to
 | ||
| 	  legal_identifier and valid_array_reference
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- coproc_setvars: if we have a nameref variable as the coproc name, but
 | ||
| 	  it can't be assigned to for some reason, remove the nameref attribute
 | ||
| 	  and  issue a warning that we are doing so
 | ||
| 	- coproc_setvars: don't allow assignment to a nameref variable with an
 | ||
| 	  invalid variable name, using same code as find_or_make_array_variable
 | ||
| 
 | ||
| general.c
 | ||
| 	- valid_nameref_value: disallow values consisting solely of digits,
 | ||
| 	  like the positional parameters
 | ||
| 
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: don't call valid_nameref_value on the existing value
 | ||
| 	  of a variable that's being converted to a nameref -- that value is
 | ||
| 	  going to be thrown away and we've already checked the new value
 | ||
| 	- declare_internal: call bind_variable_value with the ASS_NAMEREF flag
 | ||
| 	  if we're assigning to an existing nameref variable (for instance,
 | ||
| 	  `declare -n x ; declare x=42')
 | ||
| 
 | ||
| 				    5/5
 | ||
| 				    ---
 | ||
| variables.c
 | ||
| 	- make_local_variable: if we are being asked to create a local copy of
 | ||
| 	  a nameref variable from a prior scope (checked by looking up
 | ||
| 	  using find_variable_noref), use the nameref variable, not the variable
 | ||
| 	  it references (which we find using find_variable).  Bug report from
 | ||
| 	  Grisha Levit <grishalevit@gmail.com> ; fix by Piotr Grzybowski
 | ||
| 	  <narsil.pl@gmail.com>
 | ||
| 
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: if asked to do the same thing as above (difference
 | ||
| 	  is declare -n r=foo in previous case; declare -n r in this one),
 | ||
| 	  don't follow reference var from a previous context.  Create a new
 | ||
| 	  local variable (using make_local_variable) and inherit attributes
 | ||
| 	  from previous scope's nameref as above
 | ||
| 
 | ||
| 				    5/6
 | ||
| 				    ---
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: if we are assigning a value to an existing
 | ||
| 	  invisible nameref variable, validate value early so we don't end up
 | ||
| 	  removing the variable after the assignment fails
 | ||
| 
 | ||
| builtins/shopt.def
 | ||
| 	- toggle_shopts: don't call set_bashopts here unless $BASHOPTS exists,
 | ||
| 	  since we don't want to set it up before it gets read from the
 | ||
| 	  environment. Keeping BASHOPTS read-only should keep users from
 | ||
| 	  unsetting it.  Fix from Grisha Levit <grishalevit@gmail.com>
 | ||
| 	- shopt_set_debug_mode: make sure error_trace_mode reflects the setting
 | ||
| 	  of extdebug.  This one is tentative.  Fix from Grisha Levit
 | ||
| 	  <grishalevit@gmail.com>
 | ||
| 	- shopt_set_debug_mode: call set_shellopts after setting error_trace_mode
 | ||
| 	  or function_trace_mode.  Fix from Grisha Levit <grishalevit@gmail.com>
 | ||
| 
 | ||
| shell.c
 | ||
| 	- start_debugger: make sure that function_trace_mode and error_trace_mode
 | ||
| 	  reflect the value of debugging_mode, so they are both disabled if we
 | ||
| 	  disable debugging mode because we can't find the debugger start file.
 | ||
| 	  Fix from Grisha Levit <grishalevit@gmail.com>
 | ||
| 	- start_debugger: set $SHELLOPTS and $BASHOPTS to the option values are
 | ||
| 	  reflected if we change or set them here.  Fix from Grisha Levit
 | ||
| 	  <grishalevit@gmail.com>
 | ||
| 
 | ||
| builtins/set.def
 | ||
| 	- reset_shell_options: add reset values for: posix, nolog, pipefail.
 | ||
| 	  Fix from Grisha Levit <grishalevit@gmail.com>
 | ||
| 
 | ||
| builtins/shopt.def
 | ||
| 	- reset_shopt_options: add reset values for: autocd, checkjobs,
 | ||
| 	  complete_fullquote, dirspell, failglob, globstar, gnu_errfmt,
 | ||
| 	  huponexit, inherit_errexit, interactive_comments, lastpipe,
 | ||
| 	  no_empty_cmd_completion, progcomp.  Fix from Grisha Levit
 | ||
| 	  <grishalevit@gmail.com>
 | ||
| 	- reset_shopt_options: make sure the following options have the right
 | ||
| 	  defaults based on #defines: checkjobs, checkwinsize, direxpand,
 | ||
| 	  extglob, globasciiranges.  Fix from Grisha Levit
 | ||
| 	  <grishalevit@gmail.com>
 | ||
| 
 | ||
| flags.c
 | ||
| 	- reset_shell_flags: add missing flags, re-initialize history_expansion
 | ||
| 	  based on STRICT_POSIX
 | ||
| 
 | ||
| 				    5/8
 | ||
| 				    ---
 | ||
| lib/readline/histexpand.c
 | ||
| 	- history_expand: if any expansion returns 1 from history_expand_internal,
 | ||
| 	  indicating that :p was supplied, make it apply to the entire line
 | ||
| 	  like tcsh and csh.  Fixes bug reported by Dean Stanton
 | ||
| 	  <dstanton@tintri.com>
 | ||
| 
 | ||
| variables.[ch]
 | ||
| 	- ifsname: move define to variables.h
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_for_command: check whether or not the word in the for command
 | ||
| 	  is IFS; call setifs every time the variable is assigned a value.
 | ||
| 	  Fixes bug report from Grisha Levit <grishalevit@gmail.com>
 | ||
| 
 | ||
| 				   5/16
 | ||
| 				   ----
 | ||
| general.c
 | ||
| 	- valid_nameref_value: explicitly handle name == 0 and *name == 0 right
 | ||
| 	  away to save calls to legal_identifier
 | ||
| 
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: if trying to set nameref attribute on a variable
 | ||
| 	  with a null value, flag as invalid assignment, just as if running
 | ||
| 	  `declare -n r=""'.  Fixes bug report from Grisha Levit
 | ||
| 	  <grishalevit@gmail.com>
 | ||
| 	- declare_internal: when creating a variable with a temporary value
 | ||
| 	  (""), use ASS_FORCE in the assignment flags to bypass name validity
 | ||
| 	  checks on nameref variable names
 | ||
| 
 | ||
| variables.c
 | ||
| 	- bind_variable_internal: don't call valid_nameref_value if we're
 | ||
| 	  forcing assignment with (flags & ASS_FORCE)
 | ||
| 
 | ||
| builtins/read.def
 | ||
| 	- read_builtin: handle bind_variable returning NULL when setting REPLY.
 | ||
| 	  Report and fix from Grisha Levit <grishalevit@gmail.com>
 | ||
| 
 | ||
| builtins/setattr.def
 | ||
| 	- set_var_attribute: handle bind_variable returning NULL
 | ||
| 
 | ||
| lib/sh/tmpfile.c
 | ||
| 	- sh_seedrand(): call srandom() to seed the random number generator
 | ||
| 	- sh_mktmpname, sh_mktmpfd: if we have random(), assume we have
 | ||
| 	  srandom() and seed the random number generator. Still looking for
 | ||
| 	  better value to see random number generator with
 | ||
| 
 | ||
| variables.c
 | ||
| 	- check_unbind_variable: use internal_error instead of builtin_error
 | ||
| 
 | ||
| {execute_cmd,variables}.c
 | ||
| 	- fix some places where bind_variable could return NULL and it was not
 | ||
| 	  checked.  Fix from Piotr Grzybowski <narsil.pl@gmail.com>
 | ||
| 
 | ||
| 				   5/17
 | ||
| 				   ----
 | ||
| arrayfunc.c
 | ||
| 	- convert_var_to_{array,assoc}: make sure to turn off nameref attribute,
 | ||
| 	  since namerefs can't be arrays
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- coproc_setvars: if the coproc name names a nameref, resolve the
 | ||
| 	  nameref and use it as the name of the coproc.  Suggested by Grisha
 | ||
| 	  Levit <grishalevit@gmail.com>
 | ||
| 
 | ||
| subst.c
 | ||
| 	- command_substitute: don't bother calling QUIT after calling
 | ||
| 	  reset_signal_handlers in the child, kill the child with SIGINT in
 | ||
| 	  case we just reset the signal handler to SIG_DFL and we should just
 | ||
| 	  exit instead of throwing to top level.  Fixes bug reported by
 | ||
| 	  Grisha Levit <grishalevit@gmail.com>
 | ||
| 
 | ||
| 				   5/18
 | ||
| 				   ----
 | ||
| variables.c
 | ||
| 	- find_variable_nameref_for_create: find a nameref variable whose value
 | ||
| 	  doesn't resolve to an existing variable and see whether or not that
 | ||
| 	  value is appropriate for a new variable to be created
 | ||
| 	- find_variable_nameref_for_assignment: find a nameref variable whose
 | ||
| 	  value doesn't resolve to an existing variable and see whether or not
 | ||
| 	  that value is appropriate for a new variable to be created.
 | ||
| 	  Difference between _assignment and _create is that _assignment
 | ||
| 	  allows the nameref value to be a subscripted array reference
 | ||
| 
 | ||
| builtins/setattr.def
 | ||
| 	- set_var_attribute: if variable lookup doesn't return anything, check
 | ||
| 	  for a nameref and make sure that any reference value is something we
 | ||
| 	  should be working on here, using find_variable_nameref_for_create().
 | ||
| 	  If it fails, error out and return, otherwise it's probably a reference
 | ||
| 	  to a variable that hasn't been set yet, so let bind_variable take care
 | ||
| 	  of that.  Report from Grisha Levit <grishalevit@gmail.com>
 | ||
| 
 | ||
| arrayfunc.c
 | ||
| 	- bind_array_variable: if find_shell_variable returns NULL, check for a
 | ||
| 	  nameref using find_variable_nameref_for_create and create a new array
 | ||
| 	  variable with the value if it returns a valid nameref variable.
 | ||
| 	  Makes `unset var; declare -n ref=var ; ref[0]=foo' work right.
 | ||
| 	  Report from Grisha Levit <grishalevit@gmail.com>
 | ||
| 
 | ||
| 				   5/19
 | ||
| 				   ----
 | ||
| variables.[ch]
 | ||
| 	- unbind_variable_noref: unset a variable NAME without following any
 | ||
| 	  nameref chain.  If the first instance of the variable with that name
 | ||
| 	  is a nameref, just unset that nameref variable.
 | ||
| 
 | ||
| builtins/getopts.def
 | ||
| 	- getopts_unbind_variable: if OPTARG is going to be unbound, use
 | ||
| 	  unbind_variable_noref to unbind that name even if it is a nameref
 | ||
| 	  variable.  Issue raised by Grisha Levit <grishalevit@gmail.com>
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- coproc_unsetvars: use unbind_variable_noref in case someone sets the
 | ||
| 	  coproc _PID variable as a nameref pointing to something read-only or
 | ||
| 	  strange.  Issue raised by Grisha Levit <grishalevit@gmail.com>
 | ||
| 
 | ||
| builtins/set.def
 | ||
| 	- set_ignoreeof: use unbind_variable_noref to unset "IGNOREEOF" and
 | ||
| 	  "ignoreeof"
 | ||
| 	- set_posix_mode: use unbind_variable_noref to unset "POSIXLY_CORRECT"
 | ||
| 
 | ||
| variables.c
 | ||
| 	- make_vers_array: use unbind_variable_noref to unset "BASH_VERSINFO"
 | ||
| 
 | ||
| lib/sh/shmatch.c
 | ||
| 	- sh_regmatch: use unbind_variable_noref to unset "BASH_REMATCH"
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- bash_execute_unix_command: use check_unbind_variable to unset
 | ||
| 	  READLINE_LINE and READLINE_POINT
 | ||
| 
 | ||
| pcomplete.c
 | ||
| 	- unbind_compfunc_variables: use unbind_variable_noref to unset
 | ||
| 	  COMP_LINE, COMP_POINT, COMP_WORDS, COMP_CWORD, COMP_TYPE, COMP_KEY
 | ||
| 	- gen_shell_function_matches: use unbind_variable_noref to unset
 | ||
| 	  COMPREPLY
 | ||
| 
 | ||
| config-top.h
 | ||
| 	- USE_MKTEMP/USE_MKSTEMP: define by default to use libc version of
 | ||
| 	  mktemp and mkstemp in lib/sh/tmpfile.c.  Recommended by Mike
 | ||
| 	  Frysinger <vapier@gentoo.org> to fix a FreeBSD problem
 | ||
| 
 | ||
| configure.ac,config.h.in
 | ||
| 	- mkstemp: check for mkstemp, define HAVE_MKSTEMP if available
 | ||
| 
 | ||
| config-bot.h
 | ||
| 	- USE_MKSTEMP: #undef if HAVE_MKSTEMP not defined
 | ||
| 
 | ||
| 				   5/22
 | ||
| 				   ----
 | ||
| variables.c
 | ||
| 	- assign_in_env: if appending to a variable's value, make sure we call
 | ||
| 	  make_variable_value with the empty string if expand_assignment_string_to_string
 | ||
| 	  returns NULL, as do_assignment_internal does.  Fixes bug with
 | ||
| 	  `str=''; val=foo ; val+=str printenv val' reported by Grisha Levit
 | ||
| 	  <grishalevit@gmail.com>
 | ||
| 	- assign_in_env: if assigning to a nameref variable in the temporary
 | ||
| 	  environment, and the nameref has a valid value for assignment (even
 | ||
| 	  if the target variable is not set), resolve the nameref and create
 | ||
| 	  a variable in the temporary environment named by the nameref's value.
 | ||
| 	  If the nameref variable is invisible or isn't set to a valid value
 | ||
| 	  for assignment, just create a regular temporary variable with the
 | ||
| 	  nameref's name.  This provides a degree of ksh93 compatibility.
 | ||
| 	  Suggested by Grisha Levit <grishalevit@gmail.com>
 | ||
| 	- find_variable_nameref_context,find_variable_last_nameref_context:
 | ||
| 	  instead of returning NULL when detecting a loop, return a
 | ||
| 	  distinguished value: &nameref_maxloop_value
 | ||
| 	- bind_variable: catch nameref_maxloop_value so we can do different
 | ||
| 	  things based on whether or not we get it.  Right now we don't do
 | ||
| 	  anything different, but we could
 | ||
| 
 | ||
| 				   5/24
 | ||
| 				   ----
 | ||
| lib/readline/display.c
 | ||
| 	- update_line,_rl_move_cursor_relative: save value of MB_CUR_MAX in a
 | ||
| 	  variable and use it throughout the functions instead of recomputing it
 | ||
| 	  every time (which possibly costs a function call)
 | ||
| 
 | ||
| 				   5/25
 | ||
| 				   ----
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: only check whether the value being assigned to a
 | ||
| 	  nameref variable is a valid identifier if we're not appending to an
 | ||
| 	  existing value.  Suggested by Grisha Levit <grishalevit@gmail.com>
 | ||
| 	- declare_internal: add a couple of more checks on nameref names:
 | ||
| 		o make sure `declare -n x[3]=y' is an error
 | ||
| 		o nameref variable self-references now produce a warning when
 | ||
| 		  in function scope
 | ||
| 		o nameref variable self-references using subscripted arrays
 | ||
| 		  (a=a[0]) now produce warnings at function scope and errors at
 | ||
| 		  global scope
 | ||
| 
 | ||
| 				   5/29
 | ||
| 				   ----
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: use name of readonly variable when calling sh_readonly	
 | ||
| 	  instead of name passed as argument to declare in case we've followed
 | ||
| 	  a nameref chain
 | ||
| 	- declare_internal: when turning off attributes on a nameref variable
 | ||
| 	  after following the nameref chain and turning them off on the target
 | ||
| 	  variable, don't allow the readonly attribute to be removed.  This is
 | ||
| 	  primarily intended to turn off the nameref attribute.  Issue pointed
 | ||
| 	  out by Grisha Levit <grishalevit@gmail.com>
 | ||
| 	- declare_internal: if we are attempting to modify an existing global
 | ||
| 	  nameref variable, and the -n option is supplied, operate on the
 | ||
| 	  nameref variable itself, not the variable it references
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- change the descriptions of namerefs and declare -n slightly to note
 | ||
| 	  that using the -n option to declare will operate on the nameref
 | ||
| 	  variable itself rather than the variable it references
 | ||
| 
 | ||
| variables.c
 | ||
| 	- bind_variable_internal: if trying to assign to a read-only variable,
 | ||
| 	  print the error message using the variable's name instead of the
 | ||
| 	  name passed to bind_variable in case we followed a nameref
 | ||
| 
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: when we're creating a (possibly invisible) variable
 | ||
| 	  as part of another operation, assigning NULL, make sure to use
 | ||
| 	  ASS_FORCE to avoid warning messages from any existing nameref
 | ||
| 	  variables we follow
 | ||
| 	- declare_internal: allow the nameref attribute to be removed from a
 | ||
| 	  readonly nameref variable without a value but do not allow it to be
 | ||
| 	  removed from a readonly nameref variable that has a value, even if it
 | ||
| 	  doesn't reference an existing variable.  This distinction is for ksh93
 | ||
| 	  compatibility.  Pointed out by Grisha Levit <grishalevit@gmail.com>
 | ||
| 
 | ||
| 				   5/31
 | ||
| 				   ----
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: if the call to bind_variable_value fails for some
 | ||
| 	  reason, make sure to restore the nameref attribute to flags_on and
 | ||
| 	  flags_off before calling NEXT_VARIABLE
 | ||
| 
 | ||
| subst.c
 | ||
| 	- make_internal_declare: handle += append op
 | ||
| 	- shell_expand_word_list: when transforming assignment statement
 | ||
| 	  arguments to `declare', make sure to handle += append op to avoid
 | ||
| 	  passing invalid identifiers to declare.  Report by Grisha Levit
 | ||
| 	  <grishalevit@gmail.com>
 | ||
| 
 | ||
| 				    6/1
 | ||
| 				    ---
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: if a nameref assignment fails, only call delete_var
 | ||
| 	  to delete the variable if we created it in declare_internal in the
 | ||
| 	  first place
 | ||
| 
 | ||
| general.c
 | ||
| 	- check_selfref: new function, checks a NAME against a VALUE for nameref
 | ||
| 	  self-reference
 | ||
| 
 | ||
| general.h
 | ||
| 	- check_selfref: extern declaration
 | ||
| 
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: call check_selfref to determine whether a given NAME
 | ||
| 	  and VALUE constitute an invalid nameref variable self-reference
 | ||
| 
 | ||
| variables.c
 | ||
| 	- bind_variable_internal: call check_selfref to determine whether a
 | ||
| 	  given NAME and VALUE constitute an invalid nameref variable self-
 | ||
| 	  reference
 | ||
| 
 | ||
| 				    6/2
 | ||
| 				    ---
 | ||
| parse.y
 | ||
| 	- clear_shell_input_line: new function, clears contents of shell_input_line
 | ||
| 	  and sets index to 0, but doesn't free it
 | ||
| 
 | ||
| externs.h
 | ||
| 	- clear_shell_input_line: extern declaration
 | ||
| 
 | ||
| builtins/evalstring.c
 | ||
| 	- parse_and_execute: call clear_shell_input_line after setting input to
 | ||
| 	  string to be executed.  Fixes problem with command substitution and
 | ||
| 	  multi-line aliases reported by Grisha Levit <grishalevit@gmail.com>
 | ||
| 
 | ||
| eval.c
 | ||
| 	- parse_command: only execute PROMPT_COMMAND if the shell is not
 | ||
| 	  currently expanding an alias; use the same tests as parse.y:SHOULD_PROMPT
 | ||
| 	  and parse.y:prompt_again() use to decide whether or not to print a
 | ||
| 	  prompt.  Fixes problems with PROMPT_COMMAND and multi-line aliases
 | ||
| 	  reported by Grisha Levit <grishalevit@gmail.com>
 | ||
| 
 | ||
| builtins/set.def
 | ||
| 	- unset_builtin: changes to fix three problems reported by Grisha
 | ||
| 	  Levit <grishalevit@gmail.com>:
 | ||
| 		o if -n is supplied, we should not try to unset a function if
 | ||
| 		  a variable isn't found
 | ||
| 		o unsetting namerefs whose values are array references does
 | ||
| 		  not work
 | ||
| 		o unset -n n[0], where n is a nameref, would unset the
 | ||
| 		  referenced variable instead of `n'
 | ||
| 
 | ||
| redir.c
 | ||
| 	- redir_varvalue: handle case where nameref var points to subscripted
 | ||
| 	  array reference.  Reported by Grisha Levit <grishalevit@gmail.com>
 | ||
| 
 | ||
| variables.c
 | ||
| 	- bind_variable_value: make sure to call check_selfref only if aflags
 | ||
| 	  includes ASS_NAMEREF and not ASS_FORCE.  Reported by Grisha Levit
 | ||
| 	  <grishalevit@gmail.com>
 | ||
| 
 | ||
| general.c
 | ||
| 	- valid_nameref_value: now understands a FLAGS value of 2 to mean that
 | ||
| 	  the name will be used to create a variable, so only legal_identifier
 | ||
| 	  matters
 | ||
| 
 | ||
| arrayfunc.c
 | ||
| 	- find_or_make_array_variable: call valid_nameref_value with FLAGS value
 | ||
| 	  of 2 to indicate we will be creating a variable.  Fixes mapfile issue
 | ||
| 	  reported by Grisha Levit <grishalevit@gmail.com>
 | ||
| 
 | ||
| 				    6/5
 | ||
| 				    ---
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: only pass ASS_FORCE as part of assignment flags to
 | ||
| 	  assignments concerning arrays
 | ||
| 	- declare_internal: when at the global scope, if we resolve a nameref
 | ||
| 	  and commit to using the new name, go back to to the beginning of the
 | ||
| 	  loop and use the new name in the checks and variable references.
 | ||
| 	  Make sure we construct the new name as a straight substitution of
 | ||
| 	  the nameref value into the old name, including array subscripts and
 | ||
| 	  rebuilding the correct values for `offset' and `value', since they
 | ||
| 	  are relative to the original value of name.
 | ||
| 	  Fixes several issues with checking use of subscripted array variables
 | ||
| 	  as nameref values
 | ||
| 	- declare_internal: when calling assign_array_element, make sure to
 | ||
| 	  pass ASS_APPEND if aflags includes it, so things like
 | ||
| 		declare -a var; var[1]=1; declare var[1]+=4
 | ||
| 	  append to the value appropriately and var[1] ends up being `14'
 | ||
| 
 | ||
| arrayfunc.c
 | ||
| 	- valid_array_reference: make sure the array reference is properly
 | ||
| 	  terminated after the first subscript; return invalid if there is
 | ||
| 	  anything following the closing `]'
 | ||
| 
 | ||
| 				   6/12
 | ||
| 				   ----
 | ||
| variables.c
 | ||
| 	- bind_variable_internal: if asked to perform an array subscript
 | ||
| 	  assignment on a nameref variable, display a warning and remove the
 | ||
| 	  nameref attribute (as bash-4.3 did).  Reported by Dan Douglas
 | ||
| 	  <ormaaj@gmail.com>
 | ||
| 
 | ||
| 				   6/14
 | ||
| 				   ----
 | ||
| test.c
 | ||
| 	- posixtest: handle four-argument case where argv[1] == '(' and
 | ||
| 	  argv[4] == ')' by performing two-argument test on $2 and $3.
 | ||
| 	  Reported by Joerg Schilling <Joerg.Schilling@fokus.fraunhofer.de>
 | ||
| 
 | ||
| 				   6/15
 | ||
| 				   ----
 | ||
| variables.c
 | ||
| 	- sv_ignoreeof: make sure ignoreeof is set only if IGNOREEOF is set and
 | ||
| 	  has a value (no `local IGNOREEOF'). Reported by Grisha Levit
 | ||
| 	  <grishalevit@gmail.com>
 | ||
| 	- sv_strict_posix: make sure posixly_correct is set only if
 | ||
| 	  POSIXLY_CORRECT is set and has a value.  Reported by Grisha Levit
 | ||
| 	  <grishalevit@gmail.com>
 | ||
| 
 | ||
| 				   6/16
 | ||
| 				   ----
 | ||
| builtins/declare.def
 | ||
| 	- declare_internal: analogous to 6/12 change; when performing an array
 | ||
| 	  subscript assignment on a nameref, display a warning, remove the
 | ||
| 	  nameref attribute, and go on
 | ||
| 
 | ||
| 				   6/21
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- shell_execve: make sure errno is (re)set appropriately before
 | ||
| 	  returning error value on exec format error
 | ||
| 
 | ||
| 				   6/23
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- param_expand: when expanding $* in a context where splitting is not
 | ||
| 	  desired (pflags & PF_ASSIGNRHS), make sure to quote the word and the
 | ||
| 	  included separators.  Reported by Dan Douglas <ormaaj@gmail.com>
 | ||
| 
 | ||
| 				   6/30
 | ||
| 				   ----
 | ||
| configure.ac
 | ||
| 	- release version is now `beta2'
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- execute_simple_command: even if already_making_children is non-zero,
 | ||
| 	  don't call wait_for if last_made_pid == NO_PID.  Indirectly inspired
 | ||
| 	  by report from Nicolas Vivet <nicolas@nzx.io>
 | ||
| 
 | ||
| 				    7/2
 | ||
| 				    ---
 | ||
| subst.c
 | ||
| 	- expand_word_internal: when adding an IFS character to the accumulated
 | ||
| 	  string, don't quote it if word expansion is not going to be
 | ||
| 	  performed ((word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0) in the
 | ||
| 	  default case.  This was already the case everwhere else, when we did
 | ||
| 	  `goto add_ifs_character;'.  Fixes bug reported by Ibrahim M. Ghazal
 | ||
| 	  <imgx64@gmail.com>
 | ||
| 
 | ||
| subst.[ch],arrayfunc.c
 | ||
| 	- string_list_dollar_at: now takes a new third argument, currently
 | ||
| 	  reserved for future use; changed callers and declaration
 | ||
| 
 | ||
| 				    7/7
 | ||
| 				    ---
 | ||
| [bash-4.4-beta2 frozen]
 | ||
| 
 | ||
| 				    7/9
 | ||
| 				    ---
 | ||
| bashline.c
 | ||
| 	- check_redir: make sure that index is > 0 before checking previous
 | ||
| 	  char; fixes out of bounds read reported by Hanno Böck
 | ||
| 	  <hanno@hboeck.de>
 | ||
| 
 | ||
| 				   7/16
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- parameter_brace_expand: if ${array[@]} or ${array[*]} is supplied
 | ||
| 	  with an unset (or empty) array, and -u is enabled, don't make it
 | ||
| 	  an unbound variable error, like $@ or $* when there are no
 | ||
| 	  positional parameters.  Based on report from Ian Allen
 | ||
| 	  <idallen@idallen-fibe.dyndns.org>
 | ||
| 
 | ||
| lib/readline/signals.c
 | ||
| 	- rl_pending_signal(): return the number of any signal readline has
 | ||
| 	  caught but is waiting to handle
 | ||
| 
 | ||
| lib/readline/callback.c
 | ||
| 	- rl_persistent_signal_handlers: new variable, restores readline-6.2
 | ||
| 	  signal handler semantics: installed at rl_callback_handler_install
 | ||
| 	  time and removed with rl_clear_signals when a complete line has
 | ||
| 	  been read
 | ||
| 	- _rl_callback_newline: call rl_set_signals if rl_persistent_signal_handlers
 | ||
| 	  is non-zero
 | ||
| 	- rl_callback_read_char: install signal handlers with rl_set_signals
 | ||
| 	  if rl_persistent_signal_handlers is 0 (the default)
 | ||
| 	- CALLBACK_READ_RETURN: uninstall signal handlers with rl_clear_signals
 | ||
| 	  only if rl_persistent_signal_handlers is 0 (the default)
 | ||
| 
 | ||
| lib/readline/readline.h
 | ||
| 	- rl_pending_signal: new extern declaration
 | ||
| 	- rl_persistent_signal_handlers: new extern declaration
 | ||
| 
 | ||
| 				   7/19
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- execute_while_or_until: make sure we decrement `continuing' the way
 | ||
| 	  we decrement `breaking' if the loop test indicates we will be
 | ||
| 	  breaking out of the loop.  That keeps `until continue' from
 | ||
| 	  keeping `continuing' set to 1.  Reported by Dan Douglas
 | ||
| 	  <ormaaj@gmail.com>
 | ||
| 
 | ||
| 				   7/20
 | ||
| 				   ----
 | ||
| trap.c
 | ||
| 	- run_pending_traps,_run_trap_internal: save and restore temporary_env,
 | ||
| 	  set temporary_env to 0 before trap runs so traps don't inherit a
 | ||
| 	  command's temporary env.  Fixes bug with IFS assignment in tempenv
 | ||
| 	  and trap reported by Andriy Martynets <martynets@volia.ua>
 | ||
| 
 | ||
| jobs.c
 | ||
| 	- run_sigchld_trap: save and restore temporary_env, set temporary_env
 | ||
| 	  to 0 before trap runs so traps don't inherit a command's temporary
 | ||
| 	  env (see above)
 | ||
| 
 | ||
| 				   7/21
 | ||
| 				   ----
 | ||
| execute_cmd.c
 | ||
| 	- execute_function: unwind-protect function_line_number, in case we
 | ||
| 	  are executing a function inside another function.  Reported by
 | ||
| 	  Grisha Levit <grishalevit@gmail.com> in context of evaled functions
 | ||
| 	  and DEBUG traps
 | ||
| 	- execute_arith_for_command,execute_arith_command,execute_simple_command,
 | ||
| 	  execute_cond_command: make sure line_number doesn't go < 0 when
 | ||
| 	  adjusting it by function_line_number
 | ||
| 
 | ||
| 				   7/23
 | ||
| 				   ----
 | ||
| subst.c,command.h
 | ||
| 	- move the PF_ constants to command.h so other files can see them, now
 | ||
| 	  that PF_ASSIGNRHS has meaning to string_list_dollar_at
 | ||
| 
 | ||
| arrayfunc.h
 | ||
| 	- AV_ASSIGNRHS: new flag, indicate that ${a[@]} is being expanded on
 | ||
| 	  the RHS of an assignment statement
 | ||
| 
 | ||
| arrayfunc.c
 | ||
| 	- array_value_internal: if AV_ASSIGNRHS passed for ${a[@]}, pass
 | ||
| 	  PF_ASSIGNRHS to string_list_dollar_at to support args separated by
 | ||
| 	  spaces even if $IFS does not have the default value.  Reported by
 | ||
| 	  Dan Douglas <ormaaj@gmail.com>
 | ||
| 
 | ||
| subst.c
 | ||
| 	- string_list_dollar_at: if FLAGS argument includes PF_ASSIGNRHS, obey
 | ||
| 	  rules for $@ on the RHS of an assignment statement: expand to
 | ||
| 	  postitional parameters separated by spaces no matter what the first
 | ||
| 	  character of $IFS is.  Reported by Dan Douglas <ormaaj@gmail.com>
 | ||
| 	- parameter_brace_expand_word: pass AV_ASSIGNRHS as flags value to
 | ||
| 	  array_value if PF_ASSIGNRHS is set and we are expanding an array
 | ||
| 	  variable subscripted by @ or *
 | ||
| 	- param_expand: pass pflags to string_list_dollar_at in case it contains
 | ||
| 	  PF_ASSIGNRHS
 | ||
| 	- expand_word_internal: if we have an assignment statement argument to
 | ||
| 	  a declaration builtin (W_ASSIGNARG), turn on W_ASSIGNRHS when we see
 | ||
| 	  the `=' to enable special $@ behavior
 | ||
| 	- expand_word_internal: if W_ASSIGNARG enabled in word flags, pass that
 | ||
| 	  flag and W_ASSIGNRHS to recursive call to expand_word_internal when
 | ||
| 	  expanding double-quoted string; handles "$@" when IFS is not the
 | ||
| 	  default value and word splitting will not be performed
 | ||
| 
 | ||
| subst.c
 | ||
| 	- expand_word_internal: change case that handles '' (single-quoted
 | ||
| 	  empty string) to only discard it if we will not be performing word
 | ||
| 	  splitting (W_NOSPLIT|W_NOSPLIT2), since we need to add a quoted null
 | ||
| 	  argument if the subsequent characters will cause word splitting.
 | ||
| 	  This is how "" (double-quoted empty string) is handled after a bug
 | ||
| 	  fix back in August 2010.  Reported by Grisha Levit
 | ||
| 	  <grishalevit@gmail.com>, fix for Posix interp 888
 | ||
| 
 | ||
| 				   7/27
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- param_expand: change fix from 6/23 (expanding $* in a context where
 | ||
| 	  word splitting is not performed) to make sure that $* expands to
 | ||
| 	  something before trying to quote the string.  Bug and fix from
 | ||
| 	  Andreas Schwab <schwab@suse.de>
 | ||
| 
 | ||
| lib/readline/bind.c
 | ||
| 	- _rl_get_string_variable_value: fix a cut-and-paste error that caused
 | ||
| 	  the emacs mode string to be displayed for both vi insert and command
 | ||
| 	  mode strings.  Report and fix from Steve Jones <sjml@slohj.org>
 | ||
| 
 | ||
| 				   7/28
 | ||
| 				   ----
 | ||
| lib/readline/display.c
 | ||
| 	- update_line: we can't use PROMPT_ENDING_INDEX unless we're testing
 | ||
| 	  against _rl_last_c_pos; if we are testing buffer indices, we need to
 | ||
| 	  use prompt_last_invisible directly.  Fixes mode string redisplay issue
 | ||
| 	  with short prompt strings reported by Steve Jones <sjml@slohj.org>
 | ||
| 
 | ||
| 				    8/4
 | ||
| 				    ---
 | ||
| nojobs.c
 | ||
| 	- without_job_control: new function, resets child state that's
 | ||
| 	  eventually used to decide whether or not to wait_for children
 | ||
| 
 | ||
| execute_cmd.c
 | ||
| 	- initialize_subshell: call without_job_control in both the
 | ||
| 	  JOB_CONTROL and no job control paths so we can reset the state in
 | ||
| 	  subshells that will not cause them to wait_for children
 | ||
| 	  inappropriately.  Fixes bug reported by Dan Cross <crossd@gmail.com>
 | ||
| 
 | ||
| 				    8/5
 | ||
| 				    ---
 | ||
| configure.ac
 | ||
| 	- release version is now `rc2'
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- command_word_completion_function: if direxpand is set, make sure to
 | ||
| 	  run hint_text through bash_directory_completion_hook, since
 | ||
| 	  readline will do that and we want to be able to match the results
 | ||
| 	  readline returns.  Fixes bug reported by Pat Somaru
 | ||
| 	  <tuf18542@temple.edu>
 | ||
| 
 | ||
| command.h
 | ||
| 	- W_COMPLETE: new flag word value
 | ||
| 	- PF_COMPLETE: new flags value for param_expand
 | ||
| 
 | ||
| subst.h
 | ||
| 	- SX_STRIPDQ: new flag, used for string_extract_double_quoted
 | ||
| 
 | ||
| bashline.c
 | ||
| 	- bash_filename_stat_hook,bash_directory_completion_hook: pass W_COMPLETE
 | ||
| 	  flag to expand_prompt_string
 | ||
| 
 | ||
| subst.c
 | ||
| 	- expand_word_internal: if W_COMPLETE in word->flags, pass PF_COMPLETE
 | ||
| 	  to param_expand
 | ||
| 	- param_expand: if PF_COMPLETE in pflags, pass SX_COMPLETE to
 | ||
| 	  extract_command_subst.  This allows `"$(echo ~/' to perform
 | ||
| 	  completion successfully
 | ||
| 	- string_extract_double_quoted: turn third argument into a flags arg,
 | ||
| 	  old STRIPDQ is now set if flags&SX_STRIPDQ
 | ||
| 	- string_extract_double_quoted: changed callers, if third argument was
 | ||
| 	  1, pass SX_STRIPDQ instead
 | ||
| 	- expand_word_internal: if W_COMPLETE in word->flags, pass SX_COMPLETE
 | ||
| 	  in flags to string_extract_double_quoted for case '"'
 | ||
| 	- string_extract_double_quoted: if SX_COMPLETE in flags, pass it to
 | ||
| 	  extract_command_subst
 | ||
| 	- expand_word_internal: if W_COMPLETE in word->flags, make sure W_COMPLETE
 | ||
| 	  is in temp word passed to recursive call to expand_word_internal to
 | ||
| 	  expand double-quoted string.  Fixes bug reported by John Passaro
 | ||
| 	  <john.a.passaro@gmail.com>
 | ||
| 
 | ||
| 				    8/9
 | ||
| 				    ---
 | ||
| [bash-4.4-rc2 frozen]
 | ||
| 
 | ||
| 				   8/10
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- sub_append_string: use size_t variable to store string length to
 | ||
| 	  avoid integer overflow.  Report from Siteshwar Vashisht
 | ||
| 	  <svashisht@redhat.com>
 | ||
| 	- sub_append_string: `size' argument is now pointer to size_t; changed
 | ||
| 	  istring_index in expand_word_internal to accommodate change
 | ||
| 
 | ||
| lib/sh/ufuncs.c
 | ||
| 	- include "posixselect.h" if HAVE_SELECT is defined, make sure that
 | ||
| 	  fd_set and the rest are defined
 | ||
| 
 | ||
| 				   8/11
 | ||
| 				   ----
 | ||
| lib/readline/histexpand.c
 | ||
| 	- history_tokenize_word: use ISDIGIT instead of isdigit for more
 | ||
| 	  argument checking
 | ||
| 	- "chardefs.h": include for ISDIGIT define and <ctype.h>.  Fix from
 | ||
| 	  Mike Frysinger <vapier@gentoo.org>
 | ||
| 
 | ||
| lib/sh/eaccess.c,externs.h
 | ||
| 	- sh_eaccess: first argument now const char *
 | ||
| 	- sh_stataccess,sh_euidaccess: first argument now const char *, since
 | ||
| 	  sh_stat and sh_eaccess call them.
 | ||
| 	  Fix from Mike Frysinger <vapier@gentoo.org>
 | ||
| 
 | ||
| lib/glob/glob.c
 | ||
| 	- sh_eaccess: change local prototype
 | ||
| 
 | ||
| general.[ch]
 | ||
| 	- all_digits,legal_identifier,valid_nameref_value,importable_function_name,
 | ||
| 	  exportable_function_name,check_binary_file,file_exists,file_isdir,
 | ||
| 	  file_iswdir,same_file,make_absolute,valid_nameref_value: first
 | ||
| 	  argument (always identifier or filename) is now a `const char *';
 | ||
| 	  some second filename arguments now `const char *'.
 | ||
| 	  Fix from Mike Frysinger <vapier@gentoo.org>
 | ||
| 
 | ||
| configure.ac,config.h.in
 | ||
| 	- uintptr_t: make sure it's defined to an integer type wide enough to
 | ||
| 	  hold a pointer
 | ||
| 
 | ||
| lib/sh/tmpfile.c
 | ||
| 	- sh_seedrand: use `uintptr_t' to cast pointer value to int value,
 | ||
| 	  instead of allowing truncation to take place, since srandom takes
 | ||
| 	  an `unsigned int'.
 | ||
| 	  Fix from Mike Frysinger <vapier@gentoo.org>
 | ||
| 
 | ||
| arrayfunc.[ch]
 | ||
| 	- valid_array_reference,array_variable_name,array_variable_part,
 | ||
| 	  array_value_internal,array_value,get_array_value: first argument
 | ||
| 	  (always variable name) now a `const char *'
 | ||
| 	  Fix from Mike Frysinger <vapier@gentoo.org>
 | ||
| 
 | ||
| 				   8/19
 | ||
| 				   ----
 | ||
| print_cmd.c
 | ||
| 	- xtrace_print_word_list: if (xtflags & 2), don't try to quote the
 | ||
| 	  words in the LIST argument.  Intended to be used in places where
 | ||
| 	  the list has not yet been expanded
 | ||
| 	- xtrace_print_for_command_head: call xtrace_print_word_list with
 | ||
| 	  flags argument of 2.  Fixes issue reported by Aharon Robbins
 | ||
| 	  <arnold@skeeve.com>
 | ||
| 	- xtrace_print_select_command_head: call xtrace_print_word_list with
 | ||
| 	  flags argument of 2
 | ||
| 
 | ||
| 				   8/21
 | ||
| 				   ----
 | ||
| lib/sh/netopen.c
 | ||
| 	- netopen: fix memory leak by freeing allocated path before error
 | ||
| 	  return.  Fix from Dmitry Goncharov <dgoncharov@users.sf.net>
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- change conditional commands description to make it clearer that
 | ||
| 	  bash doesn't emulate /dev/fd if the OS provides it
 | ||
| 
 | ||
| 				   8/22
 | ||
| 				   ----
 | ||
| braces.c
 | ||
| 	- expand_amble: free partial and tem on failure to allocate memory
 | ||
| 	  for merged partial+result strvec.  Fix from Dmitry Goncharov
 | ||
| 	  <dgoncharov@users.sf.net>
 | ||
| 
 | ||
| 				   8/23
 | ||
| 				   ----
 | ||
| jobs.c
 | ||
| 	- wait_for: don't call get_tty_state when a job finishes if we're
 | ||
| 	  running it as part of programmable completion.  We test
 | ||
| 	  rl_readline_state.  Fixes bug reported by Jaro Punta
 | ||
| 	  <silly8888@gmail.com>
 | ||
| 
 | ||
| 				   8/24
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- pat_subst: fix memory leak (mstr).  Fix from Dmitry Goncharov
 | ||
| 	  <dgoncharov@users.sf.net>
 | ||
| 	- split_at_delims: fix memory leak (d2).  Fix from Dmitry Goncharov
 | ||
| 	  <dgoncharov@users.sf.net>
 | ||
| 
 | ||
| 				   8/26
 | ||
| 				   ----
 | ||
| subst.c
 | ||
| 	- match_upattern,match_wpattern: make sure that a trailing `*' is
 | ||
| 	  not escaped (preceded by an odd number of backslashes) before we
 | ||
| 	  append a `*' when checking whether a pattern matches anywhere in
 | ||
| 	  the string
 | ||
| 
 | ||
| lib/readline/{input,signals}.c
 | ||
| 	- protect instances of SIGQUIT with #ifdef SIGQUIT; apparently
 | ||
| 	  MinGW doesn't define it
 | ||
| 	- protect instances of SIGHUP with #ifdef SIGHUP; apparently
 | ||
| 	  MinGW doesn't define it.  From a report from Simon Sobisch
 | ||
| 	  <simonsobisch@gnu.org>
 | ||
| 
 | ||
| xmalloc.o
 | ||
| 	- allocerr: only try to find the break and report it if we're using
 | ||
| 	  the bash malloc; there's no guarantee that any other malloc is
 | ||
| 	  using sbrk()
 | ||
| 
 | ||
| doc/{bash.1,bashref.texi}
 | ||
| 	- quote removal: add paragraph mentioning quote removal to beginning
 | ||
| 	  of expansions section, referencing later paragraph.  Report from
 | ||
| 	  Michel Lanne <michel.lanne@gmail.com>
 | ||
| 
 | ||
| 				   8/30
 | ||
| 				   ----
 | ||
| lib/readline/input.c
 | ||
| 	- protect instances of SIGALRM and SIGWINCH with #ifdef; apparently
 | ||
| 	  MinGW doesn't define them.  From a report from Simon Sobisch
 | ||
| 	  <simonsobisch@gnu.org>
 | ||
| 
 | ||
| subst.c
 | ||
| 	- SPECIAL_VAR: make sure name is not the empty string before going on,
 | ||
| 	  empty strings can result in unitialized reads
 | ||
| 	- CHECK_STRING_OVERRUN: semi-general macro to use in *extract* and
 | ||
| 	  similar functions to to check whether a function called to parse an
 | ||
| 	  embedded construct (like a backquoted command substitution) doesn't
 | ||
| 	  consume the entire string because it's unterminated
 | ||
| 	- skip_double_quoted: make sure other extraction functions don't
 | ||
| 	  consume the entire string (which they can if the construct is
 | ||
| 	  unterminated) before incrementing the index and going on.  Uses
 | ||
| 	  CHECK_STRING_OVERRUN
 | ||
| 	- extract_dollar_brace_string: check for unterminated embedded
 | ||
| 	  constructs consuming the entire string with CHECK_STRING_OVERRUN ('`')
 | ||
| 	- skip_matched_pair: use CHECK_STRING_OVERRUN to make sure unterminated
 | ||
| 	  embedded "`", $(, ${ don't cause out-of-bounds reads
 | ||
| 
 | ||
| [bash-4.4 frozen]
 | 
