summaryrefslogtreecommitdiff
path: root/CWRU
diff options
context:
space:
mode:
authorJari Aalto <jari.aalto@cante.net>2004-07-27 13:29:18 +0000
committerJari Aalto <jari.aalto@cante.net>2009-09-12 16:46:56 +0000
commitb80f6443b6b7b620c7272664c66ecb0b120a0998 (patch)
tree9f71c98d8fe8fa0f41d95e1eb4227f32a09d43ca /CWRU
parent7117c2d221b2aed4ede8600f6a36b7c1454b4f55 (diff)
downloadbash-b80f6443b6b7b620c7272664c66ecb0b120a0998.tar.gz
Imported from ../bash-3.0.tar.gz.
Diffstat (limited to 'CWRU')
-rw-r--r--CWRU/changelog3386
1 files changed, 3385 insertions, 1 deletions
diff --git a/CWRU/changelog b/CWRU/changelog
index d090bf4f..f6ce0b92 100644
--- a/CWRU/changelog
+++ b/CWRU/changelog
@@ -500,7 +500,7 @@ builtins/read.def
- check for arithmetic overflow with -t and -n options
input.c
- - check for read error before doing \r\n translation on cygnus in
+ - check for read error before doing \r\n translation on cygwin in
b_fill_buffer
- reset bp->b_used to 0 instead of leaving it at -1 on read error
in b_fill_buffer
@@ -6254,3 +6254,3387 @@ shell.c
----
builtins/set.def
- remove mention of `-i' from long help doc, since it has no effect
+
+ 7/17
+ ----
+[bash-2.05b released]
+
+ 7/18
+ ----
+
+lib/malloc/malloc.c
+ - make sure that the `free_return' label has a non-empty statement
+ to branch to
+
+ 7/19
+ ----
+locale.c
+ - only call setlocale() from set_lang() if HAVE_SETLOCALE is defined;
+ otherwise just return 0
+
+lib/readline/mbutil.c
+ - only try to memset `ps' in _rl_get_char_len if it's non-NULL. Ditto
+ for _rl_adjust_point
+
+ 7/23
+ ----
+execute_cmd.c
+ - fix for executing_line_number() when compiling without conditional
+ commands, dparen arithmetic or the arithmetic for command
+
+
+ 7/24
+ ----
+support/Makefile.in
+ - fix maintainer-clean, distclean, mostlyclean targets
+
+builtins/common.c
+ - fix bug in sh_nojobs where it doesn't pass the right number of args
+ to builtin_error
+
+bashline.c
+ - when using command completion and trying to avoid appending a slash
+ if there's a directory with the same name in the current directory,
+ use absolute_pathname() instead of just checking whether the first
+ char of the match is a slash to catch things like ./ and ../
+
+examples/complete/bashcc-1.0.1.tar.gz
+ - a package of completions for Clear Case, from Richard S. Smith
+ (http://www.rssnet.org/bashcc.html)
+
+input.c
+ - fix check_bash_input to call sync_buffered_stream if the passed fd
+ is 0 and the shell is currently reading input from fd 0 -- all it
+ should cost is maybe an additional read system call, and it fixes
+ the bug where an input redirection to a builtin inside a script
+ which is being read from stdin causes the already-read-and-buffered
+ part of the script to be thrown away, e.g.:
+
+ bash < x1
+
+ where x1 is
+
+ hostname
+ read Input < t.in
+ echo $Input
+ echo xxx
+
+execute_cmd.c
+ - in initialize_subshell(), call unset_bash_input (0) to not mess with
+ fd 0 if that's where bash thinks it's reading input from. Fixes
+ bug reported by jg@cs.tu-berlin.de on 17 July 2002. Should be a way
+ to check whether or not the current fd 0 at the time of the call has
+ not been redirected, like in the bug report. Also might eventually
+ want to throw in a sync_buffered_stream if bash is reading input
+ from fd 0 in a non-interactive shell into a buffered stream, so the
+ stream is sync'd -- might be necessary for some uses
+
+ 7/25
+ ----
+lib/readline/signals.c
+ - make sure rl_catch_sigwinch is declared even if SIGWINCH is not
+ defined, so the readline state saving and restoring functions in
+ readline.c are always the same size even if SIGWINCH is not defined,
+ and undefined references don't occur when SIGWINCH is not defined
+
+ 7/30
+ ----
+bashline.c
+ - augment patch from 7/24 to not disable rl_filename_completion_desired
+ if the first char of the match is `~'
+
+lib/readline/bind.c
+ - when creating `shadow' keymaps `bound' to ANYOTHERKEY, don't bind
+ a key whose type is ISFUNC but whose function is the `fake'
+ rl_do_lowercase_version (fixes debian bash bug #154123)
+
+lib/readline/readline.c
+ - don't call _rl_vi_set_last from _rl_dispatch_subseq if
+ key == ANYOTHERKEY (when truncated to `sizeof(char)', it will be 0,
+ which strchr will find in `vi_textmod')
+
+ 7/31
+ ----
+lib/readline/input.c
+ - fix rl_gather_tyi to only slurp up one line of available input, even
+ if more than one line is available (fixes debian bash bug #144585)
+
+ 8/3
+ ---
+bashline.c
+ - better fix for command completion problem -- test for directory
+ explicitly with test_for_directory before turning off
+ rl_filename_completion_desired, since that's the case we're trying
+ to protect against
+
+ 8/5
+ ---
+include/shmbutil.h
+ - fix ADVANCE_CHAR macro to advance the string pointer if mbrlen
+ returns 0, indicating that the null wide character (wide string
+ terminator) was found (debian bash bug #155436)
+
+lib/readline/mbutil.c
+ - fix _rl_adjust_point to increment the string pointer if mbrlen
+ returns 0
+
+support/shobj-conf
+ - fix for the `-install_name' value in SHLIB_XLDFLAGS assignment for
+ Darwin from the fink folks
+
+ 8/6
+ ---
+builtins/exit.def
+ - broke code that runs ~/.bash_logout out into a separate function:
+ bash_logout()
+
+builtins/common.h
+ - extern declaration for bash_logout()
+
+eval.c
+ - call bash_logout() from alrm_catcher(), so timed-out login shells
+ run ~/.bash_logout before processing the exit trap
+
+lib/sh/strtrans.c
+ - implemented $'\x{hexdigits}' expansion from ksh93
+
+configure.in
+ - define RECYCLES_PIDS in LOCAL_CFLAGS for cygwin; don't bother to
+ link with -luser32
+
+examples/loadables/strftime.c
+ - new loadable builtin, interface to strftime(3)
+
+ 8/7
+ ---
+parse.y
+ - parse_arith_cmd now takes a second argument, a flag saying whether
+ or not to add double quotes to a parsed arithmetic command; changed
+ callers
+ - changed parse_dparen so it tells parse_arith_cmd to not add the
+ double quotes and therefore doesn't need to remove them
+ - change parse_dparen to add W_NOGLOB|W_NOSPLIT|W_QUOTED flags to word
+ created when parsing (( ... )) arithmetic command, since the double
+ quotes are no longer added
+
+make_cmd.c
+ - in make_arith_for_expr, set the flags on the created word to
+ W_NOGLOB|W_NOSPLIT|W_QUOTED
+
+execute_cmd.c
+ - change execute_arith_command to expand the expression with
+ expand_words_no_vars, like the arithmetic for command code does
+ - fix execute_arith_command to handle the case where the expanded
+ expression results in a NULL word without crashing
+
+tests/{arith-for,cprint}.tests
+ - change expected output to account for no longer adding quotes to
+ ((...)) commands
+
+ 8/8
+ ---
+print_cmd.c
+ - take out the space after printing the `((' and before printing the
+ `))' in print_arith_command, print_arith_for_command, and
+ xtrace_print_arith_cmd
+
+tests/{arith-for,cprint}.tests
+ - change expected output to account for no longer adding leading and
+ trailing spaces when printing ((...)) and arithmetic for commands
+
+ 8/17
+ ----
+subst.c
+ - fix issep() define to handle case where separators[0] == '\0', in
+ which case it always returns false
+
+lib/readline/histexpand.c
+ - fix off-by-one error in history_expand_internal when using the `g'
+ modifier that causes it to skip every other match when matching a
+ single character (reported by gjyun90@resl.auto.inha.ac.kr)
+
+doc/{bash.1,bashref.texi}
+ - make sure that the name=word form of argument to declare/typeset,
+ export, and readonly is documented in the description
+
+ 8/30
+ ----
+lib/readline/histexpand.c
+ - make history_expand_internal understand double quotes, because
+ single quotes are not special inside double quotes, according to
+ our shell-like quoting conventions. We don't want unmatched
+ single quotes inside double-quoted strings inhibiting history
+ expansion
+ - make `a' modifier equivalent to `g' modifier for compatibility with
+ the BSD csh
+ - add a `G' modifier that performs a given substitution once per word
+ (tokenized as the shell would do it) like the BSD csh `g' modifier
+
+ 8/31
+ ----
+braces.c
+ - when compiling for the shell, treat ${...} like \{...} instead of
+ trying to peek backward when we see a `{'. This makes it easier
+ to handle things like \${, which should be brace expanded because
+ the $ is quoted
+
+ 9/7
+ ---
+aclocal.m4
+ - redirect stdin from /dev/null in BASH_CHECK_DEV_FD before testing
+ the readability of /dev/fd/0, so we're dealing with a known quantity
+
+ 9/11
+ ----
+[prayers for the victims of 9/11/01]
+
+shell.c
+ - fix maybe_make_restricted to handle a restricted login shell with a
+ base pathname of `-rbash' and skip over any leading `-'
+
+ 9/13
+ ----
+builtins/evalstring.c
+ - in parse_and_execute, make sure we don't try to run unwind-protects
+ back to `pe_dispose' after a longjmp back to top_level if the
+ pe_dispose frame hasn't been initialized
+
+lib/readline/display.c
+ - fix problem with prompt overwriting previous output when the output
+ doesn't contain a newline in a multi-byte locale. This also should
+ fix the problem of bash slowing down drastically on long lines when
+ using a multi-byte locale, because it no longer tries to rewrite the
+ entire line each time. Patch from Jiro SEKIBA <jir@yamato.ibm.com>
+
+parse.y
+ - move the typedef for alias_t that is compiled in if ALIAS is not
+ defined up before the prototype for push_string, since that takes
+ an alias_t * parameter
+
+lib/readline/terminal.c
+ - bind the termcap description's left and right arrow keys to
+ rl_backward_char and rl_forward_char, respectively, instead of
+ rl_forward and rl_backward (which are just there for backwards
+ compatibility)
+
+aclocal.m4
+ - when testing readability of /dev/stdin, redirect stdin from /dev/null
+ to make sure it's a readable file
+
+ 9/17
+ ----
+config-bot.h
+ - don't test __STDC__ when deciding whether or not to use stdarg.h;
+ just use it if it's present
+
+tests/read2.sub
+ - redirect from /dev/tty when using `read -t'
+
+ 9/20
+ ----
+builtins/history.def
+ - when reading `new' entries from the history file with `history -n',
+ fix increment of history_lines_this_session by taking any change
+ in history_base into account
+
+lib/sh/pathphys.c
+ - changes to sh_physpath to deal with pathnames that end up being
+ longer than PATH_MAX without dumping core
+
+lib/readline/doc/{history.3,hsuser.texinfo},doc/ bash.1
+ - documented new `a' and `G' history modifiers
+
+ 9/25
+ ----
+lib/readline/misc.c
+ - when traversing the history list with arrow keys in vi insertion
+ mode, put the cursor at the end of the line (like in emacs mode)
+
+mksyntax.c
+ - don't try to use \a and \v unless __STDC__ is defined; use the
+ ascii integer equivalents otherwise
+ - include "config.h" in the generated syntax.c file for a possible
+ definition of `const'
+
+doc/{bash.1,bashref.texi}
+ - document the meaning of a null directory in $PATH
+
+ 9/26
+ ----
+parse.y
+ - fix set_line_mbstate to handle case where mbrlen() returns 0,
+ indicating the null wide character
+ - fix set_line_mbstate so we don't directly compare a char variable
+ to EOF, since char can (and is) unsigned on some machines
+
+bashline.c
+ - change bash_execute_unix_command to save a little bit more state:
+ last_shell_builtin, this_shell_builtin, last_command_exit_value
+
+ 9/27
+ ----
+execute_cmd.c
+ - tentative change to execute_simple_command to avoid freeing freed
+ memory in the case where bash forks early but still ends up calling
+ execute_disk_command, without passing newly-allocated memory to
+ make_child. This may fix the core dumps with the linux-from-scratch
+ folks
+
+ 9/28
+ ----
+Makefile.in,{builtins,lib/sh}/Makefile.in
+ - fix up dependencies, mostly on ${BUILD_DIR}/version.h, so that
+ parallel makes work with GNU and BSD makes
+
+shell.h
+ - new struct to save partial parsing state when doing things like
+ bash_execute_unix_command and other operations that execute
+ commands while a line is being entered and parsed
+
+parse.y
+ - new functions, save_parser_state() and restore_parser_state(), to
+ save and restore partial parsing state
+
+bashline.c
+ - change bash_execute_unix_command to call {save,restore}_parser_state
+
+builtins/jobs.def
+ - change execute_list_with_replacements to eliminate a run_unwind_frame
+ in favor of calling the cleanup explicitly and discarding the frame
+
+execute_cmd.c
+ - change execute_for_command to avoid a run_unwind_frame in the case
+ where the loop variable is readonly or otherwise not assignable
+ - change execute_select_command and execute_simple_command to use
+ discard_unwind_frame by running the cleanup code explicitly, instead
+ of using run_unwind_frame
+ - make sure execute_select_command decreases loop_level even on error
+
+ 9/30
+ ----
+doc/{bash.1,bashref.texi}
+ - fixed description of `unset' now that unsetting a previously-unset
+ variable is no longer an error
+
+ 10/3
+ ----
+{configure,config.h}.in
+ - augment check for strtold with additional check to detect the
+ horribly broken hp/ux 11.x implementation that returns `long_double';
+ defines STRTOLD_BROKEN if so
+
+builtins/printf.def
+ - define floatmax_t as `double' if STRTOLD_BROKEN is defined
+
+ 10/5
+ ----
+lib/readline/keymaps.c
+ - don't automatically bind uppercase keys to rl_do_lowercase_version
+ in rl_make_bare_keymap
+
+lib/readline/readline.c
+ - explicitly check for ANYOTHERKEY binding to rl_do_lowercase_version
+ and dispatch to lowercase of key when a prefix is not matched
+
+ 10/12
+ -----
+bashline.c
+ - set COMP_WORDBREAKS in enable_hostname_completion to the value
+ of rl_completer_word_break_characters
+
+variables.c
+ - new special variable COMP_WORDBREAKS, controls the value of
+ rl_completer_word_break_characters
+
+variables.h
+ - new extern declaration for sv_comp_wordbreaks()
+
+subst.c
+ - change split_at_delims to behave more like shell word splitting if
+ the passed value for the delimiters is NULL, indicating that the
+ function is to use $IFS to split
+
+{execute_cmd,jobs,test,findcmd,input,make_cmd,redir,shell}.c
+builtins/mkbuiltins.c,builtins/{fc,history,source,umask}.def
+lib/sh/netconn.c
+lib/termcap/termcap.c
+lib/readline/histfile.c
+ - make sure all inclusions of <sys/file.h> are protected by
+ HAVE_SYS_FILE_H
+
+bashline.c
+ - don't turn off rl_filename_completion_desired in
+ attempt_shell_completion if the partial pathname contains a slash.
+ This still doesn't solve the problem of partial pathname completion
+ starting with a directory in the current directory without a
+ leading `./'. There's no way to tell the difference between that
+ and a file found in $PATH (which may contain `.') at the point that
+ attempt_shell_completion acts
+
+ 10/18
+ -----
+locale.c
+ - don't set lc_all to the default locale when LC_ALL is being unset
+ - new function, reset_locale_vars(), called to recompute the correct
+ locale variable values when LC_ALL is unset
+ - changed set_lang to not set LC_ALL, which it never should have been
+ doing in the first place, and to maintain a local variable `lang'
+ corresponding to $LANG
+ - change get_locale_var to use the precedence posix.2 specifies:
+ LC_ALL overrides individual variables; LANG, if set, is the default
+ - change set_locale_var to call get_locale_var to get the appropriate
+ value for the variable being set or unset
+ - call get_locale_var instead of using passed value in set_locale_var
+ to get the defaulting and precedence right
+
+lib/readline/nls.c
+ - new function, _rl_get_locale_var(), which does the same thing as
+ locale.c:get_locale_var(), with the right precedence and defaulting,
+ using sh_get_env_value to get the right bash variable values
+ - if HAVE_SETLOCALE is defined, _rl_init_eightbit first calls
+ _rl_get_locale_var to get the right value for LC_CTYPE, and uses
+ that in the call to setlocale. If _rl_get_locale_var returns NULL,
+ call setlocale() to get the current international environment, and,
+ finally, if that returns null, call setlocale with a second argument
+ of "" to force the implementation's `native' environment
+
+pcomplete.c
+ - change gen_wordlist_completions to dequote the text before comparing
+ it against the expanded word list
+ - changed gen_matches_from_itemlist to do the same thing
+
+bashline.c
+ - new global function, bash_dequote_word, calls bash_dequote_filename
+ on the text passed. Used by the programmable completion code
+
+lib/readline/histfile.c
+ - make sure that whenever read_history_range returns a non-zero value
+ that it sets errno to some useful value
+
+ 10/19
+ -----
+variables.c
+ - COMP_WORDBREAKS is now a dynamic variable, mirroring value of
+ rl_completer_word_break_characters. Makes sure that the variable
+ always points to dynamic memory if it's not null or the readline
+ default
+
+bashline.c
+ - change enable_hostname_completion to manage a dynamic value of
+ rl_completer_word_break_characters, since assignments to
+ COMP_WORDBREAKS can change its value unpredictably
+
+lib/readline/{complete.c,readline.h}
+ - rl_completer_word_break_characters no longer has `const' attribute
+
+bashline.c
+ - clean up necessary places due to rl_completer_word_break_characters
+ no longer being `const'
+
+doc/{bash.1,bashref.texi}
+ - document new COMP_WORDBREAKS variable
+
+ 10/21
+ -----
+print_cmd.c
+ - fix indirection_level_string to handle the case where the decoded
+ $PS4 is null without seg faulting
+
+ 10/22
+ -----
+builtins/shift.def
+ - make sure that there is actually an argument when reporting a shift
+ count that exceeds the number of positional paramters and
+ shift_verbose is enabled
+
+lib/readline/rltty.c
+ - change SET_SPECIAL to call a new function, set_special_char, since
+ it contains a block. It's called infrequently, so the performance
+ impact of making it a function should be negligible, and it helps
+ debugging
+
+ 10/29
+ -----
+bashline.c
+ - make sure the editor in VI_EDIT_COMMAND and EMACS_EDIT_COMMAND is
+ quoted; it might contain spaces (e.g., `emacs -nw')
+
+aclocal.m4
+ - cache ac_cv_rl_version in RL_LIB_READLINE_VERSION macro
+
+configure.in
+ - change logic that sets RL_INCLUDEDIR so that it doesn't try to set
+ a bogus include path if the argument to --with-installed-readline
+ is `yes' -- helps with cross-compiling
+
+lib/readline/histexpand.c
+ - fix history_tokenize_word so that it handles <( and >( better
+
+ 10/30
+ -----
+redir.c
+ - fix write_here_string so it handles the case where `herestr' expands
+ to NULL without seg faulting
+
+ 10/31
+ -----
+mailcheck.c
+ - reverse logic flip from bash-2.05 that handled systems that don't
+ change the atime when the mailbox is accessed; make sure the file
+ is bigger before we report new mail. This is the case in the vast
+ majority of cases. Reported by jim@jtan.com
+
+ 11/5
+ ----
+parse.y
+ - change action for `for x; { list; }' and corresponding `select'
+ production to use \"$@\" instead of just $@, as it is with all the
+ other actions
+
+ 11/9
+ ----
+parse.y
+ - new flag for parse_matched_pair: P_DQUOTE, indicating that the
+ pair of characters being matched is between double quotes
+ - parse_matched_pair now passes P_DQUOTE down to recursive calls:
+ if the open char to be matched is a `"' or the passed-in flags
+ include P_DQUOTE, set the local `rflags' variable to P_DQUOTE and
+ pass `rflags' down to recursive calls
+ - if `rflags' includes P_DQUOTE, don't try to ansiexpand $'...' or
+ locale expand $"..."; consistent with other quoting constructs
+
+ 11/11
+ -----
+doc/{bash.1,bashref.texi}
+ - explicitly note that variables referenced in arithmetic expressions
+ without using `$' evaluate to 0 if they are null or unset
+ - note that a null variable value evaluates to 0 when used in an
+ arithmetic context, like when a variable with the `-i' attribute is
+ assigned a null value
+ - document the ${!prefix@} expansion as equivalent to ${!prefix*}
+
+ 11/12
+ -----
+doc/{bash.1,bashref.texi}
+ - note that the value of an arithmetic expression is as in C
+ - change the wording to note that `arithmetic evaluation' (not
+ arithmetic expansion, which has a different meaning) is performed
+ on the value assigned to a variable whose integer attribute is set
+
+ 11/13
+ -----
+execute_cmd.c
+ - fix execute_disk_command so it calls exit() after printing the error
+ message in a restricted shell context if the shell has already forked
+ (nofork != 0 && there are no pipes)
+
+ 11/19
+ -----
+builtins/type.def
+ - don't report on aliases unless expand_aliases is set and the parser
+ is performing alias expansion; changed tests/type.tests and
+ tests/type.right accordingly
+
+ 11/25
+ -----
+general.c
+ - fix for full pathnames including drive letters on cygwin from
+ Corinna (convert to posix-style paths, which the rest of the
+ code handles much better)
+
+lib/readline/text.c
+ - fixes to overwrite mode from jimmy@is-vn.bg:
+ o in _rl_overwrite_char, do the overwrite mode self-insert
+ as one group, even when overwriting more than 1 char
+ o in _rl_overwrite_char, do the insert before the delete so
+ that an undo positions the cursor on the character restored,
+ not to the right of it
+ o in _rl_overwrite_rubout, don't do rl_insert_char(' ') unless
+ rl_point < rl_end. Since overwrite-mode self-insert acts as
+ in insert-mode when at eol, make rubout behave like
+ insert-mode rubout
+
+ 11/30
+ -----
+lib/readline/misc.c
+ - call rl_replace_line with `1' as second parameter if we're going to
+ immediately overwrite the undo list
+
+lib/readline/search.c
+ - in make_history_line_current, use _rl_replace_text to make the line
+ replacement an undoable operation. Affects all non-incremental
+ search functions.
+
+parse.y
+ - make behavior introduced on 11/9 dependent on extended_quote
+ variable, controllable by extquote shopt option. Default setting is
+ on for backwards compatibility
+
+builtins/shopt.def
+ - new `extquote' option to control extended_quote variable
+
+ 12/3
+ ----
+jobs.c
+ - change message printed when attempting to put a background job in
+ the background with `bg' to include the job id and make the
+ statement declarative
+
+ 12/10
+ -----
+bashhist.h
+ - define explicit flag values for history_control
+
+variables.c
+ - change sv_history_control to use new flag values
+ - change sv_history_control to parse $HISTCONTROL as a colon-separated
+ list of values for the history_control variable
+
+bashhist.c
+ - change check_history_control to use new flag values and restructure
+ to remove case statement
+ - new function hc_erasedups(line); removes all entries matching LINE
+ from the history list
+ - call hc_erasedups() from check_add_history after we've determined
+ that we're saving the line
+
+doc/{bash.1,bashref.texi}
+ - documented new options available for $HISTCONTROL and that it can
+ be a colon-separated list of history control options
+
+ 12/11
+ -----
+subst.c
+ - fix pat_subst() to not increment `e' (pointer to the end of the
+ matched portion of the string) until after we're sure we're going
+ around the loop again; fixes problem with empty replacements for
+ a pattern that doesn't match (bug reported by Don Coleman
+ <don@coleman.org>)
+
+ 12/17
+ -----
+lib/readline/display.c
+ - fixes to multibyte redisplay from jir@yamato.ibm.com (Jiro SEKIBA):
+ o speed up calculation of first difference between old and new
+ lines in the common case
+ o don't try to see if we're in the middle of a multbyte char
+ in update_line (we'll see how this one works out)
+
+ 12/18
+ -----
+doc/bashref.texi
+ - make it clear that the `command-list' function definition may be
+ terminated by an ampersand before the closing brace
+
+ 12/28
+ -----
+redir.c
+ - set `expanding_redir' flag when expanding words in a redirection
+
+subst.c
+ - new function, exp_jump_to_top_level(), to do any word expansion
+ cleanup before a call to jump_to_top_level from within that file;
+ sets expanding_redir back to 0 before jump_to_top_level
+
+variables.c
+ - in find_variable(), don't call find_variable_internal with a second
+ parameter of 1 if expanding_redir is non-zero
+ - in find_variable_internal(), don't search the temporary env if
+ subshell_environment includes SUBSHELL_FORK (indicating a simple
+ command) and expanding_redir is non-zero
+
+parse.y
+ - increment line_number when we read a \<newline> pair
+
+array.c
+ - added array_unshift_element and array_shift_element (which just call
+ array_shift and array_rshift, respectively), for bash debugger
+ support
+
+ 1/4/2003
+ --------
+doc/{bash.1,bashref.texi}
+ - note in the section describing the execution environment passed to
+ children that subshells inherit shell functions marked for export
+ - note in the section describing shell functions the possibility
+ that exported functions may result in two entries in the environment
+ with the same name
+
+parse.y
+ - when pushing an alias expansion onto the pushed_string list, append
+ a space to the expanded definition to make the parser's lookahead
+ work without using the `mustpop' hack in shell_getc
+
+ 1/8
+ ---
+shell.c
+ - change calls to exit() with EX_USAGE as a parameter to use
+ EX_BADUSAGE instead, since EX_USAGE is defined as 258 and is
+ technically out of range
+
+ 1/14
+ ----
+aclocal.m4
+ - check for the termcap functions in libc first: if we don't have
+ to link in another library, let's not do it
+ - change the test for mbstate_t to use AC_TRY_COMPILE instead of
+ AC_TRY_RUN
+
+doc/{bash.1,bashref.texi}
+ - document that bash turns line editing off if environment variable
+ EMACS is set to `t' when it starts up
+
+doc/bash.1
+ - minor change to give the ftp url for the latest version of bash in
+ the bug reports section
+
+lib/readline/histexpand.c
+ - in get_history_event, cast a couple of `const char *' variables to
+ `char *' in function call parameter lists to avoid compiler warnings
+
+ 1/21
+ ----
+builtins/cd.def
+ - change `cd -' so it prints the current working directory after a
+ successful chdir even when the shell is not interactive
+
+ 1/31
+ ----
+lib/readline/doc/rltech.texinfo
+ - clarified exactly what is meant by the term `application-specific
+ completion function', made its use consistent, and documented
+ what variables are changed before such a function is called
+
+lib/readline/input.c
+ - new function, _rl_pushed_input_available(), returns non-zero if
+ there are characters in the input queue managed by rl_get_char
+ and _rl_unget_char
+
+lib/readline/rlprivate.h
+ - new extern declaration for _rl_pushed_input_available
+
+lib/readline/callback.c
+ - change rl_callback_read_char to check _rl_pushed_input_available
+ and loop if there's something there, so characters don't languish
+ until more keyboard input is read
+
+execute_cmd.c
+ - new variable, last_command_exit_signal, non-zero if
+ last_command_exit_value result from wait_for was result of a signal
+
+nojobs.c
+ - keep track of whether or not a given pid was killed by a signal with
+ a new flag in the pid_list array
+ - new function int find_termsig_by_pid(pid_t pid) to get the
+ terminating signal, if any, for a particular pid
+ - new function int get_termsig(WAIT status) returns the terminating
+ signal corresponding to status
+ - set last_command_exit_signal in wait_for and the various wait_for_xx
+ functions
+
+jobs.c
+ - new functions, process_exit_signal and job_exit_signal, return the
+ signal that killed a given process or job, if a signal caused its
+ death
+ - set last_command_exit_signal in wait_for by calling job_exit_signal
+ or process_exit_signal appropriately
+
+subst.c
+ - don't resend SIGINT to ourselves unless last_command_exit_signal is
+ SIGINT and last_command_exit_value == 128 + SIGINT. This fixes the
+ $(exit 130) bug reported by Paul Jarc
+
+expr.c
+ - new function, expr_bind_variable, calls bind_int_variable and
+ then stupidly_hack_special_variables. This fixes the
+ `let OPTIND=1' bug
+
+bashline.c
+ - change history_and_alias_expand_line and shell_expand_line to call
+ history_expand_line_internal so calls to pre_process_line are
+ localized
+ - change history_expand_line_internal and cleanup_expansion_error to
+ temporarily turn off hist_verify before calling pre_process_line
+ to avoid the effects described by teirllm@dms.auburn.edu
+
+parse.y
+ - don't unconditionally turn off PST_ALEXPNEXT in push_string. This
+ fixes the multiple alias expansion bug reported by Paul Jarc.
+
+lib/readline/vi_mode.c
+ - change rl_vi_subst to push `l' instead of ` ' -- it should be
+ equivalent, but this has been reported to fix a problem in multibyte
+ locales
+
+lib/readline/readline.h
+ - new state flag value RL_STATE_TTYCSAVED, indicates that save_tty_chars
+ has been called. Since it's only used and visible internally, it's
+ undocumented
+
+lib/readline/rltty.h
+ - changed all of the members of _rl_tty_chars struct to `unsigned char'
+
+lib/readline/rltty.c
+ - set the RL_STATE_TTYCSAVED after save_tty_chars is called
+ - new function, rl_tty_unset_default_bindings(), resets bindings for
+ everything rl_tty_set_default_bindings() messes with back to
+ rl_insert, so rl_tty_set_default_bindings can be called again with
+ possible changes
+ - new function that does the bulk of the work for
+ rltty_set_default_bindings: _rl_bind_tty_special_chars()
+ - change prepare_terminal_settings so that it can track changes to the
+ terminal special chars made by stty(1): unset the bindings with
+ rl_tty_unset_default_bindings before calling save_tty_chars, and
+ _rl_tty_set_default_bindings after, with the new values from
+ get_tty_settings(). This implements a long-standing request, most
+ recently made by Tim Waugh of Red Hat.
+
+lib/readline/readline.h
+ - extern declaration for rl_tty_unset_default_bindings()
+
+lib/readline/readline.c
+ - new function, reset_default_bindings, calls
+ rl_tty_unset_default_bindings() to reset the terminal special chars
+ back to rl_insert and then read the new ones
+
+lib/readline/doc/rltech.texinfo
+ - documented rl_tty_unset_default_bindings()
+
+ 2/1
+ ---
+[prayers and condolences to the families of the space shuttle crew members]
+
+aclocal.m4
+ - add checks for mbrtowc and mbrlen in BASH_CHECK_MULTIBYTE
+ - new check, BASH_FUNC_CTYPE_NONASCII, checks whether or not the ctype
+ functions handle non-ascii characters correctly
+
+config.h.in
+ - add HAVE_MBRTOWC and HAVE_MBRLEN
+ - add NO_MULTIBYTE_SUPPORT for new configure argument
+ - add CTYPE_NON_ASCII
+
+config-bot.h, lib/readline/rlmbutil.h
+ - make sure that mbrtowc, mbrlen, and wcwidth are all present before
+ turning on HANDLE_MULTIBYTE
+ - turn off multibyte chars if NO_MULTIBYTE_SUPPORT is defined
+
+configure.in
+ - new argument --enable-multibyte (enabled by default), allows
+ multibyte support to be turned off even on systems that support it
+
+lib/readline/chardefs.h
+ - define NON_NEGATIVE as 1 if CTYPE_NON_ASCII is defined
+
+ 2/3
+ ---
+config.h.in
+ - add HAVE_WCTOMB
+
+aclocal.m4
+ - check for wctomb in BASH_CHECK_MULTIBYTE
+
+ 2/4
+ ---
+lib/readline/vi_mode.c
+ - in _rl_vi_change_mbchar_case, make sure the result from wctomb()
+ is NULL-terminated before trying to insert it with rl_insert_text()
+
+ 2/5
+ ---
+lib/readline/display.c
+ - fix to update_line to avoid problems on systems with multibyte
+ characters when moving between history lines when the new line
+ has more glyphs but fewer bytes (twaugh@redhat.com)
+
+lib/readline/vi_mode.c
+ - use wcrtomb() instead of wctomb() in _rl_vi_change_mbchar_case
+
+pcomplete.c
+ - fix init_itemlist_from_varlist to handle the case where the
+ `varlist' is NULL
+
+doc/{bash.1,bashref.texi}
+ - clarified when a simple command may fail without the shell exiting
+ when -e is set
+
+ 2/13
+ ----
+parse.y
+ - when bash is started with --nolineediting, ignore \[ and \] when
+ decoding the prompt string
+
+subst.c
+ - fix remove_quoted_nulls so that a string with a CTLESC appearing
+ after a CTLNUL (which was removed) does not leave characters in
+ the string inappropriately
+
+ 2/14
+ ----
+builtins/common.h
+ - new flag value for parse_and_execute(): SEVAL_RESETLINE, which
+ allows the caller to specify whether or not the internal idea
+ of the line number should be reset to 1
+
+builtins/evalstring.c
+ - parse_and_execute() now tells push_string to reset the line
+ number only if the SEVAL_RESETLINE flag is set by the caller
+
+ 2/15
+ ----
+builtins/evalfile.c
+ - pass SEVAL_RESETLINE from _evalfile() to parse_and_execute()
+
+subst.c
+ - if the shell is currently interactive, pass SEVAL_RESETLINE to
+ parse_and_execute() when doing command substitution
+
+jobs.c
+ - add SEVAL_RESETLINE to parse_and_execute while running SIGCHLD trap
+
+command.h
+ - add `line' members to case_com, for_com, select_com
+ - rearranged order of members in some of the command structs, so
+ `flags' and `line' are first
+ - added a `source_file' member to the function_def struct; keeps
+ track of where the function was defined
+
+doc/Makefile.in
+ - add some new suffix rules: .dvi.ps
+
+doc/{bash.1,bashref.texi}
+ - added text to the description of the `trap' builtin tightening up
+ the language describing when the ERR trap will be run
+
+error.c
+ - if $BASH_SOURCE (internally-maintained) exists, use BASH_SOURCE[0]
+ in get_name_for_error if the shell is not interactive
+
+array.h
+ - new convenience defines: array_push and array_pop
+
+variables.c
+ - change get_funcname to return this_shell_function->name only if
+ arrays have not been compiled into the shell
+ - change init_funcname_var to initialize FUNCNAME as an array variable
+ if we have arrays
+ - new function: get_self(SHELL_VAR *self), a degenerate `dynamic_value'
+ function for dynamic variables
+ - new function: init_dynamic_array_var(), a generic dynamic array
+ variable initializer to handle the common case
+ - use init_dynamic_array_var() instead of explicit init_dirstack_var()
+ - use init_dynamic_array_var() instead of explicit init_groups_var()
+ - new dynamic array variables: BASH_ARGC, BASH_ARGV, BASH_SOURCE,
+ BASH_LINENO, initialized with init_dynamic_array_var
+
+shell.c
+ - initialize BASH_LINENO, BASH_SOURCE, FUNCNAME in open_shell_script
+
+{execute_cmd,trap}.c
+ - take out trap_line_number, since parse_and_execute doesn't reset the
+ line number any more when running the trap commands
+
+make_cmd.c
+ - augment make_function_def to get source file name and call
+ bind_function_def to save the entire FUNCTION_DEF
+
+variables.c
+ - new hash table: shell_function_defs, keeps table of shell function
+ definitions including source file and line number info corresponding
+ to shell_functions table
+ - new functions: find_function_def and bind_function_def to manage
+ the shell_function_defs hash table
+ - new function: unbind_function_def to remove a function definition
+ from the shell_function_defs table (right now uncalled)
+
+variables.h
+ - extern declaration for bind_function_def, find_function_def
+ - new extern declaration for unbind_function_def
+
+execute_cmd.c
+ - in function prologue and epilogue, push and pop FUNCNAME,
+ BASH_SOURCE, and BASH_LINENO information
+
+dispose_cmd.c
+ - broke the code that disposes a FUNCTION_DEF out into two new
+ functions: dispose_function_def and dispose_function_def_contents
+
+dispose_cmd.h
+ - new extern declarations for dispose_function_def_contents and
+ dispose_function_def
+
+copy_cmd.c
+ - move body of copy_function_def (other than allocating a new
+ FUNCTION_DEF) to copy_function_def_contents
+ - make sure to copy the new source_file member of a function_def in
+ copy_function_def_contents
+ - copy_function_def is no longer static, copy_function_def_contents
+ is not either
+
+command.h
+ - new extern declaration for copy_function_def_contents and
+ copy_function_def
+
+parse.y
+ - keep a stack of line numbers where case, select, and for commands
+ start, with a maximum nesting level of 128; increment when reading
+ word after `for', `select' or `case' in read_token_word; decrement
+ in grammar actions after parsing a complete for, arith_for, select,
+ or case command
+ - create for, case, arith_for, and select commands with an extra
+ line number (word_lineno[word_top]) argument
+
+make_cmd.c
+ - make_for_or_select, make_for_command, make_case_command, and
+ make_select_command all take an extra `line_number' argument
+
+make_cmd.h
+ - corresponding changes to extern declarations for those functions
+
+ 2/16
+ ----
+{execute_cmd,shell,variables}.c
+ - follow each call to remember_args with a call to push_args or
+ pop_args to manage the BASH_ARGV and BASH_ARGC arrays. Only set
+ when the shell is started to run shell script or runs a shell
+ function. Doesn't handle `set' or `shift' yet, nor `source'.
+
+execute_cmd.c
+ - keep track of the level of subshells with a new variable, manipulated
+ in execute_in_subshell
+ - set currently_executing_command in execute_command_internal(),
+ even if we're running a trap
+ - better line number management when executing simple commands,
+ conditional commands, for commands in execute_command_internal()
+ and the various functions that implement the commands
+ (execute_cond_command, execute_for_command, execute_etc.)
+
+variables.c
+ - new dynamic variable BASH_SUBSHELL, with new get_subshell and
+ assign_subshell functions to manipulate it
+ - new functions push_args (WORD_LIST *list) and pop_args (void) to
+ manage the BASH_ARGC and BASH_ARGV dynamic array variables
+
+variables.h
+ - new extern declarations for push_args and pop_args
+
+builtins/evalfile.c
+ - in _evalfile, do appropriate things to the FUNCNAME, BASH_ARGV,
+ BASH_ARGC, BASH_SOURCE, and BASH_LINENO variables
+
+support/mksignames.c
+ - add another fake signal for `trap'; make NSIG+2 == `RETURN'
+
+trap.c
+ - _run_trap_internal now returns an int: the exit value of the command
+ run as the result of the trap
+ - run_debug_trap now returns an int: the exit value of the command
+ run as the result of the trap
+ - RETURN is a new special trap
+ - new function: set_return_trap(char *command) interface for the rest
+ of the shell, like set_{debug,error}_trap
+ - new function: run_return_trap()
+ - command substitution and other child processes don't inherit the
+ return trap
+
+trap.h
+ - new extern declaration for set_return_trap() and run_return_trap
+ - new defines for RETURN_TRAP; increment BASH_NSIG
+ - change extern declaration for run_debug_trap() since it now returns
+ an int
+
+shell.c
+ - new invocation long option: --debugger, turns on debugging and
+ sets internal `debugging_mode' variable
+
+execute_cmd.c
+ - new code to save return trap when executing a shell function, so
+ shell functions don't inherit it
+ - run debug trap before binding the variable and running the action
+ list in a `for' command
+ - run debug trap before binding the selection variable and running
+ the query in a `select' command
+ - run debug trap before running matcher in a `case' command
+
+builtins/set.def
+ - new `set -o functrace' (set -T), causes DEBUG trap to be inherited
+ by shell functions
+ - new `set -o errtrace' (set -E), causes ERR trap to be inherited
+ by shell functions
+
+flags.c
+ - new flags -E and -T, control error_trace_mode and
+ function_trace_mode respectively
+
+flags.h
+ - new extern declarations for error_trace_mode and function_trace_mode
+
+ 2/17
+ ----
+doc/bashref.texi
+ - changed the `dircategory' as per Karl Berry's suggestion
+
+doc/texinfo.tex
+ - update to version of 2003/02/04 from texinfo.org
+
+support/texi2dvi
+ - update to version 1.14 from texinfo-4.5 distribution
+
+ 2/20
+ ----
+support/config.{guess,sub}
+ - update to versions of 2002/11/30
+
+lib/readline/doc/manvers.texinfo
+ - renamed to version.texi to match other GNU software
+ - UPDATE-MONTH variable is now `UPDATED-MONTH'
+
+lib/readline/doc/{hist,rlman,rluserman}.texinfo
+ - include version.texi
+
+doc/version.texi
+ - new file, with standard stuff matching other GNU distributions
+
+{doc,lib/readline/doc}/Makefile.in
+ - include right stuff for `version.texi'
+
+lib/readline/doc/{rluserman,rlman,hist}.texinfo
+ - use @copying and @insertcopying and @ifnottex instead of @ifinfo
+ - add FDL as an appendix entitled `Copying This Manual'
+
+lib/readline/doc/{rltech,rluser,hstech,hsuser}.texi
+ - changed the suffix from `texinfo' to `texi'
+
+lib/readline/doc/{rlman,rluserman}.texinfo, doc/bashref.texi
+ - include rltech.texi,rluser.texi,hstech.texi, and hsuser.texi
+
+lib/readline/doc/Makefile.in,doc/Makefile.in
+ - made appropriate changes for {{rl,hs}tech,{rl,hs}user}.texi
+
+lib/readline/doc/{rlman,rluserman}.texinfo
+ - changed the suffix from `texinfo' to `texi'
+
+lib/readline/doc/hist.texinfo
+ - renamed to history.texi
+
+ 2/25
+ ----
+pathnames.h.in
+ - moved pathnames.h here so value of DEBUGGER_START_FILE can be
+ substituted by configure
+
+aclocal.m4
+ - added AM_PATH_LISPDIR for debugger
+
+configure.in
+ - added some variables: `bashvers', `relstatus' to use info in more
+ than one place
+ - call AM_PATH_LISPDIR
+ - new option: --enable-debugger, sets DEBUGGER cpp option
+ - new option with AC_ARG_VAR: DEBUGGER_START_FILE
+ - make `pathnames.h' a file generated by configure
+
+Makefile.in
+ - add rule to create pathnames.h
+
+builtins/declare.def
+ - added extra line number and source file name to `declare -F' output
+ if `--debugger' is used at startup
+
+builtins/evalfile.c
+ - call run_return_trap from source_file before returning the result
+ from _evalfile()
+
+execute_cmd.c
+ - call run_return_trap in execute_function before restoring the old
+ context
+
+builtins/source.def
+ - arrange to save and restore DEBUG traps when sourcing files if
+ function_trace_mode (set -o functrace) is not set
+
+print_cmd.c
+ - broke print_for_command, print_select_command, print_case_command
+ into two functions each: one to print the `header' and one for
+ the body
+ - print_cond_command is no longer static
+ - print_arith_command now takes a WORD_LIST *, since it doesn't
+ actually do anything with the ARITH_COM it's passed except print
+ the enclosed WORD_LIST
+ - print_arith_command is no longer static
+
+externs.h
+ - extern declarations for print_{for,select,case}_command_head,
+ print_cond_command, print_arith_command
+
+{.,builtins,lib/sh}/Makefile.in
+ - corrected dependencies on pathnames.h, since it's now created in
+ the build directory
+
+ 3/5
+ ---
+lib/glob/glob.c
+ - handle alloca() failing (it's supposed to return NULL)
+ - use malloc() (with its attendent bookkeeping) instead of alloca()
+ in glob_filename()
+
+subst.c
+ - check whether shell_glob_filename returns NULL in
+ glob_expand_word_list
+ - change parameter_brace_expand_rhs to handle cases like
+ ${a[2]:=value} by properly creating the array element instead of a
+ variable named `a[2]' (reported by <opengeometry@yahoo.ca>)
+
+variables.c
+ - change bind_int_variable to use valid_array_reference instead
+ of looking for `['
+
+lib/readline/vi_mode.c
+ - check for `a' in _rl_vi_done_inserting so the text inserted by an
+ `a' command can be reinserted with a `.'
+
+lib/readline/readline.c
+ - when entering vi insertion mode in readline_internal_setup(), make
+ sure that _rl_vi_last_key_before_insert is set to `i' so that undo
+ groups and redo work better (reported by <opengeometry@yahoo.ca>)
+
+lib/glob/sm_loop.c
+ - handle ?(...) in a pattern immediately following a `*', instead of
+ ignoring the `(' and treating the `?' as a single-char match, as
+ long as FNM_EXTFLAG is set (reported by <anderson110@poptop.llnl.gov>)
+
+aclocal.m4
+ - new test for presence of struct timezone, BASH_STRUCT_TIMEZONE
+
+config.h.in
+ - add HAVE_STRUCT_TIMEZONE
+
+configure.in
+ - call BASH_STRUCT_TIMEZONE
+
+execute_cmd.c
+ - don't try to use `struct timezone' in calls to gettimeofday unless
+ HAVE_STRUCT_TIMEZONE is defined; use (void *)NULL otherwise
+
+ 3/20
+ ----
+execute_cmd.c
+ - new variable, the_printed_command_except_trap, saves the command
+ being executed before a trap is executed, for the debugger
+
+trap.c
+ - if in debugging mode, let command substitutions and other child
+ processes inherit the DEBUG and ERR traps if the `functrace'
+ (which is really a bad name, given this semantic) or `errtrace'
+ options, respectively, have been set
+
+shell.c
+ - local_pending_command renamed to command_execution_string; no longer
+ static
+
+variables.c
+ - new dynamic variable, BASH_COMMAND, set to the command string
+ currently executing, or the one that caused a trap to execute
+ (mapped to the_printed_command_except_trap)
+ - new variable, BASH_EXECUTION_STRING, set to the argument to the
+ -c invocation option, if the shell was started that way
+
+ 3/22
+ ----
+execute_cmd.c
+ - changed execute_for_command, eval_arith_for_expr,
+ execute_select_command, execute_arith_command, execute_cond_command,
+ execute_simple_command to implement new DEBUG trap semantics
+ for the debugger: if the DEBUG trap commands return a non-zero
+ status and debugging_mode is non-zero, we skip the command to be
+ executed
+
+trap.c
+ - change run_debug_trap for the debugger: if we're in the debugger
+ and the DEBUG trap returns 2 while we're in a function or sourced
+ script, we force a `return'
+
+shell.c
+ - new function, start_debugger(), that sources the debugger start file
+ and turns the debugger on
+
+builtins/shopt.def
+ - new settable option, `extdebug', turns on debugging_mode, as if
+ --debugger had been supplied at invocation (but does not source
+ debugger startup file)
+
+trap.c
+ - make sure that run_exit_trap arranges for `returns' to come back
+ there, too, so a `return' executed by an `exit' invoked within a
+ shell function behaves correctly
+
+support/shobj-conf
+ - change darwin/MacOS X stanza based on advice from mac os x developers
+
+lib/sh/mailstat.c
+ - set the atime member of the synthesized stat struct to 0 if `cur/'
+ is empty, rather than leaving it undefined
+
+ 3/24
+ ----
+builtins/caller.def
+ - new builtin to provide a call stack for the debugger
+
+builtins/evalfile.c
+ - added a second `flags' argument to source_file()
+ - new flag value for flags argument to _evalfile(): FEVAL_NOPUSHARGS.
+ If included in flags arg, it means to not manipulate the BASH_ARGV
+ and BASH_ARGC arrays
+
+builtins/common.h
+ - change prototype for source_file()
+
+builtins/source.def
+ - add flag value to call to source_file(): set to 1 if we replaced
+ the positional parameters
+ - add call to push_args if additional arguments supplied to the
+ source builtin
+ - add call to pop_args in maybe_pop_dollar_vars
+
+execute_cmd.c
+ - run the debug trap in execute_function so the debugger can stop
+ before the first command in a function body is executed
+ - modify subshell_level before executing a builtin or function in a
+ subshell
+ - print `for', `select', `case' command heads when set -x is enabled
+
+print_cmd.c
+ - `xtrace_print_word_list' now takes an additional flags argument,
+ which, if non-zero, says to print indirection_level_string()
+ - new functions to print for, select, and case command heads when
+ set -x is enabled
+ - add spaces after `((' and before `))' in xtrace_print_arith_command
+
+externs.h
+ - changed extern declaration for xtrace_print_word_list
+ - new declarations for xtrace_print_{for,case,select}_command_head()
+
+subst.c
+ - modify subshell_level when executing a command substitution
+
+ 3/25
+ ----
+execute_cmd.c
+ - use `line_number' in executing_line_number instead of looking into
+ the current command if it's a simple command; rearrange code to
+ make this simpler to compile in and out
+ - need to save and restore value of currently_executing_command around
+ calls to debug trap and return trap in execute_function
+
+make_cmd.c
+ - make sure make_arith_for_command() disposes the WORD_LIST * it is
+ passed, since nothing else does and it's not used directly
+
+ 3/28
+ ----
+Makefile.in
+ - fixed dependencies for `error.o' on shell.h and version.h -- makes
+ parallel makes (gmake -j 4) work correctly
+
+doc/{bash.1,bashref.texi}
+ - documented all new features added to support the debugger
+
+ 4/1
+ ---
+lib/sh/shquote.c
+ - make sure CTLESC and CTLNUL characters are escaped with CTLESC
+ by sh_double_quote, sh_backslash_quote and
+ sh_backslash_quote_for_double_quotes
+ Fixes vulnerability reported by svdb@stack.nl
+
+shell.h
+ - new `pipestatus' member of sh_parser_state_t, to save and restore
+ $PIPESTATUS
+
+parse.y
+ - changes to save_parser_state and restore_parser_state to save and
+ restore $PIPESTATUS
+
+builtins/read.def
+ - add a call to word_list_remove_quoted_nulls before assigning the
+ word list read from standard input to an array variable. Fixes
+ bug reported by holzhey@ppprs1.phy.tu-dresden.de
+
+ 4/3
+ ---
+execute_cmd.c
+ - in execute_null_command, if redirections are supplied, make sure
+ things like 3</etc/passwd are undone immediately, since they're
+ being done in the current shell
+ - functions now inherit the RETURN trap only if function tracing is
+ on for that function or globally
+
+lib/readline/misc.c
+ - in rl_replace_from_history, don't force rl_replace_line to clear
+ the undo_list, since it might point directly at an undo list
+ from a history entry (to which we have no handle)
+
+ 4/4
+ ---
+trap.c
+ - initialize RETURN_TRAP stuff appropriately in initialize_traps()
+ - let command substitutions inherit the RETURN trap if we're in
+ the debugger and function tracing has been enabled
+
+redir.c
+ - do_redirections and do_redirection_internal now take a single
+ flags argument instead of multiple boolean flags
+
+redir.h
+ - new #defines for flags argument to do_redirection{s,_internal}
+
+execute_cmd.c
+ - change all calls to do_redirection to use new flag values
+
+parse.y
+ - new function, free_pushed_string_input(), an external interface to
+ clear the pushed_string list (alias expansion)
+ - new define SHOULD_PROMPT to say when it's OK to call prompt_again
+ (if the shell is currently interactive and is reading input from
+ the terminal or readline)
+ - make sure shell_getc and read_secondary_line only call prompt_again
+ if SHOULD_PROMPT evaluates to true
+ - prompt_again shouldn't do anything if the shell is currently in the
+ middle of expanding a multiline alias, since we won't be printing a
+ prompt anyway
+
+externs.h
+ - new extern declaration for free_pushed_string_input()
+
+execute_cmd.c
+ - command_substitute and process_substitute now call
+ free_pushed_string_input because they shouldn't deal with any
+ partial alias expansion the parent shell may have started
+
+ 4/5
+ ---
+braces.c
+ - added {x..y} brace expansion, shorthand for {x,x+1,x+2,...,y}:
+ x, y can be integers or single characters; the sequence can be
+ ascending or descending; increment is always 1. Beware that
+ something like {a..A} can lead to non-letters.
+
+ 4/7
+ ---
+subst.c
+ - change extract_delimited_string and extract_dollar_brace_string to
+ return NULL on an expansion error when no_longjmp_on_fatal_error
+ is set, so the calling functions don't assume that the expansion
+ was successful (primarily the prompt expansion and completion code)
+
+doc/{bash.1,bashref.texi}
+ - documented new sequence generation feature of brace expansion
+
+ 4/8
+ ---
+lib/sh/strstr.c
+ - replacement for strstr(3), in case the C library doesn't provide it
+
+configure.in
+ - check for strstr, add to LIBOBJS if not found
+
+array.c
+ - array_walk now takes a third void * argument; it's passed to `func'
+ as its second argument
+
+array.h
+ - change sh_ae_map_func_t prototype to add void * second argument
+
+ 4/10
+ ----
+array.c
+ - new function: array_keys_to_word_list, returns a list of indices for
+ a given array
+
+array.h
+ - new extern declaration for array_keys_to_word_list
+
+arrayfunc.c
+3 - new function: char *array_keys(), returns a string with keys for a
+ given array, with the appropriate quoting
+
+arrayfunc.h
+ - new extern declaration for array_keys
+
+subst.c
+ - code to implement ksh93-like ${!array[@]} expansion (array[*] works,
+ too), which expands to all the keys (indices) of ARRAY
+
+doc/{bash.1,bashref.texi}
+ - documented new ${!array[@]} expansion
+
+ 4/19
+ ----
+builtins/setattr.def
+ - remove any mention of the `-n' option from readonly builtin's short
+ and long documentation
+
+pcomplib.c
+ - fix progcomp_insert to increase the refcount on the `cs' argument
+ before calling hash_insert -- fixes the problem of multiple calls
+ to progcomp_insert with the same compspec
+
+doc/bash.1
+ - add mention of characters that inhibit history expansion when found
+ immediately following an unquoted `!'
+
+bashline.c
+ - convert the code conditionally compiled in by the NO_FORCE_FIGNORE
+ #define to something runtime-tunable with the `force_fignore'
+ variable (opposite sense). force_fignore is 1 by default
+
+builtins/shopt.def
+ - new tunable `shopt' option: `force_fignore', controls force_fignore
+ variable and behavior of FIGNORE handling
+
+lib/readline/complete.c
+ - new variable, _rl_complete_show_unmodified, causes completer to list
+ possible completions if more than one completion and partial
+ completion cannot be done
+ - new value for what_to_do argument to rl_complete_internal, `@',
+ indicating that we want the show-unmodified behavior
+ - change rl_completion_type to return `@' when appropriate
+
+lib/readline/bind.c
+ - new bindable variable, show-all-if-unmodified, which controls value
+ of _rl_complete_show_unmodified
+
+lib/readline/rlprivate.h
+ - extern declaration for _rl_complete_show_unmodified
+
+lib/readline/doc/rluser.texi
+ - documented show-all-if-unmodified
+
+lib/readline/doc/rltech.texi
+ - documented new `@' value for second argument to rl_complete_internal
+ - documented new return value from rl_completion_type
+
+ 4/22
+ ----
+lib/readline/signals.c
+ - in rl_set_signal, set sa_flags to SA_RESTART for SIGWINCH, if we
+ have POSIX signals -- this is what most applications expect, and
+ they're not prepared to deal with EINTR
+
+ 4/25
+ ----
+bashline.c
+ - take out attempts to suppress readline filename completion when
+ attempting command completion and there is a directory with the
+ same name in the current directory. #if 0'd for now; maybe make
+ it conditional later
+
+error.c
+ - new variable, gnu_error_format, causes non-interactive errors with
+ line numbers to be printed in the `gnu style' (filename:lineno:)
+ instead of the `shell style' (filename: line lineno:) by
+ error_prolog and parser_error
+
+version.h,support/mkversion
+ - don't put extern function declarations into created version.h any
+ more
+
+version.c,externs.h
+ - add extern declarations for show_shell_version() and
+ shell_version_string(), since they're no longer in version.h
+ (this backs out change from 9/10/2001)
+
+shell.h
+ - don't include version.h
+
+Makefile.in
+ - remove unneeded dependencies on version.h -- only version.o
+ needs it now
+
+builtins/shopt.def
+ - new option `gnu_errfmt', changes error messages with line numbers
+ to use the `standard' gnu format
+
+pcomplete.h
+ - new COPT_BASHDEFAULT and COPT_PLUSDIRS defines
+
+bashline.c
+ - if the COPT_BASHDEFAULT flag is set, try the rest of the bash
+ default completions if a compspec with that flag set generates
+ no matches
+ - broke bash completions out into separate function:
+ bash_default_completion(const char *text, int start, int end,
+ int qc, int in_command_position); change attempt_shell_completion
+ to call it
+
+bashline.h
+ - new extern declaration for bash_default_completion
+
+builtins/complete.def
+ - added code to compgen to call bash_default_completion if a compspec
+ with the COPT_BASHDEFAULT flag set generates no matches from the
+ programmable completion options
+
+doc/{bash.1,bashref.texi}
+ - document new `gnu_errfmt' shopt option
+
+doc/bash.1,lib/readline/doc/rluser.texi
+ - document new `-o bashdefault' option to complete and compgen
+
+ 4/26
+ ----
+pcomplete.c
+ - if a compspec has the COPT_PLUSDIRS flag set, generate any
+ directory name completions and add them to the set of possible
+ completions as the last thing in gen_compspec_completions
+
+builtins/complete.def
+ - add new `-o plusdirs' option to complete and compgen; means to
+ do directory name completion in addition to other actions
+ specified by the compspec, and do it last
+
+ 5/12
+ ----
+copy_cmd.c
+ - fix copy_{for,select,case}_command to copy the line member
+
+ 5/13
+ ----
+lib/readline/rlmbutil.h,include/shmbutil.h
+ - new #define MB_INVALIDCH, evaluates to true if return value from
+ mbrtowc or mbrlen denotes an invalid multibyte character
+ - new #define MB_NULLWCH, evaluates to true if return value from
+ mbrtowc or mbrlen denotes a null multibyte character
+
+lib/readline/complete.c
+ - new function, fnwidth(), returns printed length of a filename,
+ correctly handling multibyte characters
+ - new function, fnprint(), displays a filename on rl_outstream
+ correctly handling multibyte characters
+ - use fnwidth() instead of simple strlen() for length calculations
+ in display_matches
+
+lib/readline/{display,mbutil}.c
+ - use MB_INVALIDCH and MB_NULLWCH as appropriate
+
+ 5/21
+ ----
+configure.in
+ - turn off the builtin malloc on GNU/FreeBSD systems (GNU userland,
+ FreeBSD kernel)
+
+ 5/24
+ ----
+pcomplete.c
+ - in programmable_completions, copy the compspec before using it to
+ generate the possible completions, allowing the completion for the
+ command to be changed by the compspec itself without causing a
+ core dump because the shell frees freed memory (reported by
+ marcus.harnish@gmx.net)
+
+parse.y
+ - in shell_getc, don't call notify_and_cleanup in an interactive shell
+ unless the shell is currently reading from the terminal and would
+ print a prompt. This fixes programmable completions printing job
+ notifications (reported by r.d.green@lancaster.ac.uk)
+ - use SHOULD_PROMPT macro consistently
+
+shell.c
+ - use get_string_value instead of getenv when looking up $TERM and
+ $EMACS to see whether the shell is running under emacs
+ - check for `TERM=dumb' as well as `EMACS=t' to decide whether or
+ not to turn off command-line editing in emacs shell windows
+ (reported by jik@kamens.brookline.ma.us)
+
+ 5/28
+ ----
+expr.c
+ - save and restore the `evalbuf' context, since evalexp can be
+ called recursively (e.g. a[b[c]])
+
+ 5/29
+ ----
+builtins/common.c
+ - in display_signal_list, when displaying for `kill -l' in posix mode,
+ display signal names without the `SIG' prefix
+
+doc/bashref.texi
+ - documented changed to posix mode behavior of kill -l
+
+builtins/kill.def
+ - changed the error message printed when argument is not a pid or
+ job id
+
+doc/{bash.1,bashref.texi}
+ - fixed a slight inconsistency in the different sections describing
+ the `promptvars' option
+
+doc/Makefile.in
+ - new rule to create `bash.info' from `bashref.info' by running sed
+ to change the internal references. This makes the installed
+ bash.info work right
+ - make the install target install bash.info after it's been modified
+ from bashref.info
+
+ 5/30
+ ----
+builtins/cd.def
+ - after testing with ferror(), call clearerr if ferror() evaluates
+ to true
+
+execute_cmd.c
+ - call clearerr(stdout) after executing a builtin or function,
+ before restoring any redirections
+
+bashhist.c
+ - initialize history_comment_char in bash_history_initialize
+
+builtins/alias.def
+ - if posix mode is enabled, and the `-p' option is not supplied, don't
+ list aliases with a preceding `alias ', as POSIX.2 specifies
+
+doc/bashref.texi
+ - note new posix mode behavior of displaying alias names and values
+ - note new posix mode behavior of trap builtin not checking first
+ argument to be a possible signal specification
+ - note new posix mode behavior of `kill' not accepting signal names
+ with a leading `SIG'
+
+include/stdc.h,lib/readline/rlstdc.h
+ - don't check the __STRICT_ANSI__ define when deciding whether or not
+ to #undef __attribute__
+
+trap.[ch]
+ - decode_signal and signal_object_p take an additional flags arg to
+ satisfy POSIX.2 signal name translation requirements
+ - change decode_signal to honor the new DSIG_NOCASE (match case-
+ insensitively) and DSIG_SIGPREFIX (allow signal specifications
+ with the `SIG' prefix) flags
+
+builtins/{common.c,{trap,kill}.def}
+ - change calls to decode_signal to add the new argument with
+ appropriate values. For kill, POSIX.2 says case-insensitive without
+ the `SIG' prefix. For trap, POSIX.2 says applications may decode
+ case-insensitively and with the SIG prefix
+
+builtins/trap.def
+ - when in posix mode, don't check for the first argument being a
+ possible signal spec and revert the signal handling to the
+ original disposition
+
+ 6/1
+ ---
+shell.h
+ - new MATCH_STARSUB define, to tell the callers of the various pattern
+ substitution and removal functions that call string_list to treat
+ "$*" and "${array[*]}" appropriately
+subst.c
+ - if get_var_and_type encounters an array variable subscripted by `*'
+ or `$*', return VT_STARSUB or'd into the variable type value
+ - callers of get_var_and_type check for VT_STARSUB in the returned type
+ this will fix problems with ${*...} not being separated with the
+ first character of $IFS when double-quoted
+ - in parameter_brace_patsub, set MATCH_STARSUB if VT_STARSUB is set by
+ get_var_and_type
+ - change pos_params_pat_subst to call string_list_dollar_star if
+ the match flags include MATCH_STARSUB
+ - change parameter_brace_substring to call array_subrange with an
+ additional argument indicating the character indexing the array
+
+array.c
+ - change array_patsub to join the modified array elements with the
+ first character of $IFS if MATCH_STARSUB is set in the match flags
+ passed in
+ - array_subrange now takes an additional argument indicating the
+ index type -- used to separate with first char of $IFS if the
+ index char is `*' and the expression is double-quoted
+
+array.h
+ - change prototype declaration of array_subrange to add additional arg
+
+ 6/2
+ ---
+doc/FAQ
+ - merged in some updates about POSIX from Andrew Josey
+
+ 6/3
+ ---
+bashjmp.h
+ - new value for jump_to_top_level: ERREXIT
+
+{eval,shell,subst,trap}.c,builtins/evalstring.c
+ - ERREXIT is (for now) equivalent to EXITPROG as a value from
+ jump_to_top_level
+
+ 6/9
+ ---
+doc/bash.1,lib/readline/doc/readline.3
+ - documented new `show-all-if-unmodified' readline variable
+
+ 6/14
+ ----
+lib/readline/history.c
+ - new function, histdata_t free_history_entry (HIST_ENTRY *h),
+ frees H and its line, returning the application-specific data
+ - use free_history_entry where appropriate
+
+lib/readline/history.h
+ - extern declaration for free_history_entry()
+
+lib/readline/doc/{history.3,hstech.texi}
+ - document free_history_entry
+
+ 6/16
+ ----
+lib/readline/readline.[ch]
+ - changed varions defines for readline/history library versions to 5.0
+
+subst.c
+ - pass information about whether or not an indirectly-expanded variable
+ contains ${array[@]}, ${array[*]}, $@, or $*
+ - new function, chk_atstar, performs checks for ${array[@]},
+ ${array[*]}, $@, or $* for the parameter_brace_expand* functions and
+ sets flags (passed as args) to the results
+ - call chk_atstar from parameter_brace_expand_indir and
+ parameter_brace_expand
+
+ 6/28
+ ----
+doc/{bash.1,bashref.texi}
+ - clarified that (...) commands are executed in a subshell environment
+
+ 6/30
+ ----
+lib/readline/bind.c
+ - fix a problem with parsing nested if statements in inputrc files
+ (fix from dimakar@yahoo.com)
+
+ 7/3
+ ---
+{jobs,nojobs}.c
+ - fix places that use the return value from strsignal() to check
+ for NULL return values using a new function, j_strsignal()
+
+builtins/kill.def
+ - removed JOB_CONTROL restriction; kill is now available as a builtin
+ when the shell is built without job control
+
+ 7/10
+ ----
+jobs.c
+ - some systems have WIFCONTINUED but not WCONTINUED; separate the
+ #defines
+
+ 7/14
+ ----
+lib/readline/history.h
+ - new `timestamp' member of a HIST_ENTRY
+ - extern declarations for add_history_time and history_get_time
+
+lib/readline/doc/{history.3,hstech.texi}
+ - document add_history_time and history_get_time
+
+lib/readline/history.c
+ - implementations of history_get_time and add_history_time
+ - change add_history to initialize the timestamp information
+ - change free_history_entry to free the timestamp
+ - change replace_history_entry to duplicate the timestamp
+ - change history_total_bytes to add the memory taken by the time
+ stamps
+
+bashhist.c,builtins/history.def
+ - use free_history_entry where appropriate
+
+lib/readline/histfile.c
+ - changes to read_history_range to deal with new history file format
+ including timestamps
+ - changes to history_do_write to write out the timestamp information
+ - changes to history_truncate_file to understand the timestamp
+ information
+
+ 7/22
+ ----
+doc/{bash.1,bashref.texi}
+ - fixed function declaration documentation to specify that any compound
+ command may be used as the function body, not just a group command
+
+ 7/23
+ ----
+lib/readline/histfile.c
+ - don't allocate space for null timestamps in history_do_write, and
+ don't write out null timestamp entries
+
+parse.y
+ - fix CHECK_FOR_RESERVED_WORD to call time_command_acceptable() and
+ return TIME if the token is "time" and `time' is legal in that
+ context
+
+ 7/29
+ ----
+lib/sh/fmtulong.c
+ - include <inttypes.h> for possible definitions of intmax_t, uintmax_t
+ (reported by ro@techfak.uni-bielefeld.de)
+
+ 7/30
+ ----
+parse.y
+ - remove checking for `time' reserved word from special_case_tokens();
+ use regular mechanism in CHECK_FOR_RESERVED_WORD. This allows `time'
+ to be aliased. (Reported by Glenn Morris
+ <gmorris+gmane@ast.cam.ac.uk>)
+
+ 7/31
+ ----
+lib/readline/history.h
+ - extern declaration for history_write_timestamps
+
+lib/readline/histfile.c
+ - don't write timestamps to the history file in history_do_write
+ unless history_write_timestamps is set to non-zero by the application
+ (set to 0 by default)
+
+lib/readline/doc/{hstech.texi,history.3}
+ - document history_write_timestamps
+
+variables.[ch]
+ - new special variable function, HISTTIMEFORMAT; special function
+ sets history_write_timestamps to 1 if HISTTIMEFORMAT is set
+
+ 8/4
+ ---
+builtins/history.def
+ - added support for printing time stamps based on the value of the
+ HISTTIMEFORMAT variable when displaying history entries
+
+doc/{bash.1,bashref.texi}
+ - added description of new HISTTIMEFORMAT variable
+
+ 8/5
+ ---
+config-top.h
+ - remove /usr/ucb from any default paths
+
+mailcheck.c
+ - make_default_mailpath now returns NULL if DEFAULT_MAIL_DIRECTORY
+ is not defined
+ - remember_mail_dates now returns if make_default_mailpath returns
+ NULL
+
+config-bot.h
+ - reorganized the sections; provide an explicit placeholder for
+ builders to #undef any feature defines they don't want that
+ configure creates for them, like the default mail path
+
+ 8/9
+ ---
+config.h.in
+ - add HAVE_REGEX_H, HAVE_REGCOMP, HAVE_REGEXEC for detection of POSIX.2
+ regular expression functions
+ - add COND_REGEXP define to enable and disable the =~ operator for
+ matching extended regular expressions in [[...]] commands
+
+configure.in
+ - new option, --enable-cond-regexp, enables =~ and code to perform
+ regular expression matching in [[...]]
+
+config-bot.h
+ - undef COND_REGEXP if the OS doesn't provide posix regexp support
+
+doc/bashref.texi
+ - documnent new --enable-cond-regexp option to configure
+
+ 8/18
+ ----
+support/shobj-conf
+ - support for shared objects on FreeBSD-gnu (from Robert Millan)
+
+ 8/25
+ ----
+lib/sh/shmatch.c
+ - new file, shell interface to posix extended regular expression
+ matching
+
+externs.h
+ - new extern declarations for functions in shmatch.c
+
+execute_cmd.c
+ - incorporate code into execute_cond_node that does extended regular
+ expression matching for the =~ operator
+
+parse.y
+ - add `=~' to the list of binary operators accepted by the conditional
+ command parser
+
+doc/{bash.1,bashref.texi}
+ - documented =~ conditional binary operator and the BASH_REMATCH
+ variable
+
+ 8/27
+ ----
+lib/readline/display.c
+ - take multibyte characters into account when looking for quoted
+ substrings on which to do completion (fix from jir@yamato.ibm.com)
+
+lib/readline/util.c
+ - fix typo in _rl_strpbrk
+
+lib/readline/rldefs.h
+ - use function version of _rl_strpbrk in multibyte locales, because
+ it understands to skip over special characters in multibyte
+ character sequences
+
+ 8/28
+ ----
+jobs.c
+ - in wait_for, check for window size changes if a job that exits due
+ to a signal or is stopped was in the foreground, not just if it's
+ the current job
+
+ 9/10
+ ----
+support/config.{guess,sub}
+ - add support to recognize FreeBSD running on the amd64
+
+subst.c
+ - if the new `fail_glob_expansion' variable is non-zero, globbing that
+ fails to match anything causes an expansion error
+
+builtins/shopt.def
+ - new `failglob' expansion: if enabled, failed globs cause an error
+
+test/shopt.right
+ - take `failglob' into account
+
+doc/{bash.1,bashref.texi}
+ - documented new `failglob' option and its effects
+
+ 9/12
+ ----
+findcmd.c
+ - fix file_status to treat the mode bits and uid right -- in particular,
+ don't assume the `other' bits always apply. Bug reported by
+ <moseley@hank.org>; fix inspired by <carlo@alinoe.com>
+
+command.h
+ - new word flag: W_NOCOMSUB, meaning to not perform command
+ substitution on a word
+
+subst.c
+ - new flag for param_expand: PF_NOCOMSUB. If non-zero, $(...)
+ command substitutions are not expanded, but returned unchanged
+ - change expand_word_internal to pass through `` command substitutions
+ unchanged if (word->flags & W_NOCOMSUB) != 0
+ - change expand_word_internal to pass PF_NOCOMSUB to param_expand
+ if (word->flags & W_NOCOMSUB) != 0
+
+builtins/shopt.def
+ - rename set_interactive_comments to set_shellopts_after_change, which
+ more accurately reflects its purpose
+
+syntax.h
+ - add a define for isblank() in case the system doesn't provide one
+
+jobs.c
+ - change raw_job_exit_status to understand `pipefail', using the new
+ `pipefail_opt' variable
+
+flags.[ch]
+ - declare pipefail_opt
+ - reset pipefail_opt to 0 in reset_shell_flags
+
+builtins/set.def
+ - add `set -o pipefail' and document it in help output
+
+doc/{bash.1,bashref.texi}
+ - document `set -o pipefail' and the effect of the pipefail option
+
+mksyntax.c,syntax.h
+ - sh_syntaxtab is no longer `const'
+ - new generated variable, sh_syntabsiz, set to number of entries in
+ sh_syntaxtab, written to generated syntax.c
+
+locale.c
+ - new function, locale_setblanks(), sets each member of the current
+ locale's <blank> class to have the CSHBRK flag in sh_syntaxtab
+
+ 9/17
+ ----
+arrayfunc.c
+ - change convert_var_to_array to not set array[0] to a NULL value
+ (if the scalar variable had no value; e.g., after being created
+ with `local arrayvar')
+
+lib/readline/display.c
+ - save and restore the value of prompt_invis_chars_first_line in
+ rl_{save,restore}_prompt, and reinitialize it to 0 before printing
+ something in the message area
+
+lib/readline/bind.c
+ - new functions: rl_bind_keyseq_if_unbound_in_map(ks, func, kmap);
+ binds key sequence KS to function FUNC in keymap KMAP, and
+ rl_bind_keyseq_if_unbound (ks, func); binds key sequence KS to
+ function FUNC in the current keymap
+
+lib/readline/readline.h
+ - extern function declarations for rl_bind_keyseq_if_unbound_in_map and
+ rl_bind_keyseq_if_unbound
+
+lib/readline/{readline,terminal}.c
+ - _rl_bind_if_unbound -> rl_bind_keyseq_if_unbound
+
+lib/readline/{bind.c,rlprivate.h}
+ - remove _rl_bind_if_unbound
+
+ 9/18
+ ----
+lib/readline/doc/rltech.texi
+ - document rl_bind_keyseq_if_unbound and
+ rl_bind_keyseq_if_unbound_in_map
+
+ 9/19
+ ----
+lib/readline/bind.c
+ - new functions rl_bind_key_if_unbound_in_map and
+ rl_bind_key_if_unbound; analogous to (and implemented in terms of)
+ keyseq functions
+ - rl_bind_keyseq_in_map: a new function, equivalent to rl_set_key
+ (which remains for backwards compatibility); changed callers to
+ use it
+ - new function, rl_bind_keyseq, equivalent to rl_bind_keyseq_in_map
+ with a third argument of _rl_keymap
+
+lib/readline/readline.h
+ - extern declarations for rl_bind_key_if_unbound_in_map and
+ rl_bind_key_if_unbound
+ - extern declarations for rl_bind_keyseq_in_map and rl_bind_keyseq
+
+lib/readline/doc/rltech.texi
+ - document rl_bind_keyseq and rl_bind_keyseq_in_map
+
+configure.in
+ - require at least readline-5.0
+
+config-bot.h
+ - define SYS_SIGLIST_DECLARED if it's not defined, but
+ HAVE_DECL_SYS_SIGLIST is, to deal with differences between
+ autoconf versions
+
+bashline.c
+ - use rl_bind_key_if_unbound_in_map when binding bash keybindings in
+ initialize_readline(), so inputrc files can override them
+
+ 9/22
+ ----
+lib/readline/histsearch.c
+ - do better bounds checking for history_offset and history_length in
+ history_search_internal
+
+builtins/history.def
+ - in delete_last_history(), make sure we don't leave the history
+ offset longer than the history length after calling delete_histent
+
+ 9/23
+ ----
+jobs.c
+ - small change to notify_of_job_status so job status messages get
+ printed even if the shell was started to run `-c command'. The
+ old behavior was intentional, but I cannot remember why, so we'll
+ try it the other way for a while (debian bash bug #211693)
+
+ 9/24
+ ----
+jobs.c
+ - slightly modify change from 9/23 so that jobs started to run
+ command substitutions don't print job status messages
+
+ 9/25
+ ----
+lib/readline/search.c
+ - when reading a non-incremental search string from the terminal,
+ use a separate undo list rather than chaining it to the undo list
+ from the rest of the line, since the whole undo list will get
+ freed when the search string is complete
+
+lib/readline/readline.h
+ - changed the defines guarding the stdarg prototype for rl_message to
+ match what's actually used in display.c, where it's defined
+
+ 9/26
+ ----
+[bash-3.0-alpha released]
+
+ 9/29
+ ----
+lib/sh/shmatch.c
+ - fix to build correctly when arrays are not compiled into the shell
+
+subst.c
+ - fix command substitution to run any exit trap defined in the
+ command substitution before returning; the exit trap is not inherited
+ from the calling shell
+
+lib/readline/shell.c
+ - change sh_set_lines_and_columns to free the memory allocated and
+ passed to setenv(), since setenv is specified by POSIX to allocate
+ new memory and copy its arguments
+
+jobs.c
+ - change logic in make_child so that every child process attempts to
+ set the terminal's process group to the pipeline's process group
+ when PGRP_PIPE is defined, just like when it's undefined. This is
+ reported to fix some tricky synchronization problems on Red Hat
+ Enterprise Linux 3. Fix from Ernie Petrides <petrides@redhat.com>.
+
+ 9/30
+ ----
+builtins/printf.def
+ - tescape no longer needs a `trans_squote' argument, since it's the
+ same as the `sawc' argument. The `sawc' argument now means to do
+ the %b argument processing if non-null
+ - fix processing of octal constants for %b arguments (\0 followed by
+ up to three octal digits) and other escape sequences (\ followed by
+ up to three octal digits)
+ - hex constants `\xHHH' are now allowed to contain any positive
+ number of digits; previously they were restricted to two [removed]
+ - allow two new escape sequences: \" and \?, for compatibility with
+ ksh93 and ANSI C
+
+doc/{bash.1,bashref.texi}
+ - documented processing that printf performs for arguments to %b
+ escape sequences
+
+lib/sh/strtrans.c
+ - add \" and \? to escape sequences recognized by `echo -e'
+
+ 10/1
+ ----
+version.c
+ - use snprintf instead of sprintf if configure tells us we have it
+
+ 10/3
+ ----
+subst.c
+ - in list_remove_pattern, take into account the fact that one of the
+ list elements may be NULL, and don't free the result of
+ remove_pattern() without checking
+ - in remove_pattern, return savestring(param) if *param == '\0',
+ since callers expect to free() non-null return values
+
+ 10/4
+ ----
+subst.c
+ - change verify_substring_values to make it clearer that the first
+ offset deals with array indices and the second deals with numbers
+ of elements, when doing array subranges with ${a[@]:e1:e2}
+
+array.c
+ - change array_subrange to make it explicit that the second offset
+ argument is a count of the desired number of elements, not an
+ ending index. This deals with sparse arrays correctly.
+
+ 10/6
+ ----
+variables.c
+ - fix memory leak in assign_in_env
+
+ 10/8
+ ----
+subst.c
+ - in parameter_brace_expand, check that the last characters are `]}'
+ before checking for ${!array[@]}
+
+execute_cmd.c,builtins/source.def
+ - push and pop the args (BASH_ARGV and BASH_ARGC) when executing a
+ shell function or sourcing a script only when in debugging mode
+
+ 10/11
+ -----
+arrayfunc.c
+ - make sure array_variable_name returns values for the SUBP and LENP
+ arguments if they're non-null, since callers expect to use them
+ even if the array subscript is bad
+
+error.c
+ - call exit_shell instead of sh_exit from parser_error and
+ report_error so the right things happen (running exit trap, doing
+ the right interactive cleanup, etc.)
+
+lib/readline/complete.c
+ - new variable, rl_completion_quote_character, set to any quote char
+ readline thinks it finds before any application completion
+ function is called
+ - new variable, rl_completion_suppress_quote, settable by an
+ application-specific completion function. If set to non-zero, the
+ completion code does not append a closing quote in append_to_match
+
+lib/readline/readline.h
+ - extern declarations for rl_completion_quote_character and
+ rl_completion_suppress_quote
+
+bashline.c
+ - set rl_completion_suppress_quote in command_subst_completion_function
+ because that would be inserted before any closing "`" or ")", which
+ is somewhat disconcerting
+
+lib/readline/doc/rltech.texi
+ - documented rl_completion_suppress_quote and
+ rl_completion_quote_character
+
+ 10/13
+ -----
+bashhist.c
+ - use sv_histchars instead of setting history_comment_char directly in
+ bash_initialize_history so assignments to $histchars made in
+ ~/.bashrc are honored
+
+ 10/21
+ -----
+trap.c
+ - make sure run_exit_trap sets `running_trap' appropriately
+ - new variable, trap_saved_exit_value, set to last_command_exit_value
+ before running any trap commands; available to the rest of the
+ shell; use trap_saved_exit_value to replace some function-local
+ variables
+
+builtins/exit.def
+ - if the shell is running the exit trap, and no argument is given
+ to `exit', use trap_saved_exit_value as the exit status instead
+ of the last command exit value (which could be the previous command
+ run in the exit trap), as required by POSIX.2
+
+ 10/25
+ -----
+doc/{bash.1,bashref.texi}
+ - add `alias' to the list of documented `assignment statement' builtins
+
+ 11/1
+ ----
+doc/bash.1
+ - remove the `.' from the sample $PATH value
+
+parse.y
+ - make sure parse_compound_assignment prompts with $PS2 if it reads
+ a newline while parsing the compound assignment statement. Bug
+ reported by Stephane Chazelas
+ - parse_string_to_word_list now takes a new second argument: `int flags'
+ - new parser state flag: PST_COMPASSIGN; indicates that the shell is
+ parsing a compound assignment statement
+ - parse_string_to_word_list turns on PST_COMPASSIGN if `flags' arg
+ has low bit set
+ - turn PST_COMPASSIGN on and off in parse_compound_assignment
+
+externs.h
+ - change prototype declaration for parse_string_to_word_list
+
+arrayfunc.c
+ - change call to parse_string_to_word_list to add new flags arg
+
+general.c
+ - assignment() takes a new `flags' second argument
+ - if `flags' is non-zero, accept `[' as a legal assignment statement
+ starter character (for parsing compound array assignments)
+
+general.h
+ - add new argument to prototype declaration for assignment()
+
+parse.y,{subst,variables}.c, builtins/{setattr,declare}.def
+ - change calls to assignment() (parse.y calls with flags == 1 when
+ parser_state inlcudes PST_COMPASSIGN)
+
+arrayfunc.c
+ - in assign_array_var_from_string(), don't treat an expanded word
+ of the form [ind]=value specially unless the W_ASSIGNMENT flag is
+ set. This means that words that are the result of expansions but
+ happen to have the same format as compound assignment statement
+ words will not be treated as such. For instance
+
+ v='[12]=foobar'
+ a=( $v )
+
+ will result in a[0]='[12]=foobar' instead of a[12]=foobar. This
+ is closer to how `regular' assignment statements are treated and
+ compatible with ksh93. Bug reported by Stephane Chazelas
+
+shell.c
+ - new --protected argument, disables command substitution when used
+ with --wordexp (like --wordexp, it remains undocumented)
+ - change run_wordexp to turn on the W_NOCOMSUB flag in each word
+ to be expanded if protected_mode is set
+
+ 11/7
+ ----
+doc/{bash.1,bashref.texi}
+ - clarified the language concerning inherited signal dispositions and
+ when traps are run
+
+support/shobj-conf
+ - slight changes to the darwin (Mac OS X) stanza for MacOS X 10.3
+ (for the readline shared library builds, which shares this script)
+
+lib/readline/histexpand.c
+ - change to make `^' behave as equivalent to word one, as csh does,
+ and as the documentation states
+
+lib/readline/display.c
+ - in update_line, make sure to use col_lendiff in all calculations
+ where the cursor position is concerned (like when calculating
+ the value of _rl_last_c_pos). Fixes bug reported by Andreas
+ Schwab
+
+ 11/12
+ -----
+trap.c
+ - make _run_trap_internal catch `return' builtin longjmps and clean
+ up before longjmping on to where the return was intended to go
+ (fixes bug with not turning off SIG_INPROGRESS flag when `return'
+ executed in trap command)
+
+ 11/18
+ -----
+builtins/cd.def
+ - in posix mode, set errno to ENOTDIR if canonicalization fails,
+ unless the canonicalization functions leave it set to ENOENT
+
+ 11/25
+ -----
+make_cmd.c
+ - in make_simple_command, don't blindly dereference element.redirect
+
+parse.y
+ - the list_terminator production now has an `int' value so it can be
+ used in other grammar productions
+ - add a rule that makes `time' on a line by itself time a null
+ command (this is iffy)
+
+ 11/28
+ -----
+subst.c
+ - change the pattern substitution code (${var//pat/rep}) to use the
+ same pattern expansion function (getpattern()) as the pattern
+ removal expansions. This has the effect of no longer performing
+ quote removal on the pattern before trying to match it. This
+ fixes an incompatibility with ksh93 reported on comp.unix.shell
+
+nojobs.c
+ - add replacement function for siginterrupt on the off chance that a
+ system has posix signals but lacks siginterrrupt
+
+lib/readline/display.c
+ - fix from Tim Waugh at Red Hat to speed up inserting characters into
+ long lines in a UTF-8 environment by optimizing the calculation of
+ the first difference between old and new lines by checking to see
+ whether the old line is a subset of the new
+
+ 11/29
+ -----
+lib/malloc/stats.c
+ - break code that opens file (and interprets %p) into separate function
+ _imalloc_fopen(char *s, char *fn, char *def, char *defbuf, size_t defsiz)
+ for use by rest of library
+ - default stats file is now `stats.PID'
+
+lib/malloc/trace.c
+ - new function, malloc_set_tracefn (char *s, char *fn), sets tracing
+ to the file named by FN (with %p interpolated as the pid), using
+ some default if FN is NULL
+
+lib/malloc/shmalloc.h
+ - new extern declaration for malloc_set_tracefn
+
+ 12/4
+ ----
+execute_cmd.c
+ - combined several common strings from do_piping() into one
+ dup_error() function
+
+builtins/common.[ch]
+ - new function, `sh_notbuiltin(s)' prints error message about s not
+ being a shell builtin
+
+builtins/{builtin,enable}.def
+ - call sh_notbuiltin instead of using literal string
+
+{arrayfunc,expr,error}.c
+ - use one string variable for `bad array subscript' error message; use
+ in calls to various error reporting functions
+
+Makefile.in
+ - add variables for localedir and the PACKAGE_* variables, auto-set
+ by configure
+
+configure.in
+ - un-cache values for gettext, textdomain, and bindtextdomain if they're
+ not in libc but in libintl so the right variables get set
+
+bashintl.h
+ - add necessary defines for marking strings to be translated using
+ gettext
+
+locale.c
+ - set textdomain and directory in set_default_locale
+ - don't call textdomain with the value of $TEXTDOMAIN, since we don't
+ want to override the default domain ("bash")
+ - don't call bindtextdomain unless default_domain already has a value
+ - when translating $"..." strings, use dgettext with the script's
+ default domain (value of $TEXTDOMAIN)
+
+ 12/9
+ ----
+builtins/mkbuiltins.c
+ - include "bashintl.h" in the generated "builtins.c"
+
+support/{config.rpath,mkinstalldirs}
+ - new files to support gettext i18n
+
+ABOUT-NLS
+ - new readme file for gettext internationalization
+
+po/{Makefile.in.in,Rules-quot,boldquot.sed,en@boldquot.header,en@quot.header,insert-header.sin,quot.sed,remove-potcdate.sin}
+po/{POTFILES.in,bash.pot}
+ - new files for gettext
+
+lib/intl
+ - new directory, with libintl stuff from gettext
+
+aclocal.m4
+ - add m4 files from gettext distribution needed by libintl
+
+configure.in
+ - create po/Makefile.in and lib/intl/Makefile in AC_OUTPUT
+ - add call to AM_GNU_GETTEXT to initialize gettext stuff
+
+Makefile.in
+ - use mkinstalldirs instead of mkdirs in the `installdirs' target
+ - changes for intl/ and po/ subdirectories in build and install
+ - changes to have libintl linked in, as determined by configure
+ - changes to have libintl built, just in case it's used (though I'd
+ rather not)
+
+ 12/10
+ -----
+config.h.in
+ - additional #defines required by the libintl library
+ - add ENABLE_NLS define for AM_GNU_GETTEXT
+ - take out defines for HAVE_{BINDTEXTDOMAIN,GETTEXT,TEXTDOMAIN}
+
+configure.in
+ - removed old tests for libintl and gettext/textdomain/bindtextdomain
+
+locale.c
+ - remove HAVE_GETTEXT code; we have gettext unconditionally now
+
+bashintl.h
+ - change to include "gettext.h" and remove the conditional code based
+ on whether or not gettext is present
+
+ 12/16
+ -----
+lib/readline/vi_mode.c
+ - fix problem with rl_vi_eWord that caused it to skip over the last
+ character of a word if invoked while point was on the next-to-last
+ character
+
+ 12/18
+ -----
+{arrayfunc,bashhist,bashline,error,eval,execute_cmd,expr,general,input,jobs}.c
+{mailcheck,make_cmd,nojobs,pcomplete,pcomplib,print_cmd,redir,shell,sig}.c
+{subst,test,trap,variables,version,xmalloc}.c
+parse.y
+builtins/{common,evalfile,getopt}.c
+builtins/{bind,break,caller,cd,complete,declare,enable,exec,exit,fc,fg_bg}.def
+builtins/{hash,help,history,jobs,kill,printf,pushd,read,return,set,setattr}.def
+builtins/{shift,shopt,source,suspend,type,ulimit,umask}.def
+lib/sh/{fmtulong,netopen}.c
+ - include "bashintl.h" for gettext defines
+
+Makefile.in
+ - add `-DBUILDTOOL' to CFLAGS for buildversion.o
+
+bashintl.h
+ - if `BUILDTOOL' is defined, define ENABLE_NLS to 0 so we don't have
+ to compile and link in the gettext stuff
+
+Makefile.in,lib/sh/Makefile.in,builtins/Makefile.in
+ - update dependencies on bashintl.h and include/gettext.h
+
+ 12/19
+ -----
+{arrayfunc,bashhist,bashline,error,eval,execute_cmd,expr,general,input,jobs}.c
+{mailcheck,make_cmd,nojobs,pcomplete,pcomplib,print_cmd,redir,shell,sig}.c
+{subst,test,trap,variables,version,xmalloc}.c
+builtins/{common,evalfile,getopt}.c
+builtins/{bind,break,caller,cd,complete,declare,enable,exec,exit,fc,fg_bg}.def
+builtins/{hash,help,history,jobs,kill,let,printf,pushd,read,return,set}.def
+builtins/{setattr,shift,shopt,source,suspend,type,ulimit,umask}.def
+lib/sh/{fmtulong,netopen}.c
+lib/malloc/{malloc,stats,table,watch}.c
+ - mark up strings in source files for gettext processing
+
+lib/malloc/imalloc.h
+ - include "bashintl.h" if SHELL is defined, otherwise make _(x) an
+ identity define
+
+lib/malloc/Makefile.in
+ - add dependencies on ${topdir}/bashintl.h and ${BASHINCDIR}/gettext.h
+
+ 12/21
+ -----
+bashline.c
+ - make sure we index into rl_line_buffer with indexes > 0 in
+ attempt_shell_completion
+
+ 12/31
+ -----
+Makefile.in
+ - descend into `po' and run make recursively for the various clean
+ targets
+
+ 1/4
+ ---
+include/shmbutil.h
+ - two new macros: BACKUP_CHAR(str, strsize, i), which backs up one
+ multibyte character in STR starting at index I, and
+ BACKUP_CHAR_P(str, strsize, p), which backs up one multibyte
+ character in STR starting at P, which is a char *
+
+ 1/6
+ ---
+pcomplete.c
+ - in pcomp_filename_completion_function, use the quote character
+ readline found (and assigned to rl_complete_quote_character) when
+ dequoting the filename by a completion call from readline (when
+ rl_dispatching != 0)
+
+bashline.c
+ - ditto for bash_directory_completion_matches
+
+ 1/7
+ ---
+lib/readline/complete.c
+ - new variable, rl_completion_found_quote, set to non-zero value if
+ readline finds what it thinks is quoting in the word to be completed
+
+lib/readline/readline.h
+ - extern declaration for rl_completion_found_quote
+
+ 1/8
+ ---
+lib/readline/doc/rltech.texi
+ - documented rl_completion_found_quote
+
+lib/readline/complete.c
+ - in compute_lcd_of_matches, if it looks like what the user typed was
+ dequoted before generating filename matches, dequote the user's
+ text again before figuring out the case-insensitive lcd
+
+ 1/9
+ ---
+lib/readline/display.c
+ - fix from Edward Catmur <ed@catmur.co.uk> to logic that handles
+ invisible characters in prompt string. Original code was wrong
+ about local_prompt_prefix; it gave incorrect results when prompt
+ contained invisible characters after a line break
+
+ 1/10
+ ----
+subst.c
+ - new function, mb_substring(), does character (possibly multibyte)
+ oriented rather than strictly byte-oriented substring extraction.
+ The passed indices, rather than strictly indexing into the string,
+ indicate character positions that need to be calculated. From
+ Tim Waugh <twaugh@redhat.com>
+ - change parameter_brace_substring to use mb_substring if necessary
+
+included/shmbutil.h
+ - new define SADD_MBQCHAR_BODY, common code for adding a quoted
+ (preceded by CTLESC) multibyte character to an accumulating string
+ in the subst.c expansion code
+
+subst.c
+ - use SADD_MBQCHAR_BODY in expand_word_internal
+ - new static function, mb_getcharlens, allocates and returns an array
+ of character lengths for (possibly multibyte) characters in the
+ argument string
+ - change pattern matching operations to use while loops instead of
+ for loops to handle multibyte characters better (no more simple
+ increment or decrement)
+ - change pattern matching operations to use multibyte character
+ operations instead of simple increments and decrements. Don't
+ use BACKUP_CHAR_P -- use the mblen array instead, because that
+ avoids the N**2 behavior of having to count from the beginning
+ of the string each time you want to back up one character. Changes
+ to remove_pattern and match_pattern
+
+ 1/12
+ ----
+lib/readline/display.c
+ - make expand_prompt count multbyte characters in the prompt string
+ by using _rl_find_next_mbchar (and copying possibly more than one
+ byte) instead of a simple increment and single byte copy
+
+ 1/13
+ ----
+lib/readline/display.c
+ - expand_prompt takes a new reference argument -- it returns
+ the actual count of (possibly multibyte) characters displayed
+ on the screen
+ - don't short-circuit in expand_prompt unless we're not going to
+ be using any multibyte characters
+ - change calls to expand_prompt to pass an argument for the
+ number of physical characters the prompt occupies
+ (prompt_physical_chars)
+ - initialize `lpos' (the physical cursor position) from
+ prompt_physical_chars in rl_redisplay
+
+lib/readline/mbutil.c
+ - in _rl_find_prev_mbchar_internal, if mbrtowc returns -1 or -2, and
+ we assume that the character is a single-byte char, make sure we
+ update `prev' so it doesn't get lost. Fixes problems encountered
+ when a non-ascii char is the last char on the line and we're moving
+ back past it with ^B, and other display problems caused by the same
+ situation
+
+ 1/15
+ ----
+lib/readline/doc/rltech.texi
+ - document RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE in the
+ description of rl_expand_prompt()
+
+ 1/20
+ ----
+bashline.c
+ - in initialize_readline, make sure M-C-j and M-C-m are still bound to
+ vi-editing-mode before unbinding them -- they may have been rebound
+ in an inputrc
+
+variables.c
+ - in unbind_variable, unset attributes other than `local' and exported
+ (if the variable came from a temporary environment) when unsetting a
+ local variable inside a function
+
+ 1/21
+ ----
+configure.in
+ - add libintl build directory to the list of include directories if
+ it's being built (using INTL_BUILDDIR)
+
+Makefile.in,{builtins,lib/{sh,malloc}}/Makefile.in
+ - substitute LIBBUILD as ${BUILD_DIR}/${LIBSUBDIR}
+ - define INTL_BUILDDIR as ${LIBBUILD}/intl
+
+{builtins,lib/sh}/Makefile.in
+ - make sure INTL_INC is added to the list of include directories
+ - make sure INTL_LIBSRC is defined with the correct value
+
+{configure,Makefile,{builtins,lib/sh}/Makefile}.in
+ - substitute LIBINTL_H as ${INTL_BUILDDIR}/libintl.h
+
+Makefile.in,builtins/Makefile.iin
+ - all files depending on bashintl.h also depend on ${LIBINTL_H}
+ (which may be empty)
+
+Makefile.in
+ - make a rule telling how to build lib/intl/libintl.h if necessary
+
+ 1/24
+ ----
+builtins/read.def
+ - make sure that the array name supplied as an argument to -a is a
+ valid identifier
+
+parse.y
+ - make the \W expansion abbreviate $HOME with a ~ (seems to be more
+ useful)
+
+doc/{bash.1,bashref.texi}
+ - document new behavior of \W
+
+subst.c
+ - make sure parameter_brace_expand_rhs uses the first character of
+ $IFS when making the string to return from the expanded word
+ (which, in the case of "$@" or $@, contains multiple words that
+ need to be separated)
+
+ 1/25
+ ----
+builtins/common.c
+ - change get_job_spec to make `%' by itself or an empty argument
+ return NO_JOB
+
+jobs.h
+ - new possible value for a job spec return value: BAD_JOBSPEC
+ (for syntactically invalid specs, like the empty string)
+
+shell.c
+ - in open_shell_script, check to see whether or not we can find and
+ open the filename argument before setting dollar_vars[0] or
+ manipulating BASH_SOURCE, so the error messages come out better
+
+subst.c
+ - in string_list_internal, short-circuit right away to savestring()
+ if the list only has a single element
+
+ 1/28
+ ----
+lib/readline/rltypedefs.h
+ - new set of typedefs for functions returning char * with various
+ arguments (standard set)
+
+lib/readline/complete.c
+ - new function pointer, rl_completion_word_break_hook, called by
+ _rl_find_completion_word, used to set word break characters at
+ completion time, allowing them to be position-based
+
+lib/readline/doc/rltech.texi
+ - documented rl_completion_word_break_hook
+
+lib/readline/kill.c
+ - added new rl_unix_filename_rubout, which deletes one filename
+ component in a Unix pathname backward (delimiters are whitespace
+ and `/')
+
+lib/readline/readline.h
+ - extern declaration for rl_unix_filename_rubout
+
+lib/readline/funmap.c
+ - new bindable readline command `unix-filename-rubout'
+
+lib/readline/doc/{readline.3,rluser.texi},doc/bash.1
+ - documented `unix-filename-rubout'
+
+ 1/29
+ ----
+lib/readline/histexpand.c
+ - change history_tokenize_internal to handle non-whitespace delimiter
+ characters by creating separate fields (like the shell does when
+ splitting on $IFS)
+
+ 1/30
+ ----
+lib/glob/xmbsrtowcs.c
+ - new function, xdupmbstowcs, for convenience: calls xmbsrtowcs
+ while allocating memory for the new wide character string
+ - some small efficiency improvments to xmbsrtowcs
+
+include/shmbutil.h
+ - extern declaration for xdupmbstowcs
+
+lib/glob/strmatch.h
+ - include config.h for definition of HANDLE_MULTIBYTE
+ - remove the HAVE_LIBC_FNM_EXTMATCH tests
+ - new extern declaration for wcsmatch(whchar_t *, wchar_t *, int)
+
+configure.in
+ - remove call to BASH_FUNC_FNMATCH_EXTMATCH; it's no longer used
+
+lib/glob/smatch.c
+ - simplify xstrmatch() by using xdupmbstowcs() instead of inline code
+
+lib/glob/glob.c
+ - modify mbskipname() to avoid the use of alloca
+ - simplify mbskipname() by using xdupmbstowcs() instead of inline code
+ - simplify glob_pattern_p() by using xdupmbstowcs() instead of
+ inline code
+ - fix memory leak in wdequote_pathname
+ - simplify wdequote_pathname() by using xdupmbstowcs() instead of
+ inline code
+
+lib/glob/strmatch.c
+ - new function, wcsmatch(), `exported' wide-character equivalent of
+ strmatch()
+
+subst.c
+ - old match_pattern is now match_upattern
+ - match_pattern now either calls match_upattern or converts
+ mbstrings to wide chars and calls match_wpattern
+ - match_upattern reverted to old non-multibyte code
+ - new function: match_pattern_wchar, wide character version of
+ match_pattern_char
+
+ 2/1
+ ---
+subst.c
+ - old remove_pattern is now remove_upattern
+ - remove_upattern reverted to old non-multibyte code (pre-Waugh patch)
+ - new multibyte version of remove_pattern: remove_wpattern
+ - remove_pattern now calls either remove_upattern or converts a
+ multibyte string to a wide character string and calls
+ remove_wpattern
+ - new function, wcsdup, wide-character version of strdup(3)
+
+ 2/4
+ ---
+print_cmd.c
+ - temporarily translate a >&filename redirection from
+ r_duplicating_output_word to r_err_and_out (as the expansion code
+ in redir.c does) so it prints without a leading `1' (file
+ descriptor)
+
+ 2/5
+ ---
+aclocal.m4
+ - add a check for wcsdup to BASH_CHECK_MULTIBYTE
+
+config.h.in
+ - add HAVE_WCSDUP define
+
+ 2/9
+ ---
+builtins/shift.def
+ - fix a call to sh_erange that possibly dereferences a NULL pointer
+
+ 2/12
+ ----
+general.c
+ - start at a general set of file property checking functions:
+ file_isdir(), file_iswdir() (is writable directory)
+
+general.h
+ - extern declarations for new functions
+
+lib/sh/tmpfile.c
+ - use file_iswdir() to make sure the temporary directory used for
+ here documents and other temp files is writable in get_sys_tmpdir()
+
+ 2/17
+ ----
+bashline.c
+ - fix conditional binding of emacs-mode M-~ -- there is a default
+ binding for it (rl_tilde_expand), so a straight call to
+ rl_bind_key_if_unbound_in_map doesn't do the right thing
+
+ 2/27
+ ----
+[bash-3.0-beta1 released]
+
+ 2/29
+ ----
+subst.c
+ - fixed expansion so referencing $a, when a is an array variable
+ without an element assigned to index 0, exits the shell when
+ `-u' is enabled
+
+expr.c
+ - make the exponentiation operator (**) associative, so things like
+ 2**3**4 work right (change `if' to `while')
+
+ 3/3
+ ---
+lib/sh/strftime.c
+ - SCO Unix 3.2, like Solaris, requires that the system's `timezone'
+ variable be declared as long
+
+lib/readline/{bind,histfile,input,parens}.c
+ - changes for Tandem (including `floss.h' (?))
+
+ 3/4
+ ---
+subst.c
+ - change param_expand to quote the entire expanded string instead
+ of just the escape characters if the expansion appears between
+ double quotes or in a here-document (for simple variable expansions
+ or expansions of positional parameters)
+
+ 3/8
+ ---
+subst.c
+ - analogous changes to parameter_brace_expand_word to fix the same
+ quoting problem as on 3/4; fix callers to understand that the
+ value returned might be quoted now and should be dequoted if
+ necessary
+ - add a `quoted' argument to get_var_and_type, change callers
+ - change today's fix and fix from 3/4 to not call quote_string if the
+ value is "" (because quote_string turns that into CTLNUL\0)
+
+ 3/9
+ ---
+builtins/cd.def
+ - resetpwd() now takes a `caller' argument so it can be used by pwd
+ as well as cd
+ - change pwd_builtin to call resetpwd() if sh_physpath() fails to
+ return a valid pathname
+
+ 3/14
+ ----
+expr.c
+ - reworked exp0 and readtok() to make post-increment and post-decrement
+ into real tokens, which may be separated from their accompanying
+ variables by whitesapce
+ - made analogous changes to readtok() to make pre-increment and
+ pre-decrement work when separated from their accompanying identifier
+ by whitespace
+
+ 3/18
+ ----
+lib/readline/misc.c
+ - in rl_maybe_unsave_line, don't force rl_replace_line to clear
+ the undo_list, since it might point directly at an undo list
+ from a history entry (to which we have no handle)
+
+ 3/19
+ ----
+lib/readline/display.c
+ - rl_save_prompt and rl_restore_prompt now save and restore the value
+ of prompt_physical_chars
+ - set prompt_physical_chars in rl_redisplay when expand_prompt has
+ not been called (e.g., when rl_display_prompt is set and is not
+ equal to rl_prompt, like when searching)
+
+lib/readline/histexpand.c
+ - don't call add_history in history_expand if the `:p' modifier is
+ supplied; leave that to the calling application. This means that
+ `history -p', for example, will not add anything to the history
+ list (as documented), nor will history expansions invoked by
+ emacs-mode M-C-e line editing
+
+config-bot.h
+ - check whether HAVE_DECL_SYS_SIGLIST is defined to 1 rather than just
+ defined, to work around newer versions of autoconf defining it to 0
+
+config.h.in
+ - change default status of HAVE_MALLOC to #undef instead of #define
+
+bashhist.c
+ - extern declarations for rl_done and rl_dispatching
+ - don't call re_edit from pre_process_line unless rl_dispatcing is zero,
+ so we don't call it from something like shell-expand-line
+ - change pre_process_line to add an expanded history specification
+ that returned `print only' to the history list, since history_expand
+ no longer does it (and, when using readline, do it only when
+ rl_dispatching is zero)
+
+ 3/22
+ ----
+config.h.in,aclocal.m4
+ - change bash-specific functions that look in struct dirent to define
+ HAVE_STRUCT_DIRENT_xxx, like AC_CHECK_MEMBERS does (though the
+ functions are otherwise the same)
+ - new function, BASH_STRUCT_DIRENT_D_NAMLEN, define
+ HAVE_STRUCT_DIRENT_D_NAMLEN if struct dirent has a `d_namlen' member
+
+configure.in
+ - call BASH_STRUCT_DIRENT_D_NAMLEN
+
+include/posixdir.h
+ - use new and renamed HAVE_STRUCT_DIRENT_D_xxx defines
+
+ 4/7
+ ---
+builtins/cd.def
+ - ensure that we print out a non-null pathname after getting a
+ directory from CDPATH and canonicalizing it (e.g., if the result
+ exceeds PATH_MAX in length and the_current_working_directory is
+ set to NULL)
+
+ 4/12
+ ----
+print_cmd.c
+ - new function to print out assignment statements when `set -x' has
+ been enabled: xtrace_print_assignment
+
+externs.h
+ - extern declaration for xtrace_print_assignment
+
+ 4/13
+ ----
+{subst,variables}.c
+ - call xtrace_print_assignment instead of using inline code
+
+jobs.c
+ - if turning on job control when it was previously off, set
+ pipeline_pgrp to 0 in set_job_control so make_child puts
+ subsequent children in their own process group
+
+ 4/14
+ ----
+general.c
+ - new function, legal_alias_name, called to decide whether an
+ argument to add_alias is a valid alias name -- essentially any
+ character except one which must be quoted to the shell parser
+ and `/'
+
+general.h
+ - new extern declaration for legal_alias_name
+
+builtins/alias.def
+ - `unalias' now returns failure status if no NAME arguments are
+ supplied and -a is not given
+ - call legal_alias_name to make sure alias name is valid before
+ calling add_alias from alias_builtin
+
+ 4/19
+ ----
+include/shmbutil.h
+ - include <config.h> for definition of HANDLE_MULTIBYTE rather than
+ duplicating logic
+
+ 4/20
+ ----
+
+doc/{bash.1,bashref.texi}
+ - make sure $0 is consistently referred to as a `special parameter'
+ - document which characters are now not allowed in alias names
+
+ 4/23
+ ----
+
+builtins/{jobs,kill,wait}.def
+ - removed requirement that job control be enabled to use job control
+ notation, as SUSv3 implies
+
+subst.c
+ - based on a message from David Korn, change param_expand to not call
+ string_list_dollar_star if the only quoting is Q_HERE_DOCUMENT --
+ quoted here documents are like double quoting, but not exactly
+ - analogous changes to list_remove_pattern and pos_params
+
+ 4/24
+ ----
+lib/readline/doc/rluser.texi
+ - fix error in description of emacs-mode C-xC-e command (uses $VISUAL
+ instead of $FCEDIT)
+
+ 4/28
+ ----
+support/bashbug.sh
+ - integrate a patch from Stefan Nordhausen
+ <nordhaus@informatik.hu-berlin.de> that reduces race conditions
+ by using a temporary directory inside $TMPDIR and creating the
+ temp files in that
+
+ 4/30
+ ----
+builtins/common.c
+ - use pathconf(".", _PC_PATH_MAX) where available to size the argument
+ to getcwd() rather than using a straight PATH_MAX
+
+builtins/cd.def
+ - if get_working_directory fails and returns null (causing resetpwd
+ to return NULL), use set_working_directory to set $PWD to the
+ absolute pathname for which chdir just succeeded
+
+ 5/1
+ ---
+lib/readline/vi_mode.c
+ - in rl_vi_change_to, call _rl_vi_set_last with rl_numeric_arg instead
+ of `last', since they're equal at call time and rl_vi_domove can
+ change rl_numeric_arg (which vi apparently updates). Fixes redo bug
+ of `c2....' reported by Marion Berryman <mwberryman@copper.net>
+
+ 5/4
+ ---
+parse.y
+ - fix decode_prompt_string to properly deal with strftime() returning 0
+
+ 5/6
+ ---
+variables.c
+ - in make_local_array_variable, return an already-existing local array
+ variable immediately rather than creating a new array (causing a
+ memory leak)
+
+ 5/8
+ ---
+lib/readline/vi_mode.c
+ - change rl_vi_domove to set rl_explicit_arg before calling
+ rl_digit_loop1 so that multi-digit numeric arguments work right
+ - _rl_vi_last_command is no longer static
+
+lib/readline/rlprivate.h
+ - new extern declaration for _rl_vi_last_command
+
+lib/readline/text.c
+ - change rl_newline to only call _rl_vi_reset_last if the last command
+ (_rl_vi_last_command) is not a text modification command. This lets
+ the last-command and last-argument work across command lines
+
+ 5/13
+ ----
+builtins/common.c
+ - use getcwd(0,0) rather than providing a fixed pathname with a fixed
+ length (PATH_MAX) so getcwd() will allocate sufficient memory
+
+aclocal.m4
+ - change BASH_FUNC_GETCWD to check whether or not getcwd(0,0) will
+ allocate memory for the returned value -- nobody implements that
+ and getcwd-via-popen, so it should capture the old test as well
+
+ 5/27
+ ----
+
+builtins/trap.def
+ - the historical behavior of assuming that a signal's handling should
+ be set to its original disposition is only in effect if a single
+ argument is given, otherwise the first argument is assumed to be a
+ command to execute
+ - when in posix mode, if trap gets a single argument, display an
+ error message and return EX_USAGE
+ - change the help message and usage string to better explain trap's
+ behavior
+
+doc/{bash.1,bashref.texi}
+ - describe the new default behavior when the first argument is a
+ signal spec
+ - note that signal names are case insensitive and the SIG prefix is
+ optional in arguments to `trap'
+ - note that signal name arguments to `kill' are case-insensitive
+
+lib/readline/display.c
+ - make sure rl_on_new_line_with_prompt sets rl_display_prompt to
+ rl_prompt (just to make sure it's set)
+ - have rl_on_new_line_with_prompt use local_prompt if it's set
+
+ 6/2
+ ---
+subst.c
+ - in string_extract_double_quoted, cope with extract_delimited_string
+ returning NULL, as it can when attempting completion on an unclosed
+ command substitution
+
+ 6/24
+ ----
+lib/readline/complete.c
+ - change print_filename to add a `/' to listed directory names if
+ `mark-directories' has been enabled
+
+builtins/umask.def
+ - make sure that the mask passed to parse_symbolic_mode has all but
+ the operative low eight bits masked off, to avoid complementing
+ all 0s to -1, which is the error return code. This makes things
+ like `a=rwx' and `ugo=rwx' work and turn off the umask
+
+ 6/26
+ ----
+builtins/getopts.def
+ - when `getopts' reaches the end of options, unset OPTARG before
+ returning EOF. In response to a bug report from Apple
+
+configure.in
+ - when cross-compiling, don't set CPPFLAGS_FOR_BUILD and
+ LDFLAGS_FOR_BUILD from CPPFLAGS and LDFLAGS, respectively, since
+ those are for the target instead of the build platform (report
+ from robert@schwebel.de)
+
+shell.c
+ - a shell whose standard error (but not standard output) is directed
+ to a terminal should be interactive, according to POSIX/SUS. This
+ means that sh > sh.out will start an interactive shell. Bug report
+ from llattanzi@apple.com
+
+doc/{bash.1,bashref.texi}
+ - change mention of standard output to standard error in definition
+ of interactive shell
+
+lib/readline/vi_mode.c
+ - new convenience function, rl_vi_start_inserting, calls
+ _rl_vi_set_last to save the last textmod command state and then calls
+ rl_vi_insertion_mode to enter insert mode
+ - change functions to use rl_vi_start_inserting
+
+lib/readline/readline.h
+ - extern declaration for rl_vi_start_inserting
+
+bashline.c
+ - new function for vi-mode completion, bash_vi_complete. Does
+ filename expansion as POSIX specifies, unlike the default readline
+ bindings (which don't know about globbing). Bound to `\', `*',
+ and `=' in vi command keymap. Internals very similar to
+ rl_vi_complete; just calls bash glob expansion functions
+
+lib/readline/vi_mode.c
+ - change rl_vi_change_char so that an entire change is a single
+ undoable event, rather than each individual change in a [count]r
+ command
+ - fix rl_vi_change_char so that replacing characters up to EOL works
+ rather than generating rl_ding
+ - fix rl_vi_change_case so that replacing characters up to EOL works
+ rather than generating rl_ding
+
+ 6/28
+ ----
+builtins/echo.def
+ - call clearerr(stdout) before writing anything and testing its
+ failure or success
+
+ 6/29
+ ----
+bashline.c
+ - only set rl_explicit_arg in bash_glob_complete_word if readline is
+ in emacs mode; let bash_vi_complete take care of setting it in vi
+ mode
+ - fix bash_vi_complete to only set rl_explicit_arg unless the posix
+ conditions are met: no globbing characters in the vi `bigword'
+ being completed
+
+ 6/30
+ ----
+[bash-3.0-rc1 released]
+
+ 7/1
+ ---
+lib/readline/complete.c
+ - make sure `extension_char' is initialized before deciding whether
+ or not the append a `/' to a possible completion when visible-stats
+ is not enabled
+
+ 7/2
+ ---
+subst.c
+ - fix a boundary overrun in string_extract_double_quoted that could
+ occur when the word completion code attempts to expand an incomplete
+ construct (like a quoted unclosed command substitution)
+
+ 7/4
+ ---
+subst.c
+ - set tempenv_assign_error to non-zero if an assignment to the
+ temporary environment fails for some reason (e.g., attempted
+ assignment to a readonly variable)
+
+execute_cmd.c
+ - fix execute_simple_command to force a non-interactive shell in
+ POSIX mode to exit if an assignment to the temporary environment
+ preceding a special builtin fails (bug report from
+ llattanzi@apple.com)
+
+ 7/5
+ ---
+bashline.c
+ - in bash_directory_completion_hook, don't perform word expansions
+ if the filename appears to have been completed from the file
+ system rather than typed in by the user. Bug reported by Tim
+ Waugh <twaugh@redhat.com>
+
+ 7/7
+ ---
+lib/readline/misc.c
+ - if _rl_maybe_save_line is being asked to save a line other than
+ what's already saved, free up the current saved line and save the
+ current contents of rl_line_buffer. Bug reported by
+ llattanzi@apple.com
+
+ 7/12
+ ----
+lib/readline/input.c
+ - do better EOF detection in rl_gather_tyi -- if a read returns 0 when
+ the fd is in non-blocking mode, stuff an EOF into the input stream
+ (reported by mattias@virtutech.se)
+
+ 7/13
+ ----
+lib/readline/vi_mode.c
+ - make sure rl_vi_put honors `count' arguments and yanks things
+ multiple times if requested
+
+ 7/16
+ ----
+builtins/umask.def
+ - make sure that the `who' part of the umask symbolic mode argument
+ defaults to `a' if it's missing
+
+flags.c
+ - make sure that maybe_make_restricted only gets called after the
+ shell is initialized, so `bash -r' doesn't result in inappropriate
+ error messages
+
+[bash-3.0 frozen]