- 2/14/2011
+ 9/15/2016
---------
-[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á»n Thái Ngá»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
-
-parse.y
- - parse_comsub: when parsing a here-document delimiter, make sure we
- don't try to use `nestret' after freeing it. Fixes bug reported by
- Franco Costantini <franco.costantini.20@gmail.com>
-
-[bash-4.4 frozen]
-
- 9/10
- ----
-trap.c
- - run_debug_trap: only give the terminal to pipeline_pgrp if
- subshell_environment doesn't include SUBSHELL_ASYNC|SUBSHELL_PIPE.
- Fixes bug reported by Matthew Giassa <matthew@giassa.net>
-
-execute_cmd.c
- - execute_simple_command: if user_subshell is set, check and set
- SUBSHELL_ASYNC if asynchronous is set as well as setting
- SUBSHELL_PAREN
+[bash-4.4 released]
9/17
----
for an empty command word on an otherwise blank line, making the
presence of assignment statements optional. Report from
Luca Boccassi <bluca@debian.org>
+
+ 6/20
+ ----
+lib/malloc/malloc.c
+ - morecore,internal_malloc,internal_free: requests for more than
+ 128K bytes (defined as MMAP_THRESHOLD and saved in the new
+ malloc_mmap_threshold variable) are now satisfied via mmap and
+ freed via munmap. We only use mmap if we have mmap and MAP_ANON
+ (or MAP_ANONYMOUS). These blocks are not available for splitting
+ or coalescing, so every request for 128K bytes or smaller is
+ satisfied via sbrk(). We don't use mremap for realloc yet, but
+ we could in the future
+
+lib/malloc/mstats.h
+ - malloc_stats: the malloc stats now include the number of calls to
+ mmap and the total number of bytes requested via mmap. The number
+ of calls to munmap is captured in each bucket's lesscore count
+
+lib/malloc/stats.c
+ - print_malloc_stats: now prints an indication of where the change from
+ sbrk to mmap takes place, and prints number of mmap calls and total
+ number of bytes allocated using mmap
+
+ 6/22
+ ----
+variables.c
+ - get_bashargcv: new dynamic "fetch" variable for BASH_ARGV and
+ BASH_ARGC, for backwards compatibility: if a script makes a
+ reference to either variable at the top level (not in a shell
+ function) without enabling debugging mode and not having initialized
+ the variable previously (using a simple semaphore), create the
+ variables
--- /dev/null
+ 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á»n Thái Ngá»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/2016
+ ---------
+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
+
+parse.y
+ - parse_comsub: when parsing a here-document delimiter, make sure we
+ don't try to use `nestret' after freeing it. Fixes bug reported by
+ Franco Costantini <franco.costantini.20@gmail.com>
+
+[bash-4.4 frozen]
+
+ 9/10
+ ----
+trap.c
+ - run_debug_trap: only give the terminal to pipeline_pgrp if
+ subshell_environment doesn't include SUBSHELL_ASYNC|SUBSHELL_PIPE.
+ Fixes bug reported by Matthew Giassa <matthew@giassa.net>
+
+execute_cmd.c
+ - execute_simple_command: if user_subshell is set, check and set
+ SUBSHELL_ASYNC if asynchronous is set as well as setting
+ SUBSHELL_PAREN
+
WORD_LIST *l, *wl;
COMPSPEC *cs;
- opts_on = opts_off = Eflag = Dflag = 0;
+ opts_on = opts_off = Eflag = Dflag = Iflag = 0;
ret = EXECUTION_SUCCESS;
reset_internal_getopt ();
/* Define if you have the <sys/ioctl.h> header file. */
#undef HAVE_SYS_IOCTL_H
+/* Define if you have the <sys/mman.h> header file. */
+#undef HAVE_SYS_MMAN_H
+
/* Define if you have the <sys/ndir.h> header file. */
#undef HAVE_SYS_NDIR_H
#! /bin/sh
-# From configure.ac for Bash 5.0, version 4.091.
+# From configure.ac for Bash 5.0, version 4.092.
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for bash 5.0-alpha.
#
done
for ac_header in sys/pte.h sys/stream.h sys/select.h sys/file.h sys/ioctl.h \
- sys/param.h sys/socket.h sys/stat.h \
+ sys/mman.h sys/param.h sys/socket.h sys/stat.h \
sys/time.h sys/times.h sys/types.h sys/wait.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-AC_REVISION([for Bash 5.0, version 4.091])dnl
+AC_REVISION([for Bash 5.0, version 4.092])dnl
define(bashvers, 5.0)
define(relstatus, alpha)
stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \
regex.h syslog.h ulimit.h)
AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h sys/ioctl.h \
- sys/param.h sys/socket.h sys/stat.h \
+ sys/mman.h sys/param.h sys/socket.h sys/stat.h \
sys/time.h sys/times.h sys/types.h sys/wait.h)
AC_CHECK_HEADERS(netinet/in.h arpa/inet.h)
option to the
.B shopt
builtin below).
-Setting \fBextdebug\fP after the shell has started to execute a script
+Setting \fBextdebug\fP after the shell has started to execute a script,
+or referencing this variable when \fBextdebug\fP is not set,
may result in inconsistent values.
.TP
.B BASH_ARGV
option to the
.B shopt
builtin below).
-Setting \fBextdebug\fP after the shell has started to execute a script
+Setting \fBextdebug\fP after the shell has started to execute a script,
+or referencing this variable when \fBextdebug\fP is not set,
may result in inconsistent values.
.TP
.B BASH_ARGV0
(see @ref{The Shopt Builtin}
for a description of the @code{extdebug} option to the @code{shopt}
builtin).
-Setting @code{extdebug} after the shell has started to execute a script
+Setting @code{extdebug} after the shell has started to execute a script,
+or referencing this variable when @code{extdebug} is not set,
may result in inconsistent values.
@item BASH_ARGV
(see @ref{The Shopt Builtin}
for a description of the @code{extdebug} option to the @code{shopt}
builtin).
-Setting @code{extdebug} after the shell has started to execute a script
+Setting @code{extdebug} after the shell has started to execute a script,
+or referencing this variable when @code{extdebug} is not set,
may result in inconsistent values.
@item BASH_ARGV0
#include "builtins.h"
#include "common.h"
-#define RETURN(x) \
- do { \
- if (sp) *sp = sec; \
- if (usp) *usp = usec; \
- return (x); \
- } while (0)
-
int
sleep_builtin (list)
WORD_LIST *list;
#include <errno.h>
#include <stdio.h>
+#if defined (HAVE_MMAP)
+#include <sys/mman.h>
+#endif
+
/* Define getpagesize () if the system does not. */
#ifndef HAVE_GETPAGESIZE
# include "getpagesize.h"
#define LESSCORE_MIN 10
#define LESSCORE_FRC 13
-#define MMAP_THRESHOLD 15 /* must be greater than SPLIT_MAX, COMBINE_MAX */
-
#define STARTBUCK 1
+/* Should we use mmap for large allocations? */
+#if defined (HAVE_MMAP)
+# if !defined (MAP_ANON) && defined (MAP_ANONYMOUS)
+# define MAP_ANON MAP_ANONYMOUS
+# endif
+#endif
+
+#if defined (HAVE_MMAP) && defined (MAP_ANON)
+# define USE_MMAP
+#endif
+
+#if defined (USE_MMAP)
+# define MMAP_THRESHOLD 14 /* must be >= SPLIT_MAX, COMBINE_MAX */
+#else
+# define MMAP_THRESHOLD (8 * SIZEOF_LONG)
+#endif
+
/* Flags for the internal functions. */
#define MALLOC_WRAPPER 0x01 /* wrapper function */
#define MALLOC_INTERNAL 0x02 /* internal function calling another */
int malloc_trace = 0; /* trace allocations and frees to stderr */
int malloc_register = 0; /* future use */
+/* Use a variable in case we want to dynamically adapt it in the future */
+int malloc_mmap_threshold = MMAP_THRESHOLD;
+
#ifdef MALLOC_TRACE
char _malloc_trace_buckets[NBUCKETS];
/* Try to split a larger block here, if we're within the range of sizes
to split. */
- if (nu >= SPLIT_MIN)
+ if (nu >= SPLIT_MIN && nu <= malloc_mmap_threshold)
{
bsplit (nu);
if (nextf[nu] != 0)
/* Try to coalesce two adjacent blocks from the free list on nextf[nu - 1],
if we can, and we're within the range of the block coalescing limits. */
- if (nu >= COMBINE_MIN && nu < COMBINE_MAX && busy[nu - 1] == 0 && nextf[nu - 1])
+ if (nu >= COMBINE_MIN && nu < COMBINE_MAX && nu <= malloc_mmap_threshold && busy[nu - 1] == 0 && nextf[nu - 1])
{
bcoalesce (nu);
if (nextf[nu] != 0)
nblks = 1;
}
+#if defined (USE_MMAP)
+ if (nu > malloc_mmap_threshold)
+ {
+ mp = (union mhead *)mmap (0, sbrk_amt, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
+ if ((void *)mp == MAP_FAILED)
+ goto morecore_done;
+ nextf[nu] = mp;
+ mp->mh_alloc = ISFREE;
+ mp->mh_index = nu;
+ CHAIN (mp) = 0;
+#ifdef MALLOC_STATS
+ _mstats.nmmap++;
+ _mstats.tmmap += sbrk_amt;
+#endif
+ goto morecore_done;
+ }
+#endif
+
+
#ifdef MALLOC_STATS
_mstats.nsbrk++;
_mstats.tsbrk += sbrk_amt;
if (mg.i != p->mh_nbytes)
xbotch (mem, ERR_ASSERT_FAILED, _("free: start and end chunk sizes differ"), file, line);
+#if defined (USE_MMAP)
+ if (nunits > malloc_mmap_threshold)
+ {
+ munmap (p, binsize (nunits));
+#if defined (MALLOC_STATS)
+ _mstats.nlesscore[nunits]++;
+#endif
+ goto free_return;
+ }
+#endif
+
#if GLIBC21
if (nunits >= LESSCORE_MIN && ((char *)p + binsize(nunits) == sbrk (0)))
#else
_mstats.nrcopy++;
#endif
+ /* If we are using mmap and have mremap, we could use it here. */
+
if ((m = internal_malloc (n, file, line, MALLOC_INTERNAL|MALLOC_NOTRACE|MALLOC_NOREG)) == 0)
return 0;
FASTCOPY (mem, m, tocopy);
#ifdef MALLOC_STATS
+/* This needs to change if the definition in malloc.c changes */
#ifndef NBUCKETS
# define NBUCKETS 30
#endif
int nsplit[NBUCKETS];
int tbcoalesce;
int ncoalesce[NBUCKETS];
+ int nmmap;
+ bits32_t tmmap;
};
/* Return statistics describing allocation of blocks of size BLOCKSIZE.
int nlesscore;
int nsplit;
int ncoalesce;
+ int nmmap; /* currently unused */
};
extern struct bucket_stats malloc_bucket_stats __P((int));
extern int malloc_free_blocks __P((int));
+extern int malloc_mmap_threshold;
+
extern struct _malstats _mstats;
extern FILE *_imalloc_fopen __P((char *, char *, char *, char *, size_t));
for (i = totused = totfree = 0; i < NBUCKETS; i++)
{
v = malloc_bucket_stats (i);
+ /* Show where the mmap threshold is; sizes greater than this use mmap to
+ allocate and munmap to free (munmap shows up as lesscore). */
+ if (i == malloc_mmap_threshold+1)
+ fprintf (fp, "--------\n");
if (v.nmal > 0)
fprintf (fp, "%8lu\t%4d\t%6d\t%5d\t%8d\t%8d %5d %8d\n", (unsigned long)v.blocksize, v.nfree, v.nused, v.nmal, v.nmorecore, v.nlesscore, v.nsplit, v.ncoalesce);
totfree += v.nfree * v.blocksize;
_mstats.nmal, _mstats.nfre, _mstats.nrealloc, _mstats.nrcopy);
fprintf (fp, "Total sbrks: %d, total bytes via sbrk: %d\n",
_mstats.nsbrk, _mstats.tsbrk);
+ fprintf (fp, "Total mmaps: %d, total bytes via mmap: %d\n",
+ _mstats.nmmap, _mstats.tmmap);
fprintf (fp, "Total blocks split: %d, total block coalesces: %d\n",
_mstats.tbsplit, _mstats.tbcoalesce);
}
If @var{map} is @code{NULL}, the current keymap is used. If @var{type} is
not @code{NULL}, the type of the object is returned in the @code{int} variable
it points to (one of @code{ISFUNC}, @code{ISKMAP}, or @code{ISMACR}).
+It takes a "translated" key sequence and should not be used if the key sequence
+can include NUL.
@end deftypefun
-@deftypefun {rl_command_func_t *} rl_function_of_keyseq_len (const char *keyseq, size_t len Keymap map, int *type)
+@deftypefun {rl_command_func_t *} rl_function_of_keyseq_len (const char *keyseq, size_t len, Keymap map, int *type)
Return the function invoked by @var{keyseq} of length @var{len}
in keymap @var{map}. Equivalent to @code{rl_function_of_keyseq} with the
addition of the @var{len} parameter.
+It takes a "translated" key sequence and should be used if the key sequence
+can include NUL.
@end deftypefun
@deftypefun {char **} rl_invoking_keyseqs (rl_command_func_t *function)
-BUILD_DIR=/usr/local/build/chet/bash/bash-current
+BUILD_DIR=/usr/local/build/bash/bash-current
THIS_SH=$BUILD_DIR/bash
PATH=$PATH:$BUILD_DIR
#if defined (ARRAY_VARS)
static SHELL_VAR *get_groupset __P((SHELL_VAR *));
-
+# if defined (DEBUGGER)
+static SHELL_VAR *get_bashargcv __P((SHELL_VAR *));
+# endif
static SHELL_VAR *build_hashcmd __P((SHELL_VAR *));
static SHELL_VAR *get_hashcmd __P((SHELL_VAR *));
static SHELL_VAR *assign_hashcmd __P((SHELL_VAR *, char *, arrayind_t, char *));
return (self);
}
+# if defined (DEBUGGER)
+static SHELL_VAR *
+get_bashargcv (self)
+ SHELL_VAR *self;
+{
+ static int self_semaphore = 0;
+
+ /* Backwards compatibility: if we refer to BASH_ARGV or BASH_ARGC at the
+ top level without enabling debug mode, and we don't have an instance
+ of the variable set, initialize the arg arrays.
+ This will already have been done if debugging_mode != 0. */
+ if (self_semaphore == 0 && variable_context == 0 && debugging_mode == 0) /* don't do it for shell functions */
+ {
+ self_semaphore = 1;
+ init_bash_argv ();
+ self_semaphore = 0;
+ }
+ return self;
+}
+# endif
+
static SHELL_VAR *
build_hashcmd (self)
SHELL_VAR *self;
v = init_dynamic_array_var ("GROUPS", get_groupset, null_array_assign, att_noassign);
# if defined (DEBUGGER)
- v = init_dynamic_array_var ("BASH_ARGC", get_self, null_array_assign, att_noassign|att_nounset);
- v = init_dynamic_array_var ("BASH_ARGV", get_self, null_array_assign, att_noassign|att_nounset);
+ v = init_dynamic_array_var ("BASH_ARGC", get_bashargcv, null_array_assign, att_noassign|att_nounset);
+ v = init_dynamic_array_var ("BASH_ARGV", get_bashargcv, null_array_assign, att_noassign|att_nounset);
# endif /* DEBUGGER */
v = init_dynamic_array_var ("BASH_SOURCE", get_self, null_array_assign, att_noassign|att_nounset);
v = init_dynamic_array_var ("BASH_LINENO", get_self, null_array_assign, att_noassign|att_nounset);