Bash-4.3 distribution sources and documentation
[platform/upstream/bash.git] / CWRU / changelog
index 9126b6b..354720a 100644 (file)
-                               12/23/1996
-                               ----------
-[bash-2.0 released]
+                                2/14/2011
+                                ---------
+[bash-4.2 released]
 
-                                  12/27
-                                  -----
-configure.in
-       - don't automatically use GNU malloc on FreeBSD, the builtin one
-         is supposed to be better (but doesn't have the debugging hooks)
+                                  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>
 
-builtins/exec.def
-       - check that full_pathname(command) doesn't return NULL because of
-         inaccessible parent directories
+                                  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
 
-support/config.sub
-       - recognize OpenBSD
+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>
 
-execute_cmd.c
-       - broke the code that opens a file for output redirection when in
-         noclobber mode out into a separate function: noclobber_open().
-         This tries to avoid race conditions and file replacement between
-         stat(2) and open(2)
+doc/{bash.1,bashref.texi}
+       - document the exact expansions here strings undergo
 
-subst.c
-       - make sure pat_subst does not run off the end of its return
-         string when copying the unmatched portion of the input string
+                                  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>
 
-                                  12/30
-                                  -----
-doc/Makefile.in
-       - don't install readline.3 by default
+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
 
-lib/tilde/tilde.c
-       - removed an unnecessary check for string[i] being non-null in
-         tilde_find_suffix
+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
 
-                                  12/31
-                                  -----
-support/config.{sub,guess}
-       - merged in changes from config.sub in autoconf-2.12 distribution
+                                  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>
 
-lib/readline/readline.c
-       - in rl_newline, only call _rl_vi_done_inserting and _rl_vi_reset_last
-         if readline is currently in vi mode
+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>
 
-lib/readline/display.c
-       - corrected a misuse of inv_lbreaks where vis_lbreaks was wanted in
-         the code that decides whether the cursor is at the beginning of
-         an otherwise-empty line
+                                  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
 
-                                1/2/1997
-                                --------
-support/bashbug.sh
-       - fixed a typo, thanks to eggert@twinsun.com
+variables.h
+       - new extern declaration for chkexport
 
-aclocal.m4
-       - new test, BASH_STRUCT_DIRENT_D_FILENO, testing for d_fileno member
-         of struct dirent
 
-configure.in
-       - call BASH_STRUCT_DIRENT_D_FILENO
+{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>
 
-config.h.in
-       - new #define for STRUCT_DIRENT_HAS_D_FILENO
+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>
 
-lib/posixheaders/posixdir.h
-       - only define d_fileno as d_ino if STRUCT_DIRENT_HAS_D_INO is defined
-         and STRUCT_DIRENT_HAS_D_FILENO is not defined.  This fixed the
-         problem of compiling getcwd.c on SunOS4.1.4 with cc
+support/shobj-conf
+       - add a stanza for nsk on the Tandem from Joachim Schmitz
+         <jojo@schmitz-digital.de>
 
-                                   1/3
-                                   ---
-lib/readline/complete.c
-       - fix a memory-used-after-freed bug reported by Andreas Schwab
+{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>
 
-configure.in
-       - call BASH_CHECK_SOCKLIB only if getpeername is not found in libc
-         (ac_cv_func_getpeername = no)
+                                   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>
 
-                                  1/13
-                                  ----
+                                   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>
 
-builtins/getopt.h
-       - change #define guard to _SH_GETOPT_H to avoid similar guards in
-         /usr/include/getopt.h (Dec OSF/1 4.x, for example)
+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>
 
-variables.h
-       - fix assign_array_from_string so that it rejects attempts to assign
-         to readonly variables
+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
-       - fix verify_substring_values to handle offsets that are past the
-         end or before the beginning (in the case of a negative offset)
-         of the expanded variable value
+       - 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>
 
-                                  1/14
-                                  ----
-bashline.c
-       - fix a problem where any completion after a `cmd` command
-         substitution would inappropriately attempt command completion,
-         even if the previous command substitution was correctly closed
+                                   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>
 
-builtins/evalstring.c
-       - unwind_protect remember_on_history even if the shell is not
-         interactive, since history can now be used in scripts, and
-         `source' will turn off interactive_shell before calling
-         parse_and_execute
+                                   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
-       - new function get_job_by_pid(pid, block) to translate a pid to
-         a job number.  The block argument says whether or not to block
-         SIGCHLD
+       - 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>
 
-jobs.h
-       - new extern declaration for get_job_by_pid
+                                   3/8
+                                   ---
+shell.c
+       - initialize no_line_editing to 1 if READLINE is not defined -- we
+         can't have line editing without readline
 
-builtins/jobs.def
-       - call get_job_by_pid if an argument appears to be a pid rather
-         than a jobspec
+                                  3/12
+                                  ----
+lib/readline/signals.c
+       - add SIGHUP to the set of signals readline handles
 
-configure.in
-       - configure --without-gnu-malloc automatically on MachTen 4.x
+lib/readline/doc/rltech.texi
+       - document that SIGHUP is now part of the set of signals readline
+         handles
 
-builtins/cd.def
-       - change to mindist() so that a best guess of `.' returns 3,
-         which means not reasonable
+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
 
-lib/posixheaders/memalloc.h
-       - changed hpux_9 to __hpux, since the new config stuff doesn't
-         define hpux_9
+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
 
-subst.c
-       - fix parameter_brace_patsub to handle null patterns (doesn't
-         do anything)
+input.c
+       - rearrange getc_with_restart so that the return values from read()
+         are handled right
 
-oslib.c
-       - slight change to bzero replacement
+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
 
-support/bashbug.sh
-       - changed TEMP to be /tmp/bbug.$$ as a sop to systems with 14-char
-         file names
+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
 
-doc/bashref.texi
-       - add note to POSIX Mode section that the output of `set' when
-         invoked without arguments is sorted when in POSIX mode
+builtins/read.def
+       - take out setting terminate_immediately; add calls to CHECK_TERMSIG
+         after read calls
 
-                                  1/15
-                                  ----
-support/recho.c
-       - a couple of changes prompted by a `gcc -Wall'
+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>
 
-subst.c
-       - changed ASSIGN_RETURN macro to use the do...while(0) idiom to
-         avoid problems with its multiple statements
+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
 
-builtins/setattr.def
-       - a bad identifier given to readonly or export without an assignment
-         statement (e.g. `readonly a[5]') is an error, but not an assignment
-         error (i.e., return EXECUTION_FAILURE rather than EX_BADASSIGN)
+                                  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
 
-tests/{{array,new-exp}.,tilde-}tests
-       - added `set +o posix' at the beginning to disable POSIX mode, which
-         causes some of the tests to fail.  Some systems (e.g. LINUX-FT),
-         set POSIXLY_CORRECT by default
+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>
 
-tests/test-tests
-       - added a warning if $UID is 0 to the effect that the test suite
-         should not be run as root
-       - worked around the `noread' and `nowrite' tests failing when run
-         as root
+                                  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
 
-test.c
-       - began removing the remains of the STANDALONE code, since test is
-         included in GNU shellutils
+                                  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)
 
-                                  1/16
+                                  3/24
                                   ----
-lib/readline/{readline,display}.c
-       - a couple of slight changes to build on Win95 using djgpp (reported
-         by x-aes@telelogic.se)
+doc/{bash.1,bashref.texi}
+       - slightly modify BASH_SUBSHELL description based on complaint from
+         Sam Liddicott <sam@liddicott.com>
 
-Makefile.in
-       - changed TERMCAP_LIBDIR to TERM_LIBDIR, so building the termcap
-         library (if necessary) should work now
+                                  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>
 
-bashline.c
-       - new function: quote_word_break_characters(), to backslash-quote 
-         characters in a filename that the readline completion code would
-         treat as word breaks
-       - change bash_quote_filename to call quote_word_break_characters if
-         the completion quoting style says to use backslashes
-       - add `:' to rl_filename_quote_characters, since it's part of
-         filename_word_break_characters
-
-lib/posixheaders/posixjmp.h
-       - new file, with half of bashjmp.h
-       - posixjmp.h and lib/readline/posixjmp.h are symlinks to this file
-
-bashjmp.h
-       - include "posixjmp.h" for possible redefinitions of setjmp/longjmp
-         and procenv_t
+                                  3/26
+                                  ----
+lib/readline/rltypedefs.h
+       - remove old Function/VFunction/CPFunction/CPPFunction typedefs as
+         suggested by Tom Tromey <tromey@redhat.com>
 
-                                  1/17
+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
                                   ----
-shell.c
-       - bad options now cause the standard shell usage message (a subset
-         of what `bash --help' prints) to be displayed on stderr
+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>
 
-trap.c
-       - don't free the trap command for a DEBUG trap in
-         restore_default_signal if SIG_INPROGRESS is set -- there's already
-         a pointer saved to the old value in _run_trap_internal.  This
-         makes bashdb run better, too
+lib/readline/shell.c
+       - change sh_set_lines_and_columns to use static buffers instead of
+         allocating the buffers to pass to setenv/putenv
 
-examples/bashdb/bashdb.{pre,fns}
-       - a couple of minor fixes; it actually has a chance of working now
+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
 
-                                  1/21
+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
                                   ----
-config.h.in
-       - add a define for <dlfcn.h>, HAVE_DLFCN_H
+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
-       - look for <dlfcn.h>, define HAVE_DLFCN_H if found
-
-builtins/enable.def
-       - include <dlfcn.h> only if HAVE_DLFCN_H is defined
+       - don't check for isinf or isnan; c99 says they're macros anyway
 
-lib/readline/display.c
-       - renamed clear_to_eol to _rl_clear_to_eol and made it global, so
-         other library files (readline.c) can use it
-       - new function _rl_clear_screen, to clear the screen with the right
-         termcap escape sequence
+config.h.in
+       - remove defines for ISINF_IN_LIBC and ISNAN_IN_LIBC, no longer used
+         by snprintf.c
 
-lib/readline/readline.c
-       - call _rl_clear_to_eol and _rl_clear_screen instead of using tputs
-       - extern declarations for _rl_clear_to_eol and _rl_clear_screen
+                                   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>
 
-                                  1/22
-                                  ----
-mailcheck.c
-       - fixed a problem in make_default_mailpath() where a slash was not
-         added between the default mail directory and the username
+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
 
-                                  1/23
-                                  ----
-stringlib.c
-       - added a fourth parameter to ansicstr: the length of the returned
-         string
+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>
 
-externs.h
-       - changed declaration of ansicstr
+                                   4/6
+                                   ---
 
-parse.y
-       - changed call to ansicstr -- saves a call to strlen
+config-top.h
+       - change DEFAULT_PATH_VALUE to something more useful and modern
 
-builtins/echo.def
-       - changed call to ansicstr
-       - if do_v9 is non-zero, use putchar to output the string instead
-         of printf, since there may be embedded NULL characters
+                                   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>
 
-doc/{bash.1,bashref.texi}, builtins/trap.def
-       - modified the `trap' documentation to make it clearer that trap
-         takes multiple signal specs as arguments
+                                  4/11
+                                  ----
+include/chartypes.h
+       - fix a couple of dicey defines (though ones that don't cause any
+         compiler warnings) in IN_CTYPE_DOMAIN
 
-jobs.c, nojobs.c, jobs.h
-       - renamed initialize_jobs to initialize_job_control, added an
-         argument (force)
+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>
 
-jobs.c
-       - set shell_tty to fileno(stderr) in initialize_job_control if
-         the shell is not interactive.  This fixes the problem of bad
-         tty pgrps when monitor mode is turned on in a non-interactive
-         shell
+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
 
-sig.c
-       - made initialize_terminating_signals do only that; moved the rest
-         of the code that used to be there into a new function:
-         initialize_shell_signals, which calls initialize_terminating_signals
-         if the shell is interactive
-       - initialize_terminating_signals is now extern
-       - made reset_terminating_signals return immediately if
-         termsigs_intitialized is zero, meaning that
-         initialize_terminating_signals has not been called
+pcomplete.h
+       - new extern declaration for it_helptopics
 
-sig.h
-       - new extern declaration for initialize_terminating_signals
+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>
 
-trap.c
-       - call initialize_terminating_signals from set_signal if sig is
-         EXIT_TRAP and the shell is not interactive.  Since the terminating
-         signals do not need to be initialized until a trap on exit is
-         set, not doing that at startup should result in a speed increase
-         for scripts
+                                  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
-       - save and restore command->flags in time_command, so you can use
-         `time command' in a loop
+       - 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
 
-                                  1/24
+                                  4/13
                                   ----
-lib/readline/display.c
-       - fix redisplay code to wrap correctly if the prompt is longer than
-         the screen width (reported by bos@Eng.Sun.COM)
-
-lib/readline/undo.c
-       - don't include <setjmp.h>, it's not needed
+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 `)'
 
-lib/readline/{util,readline}.c
-       - include "posixjmp.h" instead of <setjmp.h>
-       - readline_top_level is now a `procenv_t' instead of a `jmp_buf'
-         (now readline uses the correct posix semantics for preserving
-         the signal mask and other things across longjmp)
+                                  4/14
+                                  ----
+print_cmd.c
+       - change overlapping strcpy in named_function_string to memmove
 
-parse.y
-       - fixes to push_string/pop_string to make them more general -- they
-         now can be used generally, instead of having to be associated
-         with an alias being expanded
-       - fixes to the parser so that it parses (( ls abc; ls def); ls ghi)
-         as a nested subshell command for backwards compatibility.  Broke
-         the double-paren expression parsing off into a new function:
-         parse_arith_cmd, called from read_token when a `((' is seen.  If
-         it looks like an arithmetic command, return `let' and set things
-         up so that the expression is returned as a double-quoted string
-         by the next call to read_token.  If it's a nested subshell, push
-         the text we parsed onto the list of strings for later consumption
-         and return `('
+sig.h
+       - UNBLOCK_SIGNAL: convenience define, same as UNBLOCK_CHILD, just
+         restores an old signal mask
 
-lib/glob/glob.c
-       - fix glob_vector so it doesn't short-circuit checking a filename if
-         it starts with a `.' and the pattern starts with `\.' (if
-         noglob_dot_filenames is set).  This makes `".junk2"*' match
-         `.junk2.txt' correctly
+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>
 
-                                  1/27
+                                  4/15
                                   ----
-support/bashbug.sh
-       - ask for confirmation before sending the bug report
+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
-       - when editing and re-executing a multiline command, make sure
-         current_command_line_count is initialized and then incremented
-         for each line read from the file so that the lines added to
-         the history list by fc_replhist and fc_addhist obey the `lithist'
-         and `cmdhist' shopt options.  Reported by tibbitts@pb.seflin.org
+       - 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>
 
-                                  1/28
+                                  4/19
                                   ----
-lib/readline/readline.h
-       - added a couple of extern declarations for variables described in
-         the documentation but heretofore undeclared
-
-builtins/ulimit.def
-       - try to catch some classes of integer overflows before calling
-         set_limit
+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
 
-                                  1/29
+                                  4/22
                                   ----
-parse.y
-       - push and pop a `(' delimiter while parsing a $(...) construct, so
-         the history code doesn't try to inappropriately add a `;' when
-         a newline appears in the `...'
+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
 
-aclocal.m4
-       - new macro, BASH_STRUCT_WINSIZE, which looks for `struct winsize'
-         in <sys/ioctl.h> (or one of the files it includes)
+lib/readline/rlprivate.h
+       - extern declaration for _rl_disable_meta_key
 
 configure.in
-       - call BASH_STRUCT_WINSIZE
-       - slightly reorganized the calls to bash-specific macros
-
-config.h.in
-       - add an `#undef STRUCT_WINSIZE_IN_SYS_IOCTL'
-
-jobs.c, nojobs.c
-       - only look in sys/ptem.h for struct winsize if
-         STRUCT_WINSIZE_IN_SYS_IOCTL is not defined to cpp
+       - 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>
 
-                                  1/30
+                                  4/26
                                   ----
-.{distribution,patchlevel}
-       - renamed to _{distribution,patchlevel}
+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
 
-configure.in
-       - create a variable BASHVERS, from the contents of _distribution,
-         and a variable BASHPATCH, from the contents of _patchlevel,
-         (using m4 magic so we don't have to distribute .distribution
-         and .patchlevel) and substitute them into Makefile.in
+                                  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>
 
-Makefile.in
-       - use Version and PatchLevel variables instead of the contents of
-         .distribution and .patchlevel, respectively.  These are set by
-         configure
-       - removed `.machine' from targets and dependencies
+                                   5/2
+                                   ---
+doc/{bash.1,bashref.texi}
+       - add forward reference to `Pattern Matching' from `Pathname
+         Expansion', suggested by Greg Wooledge <wooledg@eeg.ccf.org>
 
-support/mkversion.sh
-       - new shell script to handle updating version.h, replaces mkversion.c
-         (which is now overkill)
+                                   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
 
-support/mkdist
-       - don't bother with writing .distribution and .patchlevel files,
-         since they're no longer distributed
+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>
 
-support/mknewvers.sh
-       - simple bash script to make new version files.  It can increment
-         the major or minor version numbers or patchlevel, or take a
-         completely new version number (e.g., 2.01) as an argument
+                                   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>
 
-doc/Makefile.in
-       - added support for the `install-info' command to update the info
-         directory file after installing bash.info
+                                   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>
 
-                                  1/31
+                                  5/10
                                   ----
-builtins/help.def
-       - fix core dump with `help --'
+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>
 
-susbt.c
-       - make call_expand_word_internal obey the convention that if
-         expand_word_internal returns &expand_word_{fatal,error}, then
-         w->word has already been freed
-       - return &expand_word_fatal from expand_word_internal if the shell
-         is not interactive and `set -u' has been executed
+                                  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
 
-test.c, general.c
-       - moved group_member from test.c to general.c
+                                  5/12
+                                  ----
+configure.in
+       - set the prefer_shared and prefer_static variables appropriately
+         depending on the value of $opt_static_link
 
-externs.h, general.h
-       - moved extern declaration of group_member from externs.h to general.h
+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>
 
-general.c
-       - broke the code that initializes the group array out into a new
-         function, initialize_group_array()
-       - initialize_group_array() now initializes an array even if the OS
-         does not have getgroups().  If it does not, an array with one
-         element (the real gid) is created
-       - call sysconf(_SC_NGROUPS_MAX) if sysconf is available and
-         _SC_NGROUPS_MAX is defined
-       - new function, char **get_group_list(int *), to return an array
-         of strings made from the groups list
+                                  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>
 
-variables.c
-       - new dynamic array variable: GROUPS, expands to the group set as
-         obtained with getgroups() (or whatever initialize_group_array()
-         makes)
+builtins/help.def
+       - help_builtin: change strncmp to strcmp so that `help read' no longer
+         matches `readonly'.  Suggested by Clark Wang <dearvoid@gmail.com>
 
-doc/{bash.{1,html},bashref.texi}
-       - added description of GROUPS variable
+config.h.in
+       - add define for GLIBC21, checked using jm_GLIBC21 as part of the tests
+         for libintl
 
-test/test-tests
-       - before modifying the setgid bit on /tmp/setgid, try to change its
-         group to ${GROUPS[0]} 
+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>
 
-                                   2/3
-                                   ---
 aclocal.m4
-       - new autconf macro, BASH_MISC_SPEED_T, to see if speed_t is defined
-         in <sys/types.h>
+       - BASH_STRUCT_WEXITSTATUS_OFFSET: change AC_RUN_IFELSE to AC_TRY_RUN
+         to avoid warning about not using AC_LANG_SOURCE
 
-configure.in
-       - call BASH_MISC_SPEED_T
+                                  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
 
-config.h.in
-       - add `#undef SPEED_T_IN_SYS_TYPES'
+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
 
-lib/readline/tcap.h
-       - include `rltty.h' if HAVE_TERMCAP_H and __linux__ are defined, but
-         SPEED_T_IN_SYS_STYPES is not, before including <termcap.h>
+                                  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>
 
-support/mksignames.c, siglist.c
-       - add support for 4.4 BSD SIGLOST
+                                  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).
 
-support/config.guess
-       - add support for recognizing QNX based on `uname' output
+lib/readline/{complete,display,mbutil}.c
+       - use WCWIDTH instead of wcwidth
 
-Makefile.in
-       - make sure recho and zecho are compiled with the same set of CC
-         options as the rest of the sources
+                                  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/bind.c
-       - change calls to rl_generic_bind to cast the third argument to
-         (char *) where necessary
+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
 
-command.h
-       - two new flags: CMD_AMPERSAND (currently unused), and CMD_STDIN_REDIR,
-         which means that this command should have its standard input
-         redirected from /dev/null if there are not any explicit redirections
-         to stdin
+lib/readline/rlprivate.h
+       - extern declaration for _rl_utf8locale
 
-execute_cmd.c
-       - a redirection of type r_inputa_direction is no longer added at the
-         beginning of the redirection chain for an async command;
-         CMD_STDIN_REDIR is set in the flags instead
-       - new function: stdin_redirects: returns the number of redirections to
-         stdin in a chain of redirections
-       - new functions: async_redirect_stdin() to open /dev/null and make it
-         file descriptor 0
-       - changes to make CMD_STDIN_REDIR propagate to all of the necessary
-         functions (like execute_simple_command)
-       - execute_disk command now takes the flags from simple_command rather
-         than just the CMD_NO_FORK flag as its last argument
-       - various places after make_child is executed (in the child) check for
-         CMD_STDIN_REDIRECT (and no stdin redirections or piping) and call
-         async_redirect_stdin
-       - stdin_redir is now global
+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
 
-eval.c
-       - set stdin_redir to 0 just before calling execute_command so it
-         gets reset to a known value and doesn't persist across commands
+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
 
-                                   2/4
-                                   ---
-builtins/ulimit.def
-       - add a stub function for ulimit(2) on systems without HAVE_RESOURCE
-         or HAVE_ULIMIT that just sets errno to EINVAL and returns -1 --
-         QNX is one such system
+config.h.in
+       - WCWIDTH_BROKEN: new define
 
-bashhist.c
-       - pre_process_line needs to protect all occurrences of hist_verify
-         with #ifdef READLINE
+lib/readline/rlmbutil.h
+       - change WCWIDTH macro to use _rl_utf8locale and the full range of
+         Unicode combining characters (U+0300-U+036F)
 
-builtins/shopt.def
-       - hist_verify needs to be protected with #ifdef READLINE, not
-         #ifdef HISTORY
-
-                                   2/5
-                                   ---
-support/config.{guess,sub}, configure.in
-       - chages to better support the Harris Night Hawk
+                                  5/19
+                                  ----
+lib/readline/rlprivate.h
+       - _rl_search_context: new member, prevc, will hold character read
+         prior to lastc
 
-[many files]
-       - changes for things pointed out by gcc -Wall
+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>
 
-lib/glob/Makefile.in
-       - make sure -DSHELL is included in CCFLAGS so that globbing is
-         interruptible
+                                  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>
 
-lib/malloc/malloc.c
-       - extern declaration for botch: if botch is #defined, it should be
-         the name of a void function
+                                  5/26
+                                  ----
 
-configure.in,Makefile.in,builtins/Makefile.in,
-lib/{glob,malloc,readline,tilde}/Makefile.in
-       - add a LOCAL_DEFS variable, substituted from configure into the
-         various Makefiles.  It's set to -DSHELL, so that define gets
-         passed to all sub-makes without doing anything special
+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.c
-       - change to rl_digit_loop to make it compatible with GNU emacs:
-         if a key bound to `universal-argument' is read after reading
-         some digits, it terminates the argument but is otherwise
-         ignored.  This is how people can insert repeated digits
+lib/readline/readline.h
+       - extern declarations for rl_history_substr_search_{for,back}ward
 
-doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo
-       - changed description of `universal-argument' to describe how
-         to terminate a numeric argument
+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
 
-                                   2/6
-                                   ---
-jobs.c
-       - changed kill_pid to diddle the job and process data structures
-         if we're sending SIGCONT to a stopped job with `kill' so that
-         the shell knows the job is running again.  ksh93 does this
+lib/readline/doc/{rluser.texi,readline.3}
+       - document history-substring-search-forward and
+         history-substring-search-backward
 
-                                   2/7
-                                   ---
-unwind_prot.c
-       - changed bcopy to FASTCOPY
+                                  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>
 
-builtins/enable.def
-       - changed pointer arithmetic in delete_builtin to just subtract
-         the head of the builtins list (shell_builtins) from a pointer
-         to the builtin to be deleted (b) to find its index in the list
-         on ANSI C systems
+config-top.h
+       - DONT_REPORT_SIGTERM: new user-modifiable setting.  Commented out
+         by default
 
-                                  2/10
+                                  5/28
                                   ----
 lib/readline/bind.c
-       - when using old-style keynames to bind to a new-style macro,
-         pass an array of type (unsigned char *) to rl_macro_bind
-
-builtins/getopt.c
-       - change sh_getopt to return EOF if nextchar is empty or NULL
-         and sh_optind is greater than argc.  This can happen if a
-         script mixes calls to `getopts' with calls to `shift'
+       - _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.
 
-                                  2/11
+                                  5/29
                                   ----
-print_cmd.c
-       - fixed make_command_string_internal so that commands with the
-         CMD_TIME_POSIX flag set print `time -p' instead of `time'
-       - changed print_redirection_list so the here documents are
-         printed after all the other redirections, and followed by a
-         newline (rather than a possible semicolon)
-       - added a new variable, was_heredoc, to avoid adding a semicolon
-         at the beginning of an empty line after printing the heredoc
-         ending delimiter
-
-execute_cmd.c
-       - don't put the gnu_argv_flags into the environment any more; it's
-         proven to be a bad idea
-
-configure.in
-       - set LOCAL_CFLAGS to `-DSunOS5' on Solaris 5.5[.x]
-
-builtins/echo.def
-       - only call fflush() after printing each word on SunOS 5.5, since
-         that's the system with the bug that prompted its inclusion in
-         the first place
-
-support/mksignames.c
-       - added support for more system-specific signals from AIX 4.2,
-         changed initialization order so that system-specific signals
-         are done first, before the common signals
+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>
 
-                                  2/12
+                                  6/4
                                   ----
-execute_cmd.c
-       - broke the code that creates a file containing the text of a
-         here document out into a separate function: here_doc_to_fd
-       - create the temp file used for a here document with mode 600
-       - open the temp file used for a here document with O_EXCL
-
-shell.h
-       - changed the uid members of struct user_info to be of type uid_t
-         and the gid members to be of type gid_t
-
-parse.y
-       - changed the type of the `type' argument to init_yy_io() to be
-         `enum stream_type', since that's what's always passed
-
-input.h
-       - changed the function prototype for init_yy_io so the third arg is
-         type `enum stream_type'
-
-externs.h
-       - added a prototype for getcwd, if HAVE_GETCWD is not defined
+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.
 
-builtins/umask.def
-       - changed all variables that are used as arguments to or save the
-         return value from umask(2) to be of type mode_t
-       - changed print_symbolic_umask to take an argument of type mode_t
 
-                                  2/13
+                                  6/21
                                   ----
-jobs.c
-       - if old_sigint_handler is set to SIG_DFL, as it will be in a script
-         without a trap on SIGINT installed, call termination_unwind_protect()
-         directly from waitchld()
+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>
 
-                                  2/14
+                                  6/24
                                   ----
-configure.in
-       - added a section before the call to BASH_CHECK_LIB_TERMCAP to
-         set a variable prefer_curses on some systems (AIX, for one)
-
-aclocal.m4
-       - in BASH_CHECK_LIB_TERMCAP, don't return -ltermcap if $prefer_curses
-         is non-empty
+{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>
 
-lib/readline/Makefile.in
-       - redid the dependencies
+doc/{bash.1,bashref.texi}
+       - checkwinsize: remove language saying that only interactive shells
+         check the window size after each command
 
-                                  2/17
-                                  ----
-hashlib.c, getcwd.c
-       - include `bashansi.h' instead of stdlib.h and string.h
+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
 
-error.c, siglist.c, xmalloc.c, builtins/{common,evalfile,mkbuiltins,psize}.c,
-builtins/{exec,exit,fg_bg,hash,history}.def
-       - include `bashtypes.h' instead of directly including <sys/types.h> 
+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>
 
-builtins/fc.def
-       - include ../bashtypes.h and ../posixstat.h instead of bashtypes.h
-         and posixstat.h
+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
 
-builtins/mkbuiltins.c
-       - include ../posixstat.h instead of <sys/stat.h>
+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
 
-general.h
-       - include `bashtypes.h' if RLIMTYPE is defined, so we can fetch
-         a definition of quad_t (or whatever) from <sys/types.h> before
-         using it in a function prototype
+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
 
-Makefile.in, builtins/Makefile.in
-       - updated dependencies
+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>
 
-                                  2/18
+                                  6/30
                                   ----
-builtins/set.def
-       - new function, set_posix_mode, called when `set [-+]o posix'
-         or `shopt -[su] -o posix' is executed.  It sets or unsets
-         $POSIXLY_CORRECT and calls sv_strict_posix
-
-subst.c
-       - in sv_strict_posix, call posix_readline_initialize only if
-         the shell is interactive (interactive_shell != 0)
+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>
 
-shell.c
-       - if we are acting like `sh', call posix_readline_initialize
-         if the shell is interactive
-       - moved the code that does posix.2 mode initialization after
-         interactive_shell is set, and call posix_readline_initialize
-         if interactive_shell is non-zero
+                                   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
 
-bashwait.h
-       - renamed to unionwait.h, since that is what it defines
+lib/readline/signals.c
+       - rl_signal_handler: if we're in callback mode, don't interrupt
+         immediately on a SIGWINCH
 
-posixwait.h
-       - moved the POSIX 1003.1 job control defines here from jobs.h
+                                   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
 
-jobs.h
-       - include `posixwait.h'
+bashline.h
+       - extern declaration for set_directory_hook so shopt code can use it
 
-                                  2/19
-                                  ----
-braces.c
-       - if SHELL is defined, pass the contents of new-style command
-         substitution through without expanding brace constructs between
-         the parens -- let the subshell do 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>
 
-subst.c
-       - when brace-expanding words, preserve the flags (word->flags) if
-         brace expansion does not change the word.  This fixes the problem
-         of things like
+                                   7/7
+                                   ---
+doc/{bash.1,bashref.texi}
+       - document new `globasciiranges' shopt option
 
-                local -a avar=( ${PATH//: } );
+                                   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
 
-bashline.c
-       - have shell_expand_line pass a copy of rl_line_buffer to expand_string
-         in case there are substitution errors and the string gets freed
+doc/{bash.1,bashref.texi}
+       - document new `direxpand' shopt option
 
-                                  2/20
+                                  7/15
                                   ----
-expr.c
-       - make sure that expland and explor set `lasttok' to LAND and LOR,
-         respectively, if they parse `&&' or `||'.  This makes the
-         precedence code work right
-
-subst.c
-       - changes so that non-interactive shells exit immediately when a
-         parameter that is unset is referenced after `set -u' has been
-         executed causes the shell to exit immediately
+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
 
-                                  2/21
+                                  7/18
                                   ----
-flags.c
-       - if `set -r' is executed, call maybe_make_restricted so that $PATH
-         and $SHELL are made read-only
-
-execute_cmd.c
-       - if `set -e' has been executed, and we're inverting a pipeline's
-         return status with `!', set CMD_IGNORE_RETURN so a failing
-         command does not inadvertently cause the shell to exit before
-         the exit status can be inverted.  This is probably only a problem
-         with the `eval' builtin.
+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
 
-                                  2/24
+                                  7/24
                                   ----
-builtins/hash.def
-       - add a missing argument of 0 to add_hashed_command
-
-builtins/kill.def
-       - job identifiers can be used in non-interactive shells as long as
-         job control has been turned on with `set -m'
-
-jobs.c
-       - we want to be notified of stopped jobs if job_control is non-zero,
-         even if the shell is not interactive
-
-execute_cmd.c
-       - make sure shell_execve returns EX_NOTFOUND if execve fails and
-         errno is set to ENOENT
-       - makes sure execute_builtin saves the temporary environment to
-         builtin_env for the `eval' builtin, since it can destroy the
-         temporary environment when it calls parse_and_execute
+lib/readline/isearch.c
+       - _rl_isearch_dispatch: save and restore cxt->mb and cxt->pmb
+         appropriately when in a multibyte locale
 
-bashhist.c
-       - new variable: hist_last_line_added, set to 1 if the last command
-         line was added to the history successfully as a separate entry.
-         Used by `history' and `fc'
+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 
 
-                                  2/25
-                                  ----
-trap.c
-       - save line number before executing trap command, because
-         parse_and_execute resets it to 1 and the trap command might
-         want it
+lib/readline/signals.c
+       - rl_signal_handler: don't interrupt immediately if in callback mode
 
-execute_cmd.c
-       - change to executing_line_number to return trap_line_number if
-         the shell is currently running a trap
+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>
 
-                                  2/26
-                                  ----
 execute_cmd.c
-       - change to time_command so that a `real' value of 0 does not
-         cause a divide-by-zero error when computing cpu percentage
+       - 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
 
-lib/readline/signals.c
-       - if MUST_REINSTALL_SIGHANDLERS is defined, reinstall the SIGWINCH
-         handler in rl_handle_sigwinch
-
-builtins/set.def
-       - `unset' now rejects attempts to unset names that are not valid
-         shell identifiers as errors
-       - add a description of `-o history' option to help text
+doc/{bash.1,bashref.texi}
+       - document new Posix-mode behavior of `command' when preceding builtins
+         that take assignment statements as arguments
 
-subst.c
-       - in parameter_brace_patsub, we want backslash removal done on
-         the replacement if (mflags & MATCH_QUOTED), since the code
-         in expand_word_internal will not do it.  We need to call
-         expand_string_unsplit directly, since maybe_expand_string does
-         not do the right thing
+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>
 
-                                  2/28
+                                  7/25
                                   ----
-execute_cmd.c
-       - if execute_for_command finds that the iteration variable is readonly,
-         decrement loop_level before returning
-
-builtins/break.def
-       - if the break count is <= 0, display an error message and break out
-         of all loops
+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/command.def
-       - if PATH is unset, and we're using command -p, we don't want PATH
-         to be set to the empty string when `command' completes
+builtins/printf.def
+       - getint: if garglist == 0, return whatever getintmax returns (0).
+         Fixes bug reported  by Ralph Coredroy <ralph@inputplus.co.uk>
 
-builtins/common.c
-       - POSIX.2 says `kill -l signum' prints the signal name without the
-         leading `SIG' prefix, so check for this_shell_builtin == kill_builtin
-         in display_signal_list
+                                  7/28
+                                  ----
+doc/{bash.1,bashref.texi}
+       - minor changes to the descriptions of the cd and pushd builtins
 
-builtins/getopts.def
-       - when invoked without any arguments, `getopts' now prints a usage
-         message
+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>
 
-                                   3/3
+                                   8/1
                                    ---
-builtins/common.c
-       - add a second argument to get_numeric_arg: if non-zero, the shell
-         exits on a bad argument; if not, the shell jumps to top_level
-         with a DISCARD argument, which aborts the current command
-
-builtins/{break,exit,history,return,shift}.def
-       - change calls to get_numeric_argument
-
-lib/readline/funmap.c
-       - add `dump-macros' to list of bindable names
-
-lib/readline/readline.h
-       - added extern declaration for rl_prompt (it was apparently missing)
-
-lib/readline/readline.c
-       - new internal function, _rl_init_line_state, which sets rl_point
-         and rl_end to 0, sets the_line to point to _rl_line_buffer, and
-         clears the line
-
-lib/readline/callback.c
-       - if a user's callback function does not clear the line, clear it
-         for him by calling _rl_init_line_state
+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
 
-                                   3/4
+                                   8/6
                                    ---
-alias.c
-       - made the readline support functions #ifdef READLINE, so they're
-         not compiled into the shell unless readline is
-
-lib/readline/bind.c
-       - new function _rl_untranslate_macro_value, to expand meta-prefixes
-         and other special characters in a macro value for printing by
-         _rl_macro_dumper_internal
-       - call _rl_untranslate_macro_value in _rl_macro_dumper_internal to
-         get a printable version of the macro value
+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>
 
-lib/readline/readline.c
-       - new variable, rl_dispatching, set to 1 when we call a function
-         from _rl_dispatch
+                                   8/9
+                                   ---
+builtins/common.c
+       - get_exitstat: return EX_BADUSAGE (2) on a non-numeric argument
 
-lib/readline/readline.h
-       - extern declaration for rl_dispatching
+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)
 
-lib/readline/complete.c
-       - make sure S_ISCHR and S_ISBLK are defined before using them
+                                  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
 
-lib/readline/terminal.c
-       - add a new #define NEED_EXTERN_PC.  Define this if the termcap
-         or curses libraries need `extern' before declarations of PC,
-         BC, and UP
+                                  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)
 
-lib/readline/{readline,terminal,histfile}.c
-       - changes to compile on OS/2 with OS/2 `EMX' port of gcc, originally
-         sent by ilya@math.ohio-state.edu
+                                  8/27
+                                  ----
+doc/{bash.1,bashref.texi}
+       - minor changes to the here string description to clarify the
+         expansions performed on the word
 
-builtins/set.def
-       - fixed a bug in set_shellopts that caused the shell to crash if
-         there were no shell options set
+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>
 
-                                   3/5
-                                   ---
-configure.in,Makefile.in
-       - choose run-all or run-minimal as the test script based on whether
-         the --enable-minimal-config option was given to configure
+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>
 
-builtins/setattr.def
-       - fixed `export -p' and `readonly -p' so that they output `export'
-         or `readonly' when in POSIX mode, as POSIX.2 specifies
+                                  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>
 
-                                   3/6
+                                   9/7
                                    ---
-builtins/setattr.def
-       - make `readonly -a var=(...)' work just like `declare -ar var=(...)',
-         since the two logically mean the same
-       - `readonly -f' and `export -f' don't print the function definition
-         for each readonly or exported function, respectively, when in
-         POSIX mode
+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;
 
-jobs.c, nojobs.c
-       - don't report status for processes killed by SIGPIPE if
-         DONT_REPORT_SIGPIPE is defined
+externs.h
+       - sh_backslash_quote: add second argument to function prototype
 
-config.h.top
-       - added a commented-out define for DONT_REPORT_SIGPIPE
+bashline.c,braces.c,parse.y,builtins/printf.def
+       - change callers of sh_backslash_quote to add second argument
 
-execute_cmd.c
-       - `time' can now be used to time background pipelines, and reports
-         the timing statistics when the pipeline completes
+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
 
-[bash-2.01-alpha1 frozen]
+                                   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
 
-                                  3/12
+                                  9/10
                                   ----
-subst.c
-       - move the parent end of the pipe file descriptor used for process
-         substitution to a high, unused file descriptor to avoid clashes
-         with redirections performed explicitly by a script
+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
 
-configure.in
-       - added a `--with-curses' argument so curses can be forcibly chosen
-         over libtermcap (some Unix versions ship lousy termcap databases)
+                                  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>
 
-support/mkconffiles
-       - new script to create _distribution and _patchlevel from values
-         contained in `configure'
+                                  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>
 
-doc/bashref.texi
-       - updated installation instructions
+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>
 
-                                  3/13
+                                  9/20
                                   ----
-general.c
-       - if `getgroups' returns 0, make sure we add the primary group id
-         as GROUPS[0].
-       - if we have getgroups, and the primary gid is not in the array
-         getgroups returns, add it as group_array[0] and shuffle everything
-         up one element.  This ensures that current_user.gid == group_array[0]
-         all the time
-
-tests/builtins.tests
-       - changes to avoid stray variables in environment when the shell
-         version of printenv is used with bash as /bin/sh, running the
-         `exec -c' tests.
+lib/intl/localealias.c
+       - read_alias_file: close resource leak (fp) when returning on error
 
-                                  3/14
+                                  9/22
                                   ----
-builtins/cd.def
-       - spelling correction is no longer enabled by default
-
-support/bashbug.sh
-       - if the shell's release status is alpha or beta, offer the option
-         of sending the bug report to the bash-testers mailing list as
-         well as to chet
+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
 
-                                  3/17
+                                  9/25
                                   ----
-configure.in
-       - configure --without-gnu-malloc by default on *-sgi-irix6* because
-         their code needs 8-byte alignment
-
-support/bashbug.sh
-       - ``' needs to be quoted with a backslash in double-quoted strings
+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
 
-aclocal.m4
-       - slight changes to the strcoll test, since AIX 4.2 returns -1, 0, or
-         1 from strcmp(3) but a numeric collation order difference from
-         strcoll(3)
+                                  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>
 
-                                  3/18
+                                  10/1
                                   ----
-command.h
-       - new redirection error code:  HEREDOC_REDIRECT
+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
-       - return HEREDOC_REDIRECT from do_redirection_internal when
-         here_document_to_fd cannot create the temp file for a here document
-       - changed redirection_error to print a meaningful message when
-         here document temp file creation fails (HEREDOC_REDIRECT)
+       - 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
 
-                                  3/19
-                                  ----
-subst.c
-       - changes to match_pattern_char: return 1 if the first char of the
-         pattern is `?' only if the string is non-null; just return 1 if
-         the first char of the pattern is `[' and the string is non-empty
-         rather than try to re-implement the brace matching code from fnmatch
+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.
 
-lib/glob/fnmatch.c
-       - some changes from glibc-2.0.1 posix/fnmatch.c
+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>
 
-                                  3/21
-                                  ----
-variables.c
-       - only do the initialization of `ignoreeof' if the shell is
-         interactive
-       - reset values of $SHLVL > 1000 to 1 in adjust_shell_level, and
-         don't call itos, since we don't need its generality
-       - new function, initialize_shell_level, just calls adjust_shell_level
-         with argument of 1.  If $SHLVL is unset, adjust_shell_level will
-         deal with it correctly
-       - change initialize_shell_variables to not malloc a copy of each
-         environment variable, just keep two pointers into the env string:
-         one for the name, one for the value
-       - broke the code that computes the value of $BASH out into a separate
-         function: get_bash_name
-       - get_bash_name special-cases shell_name with a `./' prefix when
-         initializing $BASH
-       - new function: set_home_var, sets $HOME to current_user.home_dir if
-         it's not already set, calling get_current_user_info if
-         current_user.home_dir is NULL
-       - new function: set_shell_var, sets $SHELL to current_user.shell if
-         it's not already set, calling get_current_user_info if
-         current_user.shell is NULL
-       - changed places that reference information in current_user to check
-         for NULL values of the member they're interested in and call
-         get_current_user_info if necessary
+lib/readline/readline.h
+       - new extern declaration for rl_filename_stat_hook
 
-shell.c
-       - moved the code that sets up the information in current_user that
-         comes from the password file into a new function,
-         get_current_user_info
-       - shell_initialize calls get_current_user_info only if the shell is
-         interactive
+lib/readline/doc/rltech.texi
+       - rl_directory_rewrite_hook: now documented
+       - rl_filename_stat_hook: document
 
-externs.h
-       - new extern declaration for get_current_user_info(), so variables.c
-         can use it
+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>
 
-                                  3/24
+                                  10/5
                                   ----
-lib/tilde/tilde.c
-       - if SHELL is defined, user the current_user struct info to find
-         the user's home directory rather than calling getpwuid
+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
 
-                                  3/25
-                                  ----
-nojobs.c
-       - don't try to open /dev/tty when getting or setting the tty state
-         and window size; use shell_tty instead
-       - initialize shell_tty to standard error in initialize_job_control
-       - only fetch the tty state initially if the shell is interactive
+                                  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)
 
-general.c
-       - open /dev/tty with the O_NONBLOCK flag
+lib/sh/Makefile.in
+       - remove some dependencies on version.h where it doesn't make sense
 
 variables.c
-       - changed all_vars so that it sorts its output all the time, not
-         just when in POSIX mode.  This means that the output of `set'
-         and `export' will be sorted
-
-builtins/set.def
-       - in initialize_shell_options, only call parse_shellopts if we
-         inherited $SHELLOPTS from the environment
-       - make sure we call parse_shellopts from initialize_shell_options
-         with a copy of the value of SHELLOPTS, in case one of the functions
-         called while setting one of the variables modifies $SHELLOPTS
+       - 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>
 
-lib/readline/readline.c
-       - make sure that digit arguments don't change the state of
-         rl_last_func
+                                  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>
 
-support/printenv.c
-       - new file, printenv(1) clone, used to avoid environment variables
-         that might be set automatically when using printenv.sh
+                                  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>
 
-lib/tilde/tilde.c
-       - if SHELL is defined, don't call getenv to get the value of $HOME,
-         call get_string_value () directly
+                                  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>
 
-                                  3/26
-                                  ----
-lib/readline/histexpand.c
-       - abstracted the `#ifdef SHELL' stuff that checked for special cases
-         that should not be history expanded ([!...], ${!...}) into a call
-         to a function that is the value of the
-         new history_inhibit_expansion_function variable
+                                  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/history.h
-       - extern declaration for history_inhibit_expansion_function
+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
 
-bashhist.c
-       - new function, bash_history_inhibit_expansion, which checks for
-         the special cases in which history expansion should be inhibited
-       - changes to the various history initialization functions to
-         set history_inhibit_expansion_function
+                                  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
 
-lib/readline/doc/hstech.texinfo
-       - documented history_inhibit_expansion_function
+                                  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
 
-lib/readline/shell.c
-       - new file, containing versions of the functions that are provided
-         by bash when readline is linked as part of bash
-       - new function: get_env_value().  If SHELL is defined, this calls
-         get_string_value().  If SHELL is not defined, this calls getenv()
+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
-       - moved single_quote() to shell.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
 
-lib/readline/util.c
-       - moved savestring() to shell.c
+                                  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>
 
-lib/readline/terminal.c
-       - moved set_lines_and_columns() to shell.c
+                                  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>
 
-lib/readline/Makefile.in, Makefile.in
-       - added shell.c and shell.o to the appropriate variables that contain
-         the files comprising the readline and history libraries
+                                  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/readline/signals.c
-       - introduced two new cpp defines:  HANDLE_JOB_SIGNALS and
-         HANDLE_SIGTERM.  When HANDLE_JOB_SIGNALS is defined, SIGTSTP,
-         SIGTTIN, and SIGTTOU are caught and handled.  When HANDLE_SIGTERM
-         is defined, SIGTERM is caught and handled.  These are both
-         defined automatically if SHELL is not defined
+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
 
-lib/readline/{bind,histfile,nls,readline,terminal}.c
-       - call get_env_value instead of getenv().  This should remove the
-         dependency on being able to redefine getenv() in oslib.c
+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
 
-shell.c
-       - added a missing argument of -1 to the call to list_minus_o_opts.
-         Now `bash -o' lists all options, not just random ones depending
-         on what's on the stack
+builtins/read.def
+       - read_builtin: don't call bind_read_variable with a potentially-null
+         string
 
-                                  3/28
-                                  ----
-builtins/ulimit.def
-       - change RLIM_INFINITY to the hard limit only if the hard limit is
-         greater than the current (soft) limit
+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
 
-hashlib.c
-       - return immediately from flush_hash_table if the hash table passed
-         is NULL
+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
 
-                                   4/1
-                                   ---
-shell.c
-       - remove call to initialize_filename_hashing -- initialize the hash
-         table the first time a hashed command has to be remembered
+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
 
-hashcmd.c
-       - new file, with functions to perform filename hashing and lookup
-         taken from builtins/hash.def and builtins/common.c
-       - change to remember_filename -- call initialize_filename_hashing
-         if hashing_initialized is 0
+redir.c
+       - redirection_error: free `filename' if the redirection operator is
+         REDIR_VARASSIGN by assigning allocname
 
-hashcmd.h
-       - new file, mostly from builtins/hashcom.h, with extern function
-         declarations added
+eval.c
+       - send_pwd_to_eterm: fix memory leak by freeing value returned by
+         get_working_directory()
 
-execute_cmd.c, builtins/{hash,type}.def
-       - include hashcmd.h for hash function and type definitions
+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/{common.{c,h},hash.def}
-       - moved hashing functions and declarations to hashcmd.c/hashcmd.h
+builtins/type.def
+       - describe_command: free `full_path' before overwriting it with return
+         value from sh_makepath
 
-Makefile.in, builtins/Makefile.in
-       - changed source and object file definitions and dependencies because
-         of addition of hashcmd.h and hashcmd.c
+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
-       - return immediately from print_hashed_commands if hashed_commands
-         is empty, indicating that the hash table has not been initialized
+       - list_hashed_filename_targets: fix memory leak by freeing `target'
 
-                                   4/2
-                                   ---
-lib/readline/bind.c
-       - fixed translation of ESC in rl_untranslate_keyseq and
-         rl_untranslate_macro_value
+make_cmd.c
+       - make_arith_for_command: free `init', `test', and `step' before
+         returning error on parse error
 
-lib/readline/{readline,kill}.c
-       - added an argument to _rl_fix_point telling it whether or not to
-         fix up the mark also; changed calls to _rl_fix_point to add the
-         appropriate argument
+jobs.c
+       - initialize_job_control: don't call move_to_high_fd if shell_tty == -1
 
-Makefile.in
-       - changed the substitution delimiter in the `sed' commands that
-         create bashbug from `:' to `%' to avoid conflicts with options
-         containing `:'
+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
 
-                                   4/3
-                                   ---
 print_cmd.c
-       - made the initial value and the default growth value for the
-         printed command somewhat smaller -- we don't really need to
-         allocate 4096 bytes for the printed command
-       - added stdarg support to xprintf if PREFER_STDARG is defined
+       - print_deferred_heredocs: don't try to dereference a NULL `cstring'
+       - cprintf: make sure to call va_end (args)
 
-stringlib.c
-       - changed strip_trailing to take the index of the last character
-         as the second argument, saving a (useless) call to strlen, since
-         the caller already knows where the end of the string is
+variables.c
+       - push_dollar_vars: fix call to xrealloc to use sizeof (WORD_LIST *)
+         instead of sizeof (WORD_LIST **)
 
-subst.c
-       - change call to strip_trailing in command_substitute to add the
-         new second argument
+lib/sh/zmapfd.c
+       - zmapfd: if read returns error, free result and return -1 immediately
+         instead of trying to reallocate it
 
-externs.h
-       - changed extern declaration for strip_trailing
+                                  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
 
-                                   4/4
-                                   ---
-Makefile.in, configure.in, lib/malloc/Makefile.in
-       - changed the strategy for picking which `malloc' to include by
-         having configure define a `malloc target' and the Makefile in
-         lib/malloc implementing rules for that target
+                                  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>
 
-                                   4/5
-                                   ---
-Makefile.in
-       - slightly changed the rules for remaking `parser-built':  it is
-         now a copy of y.tab.h, updated only when the contents of y.tab.h
-         change
-       - everything that used to depend on y.tab.h now depends on
-         parser-built
+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
 
-                                   4/6
-                                   ---
-execute_cmd.c, print_cmd.c
-       - use #include <y.tab.h> so we pick up y.tab.h from the build
-         directory instead of the source directory if it happens to be
-         recreated in the build directory
+pcomplete.h
+       - COPT_NOQUOTE: new complete/compgen option value
 
-                                   4/7
-                                   ---
-bashline.c
-       - fixed another problem with `pwd`/[TAB] thinking that the `/
-         started an unclosed command substitution, generating errors
+builtins/complete.def
+       - noquote: new complete/compgen option; will be used to disable
+         filename completion quoting
 
-                                   4/8
-                                   ---
-general.c
-       - renamed bash_tilde_expansion_failure_hook to be
-         bash_special_tilde_expansions, since that more accurately reflects
-         its function
-       - changed tilde_initialize so that there is no failure hook -- the
-         special expansions are handled first with the preexpansion hook
+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)
 
-lib/tilde/tilde.c
-       - new variable: tilde_expansion_preexpansion_hook -- if non-null, it
-         points to a function that is called before standard tilde expansion
-         is attempted
+doc/bash.1,lib/readline/doc/rluser.texi
+       - document new -o noquote option to complete/compgen/compopt
 
-lib/tilde/tilde.h
-       - extern declaration for tilde_expansion_preexpansion_hook
+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,html},bashref.texi}
-       - added optional open paren to description of `case' command syntax
+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
 
-                                   4/9
-                                   ---
-variables.c
-       - on qnx, set and export a variable `NODE' which contains the QNX
-         `node id'
+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
 
-general.c
-       - QNX system can now handle pathnames with a leading `//'
+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>
 
-configure.in
-       - added `-Dqnx' to LOCAL_CFLAGS on QNX machines
+                                  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
 
-lib/malloc/getpagesize.h
-       - some systems need sysconf(_SC_PAGE_SIZE) to obtain the page size;
-         added code to check for it
+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
 
-                                  4/10
-                                  ----
-print_cmd.c
-       - include the prototype for cprintf only if PREFER_STDARG is defined,
-         otherwise just have a K&R-style forward function declaration
+                                  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>
 
-hashlib.h
-       - reduced the default number of buckets in a hash table to 53
+builtins/read.def
+       - skip over NUL bytes in input, as most modern shells seem to.  Bug
+         report by Matthew Story <matt@tablethotels.com>
 
-lib/tilde/tilde.c
-       - prime the result string in tilde_expand by allocating a new string
-         that's as long as the input string (+16 if a tilde appears in
-         the string to be expanded).  This should reduce the number of
-         reallocs
+lib/readline/vi_mode.c
+       - rl_vi_replace: set _rl_vi_last_key_before_insert to invoking key
 
-subst.c
-       - broke the code that reads the output of a command substitution
-         through the pipe to the subshell out into a separate function:
-         read_comsub().  This does not use stdio, but rather reads
-         directly from the pipe into a local 128-character buffer
+                                  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>
 
-                                  4/11
-                                  ----
-execute_cmd.c
-       - some systems need both <sys/time.h> and <time.h>, so include both
-         if it's possible, otherwise include <sys/time.h> (if present)
+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/rl{tty,defs}.h
-       - moved includes of <sys/stream.h>, <sys/ptem.h>, etc. to rltty.h
+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/terminal.c
-       - include rltty.h after rldefs.h
+lib/readline/util.c
+       - rl_settracefp: new utility function to set the tracing FILE *
 
-variables.c
-       - changes to make environment creation faster and use less memory
-         (fewer malloc/free calls, too):
-
-               o two new variables: export_env_index (how many environment
-                 strings are in export_env) and export_env_size (the
-                 number of slots for strings allocated in export_env)
-               o added new function add_to_export_env, since adding the
-                 exported shell variables and shell functions does not
-                 need to search the export_env for a definition to supersede
-                 (we just cleared it out!)
-               o renamed add_or_supersede to add_or_supersede_exported_var,
-                 since it always works on export_env, and changed the second
-                 argument to a flag saying whether or not to allocate a new
-                 copy of the string placed into the environment
-               o changed calls to add_or_supersede to the new
-                 add_or_supersede_exported_var with the appropriate flags
-               o don't free and reallocate export_env in maybe_make_export_env,
-                 just free the strings and start anew
-               o prime the size of export_env from the total number of shell
-                 variables and shell functions -- this will always be enough
-                 for the exported shell functions and variables, and big
-                 enough most of the time for the entire environment
+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)
 
-builtins/cd.def
-       - efficiency hack in bindpwd():  if PWD is exported, we will have to
-         rebuild the entire exported environment after every time we change
-         directories.  What we do is see if array_needs_making changes value
-         from 0 to 1 after bind_variable ("PWD", dirname) is called, and
-         that PWD is exported.  If that happens, we just replace the value
-         of PWD in the exported environment with a call to
-         add_or_supersede_exported_var
-
-bashline.c, parse.y
-       - check calls to pre_process_line to make a fresh copy of the line
-         if pre_process_line returns what it was passed, in preparation
-         for future changes
+lib/readline/rlprivate.h
+       - extern declarations for _rl_sigcleanup and _rl_sigcleanarg
 
-bashhist.c
-       - pre_process_line now returns its argument if it did not make
-         any changes to it
+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
 
-alias.c
-       - free the bucket entry holding the alias to be removed in
-         remove_alias, as well as the data
+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
 
-                                  4/14
+                                  12/1
                                   ----
-unwind_prot.c
-       - if an unwind-protect frame is being discarded, and its cleanup
-         function is `restore_variable', the `arg' member points to a
-         SAVED_VAR that must be freed.  This change is made in
-         remove_unwind_protect_internal and unwind_frame_discard_internal
-
-parse.y
-       - need to free memory allocated by parse_arith_cmd if it is an
-         arithmetic command, after using it to make a new word
+lib/glob/gmisc.c
+       - extglob_pattern: new function, returns 1 if pattern passed as an
+         argument looks like an extended globbing pattern
 
-subst.c
-       - fixed some memory leaks caused by not freeing the argument to
-         make_bare_word, which duplicates its string argument
-       - need to dispose list generated by list_rest_of_args in
-         paramter_list_remove_pattern
-       - make sure the return value from getpattern() is freed
-       - make sure array_value_internal always returns newly-allocated
-         memory
-       - get_var_and_type returns a new type: VT_ARRAYMEMBER if the
-         string passed is of the form var[index]
-       - make sure parameter_brace_substring frees the memory allocated
-         by get_var_and_type if verify_substring_values returns 0
-
-hashlib.c, hashlib.h
-       - new function, dispose_hash_table (table), which frees the
-         table's bucket array and the table itself
-
-alias.c
-       - call dispose_hash_table from delete_all_aliases instead of just
-         freeing the table
+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>
 
-pathexp.c
-       - make sure to free `newnames' (but *not* its contents) before
-         returning from ignore_globbed_names
+                                  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
 
-builtins/exec.def
-       - make sure the argv created to pass to shell_execve is freed if
-         the execve fails and we're not exiting on failed execs
+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
 
-expr.c
-       - broke evalexp into two functions: evalexp, which sets up the
-         jmp_buf that errors jump to, and subexpr, which does the
-         evaluation and pushing and popping of contexts
-       - readtok now calls subexpr to evaluate subexpressions in
-         parentheses
-       - evalexp now takes an additional paramter, a pointer to an int.
-         If the expression contains errors, the location to which this
-         points gets 0, otherwise it gets 1 to show that the value
-         returned may be used.  This plugs up memory leaks that were
-         the result of evalexp() longjmping back to top_level
-       - fixed a memory leak: expr_stack[0] was not being freed
+execute_cmd.c
+       - execute_cond_node: added parens to patmatch assignment statement to
+         make intent clearer
 
-externs.h
-       - changed extern declaration for evalexp
+                                  12/3
+                                  ----
+configure.in,config.h.in
+       - check for imaxdiv, define HAVE_IMAXDIV if present
 
-variables.c, subst.c, builtins/let.def
-       - changed calls to evalexp appropriately.  They either cause a
-         longjmp (top_level, DISCARD) (which is what the old stuff in
-         expr.c did) or are handled by returning an appropriate error
-         value (e.g., &expand_word_error in subst.c)
+expr.c
+       - expassign, exp2: use imaxdiv if available.  Doesn't help with checks
+         for overflow from 10/25
 
-                                  4/16
+                                  12/6
                                   ----
-shell.c
-       - make sure to free dollar_vars[0] before assigning it the first
-         argument following `-c command'
+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>
 
-variables.c
-       - if unsetting a local variable with a previous context, make sure      
-         to free the hash table element used to store the local variable
+                                  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)
 
-lib/readline/terminal.c
-       - rearrange the includes so <sys/ioctl.h> is included before rltty.h,
-         as it is in rltty.c
+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>
 
-                                  4/17
-                                  ----
-flags.c
-       - new function: reset_shell_flags, which resets all of the flags
-         back to their initial values
+                                  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
 
-flags.h
-       - extern declaration for reset_shell_flags
+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)
 
-builtins/set.def
-       - new function: reset_shell_options, which resets all of the -o
-         options that are not also shell flags back to their initial values
+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
 
-builtins/shopt.def
-       - new function: reset_shopt_options, which resets all of the shopt
-         options that are not also shell flags or -o options back to their
-         initial values
+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
 
-builtins/common.h
-       - extern declarations for reset_shell_options and reset_shopt_options
+lib/readline/rlprivate.h
+       - new extern declaration for _rl_executing_keyseq_size, buffer size
+         for rl_executing_keyseq
 
-execute_cmd.c
-       - broke the code that reinitializes things when an executable script
-         without a leading `#!' is found out into a new function:
-         initialize_subshell
-       - initialize_subshell now calls the reset_* functions that reset the
-         shell flags and options
+lib/readline/doc/rltech.texi
+       - documented new variables: rl_executing_key, rl_executing_keyseq,
+         rl_key_sequence_length
 
-general.c, general.h
-       - move_to_high_fd now takes a third argument: the highest fd at which
-         to start looking.  If that's less than 20, the maximum number of
-         open files as returned by getdtablesize() is used (which is what
-         it did before this)
+                                  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>
 
-jobs.c, shell.c, subst.c
-       - changed calls to move_to_high_fd appropriately
+                                  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
 
-[bash-2.01-beta1 frozen]
+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>
 
-                                  4/18
-                                  ----
-general.c
-       - itos now uses a local char buffer to do its conversion, but still
-         returns newly-allocated memory
+expr.c
+       - more minor changes to cases of INTMAX_MIN % -1 and INTMAX_MIN / 1;
+         fix typos and logic errors
 
-                                  4/21
-                                  ----
-variables.c
-       - be a little more careful when checking for backwards-compatibility
-         with exported function definitions
+                                  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
 
-                                  4/22
-                                  ----
-builtins/ulimit.def
-       - translate RLIM_INFINITY to limit.rlim_max if the current limit is
-         less than or equal to the hard limit, not just strictly less than
-         (the change of 3/28 was too drastic)
+lib/readline/history.c
+       - history_get_time: atol -> strtol
 
-                                  4/23
-                                  ----
-oslib.c
-       - fixed definition of to_lower on machines without strcasecmp
+                                  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
 
-trap.c
-       - don't free the trap command in change_signal if the SIG_INPROGRESS
-         is set in the signal's flags -- it will cause memory to be freed
-         twice if a trap command resets the signal handler more than once,
-         and _run_trap_internal keeps a pointer to the trap command so it
-         can free it, so there will be no leaks
+externs.h
+       - extern declaration for parser_in_command_position
 
-                                  4/24
-                                  ----
-aclocal.m4,configure.in
-       - removed BASH_CC_WORKS, since AC_PROG_CC now has the functionality
+                                  12/19
+                                  -----
 
-shell.c, externs.h
-       - get_current_user_info is now a void function
+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
-       - alias_expand_line_internal was removed
-       - new function, alias_expand_line, performs alias expansion on
-         rl_line_buffer and either replaces rl_line_buffer or signals
-         an error
-       - new bindable commands: alias-expand-line and
-         history-and-alias-expand-line, available if ALIAS is defined
-
-                                  4/25
-                                  ----
-Makefile.in, lib/malloc/malloc.c
-       - changed the define that turns on malloc range checking from
-         `rcheck' to `RCHECK'
+       - 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>
 
-lib/readline/isearch.c
-       - fixed a couple of places where rl_search_history would try to
-         free a NULL pointer
+                                  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
 
-                                  4/29
-                                  ----
-unwind_prot.c
-       - fixed a problem with saving a variable that is a null pointer
-         in unwind_protect_var.  It happens only on machines where the
-         size of a pointer is not the size of an int.  The old FASTCOPY
-         code would copy the eight bytes at memory location zero, which
-         did not necessarily make a null pointer
+lib/readline/rlprivate.h
+       - _rl_untranslate_macro_value: extern declaration
 
-                                  4/30
-                                  ----
-shell.c
-       - run_startup_files should turn off job control, since the startup
-         files should be run without job control enabled -- this makes
-         SIGINT interrupt startup file execution again
-       - if we get a SIGINT or other longjmp to top_level while executing
-         the startup files, re-enable job control for interactive shells
-         before setting locally_skip_execution
+lib/readline/{macro.c,readline.h}
+       - rl_print_last_kbd_macro: new bindable function, inspired by patch
+         from Mitchel Humpherys
 
-                                   5/2
-                                   ---
-lib/readline/nls.c
-       - if we have setlocale(3), don't bother with checking the
-         environment variables for valid values; just use setlocale()
-         to set the locale categories from the environment variables
-         directly and go into eight-bit mode if the current locale is
-         not C or POSIX
+lib/readline/funmap.c
+       - print-last-kbd-macro: new bindable command, bound to
+         rl_print_last_kbd_macro
 
-                                   5/5
-                                   ---
-sig.c
-       - make sure that the handler for SIGPROF is not changed if it has
-         been set to something other than SIG_IGN or SIG_DFL -- this makes
-         profiling work after the terminating signals have been initialized
+lib/readline/doc/{rluser.texi,readline.3},doc/bash.1
+       - print-last-kbd-macro: document.
 
-bashline.c
-       - if a filename containing `!' is completed, and the user has started
-         the string with a `"', change the completion style to backslash-      
-         quoting, since there's no way to use `!' with double quotes (this
-         requires more changes to readline to really work right)
+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)
 
-                                   5/6
-                                   ---
-lib/readline/complete.c
-       - changes to make_quoted_replacement, insert_all_matches, and
-         insert_match and their callers to allow the application-specific
-         filename quoting function to change the quote character (e.g., for
-         bash to change a filename containing a `!' and started with a
-         double quote by the user into a filename with the `!' quoted by
-         a backslas and no double quote)
-
-                                   5/8
-                                   ---
-jobs.c
-       - new function: nohup_all_jobs(), calls nohup_job for each entry in
-         the jobs list
-       - delete_all_jobs is now global
+bashline.[ch]
+       - print_unix_command_map: new function, prints all bound commands in
+         cmd_xmap using rl_macro_dumper in a reusable format
 
-jobs.h
-       - new extern declarations for delete_all_jobs() and nohup_all_jobs()
+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)
 
-builtins/jobs.def
-       - `disown' without any jobspec arguments means the current job.  Fix
-         a core dump printing the error message when there is no current job
+doc/{bash.1,bashref.texi}
+       - document new `bind -X' option
 
-                                  5/12
-                                  ----
-subst.c
-       - process an expansion like $((foo); bar) as a command substitution,
-         not as an arithmetic expansion.  An arithmetic expansion must have
-         a closing `))'
+                                  12/24
+                                  -----
 
-                                  5/14
-                                  ----
-builtins/evalstring.c
-       - the third argument to parse_and_execute() is now a flags word.
-         The caller can control the value of `interactive' and whether
-         or not history is disabled while parse_and_execute() runs
+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>
 
-builtins/common.h
-       - new #defines for the flag values for parse_and_execute()
+                                  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
 
-{bashline,jobs,shell,subst,trap,variables}.c, parse.y, builtins/evalfile.c,
-builtins/{eval,fc}.def
-       - changed calls to parse_and_execute appropriately
+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)
 
-builtins/evalfile.c
-       - if _evalfile() is passed FEVAL_HISTORY as part of the flags arg,
-         don't pass SEVAL_NOHIST to parse_and_execute
-       - new function: fc_execute_file, which sets FEVAL_HISTORY in the
-         flags argument to _evalfile()
+                                  12/29
+                                  -----
 
-bashline.c
-       - call bash_add_history instead of add_history from
-         vi_edit_and_execute_command so the bash state variables get
-         updated properly.  This keeps the `v' command from operating
-         on an empty command when the history list is stifled
+flags.h
+       - new extern declaration for jobs_m_flag
 
-bashhist.c
-       - bash_add_history is now global
+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
 
-bashhist.h
-       - extern declaration for bash_add_history
+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
 
-builtins/fc.def
-       - call fc_execute_file instead of maybe_execute_file in the
-         edit-and-re-execute case (fc -e ...)
-       - don't manually insert the commands from the file created by `fc -e'
-         into the history list, just set remember_on_history and let
-         fc_execute_file take care of telling parse_and_execute to do the
-         right thing.  This makes compound commands and the `cmdhist'
-         and `lithist' settings work better.  This supersedes the fix of
-         1/27.  This was reported again by rchen@fractal.eng.yale.edu.
+                                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
 
-parse.y
-       - the body of a `for' command (the commands between do...done or
-         {...}) should be a `compound_list' instead of a `list'.  Problem
-         reported by cpg@research.bell-labs.com
+                                   1/5
+                                   ---
+quit.h
+       - LASTSIG(): new macro, expands to signal number of last terminating
+         signal received (terminating_signal or SIGINT)
 
-                                  5/19
-                                  ----
-lib/readline/complete.c
-       - in filename_completion_function, if we find that the directory
-         pointer (return value from opendir(3)), is not null when state
-         is 0 (indicating that this is the first time the completion
-         function has been called for the current completion), call
-         closedir on it, assuming that it was left open by a previous
-         (interrupted) completion
+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
 
-[bash-2.01-beta2 frozen]
+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
 
-                                  5/27
+                                  1/11
                                   ----
-Makefile.in
-       - make sure that `make distclean' (and other clean targets) remove
-         the `printenv' executable
+doc/{bash.1,bashref.texi}
+       - slight changes to the descriptions of the compat32 and compat40 shell
+         options to clarify their meaning
 
-tests/execscript, tests/redir.tests
-       - make sure to set LANG=C and LC_ALL=C so the messages show up in
-         English
+                                  1/12
+                                  ----
+lib/readline/{colors.[ch],parse-colors.[ch]}
+       - new files, part of color infrastructure support
 
-tests/run-func
-       - add a warning about exported functions in the environment
+Makefile.in,lib/readline/Makefile.in
+       - arrange to have colors.o and parse-colors.o added to readline
+         library
 
-                                  5/29
-                                  ----
-builtins/hash.def
-       - if one of the arguments passed to `hash' is an absolute pathname,
-         just continue the loop, don't do list=list->next first.  This
-         fixes the `hash a/b' -> core dump bug
+{configure,config.h}.in
+       - check for stdbool.h, define HAVE_STDBOOL_H if found
 
-                                  5/30
+                                  1/14
                                   ----
-general.c
-       - change canonicalize_pathname to leave a leading `/' alone, as
-         POSIX requires
+lib/readline/bind.c
+       - colored_stats: new bindable variable, enables using colors to
+         indicate file type when listing completions
 
-                                   6/2
-                                   ---
-support/xenix-link.sh
-       - shell script for linking bash under Xenix
+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>
 
-                                   6/3
-                                   ---
-bashline.c
-       - fixed a memory leak in command_word_completion_function, courtesy
-         of a.pfaller@pop.gun.de
+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)
 
-hashcmd.c
-       - fixed find_hashed_filename to always return a newly-allocated
-         string
+lib/readline/rlprivate.h
+       - _rl_colored_stats: new extern declaration
 
-execute_cmd.c
-       - since find_hashed_filename returns newly-allocated memory, don't
-         call savestring() on it, and free it if the data is stale (in
-         search_for_command()).  Another memory leak fixed courtesy of
-         a.pfaller@pop.gun.de
+lib/readline/doc/{readline.3,rluser.texi},doc/bash.1
+       - colored-stats: document new bindable readline variable
 
-builtins/type.def
-       - free the value returned by find_hashed_filename
+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
 
-[bash-2.01-release frozen]
+lib/readline/complete.c
+       - stat_char: call rl_filename_stat_hook before calling lstat/stat
 
-                                   6/6
-                                   ---
-configure.in
-       - force shlicc2 and libc malloc for BSD/OS 3.0
+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)
 
-                                   6/9
-                                   ---
-doc/Makefile.in
-       - don't create ${man3dir}, since we're not installing the readline
-         manual page
+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
 
-lib/readline/readline.h
-       - rl_dispatching should be declared `extern'
-         [in bash-2.01.1]
+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
 
-                                  6/10
+                                  1/17
                                   ----
-lib/malloc/Makefile.in
-       - make sure ${ALLOCA_SOURCE} is preceded by ${srcdir} so that things
-         work when building in a directory other than the source directory
-         [in bash-2.01.1]
+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>
 
-                                  6/30
+                                  1/18
                                   ----
-lib/readline/examples/rltest.c
-       - don't free the value returned by history_list()
-
-lib/readline/histfile.c
-       - open the history file for writing with mode 0600 for better
-         security
-         [in bash-2.01.1]
-
-execute_cmd.c
-       - select_query now uses legal_number to decide whether the user's
-         selection is a valid number, and just executes the loop again if
-         invalid input is entered
-         [in bash-2.01.1]
-
-                                   7/1
-                                   ---
-builtins/evalstring.c
-       - fix to parse_and_execute so `bash -c 'time [-p] zzz'' works right
-         [in bash-2.01.1]
-
-execute_cmd.c
-       - fix to execute_command_internal so that `bash -c time [-p] (zzz)''
-         works right
-         [in bash-2.01.1]
-       - print_formatted_time should pass a long as the fourth parameter
-         to mkfmt 
-         [in bash-2.01.1]
 
-externs.h, shell.c
-       - `exit_shell' is now a void function
+{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
 
-hashlib.c
-       - print_table_stats is now a void function
-
-mailcheck.c
-       - made add_mail_file check for the filename in the mail file list
-         using the expanded filename, since that is what it puts into
-         the list
-         [in bash-2.01.1]
+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
 
-variables.c
-       - for the time being, PWD will be auto-exported, since some systems
-         seem to expect it
+lib/readline/util.c
+       - _rl_audit_tty: new function, send a string to the kernel tty audit
+         system
 
-doc/bashref.texi, lib/readline/doc/{hist,rlman}.texinfo
-       - added necessary `dircategory' and `direntry' commands to make
-         `install-info' work correctly
+lib/readline/rlprivate.h
+       - _rl_audit_tty: new extern declaration
 
-Makefile.in
-       - move $(LDFLAGS) after $(BUILTINS_LDFLAGS) and $(LIBRARY_LDFLAGS) on
-         the line that links bash
+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>
 
-doc/texinfo.tex
-       - upgraded to version 2.185 from the texinfo-3.9 distribution
+                                  1/21
+                                  ----
 
-lib/tilde/tilde.c
-       - fixed a bug in tilde_expand so that enough space is allocated for
-         the string and terminating null byte if a `~' does not appear.
-         This was masked before by the bash malloc()
-         [in bash-2.01.1]
+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
 
-                                   7/3
-                                   ---
-aclocal.m4
-       - new test, BASH_TYPE_INT32_T, to check which builtin C type is
-         32 bits wide
-       - new test, BASH_TYPE_PTRDIFF_T, to check which builtin C type is
-         appropriate for pointer arithmetic
+parse.y
+       - shell_getc: make code that uses the pop_alias dependent on ALIAS
+         define
 
-configure.in
-       - check sizes of int and long, and for the existence of an int32_t
-         basic system type.  Call BASH_TYPE_INT32_T if int32_t is not
-         defined anywhere in the system header files
-       - check size of (char *), and for the existence of a ptrdiff_t
-         basic system type.  Call BASH_TYPE_PTRDIFF_T if ptrdiff_t is not
-         defined anywhere in the system header files
-       - added a check for <stddef.h>
+variables.h
+       - sv_tz: extern define should only depend on HAVE_TZSET
 
-config.h.in
-       - add lines for SIZEOF_INT, SIZEOF_LONG, SIZEOF_CHAR_P, int32_t,
-         u_int32_t, and ptrdiff_t
-       - added line for HAVE_STDDEF_H
+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
 
-lib/malloc/malloc.c
-       - new version, with many changes and much better memory usage; old
-         (bash-2.01) version is lib/malloc/omalloc.c
+arrayfunc.h
+       - AV_ALLOWALL, AV_QUOTED, AV_USEIND: define to 0 if ARRAY_VARS not
+         defined; used in subst.c unconditionally
 
-lib/malloc/gmalloc.c
-       - new version, with a number of changes and range checking included
-         by default; old (bash-2.01) version is lib/malloc/ogmalloc.c
+sig.h
+       - make the signal blocking functions not dependent on JOB_CONTROL
 
-execute_cmd.c
-       - applied patch from 5/27 to make execute_simple_command fork early
-         if it's part of a pipeline.  This keeps assignment statements or
-         other commands that don't require a builtin, function, or disk
-         command to be executed from modifying the shell's environment
+sig.c
+       - sigprocmask: make the replacement definition not dependent on
+         JOB_CONTROL
 
-tests/exec?.sub
-       - renamed from tests/execscript.sub? because those filenames are
-         too long for System V 14-char filename systems
+trap.c
+       - use BLOCK_SIGNAL/UNBLOCK_SIGNAL instead of code dependent on
+         HAVE_POSIX_SIGNALS and BSD signals
 
-tests/source?.sub
-       - renamed from tests/source.sub? because those filenames are bad
-         for DOS/Windows
+                                  1/24
+                                  ----
 
-tests/getopts?.sub
-       - renamed from tests/getopts.sub? because those filenames are bad
-         for DOS/Windows
+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>
 
-tests/histexp.{tests,right}
-       - renamed from histexpand.{tests,right} because those filenames are
-         too long for System V 14-char filename systems
 
-tests/trap1.sub
-       - renamed from trap.sub1 because that filename was bad for DOS/Windows
+                                  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>
 
-tests/ifs-[123].right
-       - renamed from ifs.[123].right because those filenames were bad for
-         DOS/Windows
+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>
 
-tests/ifs-[123].test
-       - renamed from ifs-test-[123].sh because those filenames were bad
-         for DOS/Windows
+                                   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>
 
-examples/startup-files/Bashrc.bfox
-       - renamed from examples/startup-files/Bashrc because that filename
-         conflicts with examples/startup-files/bashrc on case-insensitive
-         file systems
+                                   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
 
-tests/exec.right
-       - renamed from execscript.right because that filename is too long
-         for System V 14-char filename systems
+lib/readline/rlprivate.h
+       - _rl_free_undo_list: new extern declaration
+       - _rl_keyseq_timeout: new extern declaration (see below)
 
-tests/run-set-e
-       - renamed from run-set-e-test
+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
 
-tests/misc/perftest
-       - renamed from tests/misc/haertel.perftest because that filename is
-         too long for System V 14-char filename systems
+lib/readline/doc/rltech.texi
+       - rl_clear_history: documented
 
-lib/glob/fnmatch.c
-       - new version with full POSIX.2 BRE matching (character classes,
-         collating symbols, equivalence classes), full support for
-         strcoll(3), and case-insensitive pattern matching
+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/glob/fnmatch.h
-       - new version, with necessary symbols for the new fnmatch.c
+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
 
-tests/posixpat.{tests,right}, tests/run-posixpat
-       - test suite for the POSIX.2 BRE pattern matching code
+doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
+       - keyseq-timeout: documented
 
-variables.c
-       - make sure that array assignment using the compound syntax empties
-         the array before doing the assignment
-         [in bash-2.01.1]
+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>
 
-trap.c
-       - new function, trap_to_sighandler(sig), which returns the correct
-         trap handler for SIG depending on the information in sigmodes[sig]
-         [in bash-2.01.1]
+                                   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>
 
-sig.h
-       - extern declarations for trap_handler and trap_to_sighandler
-         [in bash-2.01.1]
+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
 
-jobs.c
-       - if we get an interrupt while waiting for a command to complete,
-         and there was a trap set on SIGINT that resets the handler to
-         SIG_DFL, the value that waitchld uses for old_trap_handler will
-         be wrong (it will be trap_handler, but trap_handler no longer
-         knows anything about SIGINT).  If old_signal_handler is trap_handler,
-         but signal_is_trapped(SIGINT) returns 0, we need to call
-         trap_to_sighandler to decide what to do
-         [in bash-2.01.1]
+Makefile.in
+       - when building libbuiltins.a, recursively call make with `targets'
+         argument to make sure separate helpfiles get built
 
-                                   7/7
-                                   ---
-locale.c
-       - fix to set_locale_var to handle an assignment to LC_ALL (e.g., as
-         the result of `unset LANG') when default_locale is null
-         [in bash-2.01.1]
+configure.in
+       - substitute `helpdoc' as value of HELPFILES_TARGET if
+         --enable-separate-helpfiles supplied as configure argument
 
-                                   7/8
-                                   ---
-builtins/umask.def, doc/{bash.{1,html},bashref.texi}
-       - added `-p' option for umask to print output in a reusable form
+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
 
-                                   7/9
+                                   2/8
                                    ---
-doc/{bash.{1,html},bashref.texi}
-       - removed descriptions of `-type', `-path', and `-all' options to
-         the `type' builtin in preparation for removing them in the next
-         release
-
-builtins/type.def
-       - removed mention of `-type', `-path', and `-all' options from the
-         long help description
-
-error.c, error.h
-       - new function: internal_warning, for warning messages
+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
-       - changed a call to internal_error to use internal_warning
-       - modified change of 7/3 so that arrays are not emptied until
-         just before the shell is about to assign the new values, so
-         the old value can be used to generate the rhs of the assignment,
-         if necessary.  This is how `normal' shell variables work
-         [in bash-2.01.1]
+       - 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
 
-jobs.c, jobs.h
-       - delete_job now takes a second int argument and prints a warning
-         message when deleting a stopped job if the second argument is
-         non-zero
+variable.h,subst.c
+       - make_local_array_variable: changed prototype and caller
 
-jobs.c, builtins/jobs.def
-       - changed all calls to delete_job to provide a proper second arg
+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.
 
-lib/readline/bind.c
-       - broke rl_read_init_file into an `upper' and `lower' half in
-         preparation for adding file inclusion capability to inputrc
-         parsing
-       - handle_parser_directive now displays an error message if an
-         unknown directive is encountered
-       - parser_endif now prints an error message if an $endif without
-         a matching $if is found
-       - added `$include' parser directive to read bindings and commands
-         from another file at that point
-
-lib/readline/doc/rluser.texinfo, doc/{bash.{1,html},readline.3}
-       - documented new readline `$include' parser directive
-
-shell.c, parse.y
-       - added a new invocation option, --dump-po-strings, and code to
-         make it dump translatable strings ($"...") in GNU gettext
-         `po' format
-
-doc/{bash.{1,html},bashref.texi}
-       - documented new `--dump-po-strings' invocation option
-
-lib/readline/{{kill,funmap}.c,readline.h}
-       - added `rl_paste_from_clipboard()', bound to `paste-from-clipboard'
-         for CYGWIN32 users
-
-lib/readline/kill.c
-       - incorporated bfox's patches for `iterative' yank-last-arg handling.
-         This means that one can keep pressing M-. and move backwards in
-         the history, yanking the last argument of successive history lines
-
-lib/readline/rlwinsize.h
-       - new file, encapsulates various locations of the definition for
-         `struct winsize'
+                                  2/14
+                                  ----
 
-aclocal.m4
-       - augmented BASH_STRUCT_WINSIZE to look in termios.h as well as
-         sys/ioctl.h for definition of `struct winsize'
+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
 
-lib/readline/rltty.h
-       - include "rlwinsize.h" after including tty-driver-specific header
-         file
+                                  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
 
-                                  7/10
+builtins/common.c
+       - get_job_by_name: call internal_error instead of report_error so this
+         doesn't exit the shell
+
+                                  2/18
                                   ----
-support/config.guess
-       - add better support for SunOS on M68K (old Sun3 machines)
+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
-       - check for compound array assignment in read_token_word only if
-         there are characters before the `=' (which would make it a legal
-         assignment statement).  This fixes the problem with defining a
-         function named `=' with `=() { echo foo; }'
-         [in bash-2.01.1]
-
-jobs.c, jobs.h
-       - nohup_all_jobs and delete_all_jobs now take a parameter which
-         says whether or not to restrict their operation to only running
-         jobs
+       - 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>
 
-jobs.c
-       - changed all calls to delete_all_jobs
+                                  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/jobs.def
-       - added `-a' (all jobs) and `-r' (running jobs only) options to
-         `disown'
+builtins/printf.def
+       - tescape: ditto for printf \u and \U escape sequences
 
-doc/{bash.{1,html},bashref.texi}
-       - documented new `-a' and `-r' options to `disown'
+                                  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)
 
-findcmd.c, findcmd.h
-       - new files with command searching code from execute_cmd.c and
-         function declarations from execute_cmd.h
+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>
 
-Makefile.in, builtins/Makefile.in
-       - updated dependencies to account for new findcmd.[ch]
-       - updated dependencies to account for new redir.[ch]
+                                  2/21
+                                  ----
+doc/{bash,builtins}.1
+       - minor changes from Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
 
-redir.c, redir.h
-       - new files with code that sets up lists and performs redirections
-         from execute_cmd.c and execute_cmd.h
+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
 
-execute_cmd.c
-       - include new findcmd.h, redir.h
+lib/readline/parens.c
+       - _rl_enable_paren_matching: make paren matching work in vi insert
+         mode.  Bug report from <derflob@derflob.de>
 
-                                  7/11
+                                  2/22
                                   ----
-Makefile.in, configure.in
-       - PROFILE_FLAGS is now substituted into the Makefile by configure
+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>
 
-                                  7/14
+                                  2/23
                                   ----
-print_cmd.c
-       - make sure single_quote is called from xtrace_print_word_list
-         to correctly quote each word of trace output, especially those
-         with embedded quotes
-         [in bash-2.01.1]
-
-aclocal.m4
-       - extended BASH_CHECK_GETPW_FUNCS so that it checks that getpwuid
-         and getpwnam can also be declared, as well as getpwent
-         [in bash-2.01.1]
-       - in BASH_FUNC_PRINTF, cast printf to type `_bashfunc' before trying
-         to assign it to `pf' to avoid any prototype problems in the
-         declaration
-         [in bash-2.01.1]
-
-trap.c
-       - include <unistd.h> before any of the bash-specific header files,
-         but after config.h
-         [in bash-2.01.1]
-
-test.c
-       - include <errno.h> and declare `extern int errno' before including
-         any of the bash-specific include files, but after <unistd.h>
-         [in bash-2.01.1]
+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>
 
-builtins/Makefile.in
-       - PROFILE_FLAGS is now substituted into the Makefile by configure
+                                  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
 
-configure.in
-       - new options, --enable-profiling and --enable-static-link, to turn
-         on profiling with gprof and link bash statically (if using gcc)
-         for use as a root shell.  The former implies the latter.  If
-         we're linking statically, dynamic loading of new builtins is not
-         available
+                                   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>
 
-doc/bashref.texi
-       - documented new --enable-profiling and --enable-static-link
-         options in installation section; regenerated INSTALL
+                                   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>
 
-lib/glob/glob.[ch]
-       - new global variable, glob_ignore_case, turns on case-insensitive
-         filename matching in fnmatch() using the FNM_CASEFOLD flag
+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.
 
-doc/{bash.{1,html},bashref.texi}
-       - documented new shopt `nocaseglob' option
+                                   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>
 
-                                  7/15
-                                  ----
+                                   3/5
+                                   ---
 bashline.c
-       - when glob_complete_word is called with state == 0, make sure we
-         set rl_filename_completion_desired so that proper quoting of
-         the resultant filenames is performed
-         [in bash-2.01.1]
-
-                                  7/16
-                                  ----
-externs.h, oslib.c
-       - strcasecmp and strncasecmp replacements should have `const char *'
-         as the first two arguments, to match OS definitions
-         [in bash-2.01.1]
-
-                                  7/17
-                                  ----
-(many files)
-       - changes for minix-2.0, mostly just adding #ifndef _MINIX around
-         include files that minix doesn't provide, like <sys/param.h> and
-         <sys/file.h>
-
-lib/readline/terminal.c
-       - removed `outchar' function; use _rl_output_character_function in
-         its place
+       - 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
 
-support/config.guess
-       - changes to recognize HP_ARCH of `hppa2.0'
+                                   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
-       - new `-N' option: `test -N file' returns true if FILE exists and
-         has been modified since it was last accessed
-
-doc/{bash.{1,html},bashref.texi}
-       - documented new `test -N' option
+       - 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
 
-                                  7/22
+                                  3/10
                                   ----
-aclocal.m4
-       - prefer /var/spool/mail to /usr/spool/mail in BASH_DEFAULT_MAIL_DIR
-         [in bash-2.01.1]
+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/{complete,bind}.c
-       - new readline variable, print-completions-horizontally, which causes
-         matches to be printed across the screen (like `ls -x') rather than
-         up-and-down (like `ls')
-       - new readline variable, completion-ignore-case, which causes filename
-         completion and matching to be performed case-insensitively
+lib/readline/signals.c
+       - make sure all occurrences of SIGWINCH are protected by #ifdef
 
-doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo
-       - documented new print-completions-horizontally variable
-       - documented new completion-ignore-case variable
+sig.c
+       - make sure all occurrences of SIGCHLD are protected by #ifdef
 
-_distribution, Makefile.in
-       - bumped the version number up to 2.02-alpha1
+nojobs.c
+       - make sure SA_RESTART is defined to 0 if the OS doesn't define it
 
-bracecomp.c
-       - fixes so that the braces are not quoted by the filename quoting
-         function when complete-into-braces is executed with M-{.  The
-         brace completion functions do filename quoting themselves
-         [in bash-2.01.1]
+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
 
-pathexp.c
-       - changed quote_string_for_globbing so that it takes a flags word
-         as its second argument
+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()
 
-pathexp.h
-       - defines for flags passed to quote_string_for_globbing
+trap.h
+       - queue_sigchld_trap: new extern declaration
 
-subst.c,execute_cmd.c
-       - changed calls to quote_string_for_globbing to pass the correct
-         flag arguments
+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
 
-expr.c
-       - added a `**' binary operator to do exponentiation (2**16 == 65536).
-         precedence is lower than arithmetic operators, higher than unary
-         operators (2**16-1 == 65535)
+                                  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
 
-doc/{bash.{1,html},bashref.texi}
-       - documented new `**' arithmetic binary operator
+{jobs,nojobs}.c
+       - check_window_size: default initial value to CHECKWINSIZE_DEFAULT
 
-                                  7/24
+                                  3/13
                                   ----
-shell.c
-       - added new (currently undocumented) `--wordexp' option to do the
-         job required by POSIX.2 wordexp().  If -n is supplied along with
-         --wordexp, command substitution is disallowed and the shell
-         exits with a status of 125 if one is attempted.  If there is an
-         expansion error, the shell exits with a status of 127.  If there
-         is a shell parsing error, the shell exits with a status of 126.
-         Otherwise, the exit status is 0.  The current output is
+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)
 
-               number of words\n
-               number of bytes\n
-               expanded words, one per line, separated by newlines
+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)
 
-         This will have to be changed when an interface to glibc is coded
+                                  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
 
-                                  7/28
+                                  3/16
                                   ----
-hashcmd.h
-       - reduced the default size of the filename hash table from 631
-         to 107
+array.c
+       - array_insert: fix memory leak by deleting element to be added in the
+         case of an error
 
-sig.c
-       - don't call initialize_siglist if HAVE_UNDER_SYS_SIGLIST is defined
-         [in bash-2.01.1]
+                                  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
 
-siglist.c
-       - don't compile this file if HAVE_UNDER_SYS_SIGLIST is defined
-         [in bash-2.01.1]
+                                  3/19
+                                  ----
+stringlib.c
+       - substring: use memcpy instead of strncpy, since we know the length
+         and are going to add our own NUL terminator
 
-variables.c
-       - fix to make $RANDOM work better in subshells
-         [in bash-2.01.1]
+                                  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>
 
-aclocal.m4
-       - new macro, BASH_DECL_UNDER_SYS_SIGLIST, looks for _sys_siglist in
-         <signal.h> and <unistd.h>, defines UNDER_SYS_SIGLIST_DECLARED if
-         found
-         [in bash-2.01.1]
-       - change BASH_UNDER_SYS_SIGLIST to require BASH_DECL_UNDER_SYS_SIGLIST,
-         like BASH_SYS_SIGLIST requires AC_DECL_SYS_SIGLIST
-         [in bash-2.01.1]
+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>
 
-config.h.in
-       - add a line for UNDER_SYS_SIGLIST_DECLARED
-         [in bash-2.01.1]
+                                  3/21
+                                  ----
+config-top.h
+       - OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT: define to 1 to optimize
+         sequential indexed array assignment patterns.  Defined to 1 by
+         default
 
-configure.in
-       - make sure that SVR4_2 is defined for machines that have $host_os
-         sysv4.2* (e.g., sysv4.2MP) as well as $host == sysv4.2
-         [in bash-2.01.1]
+array.c
+       - array_insert: if OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT is defined,
+         start the search at lastref (see change from 3/15)
 
-                                  7/29
+                                  3/27
                                   ----
-command.h
-       - new command type, ARITH_COM, used to create and execute a ((...))
-         command without translating it into let "..."
+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
 
-parse.y
-       - changes to the grammar and lexer so that ((...)) is parsed as a
-         command of type ARITH_CMD.  An ARITH_CMD is a WORD_LIST, for
-         future expansion, even though only the first word is used
+                                   4/1
+                                   ---
+command.h
+       - W_ASSNGLOBAL: new flag, set to indicate declare -g
 
-make_cmd.c, make_cmd.h
-       - definition and declaration of a function to build an arithmetic
-         command
+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
 
-dispose_cmd.c
-       - added code to dispose of arithmetic commands
+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>
 
-print_cmd.c
-       - added code to print arithmetic commands, both `regularly' and
-         when they're being traced with `set -x'
+                                   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
-       - extern declaration for xtrace_print_arith_cmd
+       - sh_mbsnlen: extern declaration for new function
 
-copy_cmd.c
-       - added code to copy arithmetic commands
+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
 
-execute_cmd.c
-       - added code to directly execute arithmetic commands -- they are
-         a shell_control_structure, so just about everything like
-         redirections and piping is taken care of by the boilerplate code.
-         All that's needed is to expand the expression (which is within
-         double quotes -- added by parse.y:parse_arith_cmd()), print it
-         if tracing is enabled, call the expression evaluator, and return
-         an appropriate result
+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>
 
-                                  7/30
+                                  4/12
                                   ----
-input.c
-       - new function, set_buffered_stream(fd, bp), sets the buffered stream
-         associated with FD to BP and returns the old buffered stream
+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'
 
-input.h
-       - extern declaration for set_buffered_stream
+lib/readline/parse-colors.[ch]
+       - don't try to include <stdbool.h> at all; rely on colors.h to do it
 
-parse.y
-       - call set_buffered_stream rather than manipulating the BUFFERS array
-         directly
+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>
 
-shell.c
-       - unset_bash_input now takes an argument, CHECK_ZERO.  This tells it
-         whether to check whether default_buffered_input is >= 0 or just > 0
+                                  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()
 
-externs.h
-       - changed extern declaration for unset_bash_input
+                                  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
 
-execute_cmd.c, jobs.c, nojobs.c
-       - changed calls to unset_bash_input to add appropriate argument
+                                  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)
 
-input.h
-       - #undef B_* before defining them as flag values for b_flags.  Some
-         systems, like SVR4, have a B_ERROR define in a file included by
-         jobs.c and nojobs.c, and it causes a warning
+                                  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"
 
-                                  7/31
+                                  4/20
                                   ----
-fnmatch.c
-       - rewrote most of fnmatch(), so that it now implements ksh-88 style
-         pattern matching (`[@+*?!](patlist)') if the FNM_EXTMATCH flag
-         is set
+lib/sh/strftime.c
+       - incoporated new version from Aharon Robbins <arnold@skeeve.com>
 
-fnmatch.h
-       - added a define for FNM_EXTMATCH
+                                  4/22
+                                  ----
+doc/{bash.1,bashref.texi}
+       - slight change to the description of /dev/tcp and /dev/udp
 
-                                   8/4
-                                   ---
-lib/readline/display.c
-       - fixed _rl_redisplay_after_sigwinch () so that it really redisplays
-         only the portion after the final newline of a multi-line prompt
-         [in bash-2.01.1]
+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
-       - attempt_shell_completion no longer returns matches if a glob pattern
-         matches more than one filename -- it caused too many problems
-         [in bash-2.01.1]
+       - 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
 
-                                   8/5
-                                   ---
-lib/glob/glob.c
-       - updated glob_pattern_p so that the extended matching operators
-         are recognized
+                                  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>
 
-pathexp.c
-       - udpated unquoted_glob_pattern_p so that the extended matching
-         operators are recognized
-       - udpated quote_globbing_chars so that the extended matching
-         operators are recognized and quoted appropriately
+                                   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
-       - updated match_pattern_char so that the extended matching operators
-         are recognized
+       - 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>
 
-parse.y
-       - updated read_token_word so that it parses an extended matching
-         pattern as a single word
+doc/{bash.1,bashref.texi}
+       - changes to the description of substring expansion inspired by
+         suggestions from Bill Gradwohl <bill@ycc.com>
 
-jobs.c
-       - if a job is suspended with SIGTSTP, and the user has set
-         checkwinsize with `shopt', update the window size
-         [in bash-2.01.1]
+doc/bashref.texi
+       - added substring expansion examples inspired by suggestions from
+         Bill Gradwohl <bill@ycc.com>
 
-pathexp.c, pathexp.h
-       - new global variable, extended_glob, controls whether the extended
-         pattern matching features are enabled
+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
 
-pathexp.h
-       - new define, FNMATCH_EXTFLAG, to be OR'd with other values for
-         flags argument to fnmatch to enable the extended pattern matching
-         features if extended_glob is set
+variables.h
+       - find_shell_variable: extern declaration
+       - find_variable_tempenv: extern declaration
+       - find_variable_notempenv: extern declaration
 
-{pathexp,execute_cmd,bashhist,subst,test}.c, builtins/help.def
-       - changed calls to fnmatch to add FNMATCH_EXTFLAG to the flags arg if
-         extended_glob is non-zero
+arrayfunc.c
+       - bind_array_variable: call find_shell_variable instead of calling
+         var_lookup directly
 
-lib/glob/glob.c
-       - changed flags arg passed to fnmatch to include FNM_EXTMATCH if
-         extended_glob is non-zero (#ifdef SHELL)
+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
 
-                                   8/6
+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
                                    ---
-builtins/shopt.def
-       - added a new `extglob' shell option, controls the value of
-         extended_glob
+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
 
-                                   8/7
+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
                                    ---
-doc/{bash.{1,html},bashref.texi}
-       - documented new extended pattern matching operators and the `extglob'
-         shell option
+lib/sh/mktime.c
+       - current versions of VMS do not need to include <stddef.h>.  Fix from
+         John E. Malmberg <wb8tyw@qsl.net>
 
-tests/{extglob.{tests,right},run-extglob}
-       - test suite for the new extended globbing features
+                                   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>
 
-                                   8/8
+                                   6/5
                                    ---
-parse.y, pathexp.h, lib/glob/fnmatch.c
-       - made the extended globbing code #ifdef EXTENDED_GLOB
+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
 
-config.h.in
-       - added a line for EXTENDED_GLOB, controlled by configure
+                                   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
 
-configure.in
-       - new option, --enable-extended-glob, controls defining of
-         EXTENDED_GLOB (on by default)
+                                   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>
 
-doc/bashref.texi
-       - documented new `configure' `--enable-extended-glob' option
+                                   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>
 
-                                  8/11
-                                  ----
-builtins/printf.def
-       - new `printf' builtin, implemented according to POSIX.2 spec
-         for printf(1)
+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
 
-Makefile.in,builtins/Makefile.in
-       - added necessary stuff for new printf builtin
+externs.h
+       - sh_backslash_quote: declaration now takes a third argument
 
-                                  8/12
-                                  ----
-lib/readline/isearch.c
-       - change to make ^G interrupt the incremental search correctly
-         [in bash-2.01.1]
+builtins/printf.def
+       - printf_builtin: call sh_backslash_quote with 1 as third argument
+         so tildes get escaped
 
-configure.in, config.h.in
-       - configure now checks for the availability of strtoul(3)
+{bashline,bracecomp}.c
+       - call sh_backslash_quote with 0 as third argument so tildes are not
+         escaped in completed words
 
-builtins/printf.def
-       - use strtoul for the `%o', `%u', `%x', and `%X' formats if it
-         is available
+doc/bash.1
+       - add `coproc' to the list of reserved words.  From a report by
+         Jens Schweikhardt <schweikh@schweikhardt.net>
 
-                                  8/13
+                                  6/10
                                   ----
-tests/{printf.{right,tests},run-printf}
-       - extensive test suite for the new `printf' builtin
+execute_cmd.c
+       - line_number_for_err_trap: now global, so parse_and_execute can save
+         and restore it with unwind-protect
 
-builtins/Makefile.in
-       - change so that `builtext.h' is not recreated every time the source
-         file for a builtin is changed if the contents are the same.  This
-         keeps many files from being recompiled
+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/.)
 
-                                  8/14
+                                  6/15
                                   ----
-subst.c
-       - changed verify_substring_values so that it returns -1 for substring
-         range errors, 0 for expression errors, and 1 for success
-         [in bash-2.01.1]
-       - changed parameter_brace_substring to return an error if
-         verify_substring_values returns 0, and a null string if it returns
-         -1.  This matches the ksh93 behavior
-         [in bash-2.01.1]
+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>
 
-trap.c
-       - changed decode_signal so that it makes sure the first three
-         characters of a signal name are `SIG' before allowing the `SIG'
-         prefix to be omitted.  This is so a signal spec of `T' does not
-         match `EXIT', for instance
-         [in bash-2.01.1]
-
-builtins/trap.def
-       - make sure that showtrap() displays traps for signals with unknown
-         names using the signal number
-         [in bash-2.01.1]
-shell.c
-       - make sure that `bash -r' doesn't turn on the restricted mode until
-         after the startup files are executed
-         [in bash-2.01.1]
+                                  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
+                                  ----
 
-doc/{bash.{1,html},bashref.texi}
-       - documented printf builtin
+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>
 
-                                  8/15
+                                  6/22
                                   ----
-general.c
-       - added \xNNN escape to ansicstr -- NNN are up to three hex digits.
-         This affects $'...', `echo -e', and printf
+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/printf.def
-       - added \xNNN escape to bexpand -- NNN are up to three hex digits.
-         This affects printf's `%b' conversion specifier
+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
 
-doc/{bash.{1,html},bashref.texi}
-       - documented new \xNNN escape sequence for echo, $'...', and printf
+nojobs.c
+       - job_control: now declared as int variable, initialized to 0, never
+         modified
 
-builtins/setattr.def
-       - make sure that a variable found in the temp environment does not
-         cause a null string to be assigned by bind_variable (e.g.,
-               foo="" export foo
-         )
-         [in bash-2.01.1]
+jobs.h
+       - job_control: extern declaration no longer dependent on JOB_CONTROL
 
-                                  8/18
-                                  ----
-subst.c
-       - fixed a bug that sometimes caused bad memory (pointer into an
-         allocated block) to be passed to free when doing arithmetic
-         substitution.  Bug report from stevet@myofb.org
-         [in bash-2.01.1]
+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
 
-                                  8/19
+                                  6/23
                                   ----
-subst.c
-       - considerable changes:  moved the code that expands a single
-         $... parameter expansion into a separate function: param_expand()
-         This function returns a string, which may contain characters
-         quoted with CTLESC or CTLNUL without doing word splitting
-       - changed expand_word_internal to not remove the expansion of "$*"
-         if the number of positional parameters is > 0
-       - changed the '"' case of expand_word_internal to remove quoted
-         nulls from the resultant word if the expansion was not "$@", and
-         the word is not a quoted null string ([] == CTLNUL, [1] == '\0')
-
-subst.c, variables.c
-       - moved the code that handles special variables from subst.c to
-         variables.c
+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
 
-                                  8/20
+                                  6/25
                                   ----
-subst.c
-       - rearranged the source a bit to group functions with similar
-         operation together
-       - fixed parameter_brace_expand so that it no longer allows
-         indirect expansion of `special' variables
-       - fixed parameter_brace_expand so taking the length of some of
-         the shell's special parameters works again
-       - moved all of the code that computes the length of a shell
-         parameter (the ${#xxx} expansion) into parameter_brace_expand_length.
-         Previously, the code that handled the lengths of the shell's
-         special parameters was in parameter_brace_expand_word
-       - valid indirect expansions are now only variable names or positional
-         parameters
+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>
 
-                                  8/21
+                                  6/26
                                   ----
-subst.c
-       - fixed param_expand to raise an expansion error if $! is being
-         expanded and no asynchronous processes have been created
-       - an expression error in a $((...)) arithmetic expansion now causes
-         a non-interactive shell running in POSIX mode to exit
-       - relaxed change of 8/20 to allow indirect references to $#, $@, $*
+trap.c
+       - signal_is_pending: return TRUE if SIG argument has been received and
+         a trap is waiting to execute
 
-builtins/bashref.texi
-       - documented new posix-mode exit on invalid expressions in $((...))
+trap.h
+       - signal_is_pending: extern declaration
 
-lib/readline/complete.c
-       - don't call rl_strpbrk unless rl_filename_quote_characters is not
-         NULL -- strpbrk requires non-NULL arguments
-         [in bash-2.01.1]
+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?
 
-                                  8/22
+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
                                   ----
-bashline.c
-       - don't make `history-expand-line' a bindable command unless
-         BANG_HISTORY is defined, and don't compile the code for that
-         command in unless BANG_HISTORY is defined
-       - make history_expand_line(), tcsh_magic_space(), alias_expand_line(),
-         and history_and_alias_expand_line() int-returning functions that
-         return 0 for success and non-zero on error.  This allows
-         tcsh_magic_space() to just call history_expand_line() and insert
-         a space if that returns successfully
-       - `magic-space' is now a bindable readline command
-
-doc/bash.{1,html}, lib/readline/doc/rluser.texinfo
-       - documented new `magic-space' bindable readline command
+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)
 
-                                  8/25
+                                  6/30
                                   ----
-parse.y
-       - fixed decode_prompt_string so that values of $PWD longer than
-         PATH_MAX don't cause buffer overruns (char t_string[PATH_MAX])
-         [in bash-2.01.1]
+variables.h
+       - additional defines for the new `nameref' variable attribute
+         (att_nameref): nameref_p, nameref_cell, var_setref
 
-general.c
-       - fixed polite_directory_format so that values of $HOME longer
-         than PATH_MAX don't cause buffer overruns (char tdir[PATH_MAX])
-         [in bash-2.01.1]
+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
-       - fix to expansion of $* so that the positional parameters are
-         separated by the first character of $IFS, even when the expansion
-         is not within double quotes, so the correct split is still
-         performed even when IFS does not contain a space.  Works for
-         ${*}, too
-       - fix to expansion of $@ so that the positional parameters are
-         separated by the first character of $IFS, even when the expansion
-         is not within double quotes, so the correct split is still
-         performed even when IFS does not contain a space.  Works for
-         ${@}, too
-       - new function, string_list_dollar_at(), which is to $@ as
-         string_list_dollar_star is to $*
-       - fixed expansion of $@ so that splitting is still done even if
-         IFS is unset or NULL, as POSIX.2 specifies (section 3.5.2)
-       - fixed expansion of $* so that it expands to multiple words if there
-         is more than one positional parameter, just like $@, even if
-         IFS is unset or NULL
-       - new function list_quote_escapes, quotes (with CTLESC) all
-         CTLESC and CTLNUL characters in each member of the list
-
-tests/dollar-{at,star}.sh
-       - combined into dollar-at-star, changed run-dollars accordingly
+       - 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]
 
-                                  8/26
-                                  ----
-Makefile.in
-       - make the `tests' target use $(SHELL) instead of hardcoding `sh'
+execute_cmd.c
+       - execute_for_command: changes to implement ksh93 semantics when index
+         variable is a nameref
 
-                                  8/29
-                                  ----
-subst.c
-       - expand_word_list_internal now takes a flags word as the second
-         argument, telling which expansions to perform on the WORD_LIST
-       - broke expand_word_list_internal into several functions: one
-         each to do brace expansion, glob expansion, and the `normal'
-         shell expansions
-       - new extern function: expand_words_shellexp() to perform the
-         `normal' shell expansions on a WORD_LIST
+builtins/setattr.def
+       - show_var_attributes: change to add `n' to flags list if att_nameref
+         is set
 
-subst.h
-       - extern declaration for expand_words_shellexp
+builtins/set.def
+       - unset_builtin: changes to error messages to follow nameref variables
 
-bashline.c
-       - fixed a problem with attempt_shell_completion where it attempted
-         to refer to rl_line_buffer[-1] (completion at the start of the
-         line, which means that ti == -1, which means that the test for
-         rl_line_buffer[ti] at line 715 was an array bounds error
-         [in bash-2.01.1]
+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
 
-eval.c
-       - new function, parse_string_to_word_list(), which takes a string
-         and runs it through the parser, returning the resultant word
-         list
+                                   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
 
-externs.h
-       - new extern declaration for parse_string_to_word_list()
+variables.h
+       - unbind_nameref: extern declaration
 
-variables.c
-       - change assign_array_var_from_string to first split the string
-         between the parens on whitespace, then expand the resultant
-         list of words with all the shell expansions before doing the
-         assignment
+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
 
-                                   9/4
-                                   ---
-redir.c, redir.h
-       - redirection_error is no longer a static function
+doc/{bash.1,bashref.texi}
+       - document namerefs and typeset/declare/local/unset -n
 
-builtins/evalstring.c
-       - changes to handle $( < filename ) (equivalent to $(cat filename))
-         as in ksh
+                                  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/bind.c
-       - added two new functions: rl_unbind_function_in_map(func, map),
-         which unbinds all keys that execute FUNC in MAP; and
-         rl_unbind_command_in_map(command, map), which unbinds all keys
-         bound to COMMAND in MAP
+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/readline.h
-       - extern declarations for rl_unbind_{function,command}_in_map
+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/doc/rltech.texi
-       - documented rl_unbind_{function,command}_in_map
+lib/readline/rltty.c
+       - prepare_terminal_settings: don't mess with IXOFF setting if
+         USE_XON_XOFF defined
 
-builtins/bind.def
-       - added a new option, -u FUNCNAME, which unbinds all key sequences
-         bound to FUNCNAME in the specified (or current) keymap
+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>
 
-doc/{bash.{1,html},bashref.texi}
-       - documented new $( < filename ) command substitution
-       - documented new bind -u FUNCNAME option
+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>
 
-                                   9/5
-                                   ---
-shell.c
-       - send SIGHUP to all jobs when an interactive login shell exits if
-         the variable `hup_on_exit' is non-zero
-       - modified run_startup_files so that if `NON_INTERACTIVE_LOGIN_SHELLS'
-         is #define'd (perhaps in config.h.top, though there is nothing there
-         for it), all login shells (interactive and non-interactive) run
-         /etc/profile and one of the per-user login shell startup files
+                                  7/24
+                                  ----
+configure.in
+       - interix: define RECYCLES_PIDS.  Based on a report from Michael
+         Haubenwallner <michael.haubenwallner@salomon.at>
 
-builtins/shopt.def
-       - new shopt option `huponexit' to control the value of hup_on_exit
+                                  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>
 
-doc/{bash.{1,html},bashref.texi}
-       - documented new `huponexit' shell option
+support/shobj-conf
+       - Mac OS X: drop MACOSX_DEPLOYMENT_TARGET=10.3 from the LDFLAGS. We
+         can finally kill Panther
 
-                                   9/8
-                                   ---
-builtins/common.c
-       - changed contains_shell_metas to return 1 if a tilde appears at the
-         start of a string or after a `=' or `:'
-       - changed backslash_quote to quote a tilde if it appears at the start
-         of a string or after a `=' or `:'
+                                  7/28
+                                  ----
+subst.c
+       - command_substitute: make sure last_made_pid gets reset if make_child
+         fails
 
-lib/readline/complete.c
-       - moved rl_tilde_expand to util.c; it doesn't really have anything
-         to do with completion
-       - moved insert_text to readline.c, renamed it _rl_replace_text (since
-         that's really what it does), changed callers
-       - moved code that postprocesses the list of completion matches into
-         a new function: postprocess_matches
-       - new implementation of tcsh-like menu completion in a single new
-         function: rl_menu_complete
-
-lib/readline/{funmap.c,readline.h}
-       - necessary declarations for binding rl_menu_complete to the
-         new `menu-complete' command
-
-doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo
-       - documented new `menu-complete' bindable readline command
+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>
 
-                                   9/9
-                                   ---
 jobs.c
-       - delete_job should print a warning only if subshell_environment
-         is 0, so we don't print bogus warnings when shell scripts without
-         a leading #! are executed
+       - 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>
 
-                                  9/10
+                                  7/29
                                   ----
-builtins/read.def
-       - fixed the code so that the `read' is automatically restarted when
-         it returns -1 with errno == EINTR.  SIGINT is handled by the
-         interrupt handler, since interrupt_immediately is set to 1, so
-         this handles things like SIGCHLD
-         [in bash-2.01.1]
+shell.c
+       - subshell_exit: new function, exits the shell (via call to sh_exit())
+         after calling any defined exit trap
 
-                                  9/11
-                                  ----
-test.c
-       - reorganized the code slightly to make it easier to add the ksh-like
-         [[...]] compound command
+externs.h
+       - subshell_exit: new extern declaration
 
-test.h
-       - new file, with extern declarations for functions available in test.c
+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>
 
-externs.h
-       - moved declaration of test_command to test.h
+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>
 
-builtins/test.def
-       - include `test.h'
+{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
 
-                                  9/16
-                                  ----
-{command,make_cmd,dispose_cmd,externs,subst}.h
-parse.y, subst.c
-{make,dispose,copy,print,execute}_cmd.c
-       - changes to add the new ksh-93 compatible [[...]] conditional command
+                                   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
-       - new enable option, --enable-cond-command, to compile in the [[...]]
-         command code
+       - AC_CANONICAL_BUILD: invoke for later use
 
-config.h.in
-       - new #define, COND_COMMAND, to compile in the [[...]] command code
+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
 
-tests/{run-cond,cond.{tests,right}}
-       - test suite for the new [[...]] command
+lib/readline/rlprivate.h
+       - _rl_prev_macro_key: extern declaration
 
-{builtins,lib/{readline,glob,tilde}}/Makefile.in
-       - explicit dependencies for .o files on .c files for losing makes
-         like Solaris
 
-doc/{bash.{1,html},bashref.texi}
-       - documented the new `[[' compound command
-       - documented the test/[ builtin behavior based on the number of
-         arguments in the description of the builtin
-       - made a new section for conditional expressions that just lists
-         the available primaries -- the connectives and other operators
-         are listed in the description of the [[ command and the test/[
-         builtin
+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>
 
-                                  9/18
+                                  8/13
                                   ----
-builtins/set.def
-       - minus_o_option_commands is now a global function so the shopt
-         code can use it
-       - minus_o_option_commands now takes an argument telling it which
-         options to print, just like list_minus_o_options
-       - new function, print_minus_o_option, which prints the value of
-         a `set -o' option either in the traditional format or in the
-         format used by `set +o'
-       - changed list_minus_o_opts and minus_o_option_commands to call
-         print_minus_o_option
+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/shopt.def
-       - `shopt -p' now causes output to be printed in a format reusable
-         as input (the format is a series of shopt commands, like the
-         output of `set +o')
-       - fixed a bug that made `shopt -so' and `shopt -uo' not work
-       - fixed list_shopt_o_options so that `shopt -op' acts like `set +o'
-       - fixed list_shopt_o_options to that `shopt -op optname' prints the
-         value of optname in a reusable format
-       - fixed list_some_o_options so that `shopt -ops' and `shopt -opu'
-         work and display output in a reusable format
+builtins/common.h
+       - extern declaration for evalstring()
 
-                                  9/19
+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
                                   ----
-doc/{bash.{1,html},bashref.texi}
-       - documented new `shopt -p' behavior
+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.
 
-shell.c
-       - made `bash +o' display the same output as `set +o' and then
-         start an interactive shell (previously `bash -o' and `bash +o'
-         displayed the same thing)
+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
 
-builtins/common.h
-       - added prototypes to the extern function declarations
+                                  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
 
-                                  9/22
+                                  8/19
                                   ----
-builtins/evalstring.c
-       - fixed the DISCARD case of the jump_to_top_level so that it
-         doesn't try to call dispose_command(command) after the
-         `pe_dispose' unwind frame gets run, since that disposes the
-         command
+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>
 
-                                  9/23
+                                  8/20
                                   ----
-test.[ch]
-       - test_eaccess is now a global function so that globbing code can
-         use it
+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>
 
-lib/glob/glob.c
-       - rewrote glob_vector to be slightly more efficient and to not
-         read the directory if the filename pattern does not contain
-         any globbing chars.  This satisfies the POSIX requirement that
-         read permission is not required for a directory when the
-         pathname component does not contain a pattern character (bug
-         reported by jsm28@cam.ac.uk)
+                                  8/21
+                                  ----
+command.h
+       - W_NOBRACE: new word flag that means to inhibit brace expansion
 
 subst.c
-       - fixed parameter_brace_expand so that ${array[@]} and ${array[*]}
-         behave correctly when IFS is unset or set to something that does
-         not contain a space (they should result in separate words, just
-         like $@ and $*)
+       - 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>
 
-tests/{run-array2,array-at-star,array2.right}
-       - tests for the expansions of ${array[@]} and ${array[*]}, derived
-         from the tests in dollar-at-star
+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>
 
-                                  9/24
+                                  8/23
                                   ----
 jobs.c
-       - fixed cleanup_dead_jobs so that it doesn't remove the job
-         containing last_asynchronous_pid from the job table.  This
-         fixes the POSIX.2 `wait' requirement problem
+       - remove references to first_pid and pid_wrap, since we're not using
+         them for anything anymore
 
-                                  9/25
+                                  8/24
                                   ----
-parse.y
-       - added `\r' escape sequence to the prompt expansion code
-
-lib/readline/chardefs.h
-       - added defines for ISOCTAL, OCTVALUE, isxdigit (if not defined),
-         and HEXVALUE
-
-lib/readline/bind.c
-       - added `normal' echo/printf-like backslash escapes to the
-         key sequence translation code, with the addition that \d
-         expands to RUBOUT.  This means that key sequence definitions
-         (before the `:') and macro values may contain these special
-         backslash-escape sequences
-       - now that we can translate octal escape sequences in key bindings,
-         change _rl_get_keyname so that it turns characters with values
-         128-159 inclusive into octal escape sequences (\200-\237), since
-         those characters are not ASCII or ISO Latin 1
-
-doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo
-       - documented new backslash escapes for readline key sequence and
-         macro translation
+subst.c
+       - changes for W_NOBRACE everywhere appropriate: so it can be displayed
+         for debugging, and passed out of expand_word_internal
 
-builtins/pushd.def
-       - new function, get_dirstack_from_string(char *string), returns an
-         element from the directory stack or null, treating the argument
-         exactly as `dirs string' would, with the exception that if
-         the first character of `string' is not `+' or `-', a `+' is
-         assumed
+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>
 
-builtins/common.h
-       - new extern declaration for get_dirstack_from_string
+doc/bashref.texi
+       - some small formatting changes from Karl Berry <karl@freefriends.org>
 
-general.c
-       - added code to bash_special_tilde_expansions to get the expansion
-         using get_dirstack_from_string() if the first character of the
-         tilde-prefix is a digit or the first character is a `+' or `-'
-         and the second is a digit
+                                  8/27
+                                  ----
+lib/readline/doc/{history,rlman,rluserman}.texi
+       - some small formatting changes from Karl Berry <karl@freefriends.org>
 
-tests/dstack.{tests,right}
-       - renamed from dirstack.{tests,right}
+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>
 
-tests/dtack2.{tests,right}
-       - new tests for the directory stack tilde expansion code
+subst.c
+       - array_length_reference: changes to make length references to array
+         elements using negative indices (${#a[-1]}) work
 
-tests/run-dirstack
-       - now runs both dstack and dstack2
+                                  8/28
+                                  ----
+doc/{bash.1,bashref.texi}
+       - document new treatment of negative indices to indexed arrays when
+         assigning, referencing, calculating length, and unsetting
 
-                                  10/3
+                                  8/29
                                   ----
-trap.c
-       - reordered header file inclusion for irix 4
+shell.c
+       - show_shell_usage: add -l to list of shell invocation options (short
+         for --login).  From Red Hat bug 852469
 
-execute_cmd.c
-       - fixed select_query so that a reply that is not a number is treated
-         the same as a numeric reply that is out of range
+configure.ac
+       - renamed from configure.in, as latest autoconf versions want.  Patches
+         Stefano Lattarini <stefano.lattarini@gmail.com>
 
-lib/readline/util.c
-       - added a backwards-compatibility definition of _rl_savestring()
+MANIFEST,Makefile.in,doc/bashref.texi,support/mkconffiles
+       - configure.in -> configure.ac
 
-builtins/set.def
-       - initialize_shell_options now takes an argument saying whether or
-         not we should parse $SHELLOPTS from the environment.  The shell
-         does not parse the value if it's restricted, running setuid, or
-         running in `privileged mode'
-
-shell.c
-       - change call to initialize_shell_options to add the correct argument
+                                   9/1
+                                   ---
 
-builtins/common.h
-       - changed extern declaration for initialize_shell_options
+parse.y
+       - read_token_word: allow words like {array[ind]} to be valid redirection
+         words for constructs like {x}<file
 
-doc/{bash.{1,html},bashref.texi}
-       - added note that the shell ignores $SHELLOPTS in the environment at
-         startup if running in privileged mode
-       - added note that the restricted shell does not parse $SHELLOPTS from
-         the environment at startup
+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>
 
-                                  10/6
-                                  ----
-aclocal.m4
-       - change BASH_RLIMIT_TYPE so that it looks for rlim_t in
-         <sys/resource.h> as well as <sys/types.h>, for Solaris 2.6
-       - new macro, BASH_LARGE_FILE_SUPPORT, to enable special compilation
-         options for large files on Solaris 2.6 (from eggert@twinsun.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
 
-mailcheck.c
-       - the `file_size' member of the FILEINFO struct should be of
-         type `off_t'
-       - the `size' variable in file_has_grown should be of type `off_t'
-       - the RESET_MAIL_FILE macro should initialize file_size to 0, not 0L
+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
 
-builtins/Makefile.in
-       - LDFLAGS and LOCAL_LDFLAGS are now set by configure
-       - `mkbuiltins' is now created from `mkbuiltins.o' instead of directly
-         from the source to the executable
+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
 
-builtins/evalfile.c
-       - fixed _evalfile so that it handles large files correctly on
-         systems where the st_size member of `struct stat' will not fit
-         into an `int'
+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
 
-builtins/mkbuiltins.c
-       - don't assume that st_size fits into an int
+lib/readline/rlprivate.h
+       - _rl_reset_prompt, _rl_show_mode_in_prompt: extern declarations
 
-input.[ch]
-       - the `b_size' member of a struct BSTREAM is now of type `size_t'
-       - changed third argument to make_buffered_stream to size_t; changed
-         caller
-       - changed `size' variable in fd_to_buffered_stream to type `size_t'
+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>
 
-general.h
-       - include <sys/resource.h> if HAVE_SYS_RESOURCE_H and RLIMTYPE are
-         both defined, for possible necessary definition of RLIMTYPE
-         (e.g., on Solaris 2.6)
+doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
+       - document new show-mode-in-prompt variable, off by default
 
-{execute_cmd,jobs}.c, builtins/times.def
-       - don't include <sys/resource.h> explicitly if RLIMTYPE is defined,
-         since general.h will include it in that case
+                                   9/3
+                                   ---
 
-lib/readline/bind.c
-       - new function, char *_rl_read_file(filename, sizep), which reads
-         FILENAME into a malloced buffer, returning the buffer and the
-         size of the buffer in *SIZEP
+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
 
-lib/readline/histfile.c
-       - changed read_history_range and history_truncate_file to handle
-         large files
+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)
 
-hashcmd.c
-       - find_hashed_filename should not add `./' to the front of a pathname
-         that already begins with `./'
+doc/{bash.1,bashref.texi}
+       - CHILD_MAX: document new meaning and action when variable is set
 
-                                  10/8
-                                  ----
-support/config.sub
-       - recognize `hppa2.0' as a valid machine architecture
+                                   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>
 
-aclocal.m4
-       - changed BASH_CHECK_LIB_TERMCAP so that `gnutermcap' is not chosen
-         if `$prefer_curses' is set to something
+                                   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>
 
-bashhist.c
-       - don't use HISTCONTROL or HISTIGNORE to remove lines from the
-         second and subsequent lines of a multi-line command
-         (current_command_line_count > 1).  Old code did this only when
-         command-oriented-history was enabled
+                                   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>
 
-doc/{bash.{1,html},bashref.texi}
-       - changed descriptions of HISTCONTROL and HISTIGNORE to state that
-         these variables are not applied to the second and subsequent
-         lines of a multi-line command
+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>
 
-builtins/hash.def, {copy,dispose}_cmd.c
-       - include "bashtypes.h" -- cray machines need it because of their
-         oddball definition of `word'
+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
 
-configure.in
-       - changed check of ${host_cpu} to check for `*cray*' and `*Cray*'
-         when deciding whether to include the GNU malloc, since it
-         seems that ${host_cpu} gets set to `CrayYMP'
+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>
 
-                                  10/9
+                                  9/11
                                   ----
-configure.in
-       - look for strtod and strtol in libc
-       - make lib/sh directory in build directory if not there
-       - create lib/sh/Makefile
 
-config.h.in
-       - added HAVE_STRTOD and HAVE_STRTOL
+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>
 
-Makefile.in
-       - changes for lib/sh/libsh.a (shell library)
+                                  9/13
+                                  ----
+configure.ac,config.h.in
+       - enable-direxpand-default: new configure option, turns the `direxpand'
+         shell option on by default
 
-builtins/printf.def
-       - took out the `#ifdef STRTOUL' code, since strtoul is in libsh.a,
-         and will be resolved from there if it's not in libc
+bashline.c
+       - dircomplete_expand, dircomplete_expand_relpath: initialize to 1 if
+         DIRCOMPLETE_EXPAND_DEFAULT is defined and non-zero
 
-variables.c
-       - call strtol() instead of string_to_long()
+doc/bashref.texi
+       - enable-direxpand-default: document new configure option
 
-general.c, general.h
-       - removed string_to_long
-       - changed legal_number to use strtol so it correctly sets errno
-         to ERANGE on overflow
-       - moved bash_getcwd_errstr here from lib/sh/oslib.c
+                                  9/14
+                                  ----
+shell.c
+       - --protected: make option valid only when wordexp is compiled into
+         the shell.  Fix from Roman Rakus <rrakus@redhat.com>
 
-externs.h
-       - moved extern declarations for functions defined in libsh to a
-         separate section of the file, added extern declarations for
-         other functions in libsh
+configure.ac
+       - HP NonStop (*-nsk*): compile --without-bash-malloc. Change from
+         Joachim Schmitz <jojo@schmitz-digital.de>
 
-builtins/ulimit.def
-       - changed macro definition for string_to_rlimtype to call strtol
-         directly instead of string_to_long
+                                  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/sh/clktck.c
-       - moved get_clock_tck to its own file, since it's compiled in
-         unconditionally
+lib/readline/colors.h
+       - workaround for HP NonStop compiler issue with <stdbool.h> from
+         Joachim Schmitz <jojo@schmitz-digital.de>
 
-                                  10/10
-                                  -----
-lib/sh/getenv.c
-       - moved getenv() and __getenv() here from lib/sh/oslib.c
+                                  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>
 
-lib/sh/{setlinebuf,strerror,strcasecmp}.c
-       - moved {setlinebuf,strerror,strcasecmp}() from oslib.c to
-         individual files
+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>
 
-lib/sh/Makefile.in, Makefile.in
-       - changes for new files in lib/sh
+                                  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
 
-aclocal.m4
-       - new macro BASH_SYS_RESTARTABLE_SYSCALLS, which does what
-         AC_SYS_RESTARTABLE_SYSCALLS does, but using posix sigaction()
+                                  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>
 
-configure.in
-       - call BASH_SYS_RESTARTABLE_SYSCALLS if ac_cv_sys_restartable_syscalls
-         is `no'
+                                  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
 
-                                  10/13
-                                  -----
-builtins/jobs.def
-       - catch out-of-range jobs better in disown_builtin
+                                  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
 
-configure.in
-       - don't build with GNU malloc on cygwin32
+lib/readline/doc/rltech.texi
+       - rl_input_available_hook: document
 
-trap.c
-       - change signal_name to handle the case where signal_names[sig] is
-         NULL, which can happen on cygwin32
+                                  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
-       - changes to do_piping to make pipes text mode (O_TEXT) on cygwin32
+       - 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
 
-cross-build
-       - new directory with cache files and other stuff for cross-compiling
-         bash (currently only for building for cygwin32 on a Unix machine)
+                                  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>
 
-cross-build/cygwin32.cache
-       - new file containing configuration variable assignments for
-         cygwin32 that would otherwise require a default case for AC_TRY_RUN
+                                  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
 
-configure.in
-       - source ${srcdir}/cross-build/cygwin32.cache on CYGWIN32 systems
-         if we're cross-compiling on a unix machine
-       - set $CC_FOR_BUILD for cygwin32 cross-compiling environment
+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
 
-Makefile.in
-       - CC_FOR_BUILD is now a variable set by configure
+test.c
+       - unary_operator: add new -R variable, returns true if variable is set
+         and has the nameref attribute. From ksh93
 
-builtins/mkbuiltins.c
-       - only check for read(2) returning <= 0 in extract_info() (error
-         and exit on < 0, warning and return on == 0)
+builtins/test.def
+       - add -R to description of conditional commands for help test
 
-builtins/evalfile.c
-       - only check for read(2) returning <= 0 in _evalfile() (error and
-         and failure return on < 0, success on == 0 while short-circuting
-         rest of operation)
+doc/{bash.1,bashref.texi}
+       - document new -R unary conditional operator
 
-                                  10/14
+                                  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
 
-vprint.c
-       - moved to lib/sh/vprint.c
-
-lib/sh/Makefile.in
-       - added entries for vprint.[co] in the appropriate places
-
-cross-build/win32sig.h
-       - a version of signames.h for cross-compiling for the CYGWIN32
-         environment on a Unix machine (from noer@cygnus.com)
-
-aclocal.m4
-       - made all cases of AC_TRY_RUN and AC_TRY_COMPILE have reasonable
-         default cases for cross-compiling, and tell the user what they are
+trap.h
+       - extern declaration for check_signals_and_traps
 
-Makefile.in
-       - removed vprint.c from shell sources and vprint.o from shell
-         objects
-       - added a level of indirection for signames.h -- the variable
-         SIGNAMES_H is set by configure to either `lsignames.h' or
-         a file for a cross-compilation environment (currently only
-         the cygwin32 stuff is supported).  Then that file is copied
-         to `signames.h'.  `lsignames.h' is created by `mksignames' as
-         was previously used to create signames.h directly
+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
 
-configure.in
-       - set SIGNAMES_H to either `$(srcdir)/cross-build/win32sig.h' or
-         `lsignames.h' as appropriate, substitute into Makefile
 
-                                  10/15
+                                  10/14
                                   -----
-builtins/Makefile.in
-       - CC_FOR_BUILD is now set by configure and used to build mkbuiltins
-         and psize.aux
-
-variables.h
-       - new variable attribute `att_tempvar', set if the SHELL_VAR * was
-         constructed on the fly from the temporary environment
+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)
 
-variables.c
-       - find_name_in_env_array now sets the `att_tempvar' attribute on
-         the SHELL_VAR it creates
+sig.c
+       - sigint_sighandler: call bashline_set_event_hook to set the event
+         hook if we're executing in a readline signal handler context
 
-findcmd.c
-       - search_for_command now disposes the SHELL_VAR created by searching
-         the temporary environment for $PATH, if it is found there
-       - _find_user_command_internal also disposes of the SHELL_VAR if it
-         has the `att_tempvar' attribute set
+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)
 
-builtins/setattr.c
-       - show_name_attributes looks in the temporary environemnt, so it needs
-         to dispose the SHELL_VAR if it has the att_tempvar attribute set
 
-subst.c
-       - parameter_brace_expand_word now disposes of the SHELL_VAR returned
-         by find_variable if it has the att_tempvar attribute set
-       - ditto for param_expand and word_split
+parse.y
+       - yy_readline_get: don't set interrupt_immediately before we call
+         readline().  Inspired by report from lanshun zhou
+         <zls.sogou@gmail.com>
 
-builtins/kill.def
-       - disallow null pid arguments instead of treating them as 0
-       - display a usage message and return failure if no pid or job
-         arguments are supplied
+input.c
+       - getc_with_restart: add call to run_pending_traps after call to
+         CHECK_TERMSIG
 
-                                  10/16
-                                  -----
-builtins/declare.def
-       - make `var=value declare -x var' behave the same as
-         `var=value export var' and `var=value declare -r var' behave the
-         same as `var=value readonly var', now that we have the `tempvar'
-         attribute
+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
 
-                                  10/22
-                                  -----
-jobs.c
-       - non-interactive shells shouldn't report jobs killed by a SIGINT,
-         even if the standard output is to a terminal
-       - pretty_print_job should add a CR at the end of its output if the
-         shell is interactive and asynchronous notification is being
-         performed.  This fixes the problem with extra CRs in the output
-         of $(jobs)
+builtins/mapfile.def
+       - mapfile: don't set interrupt_immediately before calling zgetline()
+         (which uses zread internally)
 
-general.c
-       - changed canonicalize_pathname to change `//' into `/', but leave
-         other pathnames starting with two consecutive slashes alone
+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/27
+                                  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
 
-lib/readline/histexpand.c
-       - fixed history_expand so that the appearance of the history
-         comment character at the beginning of a word inhibits history
-         expansion for the rest of the line
-
-                                  10/29
+                                  10/20
                                   -----
-jobs.c,variables.c
-       - moved set_pipestatus_array to variables.c
+builtins/wait.def
+       - WAIT_RETURN: set wait_signal_received back to 0 for the potential
+         next call to wait
 
-variables.c
-       - new function, set_pipestatus_from_exit(int), which sets the
-         PIPESTATUS variable from a command's exit status
+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
 
-variables.h
-       - extern declarations for set_pipestatus_from_exit and
-         set_pipestatus_array
+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
 
-execute_cmd.c
-       - fixed execute_simple_command to call set_pipestatus_from_exit
-         if a foreground builtin or function, or a foreground null
-         command is executed
+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
 
-                                  10/31
+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
                                   -----
-shell.c
-       - fixed run_startup_files to detect being run by sshd, and treat
-         that case as equivalent to being run by rshd
+lib/glob/glob.c
+       - glob_filename: only check directory_name for globbing chars if
+         it's of non-zero length
 
-                                  11/3
-                                  ----
-builtins/set.def
-       - make sure `set -a' doesn't cause SHELLOPTS to be exported when
-         a change is made to one of the shell options
+lib/sh/strchrnul.c
+       - new simpler implementation
 
-                                  11/4
-                                  ----
-pathexp.c
-       - fix to shell_glob_filename in the code that uses a POSIX glob
-         library
+subst.c
+       - command_substitute: call set_shellopts after turning off errexit
+         in subshells so it's reflected in $SHELLOPTS
 
-                                  11/5
+                                  11/7
                                   ----
-jobs.c
-       - fix cleanup_dead_jobs to hang onto the job corresponding to
-         last_asynchronous_pid only if the shell is not interactive
-         (this still has the problem that until a new async process
-         is started, the job will stay in the jobs table)
+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>
 
-configure.in,aclocal.m4
-       - added a new macro, BASH_TYPE_U_INT32_T, to check for u_int32_t
-         separately from int32_t, since there are systems (HP-UX 10.20)
-         that have a define for the latter but not the former
+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/6
-                                  ----
-jobs.c
-       - cleanup_dead_jobs no longer checks whether the job it is deleting
-         corresponds to last_asynchronous_pid
-       - notify_of_job_status and mark_dead_jobs_as_notified now will not
-         mark the job corresponding to last_asynchronous_pid as notified
-         if the shell is not interactive
-       - wait_for_single_pid, if told to wait for last_asynchronous_pid,
-         or the job of which it is a member, will take care of marking
-         the job as notified after calling wait_for and collecting the
-         status.  This means that two successive `wait' calls for $! will
-         succeed the first time and fail the second, as POSIX.2 specifies
-         (take this code out if it causes problems)
+                                  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>
 
-                                  11/7
-                                  ----
 jobs.c
-       - wait_for_job, if told to wait for the job corresponding to the
-         last async pid, will mark the job as notified after waiting for
-         it and collecting the status
+       - 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>
 
-general.h
-       - fixed MEMBER macro to avoid reading past end of S (it used to
-         test s[1] before s[0], which is an error if s == "")
+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>
 
-subst.c
-       - expand_word_internal should free ISTRING before returning if
-         param_expand returns an error
-       - parameter_brace_expand_word should free the memory it allocates
-         and passes to param_expand
+lib/malloc/malloc.c
+       - block_signals: renamed to _malloc_block_signals, made public
+       - unblock_signals: renamed to _malloc_unblock_signals, made public
 
-execute_cmd.c
-       - execute_arith_command should call dispose_words on the list
-         returned by expand_words
+lib/malloc/imalloc.h
+       - extern declarations for _malloc_{un,}block_signals
 
-parse.y
-       - after calling parse_arith_command, read_token needs to free the
-         string value that parse_arith_command fills in, since make_word
-         makes a copy of the string it's passed
+lib/malloc/table.c
+       - mregister_alloc, mregister_free: block signals around table
+         manipulation
 
-                                  11/10
+                                  11/15
                                   -----
-subst.c
-       - cond_expand_word needs to free the value returned by string_list
-         after it is run through quote_string_for_globbing
-
-parse.y
-       - make sure cond_term frees yylval.word if it is just a `!' and
-         it's parsed as a term negation operator
+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>
 
-variables.c
-       - assign_array_var_from_string needs to free the word list returned
-         by parse_string_to_word_list after calling expand_words_shellexp
-         on it
+include/stdc.h
+       - CPP_STRING: new define, replaces __STRING
 
-execute_cmd.c
-       - changed execute_simple_command to avoid saving the_printed_command
-         into command_line until just before it's needed.  This should save
-         time and prevent memory leaks on errors, but it must be watched
-         closely to make sure that the_printed_command doesn't change out
-         from under execute_simple_command before we copy it
+lib/malloc/{malloc.c,imalloc.h}
+       - replace __STRING with CPP_STRING
 
-                                  11/12
+                                  11/16
                                   -----
-builtins/alias.def
-       - alias and unalias should print error messages when passed an
-         argument that is not an alias for printing or deletion,
-         respectively, even if the shell is not interactive
+lib/readline/bind.c
+       - sv_histsize: if argument evaluates to a value < 0, unstifle the
+         history
 
-builtins/exit.def
-       - `logout' will no longer exit a non-login non-interactive shell
+                                  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/17
+                                  11/24
                                   -----
-lib/readline/nls.c
-       - add `koi8-r' as a legal LANG value
+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
 
-builtins/alias.def
-       - if `alias' or `alias -p' is executed when no aliases are defined,
-         the return status should be 0, according to POSIX.2
+jobs.h
+       - ANY_PID: new define
 
-                                  11/18
-                                  -----
-subst.c
-       - changed a couple of calls to make_word_list (make_word(z), ...)
-         to add_string_to_list (z, ...)
+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_cond_command now sets this_command_name to `[['
+       - 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/21
+                                  11/28
                                   -----
-variables.c
-       - all_visible_{function,variable}s and the functions they call
-         should be compiled in only if READLINE is defined
 
-                                  11/24
-                                  -----
-aclocal.m4
-       - remove some leading whitespace before preprocessor statements in
-         BASH_KERNEL_RLIMIT_CHECK
+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>
 
-general.[ch]
-       - fix declarations for group_member so the extern declaration in
-         general.h agrees with the definition in general.c (fix from
-         Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>)
+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
 
-builtins/cd.def
-       - print the new working directory if the shell is interactive
-         and `cd -' succeeds
-       - don't print the new working directory if it's found in $CDPATH
-         if the shell is not interactive
+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/25
+                                  11/30
                                   -----
-builtins/cd.def
-       - fixes to bindpwd so that it copes with get_working_directory
-         returning NULL (bug from schwab@issan.informatik.uni-dortmund.de)
+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
                                   ----
-support/config.guess
-       - add support for new OS name for SINIX SVR4 systems
-
-                                  12/3
-                                  ----
-
-builtins/set.def
-       - `unset' should check that a function it's trying to unset is a
-         legal identifier only when in POSIX mode
-
-redir.c
-       - changed here_document_to_fd to try and make sure the filename
-         used for the here document is `more unique', since the old
-         version would fail if two here documents were created in less
-         than a second
+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
                                   ----
-builtins/cd.def
-       - POSIX.2 says that if CDPATH is used to find the new directory,
-         and it's not relative to the current directory, the new directory
-         name should be displayed on stdout even if the shell is not
-         interactive
+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/5
-                                  ----
-parse.y
-       - changes so that `time' is recognized as a reserved word only at
-         the beginning of a pipeline (the last read token is one of 0,
-         `;', `\n', `&&', `||', or `&'):
-
-               o add clause to special_case_tokens that does the check
-                 and returns TIME if the conditions are met
-               o take check for `TIME' out of CHECK_FOR_RESERVED_WORD, but
-                 leave it in the word_token_alist so that `type' still
-                 reports it as a `keyword'
-               o new function, time_command_acceptable(), encapsulates the
-                 necessary conditions for `time' to be returned as a 
-                 reserved word
-
-[bash-2.02-alpha1 frozen]
-
-                                1/6/1998
-                                --------
-lib/glob/fnmatch.c
-       - fix define for isgraph so that it does not return success for space
-       - fix strcompare() so that the call to strcoll is surrounded by
-         #ifdef HAVE_STRCOLL
+                                  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>
 
-                                   1/7
-                                   ---
-lib/glob/fnmatch.c
-       - the `test' argument to brackmatch() should be of type `unsigned char'
+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>
 
-                                  1/11
-                                  ----
-execute_cmd.c
-       - make sure execute_arith_command sets this_command_name to `(('
+                                  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>
 
-                                  1/29
-                                  ----
-parse.y
-       - make sure the code for pushing and popping strings is compiled in
-         if either ALIAS or DPAREN_ARITHMETIC is defined, because the ((
-         code uses push_string in the case of a nested subshell
-       - fix cond_skip_newlines so it resets the prompt to $PS2 while
-         parsing an unfinished conditional command
+                                  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>
 
-dispose_cmd.c, copy_cmd.c, builtins/hash.def
-       - fixes to not use `word' as a variable name or the name of a
-         function parameter to get around stuff in the Cray Unix include
-         files
+                                  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
-       - return failure immediately if an illegal format character is
-         encountered
+       - 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>
 
-redir.c
-       - make the code that creates here-documents behave better if the
-         file it's trying to create already exists for some reason
+doc/{bash.1,bashref.texi}
+       - document new printf %()T default argument behavior
 
-lib/readline/complete.c
-       - changed print_filename to return the number of characters it
-         outputs; changed callers to use that value.  This makes columns
-         line up when printing completion listings with filenames
-         containing control characters
+                                  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
 
-doc/bash.{1,html}
-       - fixed a typo in the quote removal section
+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>
 
-                                  1/30
-                                  ----
-parse.y
-       - free_string_list() needs to check that t->expander is not NULL
-         before trying to dereference it
-       - reset_parser() doesn't need to set pushed_string_list to NULL
-         after calling free_string_list(), since free_string_list does it
+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>
 
-configure.in,cross-build/cygwin32.cache
-       - fixes from Geoff Noer for better cygwin32 cross-compilation
+subst.c
+       - command_substitute: change direct assignment of exit_immediately_on_error
+         to use change_flag ('e', FLAG_OFF) instead
 
-tests/printf.{tests,right}
-       - removed test for integer overflow, since error messages differ
-         across systems
+flags.c
+       - use errexit_flag as the variable modified by changes to the -e
+         option, reflect those changes to exit_immediately_on_error
 
-pathexp.c
-       - fixed a problem with unquoted_glob_pattern_p that made things
-         like `x+*' not expand correctly
+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
 
-lib/glob/glob.c
-       - fixed a problem with glob_pattern_p that made things like `x+*'
-         not expand correctly
+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>
 
-builtins/cd.def
-       - if `cd -P' is executed, or `set -o physical' has been executed,
-         the value of $PWD after a successful cd will not contain any
-         symlinks, regardless of whether or not the shell is in posix mode
+                                  12/23
+                                  -----
+include/posixjmp.h
+       - setjmp_nosigs: new define, call setjmp in such a way that it will
+         not manipulate the signal mask
 
-                                   2/3
-                                   ---
-lib/readline/shell.c
-       - include <string.h> or <strings.h> as appropriate
+{expr,test,trap}.c
+       - setjmp_nosigs: call instead of setjmp; don't need to manipulate
+         signal mask
 
-                                   2/4
-                                   ---
-builtins/common.c
-       - take out the code in backslash_quote() that looks for tildes to
-         quote, for the time being
-       - if getcwd() fails, get_working_directory now prints the error
-         message corresponding to errno in addition to the rest of the
-         information -- TENTATIVE CHANGE
+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
 
-lib/sh/getcwd.c
-       - fix from Paul Smith to make getcwd() behave better in the presence
-         of lstat(2) failures
+                                  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
 
-stringlib.c
-       - when copying the replacement string into the output string being
-         constructed, strsub() needs to make sure enough space for the
-         replacement string is allocated, not the length of the pattern
-         (use REPLEN, not PATLEN)
+input.c
+       - getc_with_restart: add call to QUIT instead of CHECK_TERMSIG
 
-mailcheck.c
-       - make sure make_default_mailpath() has a valid current_user struct
-         before trying to construct the default mailpath
+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)
 
-                                   2/5
-                                   ---
 execute_cmd.c
-       - execute_builtin needs to call run_unwind_frame if the builtin is
-         `source' or `eval' and we're not in a subshell rather than just
-         calling dispose_builtin_env, because not all invocations copy 
-         the temporary_env to builtin_env, and nested calls to `.' require
-         that the temporary env given to the first persist until that first
-         call to `.' finishes
+       - 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
 
-parse.y
-       - fix to history_delimiting_chars so that function definitions like
+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
 
-               function xyz
-               {
-                       echo a
-               }
+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
 
-         are saved to the history correctly when command_oriented_history
-         is enabled, but literal_history is not
+builtins/evalfile.c
+       - _evalfile: setjmp_nosigs: call instead of setjmp when saving
+         return_catch; don't need to manipulate signal mask
 
-bashhist.c
-       - when calling internal_error from pre_process_line, use "%s" as
-         the format with history_value as the argument to avoid the
-         problem with the failed history event containing printf escape
-         sequences
+builtins/evalstring.c
+       - evalstring: setjmp_nosigs: call instead of setjmp when saving
+         return_catch; don't need to manipulate signal mask
 
-                                  2/13
-                                  ----
 shell.c
-       - if shell_initialized is non-zero, don't line-buffer stderr and
-         stdout in shell_initialize on SunOS5 -- see if this fixes the
-         crashing problems for scripts without a leading `#! /bin/sh'
-
-                                  2/17
-                                  ----
-bashline.c
-       - added diffs to _ignore_completion_names from Andreas Schwab to
-         complete names that would otherwise be ignored with FIGNORE if
-         they are the only possible completions.  Define NO_FORCE_FIGNORE
-         if you want this; it is not defined by default
-
-                                  2/19
-                                  ----
-support/bashbug.sh
-       - changed the bug-bash address to bug-bash@gnu.org
+       - 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
 
-examples/loadables/Makefile.in
-       - converted from `Makefile' with some boilerplate configure variables
-         to find the source and build directories -- still requires some
-         hand-editing to get the right CFLAGS and LDFLAGS for shared object
-         creation
+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)
 
-Makefile.in
-       - create examples/loadables/Makefile with `make makefiles'
+                                  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
 
-configure.in
-       - create examples/loadables directory so `make makefiles' can write a
-         makefile there
+variables.c
+       - bind_global_variable: new function, binds value to a variable in
+         the global shell_variables table
 
-general.c
-       - make sure initialize_groups_array always sets things up so that
-         ${GROUPS[0]} is the user's primary group (current_user.gid)
+variables.h
+       - bind_global_variable: new extern declaration
 
-                                  2/20
-                                  ----
-lib/readline/parens.c
-       - change the time delay when showing matching parens from 1.5 sec to
-         0.5 sec
+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
 
-                                  2/23
-                                  ----
-shell.c
-       - isnetconn() should call getpeername(fd,...) instead of using 0
-         (though fileno(stdin) should always be 0)
+command.h
+       - W_ASSIGNARRAY: new word flag, compound indexed array assignment
 
-support/config.guess
-       - updates from master FSF copy
+subst.h
+       - ASS_MKGLOBAL: new assignment flag, forcing global assignment even in
+         a function context, used by declare -g
 
-                                  2/24
-                                  ----
-support/man2html.c
-       - modified version of man2html to convert bash.1 into bash.html
+execute_cmd.c
+       - fix_assignment_words: set W_ASSIGNARRAY flag if -a option given to
+         declaration builtin
 
-support/Makefile.in
-       - simple Makefile to create man2html
+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
 
-configure.in
-       - make sure support/Makefile is created
+                                  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
 
-Makefile.in
-       - make sure support/Makefile is created and cleaned
+                                  12/29
+                                  -----
+configure.ac,version.c,patchlevel.h
+       - bash-4.3-devel: new version, new shell compatibility level (43)
 
-doc/Makefile.in
-       - changes to suffix rules to say how to make .html from .1 
-       - `bash.html' is now a makefile target, created by man2html from
-         bash.1 rather than being hand-modified
+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
 
-lib/sh/itos.c, general.c
-       - new file, itos() from general.c.  This is here because the
-         implementation of strerror in lib/sh/strerror.c uses itos()
+builtins/shopt.def
+       - compat42: new shopt option
+       - set_compatibility_level: change logic to set and unset various
+         compat variables and shell_compatibility_level
 
-Makefile.in, lib/sh/Makefile.in
-       - changes to add itos.c in libsh.a
+COMPAT
+       - new documentation for bash-4.3 compatibility changes
 
-externs.h, general.h
-       - moved extern declaration of itos() from general.h to externs.h
+doc/{bash.1,bashref.texi}
+       - compat42: document new shopt option
 
-aclocal.m4
-       - changes to BASH_LARGE_FILE_SUPPORT for the LFS64_* variables in
-         Solaris 2.6
+builtins/shopt.def
+       - set_compatibility_opts: new function, sets the various shopt
+         compat variables based on the value of shell_compatibility_level
 
-Makefile.in
-       - make sure configure sets CPPFLAGS in this file
+builtins/common.h
+       - set_compatibility_opts: new extern declaration
 
-                                  2/27
-                                  ----
+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
 
-builtins/command.def
-       - make sure get_standard_path returns the value of
-         STANDARD_UTILS_PATH if _CS_PATH is defined, but confstr(3)
-         returns 0, indicating that _CS_PATH does not have a defined
-         value
+variables.h
+       - sv_shcompat: new extern declaration
 
-bashhist.c
-       - fixed bash_history_inhibit_expansion() so that extended globbing
-         expressions like *.!(c) are not history expanded if extended_glob
-         is non-zero (shopt -s extglob has been executed)
+doc/{bash.1,bashref.texi}
+       - BASH_COMPAT: description of new variable
 
-                                   3/2
-                                   ---
-Makefile.in
-       - changed release status to `beta1'
+lib/readline/complete.c
+       - _rl_colored_stats: default back to 0 for 4.3 release branch
 
-[bash-2.02-beta1 frozen]
+                                1/5/2013
+                                --------
+quit.h
+       - remove spurious call to itrace in CHECK_WAIT_INTR
 
-                                  3/17
-                                  ----
-lib/readline/vi_mode.c
-       - make sure _rl_vi_save_insert() gets a non-null UNDO_LIST pointer
-         before trying to do anything with it
+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
 
-jobs.c
-       - add a call to internal_warning from wait_for_job if the job is
-         stopped
-       - changed notify_of_job_status to not report pipelines exiting due to
-         SIGPIPE in non-interactive shells if the shell is compiled with
-         -DDONT_REPORT_SIGPIPE
+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
 
-builtins/psize.sh
-       - some fixes to try to avoid /tmp file races and surreptitious
-         substitutions
+lib/readline/readline.h
+       - rl_signal_event_hook: new extern declaration
 
-version.c
-       - changed the extended version info to show 1998 as the copyright year
+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
 
-parse.y
-       - fixes from Andreas Schwab <schwab@LS5.informatik.uni-dortmund.de>
-         for compilation errors when the shell is configured --disable-alias
-         but with dparen arithmetic enabled
+lib/readline/doc/rltech.texi
+       - rl_signal_event_hook: document new function
 
-eval.c
-       - fixes from Andreas Schwab <schwab@LS5.informatik.uni-dortmund.de> to
-         make sure the input stream is popped correctly when performing an
-         array assignment in the command argument to `bash -c', e.g.,
-         `bash -c 'A=()''
+bashline.c
+       - changes to set rl_signal_event_hook instead of rl_event_hook
 
-builtins/kill.def
-       - make `kill' with no arguments print a usage message and return a
-         failure status
+lib/readline/readline.h
+       - change readline version numbers to 6.3
 
-alias.c
-       - fix so that rd_token doesn't dump core when trying to do alias
-         expansion on a line containing an unclosed single quote (fix from
-         Vasco Pedro <vp@di.fct.unl.pt>)
+                                   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>
 
-builtins/cd.def
-       - fix so that using a non-empty directory from CDPATH to construct
-         the name of the directory to change to results in an absolute
-         pathname of the new current working directory being displayed,
-         as POSIX.2 specifies
+                                   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>
 
-support/bashbug.sh
-       - a couple of small fixes to minimize /tmp file races -- the script
-         is still raceable, the window is just smaller
+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>
 
-                                  3/24
+                                  1/11
                                   ----
-variables.c
-       - make sure assign_in_env passes a malloc'd string to
-         expand_string_unsplit, because some of the error code assumes that
-         it is malloc'd and frees it (bug reported by Marko.Makela@HUT.FI)
+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>
 
-                                  3/25
+                                  1/13
                                   ----
-doc/bashref.texi
-       - changed the email addresses to use the @email texinfo tag
-
-trap.c
-       - call reset_parser from the exit trap code before calling
-         parse_and_execute, so reserved words are parsed correctly
+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
-       - make sure parameter_brace_patsub expands the pattern string as if
-         the expression were not in double quotes, even if the entire
-         expansion is enclosed in double quotes, so that quote removal
-         on embedded double quotes is performed correctly (bug report from
-         schwab@issan.informatik.uni-dortmund.de)
+       - 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>
 
-                                  3/27
+                                  1/15
                                   ----
-support/config.guess
-       - changes to allow Power PCs running Apple's Rhapsody to configure
+builtins/cd.def
+       - cd_builtin: make sure call to internal_getopt handles -e option.
+         Fixes bug reported by <mashimiao.fnst@cn.fujitsu.com>
 
-                                  3/31
+                                  1/17
                                   ----
+subst.c
+       - expand_word_list_internal: make sure tempenv_assign_error is
+         initialized to 0
 
-Makefile.in
-       - changed release status to `beta2'
-
-[bash-2.02-beta2 frozen]
+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>
 
-                                   4/6
-                                   ---
+                                  1/20
+                                  ----
 subst.c
-       - make sure command_substitute does not try to set the terminal's
-         process group to a background job
+       - 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)
 
-[bash-2.02 frozen]
+{execute_cmd,subst,variables}.c
+       - removed all code that mentioned W_GLOBEXP
+       - removed mention of gnu_argv_flags and code that set it
 
-                                  4/18
+                                  1/22
                                   ----
-[bash-2.02 released]
+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'
 
-                                  4/20
+                                  1/23
                                   ----
-bashline.c
-       - make sure that rl_defun is not called for
-         history-and-alias-expand-line unless both ALIAS and BANG_HISTORY
-         are defined
-         [in bash-2.02.1]
+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>
 
-                                  4/22
-                                  ----
-make_cmd.c
-       - make sure that make_here_document allocates enough space for the
-         first line of the here document, by using the line length +2
-         (instead of 1000, which is what the old code did, and breaks if
-         the first line of the here document is enough longer than 1000
-         characters to cause other memory to be scribbled on)
-         [in bash-2.02.1]
+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
 
-builtins/cd.def
-       - when in posix mode, a value of "" for CDPATH should be treated the
-         same as the current directory, not result in an error
-         [in bash-2.02.1]
+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'
 
-lib/malloc/malloc.c
-       - change the mh_align member of `union mhead' to be of type double
-         rather than a pointer, so that malloc will return (hopefully)
-         8-byte aligned memory
-         [in bash-2.02.1]
+                                  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>
 
-                                  4/23
+                                  1/25
                                   ----
-aclocal.m4
-       - add a new macro to check whether or not off_t is 64 bits 
+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
 
-                                  4/24
+                                  1/26
                                   ----
-configure.in
-       - fixed a typo so the bash malloc is not compiled in on mips-sgi-irix6
+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
-       - fix for readline redisplay if the prompt string is longer than the
-         screen width and includes invisible characters
-         [in bash-2.02.1]
+       - 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>
 
-jobs.c
-       - make_child should not set the terminal's process group to
-         pipeline_pgrp if pipeline_pgrp == shell_pgrp (indicating that we
-         are forking a child for a command substitution)
-         [in bash-2.02.1]
+                                  1/30
+                                  ----
+configure.ac
+       - changed version to 4.3-alpha
 
-subst.c
-       - in execute_simple_command, in the child forked if there is a pipe
-         or the command is asynchronous, set subshell_environment to
-         SUBSHELL_ASYNC only if the command is asynchronous, SUBSHELL_FORK
-         if there is a pipe in or out
-         [in bash-2.02.1]
+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>
 
-                                  4/27
+                                  1/31
                                   ----
-support/texi2dvi
-       - upgraded to version 0.8 (from 0.5)
-
-support/texi2html
-       - upgraded to version 1.52 (from 1.51)
+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>
 
-support/config.sub
-       - config.sub now recognizes all the permutations of the system name
-         that config.guess produces for alphas
-         [in bash-2.02.1]
+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
 
-aclocal.m4
-       - changed BASH_TYPE_INT32_T, BASH_TYPE_U_INT32_T, and
-         BASH_TYPE_PTRDIFF_T to avoid compiling a program; instead use
-         the values determined by the AC_CHECK_SIZEOF tests to determine
-         the default values to supply to AC_CHECK_TYPE
+                                   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>
 
-configure.in
-       - don't call AC_CHECK_TYPE({int32_t,u_int32_t,ptrdiff_t}) from
-         configure.in; use the updated BASH_TYPE macros instead
-
-builtins/exec.def
-       - if shell_execve fails, set ARGS to null because the realloc() call
-         by shell_execve may have caused it to be reallocated and freed --
-         we don't want to free the memory twice
-
-lib/glob/fnmatch.c
-       - fixes from ache@nagual.pp.ru to make fnmatch work for eight-bit
-         characters when `isupper' and `islower' are used -- they were
-         restricted to ASCII characters before, probably to work around
-         some ancient, broken C libraries in which is{low,upp}er are valid
-         only for ASCII characters and return bogus values otherwise
-         [in bash-2.02.1]
+                                   2/9
+                                   ---
 
-                                  4/29
-                                  ----
-builtins/cd.def
-       - fixed a problem with the shell displaying the old working directory
-         instead of the new one after changing to a directory found via
-         $CDPATH when in physical mode (set -o physical)
-         [in bash-2.02.1]
+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
 
-make_cmd.c
-       - make make_cond_command initialize the line number from the cond_node
-         that's passed as an argument (not that it's used right now)
+quit.h
+       - move CHECK_ALRM macro here from builtins/read.def so trap.c:
+         check_signals() can call it
 
-copy_cmd.c
-       - make sure that copy_cond_command copies the type of the cond command,
-         since execute_cond_command uses that to decide what kind of test
-         to perform
-         [in bash-2.02.1]
+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>
 
-builtins/printf.def
-       - make sure the for loop that processes the format string actually
-         consumes arguments; otherwise process it only once to avoid
-         infinite loops (e.g., `printf " " abc def ghi')
-         [in bash-2.02.1]
-       - if the format string is empty after preprocessing by ansicstr,
-         return immediately
-         [in bash-2.02.1]
+                                  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>
 
-tests/run-printf
-       - use `diff -a' so the presence of a non-printing character in the
-         output doesn't confuse diff into thinking the files are binary
-         (test whether or not `diff' supports `-a' first)
 
-Makefile.in
-       - keep $(LOCAL_LIBS) from being specified twice
+                                  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>
 
-                                  4/30
+                                  2/14
                                   ----
-support/shobj-conf
-       - a script to generate variables to do shared object configuration
-         for the loadable builtin stuff
+configure.ac
+       - add check for sig_atomic_t; already a placeholder for it in
+         config.h.in
 
-configure.in
-       - added a section for shared object configuration using an `eval'
-         of the output of shobj-conf and substituting the generated values
-         with AC_SUBST
+                                  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>
 
-examples/loadables/Makefile.in
-       - the system-specific shared object configuration variables are now
-         substituted by configure
+                                  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
 
-                                   5/4
-                                   ---
-builtins/ulimit.def
-       - some changes for HPUX 9.x's peculiar handling of RLIMIT_FILESIZE
-       - changed the limit retrieval functions to return an error code
-         and the value in a reference argument to avoid use of RLIM_INVALID
+trap.[ch]
+       - get_original_signal: now global so rest of the shell can use it
 
-general.c
-       - new function, get_group_array(), which returns an array of
-         gids
+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
 
-examples/loadables/{id,printenv,sync,uname,whoami,push}.c
-       - new loadable builtins
+sig.h
+       - sigterm_sighandler: new extern declaration
 
-variables.c
-       - moved code that initializes $PPID into a new function, set_ppid()
+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
 
-variables.h
-       - extern declaration for set_ppid()
+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
 
-                                   5/6
-                                   ---
-subst.c
-       - make sure that the `"' (double-quoted string) case of
-         expand_word_internal calls string_list_dollar_at if we've expanded
-         a double-quoted $@ so correct splitting on $IFS is done when
-         the expansion is complete.  We can't simply call string_list
-         because that forces a space separator, and $IFS may not contain
-         a space
-         [in bash-2.02.1]
-
-                                   5/7
-                                   ---
-builtins/umask.def
-       - broke the code that parses a symbolic mode out of symbolic_umask
-         into a separate function that takes a symbolic mode and an initial
-         set of bits to modify
+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
 
-examples/loadables/mkdir.c
-       - new loadable builtin
+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)
 
-                                  5/11
+                                  2/18
                                   ----
-builtins/printf.def
-       - use the format string length provided by ansicstr() to process the
-         format string, rather than testing for nullness, to handle NUL
-         bytes in the expanded format string
-
-builtins/pushd.def
-       - changes so it can be built as both a regular builtin and a loadable
-         builtin from the same source
-
-examples/loadables/Makefile.in
-       - changes to build pushd.c from ${topdir}/builtins/pushd.def and then
-         compile it with the correct flags to make it a loadable builtin,
-         even if PUSHD_AND_POPD is not defined in config.h
+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>
 
-                                  5/12
+                                  2/19
                                   ----
-lib/readline/complete.c
-       - use rl_completer_quote_characters instead of #ifdef SHELL/#endif
-         code in make_quoted_replacement.  This means complete.c no longer
-         has any #ifdef SHELL code
+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
 
-                                  5/13
+                                  2/21
                                   ----
-builtins/Makefile.in
-       - `make clean' should remove mkbuiltins.o
-
-Makefile.in
-       - all of the various `clean' targets need to descend into lib/sh
-         and run the appropriate target there
-
-builtins/type.def
-       - changed to use the builtin getopt.  The old long options are
-         handled by prescanning the argument list looking for the long
-         options, processing them, and taking them out of the list before
-         passing it to internal_getopt()
+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)
 
-lib/readline/signals.c
-       - removed #ifdef SHELL code -- job control signals and SIGTERM are
-         always set in rl_set_signals, but are set to SIG_IGN if the old
-         handler was SIG_IGN (as bash sets it)
-       - new function rl_maybe_set_sighandler, which sets the signal
-         disposition back to SIG_IGN if the old handler was SIG_IGN
-       - removed #ifdef HANDLE_JOB_SIGNALS and #ifdef HANDLE_SIGTERM code
+                                  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
 
-lib/readline/rltty.c
-       - removed #ifdef SHELL code -- set_winsize is always called
-         to force the application to stop if it's not in the foreground
-         before getting the tty attributes
+unwind_prot.c
+       - include sig.h before quit.h (reverse order)
 
-                                  5/14
+                                  2/27
                                   ----
-lib/readline/signals.c
-       - readline now catches SIGQUIT and cleans up the tty before resending
-         it to its container application (unless the calling application has
-         set the disposition of SIGQUIT to be SIG_IGN)
-       - rl_handle_sigwinch is now called rl_sigwinch_handler
-       - rl_sigwinch_handler now calls rl_resize_terminal to fetch the
-         screen size after a SIGWINCH
-       - the sighandler_cxt struct for non-posix systems now includes
-         sa_flags and sa_mask variables, for future use
-       - new variable, rl_catch_signals, indicating that readline should
-         install its own signal handlers for SIGINT, SIGTERM, SIGQUIT,
-         SIGALRM, SIGTSTP, SIGTTIN, and SIGTTOU
-       - new variable, rl_catch_sigwinch, indicating that readline should
-         install its own SIGWINCH handler, which will chain to a calling
-         application's SIGWINCH handler
-       - new function, rl_free_line_state(), to free up variable state
-         associated with the current line after receiving a signal
-       - new function, rl_cleanup_after_signal(), to clean up the display
-         and terminal state after receiving a signal
-       - new function, rl_reset_after_signal(), to reinitialize the
-         terminal state after a signal handler returns and readline
-         continues
-       - rl_set_signals and rl_clear_signals now look at the values of
-         rl_catch_signals and rl_catch_sigwinch
-
-lib/readline/terminal.c
-       - new function rl_resize_terminal (), to reset readline's idea of
-         the screen size after a SIGWINCH
+builtins/shopt.def
+       - reset_shopt_options: make sure check_window_size is reset to the
+         default from config.h, not unconditionally to 0
 
-lib/readline/readline.h
-       - extern declarations for rl_resize_terminal(), rl_free_line_state(),
-         rl_cleanup_after_signal(), rl_reset_after_signal()
-       - extern declarations for rl_catch_signals and rl_catch_sigwinch
+jobs.[ch]
+       - last_made_pid, last_asynchronous_pid: now volatile.  Change from SuSE
 
-variables.c
-       - new functions, get_env_value(char *) and get_home_dir(void) to
-         satisfy references from the tilde and readline libraries when
-         they are compiled as part of bash
+jobs.c
+       - wait_for: if we're using sigaction to install a handler for SIGCHLD,
+         make sure we specify SA_RESTART
 
-lib/tilde/tilde.c
-       - rely on extern declarations of get_env_value and get_home_dir;
-         there is no more #ifdef SHELL code
+lib/{tilde,readline}/shell.c
+       - get_home_dir: instead of looking in the password file every time,
+         look once and cache the result
 
-lib/readline/shell.c
-       - implementation of get_home_dir that uses getpwuid() to satisfy
-         references from tilde.c when not compiled as part of bash
-       - removed savestring()
-       - removed #ifdef SHELL/#endif pair -- all of these functions will be
-         resolved from bash when readline is linked into bash
+sig.[ch]
+       - sigwinch_received, sigterm_received: now `volatile' qualified
 
-lib/readline/savestring.c
-       - new file, with function definition for savestring() for backwards
-         compatibility
+sig.c,quit.h
+       - interrupt_state,terminating_signal: now sig_atomic_t
 
-Makefile.in, _distribution
-       - bumped things up to bash-2.03-alpha
+                                   3/1
+                                   ---
+MANIFEST,examples/*
+       - removed around 120 files without FSF copyrights; requested by
+         Karl Berry in early January
 
-                                  5/15
-                                  ----
-lib/readline/rlconf.h
-       - removed #ifdef SHELL/#endif pair, so the callback stuff will be
-         compiled into libreadline, but never linked into bash (since it's
-         not referenced)
+                                   3/2
+                                   ---
+lib/malloc/malloc.c
+       - morecore: only check whether SIGCHLD is trapped if SIGCHLD is defined
 
-configure.in
-       - added new `--with-installed-readline' option to allow readline to
-         be linked with an already-installed version -- this will probably
-         not work with versions of readline prior to 2.3 (libreadline.so.4)
-         [THIS IS STILL UNDOCUMENTED]
+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
 
-Makefile.in
-       - changed necessary variables to allow the `--with-installed-readline'
-         option to work; shared and static libraries are supported
+quit.h
+       - include "sig.h" for sig_atomic_t
 
-                                  5/18
-                                  ----
 lib/readline/display.c
-       - _rl_save_prompt is now rl_save_prompt; _rl_restore_prompt is now
-         rl_restore_prompt
+       - 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)
 
-lib/readline/readline.h
-       - extern declarations for rl_save_prompt and rl_restore_prompt
+                                   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)
 
-lib/readline/{search,isearch,readline,display}.c
-       - converted calls to _rl_{save,restore}_prompt () to use new public
-         versions
+doc/bash.1
+       - add URL to `POSIX' file in `SEE ALSO' section; put pointer to that
+         section in --posix and set -o posix descriptions
 
-lib/readline/doc/rltech.texinfo
-       - documented new public functions rl_{save,restore}_prompt
+examples/
+       - removed around 110 examples at the request of the FSF due to copyright
+         issues
 
-                                  5/19
-                                  ----
-lib/readline/readline.c
-       - new hook function variable, rl_pre_input_hook.  If non-zero, it's
-         called from readline_internal_setup just before it returns and
-         readline starts reading input
+                                   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>
 
-lib/readline/readline.h
-       - extern declaration for rl_pre_input_hook
+                                   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
 
-lib/readline/doc/rltech.texinfo
-       - documented new variable rl_pre_input_hook
+{braces,expr}.c
+       - include "typemax.h" for possible INTMAX_MIN and INTMAX_MAX definitions
 
-                                  5/20
+                                  3/10
                                   ----
-lib/readline/complete.c
-       - new hook function variable, rl_completion_display_matches_hook.
-         If non-null, this function is called when readline would normally
-         display the list of completion matches
+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>
 
-lib/readline/readline.h
-       - extern declaration for rl_completion_display_matches_hook
+[bash-4.3-alpha frozen]
 
-lib/readline/doc/rltech.texinfo
-       - documented rl_completion_display_matches_hook
+                                  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>
 
-lib/readline/readline.c
-       - if RL_LIBRARY_VERSION is not defined, define it to 4.0 to match
-         the version number of the shared libraries
-
-lib/readline/doc/{hist,rlman}.texinfo
-       - changed the version and edition to 4.0 to match the library version
-
-support/config.guess
-       - added case clause for matching UnixWare 7 from SCO (SVR5) -- further
-         work may be needed 
-         [These fixes were in a usenet posting from hops@sco.com]
-
-support/config.sub
-       - added case clauses to recognize various aliases for SCO Open Server
-         and Open Desktop
-         [in bash-2.02.1]
-       - broke the code that canonicalizes unixware into unixware2 and
-         unixware7 clauses (multiple places)
-         [in bash-2.02.1]
-       - added clause to recognize `sysv5' for SVR5
-         [These fixes were in a usenet posting from hops@sco.com]
-         [in bash-2.02.1]
+                                  3/18
+                                  ----
+configure.ac
+       - socklen_t is defined as `unsigned int' if configure can't find it
 
-configure.in
-       - add `-b elf' to LOCAL_CFLAGS for sco3.2v5* to allow dynamic linking
-         (and loadable builtins)
-       - add AC_DEFINE(SVR5) on SVR5 (unixware 7)
+                                  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
 
-config.h.in
-       - add #undef SVR5, set by configure
+                                  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>
 
-                                  5/21
+                                  3/24
                                   ----
-shell.c
-       - line-buffer stdout and stderr in shell_initialize only if
-         shell_initialized is 0 on all systems, not just SunOS 5
-         [in bash-2.02.1]
+subst.h
+       - SD_IGNOREQUOTE: new define for skip_to_delim; if set, means that
+         single quotes (for now) will be treated as ordinary characters
 
-support/rlvers.sh
-       - script to print out the version number of any installed
-         readline library
+subst.c
+       - skip_to_delim: handle SD_IGNOREQUOTE. no callers use it for now
 
-configure.in
-       - only allow --with-installed-readline if the version of the
-         installed readline library is 4.0 or greater
+                                  3/25
+                                  ----
+support/config.{guess,sub}
+       - updated to versions from autoconf-2.69
 
-                                  5/22
+                                  3/31
                                   ----
-lib/readline/complete.c
-       - broke the code that actually displays a list of completion
-         matches on the output stream into a separate public function,
-         rl_display_match_list, so it can be called from the hook
-         function rl_completion_display_matches_hook.
+lib/sh/shquote.c
+       - sh_single_quote: short-circuit quoting a single "'" instead of
+         creating a long string with empty single-quoted strings
 
-lib/readline/readline.h
-       - new extern declaration for rl_display_match_list
+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>
 
-lib/readline/rltech.texinfo
-       - documented rl_display_match_list
+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
 
-configure.in,Makefile.in
-       - --enable-static-link now creates a STATIC_LD variable in Makefile
-         rather than adding to LDFLAGS directly.  LDFLAGS now includes
-         $(STATIC_LD)
+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>
 
-                                   6/2
+                                   4/4
                                    ---
-builtins/cd.def
-       - OLDPWD is now auto-exported
-       - broke the code out of bindpwd() that updated the value of PWD in
-         the export environment in-place and made it general, so it can
-         be used for OLDPWD, too (this should be made *more* general, and
-         moved to variables.c)
+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>
 
-                                   6/3
+                                   4/6
                                    ---
-variables.c
-       - moved builtins/cd.def:export_pwd_var to here, renamed it to
-         update_export_env_inplace
-       - converted put_command_name_into_env to just call
-         update_export_env_inplace
-       - made dummy variable for OLDPWD, marked as invisible and exported,
-         in initialize_shell_variables
-
-variables.h
-       - extern declaration for update_export_env_inplace
-
-builtins/cd.def
-       - changed calls to export_pwd_var to update_export_env_inplace
-
 lib/readline/bind.c
-       - added missing return in rl_unbind_function_in_map
-       - changed _rl_read_file to check whether or not `read' returns
-         < 0 rather than < file_size
-       - _rl_read_init_file needs to free `openname' after calling
-         _rl_read_file, since it's not used again
+       - 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>
 
-lib/readline/callback.c
-       - bogus extern declaration for `readline_internal_startup', should
-         be readline_internal_setup
+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>
 
-lib/readline/histfile.c
-       - read_history_range now checks whether read(2) returns < 0 rather
-         than checking the return value against the file size
+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>
 
-lib/readline/parens.c
-       - whoops -- timer.tv_usec is *micro* seconds, not milliseconds
+                                  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
-       - initialize `eof' to 1 in readline_internal_charloop
+       - 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>
 
-                                   6/5
-                                   ---
-configure.in
-       - if we're configuring with an installed version of readline, set and
-         have configure substitute RL_INCLUDE to `-I$(includedir)', so the
-         build process uses the installed readline include files as well as
-         the libraries
+                                  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
 
-Makefile.in, builtins/Makefile.in
-       - add @RL_INCLUDE@ in the appropriate places, substituted by configure
+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
 
-lib/readline/{history,readline}.h
-       - add `extern "C"' wrapper if `__cplusplus' is defined
+                                  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>
 
-lib/glob/fnmatch.h
-       - include stdc.h
-       - add prototypes to extern declaration for fnmatch()
+variables.c
+       - bind_int_variable: make sure invisible flag is unset.  Fixes problems
+         like "declare -ai a; : $(( a[4]=4 ));"
 
-lib/readline/rlstdc.h
-       - link to ../posixheaders/stdc.h (in readline lib with different name
-         for benefit of standalone readline library installation)
+arrayfunc.c
+       - array_variable_part: return variable even if invisible flag set,
+         callers must handle invisible vars
 
-lib/readline/{history,keymaps}.h
-       - include rlstdc.h
-       - add prototypes to all of the extern function declarations
+                                  4/18
+                                  ----
+builtins/set.def
+       - unset_builtin: if -n flag given, call unset_nameref instead of
+         unset_variable
 
-lib/readline/history.h
-       - the `data' member of a HIST_ENTRY is now a histdata_t, which is
-         either a void * (ansi c) or a char * (k&r c)
+variables.c
+       - find_variable_nameref: print warning message if nameref circular
+         reference detected, return NULL and let caller deal with it
 
-lib/readline/readline.c
-       - changed calls to replace_history_entry to pass a histdata_t as the
-         third parameter
+builtins/declare.def
+       - declare_builtin: only disallow global references at this point if
+         we are at the global scope
 
-                                   6/8
-                                   ---
-copy_cmd.c
-       - make sure that copy_cond_command doesn't blindly try to copy
-         com->op, since that will be null for AND and OR nodes, at least
-         [in bash-2.02.1]
+                                  5/16
+                                  ----
+configure.ac
+       - update release status to beta
 
-lib/readline/vi_mode.c
-       - added missing second argument to rl_vi_[fbe][Ww]ord(), since
-         they're used as pseudo-bindable commands (they appear in the
-         default funmap) as well as utility functions
+                                  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/readline.h
-       - include rlstdc.h
-       - added prototypes for functions from vi_mode.c, util.c, terminal.c,
-         search.c, util.c, undo.c, readline.c, parens.c, macro.c, kill.c,
-         keymaps.c, isearch.c, input.c, funmap.c, display.c, complete.c,
-         callback.c, 
-       - added extern declarations for functions from rltty.c
+lib/readline/doc/rltech.texi
+       - new section with an example program illustrating the callback
+         interface. Suggested by Peng Yu <pengyu.ut@gmail.com>
 
-lib/readline/{readline,util}.c
-       - rl_refresh_line now takes the standard two arguments for bindable
-         commands; changed callers
+examples/loadables/Makefile.in
+       - remove references to `cut' and `getconf', which were removed in
+         early March
 
-lib/readline/*.c
-       - small cleanups for incorrect arguments, etc. uncovered by use of
-         function prototypes
+                                  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>
 
-bashline.c
-       - small cleanups for incorrect arguments, etc. uncovered by use of
-         function prototypes
+                                   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/11
+                                  6/25
                                   ----
-jobs.c
-       - cast result of strsignal() to (char *) for the benefit of broken
-         Cray UNICOS machines
-         [in bash-2.02.1]
+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>
 
-configure.in,aclocal.m4
-       - new test, BASH_TYPE_BITS64_T, used to find out what basic type is
-         64 bits long; defaults to `double'
-       - call AC_CHECK_SIZEOF(double)
+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
 
-config.h.in
-       - #define for bits64_t, undef by default
+                                  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/24
+                                  6/29
                                   ----
-aclocal.m4
-       - changed BASH_TYPE_BITS64_T so that it checks the size of a char *
-         first, before trying sizeof(double)
+lib/glob/smatch.c
+       - glob_asciiranges: initialize to value of GLOBASCII_DEFAULT instead
+         of 0 (0 if not defined)
 
-lib/readline/doc/rluser.texinfo,doc/{bash.1,readline.3}
-       - changed default binding for tilde-expand to M-&, since bash
-         overrides M-~ to force username completion
+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
 
-bashline.c
-       - fixed an off-by-one error in hostnames_matching that exhibited
-         itself when an exact multiple of 16 hostnames matched (fix
-         from <davidg@nikhef.nl>)
-         [in bash-2.02.1]
+doc/bashref.texi
+       - document new --enable-glob-asciiranges-default configure option
 
-                                  6/30
-                                  ----
-lib/readline/readline.c
-       - the maximum numeric argument is now 1000000
+variables.c
+       - assign_in_env: implement += value appending semantics for assignments
+         preceding command names
 
-bashline.c
-       - fixed a bug in bash_directory_completion_hook that caused memory
-         to be freed twice if a directory name containing an unset
-         variable was completed and `set -u' had been set
+                                   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>
 
-configure.in
-       - on LynxOS, add a -DRECYCLES_PIDS to LOCAL_CFLAGS
+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
 
-execute_cmd.c
-       - make sure that the changes to make the shell fork early when
-         run in the background do not cause commands such as `%1 &'
-         to fork
-         [in bash-2.02.1]
-       - if RECYCLES_PIDS is defined, execute_command_internal sets
-         last_made_pid to NO_PID after waiting for a foreground process,
-         if the return status is 0 (fix from plai@Lynx.COM (Paul Lai))
-
-lib/readline/kill.c
-       - fixes from Andreas Schwab to rl_yank_last_arg that make it
-         behave better
+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>
 
-lib/readline/input.c
-       - fixes from Donald Beaudry <donb@sgi.com> to make the input buffering
-         and rl_stuff_char work right when the input buffer is nearly full
-         (probably not a problem with keyboard input, but maybe a problem
-         with programmers attempting to use rl_stuff_char to preload the
-         input buffer)
+                                   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/14
-                                  ----
-parse.y
-       - fix to decode_prompt_string so that the \$ expansion quotes the `$'
-         so it won't be processed by subsequent parameter expansion
-       - change read_token_word so a $$ appearing in a token is recognized
-         and parsed immediately, so a single or double quote after the
-         second `$' doesn't cause ANSI-C expansion or locale translation
-         (bug report from haertel@ichips.intel.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>
 
-                                  7/16
-                                  ----
-lib/readline/display.c
-       - fixed a bug that caused core dumps in xrealloc if the prompt was
-         longer than 1024 characters
+builtins/setattr.def
+       - show_func_attributes: display definition (if NODEFS argument is 0) and
+         attributes for a particular function; used by `declare -fp name'
 
-                                  7/21
-                                  ----
-builtins/mkbuiltins.c
-       - if the number of characters read from the .def file is less than
-         the file size reported by `stat', and the read completed without
-         errors, reset the file size to avoid writing garbage at the end
-         of the generated .c file (needed on WIN32 systems, doesn't hurt
-         on Unix)
+builtins/declare.def
+       - declare_internal: call show_func_attributes if -f supplied with -p.
+         Fixes inconsistency observed by Linda Walsh <bash@tlinx.org>
 
-                                  7/22
-                                  ----
-CWRU/empty-for-wordlist
-       - patch from Brian Fox for parse.y to allow bash to accept an empty
-         `wordlist' after the `in' keyword in a for statement
+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/23
+                                  7/10
                                   ----
-doc/bash.1
-       - corrected the synopsis of the `for' and `select' statements to
-         indicate that the semicolon (or newline) after the optional
-         `in words' is required
+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>
 
-[bash-2.02.1 released]
+                                  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/28
+                                  7/13
                                   ----
-lib/readline/display.c
-       - make sure visible_length is initialized to 0 in rl_expand_prompt.
-         Fix from Gerhard Niklasch <nikl@mathematik.tu-muenchen.de>.
+doc/{bash.1,bashref.texi}
+       - slight change to add a description of `shopt -o' suggested by Bruce
+         Korb <bruce.korb@gmail.com>
 
-lib/glob/glob.c
-       - make sure that quotes are removed from the filename being globbed
-         in glob_vector() before calling the GLOB_TESTNAME macro if there
-         are no globbing characters in the pattern
+                                  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
 
-doc/Makefile.in
-       - make sure that builtins.1 is looked for in $(srcdir) when running
-         `make install' (it's still commented out, though)
+[bash-4.3-beta frozen]
 
-                                  7/30
+                                  7/21
                                   ----
-config.h.bot
-       - if PROMPT_STRING_DECODE is not defined, define PPROMPT (the primary
-         prompt string) as "$ "
+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
 
-variables.c
-       - if PROMPT_STRING_DECODE is not defined, and current_user.euid == 0,
-         PS1 defaults to "# ", otherwise it defaults to `primary_prompt'
+command.h
+       - W_ASSIGNINT: new word flag; used internally for make_internal_declare
+         and set by fix_assignment_words
 
-doc/bashbug.1
-       - fixed email address prep.ai.mit.edu -> gnu.org
+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
 
-                                   8/3
-                                   ---
-support/shobj-conf
-       - add `solaris2' as a possible OS name, treated the same as sunos5
+subst.c
+       - shell_expand_word_list: rework the way the option list that is
+         passed to make_internal_declare is created
 
-                                   8/4
+                                   8/1
                                    ---
-shell.c
-       - changed maybe_make_restricted() so that $ENV and $BASH_ENV are
-         read-only variables in a restricted shell
-
 doc/{bash.1,bashref.texi}
-       - added ENV and BASH_ENV to the list of readonly variables in
-         restricted mode
-
-parse.y
-       - added `do', `then', `else', `{', and `(' to the list of keywords
-         that may precede the `time' reserved word
+       - minor changes to description of $! based on a report from Chris
+         Down <chris@chrisdown.name>
 
-general.c
-       - added sanity checks to timeval_to_secs and clock_t_to_secs so
-         that if the fractional part is >= 1000, 1 is added to the
-         seconds and 1000 is subtracted from the fractional seconds
+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/6
+                                   8/2
                                    ---
-Makefile.in
-       - use $(CC_FOR_BUILD) to build mksignames
+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>
 
-configure.in
-       - changes to allow cross-building for BeOS as well as cygwin32
-
-cross-build/{beos-sig.h,x86-beos.cache}
-       - new files for cross-compiling for BeOS
-
-                                   8/7
+                                   8/3
                                    ---
 Makefile.in
-       - changed rule for version.h to use && instead of if-then-else-fi to
-         make sure the recipe fails if mkversion.sh fails
+       - pcomplete.o: add dependency on $(DEFDIR)/builtext.h. Suggested by
+         Curtis Doty <curtis@greenkey.net>
 
-configure.in
-       - beos does not use the GNU malloc
+                                   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>
 
-lib/sh/itos.c
-       - broke itos into inttostr(i, buf, len) and itos(i), which calls
-         inttostr and returns a newly-allocated string with the result
+                                   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>
 
-support/mksignames.c
-       - define `SIGKILLTHR' if system include files define it
+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>
 
-externs.h
-       - extern declaration for inttostr(int, char *, int)
+                                   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
                                   ----
-lib/sh/strtol.c
-       - include stdc.h before bashansi.h
+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
 
-execute_cmd.c
-       - make sure that execute_cond_node treats `=' the same as `=='
+                                  8/23
+                                  ----
+doc/bash.1
+       - disown: remove repeated text.  Report and fix from Thomas Hood
+         <jdthood@gmail.com>
 
                                   8/25
                                   ----
-variables.c, print_cmd.c
-       - changed some calls to itos to use inttostr instead
-
-cross-build/x86-beos.cache, {execute_cmd,general,shell,trap}.c
-       - some changes for BeOS (from fnf@ninemoons.com)
+lib/readline/rltty.c
+       - set_special_char: fix prototype (last arg is rl_command_func_t *)
 
-lib/posixheaders/memalloc.h
-       - changes to handle case where we're using both gcc and the C
-         version of alloca(), or if we have alloca.h and we're using
-         the C version of alloca() (from fnf@ninemoons.com)
+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
 
-lib/sh/oslib.c
-       - if bcopy or bzero are #defines, #undef them before defining
-         replacement functions
+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
 
-support/config.guess
-       - recognize AmigaOS (from fnf@ninemoons.com)
-       - recognize BeOS running on various machines
-         (from fnf@ninemoons.com)
+                                  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>
 
-support/config.sub
-       - change basic_machine definition for amiga; added amigaos
-         (from fnf@ninemoons.com)
-       - changed definitions for MIPS machines running Linux (from
-         fnf@ninemoons.com)
-       - recognize `beos' as a valid operating system
-         (from fnf@ninemoons.com)
-       - changed OS for *-cbm to `amigaos' rather than `amigados'
-         (from fnf@ninemoons.com)
+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
 
-examples/functions/autoload.v3
-       - a new version, from Mark Kennedy <mtk@ny.ubs.com>
+                                   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>
 
-lib/readline/readline.c
-       - new function, rl_delete_or_show_completions, like tcsh editing
-         function delete-char-or-list
+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/readline.h
-       - new extern declaration for rl_delete_or_show_completions
+lib/readline/{util.c,rldefs.h}
+       - _rl_stricmp,_rl_strnicmp: now take const char * string arguments;
+         changed prototype declarations
 
-lib/readline/funmap.c
-       - new bindable name `delete-char-or-list', like tcsh
+                                   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
 
-lib/readline/doc/rluser.texinfo, doc/{bash.1,readline.3}
-       - documented new delete-char-or-list command
+                                  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>
 
-general.c
-       - fix full_pathname to keep it from generating things like
-         //foo when the current directory is /
+                                  9/16
+                                  ----
+builtins/{caller,cd,kill,pushd,wait}.def
+       - builtin_usage(): make sure call to this sets return status to
+         EX_USAGE
 
-                                  8/27
+                                  9/18
                                   ----
-builtins/fc.def
-       - fixed the help text for the -e option
+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
 
-                                  8/28
+readline.h
+       - rl_change_environment: new extern declaration for applications
+
+                                  9/22
                                   ----
-support/shobj-conf
-       - added a clause for AIX 4.2 systems running gcc -- just the
-         standard gcc stuff for shared objects, but it has to come
-         before the other AIX 4.2 clause
+configure.ac
+       - relstatus: bumped version to bash-4.3-beta2
 
-                                  8/31
+                                  9/24
                                   ----
-shell.c
-       - some changes so that `set -e' is turned off while executing
-         the startup files
 
-                                   9/3
-                                   ---
-flags.c
-       - new variable, `restricted_shell', non-zero if the shell was
-         started in restricted mode
+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>
 
-flags.h
-       - extern declaration for restricted_shell
+                                  10/19
+                                  -----
 
-shell.c
-       - new function, shell_is_restricted, returns 1 if the shell is
-         supposed to be restricted based on the basename of $0 or the
-         -r option
-       - set restricted_shell to the value returned by shell_is_restricted
-         before executing the startup files
+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>
 
-externs.h
-       - extern declaration for shell_is_restricted
+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>
 
-builtins/shopt.def
-       - new shopt variable, restricted_shell, indicates whether the shell
-         was restricted at startup -- useful in startup files
+                                  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}
-       - documented new restricted_shell shopt option
+       - document new -@ option to cd builtin
 
-                                  9/15
-                                  ----
-lib/sh/rename.c
-       - new file, replacement for rename(2) if the OS doesn't provide it
+                                  10/28
+                                  -----
+lib/glob/{{gmisc,glob}.c,glob.h}
+       - extglob_pattern renamed to extglob_pattern_p, declared in glob.h
 
-configure.in,config.h.in,Makefile.in,lib/sh/Makefile.in
-       - machinery for including rename.o in libsh.a
+subst.c
+       - expand_word_internal: typo fix: case to fix " $@\ " bug in bash-4.2
+         had a typo (& isexp instead of &&)
 
-nojobs.c
-       - make sure that set_tty_state returns a value
+                                  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>
 
-builtins/mkbuiltins.c
-       - use a call to rename(2) instead of a link/unlink pair
-
-lib/glob/glob.c
-       - don't #define bcopy if bcopy is already defined
-
-lib/readline/histfile.c
-       - add a call to ftruncate for BeOS, which ignores the O_TRUNC flag
-         to open
-
-lib/readline/input.c
-       - make rl_getc loop if read returns -1/EINTR on BeOS
-
-configure.in
-       - set ARFLAGS and substitute it into the Makefiles
-
-{,builtins,lib/{glob,malloc,readline,sh,termcap,tilde}}/Makefile.in
-       - ARFLAGS is now substituted by configure
-       - use ARFLAGS in rules that create libraries using $(AR)
-
-builtins/printf.def
-       - fixed bug that caused a core dump when a modifier was supplied
-         in the format string without a conversion character (e.g. `%h')
-
-                                  9/17
-                                  ----
-lib/glob/glob.c
-       - if filenames starting with a dot don't have to be matched
-         explicitly (e.g., after a `shopt -s dotglob'), don't match
-         `.' or `..' in any case
-
-eval.c
-       - make sure that array assignments don't show up in the history list
-         (fix from Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>)
-
-lib/readline/complete.c
-       - fix to rl_menu_complete so it inserts a single completion properly
-         when a word matches only one filename
-
-                                  9/24
-                                  ----
-execute_cmd.c
-       - difftimeval should zero out the tv_usec field if the tv_sec field
-         is < 0
-       - addtimeval should check for tv_usec being == 1000000 and add one
-         to tv_sec if it is
+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
 
-                                  9/25
-                                  ----
+                                  10/31
+                                  -----
 subst.c
-       - fix to expand_word_internal to prevent non-whitespace IFS characters
-         from causing word splitting if they are not the results of an
-         expansion (not exactly right yet, but I think it's the result of a
-         problem with the ${...} end-brace-matching code in the parser)
-
-                                  9/28
-                                  ----
-parse.y
-       - new flag for parse_matched_pair -- P_FIRSTCLOSE -- which makes it not
-         count and match additional construct open characters
-       - change calls to parse_matched_pair when matching braces in
-         ${...} constructs (both unquoted and within double quotes) to
-         specify the P_FIRSTCLOSE flag to match POSIX.2 requirements
+       - 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>
 
-subst.c
-       - changed fix from 9/25, now that the parser problem is fixed
+builtins/ulimit.def
+       - RLIMIT_NTHR: if RLIMIT_PTHREAD is not defined, but RLIMIT_NTHR is,
+         use RLIMIT_NTHR (NetBSD)
 
-                                  9/30
+                                  11/5
                                   ----
-variables.c
-       - change expansion of list of words between (...) in array assignments
-         to include pathname generation in assign_array_var_from_string
-
-doc/{bash.1,bashref.texi}
-       - clarified behavior of the shell at startup if running setuid, with
-         and without the -p option supplied
+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>
 
-                                  10/7
+                                  11/6
                                   ----
-bashhist.c
-       - change default open(2) mode to 0600 instead of 0666 for `privacy
-         concerns'
+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>
 
-                                  10/13
+                                  11/12
                                   -----
-lib/readline/display.c
-       - fixed a problem with displaying tabs after newlines, from
-         <qrczak@knm.org.pl>
-       - in update_line, if we are printing over existing material,
-         only call space_to_eol or _rl_clear_to_eol if lendiff is non-zero
-       - when moving the cursor in _rl_move_cursor_relative, only call
-         _rl_backspace if the current cursor position is strictly greater
-         than the desired cursor position
+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>
 
-                                  10/14
+                                  11/15
                                   -----
-locale.c
-       - LC_ALL is no longer set automatically when LANG is assigned a value
-
-config.h.{top,bot}
-       - renamed to config-{top,bot}.h, respectively
-
-config.h.in
-       - include config-top.h and config-bot.h
-
-Makefile.in
-       - things now depend on config-top.h and config-bot.h
+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>
 
-subst.c
-       - minor changes to extract_dollar_brace_string and char_is_quoted to
-         allow things like "${PIP[TAB] to perform correct variable completion
+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>
 
-                                  10/15
+                                  11/20
                                   -----
-builtins/Makefile.in
-       - add $(PROFILE_FLAGS) to the make recipe that creates `mkbuiltins',
-         so configuring with --enable-profiling works right
+[bash-4.3-rc1 frozen]
 
-                                  10/20
+                                  11/24
                                   -----
-doc/bashref.texi
-       - documented the new --with-installed-readline option
-
-[bash-2.03-alpha1 frozen]
+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>
 
-                                  10/21
+                                  11/28
                                   -----
-builtins/reserved.def
-       - fixed help text for { ... } to make it clear that a semicolon is
-         required before the closing brace
+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>
 
-                                  10/22
+                                  11/30
                                   -----
-trap.c
-       - in decode_signal, don't bother calling strcasecmp if
-         signal_names[sig] is null or empty
-
-                                  11/2
-                                  ----
-configure.in
-       - make sure RL_LIBDIR and HIST_LIBDIR are assigned values even if
-         readline or history is configured out of the shell, so the -L
-         options have arguments in the link command
-
-test.c
-       - make test_syntax_error cause test to return a status > 1, to
-         conform to POSIX.2 4.62.8
-
-doc/readline.3
-       - make sure the SYNOPSIS section indicates that programmers should
-         include <stdio.h> before <readline.h>
+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
 
-                                  11/9
+                                  12/2
                                   ----
-Makefile.in
-       - install with explicit mode of 0755
-
-                                  11/10
-                                  -----
-builtins/test.def
-       - make sure that a missing `]' makes `[' exit with status 2, to
-         conform to POSIX.2 4.62.8
-
-command.h
-       - new word flag: W_NOGLOB, meaning to not perform globbing
-
-execute_cmd.c
-       - fix_assignment_statements now turns on the W_NOGLOB flag for
-         arguments to `assignment builtins' that have W_ASSIGNMENT set
-
-subst.c
-       - expand_word_internal needs to preserve the W_NOGLOB flag from
-         the word being expanded to the word being returned
-       - glob_expand_word_list does not call shell_glob_filename for a
-         word with W_NOGLOB set
-
-builtins/shopt.def
-       - print_shopt is now void
-
-configure.in
-       - machines running Rhapsody don't use the bash malloc
-       - pass host_vendor to the Makefiles with AC_SUBST
-
-support/config.guess
-       - Rhapsody is really rhapsody, not nextstep
-
-support/config.sub
-       - add rhapsody to the list of supported configurations
-
-Makefile.in
-       - pass CONF_HOSTTYPE, CONF_OSTYPE, and CONF_MACHTYPE as -D options
-         in SYSTEM_FLAGS, to indicate that they came from the configuration
-         process
-       - set VENDOR variable from host_vendor configuration variable
-       - pass CONF_VENDOR as part of SYSTEM_FLAGS
+lib/readline/{histexpand.c
+       - get_history_event: account for current_history() possibly returning
+         NULL. Report and fix from Pankaj Sharma <pankaj.s01@samsung.com>
 
-variables.c
-       - define HOSTTYPE, OSTYPE, and MACHTYPE as CONF_HOSTTYPE, CONF_OSTYPE,
-         and CONF_MACHTYPE, respectively
 
-                                  11/11
+                                  12/11
                                   -----
-doc/{bashref.texi,bash.1}
-       - updated description of `read' to clarify the -r option and its
-         effect on backslash escaping
 
-                                  11/13
-                                  -----
-examples/loadables/{ln,unlink}.c
-       - new loadable builtins
+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>
 
-                                  11/23
+                                  12/13
                                   -----
-lib/glob/fnmatch.c
-       - some fixes to handle extended glob patterns immediately following
-         a `*'
-
-tests/extglob.tests
-       - updated with cases from bug report fixed today
 
-support/shobj-conf
-       - udpated stanza for aix 4.2 with gcc, based on information from
-         jik@cisco.com
+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
 
-configure.in
-       - changes to add the correct linker options to allow dynamic linking
-         when using gcc on AIX 4.2, instead of insisting on the AIX C
-         compiler
+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>
 
-examples/misc/aliasconv.{bash,sh}
-       - changes to handle aliases with embedded single quotes
+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>
 
-                                  11/25
+                                  12/17
                                   -----
-lib/readline/complete.c
-       - postprocess_matches should call compute_lcd_of_matches with an
-         argument of `t' instead of `text'
-       - postprocess_matches should never call ding(); leave that for the
-         callers
-       - postprocess_matches no longer needs `text' as the first argument
-       - rl_complete_internal needs to call ding() if postprocess_matches
-         returns 0, since postprocess_matches no longer does it
-       - rl_complete_internal can now free `text' immediately after calling
-         gen_completion_matches, since it's no longer used
+support/config.{guess,sub}
+       - updated to latest versions from git
 
-                                  11/30
+                                  12/19
                                   -----
-print_cmd.c
-       - make sure redirections following compound commands have a space
-         separating them from the command
+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
 
-                                  12/1
-                                  ----
-general.c
-       - changed canonicalize_pathname so that if the result path begins
-         with `//', it will be changed to `/' if and only if the original
-         path did not begin with `//' (there has to be a non-slash after
-         the leading `///' in the original path)
+externs.h
+       - parser_expanding_alias, parser_save_alias, parser_restore_alias: new
+         extern function declarations
 
-                                  12/2
-                                  ----
 builtins/evalstring.c
-       - augment the test for turning on CMD_NO_FORK to make sure that
-         parse_and_execute_level == 1.  That takes care of things like
-
-               bash -c 'for f in 1 2 3; do eval "/bin/echo \"$f\"" ; done'
-
-         only printing one line of output
-
-                                  12/8
-                                  ----
-config-top.h
-       - add commented-out #define for NON_INTERACTIVE_LOGIN_SHELLS so
-         that users may, if they choose, make things like
-
-               #! /bin/bash --login
-
-         work in shell scripts
-
-                                  12/10
+       - 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
                                   -----
-jobs.c
-       - changes to the way jobs are reaped when the shell is not
-         interactive:
-
-               o notify_of_job_status no longer marks dead jobs as
-                 notified if they did not exit due to a signal;
-               o changed mark_background_jobs_as_notified to take an
-                 argument `force':  if zero, we only mark enough
-                 dead jobs as notified to keep CHILD_MAX jobs in the
-                 jobs list, as POSIX.2 specifies.  If non-zero, mark
-                 all dead jobs as notified;
-               o wait_for_background_pids marks all dead jobs as
-                 notified when it has finished waiting for everything,
-                 since the only thing that calls it is the `wait' builtin;
-               o wait_for_single_pid marks a job as notified after it
-                 has completed, since the only things that call it are
-                 wait_for_background_pids and the `wait' builtin
-               o wait_for_job marks the job as notified after the last
-                 pid completes
-
 execute_cmd.c
-       - change execute_subshell_builtin_or_function to check
-         subshell_environment and pipe_out to decide whether or not to fork
-         if builtin == jobs_builtin, since the early-forking code added in
-         bash-2.02 means that the piping has probably already been done
+       - 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>
 
-                                  12/15
-                                  -----
-parse.y
-       - changes to make avar=((...)) a syntax error instead of ignoring
-         the nested parens and treating it as an array assignment
+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
 
-shell.c
-       - changed run_startup_files so that any shell, whether or not it is
-         interactive, will run the login shell startup files when given the
-         --login option.  This happens only when not in posix mode.
+                                  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>
 
-builtins/enable.def
-       - changes to handle Tenon's MachTen, whose dlclose() does not return
-         a value
+Makefile.in
+       - install: make sure to use $(DESTDIR) when installing OTHER_DOCS.
+         Report and fix from Matthias Klose <doko@debian.org>
 
-lib/glob/fnmatch.c
-       - changed gmatch so that when it calls extmatch, it removes FNM_PERIOD
-         from the flags if it's not matching at the start of the string.
-         This fixes the problem of `@' and `+' extended-glob subpatterns
-         containing bracket expressions treating `.' specially when matching
-         a portion of the string starting with `.'
+doc/texinfo.tex
+       - updated to version of 2013-09-11
 
-config-top.h
-       - removed define for NON_INTERACTIVE_LOGIN_SHELLS, since it's no longer
-         necessary
+                                  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/17
+                                  12/30
                                   -----
-lib/readline/complete.c
-       - change rl_complete_internal and rl_menu_complete to check
-         rl_filename_completion_desired to decide whether or not we're
-         completing filenames instead of checking whether the attempted
-         completion function is filename_completion_function.
-         filename_completion_function sets rl_filename_completion_desired,
-         so this shouldn't break anything -- just allow postprocessing of
-         matches for user-supplied filename completion functions that don't
-         call filename_completion_function
+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
 
-lib/readline/display.c
-       - new function, _rl_erase_entire_line, which erases the entire line,
-         no matter where the cursor is, and puts the cursor at the beginning
-         of the (newly-empty) line
+                                  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]
 
-lib/readline/readline.c
-       - new application-level variable, rl_erase_empty_line, which, if
-         non-zero, tells readline to erase the contents of the current line,
-         prompt and all, if the only character typed to an otherwise-blank
-         line is bound to rl_newline.  Requested by the Cygnus GDB folks.
-       - change to rl_newline to suppress the call to _rl_update_final if
-         rl_erase_empty_line is non-zero, and rl_point == rl_end == 0, since
-         _rl_update_final calls crlf()
-       - change to readline_internal_charloop to call _rl_erase_entire_line
-         if newline was the only thing typed on an otherwise-empty line
+trap.h
+       - set_signal_hard_ignored: new external declaration
 
-lib/readline/readline.h
-       - extern declaration for rl_erase_empty_line
+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
 
-lib/readline/doc/rltech.texinfo
-       - documented new rl_erase_empty_line variable
+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
 
-                                  12/18
-                                  -----
-Makefile.in
-       - changed RELSTATUS to `beta1'
+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
 
-[bash-2.03-beta1 frozen]
+lib/sh/strdup.c
+       - strdup replacement function for ancient systems that don't have it
 
-                                  12/21
-                                  -----
-doc/{bash.1,bashref.texi}
-       - added description of `test -h'; equivalent to `test -L'
+lib/sh/itos.c
+       - mitos: new function, itos that uses strdup instead of savestring
 
-                                  12/22
-                                  -----
-support/shobj-conf
-       - SHOBJ_LDFLAGS should be those options to ld which are common
-         between building dynamically loadable shared objects and shared
-         libraries
-       - added two new variables: SHOBJ_XLDFLAGS, which are ld options
-         specific to building dynamically loaded shared objects, and
-         SHLIB_LIBS, which are other libraries against which shared libraries
-         should be linked.  These are for the benefit of AIX 4.2; other
-         stanzas do not need to be changed.
+externs.h
+       - strvec_mcreate/strvec_mresize: new extern declarations
+       - mitos: new extern declaration
 
-configure.in
-       - add call to AC_SUBST for SHOBJ_XLDFLAGS
+configure.ac
+       - bash version moved to 4.3-rc2
 
-examples/loadables/Makefile.in
-       - SHOBJ_XLDFLAGS is now substituted by configure
-       - $(SHOBJ_LDFLAGS) -> $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) in all
-         recipes that build loadable builtins
+                                   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>
 
-                                  12/29
-                                  -----
-support/config.{guess,sub}
-       - changes for NEC SX4 machines running SUPER-UX (?).  Info from
-         Nicholas Clark <nick@flirble.org>
+lib/readline/doc/{version.texi,history.3,*.texi}
+       - updated email addresses and copyright dates
 
-lib/readline/bind.c
-       - new bindable variable, `isearch-terminators', which is the list of
-         characters that will terminate an incremental search without
-         subsequently executing the character as a command
+                                   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
 
-lib/readline/isearch.c
-       - changes to incorporate the new isearch-terminators bindable variable;
-         uses new private readline variable _rl_isearch_terminators
-         (suggested by Brian Fox)
+variables.h
+       - delete_var: new extern declaration
 
-doc/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo
-       - documented new `isearch-terminators' settable variable
+subst.h
+       - ASS_NAMEREF: new define for assignments, means assigning to a nameref
+         variable
 
-lib/readline/complete.c
-       - new convenience function, free_match_list, called from
-         rl_complete_internal
+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>
 
-                                  12/30
-                                  -----
-aclocal.m4
-       - changed the calls to AC_MSG_ERROR in the cross-compiling sections
-         to AC_MSG_WARN, since AC_MSG_ERROR can cause configure to abort
+                                   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
 
-examples/functions/which
-       - new function, emulation of `which' as it appears in FreeBSD
+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
 
-                                  12/31
-                                  -----
-lib/readline/readline.c
-       - new bindable function: rl_rubout_or_delete.  Does rl_rubout if
-         rl_point is at the end of the line, or rl_delete if not.  This
-         is intended to mimic the Motif/Netscape/GNOME behavior of the
-         DEL character, and can be bound to delete to get that behavior
+                                  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
 
-lib/readline/readline.h
-       - new extern declaration for rl_rubout_or_delete
+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?
 
-lib/readline/funmap.c
-       - bound the name `forward-backward-delete-char' to
-         rl_rubout_or_delete (currently not bound to any keys)
-
-lib/readline/doc/manvers.texinfo
-       - new file with readline manual version information, to mantain
-         consistent numbering between readline and history manuals
-
-lib/readline/doc/{rlman,hist}.texinfo
-       - @include manvers.texinfo for version information
-       - moved the @dircategory and and @direntry directives inside
-         the @ifinfo block
-       - changed copyrights to 1988-1999
-
-doc/Makefile.in, lib/readline/doc/Makefile.in
-       - texi2html is now called with -menu (to handle the texinfo menus)
-         and -monolithic (to include the table of contents in the generated
-         HTML file instead of putting it in a separate file
-       - changed recipes to remove references to TOC html files
-
-lib/glob/fnmatch.c
-       - include <string.h> or <strings.h> as appropriate for strchr()
-         declaration
-
-                                1/4/1999
-                                --------
-print_cmd.c
-       - don't print bare words when printing conditional expressions in
-         print_cond_node, use cprintf("%s", cond->op->word)
+                                  1/11
+                                  ----
+subst.h
+       - SD_GLOB: new define for skip_to_delim; means we are scanning a
+         glob pattern.
 
 subst.c
-       - in separate_out_assignments, if VARLIST is non-null on function
-         entry, free it up to clean up after a previous error longjmp
-
-                                   1/5
-                                   ---
-configure.in
-       - make sure the case clause that disables the bash malloc on alpha
-         machines catches things like `alphaev56' as well as `alpha'
+       - 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
                                   ----
-lib/readline/histlib.h
-       - new error message code: NO_PREV_SUBST
+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>
 
-lib/readline/histexpand.c
-       - handle NO_PREV_SUBST with appropriate error message in hist_error
-       - in history_expand_internal, if the `s' or `&' case results in a
-         null or empty LHS, return NO_PREV_SUBST
+                                  1/19
+                                  ----
+subst.c
+       - list_dequote_escapes: new function; analogue of list_quote_escapes
 
-error.c
-       - new interface: command_error(func, code, e, flags); intended to
-         collect command-related errors in one place
-       - new interface: command_errstr(code); returns a string describing
-         command error CODE
+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>
 
-error.h
-       - extern declarations for command_error and command_errstr
+                                  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>
 
-command.h
-       - possible values for CODE in calls to command_error and command_errstr
+Makefile.in
+       - variables.o: add dependency on builtins/builtext.h; helps with
+         parallel builds.  Report from Linda Walsh <bash@tlinx.org>
 
-{shell,print_cmd,make_cmd,execute_cmd,dispose_cmd,eval}.c ,builtins/evalstring.c
-       - changed some calls to programming_error to use command_error
+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/13
+                                  1/27
                                   ----
-configure.in
-       - if --enable-profiling is specified on a solaris2 machine, don't
-         turn on enable-static-link, since it's very hard to build a
-         static binary on solaris2 and gprof does not (apparently) require it
-
-builtins/getopts.def
-       - add calls to sh_getopt_restore_state so the state is restored each
-         time getopts is called.  This protects us against the behavior of
-         some mallocs, which causes `nextchar' to be set to garbage in
-         getopt.c when a function is called between calls to getopts
+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/14
+                                  1/29
                                   ----
-lib/readline/complete.c
-       - if postprocess_matches returns 0 in rl_complete_internal, reset
-         completion_changed_buffer to 0 before returning, since nothing
-         has been changed
+[bash-4.3-rc2 released]
 
-                                  1/20
+                                  1/30
                                   ----
-subst.c
-       - fixed pat_subst so that null patterns with a `#' specifier prefix
-         the string to be substituted on with the replacement, and null
-         patterns with a `%' specifier append the replacement to the string
-         to be substituted on
+lib/readline/readline.h
+       - rl_clear_history, rl_free_keymap: add extern declarations.  Report
+         from Hiroo Hayashi <hiroo.hayashi@computer.org>
 
-doc/{bash.1,bashref.texi}
-       - corrected a small error in the description of parameter pattern
-         substitution
+general.c
+       - include trap.h for any_signals_trapped() prototype
 
-support/mksignames.c
-       - SIGINFO means something else on sequent systems
+lib/sh/unicode.c
+       - include <stdio.h> for sprintf prototype
 
-                                  1/26
+                                  1/31
                                   ----
 execute_cmd.c
-       - fix to execute_simple_command to keep a child process from getting
-         a bad value of last_asynchronous_pid when the shell forks early
+       - 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
                                    ---
-Makefile.in
-       - changed RELSTATUS to `beta2'
+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
                                    ---
-[bash-2.03-beta2 released]
+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>
 
-                                   2/3
-                                   ---
-tests/{cprint.{tests,right},run-cprint}
-       - new test to exercise the command printing and copying code --
-         hopefully this will avoid things like the `conditional commands
-         in functions make the shell abort' problem
+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
                                    ---
-version.c
-       - if MACHTYPE is not defined, use CONF_MACHTYPE if it's defined
+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
                                    ---
-builtins/read.def
-       - if READLINE is defined, we need an extra pair of braces around
-         the `while' loop that reads from fd 0 if the -e option is
-         supplied, otherwise the code erroneously tests the value of
-         `retval', which is not set when using readline
+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/15
-                                  ----
-builtins/fc.def
-       - make sure that fc closes `stream' before calling fc_execute_file
-
-                                  2/17
-                                  ----
-builtins/fc.def
-       - don't bother opening and closing the file of commands before
-         calling fc_execute_file, since parse_and_execute will write the
-         commands to the history file for us
-
-Makefile.in
-       - changed release status to `release'
-
-                                  2/18
-                                  ----
-parse.y
-       - change to special_case_tokens so that `time' is not recognized
-         as a reserved word while the parser is parsing a case statement
-         pattern list (if `time' is the first pattern, the last read
-         token will be newline, which time_command_acceptable says is OK
-         to start a pipeline)
-
-pathexp.c
-       - some changes to the POSIX_GLOB_LIBRARY code (often unused)
-
-shell.c
-       - a couple of changes for Interix (nee OPENNT)
-       - added code that handles systems without a third argument to main();
-         initializing `env' from `environ', conditionalized on a cpp define
-         NO_MAIN_ENV_ARG
-
-configure.in, config.h.in
-       - check for the presence of sbrk(2); define HAVE_SBRK if found
-
-xmalloc.c
-       - don't do the space allocated computation when malloc or realloc
-         fails if HAVE_SBRK is not defined
-
-configure.in
-       - new configure variable, MAKE_SHELL, defaults to /bin/sh
-
-Makefile.in,{builtins,doc,support,lib/{glob,malloc,readline,sh,termcap,tilde},examples/loadables}/Makefile.in
-       - set SHELL from @MAKE_SHELL@
-
-lib/posixheaders/posixjmp.h
-       - Don't override defines for setjmp and longjmp in <setjmp.h> on
-         Internix (nee OPENNT)
-
-lib/readline/complete.c
-       - Interix (OPENNT) doesn't do username completion
-
-configure.in
-       - on Interix/OPENNT ($host_os == interix* or opennt*), add
-         -DNO_MAIN_ENV_ARG to LOCAL_CFLAGS
-       - on Interix/OPENNT, set MAKE_SHELL to $OPENNT_ROOT/bin/sh rather
-         than a straight /bin/sh
-
-cross-build/opennt.cache
-       - a `configure' cache file for Interix/OPENNT; not necessarily
-         for cross-compiling, but this is where the other system cache
-         files are
-
-[bash-2.03 released]
-
-                                  2/19
-                                  ----
-configure.in
-       - changed OPENNT_ROOT to INTERIX_ROOT for building on Interix
-
-support/config.guess
-       - added two stanzas for Interix running on alpha and intel hardware
-
-                                  2/22
-                                  ----
-config-bot.h
-       - if PROMPT_STRING_DECODE is not defined, #undef PPROMPT before
-         redefining it, to avoid warning messages
-
-execute_cmd.c
-       - set jobs_hack in execute_subshell_builtin_or_function only if
-         JOB_CONTROL is defined
-
-                                  2/24
-                                  ----
-trap.c
-       - fixed an obscure bug caused by a race condition in run_pending_traps.
-         Read the comments in the source code for a full description of the
-         problem and solution
-
-                                   3/1
-                                   ---
-aclocal.m4
-       - new test, BASH_STRUCT_TIMEVAL, which tries to compile a code
-         fragment that includes <sys/time.h> and <time.h> as appropriate
-         and defines HAVE_TIMEVAL if the compile succeeds
-
-configure.in
-       - call BASH_STRUCT_TIMEVAL rather than running a pair of
-         AC_HEADER_EGREPs on sys/time.h and time.h
-
-lib/readline/histfile.c
-       - include "posixstat.h" rather than <sys/stat.h>
-       - in history_truncate_file, only try to truncate if the history file
-         is a regular file
-
-                                   3/2
-                                   ---
-aclocal.m4
-       - changed BASH_STRUCT_TIMEVAL back to using a pair of
-         AC_EGREP_HEADERs instead of compiling a program fragment
-
-lib/readline/readline.c
-       - readline_internal_charloop should cast the first argument to
-         _rl_dispatch to `unsigned char' to avoid problems with negative
-         array indices on systems where signed chars are the default
-
-lib/readline/kill.c
-       - instead of doing a sequence of next_history() calls in
-         rl_yank_nth_arg_internal, save and restore the history
-         position explicitly after finding the correct entry.  This
-         attempts to ensure that rl_yank_nth_arg leaves the history
-         pointer set to the same position as when it was called.
-         Fix from Vasco Pedro <vp@di.fct.unl.pt>
-
-                                   3/5
-                                   ---
-redir.c
-       - broke code that opens file for redirection in do_redirection_internal
-         into a separate function: redir_open(path, flags, mode, ri)
-
-general.h
-       - changed STREQN so that it evaluates to 1 (strings are equivalent)
-         if N == 0, to match the behavior of strncmp
-
-lib/sh/zwrite.c
-       - new file, zwrite() from builtins/evalstring.c
-
-builtins/evalstring.c
-       - removed private definition of zwrite
-
-builtins/common.c
-       - double_quote needs to protect newlines with backslashes as well
-       - new function, un_double_quote, to remove backslashes proctecting
-         characters that are special in double quotes
-
-builtins/common.h
-       - new extern declaration for un_double_quote
-
-parse.y
-       - changed read_token_word to requote the expanded value of $'...'
-         using single_quote
-       - added a new flag to parse_matched_pair: P_ALLOWESC.  It allows
-         backslashes to quote embedded single quotes, and is used by
-         the $'...' translation code for better ksh93-compatibility
-       - changed localeexpand to call mk_msgstr on the string passed
-         before displaying it if all we're doing is displaying translatable
-         strings in `po' format.  mk_msgstr quotes backslashes and double
-         quotes in the string passed with backslashes, and encloses the
-         result in double quotes.  If only -D is supplied, the string is
-         not changed at all -- this is what ksh93 does
-
-lib/readline/rlconf.h
-       - removed PAREN_MATCHING #define, paren matching is always compiled
-         into readline
-
-lib/readline/parens.c
-       - removed code that was active if PAREN_MATCHING was not defined
-       - added _rl_enable_paren_matching, which is called when the readline
-         variable `blink-matching-paren' is assigned a value and changes
-         the appropriate key bindings in emacs_standard_keymap
-
-lib/readline/bind.c
-       - no more PAREN_MATCHING defines, `blink-matching-paren' is always
-         available
-       - if `blink-matching-paren' is assigned a value, call
-         _rl_enable_paren_matching (rl_blink_matching_paren)
-
-lib/readline/emacs_keymap.c
-       - removed PAREN_MATCHING defines; the default key bindings for
-         ), ], and } are self-insert
-
-                                   3/7
-                                   ---
-stringlib.c
-       - added an extra argument to ansicstr so that `echo -e' will not
-         convert \' to '
-
-externs.h
-       - changed extern declaration for ansicstr
-
-parse.y, builtins/{echo,printf}.def
-       - changed calls to ansicstr() appropriately
-
-eval.c
-       - in parse_string_to_word_list, if an unexpected token is encountered
-         that causes the string to not parse to a simple command, or to
-         completely consume the string, display an error message and jump
-         back to the top level after restoring the parsing environment,
-         returning an error status from the attempted assignment
-
-                                   3/8
-                                   ---
-lib/glob/fnmatch.c
-       - fixed patscan and extmatch to handle embedded [...](...) patterns
-         better
-
-tests/{extglob2.{tests,right},run-extglob2}
-       - an additional set of ksh extended globbing tests, cribbed from zsh
-
-                                  3/10
-                                  ----
-general.c
-       - changed unset_nodelay_mode slightly to make sure it handles both
-         O_NDELAY and O_NONBLOCK if they have different values; it now
-         returns a value of 0 on success (or no action); -1 on failure
-
-general.h
-       - changed extern declaration for unset_nodelay_mode
-
-
-lib/readline/shell.c
-       - new function: unset_nodelay_mode; identical to definition in
-         general.c
-
-lib/readline/input.c
-       - changed rl_getc to call unset_nodelay_mode if the read fails with
-         errno == EWOULDBLOCK || errno == EAGAIN
-
-                                  3/11
-                                  ----
-lib/termcap/termcap.c
-       - minor changes from termutils-2.0
-       - minor change to MS-DOS version of valid_filename_p so MS-DOS-specific
-         code from tgetent() can be removed (from Michel@smr.nl)
-
-lib/readline/bind.c
-       - in _rl_read_file, null-terminate the buffer at the number of
-         characters actually read, not what stat() says the file size is
-       - use ~/_inputrc as a last-ditch inputrc filename on MS-DOS
-
-lib/readline/complete.c
-       - change printable_part to handle MS-DOS `drive-letter:' pathname
-         prefixes
-       - removed __GO32__ code, since it's for DJGPP 1.x, which is not
-         supported any more, and they don't work for DJGPP 2.x
-       - added code to support MS-DOS drive letter prefixes and //X/...
-         to filename_completion_function
-       - _rl_completion_case_fold defaults to 1 on MS-DOS
-
-lib/readline/{display,input,readline,rltty,signals,terminal}.c
-       - removed __GO32__ code
-
-lib/readline/histfile.c
-       - make read_history_range and history_truncate_file work with the
-         actual number of characters read from the file, not the file size
-         as reported by stat()
-
-lib/readline/readline.c
-       - change bind_arrow_keys_internal to bind MS-DOS arrow keys to the
-         appropriate functions if __MSDOS__ is defined
-
-lib/readline/rltty.c
-       - make sure set_winsize is always defined, with a null body if
-         TIOCGWINSZ is not defined
-
-lib/readline/shell.c
-       - include <stdio.h>, since this file uses sprintf
-
-support/shobj-conf
-       - MS-DOS does not support shared objects
-
-lib/tilde/tilde.c
-       - change tilde_find_suffix and isolate_tilde_prefix to understand
-         backslash as a pathname separator on MS-DOS
-
-                                  3/12
-                                  ----
-lib/readline/{bind,readline,terminal}.c
-       - no longer need to include <signal.h>
-
-lib/readline/terminal.c
-       - don't need to include <setjmp.h>
-
-builtins/history.def
-       - broke the code than handles deleting a particular history entry
-         from the history list out into a separate function: delete_histent
-       - added `-d offset' option to delete the history entry at position
-         OFFSET, as displayed when the history is listed
-
-jobs.c, nojobs.c
-       - new function, count_all_jobs(), returns the number of active jobs
-         in the jobs list
-
-jobs.h
-       - extern declaration for count_all_jobs()
-
-configure.in
-       - check for C library function ttyname()
-
-config.h.in
-       - define HAVE_TTYNAME if configure finds ttyname(3)
-
-parse.y
-       - two new escape sequences for decode_prompt_string:
-
-               \j      number of active jobs in jobs list
-               \l      basename of shell's tty device name
-
-doc/{bash.1,bashref.texi}, lib/readline/doc/hsuser.texi
-       - documented new `history -d' option
-       - documented new \j and \l prompt string expansion sequences
-
-lib/readline/bind.c
-       - new static state variable, currently_reading_init_file, set to
-         1 while _rl_read_init_file is operating on a file
-       - changed _rl_init_file_error to include the name and line number
-         from the init file only if currently_reading_init_file is non-zero
-         (this is needed since applications like bash can call
-         rl_parse_and_bind, and error messages from those calls would be
-         misleading if they referred to the last inputrc file read
-
-bashline.c
-       - support for a `extended command keymap', which will allow
-         readline key sequences to be bound to unix commands using an
-         auxiliary keymap and a special function that knows how to execute
-         commands from it
-       - bind_keyseq_to_unix_command supports `bind -x'
-       - bash_execute_unix_command is the readline callback that looks in
-         an auxiliary keymap to find the shell command to execute for a
-         particular key sequence
-       - new variable, no_empty_command_completion, which suppresses $PATH
-         searching for command completion when TAB is typed on an empty
-         line
-
-bashline.h
-       - extern declaration for new function bind_keyseq_to_unix_command
-
-builtins/bind.def
-       - added `-x' option to bind a key sequence to a shell command
-
-builtins/help.def
-       - added `-s' option to just print a builtin's short_doc
-
-builtins/shopt.def
-       - added new shell option, no_empty_cmd_completion', mirroring value
-         of no_empty_command_completion
-
-doc/{bash.1,bashref.texi}
-       - documented new `bind -x' option
-       - documented new shopt `no_empty_cmd_completion' option
-       - documented new `help -s' option
-
-Makefile.in
-       - changed RELSTATUS to `devel'
-
-_distribution
-       - changed to `2.04'
-
-                                  3/15
-                                  ----
-support/shobj-conf
-       - add `-h $@' to linking options on Solaris 2 with gcc
-
-expr.c
-       - changes to add {pre,post}-{inc,dec}rement operators (++id, --id,
-         id++, id--).  These are somewhat more liberal than ksh93, and
-         may require more strict syntax checking down the line
-
-tests/arith.{tests,right}
-       - additional tests for {pre,post}-{inc,dec}rement operators
-
-                                  3/16
-                                  ----
-command.h
-       - structures and types for ksh-93-style arithmetic `for' command
-
-configure.in
-       - new `--enable-arith-for-command' option to compile arithmetic for
-         command code into the shell
-
-config.h.in
-       - new define, ARITH_FOR_COMMAND, turned on by configure
-
-parse.y
-       - changed read_token_word to parse a set of arithmetic for expressions
-         between (( and )) as long as the last token read before the `(('
-         was FOR
-       - added grammar rules to build arithmetic for commands
-
-make_cmd.c
-       - functions to parse (( ... )) into the three sub-expressions needed
-         for the arithmetic for command and create the command structures
-         (done this way instead of in the grammar rules to avoid forcing
-         users to quote special characters between the (( and )) )
-
-make_cmd.h
-       - extern declaration for make_arith_for_command
-
-copy_cmd.c
-       - code to copy arithmetic for commands
-
-dispose_cmd.c
-       - code to dispose of arithmetic for commands
-
-print_cmd.c
-       - code to print arithmetic for commands
-
-execute_cmd.c
-       - code to execute arithmetic for commands and note that they are
-         shell control structures for the piping code
-
-doc/{bash.1,bashref.texi}
-        - documented new arithmetic for command
-
-doc/bashref.texi
-       - documented new configure --enable-arith-for-command option
-
-                                  3/17
-                                  ----
-builtins/read.def
-       - added `-t timeout' option and code to support it
-
-                                  3/18
-                                  ----
-examples/loadables/Makefile.in
-       - various clean targets need to descend into perl
-
-examples/loadables/perl/Makefile.in
-       - added mostlyclean and maintainer-clean targets
-
-include
-       - new directory, with files from lib/posixheaders
-
-lib/posixheaders
-       - removed
-
-{posixwait,unionwait,maxpath}.h
-       - moved from top src directory to include subdir
-
-Makefile.in,builtins/Makefile.in,lib/{glob,malloc,sh,tilde}/Makefile.in
-       - updated dependencies and file lists for new include directory
-       - added BASHINCDIR variable, added -I${BASHINCDIR} to cc's include path
-
-MANIFEST,support/SYMLINKS
-       - updated for new include directory
-
-lib/readline/{ansi_stdlib,posixdir,posixjmp,posixstat,rlstdc}.h
-       - changed symlinks to point to ../../include rather than
-         ../posixheaders
-
-builtins/common.h
-       - changed `#include "../stdc.h"' to `#include "stdc.h"'
-
-builtins/{cd,exec,fc,history,pushd,source,type,umask,printf}.def
-builtins/{mkbuiltins,common,evalfile,evalstring,getopt}.c
-       - changed include specifications:
-               ../posixstat.h -> posixstat.h
-               ../filecntl.h -> filecntl.h
-               ../maxpath.h -> maxpath.h
-               ../memalloc.h -> memalloc.h
-
-include/shtty.h
-       - new file, contents of bashtty.h and code from jobs.c that includes
-         the appropriate terminal file
-
-lib/sh/shtty.c
-       - new file with some tty manipulation utility functions
-
-bashtty.h
-       - removed
-
-jobs.c, nojobs.c
-       - include shtty.h instead of bashty.h and other code that includes
-         the correct system-dependent tty include file
-
-lib/sh/Makefile.in
-       - added shtty.o as part of libsh.a
-
-MANIFEST
-       - added include/shtty.h and lib/sh/shtty.c, removed bashtty.h
-
-                                  3/19
-                                  ----
-lib/readline/display.c
-       - some more __MSDOS__ code to make readline work better with DJGPP:
-               output \r instead of tputs(term_cr, ...)
-
-lib/readline/terminal.c
-       - some changes for __DJGPP__ (one is of dubious value -- doesn't
-         DJGPP have a termcap library?)
-
-                                  3/23
-                                  ----
-configure.in
-       - make sure that the $CC argument to shobj-conf is quoted
-
-support/shobj-conf
-       - changes to SGI SHOBJ_LDFLAGS from David Kaelbling <drk@sgi.com>
-
-                                  3/24
-                                  ----
-lib/sh/zread.c
-       - interface to read(2) that restarts automatically if errno == EINTR
-
-externs.h
-       - new declarations for functions in lib/sh/{zread,zwrite}.c
-
-lib/sh/Makefile.in, Makefile.in
-       - add zread.c, zread.o to appropriate file lists
-
-{subst,input}.c, builtins/{evalstring.c,read.def}
-       - converted some loops around read() to call zread() instead
-
-lib/readline/rltty.h
-       - new struct _rl_tty_chars to save tty special characters
-
-lib/readline/rltty.c
-       - new function save_tty_chars to save tty special characters
-         (currently they're only saved -- nothing looks at them yet)
-       - two new internal library functions, _rl_disable_tty_signals ()
-         and _rl_restore_tty_signals (), intended to disable tty driver
-         signal processing for readline's literal-next code, so users
-         can do stuff like ^V^C and have ^C end up in the readline
-         buffer even if ^C is the terminal's interrupt character
-
-lib/readline/readline.c
-       - changed rl_quoted_insert to disable and restore tty signal
-         handling around the call to rl_read_key (), so users can put
-         tty special chars into the readline buffer
-
-                                  3/25
-                                  ----
-expr.c
-       - added `,' operator (expr1 , expr2) -- both expr1 and expr2 are
-         evaluated and the return value is the value of expr2.  Precedence
-         is higher than assignment (which makes it highest)
-       - make `lasttp' (pointer to last token) part of the expression
-         context that is saved and restored by {push,pop}_context.  This
-         is used only in error reporting
-
-doc/{bash.1,bashref.texi}
-       - documented new `,' arithmetic operator
-       - cleaned up some of the language concerning variables referenced
-         by name within an arithmetic expression
-
-lib/readline/readline.c
-       - new application-settable variable, rl_num_chars_to_read, which, if
-         set to a non-zero value, causes readline to return after reading
-         that many characters (or at least that many characters, if
-         rl_startup_hook is used to prime the input buffer) rather than
-         when reading a character bound to accept-line
-
-lib/readline/readline.h
-       - extern declaration for rl_num_chars_to_read
-
-builtins/read.def
-       - added new `-n nchars' option to read NCHARS from stdin rather than
-         a complete line.  Works both with and without using readline
-
-doc/{bash.1,builtins.texi}
-       - documented new `read -n nchars' option
-
-                                  3/26
-                                  ----
-execute_cmd.c
-       - make sure all uses of PIDs are of type pid_t
-
-redir.c
-       - broke stdin_redirects into two functions: stdin_redirection, which
-         checks a single redirection specification, and a new stdin_redirects,
-         which does what it did before but calls stdin_redirection for each
-         redirection in the chain
-
-                                  3/29
-                                  ----
-aclocal.m4
-       - new test, BASH_CHECK_DEV_STDIN, checks for /dev/stdin.  If it's
-         present HAVE_DEV_STDIN is defined and it's assumed that /dev/stdout
-         and /dev/stderr are present as well
-
-configure.in
-       - call BASH_CHECK_DEV_STDIN
-
-config.h.in
-       - add HAVE_DEV_STDIN, initially undefined
-
-test.c
-       - add /dev/std{in,out,err} to the special filenames that are handled
-         by test_stat() if HAVE_DEV_STDIN is not defined
-
-doc/{bash.1,bashref.texi}
-       - documented conditional expressions' handling of /dev/std{in,out,err}
-
-stringlib.c
-       - new function, find_string_in_alist, to find (or match as an extended
-         glob pattern) a string in a STRING_INT_ALIST and return the
-         associated token value
-
-externs.h
-       - extern declaration for find_string_in_alist
-
-redir.c
-       - new STRING_INT_ALIST list of filenames the redirection code handles
-         specially (_redir_special_filenames)
-       - new function, redir_special_open () to handle filenames found in
-         _redir_special_filenames (framework for /dev/tcp and /dev/udp, but
-         those are not implemented get)
-
-doc/{bash.1,bashref.texi}
-       - documented special filename handling in redirections
-
-                                  3/30
-                                  ----
-builtins/read.def
-       - added `-d delim' option, like ksh93, to read until delim rather
-         than newline
-
-doc/{bash.1,bashref.texi}
-       - documented new read `-d delim' option
-
-configure.in
-       - look for gethostbyname(3), inet_aton(3)
-       - look for <netdb.h> and <netinet/in.h>
-       - call BASH_FUNC_GETHOSTBYNAME if gethostbyname(3) is not in libc
-       - check for u_int and u_long types, default to `unsigned int' and
-         `unsigned long' respectively
-       - new enable option `--enable-net-redirections' to compile in the
-         /dev/tcp and /dev/udp redirection code
-
-aclocal.m4
-       - new macro, BASH_FUNC_GETHOSTBYNAME, looks for gethostbyname(3) in
-         the socket libraries if it's not found in libc
-
-config.h.in
-       - new defines: HAVE_GETHOSTBYNAME, HAVE_INET_ATON, HAVE_NETDB_H,
-         HAVE_NETINET_IN_H, NETWORK_REDIRECTIONS
-       - new defines: u_int, u_long
-
-lib/sh/inet_aton.c
-       - new file, from GNU libc, slightly modified to remove inet_addr()
-
-lib/sh/netopen.c
-       - new file, functions to create tcp/udp network connections.  Exports
-         a single function: netopen(pathname)
-
-externs.h
-       - extern declaration for netopen()
-
-lib/sh/Makefile.in, Makefile.in, MANIFEST
-       - added appropriate references to inet_aton.c and netopen.c
-
-config-bot.h
-       - if HAVE_SYS_SOCKET_H, HAVE_GETPEERNAME, and HAVE_NETINET_IN_H are
-         all defined, define HAVE_NETWORK
-
-redir.c
-       - call netopen for pathnames of the form /dev/(tcp|udp)/host/port
-         if HAVE_NETWORK is defined; print a warning message otherwise
-       - /dev/tcp and /dev/udp code is only compiled in if
-         NETWORK_REDIRECTIONS is defined
-
-                                  3/31
-                                  ----
-lib/sh/zread.c
-       - new function, zsyncfd(fd) which syncs the kernel's seek pointer on
-         FD with the last character returned by zreadc()
-
-externs.h
-       - extern declaration for zsyncfd
-
-builtins/read.def
-       - use zreadc if the input is not unbuffered (this cuts the number
-         of read(2) calls *way* down)
-       - if input is not unbuffered, call zsyncfd before returning to make
-         sure zreadc's buffering doesn't consume too much input
-
-                                   4/1
-                                   ---
-Makefile.in
-       - install bashbug with mode 555
-
-                                   4/2
-                                   ---
-shell.c
-       - make want_pending_command and read_from_stdin global rather than
-         local variables
-
-flags.c
-       - change which_set_flags to insert `c' and `s' if the `-c' and `-s'
-         invocation options, respectively, were supplied at shell startup
-
-bashline.c
-       - change bash_directory_completion_hook to change the logic for
-         deciding whether or not to parameter expand the directory name --
-         now we expand only if there's a `$' (still has problems if the
-         user quoted the `$') or a `` pair.  Fixes bug reported by
-         chuckjr@sinclair.net.  To fix the `$' problem, could possibly
-         check what the user typed with rl_line_buffer and start, end
-         parameters to gen_completion_matches
-       - changed attempt_shell_completion to slightly adjust the logic for
-         deciding whether or not a word is in a command position:  if the
-         word being completed has a single opening single or double quote
-         before the command separator, treat it as a candidate for (quoted)
-         command word completion
-       - now that we understand partially-quoted strings as completion
-         candidates, we can do command completion on certain unclosed
-         uses of $(...
-
-subst.c
-       - change extract_delimited_string to not return an error for an
-         unclosed construct if DOING_COMPLETION is non-zero
-
-                                   4/5
-                                   ---
-expr.c
-       - fixed `ss=09 ; let ss=10' bug by introducing one-token lookahead
-         after a string token is parsed.  If the next token is `=', we
-         don't evaluate the variable's value as an expression, since it's
-         not going to be used
-
-variables.h
-       - added new member to struct variable: exportstr -- for the future
-         caching of strings to be placed into the environment
-       - extern declaration for bind_variable_value
-
-variables.c
-       - make sure that the `exportstr' member of a struct variable is
-         initialized correctly, and put code in to free it where appropriate
-         (if non-null)
-       - new function, bind_variable_value(VAR, VALUE); make shell variable
-         VAR have value VALUE
-       - make sure var->exportstr is invalidated when a variable or function
-         is assigned a value
-
-builtins/declare.def
-       - call bind_variable_value instead of duplicating some of bind_variable
-         inline
-
-                                   4/6
-                                   ---
-variables.h
-       - new macros, VSETATTR and VUNSETATTR to set and clear variable
-         attributes
-
-builtins{read,set,setattr,declare}.def,{execute_cmd,expr,shell,subst,variables}.c
-       - change to use VSETATTR and VUNSETATTR
-
-                                   4/7
-                                   ---
-doc/Makefile.in
-       - if htmldir is set by configure, install the html files into that
-         directory with `make install' and remove them with `make uninstall'
-
-Makefile.in,doc/Makefile.in
-       - htmldir is set by configure and passed from the Makefile to the
-         install in the doc subdirectory
-
-configure.in
-       - substitute `htmldir' into Makefiles
-
-support/config.guess
-       - some small changes for Apple's Rhapsody
-
-lib/termcap/Makefile.in
-       - make the `distclean' and `maintainer-clean' targets remove Makefile
-
-lib/termcap/ltcap.h
-       - new private library include file, for Rhapsody __private_extern__
-         define
-
-lib/termcap/{termcap,tparam}.c
-       - include "ltcap.h"
-       - if HAVE_CONFIG_H is defined, include <stdlib.h> if HAVE_STDLIB_H is
-         defined, otherwise declare getenv, malloc, realloc as extern
-       - add __private_extern__ qualifier for extern data that Rhapsody
-         requires
-
-shell.c
-       - don't run the startup files in the rshd case if shell_level is >= 2
-         This should catch the case of
-               rsh machine bash -c 'echo a'
-         running the .bashrc twice, once for the shell started by rshd and
-         one for the shell running -c command
-
-                                   4/8
-                                   ---
-variables.c
-       - in initialize_shell_variables, unset the export attribute from
-         SSH_CLIENT if it exists and we got it from the initial environment
-
-shell.c
-       - don't bother unsetting export attribute from SSH_CLIENT, since we
-         now do it in initialize_shell_variables
-
-lib/readline/display.c
-       - don't check prompt_this_line[-2] in rl_redisplay if prompt_this_line
-         isn't at least 2 characters after the start of rl_display_prompt
-
-lib/readline/histfile.c
-       - change the name of the default history file to _history on MS-DOS
-
-lib/readline/histlib.h
-       - add an extern declaration for history_offset
-
-lib/readline/hist{expand,search}.c
-       - remove extern declaration for history_offset; now in histlib.h
-
-lib/readline/xmalloc.h
-       - new file, extern declarations for xmalloc, xrealloc, xfree
-
-lib/readline/rlprivate.h
-       - new file, with extern declarations for `readline private' global
-         variables and functions
-
-lib/readline/rlshell.h
-       - new file, with extern function declarations for stuff in shell.c
-
-lib/readline/Makefile.in
-       - add dependencies on xmalloc.h, rlshell.h
-       - add xmalloc.h, rlprivate.h to list of header files
-
-MANIFEST
-       - add lib/readline/xmalloc.h, lib/readline/rlprivate.h,
-         lib/readline/rlshell.h
-
-Makefile.in
-       - add $(RL_LIBSRC)/xmalloc, $(RL_LIBSRC)/rlprivate.h,
-         $(RL_LIBSRC)/rlshell.h to READLINE_SOURCE variable
-
-lib/readline/{bind,complete,display,funmap,histexpand,histfile,history,input,
-isearch,keymaps,kill,macro,readline,search,shell,util,vi_mode}.c
-       - include "xmalloc.h" rather than extern declarations for xmalloc,
-         xrealloc, xfree
-
-lib/readline/terminal.c
-       - new function, used in two places, _emx_get_screensize for EMX
-
-lib/readline/readline.c
-       - EMX apparently no longer needs _emx_build_environ
-
-lib/readline/signals.c
-       - support for __EMX__ in rl_signal_handler
-       - don't set the old handler passed to rl_set_sighandler to
-         rl_signal_handler, because that would cause infinite recursion if
-         that signal were generated
-
-lib/readline/xmalloc.c
-       - no longer the same as lib/malloc/xmalloc.c, which is no longer
-         used by anyone
-       - changes to include xmalloc.h, define READLINE_LIBRARY, change
-         some of the argument types
-
-lib/tilde/tilde.c
-       - add prototypes for extern function declarations if __STDC__
-         defined
-
-lib/readline/{terminal,bind,readline,nls,histexpand}.c
-       - include "rlshell.h" for function prototypes
-
-                                   4/9
-                                   ---
-lib/readline/{bind,callback,complete,display,input,isearch,kill,macro,nls,
-parens,readline,rltty,search,signals,terminal,util,vi_mode}.c
-       - include "rlprivate.h"
-       - remove extern declarations already in rlprivate.h
-
-xmalloc.c
-       - xfree should take a PTR_T as its argument
-
-general.h
-       - change prototype for xfree to use void * instead of char *
-
-lib/malloc/malloc.c
-       - define PTR_T like it is defined in general.h
-       - malloc() returns a PTR_T
-       - free() takes a PTR_T as its argument
-       - realloc() returns a PTR_T and takes a PTR_T as its first argument
-       - memalign returns a PTR_T
-       - valloc returns a PTR_T
-       - calloc returns a PTR_T
-       - cfree() takes a PTR_T
-
-variables.c
-       - new function: char **all_variables_matching_prefix (char *prefix)
-
-variables.h
-       - extern declaration for all_variables_matching_prefix
-
-bashline.c
-       - converted variable_completion_function to use
-         all_variables_matching_prefix
-
-stringlib.c
-       - new function, char **alloc_array(n), allocates an argv-style
-         array of strings with room for N members
-
-externs.h
-       - extern declaration for alloc_array
-
-                                  4/13
-                                  ----
-lib/readline/keymaps.c
-       - include "readline.h"
-       - remove extern function declarations
-
-include/stdc.h
-       - break the definition of __P out from a strict __STDC__ block,
-         since __GNUC__ and __cplusplus also indicate that prototypes
-         are available
-
-lib/readline/readline.h
-       - adjust conditional declaration of rl_message, since __cplusplus
-         indicates that prototypes are available
-
-lib/readline/rlstdc.h
-       - private copy, modified, no longer symlinked to ../../include/stdc.h
-       - __P is defined if __GNUC__ or __cplusplus is defined
-       - removed defines for __STRING, const, inline, signed, volatile, since
-         readline does not use them
-
-lib/readline/{search,readline}.c
-       - extern declaration for _rl_free_history_entry with prototypes,
-         since it's not in rlprivate.h
-
-lib/readline/history.h
-       - added some missing `extern's in function declarations
-
-lib/readline/undo.c
-       - include "rlprivate.h"
-
-lib/readline/shell.c
-       - include "rlshell.h"
-
-lib/readline/Makefile.in
-       - update dependencies for undo.c, shell.c
-
-lib/tilde/tilde.h
-       - add #define for __P if not already defined
-       - use prototypes in extern function declarations with __P()
-
-lib/readline/doc/rluserman.texinfo
-       - new file, derived from rlman.texinfo
-
-{bashline,findcmd,general,pathexp}.c, builtins/getopts.def
-       - call alloc_array(N) instead of (char **)xmalloc (N * sizeof (char *))
-
-subst.c
-       - added code to implement ksh-93 ${!prefix*} expansion
-
-doc/{bash.1,bashref.texi}
-       - documented new ${!prefix*} expansion
-
-                                  4/15
-                                  ----
-execute_cmd.c
-       - new variable, this_shell_function, points to SHELL_VAR of currently
-         executing shell function
-
-variables.c
-       - new dynamic variable, FUNCNAME -- invisible when not executing shell
-         function
-
-doc/{bash.1,bashref.texi}
-       - documented new FUNCNAME variable
-
-                                  4/16
-                                  ----
-support/rlvers.sh
-       - add -T option to specify correct termcap library
-
-configure.in
-       - Irix 4.x still needs to link with -lsun if it contains a replacement
-         getpwent function that works with NIS
-       - if we're configuring with an already-installed readline library,
-         call BASH_CHECK_LIB_TERMCAP and pass the resulting $TERMCAP_LIB to
-         support/rlvers.sh
-
-lib/readline/readline.c
-       - in rl_forward, if rl_point ends up being < 0, set it to 0
-
-lib/readline/exammples/excallback.c
-       - new callback example code, from `Jeff Solomon <jsolomon@stanford.edu>'
-
-lib/sh/getcwd.c
-       - define NULL as 0 if not defined by one of the standard include files
-       - cast result of malloc and realloc to (char *) where appropriate
-
-variables.c
-       - new functions for use by dynamic variables: null_assign and
-         null_array_assign.  Used as assign_func for a particular variable,
-         they cause assignments to that variable to be silently ignored
-       - FUNCNAME and GROUPS are no longer readonly
-       - FUNCNAME changed to use null_assign
-       - GROUPS changed to use null_array_assign.  This means that the
-         variable can be unset if desired (like for Oracle startup scripts),
-         but cannot be assigned to
-
-doc/{bash.1,bashref.texi}
-       - added text about assignments being silently discarded to descriptions
-         of FUNCNAME and GROUPS
-       - removed text saying that GROUPS is readonly
-       - added standard text about GROUPS being unset and losing its special
-         properties, even if reset
-
-command.h
-       - new command type, cm_subshell, actually causes the shell to fork
-         and then executes the command in the SUBSHELL_COM struct
-
-parse.y
-       - ( ... ) now creates a command of type cm_subshell, with the same
-         flag CMD_WANT_SUBSHELL as previous
-
-make_cmd.c
-       - new function make_subshell_command
-
-make_cmd.h
-       - extern declaration for make_subshell_command
-
-dispose_cmd.c
-       - code to destroy a SUBSHELL_COM
-
-copy_cmd.c
-       - code to duplicate a SUBSHELL_COM
-
-print_cmd.c
-       - code to print a SUBSHELL_COM
-
-execute_cmd.c
-       - broke the code that handles executing commands in subshells out of
-         execute_command_internal into a new function, execute_in_subshell,
-         with the same arguments
-       - executing a command of type cm_subshell is just a slightly special
-         case, handled in execute_in_subshell
-
-                                  4/18
-                                  ----
-execute_cmd.c
-       - changed code in execute_command_internal that executes subshell
-         commands to check for command->type == cm_subshell in addition to
-         checking that commmand->flags & CMD_WANT_SUBSHELL is non-zero
-       - changed execute_in_subshell to set the CMD_NO_FORK flag on the
-         command to be executed by a command of type cm_subshell
-         (command->value.Subshell->command), if that command is a simple
-         command (type == cm_simple) or a nested subshell (type == cm_subshell)
-         and is not being timed
-       - changed execute_command_internal to just call and return the value
-         returned by execute_in_subshell if it gets a command of type
-         cm_subshell with flags including CMD_NO_FORK
-
-lib/malloc/malloc.c
-       - morecore() should always return through morecore_done, not with a
-         simple `return'
-
-                                  4/20
-                                  ----
-variables.c
-       - new function, quote_array_assignment_chars, backslash quotes all
-         `[' and `]' before an `=' in a word that's part of the body of a
-         compound array assignment.  Needed because we run the list through
-         the globbing code now.  Don't bother if `=' does not appear in
-         the string or if the first char is not `['
-       - call quote_array_assignment_chars from assign_array_var_from_string
-         now
-
-eval.c
-       - moved parse_string_to_word_list to parse.y
-
-parse.y
-       - moved parse_string_to_word_list here.  Much simpler -- no longer
-         tries to parse a command, but just reads tokens using read_token().
-         Any token but a WORD or ASSIGNMENT_WORD causes a syntax error.
-         Don't have to mess around with saving global_command or calling
-         parse_command, but do need to save and restore the history stuff,
-         so the array assignment doesn't get saved on the history list
-
-                                  4/21
-                                  ----
-nojobs.c
-       - changed to use functions in lib/sh/shtty.c (tt{get,set}attr) for
-         the terminal attributes
-       - added a `flags' field to struct proc_status, flags are PROC_RUNNING
-         and PROC_NOTIFIED (status has been returned to `wait')
-       - functions check flags & PROC_RUNNING to check whether or not a
-         particular process is still alive; PROC_RUNNING is reset by
-         set_pid_status
-       - new function, mark_dead_jobs_as_notified, same function as the one
-         in jobs.c
-       - cleanup_dead_jobs reaps jobs only if they're dead and not marked
-         as notified
-       - wait_for_background pids marks all pids as notified and reaps them
-         before it returns, since it's called by the `wait' builtin
-       - wait_for_single_pid marks the pid being waited for as notified so
-         its slot can be reclaimed -- it's only called by the `wait' builtin
-       - new function, process_exit_status, to turn what wait(2) takes into
-         an exit status
-
-                                  4/22
-                                  ----
-nojobs.c
-       - add_pid takes a new second argument, async_p, which is non-zero if
-         the process is in the background
-       - new flag, PROC_ASYNC, set by add_pid
-       - set_pid_status now sets the PROC_NOTIFIED flag if PROC_ASYNC is unset,
-         so foreground jobs get cleaned up right away
-       - changed mark_dead_jobs_as_notified to take a `force' argument; if
-         non-zero, it marks only enough dead jobs to make the number of
-         un-notified dead jobs < CHILD_MAX
-       - new function, reap_dead_jobs, same as in jobs.c
-
-execute_cmd.c
-       - don't need separate cases for REAP any more
-
-                                  4/23
-                                  ----
-builtins/printf.def
-       - new function, tescape, which processes a single backslash
-         escape sequence and returns the number of characters consumed by
-         the argument string (code taken from bexpand)
-       - changed bexpand to call tescape rather than do backslash-escape
-         sequence conversion itself
-       - changed occurrences of `illegal' in error messages to `invalid'
-       - printf no longer calls ansicstr to translate backslash-escape
-         sequences; the mainline printf code now calls tescape whenever it
-         hits a backslash
-
-                                  4/26
-                                  ----
-subst.c
-       - new variable, garglist, set to list of words to be expanded after
-         leading assignment statements are removed
-       - command_substitute now calls maybe_make_exported_env before making
-         the child process if there are no variable assignments preceding
-         the command currently being expanded, or if the command currently
-         being expanded consists only of variable assignments
-
-execute_cmd.c
-       - the `early fork' code in execute_simple_command now calls
-         maybe_make_export_env before forking because execute_disk_command
-         would do that in the vast majority of cases, and this will obviate
-         the need to do it for subsequent commands if the environment does
-         not change
-
-                                  4/27
-                                  ----
-variables.h
-       - more macros to manipulate the exportstr member of a SHELL_VAR
-       - changed initialize_shell_variables to cache the value from the
-         environment as the initial exportstr for all imported variables
-       - changed make_var_array to use exportstr if it exists, instead
-         of computing the value
-       - changed make_var_array to cache exportstr for exported functions,
-         so they don't have to be deparsed every time the export env is
-         remade
-
-                                  4/28
-                                  ----
-lib/readline/{histlib,rldefs}.h
-       - changed STREQN macro to evaluate to 1 if the third argument is 0
-
-lib/readline/search.c
-       - changed rl_history_search_{for,back}ward so they leave point at
-         the end of the line when the string to search for is empty, like
-         previous-history and next-history
-       - broke common code out of rl_history_search_{for,back}ward into
-         a new function, rl_history_search_reinit
-       - rewrote rl_history_search_internal to be more like the
-         non-incremental search functions, use noninc_search_from_pos,
-         and leave the last history line found in the current line buffer
-         if the search fails
-       - new function, make_history_line_current, takes care of making
-         the current line buffer a copy of the history entry passed as an
-         argument; used by rl_history_search_internal and noninc_dosearch
-
-subst.c
-       - make ${!prefix@} be the same as ${!prefix*} for (undocumented)
-         ksh93 compatibility
-
-                                  4/30
-                                  ----
-lib/readline/doc/rltech.texinfo
-       - added note about including <readline/readline.h>, and that <stdio.h>
-         should be included before readline.h
-
-lib/readline/doc/hstech.texinfo
-       - added note about including <readline/history.h>
-
-lib/readline/doc/manvers.texinfo
-       - updated version to 4.1
-
-lib/readline/{bind,complete,display,isearch,nls,parens,readline,signals,tilde,
-histexpand}.c
-       - added prototypes with __P((...)) for forward static function
-         declarations
-
-lib/readline/display.c
-       - broke the code that initializes VISIBLE_LINE and INVISIBLE_LINE out
-         of rl_redisplay into a new function, init_line_structures, which
-         takes an argument giving the minimum number of characters that the
-         line must hold 
-       - new function for use by applications that want to display the
-         initial prompt themselves rather than having the first call to
-         readline do it:  rl_on_new_line_with_prompt (modified from code in
-         the CLISP distribution)
-
-lib/readline/readline.c
-       - new external variable, rl_already_prompted, to let readline know
-         that the prompt string has already been displayed on the screen
-         before the first call to readline
-       - test rl_already_prompted before displaying the prompt in
-         readline_internal_setup
-       - if rl_already_prompted is non-zero, readline_internal_setup calls
-         rl_on_new_line_with_prompt instead of rl_on_new_line
-
-lib/readline/readline.h
-       - extern declaration for rl_on_new_line_with_prompt
-       - extern declaration for rl_already_prompted
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_on_new_line_with_prompt and rl_already_prompted
-
-builtins/read.def
-       - new -s option (silent mode).  Input from a terminal is not echoed
-
-doc/{bash.1,bashref.texi}
-       - documented new `-s' option to read builtin
-
-                                   5/3
-                                   ---
-lib/readline/vi_mode.c
-       - replaced references to rl_getc with (*rl_getc_function)
-
-[bash-2.04-devel frozen]
-
-                                   5/5
-                                   ---
-subst.c
-       - make sure that verify_substring_values always passes malloc'd
-         memory to maybe_expand_string as the string to be expanded,
-         since it gets freed on errors
-
-support/shobj-conf
-       - don't need -R option for shared libraries on Solaris
-       - new stanza for OSF/1 machines with gcc
-
-lib/readline/readline.c
-       - new variable, rl_gnu_readline_p, always 1.  Available to allow
-         readline users to test whether or not they're linking against
-         the true readline, rather than some bogus replacement (from CLISP)
-
-lib/readline/readline.h
-       - extern declaration for rl_gnu_readline_p
-
-hashlib.h, hashcmd.h
-       - added prototypes to extern function declarations
-
-pcomplete.h
-       - new file, declarations for the programmable completion stuff
-
-pcomplib.c
-       - new file, library functions for programmable completion
-
-                                   5/6
-                                   ---
-builtins/complete.def
-       - new file, interface to programmable completion management
-
-configure.in
-       - new enable argument --enable-progcomp, defines
-         PROGRAMMABLE_COMPLETION
-
-config.h.in
-       - #define for PROGRAMMABLE_COMPLETION
-
-config-bot.h
-       - if PROGRAMMABLE_COMPLETION is defined and READLINE is not,
-         #undef PROGRAMMABLE_COMPLETION
-
-pcomplete.c
-       - new file, placeholder for programmable completion generators and
-         associated functions
-
-Makefile.in, builtins/Makefile.in
-       - changes to add pcomplete.c, builtins/complete.def
-
-                                   5/7
-                                   ---
-subst.c
-       - new function, #ifdef READLINE, skip_to_delim (s, i, delims).
-         Starting at s[i], return the index of the first character in s
-         that is contained in delims.  Understands shell quoting.
-       - added two arguments to list_string_with_quotes: an index to
-         watch for, and a pointer to int to return the index into the
-         created word list of the word containing the sentinel.  Now
-         compiled in all the time.  The returned index starts at 1.
-
-subst.h
-       - extern declarations for char_is_quoted, unclosed_pair, and
-         skip_to_delim
-       - changed extern declaration for list_string_with_quotes, moved
-         it out of the #ifdef ARRAY_VARS section
-
-bashline.c
-       - removed extern declarations for char_is_quoted and unclosed_pair
-
-variables.c
-       - new function, SHELL_VAR **all_exported_variables()
-       = new function, SHELL_VAR **all_array_variables(), #ifdef ARRAY_VARS
-
-variables.h
-       - extern declaration for all_exported_variables, all_array_variables
-
-lib/sh/strpbrk.c
-       - replacement if we don't have strpbrk(3)
-
-configure.in, config.h.in
-       - check for strpbrk(3), define HAVE_STRPBRK if found
-
-builtins/shopt.def
-       - new function, char **get_shopt_options (), returns an array of
-         shopt option names
-
-builtins/set.def
-       - new function, char **get_minus_o_opts (), returns an array of
-         `set -o' option names
-
-builtins/common.h
-       - extern declarations for get_shopt_options, get_minus_o_opts
-
-                                  5/10
-                                  ----
-pathexp.c
-       - make the POSIX_GLOB_LIBRARY code implement the GLOBIGNORE stuff
-
-                                  5/11
-                                  ----
-array.c
-       - new convenience function, char **array_to_argv (ARRAY *),
-         converts an array to a list of string values
-
-array.h
-       - extern declaration for array_to_argv
-
-execute_cmd.c
-       - new convenience function, int execute_shell_function (SHELL_VAR *,
-         WORD_LIST *)
-
-execute_cmd.h
-       - extern declaration for execute_shell_function
-
-builtins/evalstring.c
-       - make parse_and_execute unwind_protect current_prompt_string
-         if the shell is interactive
-
-                                  5/12
-                                  ----
-variables.c
-       - moved bind_int_variable from expr.c to here; it now returns a
-         SHELL_VAR *, like the other variable binding functions
-
-variables.h
-       - extern declaration for bind_int_variable
-
-                                  5/14
-                                  ----
-bashline.c, parse.y, general.c, make_cmd.c, subst.c, braces.c, execute_cmd.c
-       - replaced some common code sequences with calls to substring()
-
-lib/readline/doc/rltech.texinfo
-       - fixed small typo in description of rl_completion_entry_function
-
-                                  5/18
-                                  ----
-stringlib.c
-       - new function, strcreplace(char *string, int c, char *text, int do_glob)
-         replaces all occurrences of C in STRING with TEXT.  Backslash may
-         be used to quote C.  If DO_GLOB is non-zero, the replacement TEXT
-         is quoted to protect globbing characters.
-
-externs.h
-       - extern declaration for strcreplace
-
-bashhist.c
-       - use strcreplace in expand_histignore_pattern
-
-pcomplete.c
-       - finished initial implementation of programmable completion
-
-alias.c
-       - code to set the aliases itemlist to dirty when an alias is added
-         or removed, if PROGRAMMABLE_COMPLETION is defined
-
-variables.c
-       - code to set the functions itemlist to dirty when a shell function
-         is added or removed, if PROGRAMMABLE_COMPLETION is defined
-
-builtins/enable.def
-       - code to set the builtins itemlist to dirty when a shell builtin
-         is added or removed, if PROGRAMMABLE_COMPLETION is defined
-       - code to set the enabled and disabled itemlists to dirty when a
-         builtin is enabled or disabled, if PROGRAMMABLE_COMPLETION is
-         defined
-
-builtins/shopt.def
-       - new shell option, `progcomp', on if programmable_completion_enabled
-         (from pcomplete.c) is non-zero
-
-doc/{bash.1,bashref.texi}
-       - note that `${' is not eligible for brace expansion to avoid
-         conflicts with parameter expansion
-
-                                  5/19
-                                  ----
-builtins/complete.def
-       - added a new `compgen' builtin for use by completion functions
-
-                                  5/21
-                                  ----
-bashline.c
-       - new function, void clear_hostname_list(void), to delete all the
-         entries in the hostname completion list
-
-bashline.h
-       - extern declaration for clear_hostname_list
-
-variables.c
-       - changed sv_hostfile to clear the hostname list if $HOSTFILE is
-         unset
-
-doc/{bash.1,bashref.texi}
-       - documented new behavior of HOSTFILE when it's unset
-       - added some awkwardly-worded text to make it clear that an
-         interactive shell cannot be started with non-option arguments
-         or with the -c option
-
-shell.c
-       - restored NON_INTERACTIVE_LOGIN_SHELLS test, so that if it is
-         defined, shells with argv[0][0] == '-' and not in posix mode
-         run the startup files even if non-interactive
-
-config-top.h
-       - added commented-out #define for NON_INTERACTIVE_LOGIN_SHELLS
-
-                                  5/24
-                                  ----
-subst.c
-       - make sure the characters in IFS are cast to unsigned before being
-         indexed in ifscmap (expand_word_internal)
-
-                                  5/25
-                                  ----
-parse.y
-       - change grammar rule for arithmetic for expressions to handle a
-         list_terminator after the `))' instead of requiring a newline_list
-
-subst.c
-       - fix so that variable indirection can reference the shell's special
-         variables (like $0...$9, $$, $#, etc.)
-
-pcomplete.c
-       - changed gen_wordlist_matches to use split_at_delims to split the
-         string at $IFS first, then expand each individual word
-
-                                  5/27
-                                  ----
-lib/readline/histfile.c
-       - change things so that O_BINARY mode is used when reading and writing
-         the history file on cygwin32 as well as OS/2 (__EMX__)
-
-parse.y
-       - add calls to push_delimiter and pop_delimiter around the call
-         to parse_matched_pair when parsing $'...' and $"..." so the
-         history entry is added correctly
-
-                                  5/28
-                                  ----
-doc/{bash.1,bashref.texi}, lib/readline/doc/rluser.texinfo
-       - documented new programmable completion facilities
-
-doc/bashref.texi
-       - documented new configure `--enable-progcomp' option
-
-                                   6/1
-                                   ---
-variables.c
-       - if make_local_variable is being asked to make a local shadow
-         variable of a read-only variable, print an error message and
-         return NULL
-       - if make_local_variable returns NULL to make_local_array_variable,
-         just return it
-
-builtins/declare.def
-       - if we're making local variables, and make_local_array_variable or
-         make_local_variable returns NULL, just flag an error and go on
-
-                                   6/2
-                                   ---
-Makefile.in
-       - changed release status to `alpha1'
-
-[bash-2.04-alpha1 frozen]
-
-                                  6/18
-                                  ----
-bashline.c
-       - fixed find_cmd_start so that it doesn't spin-loop on commands with
-         a command separator like `;' or `&'.  Problem was not incrementing
-         `os' past the delimiter found
-
-                                  6/21
-                                  ----
-variables.c
-       - cosmetic change: introduced two macros to encapsulate initialization
-         of dynamic variables
-
-                                  6/23
-                                  ----
-pcomplib.c
-       - new function: num_progcomps(void), returns the number of entries in
-         the programmable completions hash table
-
-pcomplete.h
-       - extern declaration for num_progcomps
-
-bashline.c
-       - make sure some programmable completions have been defined before
-         diving into the programmable completion code
-
-shell.c
-       - in open_shell_script, move the fd opened to the script to a high
-         one with move_to_high_fd in all cases -- the buffered input code
-         still has problems if fd == 0 and later on fd 0 is closed or
-         redirected (cf. input.c:check_bash_input())
-
-builtins/printf.def
-       - getlong() now calls strtol directly with a third argument of 0 so
-         it can handle 0x (hex) and 0 (octal) prefixes, which legal_number
-         does not -- this has implications for arguments to %d that begin
-         with `0'
-
-lib/sh/getenv.c
-       - make sure that the variable found in the temporary environment has
-         a non-null value before calling savestring() on it
-
-subst.c
-       - make sure split_at_delims returns 0 in *nwp and *cwp if handed a
-         null or empty string
-
-pcomplete.c
-       - make sure build_arg_list handles lwords == 0, as it will be if an
-         empty command line is handed to the programmable completion code
-         (like compgen -C xyz)
-
-execute_cmd.c
-       - make sure execute_shell_function passes a non-null bitmap of fds to
-         close to execute_function, allocating and deallocating it locally
-
-sig.c
-       - don't mess with SIGPROF in initialize_terminating_signals
-
-jobs.c, nojobs.c
-       - if the user has requested it with checkwinsize, check for a new
-         window size after a job exits due to a signal as well as being
-         stopped
-
-lib/readline/kill.c
-       - changed rl_kill_region to set the point to the beginning of the
-         region after the kill is performed
-
-                                  6/24
-                                  ----
-configure.in
-       - make sure ranges ([1-9]*) are protected with [...] for m4 quoting
-
-variables.c
-       - make sure that bind_variable_value honors `set -a' and that it
-         marks the environment for recreation if necessary
-
-                                  6/25
-                                  ----
-lib/readline/complete.c
-       - if we're completing at the end of the line, find_completion_word
-         shouldn't test whether the character is a special word break
-         char and (possibly) advance rl_point past the end of the buffer
-
-parse.y
-       - change mk_msgstr to write embedded newlines as `\n"<NL>"', as the
-         PO file format apparently requires
-
-                                  6/28
-                                  ----
-lib/readline/display.c
-       - code to manage the growth of the inv_lbreaks and vis_lbreaks arrays
-         beyond 256, since there are pathalogical command lines that can
-         have more than 256 line breaks for redisplay
-
-                                  6/30
-                                  ----
-stringlib.c
-       - include pathexp.h for extern declaration of quote_globbing_chars
-
-variables.h
-       - change CACHE_EXPORTSTR to savestring() the value and not set the
-         att_importstr flag
-
-                                   7/6
-                                   ---
-support/bashbug.sh
-       - bashbug now accepts --help and --version options
-
-bashline.c
-       - change bash_quote_filename to use single quotes if the user
-         does not specify an opening quote character and the filename being
-         completed contains newlines
-
-                                   7/8
-                                   ---
-configure.in, aclocal.m4, config.h.in
-       - BASH_TYPE_INT32_T --> BASH_TYPE_BITS32_T; int32_t --> bits32_t
-       - BASH_TYPE_U_INT32_T --> BASH_TYPE_U_BITS32_T; u_int32_t --> u_bits32_t
-
-lib/malloc/{malloc,gmalloc}.c, lib/sh/inet_aton.c
-       - int32_t --> bits32_t; u_int32_t --> u_bits32_t
-
-aclocal.m4
-       - new tests: BASH_TYPE_BITS16_T, BASH_TYPE_U_BITS16_T
-
-configure.in
-       - add check for sizeof short, sizeof char
-       - call BASH_TYPE_BITS16_T, BASH_TYPE_U_BITS16_T
-
-config.h.in
-       - new #defines for bits16_t, u_bits16_t
-
-lib/malloc/malloc.c
-       - use u_bits16_t for type of mi_magic2
-
-
-                                  7/16
-                                  ----
-lib/readline/display.c
-       - new private library function, _rl_strip_prompt, to remove instances
-         of RL_PROMPT_{START,END}_IGNORE from the passed prompt string
-
-lib/readline/rlprivate.h
-       - extern declaration for _rl_strip_prompt
-
-lib/readline/readline.c
-       - call _rl_strip_prompt before outputting the prompt if we're not
-         doing any echoing of input chars (readline_echoing_p == 0)
-
-Makefile.in
-       - tentative change to rule for parser-built: use $< instead of
-         `y.tab.h' in recipe
-
-                                  7/19
-                                  ----
-support/config.{guess,sub}
-       - add code to handle all versions of Mac OS (e.g., Mac OS X)
-
-                                  7/26
-                                  ----
-lib/readline/bind.c
-       - on cygwin32, treat \r\n as a line terminator when reading the
-         inputrc file
-
-                                  7/29
-                                  ----
-lib/sh/netopen.c
-       - fixed problem in _getaddr with copying the address returned from
-         gethostbyname to the `struct in_addr *' argument -- hostnames
-         now work in /dev/(tcp|udp)/host/port
-
-                                   8/2
-                                   ---
-configure.in
-       - on Apple Rhapsody systems, set LOCAL_CFLAGS to -DRHAPSODY
-
-variables.h
-       - changes from Apple for building fat binaries on Rhapsody,
-         setting HOSTYPE, OSTYPE, VENDOR, and MACHTYPE
-
-lib/readline/terminal.c
-       - some work on the `dumb terminal' setup code in _rl_init_terminal_io
-         to make sure it's complete for use by the redisplay code and some
-         stuff in {readline,complete}.c
-
-lib/readline/display.c
-       - new function, _rl_current_display_line, returns the number of
-         lines down from the first `screen line' of the current readline
-         line the cursor is
-
-lib/readline/readline.c
-       - make rl_refresh_line call _rl_current_display_line
-
-lib/readline/rlprivate.h
-       - extern declaration for _rl_current_display_line
-
-                                   8/3
-                                   ---
-doc/bashref.texi
-       - reorganized slightly:
-               o a new shell builtins chapter
-               o a new shell variables chapter
-               o a new special builtins section
-               o bourne shell features chapter removed
-               o alias builtins moved to the bash builtins section
-               o bourne shell differences moved to appendix
-               o order of readline and history chapters swapped
-               o indices are now unnumbered appendices
-               o some text cleaned up and some explanatory text added
-
-lib/readline/terminal.c
-       - if a calling application is using a custom redisplay function,
-         don't call tgetent to get the terminal attributes, since those
-         are used only by the redisplay code.  Still get the window
-         size, though
-
-lib/glob/fnmatch.c
-       - range comparisons in bracket expressions no longer use strcoll(3),
-         since in some locales (de, for example), [A-Z] matches all
-         characters
-
-parse.y, print_cmd.c
-       - some changes to make sure the shell compiles when
-         DPAREN_ARITHMETIC is not defined but ARITH_FOR_COMMAND is
-
-                                   8/5
-                                   ---
-redir.c
-       - in the here document code in do_redirection_internal, check
-         that the file descriptor returned by here_document_to_fd is not
-         the same as a file descriptor specified as the redirector
-         before closing it
-
-                                   8/6
-                                   ---
-parse.y
-       - make sure the pipline rule for `timespec BANG pipeline' sets the
-         CMD_INVERT_RETURN flag for the pipeline command
-
-builtins/wait.def
-       - use setjmp with a special jump buffer to take longjmps in the
-         case that a SIGINT is received while waiting for jobs or processes
-         it makes wait return with a status > 128, as POSIX.2 specifies
-
-{jobs,nojobs}.c
-       - changed wait_sigint_handler to longjmp to wait_intr_buf if it's
-         executing the wait builtin and SIGINT is trapped.  It calls
-         trap_handler to make sure a pending trap for SIGINT is set also,
-         so the trap is taken when the wait builtin returns
-
-                                   8/9
-                                   ---
-jobs.c
-       - save and restore the value of errno in sigchld_handler
-
-trap.c
-       - save and restore the value of errno in trap_handler
-
-                                  8/10
-                                  ----
-Makefile.in
-       - changed release status to beta1
-
-                                  8/13
-                                  ----
-include/posixtime.h
-       - new file to encapsulate the <time.h> and <sys/time.h> mess
-
-Makefile.in
-       - add posixtime.h to list of include files in BASHINCFILES
-       - update dependencies for general.o, execute_cmd.o
-
-general.c, execute_cmd.c, builtins/times.def
-       - include posixtime.h instead of <time.h>, <sys/time.h>
-
-general.c
-       - protect inclusion of <sys/times.h> with HAVE_SYS_TIMES_H check
-
-builtins/Makefile.in
-       - update dependencies for times.o
-
-                                  8/16
-                                  ----
-lib/sh/timeval.c
-       - moved functions dealing with struct timevals here from general.c
-         and execute_cmd.c
-
-lib/sh/clock.c
-       - moved functions dealing with clock_ts here from general.c
-         (print_time_in_hz renamed to print_clock_t)
-
-externs.h
-       - moved extern declarations for timeval_to_secs and print_timeval
-         here from general.h
-       - moved extern declarations for clock_t_to_secs and print_clock_t
-         here from general.h
-
-builtins/times.def
-       - calls to print_time_in_hz changed to print_clock_t
-
-Makefile.in
-       - added references for lib/sh/timeval.c and lib/sh/clock.c
-
-lib/sh/Makefile.in
-       - clock.o and timeval.o are now included in libsh.a
-
-                                  8/23
-                                  ----
-execute_cmd.c
-       - make sure last_command_exit_value is updated before running a
-         DEBUG trap in the cm_simple case of execute_command_internal
-
-lib/readline/display.c
-       - new function, static void redraw_prompt (char *), used to
-         redraw the last line of a multiline prompt that possibly
-         contains terminal escape sequences
-       - call redraw_prompt from _rl_redisplay_after_sigwinch
-
-                                  8/24
-                                  ----
-lib/readline/bind.c
-       - new struct with names of string-valued readline variables and
-         handler functions to call when the variable is set
-       - changed rl_variable_bind to use functions to find boolean vars
-         and string vars in their respective lists
-       - new function, bool_to_int, to translate a boolean value that may
-         appear as an argument to `set <boolean-var-name>' to 1 or 0
-       - new function, hack_special_boolean_var, called if the element in
-         the boolean_vars struct has the V_SPECIAL flag set, to provide
-         any necessary other action when a boolean variable is set
-       - new functions to be called when each string variable is set;
-         called by rl_variable_bind
-
-execute_cmd.c
-       - do_piping no longer sets pipes to O_TEXT mode if __CYGWIN32__
-         is defined
-
-                                  8/25
-                                  ----
-subst.c
-       - parameter_brace_patsub now mallocs a local copy of `patsub', because
-         if it starts with a `/' we increment it, and functions down the call
-         chain will free that on an error (and if we pass the incremented
-         value, will try to free unallocated memory)
-       - pos_params now short-circuits and returns a null string immediately
-         if start == end, meaning we want 0 positional parameters
-
-                                  8/26
-                                  ----
-subst.c
-       - fixed pat_subst to correctly handle a null replacement string with
-         a null pattern string prefixed with `%' or `#'
-
-                                   9/3
-                                   ---
-variables.c
-       - don't import shell functions from the environment if the shell was
-         started with -n
-
-                                   9/8
-                                   ---
-subst.c
-       - if a command substitution is being performed inside a shell function,
-         catch `return' in command_substitute so that a return inside the
-         command substitution doesn't jump back to execute_function (or one
-         of its brethren) and go on with the command
-
-parse.y
-       - in history_delimiting_chars, if the first line is `for var' and
-         command_oriented_history is active, we don't want a semicolon if
-         the next token to be read is `in', but we do want one otherwise.
-         All we can do is check shell_input_line and see if the next chars
-         are `in' -- if so, we return " "
-
-                                  9/16
-                                  ----
-builtins/hash.def
-       - don't allow `hash -p /pathname/with/slashes name' if the shell
-         is restricted
-
-doc/{bash.1,bashref.texi}
-       - updated description of restricted shell mode
-
-lib/readline/display.c
-       - fixed a bug in _rl_update_final which used the inv_lbreaks array
-         to index into visible_line
-
-jobs.c
-       - waitchld() need not go through the pain of setting up an environment
-         to execute traps on SIGCHLD if children_exited == 0
-       - waitchld returns -1 if waitpid() returns -1 with errno == ECHILD,
-         indicating that there are no unwaited-for child processes, and it
-         has not yet reaped any dead children
-       - wait_for, wait_for_single_pid return -1 if waitchld() returns -1
-       - new function, mark_all_jobs_as_dead
-       - wait_for_background_pids calls mark_all_jobs_as_dead if
-         wait_for_single_pid returns -1 with errno == ECHILD, since there are
-         no unwaited-for child processes
-
-subst.c
-       - tentative change: subshells started for command substitution no
-         longer unconditionally disable job control
-
-                                  9/17
-                                  ----
-parse.y
-       - new function: save_token_state().  Saves the value of last_read_token
-         and the two previous tokens in an allocated array and returns the
-         array
-       - new function: restore_token_state(ts).  TS is an array returned by
-         save_token_state.  last_read_token and the two previous tokens are
-         set from the values in TS
-
-trap.c
-       - run_pending_traps calls save_token_state and restore_token_state
-         around the call to parse_and_execute, which will call the parser
-         and possibly leave it in a state where reserved words will not be
-         recognized (_run_trap_internal, too)
-
-                                  9/20
-                                  ----
-support/bashbug.sh
-       - if sendmail is used as $RMAIL, pass `-i -t' as arguments so changes
-         made by the user to the recipient headers in the message are
-         honored
-
-                                  9/21
-                                  ----
-bashhist.c
-       - if histverify has been set, make sure a `:p' modifier to a history
-         expansion prints the result
-
-builtins/echo.def
-       - new extern variable, xpg_echo, set to 1 if DEFAULT_ECHO_TO_USG is
-         defined and 0 otherwise
-       - echo_builtin now sets the initial value of do_v9 from xpg_echo
-
-builtins/shopt.def
-       - new shopt option, `xpg_echo', turns backslash escape expansion by
-         `echo' on and off at runtime
-
-builtins/{bash.1,bashref.texi}
-       - documented new `xpg_echo' shell option
-
-tests/{builtins.tests,builtins2.sub,shopt.tests}
-       - changes for new `xpg_echo' shell option
-
-configure.in
-       - changes for FreeBSD-3.x ELF to add `-rdynamic' to LOCAL_LDFLAGS.
-         This allows dynamic loading of builtins
-
-support/shobj-conf
-       - changes to handle FreeBSD-3.x elf or a.out object file formats
-
-                                  9/23
-                                  ----
-[bash-2.04-beta1 released]
-
-                                  9/24
-                                  ----
-jobs.c
-       - wait_for returns -1 only if the shell is currently executing the
-         `wait' builtin, since that's the only thing that cares
-
-execute_cmd.c
-       - moved cases of close_fd_bitmap to before calls to do_piping to
-         handle some pathological cases
-
-                                  9/29
-                                  ----
-execute_cmd.c
-       - save the command line in execute_simple_command before making the
-         export environment, since maybe_make_export_env clobbers
-         the_printed_command if there are exported functions
-
-                                  9/30
-                                  ----
-configure.in,config.h.in
-       - check explicitly for setvbuf; define HAVE_SETVBUF if found
-
-configure.in
-       - change opt_gnu_malloc to opt_bash_malloc, since the bash malloc
-         is not really the gnu malloc anymore
-       - new argument, --with-bash-malloc, identical to --with-gnu-malloc
-       - AC_DEFINE(USING_BASH_MALLOC) if opt_bash_malloc is enabled
-
-config.h.in
-       - new #define for USING_BASH_MALLOC
-
-doc/bashref.texi
-       - updated installation section to add --with-bash-malloc and
-         change description of --with-gnu-malloc
-
-lib/sh/setlinebuf.c
-       - change name of function to sh_setlinebuf, just returns 0 if
-         HAVE_SETVBUF and HAVE_SETLINEBUF are undefined
-       - prefer setvbuf to setlinebuf if we have both
-       - if we're using setvbuf, use a local buffer for stdin and stdout
-         local buffer is BUFSIZ unless we're using the bash malloc
-         (USING_BASH_MALLOC is defined), in which case it's 1008 (which
-         the bash malloc rounds up to 1024)
-
-                                  10/4
-                                  ----
-input.c
-       - if USING_BASH_MALLOC is defined, set the max buffer size to 8176,
-         which the bash malloc rounds up to 8192
-
-                                  10/5
-                                  ----
-pcomplete.c
-       - new function, pcomp_filename_completion_function, a wrapper for
-         filename_completion_function that dequotes the filename first
-
-bashline.c
-       - changed bash_directory_completion_matches to dequote the filename
-         before passing it (indirectly) to filename_completion_function
-
-execute_cmd.c
-       - change execute_command to defer calling unlink_fifo_list until any
-         shell function has finished executing (variable_context == 0)
-
-configure.in
-       - added AC_CYGWIN, AC_MINGW32, AC_EXEEXT
-
-                                  10/8
-                                  ----
-subst.c
-       - expand_word_internal(): changes some things to avoid small (2 or 3
-         byte) calls to xmalloc -- added a label and some gotos (BEWARE)
-       - changed make_dev_fd_filename so it doesn't call sprintf anymore
-
-                                  10/27
-                                  -----
-execute_cmd.c
-       - make execute_select_command handle the effects of the `continue'
-         builtin correctly
-
-                                  11/5
-                                  ----
-Makefile.in
-       - RELSTATUS changed to `beta2'
-
-                                  11/8
-                                  ----
-[bash-2.04-beta2 released]
-
-                                  11/9
-                                  ----
-shell.c
-       - make run_startup_files check for ssh2 as well as ssh1
-
-                                  11/19
-                                  -----
-parse.y
-       - make sure parsing conditional commands isn't confused by unexpected
-         tokens (like `[[)]]')
-
-builtins/common.c
-       - fix get_job_spec to return NO_JOB for numeric job specs that are
-         beyond the size of the jobs table
-
-builtins/type.def
-       - change describe_command to report `not found' if a path search
-         returns the same string as the command name and the command name
-         does not match an executable file.  This has implications for
-         `type' and `command -[vV]'.
-       - if a command is not found in $PATH, but an executable file with the
-         name supplied exists in the current directory, make the command
-         into a full pathname for the `command' builtin.  This has
-         implications for `type' and `command -[vV]'
-
-subst.c
-       - new function, expand_prompt_string, expands prompt string and
-         returns the string passed if an error occurs
-
-subst.h
-       - extern declaration for expand_prompt_string
-
-parse.y
-       - decode_prompt_string calls expand_prompt_string instead of
-         expand_string_unsplit
-
-                                  11/22
-                                  -----
-builtins/echo.def
-       - return EXECUTION_FAILURE if ferror(stdout) is true
-
-                                  11/23
-                                  -----
-locale.c
-       - if LC_ALL is unset, call setlocale(LC_ALL, lc_all), because lc_all
-         holds the default locale
-
-                                  11/29
-                                  -----
-lib/readline/shell.c
-       - define NULL as 0 if it's not defined
-       - change single_quote to allocate 4 characters in new string for
-         each character in the old one (like builtins/common.c:single_quote)
-
-locale.c
-       - when a locale variable (LC_*) is unset, pass "" to setlocale()
-         to get the default locale set, since value is NULL
-
-lib/sh/makepath.c
-       - new function, sh_makepath(char *path, char *dir, int flags)
-
-Makefile.in
-       - changed version to beta3
-
-builtins/type.def
-       - changed describe_command to use sh_makepath()
-
-builtins/cd.def
-       - removed private declaration of mkpath(), changed to use sh_makepath
-
-general.c
-       - changed make_absolute to use sh_makepath
-       - changed full_pathname to use sh_makepath
-
-findcmd.c
-       - removed private definition of make_full_pathname, changed to use
-         sh_makepath
-
-doc/{bashref.texi,bash.1}
-       - added text to description of `getopts' to make it clear that getopts
-         may be used to parse option characters other than letters, and
-         that `:' and `?' may not be used as option characters
-
-eval.c
-       - when processing a jump_to_top_level(EXITPROG), make sure the shell
-         doesn't think it's still in a function by setting variable_context
-         to 0
-
-doc/rbash.1
-       - a skeletal man page for rbash, adapted from debian
-
-support/bashbug.sh
-       - try to find a default editor if EDITOR is unset, rather than blindly
-         using `emacs'
-
-                                  11/30
-                                  -----
-support/config.{guess,sub}
-       - many changes from the latest `automake' distribution, from the
-         Debian folks
-
-                                  12/2
-                                  ----
-lib/readline/keymaps.h, lib/tilde/tilde.h
-       - added support for C++ compilation (`extern "C" {...}')
-
-                                  12/3
-                                  ----
-subst.c
-       - in process_substitute, make sure the child resets the O_NONBLOCK
-         flag on the file descriptor opened for read to a named pipe
-
-jobs.c
-       - new function, raw_job_exit_status, returns exit status of last job
-         in pipeline
-       - change job_exit_status to call raw_job_exit_status and pass the
-         result to process_exit_status
-       - in notify_of_job_status, get termination status from call to
-         raw_job_exit_status, rather than the first job in the pipeline
-         (fixes debian bug #15165)
-
-bashhist.c
-       - changed bash_history to not add shell comment lines to the history
-         file (fixes debian bug #21901).  Uses new function shell_comment(L)
-         which returns 1 if L is a shell comment line.  Doesn't handle
-         comments embedded in lines yet
-
-redir.c
-       - when running in POSIX.2 mode, bash no longer performs word splitting
-         on the expanded value of the word supplied as the filename argument
-         to a redirection operator (fixes debian bug #30460)
-
-doc/bashref.texi
-       - added new redirection stuff to POSIX Mode section (from previous fix)
-
-                                  12/6
-                                  ----
-hashlib.h
-       - removed extra semicolon at end of HASH_ENTRIES define
-
-redir.c
-       - replaced toggling of disallow_filename_globbing flag with setting
-         flags in redirection word to include W_NOGLOB if the shell is in
-         POSIX mode and not interactive when expanding the filename argument
-         to a redirection
-
-                                  12/7
-                                  ----
-builtins/common.c
-       - new function, backslash_quote_for_double_quotes(char *), quotes
-         characters special when in double quotes in the string passed as
-         an argument.
-         #ifdef PROMPT_STRING_DECODE; called by decode_prompt_string
-
-builtins/common.h
-       - extern declaration for backslash_quote_for_double_quotes
-
-parse.y
-       - call backslash_quote_for_double_quotes instead of backslash_quote
-         in decode_prompt_string
-
-                                  12/9
-                                  ----
-parse.y
-       - before expanding the \u prompt string escape sequence, make sure
-         current_user.user_name is non-null and call get_current_user_info
-         if it is
-
-                                  12/10
-                                  -----
-support/mkversion.sh
-       - changes to avoid relying on floating point output format, which
-         can be locale-specific
-
-                                  12/14
-                                  -----
-print_cmd.c
-       - changes to named_function_string (for normal function printing)
-         and print_function_def (for printing function definitions embedded
-         in other commands) to print redirections that should be attached
-         to the function as a whole after the closing brace
-
-tests/func1.sub
-       - tests for printing functions with attached redirections, called by
-         func.tests
-
-                                  12/16
-                                  -----
-lib/readline/complete.c
-       - if we're completing files in the root directory and executing the
-         visible-stats code, don't pass an empty pathname to
-         rl_directory_completion_hook, because, for bash, that will be
-         expanded to the current directory.  Just pass `/' instead.
-
-lib/tilde/tilde.c
-       - fix to tilde_expand_word for Cygwin to avoid creating pathnames
-         beginning with `//' if $HOME == `/'
-
-variables.c
-       - don't bother with the exportstr validation on cygwin systems,
-         or even using exportstr at all, since that system has weird
-         environment variables
-
-                                  12/17
-                                  -----
-configure.in
-       - new option, --enable-xpg-echo-default, new name for
-         --enable-usg-echo-default (which is still present for backwards
-         compatibility)
-
-configure.in, config.h.in, builtins/echo.def
-       - DEFAULT_ECHO_TO_USG -> DEFAULT_ECHO_TO_XPG
-
-                                  12/29
-                                  -----
-aclocal.m4
-       - changed a couple of tests to avoid creating files with known
-         names in /tmp
-
-support/rlvers.sh
-       - changed to create files in /tmp/rlvers
-
-support/mksignames.c
-       - now understands the POSIX.1b real-time signal names on systems
-         that support them
-
-                                  12/30
-                                  -----
-[bash-2.04-beta3 released]
-
-                                  12/31
-                                  -----
-redir.c
-       - try some more things to avoid race file replacements in
-         here_document_to_fd
-
-parse.y
-       - two new functions:
-               get_current_prompt_level: returns 2 if current prompt is $PS2,
-                                         1 otherwise
-               set_current_prompt_level: sets current prompt to $PS2 if arg
-                                         is 2, $PS1 otherwise
-
-copy_cmd.c
-       - make sure to copy the `line' member in copy_arith_for_command
-
-pcomplete.c
-       - free up `lwords' and `line' after evaluating any command or shell
-         function in gen_compspec_completions
-       - after filtering any matches specified by cs->filterpat in
-         gen_compspec_completions, free ret->list (the members have
-         already been copied or freed by filter_stringlist)
-
-bashline.c
-       - free what find_cmd_name returns after calling the programmable
-         completion code
-
-                                1/4/2000
-                                --------
-subst.c 
-       - make call_expand_word_internal set w->word to NULL if either
-         expand_word_error or expand_word_fatal is returned 
-
-                                   1/7
-                                   ---
-parse.y
-       - two new functions: set_current_prompt_level(int) and
-         get_current_prompt_level() to set and get the `level' of
-         current_prompt_string (1 if $PS1, 2 if $PS2)
-
-externs.h
-       - extern declarations for {get,set}_current_prompt_level
-
-builtins/evalstring.c
-       - add an unwind_protect to save and restore the current prompt
-         string pointers using {get,set}_current_prompt_level
-
-                                   1/9
-                                   ---
-Makefile.in
-       - changed release status to `beta4'
-
-                                  1/18
-                                  ----
-[bash-2.04-beta4 released]
-
-                                  1/19
-                                  ----
-configure.in
-       - moved checks for non-unix variants to beginning of tests
-
-Makefile.in, {builtins,support}/Makefile.in
-       - added some $(EXEEXT) suffixes to generated programs for non-Unix
-         systems
-
-                                  1/20
-                                  ----
-parse.y
-       - make get_current_prompt_level return 1 if current_prompt_string is
-         NULL (as it would be while sourcing startup files)
-
-support/rlvers.sh
-       - rmdir $TDIR in the exit trap
-       - move the exit trap after we successfully create $TDIR
-
-                                  1/21
-                                  ----
-subst.c
-       - several changes to split_at_delims to make non-whitespace
-         delimiters create separate fields containing those delimiters,
-         like the shell parser does with meta characters.  This allows
-         redirection operators, for example, to be treated as separate
-         words by the programmable completion code
-
-examples/complete/complete-examples
-       - added new function: _redir_op, which return true if the word
-         passed as an argument contains a redirection operator (just
-         bare-bones for now)
-       - changed set completion function to use _redir_op as an example
-
-parse.y
-       - make parse_string_to_word_list save and restore the value of
-         shell_input_line_terminator, since an assignment like
-         COMPREPLY=() inside a shell function called by the programmable
-         completion code can change shell_input_line_terminator out from
-         underneath shell_getc().  shell_getc will set the input line
-         terminator to EOF when it gets EOF from the getter function, and
-         the string getter function returns EOF at EOS.  parse_and_execute
-         tests for EOS directly and never gets EOF from shell_getc, so it
-         does not have this problem.
-
-                                  1/24
-                                  ----
-lib/readline/funmap.c
-       - #define QSFUNC like in complete.c
-       - cast _rl_qsort_string_compare to a QSFUNC * in the call to qsort
-
-lib/readline/terminal.c
-       - correct a typo in usage of the __EMX__ preprocessor define
-       - fix a reversed usage of `#if defined (__DJGPP__)' in 
-         _rl_control_keypad
-       - remove extern declarations for _rl_in_stream and _rl_out_stream
-
-lib/readline/rlprivate.h
-       - add extern declaration for _rl_in_stream, since there's already
-         one for _rl_out_stream
-
-builtins/ulimit.def
-       - if bash is using ulimit(2), make sure that getfilesize() returns
-         the value multiplied by 512 to convert it from a number of blocks
-         to a number of bytes
-
-                                  1/25
-                                  ----
-execute_cmd.c
-       - make sure execute_command_internal sets last_command_exit_value
-         correctly when inverting the return value of a (...) subshell
-         command
-
-tests/{run-invert,invert.{tests,right}}
-       - new tests for return value inversion
-
-configure.in
-       - compile without bash malloc on m68k-motorola-sysv due to a file
-         descriptor leak in closedir(3) -- the motorola implementation
-         requires that freed memory be readable so it can free the dirent
-         and then look back at it to find the file descriptor
-
-expr.c
-       - fix negative exponents in v**e to return an eval error
-
-                                   2/1
-                                   ---
-Makefile.in
-       - changed status to beta5
-
-jobs.c
-       - fixed a problem with checking the wrong process when checking to
-         see whether or not we need to reset the tty state.  The old code
-         checked the first process in a pipeline; the new code checks all
-         processes in the pipeline to see whether any of them exited due
-         to a signal or was stopped.  If none were signalled or stopped,
-         the code uses the exit status of the last process in the job's
-         pipeline
-
-                                   2/4
-                                   ---
-[bash-2.04-beta5 released]
-
-eval.c
-       - call set_current_prompt_level instead of setting prompt_string_pointer
-         directly
-
-                                  2/10
-                                  ----
-[bash-2.04-beta5 re-released to net]
-
-                                  2/11
-                                  ----
-sig.c
-       - make sure SIGCHLD is defined in initialize_shell_signals before
-         trying to use it in sigdelset() (DJGPP fix)
-
-                                  2/14
-                                  ----
-lib/sh/shtty.c
-       - include <unistd.h> before <shtty.h>
-       - separate tests for ONLCR, ONOCR, ONLRET to cope with systems like
-         DJGPP that don't implement the full POSIX termios option set
-
-builtins/psize.sh
-       - set TMPDIR only if it's not already set
-
-lib/glob/glob.c
-       - if a system doesn't define _POSIX_SOURCE but has a `struct dirent'
-         without a d_ino member, define REAL_DIR_ENTRY to 1 so all entries
-         are read
-
-configure.in
-       - check for <arpa/inet.h> header file
-
-config.h.in
-       - add HAVE_ARPA_INET_H define
-
-lib/sh/inet_aton.c
-       - don't compile unless HAVE_NETWORK, HAVE_NETINET_IN_H, and
-         HAVE_ARPA_INET_H are all defined in config.h or config-bot.h
-
-                                  2/16
-                                  ----
-subst.c
-       - if we have a construct like "${@:-}", we need to note that we're
-         not using whatever is in $@ (we're using the rhs), so the special
-         double-quoting $@ rules do not apply
-
-                                  2/21
-                                  ----
-lib/readline/signals.c
-       - declare SigHandler before using it on non-POSIX systems
-
-lib/sh/{zread,zwrite}.c
-       - include <sys/types.h> unconditionally
-
-configure.in
-       - m68k-motorola-sysv should be m68k-sysv in the section that sets
-         opt_bash_malloc to no for certain systems
-
-builtins/complete.def
-       - fixed a typo (stoppped) when printing out completion actions
-
-                                  2/22
-                                  ----
-lib/sh/netopen.c
-       - include <arpa/inet.h> if it's present
-
-aclocal.m4
-       - new macro, BASH_FUNC_INET_ATON, checks for inet_aton(3) including
-         <netinet/in.h> and <arpa/inet.h>, which some systems require to
-         resolve the function
-
-configure.in
-       - if autoconf can't fund inet_aton on its own, try BASH_FUNC_INET_ATON
-
-pcomplete.c
-       - fixed a memory leak in gen_wordlist_completions
-       - changed gen_wordlist_completions to do prefix-matching against the
-         word being completed
-
-doc/bash.1, lib/readline/doc/rluser.texinfo
-       - documented the change in behavior of the -W option to complete and
-         compgen
-
-builtins/umask.def
-       - if parse_symbolic_mode() returns -1, symbolic_umask needs to return
-         -1 as well, otherwise the umask will be changed inappropriately
-
-input.c
-       - always compile in getc_with_restart and ungetc_with_restart
-
-parse.y
-       - yy_stream_get and yy_stream_unget now call getc_with_restart and
-         ungetc_with_restart, respectively, to avoid problems with some
-         systems not restarting the read(2) when signals that bash handles
-         are received during the read (since bash installs its signal
-         handlers without the SA_RESTART flag)
-
-lib/readline/complete.c
-       - don't default rl_completion_case_fold to 1 if __DJGPP__ is defined
-
-                                  2/25
-                                  ----
-subst.c
-       - renamed `varlist' to `subst_assign_varlist' and made it global
-
-jobs.c
-       - when running a SIGCHLD trap, need to unwind-protect
-         subst_assign_varlist and set it to NULL before running the trap
-         command (fix from ericw@bestnet.org and doogie@debian.org)
-
-                                  2/28
-                                  ----
-lib/readline/doc/rltech.texinfo
-       - document rl_funmap_names()
-
-                                  2/29
-                                  ----
-subst.c
-       - change split_at_delims to set the current word more appropriately
-         when the cursor is between two words.  Should probably change this
-         again to set the current word like this only when the cursor is at
-         whitespace or another delim just before the word start
-
-                                   3/1
-                                   ---
-lib/sh/shtty.c
-       - more checks for flag bits being defined before using them
-
-                                   3/7
-                                   ---
-variables.h
-       - fix typo in COPY_EXPORTSTR definition 
-
-                                  3/14
-                                  ----
-subst.c
-       - changed split_at_delims so that if the cursor is at whitespace
-         between words, and we're interested in the current word (cwp != NULL),
-         make a new empty word and set the cwp to that word
-
-locale.c
-       - support for setting LC_NUMERIC locale category based on value of
-         LC_NUMERIC shell variable
-
-variables.c
-       - LC_NUMERIC is now treated specially
-
-doc/{bash.1,bashref.texi}
-       - LC_NUMERIC updates
-
-                                  3/15
-                                  ----
-pcomplete.c
-       - fix to avoid freeing memory twice
-
-                                  3/17
-                                  ----
-[bash-2.04 released]
-
-                                  3/20
-                                  ----
-doc/bash.1
-       - minor typo fix to description of `xpg_echo' option in `echo'
-         description
-
-                                  3/23
-                                  ----
-parse.y
-       - minor fix to parse_string_to_word_list to allow newlines in
-         compound array assignments
-
-                                  3/27
-                                  ----
-lib/readline/rltty.c
-       - fixed a missing-semicolon syntax error in the old 4.3 BSD tty code
-
-support/mksignames.c
-       - if SIGRTMAX is >= 2*NSIG, just #undef SIGRTMIN and SIGRTMAX.  This
-         is an issue on AIX 4.3 (only, so far) -- checked by configure, which
-         #defines UNUSABLE_RT_SIGNALS if this is the case
-
-aclocal.m4
-       - new macro, BASH_CHECK_RTSIGS, checks whether or not real-time
-         signals are defined with large values and defines UNUSABLE_RT_SIGNALS
-         if they are
-
-config.h.in
-       - place marker for UNDEF_RT_SIGNALS (initially undefined)
-
-configure.in
-       - call BASH_CHECK_RTSIGS in the `bash miscellaneous' section
-
-                                  3/29
-                                  ----
-
-subst.c
-       - fixed a problem in match_pattern_char, where `string' was checked
-         for a paren following a [?+!@], rather than `pat'
-       - the code that checks whether or not to exit after a failed
-         ${word?msg} substitution needs to check interactive_shell rather
-         than interactive to avoid exiting if such a construct appears in
-         a sourced file
-
-                                  3/31
-                                  ----
-
-bashline.c
-       - add `{' to the list of characters that need to be quoted by the
-         completion code when appearing in a filename
-
-                                   4/1
-                                   ---
-lib/glob/fnmatch.c
-       - fixed an error in brackmatch() while skipping the rest of a bracket
-         expression after a character matched.  When `c' was a backslash and
-         *p was a backslash, as in a pattern like [/\\], the old code didn't
-         take both backslashes into account and ended up skipping the `]'
-         after erroneously concluding that it was quoted.  Report and fix
-         from akim@epita.fr
-
-                                   4/3
-                                   ---
-lib/readline/rltty.c
-       - slight change to the BSD tty interface code, so that if the first
-         ioctl fails, get_tty_settings returns -1 immediately
-       - better checking of ioctl return values in BSD tty version of
-         get_tty_settings
-
-                                   4/5
-                                   ---
-doc/{bash.1,bashref.texi}
-       - documented use of LINES and COLUMNS variables
-
-                                  4/12
-                                  ----
-lib/readline/rltty.c
-       - change the SETATTR define for the termio tty driver to use
-         TCSETAW (the analog of the termios TCSADRAIN)
-
-lib/glob/fnmatch.c
-       - fix for posix-style bracket expressions ([:xxx:], [=x=]) broken
-         by fix of 4/1 for quotes in bracket expressions
-
-                                  4/26
-                                  ----
-subst.c
-       - fix to list_string and get_word_from_string to make a non-whitespace
-         IFS character preceded by IFS whitespace part of the current field
-         delimiter, not a separate delimiter that would result in a separate
-         null field when splitting.  cf POSIX.2, 3.6.5, (3)(b).  Bug reported
-         by amc@cs.berkeley.edu
-       - changed the behavior of the (currently undocumented) ${!prefix@}
-         expansion to be analogous to the expansion of $@ in other contexts
-         when double-quoted.  ksh93 seems to do this.  Bug reported by
-         Ken Pizzini <ken@halcyon.com>
-       - changed read_comsub to ignore NUL bytes in the command substitution
-         output, printing a warning message for now
-
-parse.y
-       - changed shell_getc to ignore NUL bytes in the input, printing a
-         warning message for now
-       - changed read_a_line to print a warning when a NUL byte is encountered,
-         like shell_getc does
-
-                                  5/18
-                                  ----
-subst.c
-       - make sure split_at_delims uses d2 only if it's non-null
-       - make split_at_delims skip leading newlines in the string to split,
-         if newline is a delimiter
-
-jobs.c
-       - prevent hanging processes by marking a child process as not running
-         (even if the shell thinks it is) when waitpid() returns -1/ECHILD --
-         this indicates that waitpid never returned a reasonable status
-         for that child though, which may be a symptom of another problem
-
-builtins/cd.def
-       - make `pwd' print an error message if the write fails when displaying
-         the current directory
-
-lib/readline/histexpand.c
-       - return NULL from history_find_word if history_tokenize_internal
-         returns (char **)NULL rather than attempting to dereference a
-         possibly-NULL pointer
-       - change history_tokenize_internal to set *indp to -1 before any
-         processing if indp is non-null
-
-                                  5/19
-                                  ----
-builtins/trap.def
-       - when in POSIX.2 mode and printing trap dispositions, print the
-         signal name without the leading `SIG', as POSIX.2 requires
-
-                                  5/23
-                                  ----
-lib/readline/readline.c
-       - readline_initialize_everything now assigns $TERM to rl_terminal_name
-         if the application has left it unset, and calls _rl_init_terminal_io
-         with the resultant value
-
-lib/readline/doc/rltech.texinfo
-       - updated the description of rl_terminal_name to note initialization
-
-parse.y
-       - change parse_string_to_word_list to save and restore the value of
-         current_command_line_count before calling back into the parser --
-         it will screw up history if the string extends over one line.  Bug
-         reported by Jan.Djarv@mbox200.swipnet.se
-
-                                   6/7
-                                   ---
-unwind_prot.h
-       - change unwind_protect_string to pass the address of the variable to
-         unwind_protect_var on machines where ints and char *s are not the
-         same size
-
-unwind_prot.c
-       - make sure we save the value of a variable in unwind_protect_var on
-         machines where sizeof(char *) != sizeof(int), not the contents the
-         value points to.  Fix from Andreas Schwab <schwab@suse.de>
-
-                                   6/8
-                                   ---
-configure.in
-       - auto-configure MacOS X without bash malloc (like Rhapsody)
-
-                                  6/12
-                                  ----
-configure.in
-       - replace `cygwin32' with `cygwin'
-
-builtins/evalfile.c
-       - in _evalfile, change all instances of \r to \n in the file to be
-          sourced and evaluated if __CYGWIN__ is defined
-
-input.c
-       - change \r to \n in the buffer argument to make_buffered_stream and
-          after calling zread() from b_fill_buffer if __CYGWIN__ is defined
-
-                                  6/29
-                                  ----
-lib/sh/Makefile.in
-       - add rest of dependency rules for makepath.o
-
-                                   7/3
-                                   ---
-jobs.c
-       - changed `int' to `WAIT' in a couple of places for non-POSIX
-         environments
-
-                                   7/5
-                                   ---
-locale.c
-       - try to avoid an unnecessary memory allocation in localetrans() in
-         the case that a translation for the string exists
-
-lib/readline/doc/rluserman.texinfo
-       - change the `direntry' information to make it use rluserman instead
-         of readline
-
-                                   7/6
-                                   ---
-execute_cmd.c
-       - changes to execute_in_subshell so it honors a `!' prefixing a command
-         inside a user subshell (...)
-
-support/config.{guess,sub}
-       - add cases for Apple Darwin (Mac OS X)
-
-configure.in
-       - Apple Darwin (MacOS X) uses its own malloc
-
-lib/readline/readline.h
-       - removed bogus extern declaration of savestring
-
-                                   7/7
-                                   ---
-builtins/common.c
-       - in get_working_directory, don't count on getcwd returning anything
-         useful in the buffer passed as the first argument on failure; just
-         use bash_getcwd_errstr in the error message
-
-examples/loadables/cut.c
-       - loadable version of cut(1), from the FreeBSD source tree
-
-                                  7/18
-                                  ----
-lib/readline/vi_mode.c
-       - changed two instances of (*rl_getc_function) (rl_instream) to calls
-         to rl_read_key(), which works better when using the readline
-         callback interface
-
-builtins/evalfile.c
-       - added FEVAL_CHECKBINARY flag for _evalfile; controls whether a check
-         for a binary file is performed
-       - FEVAL_CHECKBINARY is not set by source_file or maybe_execute_file,
-         which means that the startup file execution and the `.' builtin will
-         not check for binary files
-       - FEVAL_CHECKBINARY is not set by fc_execute_file, so that files
-         composed of history commands run by the `fc' builtin will not check
-         for binary files
-
-                                  7/21
-                                  ----
-shell.c
-       - added `--init-file' as a synonym for `--rcfile'
-
-                                  7/26
-                                  ----
-support/shobj-conf
-       - added commented-out stanzas for hpux 10 and hpux 11 when the HP
-         unbundled ANSI C compiler is being used
-
-                                  7/27
-                                  ----
-shell.c
-       - don't call end_job_control() from exit_shell if subshell_environment
-         is non-zero, even if the shell is interactive
-
-                                   8/1
-                                   ---
-bashhist.c
-       - change maybe_add_history to remember if we saved the first line of
-         a command and don't save the second and subsequent lines of a
-         multi-line command if we didn't save the first line
-
-configure.in, config.h.in
-       - add autoconf check for getservbyname()
-
-lib/sh/netopen.c
-       - add support for named services in /dev/(tcp|udp)/host/service
-         translation
-       - make sure _netopen sets errno to something other than 0 if something
-         goes wrong, so the redirection functions behave
-
-                                   8/3
-                                   ---
-parse.y
-       - changes to shell_getc so that history saving of blank lines in
-         multi-line commands does a better job of syntactic correctness
-
-bashline.c
-       - bind ^O to operate-and-get-next in emacs_standard_keymap explicitly,
-         rather than letting rl_add_defun do it in whatever keymap is current
-
-                                   8/4
-                                   ---
-builtins/ulimit.def
-       - removed some of the special handling of RLIM_INFINITY -- the old
-         code would let people use RLIM_INFINITY as a shorthand for setting
-         the soft limit to the hard limit.  Now, the code just passes
-         RLIM_INFINITY through if the hard limit is being set, so any kernel
-         errors will get through
-
-                                  8/10
-                                  ----
-parse.y
-       - change the grammar rule for group_command so that it's composed of
-         a compound_list instead of a list, which requires a terminator
-         This means that you can now do (legal) things like
-
-               { { echo a b c ; } }
-
-         since the second close brace will be recognized as such because a
-         reserved word is legal in that context
-
-                                  8/23
-                                  ----
-subst.c
-       - fix parameter_brace_substring to free all memory allocated by
-         get_var_and_type in the VT_ARRAYMEMBER case (returned parameter
-         `val')
-
-                                  8/30
-                                  ----
-variables.c
-       - now that we have dynamic array variables, remove the check for
-         array_p in bind_variable and let array variables with assignment
-         functions call the assignment function
-
-subst.c
-       - change cond_expand_word to perform tilde expansion (like it should
-         have done all along)
-
-lib/readline/complete.c
-       - don't allow backslash to quote anything inside a single-quoted
-         string in find_completion_word
-
-doc/{bash.1,bashref.texi}
-       - note that `set -a' will cause functions to be exported
-
-lib/readline/parens.c
-       - changed the blink timeout so it's settable by the application.  A
-         new function, int rl_set_paren_blink_timeout (int u), (still
-         undocumented) will set the timeout to U usec
-
-variables.c
-       - at startup of an interactive login shell, if the current directory
-         is $HOME, and $HOME and $PWD are not the same, set the current
-         directory (and $PWD) to $HOME
-       - break code that initializes $PWD and $OLDPWD into set_pwd function
-
-variables.h
-       - new extern declaration for set_pwd()
-
-                                   9/6
-                                   ---
-lib/readline/{readline,callback}.c
-       - allocate memory for rl_prompt instead of simply using what's passed
-         as the `prompt' argument to readline() or
-         rl_callback_handler_install().  This will allow constant strings to
-         be passed to readline(), since the prompt processing code wants to
-         write to rl_prompt
-
-lib/sh/pathcanon.c
-       - new file, does pathname canonicalization
-
-externs.h
-       - extern declarations for stuff in lib/sh/pathcanon.c
-
-general.c
-       - canonicalize_pathname now simply calls sh_canonpath()
-
-                                   9/7
-                                   ---
-pcomplete.h
-       - new member in a `struct compspec': options
-       - define some flag values for options field
-
-pcomplib.c
-       - make sure options field is allocated and copied by compspec utility
-         functions
-
-builtins/complete.def
-       - add struct for completion options.  These control the `meta-behavior'
-         of the compspec.  Initially, there are three:
-
-               default - perform bash default completion if programmable
-                         completion produces no matches
-               dirnames - perform directory name completion if programmable
-                          completion produces no matches
-               filenames - tell readline that the compspec produces filenames,
-                           so it can do things like append slashes to
-                           directory names and suppress trailing spaces
-
-       - add `-o option' to complete and compgen, setting new options field
-         in a compspec
-       - add code to display any -o options when a compspect is printed
-         with the `-p' option to complete
-
-pcomplete.c
-       - programmable_completions now passes back to the caller in the last
-         argument any options associated with the active compspec (from the
-         options field)
-       - change gen_compspec_completions to re-call gen_action_completions
-         with a CA_DIRECTORY action if the rest of the compspec actions
-         generate no matches and the COPT_DIRNAMES option is present
-
-bashline.c
-       - if a programmable completion was specified to return filenames with
-         the `-o filenames' option, set rl_filename_completion_desired to 1
-         so readline does its special filename-specific things
-       - if a compspec was defined to fall back to the readline default with
-         the `-o default' option, suppress setting the
-         rl_attempted_completion_over variable in attempt_shell_completion
-         so readline will go on and do filename completion
-
-include/ansi_stdlib.h
-       - add extern declarations for atof and strtod
-
-builtins/printf.def
-       - change getdouble() to use strtod (since we provide a version in
-         libsh if the C library doesn't have one), and change the calling
-         convention to match the other getXXX functions (take value pointer
-         as argument, return success or failure).  This makes printf handle
-         invalid floating point numbers better
-
-doc/bash.1, lib/readline/doc/rluser.texinfo
-       - documented new `-o' option to complete and compgen; described the
-         arguments and their effects
-
-lib/readline/{macro,util}.c
-       - renamed _rl_executing_macro to rl_executing_macro; made it public
-
-lib/readline/readline.h
-       - new extern declaration for rl_executing_macro
-
-lib/readline/rltech.texinfo
-       - documented rl_executing_macro
-
-                                   8/8
-                                   ---
-lib/readline/readline.c
-       - new state variable, rl_readline_state
-
-lib/readline/readline.h
-       - extern declaration for rl_readline_state
-       - define some flag bits for rl_readline_state and macros to test and
-         set them
-
-lib/readline/{readline,complete,isearch,macro,rltty,search,signals,undo,vi_mode}.c
-       - added calls to the macros that set and unset various readline states
-
-lib/readline/readline.c
-       - new private function, _rl_free_saved_history_line, to free up the
-         history entry saved in saved_line_for_history
-
-lib/readline/search.c
-       - free any saved history entry in rl_history_search_reinit(), because
-         rl_get_previous_history makes a call to maybe_save_line without
-         freeing up the saved line when it returns (so rl_get_next_history
-         can use it)
-       - fix up noninc_search_from_pos to deal with invalid history indices
-         better
-
-                                  9/12
-                                  ----
-support/shobj-conf
-       - HPUX 11.0 needs the `-fpic' flag passed to the linker as well as
-         the compiler
-
-execute_cmd.c
-       - on MS-DOS systems, let the #! checking stuff in execute_shell_script
-         treat \r as EOL (identical to \n)
-
-input.c
-       - on DJGPP systems, allow buffered_getchar to ignore \r.  Change
-         suggested by snowball3@bigfoot.com
-
-                                  9/13
-                                  ----
-lib/sh/tmpfile.c
-       - new file, with functions for creating and (hopefully safely) opening
-         temporary files for the shell
-
-externs.h
-       - extern declarations for functions in tmpfile.c
-
-variables.c
-       - new function, get_random_number, returns random values from the
-         shell's (lame) RNG to the rest of the shell
-
-variables.h
-       - new extern declaration for get_random_number()
-
-subst.c
-       - changed make_named_pipe to call sh_mktmpname instead of mktemp
-
-redir.c
-       - changed here_document_to_fd to call sh_mktmpfd instead of using
-         inline code
-
-builtins/fc.def
-       - changed fc_builtin to call sh_mktmpfp instead of using inline code
-
-builtins/common.h
-       - new extern declaration for fc_execute_file()
-
-bashline.c
-       - if RL_ISSTATE(RL_STATE_INITIALIZED) is 0 in initialize_readline,
-         call rl_initialize to bind the defaults before setting up our
-         custom shell functions and key bindings
-
-lib/readline/doc/{rluser,hsuser}.texinfo
-       - some markup changes proposed by dima@chg.ru
-
-lib/readline/rlstdc.h, lib/tilde/tilde.h
-       - to get ready for some `const' changes to the source, define const
-         as either `__const' (gcc -traditional) or nothing if __STDC__ and
-         __cplusplus are not defined
-
-lib/readline/readline.c
-       - upped the default readline version to `4.2-alpha'
-
-lib/readline/readline.[ch]
-       - readline now takes a `const char *' as an argument
-
-lib/readline/history.h
-       - read_history(), read_history_range(), write_history(),
-         append_history(), history_truncate_file() now take `const char *'
-         filename arguments
-
-lib/readline/histfile.c
-       - history_filename(), read_history(), read_history_range(),
-         write_history(), append_history(), history_truncate_file(),
-         history_do_write() now take `const char *' filename arguments
-
-lib/readline/readline.h
-       - rl_read_init_file() now takes a `const char *' filename argument
-
-lib/readline/bind.c
-       - current_readline_init_file is now a `const char *'
-       - _rl_read_init_file(), rl_read_init_file() now take `const char *'
-         filename arguments
-
-lib/tilde/tilde.c
-       - tilde_expand(), tilde_expand_word() now take a `const char *'
-         as their first argument
-
-lib/readline/chardefs.h
-       - fixed CTRL_CHAR macro to be right on systems where chars are unsigned
-         by default
-
-                                  9/14
-                                  ----
-lib/readline/doc/{rl,hs}tech.texinfo
-       - documented new `const char *' function arguments where appropriate
-
-lib/readline/vi_mode.c
-       - clamp the numeric argument in vi mode at 999999, just like in emacs
-         mode
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_readline_state and its possible bit values
-
-builtins/source.def
-       - in maybe_pop_dollar_vars, don't overwrite a shell function's
-         argument list even if the sourced script changes the positional
-         parameters
-
-lib/readline/{util.c,rlprivate.h}
-       - made _rl_strindex() and _rl_savestring() take `const char *'
-         arguments
-
-                                  9/15
-                                  ----
-subst.c
-       - renamed `doing_completion' to `no_longjmp_on_fatal_error', a more
-         accurate description of its current behavior
-
-pcomplete.[ch], externs.h, lib/sh/stringlist.c
-       - moved the stringlist code from pcomplete.c to lib/sh/stringlist.c
-       - moved the type declaration and extern function declarations from
-         pcomplete.h to externs.h
-
-stringlib.c, externs.h, lib/sh/stringvec.c
-       - moved the char array code from stringlib.c to lib/sh/stringvec.c
-
-                                  9/18
-                                  ----
-subst.c
-       - new static variable, expand_no_split_dollar_star, to ensure that
-         $* isn't `split and rejoined' when expanded via a call to
-         expand_string_unsplit or expand_word_no_split
-
-                                  9/19
-                                  ----
-subst.[ch], execute_cmd.c
-       - renamed expand_word_no_split to expand_word_unsplit
-
-copy_cmd.c
-       - in copy_word, just assign w->flags to new_word->flags rather than
-         bcopying the entire structure
-
-configure.in, config.h.in
-       - add autoconf check for pathconf(3)
-
-lib/sh/tmpfile.c
-       - test for systems with short filenames using pathconf and
-         _PC_NAME_MAX, so generated temp file names don't exceed that length
-         (only do this if the file name length is less than 32, since the
-         current code doesn't generate filenames longer than about 17 chars)
-
-                                  9/20
-                                  ----
-command.h
-       - added `W_NOSPLIT2' word flag to prepare for supporting weird $@
-         expansion on the rhs of assignment statements (inspecting the ksh93
-         behavior, it seems like nothing except $@ is split, and $@ is split
-         on $IFS and rejoined as a single string)
-
-                                  9/21
-                                  ----
-subst.c
-       - since verify_substring_values looks for arithmetic expressions
-         bounded by `:', do some ad-hoc parsing of the substring passed as
-         the argument to avoid cutting the expression off at the wrong `:'
-         (since the inclusion of conditional expressions, expressions may
-         contain a `:').  Do some paren balancing, too.
-
-                                  9/22
-                                  ----
-command.h
-       - new #define, CLOBBERING_REDIRECT, evaluates to true for any redirect
-         that will clobber a file and should be subject to `noclobber'
-
-redir.c
-       - changed redir_open to use CLOBBERING_REDIRECT instead of
-         OUTPUT_REDIRECT.  This means that <> no longer tests the value of
-         noclobber, as POSIX.2 specifies
-
-parse.y
-       - made a change to cond_term so that expressions like [[ (x) ]] are
-         parsed correctly
-
-                                  9/25
-                                  ----
-parse.y
-       - small change to grammar for arith_for_command and special_case_tokens
-         to allow `do...done' or {...} after ((...)) without an intervening
-         list_terminator (for ksh93 compatibility)
-
-builtins/printf.def
-       - `printf' now treats \E and \e the same when performing backslash
-         escape expansion for the %b format character for compatibility with
-         $'...' quoting (for ksh93 compatibility)
-
-                                  9/26
-                                  ----
-builtins/source.def
-       - new variable, source_searches_cwd, initially 1.  If non-zero, `.'
-         searches $PWD for the filename argument if it's not found in $PATH
-
-general.c
-       - changed posix_initialize to turn off source_searches_cwd if posix
-         mode is being enabled; turn it on if posix mode is being disabled
-       - changed things so interactive_comments is not turned off if posix
-         mode is disabled, since that's rarely what is desired
-
-variables.c
-       - changed uidset() to set UID and EUID only if they are not already
-         set when the shell starts up
-       - changed things to HOSTNAME is set only if it's not set when the
-         shell starts up
-
-execute_cmd.c
-       - changed execute_builtin_or_function so that if a command like
-         `command exec 4<file' is executed, the effect is as if the `command'
-         had been omitted, as POSIX.2 requires
-
-subst.c
-       - changed array_length_reference to support ${foo[X]} when foo is not
-         an array variable and X is 0, @, or * (everything else returns 0)
-         for ksh compatibility
-       - changed array_value_internal to support ${foo[@]} and ${foo[*]}
-         when foo is not an array variable (as ksh does)
-
-                                  9/27
-                                  ----
-general.h
-       - added defines for ABSPATH (absolute pathname), RELPATH (relative
-         pathname, and ROOTEDPATH (pathname rooted at /), with different
-         definitions for Unix and Cygwin
-       - added defines for DIRSEP (the directory separator in pathnames,
-         and ISDIRSEP (whether a particular character is the directory
-         separator)
-       - added PATHSEP define: takes a character and decides whether it
-         delimits a filename component of a pathname
-       - changed isletter(c) #define to just call isalpha(c)
-
-lib/sh/pathcanon.c
-       - changed to use new pathname #defines from general.h above
-
-general.c
-       - changed make_absolute, absolute_pathname to understand
-         Cygwin's idea of an absolute pathname: [[:upper:][:lower:]]:/
-       - rewrote absolute_pathname to use PATHSEP and ABSPATH
-       - changed full_pathname to use ABSPATH
-
-variables.c
-       - changed get_bash_name to use ABSPATH and RELPATH, and to handle the
-         case when $PWD is unset when it is called
-
-subst.c
-       - if compiling on cygwin, translate \r\n to \n when reading the output
-         of a command substitution in read_comsub()
-
-                                  9/28
-                                  ----
-input.c, shell.c, builtins/read.def, lib/tilde/tilde.c
-       - changed __CYGWIN32__ to __CYGWIN__
-
-lib/readline/{bind,funmap,kill}.c, lib/readline/readline.h
-       - changed __CYGWIN32__ to __CYGWIN__
-
-input.c
-       - a couple of minor changes to clean up the code
-
-parse.y
-       - changed shell_getc and shell_ungetc to implement one character of
-         lookahead/lookbehind when pushing a character back at the start
-         of an input line (the old code would have discarded it because
-         shell_input_line_index was 0)
-
-lib/readline{histsearch.c,history.h}
-       - history_search_internal, history_search, history_search_prefix,
-         history_search_pos now take const char * string arguments
-
-lib/readline/{histexpand.c,history.h}
-       - get_history_event, history_arg_extract, history_tokenize_internal,
-         history_tokenize now take const char * string arguments
-
-lib/readline/{history.c,history.h}
-       - add_history, replace_history_entry now take const char * string
-         arguments
-
-lib/readline/{bind.c,readline.h}
-       - rl_add_defun, rl_unbind_command_in_map, rl_set_key, rl_macro_bind,
-         rl_generic_bind, rl_translate_keyseq, rl_named_function,
-         rl_function_of_keyseq, rl_variable_bind, rl_get_keymap_by_name
-         now take const char * string arguments where appropriate
-       - rl_function_dumper, rl_list_funmap_names needed changes to deal
-         with rl_funmap_names returning const char **
-       - rl_readline_name is now a const char * variable
-
-lib/readline/keymaps.h
-       - duplicate definition of rl_get_keymap_by_name needs const changes
-
-lib/readline/{bind.c,rlprivate.h}
-       - _rl_bind_if_unbound takes a const char * string argument
-
-lib/readline/{funmap.c,readline.h}
-       - rl_add_funmap_entry now takes a const char * string argument
-       - rl_funmap_names now returns a const char **
-       - a FUNMAP now has a const char *name member
-
-lib/readline/{terminal.c,readline.h,rlprivate.h}
-       - _rl_init_terminal_io, rl_get_termcap, rl_reset_terminal,
-         _rl_output_some_chars now take const char * string arguments
-
-lib/readline/{readline.[ch],rlprivate.h}
-       - rl_library_version and rl_terminal_name are now const char *
-         variables
-       - rl_insert_text, _rl_replace_text now take const char * string
-         arguments
-
-lib/readline/{callback.c,readline.h}
-       - rl_callback_handler_install takes a const char * string argument
-
-lib/readline/doc/{rltech,hstech}.texinfo
-       - changed documentation for newly-consted functions and variables
-
-lib/readline/{complete.c,readline.h}
-       - rl_strpbrk now takes const char * string arguments
-       - username_completion_function and filename_completion_function
-         now take const char * string arguments
-       - rl_basic_word_break_characters, rl_basic_quote_characters,
-         rl_completer_word_break_characters, rl_completer_quote_characters,
-         rl_filename_quote_characters, rl_special_prefixes are all
-         const char * variables
-
-lib/readline/{display.c,rlprivate.h}
-       - _rl_move_cursor_relative takes a const char * string argument
-
-redir.c
-       - change from tbisp@uswest.net to fix a problem with cygwin and
-         here_document_to_fd, since cygwin doesn't allow a file to be
-         unlinked if there is a descriptor open on it
-
-display.c
-       - fixed a slight bug in the logic deciding whether or not to redraw
-         a prompt containing invisible characters in update_line.  Fixes
-         bug reported by bdluevel@heitec.net
-
-                                  9/29
-                                  ----
-shell.c
-       - fixed a problem with a too-aggressive setting of restricted shell
-         mode based on shell_name.  Old code set `restricted' even after a
-         longjmp due to shell_execve trying to execute an executable script
-         without a leading `#!', though that case should result in an
-         unrestricted shell
-
-                                  10/2
-                                  ----
-copy_cmd.c
-       - make sure copy_function_def copies the `flags' and `line' members
-         of the function_def
-
-parse.y
-       - make the function_def production take a new function_body parse
-         unit, which is currently just a group_command (in prep for future
-         changes)
-
-builtins/printf.def
-       - changed getint, getlong, getulong, getdouble to print warnings on
-         range errors and return the clamped values that strtol/strtod
-         return, as POSIX.2 specifies
-
-                                  10/3
-                                  ----
-parse.y
-       - made a function_def a `command' instead of a `shell_command'
-         This makes the grammar more closely resemble that supplied in
-         the POSIX.2 standard
-       - made a `function_body' be like the function_body production in
-         the POSIX.2 standard.  This relaxes the restriction that the
-         body be composed of a group_command, but introduces a YACC
-         shift/reduce conflict
-
-print_cmd.c
-       - changes to named_function_string (for normal function printing)
-         and print_function_def (for printing function definitions embedded
-         in other commands) to print redirections that should be attached
-         to the function as a whole after the closing brace, because of
-         the changes to the parser
-
-tests/func2.sub
-       - tests for new function declarations whose bodies are not group
-         commands -- the command printing code still prints them with the
-         braces
-
-                                  10/4
-                                  ----
-lib/sh/pathphys.c
-       - new function, sh_physpath, resolves symlinks in pathname passed
-         as argument
-
-builtins/cd.def
-       - changed pwd_builtin to use sh_physpath if -P supplied or in
-         physical mode
-       - changed bindpwd to use sh_physpath if the no_symlinks argument is
-         non-zero
-       - changed change_to_directory to use sh_physpath and set
-         the_current_working_directory appropriately if the `nolinks'
-         argument is non-zero
-
-                                  10/5
-                                  ----
-variables.c, bashline.c, builtins/cd.def
-       - replaced calls to canonicalize_pathname with sh_canonpath
-
-builtins/cd.def
-       - rewrote change_to_directory to make it much shorter and simpler
-
-command.h
-       - added SUBSHELL_PIPE as possible flag value for subshell_environment
-
-execute_cmd.c
-       - execute_simple_command sets SUBSHELL_PIPE in subshell_environment
-         if the command has a pipe in or out
-
-subst.c
-       - don't reset pipeline_pgrp to shell_pgrp in command_substitute if
-         we're already in a pipline
-         ((subshell_environment & SUBSHELL_PIPE) != 0)
-
-                                  10/6
-                                  ----
-subst.c 
-       - change command_substitute to call setmode(fd, O_TEXT) on the pipe
-         file descriptor if __CYGWIN__ is defined; remove the other code
-         that converts CR/LF to LF on cygwin
-
-                                  10/9
-                                  ----
-stringlib.c
-       - change strcreplace() to make sure that RESIZE_MALLOCED_BUFFER is
-         called everywhere characters are added
-
-                                  10/11
-                                  -----
-lib/sh/spell.c
-       - new file, with the spelling correction code from builtins/cd.def
-
-builtins/cd.def
-       - a little surgery on cd_builtin, to make the structure clearer
-
-                                  10/12
-                                  -----
-builtins/read.def
-       - include fcntl.h and io.h on __CYGWIN__
-       - set mode of fd 0 to O_TEXT if __CYGWIN__ and O_TEXT are both
-         defined
-
-shell.c
-       - in open_shell_script, set mode of fd opened to the shell script
-         to O_TEXT if __CYGWIN__ and O_TEXT are both defined
-
-builtins/evalfile.c
-       - changed the __CYGWIN__ code to call setmode(fd, O_TEXT) instead
-         of translating \r to \n after the read() returns
-
-                                  10/13
-                                  -----
-lib/sh/strtrans.c, stringlib.c
-       - moved ansicstr() from stringlib.c to new file lib/sh/strtrans.c
-       - new function ansic_quote, to quote a string with $'...'
-
-lib/sh/strindex.c, stringlib.c
-       - moved strindex() from stringlib.c to new file lib/sh/strindex.c
-
-lib/sh/Makefile.in
-       - compile `shquote.c' in as part of the shell library
-       - compile `strtrans.c' in as part of the shell library
-       - compile `strindex.c' in as part of the shell library
-
-Makefile.in
-       - link with libsh before any of the readline libraries
-
-builtins/common.c
-       - removed the functions also appearing in lib/sh/shquote.c
-
-externs.h, builtins/common.h
-       - moved extern declarations for functions in lib/sh/shquote.c to
-         externs.h from builtins/common.h
-
-variables.c
-       - print_var_value (used in the output of `set') now calls
-         ansic_quote to quote the value, so any non-printable characters
-         are displayed
-
-                                  10/14
-                                  -----
-syntax.h
-       - new file, with definitions from shell.h having to do with shell
-         syntax, metacharacters, and quoting
-
-parse.y
-       - moved defines for shell metachars and other char class declarations
-         to syntax.h
-
-shell.h
-       - now includes syntax.h
-
-Makefile.in,builtins/Makefile.in,lib/sh/Makefile.in
-       - added syntax.h to appropriate dependency lists
-
-                                  10/16
-                                  -----
-mksyntax.c
-       - new program, to build a syntax table for the shell at compile time
-
-Makefile.in
-       - new generated file, syntax.c, generated by mksyntax
-
-general.h
-       - `digit(x)' is now just defined as `isdigit(x)'
-
-syntax.h
-       - now that we have sh_syntaxtab[], change the appropriate defines
-         to use it
-
-parse.y, subst.c
-       - change checks of member(c, slashify_in_quotes) to test
-         sh_syntaxtab[c] & CBSDQUOTE
-
-builtins/set.def
-       - corrected the help text for `unset', since PATH and IFS may be
-         unset
-
-subst.c
-       - changed explicit tests for shell special parameters using member()
-         or strchr() to test (sh_syntaxtab[c] & CSPECVAR) instead
-       - changed some boilerplate calls to member() that test for validity
-         of various characters in the expansion process to macros for
-         efficiency
-
-lib/sh/shquote.c
-       - changed some of the functions to use checks against sh_syntaxtab[]
-         flag values
-
-                                  10/19
-                                  -----
-findcmd.c
-       - find_user_command_in_path no longer finds directories if the caller
-         specified FS_NODIRS in the flags argument.  This fixes the bug of
-         hashing directory names, at the loss of some information about
-         attempting to execute directories
-
-builtins/hash.def
-       - hash -p dirname name no longer puts directories into the hash table
-
-                                  10/26
-                                  -----
-builtins/read.def
-       - make sure that the last unwind-protect added is the one that calls
-         xfree(input_string), so that this is the top element on the
-         unwind-protect stack
-       - if xrealloc() is called to increase the size of input_string, make
-         sure to remove the top element from the unwind-protect stack (the
-         old xfree) and add a new one, in case realloc() freed the original
-         input_string and allocated new space.  This fixes the bug of bash
-         crashing because it's trying to free already-freed memory if the
-         `read' is interrupted (reported by klausf@Pool.Informatik.RWTH-Aachen.DE)
-
-                                  10/27
-                                  -----
-subst.c
-       - fixed a problem in expand_word_list_internal so that
-         last_command_exit_value is set to 1 if a variable assignment fails
-         and a jump_to_top_level (DISCARD) is taken.  This fixes the problem
-         of assignment statements to read-only variables appearing to succeed
-         (though it always worked right in non-interactive posix-mode shells)
-
-                                  10/30
-                                  -----
-lib/readline/readline.h
-       - rl_completion_entry_function is now of type CPFunction *, since
-         that's the actual type that's used, and casting function pointers
-         of different types (which happened all the time as a result), is
-         problematic on some architectures
-
-lib/readline/complete.c
-       - changed entry function argument to gen_completion_matches to be of
-         type CPFunction *, since that's how it's used
-       - changed variables that are completion entry function pointers to be
-         of type CPFunction *, removed problematic typecasts
-
-lib/readline/doc/rltech.texinfo
-       - documented type change for rl_completion_entry_func
-
-lib/readline/rltypedefs.h
-       - new file, with all the readline function typedefs
-
-lib/readline/rltypedefs.h
-       - new typedef, rl_command_func_t, which is a function returning
-         an int
-       - a KEYMAP_ENTRY now contains a pointer to an rl_command_func_t
-       - new typedef, rl_compentry_func_t, which is a function returning
-         a char *
-       - new typdef, rl_completion_func_t, which is a function returning
-         a char **
-       - new typedef, rl_quote_func_t, which is a function returning a
-         char *
-       - new typedef, rl_dequote_func_t, which is a function returning a
-         char *
-       - new typedef, rl_compignore_func_t, which is a function returning a
-         char *
-       - new typedef, rl_compdisp_func_t, which is a void function taking
-         a char **, int, int argument list
-       - new typedef, rl_hook_func_t, which is a function taking no args
-         and returning an int (used for input and other hooks)
-       - new typedef, rl_modterm_func_t, which is a void function tkaing
-         an int, used to modify terminal (rl_prep_term_function)
-       - new typedef, rl_getc_func_t, which is an int-returning function
-         that takes a FILE *
-       - new typedef, rl_linebuf_func_t, which takes a string and an int
-         index and returns an int
-       - new generic typedefs, rl_intfunc_t and rl_voidfunc_t, which are
-         functions which take and return int and void, respectively 
-       - new generic typedef, rl_vintfunc_t, which takes an int and returns
-         void
-       - new generic typedefs, rl_icpfunc_t and rl_vcpfunc_t, which take a
-         char * and return int and void, respectively
-       - new generic typedefs, rl_icppfunc_t and rl_vcppfunc_t, which take
-         a char ** and return int and void, respectively
-
-lib/readline/rlprivate.h
-       - rl_last_func is now of type rl_command_func_t *
-
-lib/readline/readline.c
-       - declare rl_last_func as rl_command_func_t *
-
-lib/readline/{bind,readline,vi_keymap,emacs_keymap,funmap,keymaps,isearch}.c
-lib/readline/readline.h
-       - change appropriate cases of (Function *) to (rl_command_func_t *)
-
-lib/readline/{readline.h,bind.c}
-       - rl_named_function and rl_function_of_keyseq now return a
-         (rl_command_func_t *)
-
-lib/readline/bind.c
-       - changed type of functions in parser function table from Function *
-         to _rl_parser_func_t *
-
-lib/readline/funmap.c
-       - removed `vi-bracktype' from vi function map -- it's not a
-         bindable function
-
-lib/readline/{readline.h,complete.c}
-       - changed appropriate uses of CPFunction * to rl_compentry_func_t *
-         or rl_quote_func_t *
-
-lib/readline/{rltty.c,readline.h}
-       - rl_prep_term_function is now of type rl_vintfunc_t *
-       - rl_deprep_term_function is now of type rl_voidfunc_t *
-
-lib/readline/{keymaps,history.h}
-       - include rltypedefs.h or <readline/rltypedefs.h> as appropriate
-
-lib/readline/{display.c,readline.h}
-       - rl_redisplay_func is now of type rl_voidfunc_t *
-
-lib/readline/{callbacks.c,readline.h}
-       - the `linefunc' argument to rl_callback_handler_install and the
-         rl_linefunc variable are now of type rl_vcpfunc_t *
-
-lib/readline/{complete.c,readline.h}
-       - rl_completion_display_matches_hook is now of type
-         rl_compdisplay_func_t *
-       - rl_directory_completion_hook is now of type rl_icppfunc_t *
-
-lib/readline/{history.h,histexpand.c}
-       - history_inhibit_expansion_function is now of type
-         rl_linebuf_func_t *
-
-lib/readline/histexpand.c
-       - new private type, _hist_search_func_t, used to indirect through
-         the various history search functions
-
-lib/tilde/tilde.h
-       - new typedef, tilde_hook_func_t, which takes a char * and returns
-         a char *
-
-lib/tilde/tilde.[ch]
-       - tilde_expansion_preexpansion_hook and tilde_expansion_failure_hook
-         are now of type tilde_hook_func_t *
-
-[THERE ARE NO LONGER ANY REFERENCES TO Function *, CPFunction *, or
-CPPFunction * IN THE READLINE SOURCE, WHICH INCLUDES THE TILDE LIBRARY]
-
-{bashline,bracecomp}.c, bashline.h
-       - changes for changed type of rl_completion_entry_func and other
-         changed types (rl_compentry_func_t, rl_completion_func_t,
-         const changes for prototypes, etc.)
-
-pathexp.[ch]
-       - shell_glob_filename now takes a `const char *' argument
-       - quote_string_for_globbing now takes a `const char *' argument
-
-                                  10/31
-                                  -----
-lib/sh/zwrite.c
-       - fix zwrite() to update the buffer pointer in the case of a
-         partial write, in addition to decreasing the count of bytes to
-         be written
-
-support/config.{guess,sub}
-       - added entries for MIPS-based Compaq machines running NonStopUX
-
-                                  11/1
-                                  ----
-lib/readline/undo.c
-       - renamed free_undo_list to be rl_free_undo_list, made a dummy
-         replacement function free_undo_list that just calls
-         rl_free_undo_list
-
-lib/readline/readline.h
-       - extern declaration for rl_free_undo_list
-
-lib/readline/{readline,signals}.c
-       - changed calls to free_undo_list to rl_free_undo_list
-
-lib/readline/doc/rltech.texinfo
-       - changed all function types and arguments for new typedefs
-
-                                  11/2
-                                  ----
-lib/readline/{rlprivate.h,terminal.c,display.c}
-       - term_clreol, term_clrpag, term_cr, term_backspace, term_goto,
-         term_pc, term_im, term_ei, term_ic, term_ip, term_IC, term_dc,
-         term_DC, term_forward_char, term_up, term_mm, term_mo, term_ku,
-         term_kd, term_kr, term_kl, term_ks, term_ke, term_kh, term_kH,
-         terminal_can_insert variables all now have a _rl_ prefix
-
-lib/readline/{rlprivate.h,terminal.c,display.c, readline.c}
-       - screenheight, screenwidth, screenchars now have an _rl_ prefix
-
-lib/readline/{terminal,complete,isearch,kill,macro,readline,search,undo,util,vi_mode}.c
-       - changed calls to ding to calls to rl_ding
-
-lib/readine/{isearch,readline,search}.c
-       - saved_line_for_history now has an _rl_ prefix
-
-lib/readline/readline.[ch]
-       - renamed maybe_{replace,save,unsave} line to have an rl_ prefix
-
-lib/readline/{readline,search,isearch}.c
-       - changed calls to maybe_{replace,save,unsave} line to call the
-         rl_-prefixed equivalents
-
-lib/readline/{rlprivate.h,readline.c,util.c}
-       - renamed alphabetic to rl_alphabetic; changed calls
-
-lib/readline/{bind.c,funmap.c,rlprivate.h}
-       - possible_control_prefixes -> _rl_possible_control_prefixes
-       - possible_meta_prefixes -> _rl_possible_meta_prefixes
-
-lib/readline/compat.c
-       - new file for entry points for backwards compatibility functions
-       - moved free_undo_list here from undo.c
-       - maybe_{replace,save,unsave}_line function that call their rl_
-         counterparts
-       - moved ding() here; it just calls rl_ding()
-       - moved alphabetic here; it just calls _rl_alphabetic()
-
-lib/readline/Makefile.in
-       - make sure compat.o is built and linked appropriately
-
-bashline.c,pcomplete.c
-       - changed calls to ding() to call rl_ding()
-
-support/shobj-conf
-       - changed linux stanza SHLIB_XLDFLAGS to make the `soname' in a
-         shared library have only the major version number, rather than
-         major and minor numbers
-       - made analogous changes for bsd/os-4
-       - changed freebsd 3.x stanza to match `freebsdelf[3-9]*' for
-         FreeBSD elf systems and `freebsdaout[3-9]*' for FreeBSD
-         a.out systems (are there any?)
-
-lib/readline/doc/{rluser,hsuser}.texinfo
-       - changed uses of @samp to @option where appropriate
-
-doc/bashref.texi
-       - changed uses of @samp to @option where appropriate
-
-                                  11/3
-                                  ----
-lib/readline/{readline.h,complete.c,compat.c}
-       - completion_matches, username_completion_function,
-         filename_completion_function all have an rl_ prefix
-
-{bashline,bracecomp,pcomplete}.c
-       - changed calls to completion_matches, username_completion_function,
-         and filename_completion_function
-
-lib/sh/shquote.c
-       - single_quote, double_quote, un_double_quote, backslash_quote,
-         backslash_quote_for_double_quotes, contains_shell_metas all now
-         have an sh_ prefix
-
-externs.h
-       - changed extern declarations for functions from shquote.c
-
-{array,bashline,pcomplete,print_cmd,variables}.c, parse.y
-builtins/{alias,complete,trap,type}.def
-       - changed callers of single_quote
-
-{array,bashline}.c, builtins/setattr.def
-       - changed callers of double_quote
-
-{bashline,bracecomp}.c, parse.y, builtins/printf.def
-       - changed callers of backslash_quote
-
-parse.y
-       - changed callers of backslash_quote_for_double_quotes
-
-{print_cmd,variables}.c
-       - changed callers of contains_shell_metas
-
-lib/readline/{rlshell.h,shell.c,histexpand.c}
-       - single_quote -> sh_single_quote
-
-lib/readline/{rlshell.h,shell.c,input.c}
-general.[ch],shell.c,subst.c
-        - unset_nodelay_mode -> sh_unset_nodelay_mode
-
-lib/readline/{rlshell.h,shell.c}, lib/tilde/tilde.c, variables.c
-       - get_home_dir -> sh_get_home_dir
-
-lib/readline/rlshell.h,lib/readline/bind,histfile,nls,readline,shell,terminal}.c, lib/tilde/tilde.c, variables.c
-       - get_env_value -> sh_get_env_value
-
-lib/readline/rlshell.h,lib/readline/{shell,terminal}.c
-variables.h,{jobs,nojobs,variables}.c
-       - set_lines_and_columns -> sh_set_lines_and_columns
-
-                                  11/6
-                                  ----
-configure.in
-       - bash can only link with an already-installed readline library whose
-         version is 4.2 or greater
-
-variables.h
-       - new variable attribiute, noassign, with its accompanying test macro,
-         noassign_p.  Completely internal, not user-settable
-
-execute_cmd.c
-       - treat noassign variables like readonly variables, except an attempt
-         to assign to them does not cause a non-interactive shell in POSIX
-         mode to abort
-
-{subst,variables}.c,builtins/declare.def
-       - attempts to assign to `noassign' variables return an error status,
-         but no error messages -- almost identical to readonly variables
-
-variables.c
-       - GROUPS and FUNCNAME are `noassign' variables, meaning assignment to
-         them is disallowed, but that they may be unset (in which case they
-         lose their special properties)
-
-doc/{bash.1,bashref.texi}
-       - documented that assignments to GROUPS and FUNCNAME are disallowed
-         and return an error status
-
-                                  11/8
-                                  ----
-lib/readline/{funmap.c,bind.c,rlprivate.h}
-       - _rl_possible_{control,meta}_prefixes are now arrays of `const char *'
-         and are defined in bind.c, since that's where they're used
-
-lib/readline/rltty.c
-       - changed prepare_terminal_settings to take an `oldtio' argument
-         instead of `otio', which shadows the global declaration
-
-lib/readline/bind.c
-       - the `name' member of a parser_directive element is now a
-         `const char *'
-       - the `name' member of a boolean_varlist element is now a
-         `const char *'
-       - the `name' member of a string_varlist element is now a
-         `const char *'
-       - the `name' member of an assoc_list element is now a
-         `const char *'
-       - the `name' member of an keymap_names element is now a
-         `const char *'
-
-lib/readline/display.c
-       - changed scope-local char * variable `temp' to `vtemp' because
-         there's already a function local variable named `temp' of a
-         different type (int) in rl_redisplay
-
-lib/readline/util.c
-       - pathname_alphabetic_chars is now `const char *'
-
-lib/readline/terminal.c
-       - the `tc_var' member of a _tc_string element is now a
-         `const char *'
-
-lib/readline/histexpand.c
-       - changed history_expand_internal to remove the duplicate local
-         declaration of `t' in the `s'/`&' case
-
-lib/readline/histfile.c
-       - in history_filename, `home' is now a `const char *'
-
-lib/tilde/tilde.c
-       - default_prefixes and default_suffixes are now arrays of
-         `const char *'
-
-lib/readline/vi_mode.c
-       - vi_motion and vi_texmod are now `const char *'
-
-lib/readline/complete.c
-       - simplified the conditional declaration of getpwent()
-
-variables.[ch]
-       - get_string_value now takes a `const char *' argument
-
-                                  11/10
-                                  -----
-display.c
-       - changes to expand_prompt and rl_redisplay to keep track of the number
-         of invisible characters on the first line of the prompt, in case it
-         takes up more than one physical line, and not all invisible chars are
-         on the first line
-       - the code that determines the index into the line at which to wrap the
-         first line if the visible prompt length exceeds the screen width was
-         changed to use the number of invisible chars in the first physical
-         prompt line rather than the total number of invisible characters
-       - changed redraw_prompt to save and restore prompt_invis_chars_first_line
-
-subst.c
-       - changed expand_string_internal to savestring() the string argument
-         to avoid possible doubly-freed memory on substitution errors
-       - fixed expand_word_list_internal so that commands with assignment
-         statements preceding words that expand to nothing return a failure
-         status if one of the assignments fails; for example
-
-               readonly TVAR
-               TVAR=7 $ECHO $ABCDE
-       - made sure that all cases of jump_to_top_level set
-         last_command_exit_value to something non-zero before jumping, since
-         they are by definition errors
-
-builtins/evalstring.c
-       - changed parse_and_execute to set last_result to EXECUTION_FAILURE
-         along with last_command_exit_value in the `DISPOSE' case of a
-         jump_to_top_level, since we can return this value in most
-         (interactive) circumstances
-
-                                  11/14
-                                  -----
-general.c
-       - fix legal_number so that it skips any trailing whitespace in its
-         string argument after strtol returns, since strtol does not
-
-lib/readline/{complete.c,readline.h}
-       - new function pointer, rl_directory_rewrite_hook, identical in effect
-         to rl_directory_completion_hook except that it does not modify what
-         is displayed when the possible completions are listed or inserted
-
-bashline.c
-       - changed tcsh_magic_space to try and insert a space closer to where
-         the point was originally, rather than always inserting it at the
-         end of the line
-
-                                  11/16
-                                  -----
-jobs.c
-       - fixed a bug that happened on cygwin systems that caused the jobs
-         table to fill up if a file sourced from an interactive shell ran
-         lots of jobs -- notify_and_cleanup() never called notify_of_job_status
-
-subst.c
-       - fixed pat_match to avoid infinite recursion on zero-length matches
-         from match_pattern
-
-                               11/17/2000
-                               ----------
-[bash-2.05-alpha1 released]
-
-                                  11/18
-                                  -----
-support/shobj-conf
-       - added GNU Hurd support, identical to linux
-
-variables.c
-       - cygwin systems don't use the exportstr stuff at all, so call
-         INVALIDATE_EXPORTSTR before testing var->exportstr, since just
-         blindly using the value_cell will break exported functions that
-         already have an exportstr set
-       - when recomputing the exported value because valid_exportstr fails,
-         make sure to call named_function_string if the variable is a shell
-         function
-
-                                  11/20
-                                  -----
-variables.c
-       - removed call to valid_exportstr; the exportstr code has been
-         adequately debugged
-
-lib/glob/fnmatch.c
-       - reverted to the POSIX.2 behavior of using the current locale and
-         strcoll() to evaluate range expressions in bracket expressions
-
-doc/{bash.1,bashref.texi}
-       - added note to Pattern Matching section emphasizing that the current
-         locale plays a part in evaluating range expressions within [...]
-
-aclocal.m4
-       - added an #include <unistd.h> to the test for posix sigaction
-         restarting interrupted system calls
-
-support/config.guess
-       - changes from Tim Mooney to support `letter version' releases of
-         Tru 64 Unix on the Alpha (e.g., 5.1a)
-
-                                  11/21
-                                  -----
-lib/sh/pathphys.c
-       - make sure MAXSYMLINKS is defined
-
-aclocal.m4
-       - changed BASH_CHECK_PWFUNCS to just use AC_EGREP_CPP on a file
-         that includes pwd.h and other header files, checking for getpwuid.
-         It #defines HAVE_GETPW_DECLS if the egrep succeeds
-
-lib/readline/complete.c
-       - provide extern declaration of getpwent if _POSIX_SOURCE is defined,
-         since most systems don't declare it in <pwd.h> unless _POSIX_SOURCE
-         is undefined
-
-                                  11/22
-                                  -----
-input.c
-       - fixed a small typo in the cygwin-specific code
-
-doc/{bashref.texi,bash.1}
-       - added some more explanatory text about the effect of the current
-         locale's collating order on range expressions within bracket
-         expressions
-
-doc/bashref.texi, lib/readline/doc/{rltech,rluser,hstech}.texinfo
-       - changed to use @env instead of @code for the names of environment
-         and shell variables in text (not in tables yet)
-
-                                  11/27
-                                  -----
-configure.in
-       - configure without the bash malloc on Interix
-
-lib/readline/doc/rltech.texinfo
-       - changed completion_matches() to rl_completion_matches()
-       - changed filename_completion_function() to
-         rl_filename_completion_function()
-       - changed username_completion_function() to
-         rl_username_completion_function()
-
-lib/readline/rlprivate.h
-       - changed declaration of _rl_alphabetic to rl_alphabetic, since that's
-         what's used in the C files
-
-support/bashbug.sh
-       - Debian has /usr/bin/editor as a link to the system default editor;
-         make that one of the alternatives if $EDITOR is not set
-       - if the OS provides mktemp(1) or tempfile(1), use those to create
-         the temp file for the bug report
-
-lib/readline/{readline.[ch], callback.c}
-       - new function, rl_set_prompt, called with prompt string as argument,
-         sets and, if necessary, expands rl_prompt
-
-lib/readline/{complete.c,compat.c,readline.h}
-       - rl_completion_matches now takes a `const char *' as its first
-         argument
-       - compute_lcd_of_matches now takes a `const char *' as its third
-         argument
-
-lib/readline/rltypedefs.h
-       - a rl_completion_func_t now takes a `const char *' as its first
-         argument
-
-lib/readline/Makefile.in
-       - added dependencies on rltypedefs.h
-
-bashline.c
-       - attempt_shell_completion now takes a `const char *' as its first
-         argument
-       - removed bogus cast when assigning to rl_attempted_completion_function
-         and rl_completion_entry_function
-       - bash_directory_completion_matches takes a `const char *' argument
-
-pcomplete.c
-       - gen_matches_from_itemlist, pcomp_filename_completion_function,
-         gen_action_completions, gen_globpat_matches, gen_wordlist_matches,
-         gen_compspec_completions now take `const char *' arguments as
-         appropriate
-       - programmable_completions now takes `const char *' first and 
-         second arguments
-
-pcomplib.c
-       - find_compspec now takes a `const char *' argument
-
-                                  11/29
-                                  -----
-shell.c
-       - in open_shell_script, if we have /dev/fd, don't perform the check
-         for a binary file if isatty(fd) (where fd is opened on the script
-         name) returns non-zero
-       - in open_shell_script, don't call init_noninteractive again, since it
-         can undo changes made by the startup files ($BASH_ENV)
-
-input.c
-       - in fd_to_buffered_stream, make sure buffer size (and hence size
-         arg passed to read(2)) is greater than zero.  This makes
-         bash /dev/stdin work right.
-       - return -1 from sync_buffered_stream immediately if buffers is NULL
-         (can happen when running `bash -i /dev/stdin' and executing a
-         command that requires a fork)
-
-                                  11/30
-                                  -----
-jobs.c
-       - renamed cont_signal_handler to sigcont_sighandler for consistency
-       - renamed stop_signal_handler to sigstop_sighandler for consistency
-       - if there is no jobs list or no outstanding jobs, return immediately
-         from notify_of_job_status, before fussing with the signal state
-       - change map_over_jobs to not fuss with the signal state unless there
-         are jobs
-
-lib/malloc/malloc.c
-       - encapsulated the code to block and unblock signals during morecore()
-         execution into two functions:  block_signals and unblock_signals
-       - only block signals in morecore() if interrupt_immediately is non-zero
-         or SIGINT or SIGCHLD is trapped
-
-                                  12/1
-                                  ----
-lib/readline/readline.c
-       - fix to rl_forward to make sure that lend doesn't get set < 0, since
-         that will result in rl_point being < 0
-
-                                  12/5
-                                  ----
-parse.y
-       - fix to parse_matched_pair to allow backslash to escape a ' inside a
-         $'...' construct inside another grouping construct like ${...}
-       - translate $'...' and $"..." in parse_matched_pair, because nothing
-         else will do it if such a construct appears inside a grouping
-         construct
-
-                                  12/6
-                                  ----
-configure.in
-       - make sure all bracket tests for pattern matching in case statements
-         are appropriately quoted, so autoconf doesn't swallow the brackets
-       - add -rdynamic to LOCAL_LDFLAGS for freebsd-4.x
-
-examples/loadables/realpath.c
-       - new loadable builtin, canonicalizes pathnames and expands symlinks
-
-builtins/ulimit.def
-       - added undocumented -w option for setting RLIMIT_SWAP, if it's defined
-
-                                  12/7
-                                  ----
-bashline.c
-       - reordered code in initialize_readline so all of the rl_add_defun
-         calls are made before the call to rl_initialize, and all of the
-         rl_{bind,unbind}_key_in_map calls are made after initializing
-         readline.  This allows the bash-specific function names to be used
-         in ~/.inputrc
-
-                                  12/12
-                                  -----
-lib/readline/callback.c
-       - in rl_callback_read_char, loop after returning from
-         readline_internal_char and test rl_pending_input in case some
-         function (like the incremental search functions and digit argument
-         functions) pushed input back with rl_execute_next
-
-lib/readline/readline.h
-       - new rl_state flag:  RL_STATE_INPUTPENDING, indicating that
-         rl_execute_next has pushed input back for rl_get_key to read
-
-lib/readline/input.c
-       - new function to clear rl_pending_input: rl_clear_pending_input()
-
-lib/readline/{input,readline,signals}.c
-       - when rl_pending_input is set, set state RL_STATE_INPUTPENDING;
-         unset that state when rl_read_key returns the pending input
-       - call rl_clear_pending_input at appropriate points
-
-                                  12/15
-                                  -----
-lib/readline/histfile.c
-       - don't leak file descriptors while attempting to truncate a non-regular
-         file
-
-input.c
-       - make sure check_bash_input sets the close-on-exec flag for the file
-         descriptor used to save the bash input fd
-
-parse.y
-       - if default_buffered_input gets changed while it's on the saved
-         stream stack, make sure it gets set to close-on-exec when it's
-         restored by pop_stream()
-
-                                  12/18
-                                  -----
-builtins/ulimit.def
-       - change set_limit to account for Cygwin's setdtablesize() being
-         declared as a void function
-
-support/config.{guess,sub}
-       - change cygwin32 to cygwin
-
-                                  12/20
-                                  -----
-nojobs.c
-       - make wait_sigint_handler handle the case of interrupt_immediately
-         being non-zero when it's called, and jump out appropriately
-
-jobs.c
-       - new function to run sigchld traps: run_sigchld_trap(); called from
-         waitchld
-       - broke the code that computes the printable job status messages for
-         pretty_print_job out into a separate function
-       - rearranged some code eliminating a useless `else' branch in wait_for
-       - shell_tty_info is now a TTYSTRUCT, using defines from shtty.h
-       - broke the code that sets a job's status after waitpid says its state
-         has changed and cleans up after a received SIGINT out into a separate
-         function: set_job_status_and_cleanup
-       - last_stopped_job() -> job_last_stopped() to avoid collision with a
-         variable name
-       - last_running_job() -> job_last_running() for consistency
-
-                                  12/21
-                                  -----
-variables.c
-       - new function, print_func_list (SHELL_VAR **list); prints shell
-         functions from list in a form that may be re-used as input to
-         redefine the functions
-
-variables.h
-       - new extern declaration for print_func_list
-
-builtins/set.def
-       - set without options now calls print_func_list to have functions
-         printed in a way that can be reused as input (this affects
-         `declare' and `declare -p' also)
-
-                                  12/27
-                                  -----
-general.h
-       - add an ISOCTAL define
-
-builtins/common.h
-       - use ISOCTAL in read_octal function
-
-parse.y
-       - in decode_prompt_string, don't just skip STRING forward by 3 if an
-         octal sequence is translated; handle sequences of fewer than three
-         characters by checking each character
-
-                                  12/28
-                                  -----
-doc/{bash.1,bashref.texi}
-       - make sure `vi-move' is a documented keymap argument to bind's
-         `-m' option
-
-                                  12/29
-                                  -----
-variables.c
-       - change print_assignment so that functions are printed in a way that
-         may be reused as input (without the `=')
-
-                                1/2/2001
-                                --------
-test.c
-       - fix test_command to print an error message if `[' is supplied a
-         single argument that is not `]'
-
-support/shobj-conf
-       - change test of $SHOBJ_CC from `gcc*' to `*gcc*' to handle full
-         pathnames
-
-                                  1/11
-                                  ----
-execute_cmd.c
-       - in initialize_subshell, zero out builtin_env, since those aren't
-         supposed to be exported
-
-variables.c
-       - new function: shell_var_from_env_string, creates a SHELL_VAR from
-         a `name=value' style environment string and returns it
-       - new function: bind_name_in_env_array(name, value, array), makes
-         NAME have VALUE in ARRAY, a temporary environment
-       - new function: bind_tempenv_variable (name, value), makes NAME have
-         VALUE in one of the temporary environments -- temporary_env,
-         builtin_env, or function_env
-       - changed bind_variable to call bind_tempenv_variable if one of the
-         temporary environments is non-null before modifying the
-         shell_variables table.  This fixes a problem with sourced scripts
-         modifying variables in a temporary environment, but not seeing the
-         updated values
-
-                                  1/12
-                                  ----
-variables.c
-       - changed things so OSTYPE, HOSTTYPE, and MACHTYPE are set only if
-         they don't have a value at shell startup
-
-                                  1/17
-                                  ----
-builtins/fc.def
-       - create temp file with MT_USETMPDIR
-
-variables.c
-       - allow function local readonly variables to overwrite (or shadow)
-         other (calling) function readonly variables, but not global
-         readonly ones
-
-builtins/wait.def
-       - replace unwind_protect of interrupt_immediately, since that's a
-         variable that you cannot unwind-protect (the unwind-protect code
-         uses it)
-
-                                  1/22
-                                  ----
-Makefile.in
-       - changed RELSTATUS to `beta1'
-
-lib/readline/terminal.c
-       - added rl_set_screen_size function, wrapper around
-         _rl_set_screen_size so bash doesn't call _rl_ functions
-
-lib/readline/{rlprivate,readline}.h
-       - moved rl_explicit_arg to readline.h
-       - moved rl_numeric_arg to readline.h
-       - moved rl_editing_mode to readline.h
-       - moved rl_last_func to readline.h
-       - added rl_set_screen_size to readline.h
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_explicit_arg, rl_editing_mode, rl_numeric_arg,
-         rl_last_func
-       - documented rl_set_screen_size
-
-{jobs,nojobs}.c
-       - _rl_set_screen_size -> rl_set_screen_size
-
-{bashline,pcomplete}.c, builtins/set.def
-       - removed extern declarations of variables defined in readline.h
-
-                                  1/23
-                                  ----
-support/rlvers.sh
-       - use $TMPDIR if it's defined
-       - use $RL_INCDIR (set by -I option, /usr/local/include by default)
-         as the directory containing the installed readline header files
-       - cd to the temp directory before attempting compilation
-
-configure.in
-       - pass `-I ${includedir}' to rlvers.sh
-
-                                  1/29
-                                  ----
-subst.c
-       - fixed parameter_brace_expand to only throw away the state of
-         quoted dollar-at if we're going to be using the rhs of the
-         brace expansion, since whatever parameter_brace_expand_rhs sets
-         should be what goes (corrects bad fix of 2/16/2000)
-       - fixed param_expand to only free temp after calling
-         parameter_brace_expand if it's a quoted null and we *did not*
-         have a quoted $@, since in that case we want to keep it and
-         do the $@ special handling (fixes real problem from 2/16/2000)
-
-                                  1/30
-                                  ----
-variables.c
-       - remove export attribute from SSH2_CLIENT, like SSH_CLIENT
-
-                                   2/1
-                                   ---
-unwind_prot.c
-       - added new function, clear_unwind_protect_list, to zero out the
-         unwind_protect list, optionally freeing the elements
-
-unwind_prot.h
-       - new extern declaration for clear_unwind_protect_list
-
-execute_cmd.c
-       - call clear_unwind_protect_list in initialize_subshell.  This fixes
-         the problem of core dumps when calling a shell script without a
-         leading `#!' from a shell function or other context with an
-         unwind-protect list
-       - set variable_context and return_catch_flag to 0 in
-         initialize_subshell, since a new subshell is no longer in a shell
-         function
-
-                                   2/2
-                                   ---
-doc/readline.3
-       - updated the text; clarified several points
-       - changed the usage synopsis to include <readline/readline.h> and
-         <readline/history.h>
-
-lib/readline/doc/hstech.texinfo
-       - made sure all function prototypes are valid ANSI C (mostly
-         changing () to (void))
-
-lib/readline/doc/rluser.texinfo
-       - a few clarifications
-
-lib/readline/doc/rltech.texinfo
-       - a few clarifications
-       - added two new subsections for character input and terminal
-         management
-       - changed all function prototypes to be valid ANSI C (mostly
-         replacing () with (void))
-       - documented some variables in readline.h but previously not in
-         the reference manual (rl_num_chars_to_read, rl_dispatching,
-         rl_gnu_readline_p, rl_completion_type)
-       - documented some functions in readline.h but previously not in
-         the reference manual (rl_clear_pending_input, rl_prep_terminal,
-         rl_deprep_terminal, rl_tty_set_default_bindings, rl_alphabetic,
-         rl_crlf)
-
-lib/readline/readline.h
-       - added extern declaration for rl_clear_pending_input()
-       - added extern declaration for rl_alphabetic
-       - changed rltty_set_default_bindings to rl_tty_set_default_bindings
-       - changed crlf() -> rl_crlf()
-
-lib/readline/rltty.c
-       - new function, rl_tty_set_default_bindings, just calls
-         rltty_set_default_bindings (needed `rl_' prefix)
-
-lib/readline/readline.c
-       - readline_default_bindings now calls rl_tty_set_default_bindings
-
-lib/readline/terminal.c
-       - renamed crlf() to rl_crlf(); crlf() is still defined for backwards
-         compatibility 
-
-bashline.c, lib/readline/{complete,display}.c
-       - changed all calls to crlf() to rl_crlf()
-
-test.c
-       - fix filecomp() so that `test file1 -nt file2' doesn't fail if file1
-         exists but file2 does not
-
-                                   2/5
-                                   ---
-lib/readline/{terminal,compat}.c
-       - move crlf() backwards-compatibility definition to compat.c
-
-execute_cmd.c
-       - if we're running a command `( command ) &' from a non-interactive
-         shell, don't unconditionally disable expand_aliases.  Only do it
-         when running such a command from an interactive shell, since then
-         we're changing to a non-interactive shell
-
-                                   2/6
-                                   ---
-[bash-2.05-beta1 released]
-
-lib/readline/compat.c
-       - add extern declaration for rl_crlf()
-
-lib/readline/undo.c
-       - initialize start and end in rl_do_undo to avoid bogus gcc compiler
-         warning with -Wall
-
-lib/readline/rlprivate.h
-       - fix typo in extern declaration of _rl_current_display_line()
-       - add extern declaration of _rl_free_saved_history_line()
-
-lib/readline/terminal.c
-       - return immediately from _rl_set_screen_size if one of the args is 0
-       - new function, rl_get_screen_size (int *rows, int *cols) to return
-         readline's idea of the screen dimensions
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_get_screen_size
+                                   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
                                    ---
-pathexp.c
-       - a couple of fixes for the POSIX_GLOB_LIBRARY version of the globbing
-         code
-
-expr.c
-       - fixed omission of ^= from the special assignment operators
-
-shell.c
-       - change logic for setting `posixly_correct' at shell startup:  if
-         $POSIXLY_CORRECT or $POSIX_PEDANTIC is found in the environment,
-         set it to 1, otherwise retain the previous value (which is
-         initialized to 0)
-
-                                  2/10
-                                  ----
-builtins/evalstring.c
-       - since subshell_environment is now a flags word, test for the
-         SUBSHELL_COMSUB bit being set when decided whether or not to
-         evaluate $(<file), not just for subshell_environment ==
-         SUBSHELL_COMSUB
-
-                                  2/12
-                                  ----
-lib/readline/doc/rltech.texinfo
-       - fixed a couple of problems with the documentation for
-         rl_prep_terminal and rl_deprep_terminal 
-       - added description of rl_set_prompt
-
-support/config.sub
-       - added support for Linux running on the IBM S390
-
-                                  2/13
-                                  ----
 input.c
-       - new function, fd_is_bash_input (fd), encapsulates the test for
-         whether or not FD is the file descriptor from which bash is reading
-         its input
-       - change check_bash_input to call fd_is_bash_input
-       - new function, save_bash_input (fd, new_fd), handles saving the
-         buffered stream associated with file descriptor FD to one
-         associated with NEW_FD.  If NEW_FD == -1, this function allocates a
-         file descriptor itself with fcntl
-       - new function, set_bash_input_fd(fd), sets the fd bash is using to
-         read input to FD
-       - changed duplicate_buffered_stream to note that the buffer it's
-         duplicating to was the bash input buffer (B_WASBASHINPUT)
-
-input.h
-       - extern declarations for fd_is_bash_input and save_bash_input
-       - new flag for b->flag: B_WASBASHINPUT
-
-redir.c
-       - in add_undo_redirect, if FD is 0, make the undo redirect be of type
-         r_duplicating_input instead of r_duplicating_output, since that fd
-         requires special handling in the presence of buffered streams (fixes
-         problem with scripts reading input through a pipe restoring bash
-         input buffered stream correctly after a `read' with an input
-         redirection
-
-                                  2/14
-                                  ----
-lib/readline{complete,util}.c
-       - moved rl_strpbrk to util.c with rest of string utility functions,
-         renamed to _rl_strpbrk
-
-lib/readline/rlprivate.h
-       - extern declaration for _rl_strpbrk
-
-lib/readline/input.c
-       - make the timeout in rl_gather_tyi() be a variable
-         (_keyboard_input_timeout) rather than a constant
-       - new function, rl_set_keyboard_input_timeout (int u) to set
-         _keyboard_input_timeout.  The argument is in microseconds; returns
-         the old value of _keyboard_input_timeout
-       - _rl_input_available uses _keyboard_input_timeout also
-
-lib/readline/readline.h
-       - extern declaration for rl_set_keyboard_input_timeout
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_variable_bind(), rl_macro_bind(), rl_macro_dumper(),
-         rl_variable_dumper(), rl_push_macro_input(), rl_show_char()
-
-                                  2/20
-                                  ----
-findcmd.c
-       - new function, executable_or_directory(name), returns 1 if NAME is
-         an executable file or a directory
-
-findcmd.h
-       - extern declaration for executable_or_directory()
-
-bashline.c
-       - call executable_or_directory() from command_word_completion_function,
-         which requires a single stat(2), instead of executable_file() and
-         is_directory(), each of which requires a stat(2)
-
-                                  2/21
-                                  ----
-execute_cmd.c
-       - changed execute_builtin to handle `return' with a preceding variable
-         assignment list specially when in POSIX mode.  POSIX says that the
-         variable assignments should persist after the builtin returns, since
-         `return' is a special builtin.  Since `return' does a longjmp and
-         doesn't go through the normal cleanup path, we need to do special
-         things
-
-variables.c
-       - new function, merge_function_env(), merges the function_env into
-         the shell_variables table
-
-variables.h
-       - extern declaration for merge_function_env()
-
-execute_cmd.c
-       - changed execute_function to merge any variable assignments preceding
-         the function call into shell_variables if the shell is running in
-         POSIX mode
-
-subst.c
-       - changed parameter_brace_expand_error to do tilde expansion on the
-         rhs of the expansion, if it's not null
-       - changed command_substitute so that the subshell begun to execute
-         the command substitution inherits the setting of the `-e' option
-         when in POSIX mode
-
-builtins/break.def
-       - changed check_loop_level to not print a complaining message when
-         the shell is running in POSIX mode, even if BREAK_COMPLAINS is
-         defined.  This affects `break' and `continue'
-       - changed `break' and `continue' to return success even if the shell
-         is not executing a loop, as POSIX specifies
-
-builtins/set.def
-       - changed reset_shell_options() to not clear posixly_correct, so
-         subshells spawned to execute shell scripts without a leading `#!'
-         inherit posix mode from their parent shell
-
-variables.c
-       - changed make_new_variable to create the shell_variables hash table
-         if it hasn't been done yet.  This is needed because bind_variable
-         may be called before initialize_shell_variables (e.g., when
-         `bash -o posix' calls bind_variable("POSIXLY_CORRECT", "y") from
-         parse_shell_options -> set_minus_o_option -> set_posix_mode
-         This makes `bash --posix' and `bash -o posix' equivalent, as they
-         should always have been
-       - changed maybe_make_export_env to merge the contents of `builtin_env'
-         into export_env after function_env and before temporary_env.  This
-         fixes the problems with variable assignments preceding `eval' or
-         `source' not making it into the environment passed to executed disk
-         commands (var=20 eval printenv var)
-
-doc/bashref.texi
-       - noted that variable assignments preceding shell function calls
-         persist in the shell environment after the function returns when
-         the shell is running in POSIX mode
-       - noted that when the shell is running in POSIX mode, subshells
-         spawned to execute command substitutions inherit the value of
-         the `-e' option from the parent shell
-
-                                  2/26
-                                  ----
-doc/bashref.texi
-       - augmented description of bash non-posix behavior in posix mode
-         with information from running the vsc-lite test suite
-
-                                  2/28
-                                  ----
-general.c
-       - since POSIX.2 says that aliases should be expanded even in
-         non-interactive shells, enable alias expansion in
-         posix_initialize() when posix mode is enabled, and set it to the
-         value of interactive_shell if posix mode is disabled
-
-shell.c
-       - before running the startup scripts, set expand_aliases to
-         posixly_correct, since we don't want alias expansion in startup
-         files unless we've been given the --posix invocation option
-
-doc/bashref.texi
-       - added item in BASH Posix Mode section noting that alias expansion
-         is always enabled when in posix mode
-
-Makefile.in
-       - changed release level to `beta2'
-
-                                   3/1
-                                   ---
-jobs.c
-       - expanded retcode_name_buffer to 64
-       - changed printable_job_status to conform to posix.2 for text of
-         stopped job status: `Stopped(SIGTSTP)' or `Stopped(SIGSTOP)'
-
-doc/bashref.texi
-       - Noted above change in posix mode section
-
-                                   3/5
-                                   ---
-lib/readline/bind.c
-       - changed rl_get_keymap_by_name to work case-insensitively
-
-                                   3/6
-                                   ---
-doc/readline.{0,3,ps}
-       - removed from distribution; moved to readline distribution
+       - 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>
 
-lib/readline/doc/history.3
-       - man page for history library; neither built nor installed
-         (part of the standalone readline distribution)
-
-lib/readline/histfile.c
-       - changed history_truncate_file to return 0 on success, errno
-         on failure
-       - changed history_do_write to return errno on a write error.  This
-         affects write_history and append_history
-
-lib/readline/history.c
-       - max_input_history is now history_max_entries; the old variable is
-         maintained for backwards compatibility
-
-lib/readline/histexpand.c
-       - the list of delimiters that separate words for history_tokenize
-         is now a variable: history_word_delimiters; default value is as
-         before
-       - changed history_expand to return 0 immediately if its second
-         argument is NULL
-
-bashline.c
-       - changed to use history_max_entries
-
-lib/readline/history.h
-       - extern declaration for history_max_entries
-       - extern declaration for history_word_delimiters
-
-                                   3/8
-                                   ---
-test.c
-       - changed unary_operator() to return FALSE for non-numeric arguments
-         to `-t'
-
-                                   3/9
+                                   2/9
                                    ---
-[bash-2.05-beta2 released]
-
-                                  3/12
-                                  ----
-lib/readline/doc/rltech.texinfo
-       - documented rl_set_paren_blink_timeout()
-       - moved the example function to its own info node
-
-lib/readline/{hstech.texinfo,history.3}
-       - `$' is not in the default value of history_word_delimiters
-
-                                  3/13
-                                  ----
 bashline.c
-       - in maybe_add_history, if the tests for HISTCONTROL succeed, but
-         the HISTIGNORE check fails, set first_line_saved to 0
-
-                                  3/15
-                                  ----
-
-lib/glob/fnmatch.c
-       - fixed a bug in patscan that caused `[' to be treated as special
-         even inside a nested bracket expression.  It's supposed to lose
-         it's special handling inside []
-       - fixed a bug in patscan that caused `]' to end an embedded bracket
-         expression even if it was the first character after the `[' (or
-         a leading `!' or `^')
-
-                                  3/22
-                                  ----
-execute_cmd.c
-       - made a small change to shell_execve to report a more user-friendly
-         error if execve(2) fails because of a `#! interpreter' error with
-         `interpreter'
-       - in shell_execve, if HAVE_HASH_BANG_EXEC is not defined, make sure
-         the file length is > 2 characters before attempting to execute an
-         interpreter
-
-                                  3/26
-                                  ----
-jobs.c, nojobs.c
-       - give_terminal_to now takes a second argument, FORCE.  If that
-         second argument is non-zero, give the terminal away no matter
-         what job_control is set to
-
-jobs.h
-       - changed extern declaration of give_terminal_to
-
-{jobs,sig,subst}.c,parse.y
-       - changed all calls to give_terminal_to to add a second argument
-         of 0
-
-jobs.c
-       - changed second argument of call to give_terminal_to in
-         end_job_control to 1, to force this even if job_control is 0.
-         This fixes the problem of `exec other-job-control-shell' in a
-         startup file hanging, since run_startup_files sets job_control to 0
-
-subst.c
-       - fixed test of subshell_environment in command_substitute to test the
-         bit SUBSHELL_ASYNC rather than test equality, since it's now a
-         bitmask
+       - 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>
 
-                                  3/27
+                                  2/11
                                   ----
-shell.c
-       - changed posix initialization calls to set POSIXLY_CORRECT=y and
-         then call sv_strict_posix, so $SHELLOPTS includes `posix' and
-         POSIXLY_CORRECT is set, for both the posix command line options
-         and when act_like_sh is non-zero
-
-redir.c
-       - the `>& filename' redirection now works in posix mode, redirecting
-         stdout and stderr, since POSIX.2 leaves it unspecified
-
-doc/bashref.texi
-       - removed item about `>& filename' from Bash POSIX Mode section
-
 parse.y
-       - fixed a problem in decode_prompt_string with `\W' not printing
-         anything if PWD == "//"
+       - 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>
 
-lib/readline/input.c
-       - in rl_read_key, after calling (*rl_event_hook), check for rl_done
-         being set, and return '\n' if it is
-
-Makefile.in
-       - changed RELSTATUS to `release'
+[changed release status to 4.3-release]
 
-                                  3/28
+                                  2/13
                                   ----
-support/bashbug.sh
-       - replace use of $(...) with `...` for the benefit of old versions
-         of sh
-
-builtins/set.def
-       - changed print_all_shell_variables to not print shell function names
-         and definitions when in posix mode
-
-doc/bashref.texi
-       - noted change in `set' behavior in posix mode section
+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>
 
-                                   4/2
-                                   ---
-lib/readline/readline.c
-       - changed default value of RL_LIBRARY_VERSION to `4.2'
-
-                                   4/5
-                                   ---
-[bash-2.05-release frozen]
+                                  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>