				 7/27/2004
				 ---------

[bash-3.0 released]

				   7/28
				   ----
array.c
	- in array_insert(), make sure the value to be added is non-NULL before
	  calling savestring() on it

builtins/reserved.def
	- fix description of `CDPATH'

lib/readline/display.c
	- when expanding a prompt that spans multiple lines with embedded
	  newlines, set prompt_physical_chars from the portion after the
	  final newline, not the preceding portion.  Bug reported by
	  "Ralf S. Engelschall" <rse@engelschall.com>

make_cmd.c
	- explicitly declare `lineno' in function prologue for make_case_command

builtins/evalfile.c
	- include `trap.h' for declaration for run_return_trap

bashline.c
	- fix a `return' without a value in enable_hostname_completion

general.c
	- include test.h for extern declaration for test_eaccess

externs.h
	- add declaration for zcatfd

tests/{history,histexp}.tests
	- unset HISTFILESIZE to avoid problems if a value of 0 is inherited
	  from the environment

				   7/30
				   ----
bashline.c
	- small changes to glob_expand_word to perform tilde expansion before
	  attempting globbing

builtins/Makefile.in
	- fix the install-help target to not cd into the `helpfiles'
	  subdirectory, so a value of $INSTALL_DATA containing a relative
	  pathname (e.g., .././support/install.sh) remains valid

				   7/31
				   ----
subst.c
	- new function, mbstrlen(s), returns length of a multibyte character
	  string

include/shmbutil.h
	- new macro, MB_STRLEN(s), calls mbstrlen or STRLEN as appropriate

builtins/trap.def
	- small change so that a first argument that's a valid signal number
	  (digits only -- no symbolic names) will be treated as a signal and
	  reverted back to the original handling disposition.  Fixes debian
	  complaints

subst.c
	- call MB_STRLEN instead of STRLEN where appropriate in
	  parameter_brace_expand_length to handle multibyte characters properly
	- call MB_STRLEN instead of strlen in verify_substring_values so that
	  negative substrings of strings with multibyte chars work properly

				    8/1
				    ---
jobs.c
	- describe_pid needs to write to stderr, not stdout (POSIX)
	- start_job, since it's only used by builtins (fg/bg), needs to write
	  its output to stdout, not stderr (POSIX)

sig.c
	- add an `orig_flags' member to struct terminating_signal so the
	  original signal handling flags (SA_RESTART, etc.) can be preserved
	  on POSIX systems
	- make sure to preserve the signal flags state in
	  initialize_terminating_signals and reset them for child processes
	  in reset_terminating_signals

builtins/fc.def
	- fixed an off-by-one error that caused `fc -l' to list one too many
	  history entries
	- in posix mode, `fc' should not list any indication as to whether or
	  not history lines have been modified (POSIX)
	- when in posix mode, the default editor for `fc' should be `ed' (POSIX)

doc/bashref.texi
	- updated the description of `trap' behavior when given a first
	  argument that is a valid signal number
	- noted that `fc -l' won't indicate whether a history entry has been
	  modified if the shell is in posix mode

builtins/command.def
	- fixed bug: `command -v' is supposed to be silent if a command is not
	  found

builtins/hash.def
	- `hash' should print its `hash table empty' message to stderr

lib/readline/misc.c
	- back out 7/7 change to _rl_maybe_save_line; it breaks emacs-mode ^P

general.c
	- changed base_pathname so that it will return reasonable results for
	  non-absolute pathnames -- this is what is intended by all of its
	  callers

arrayfunc.c
	- fix array_variable_part to return NULL if it finds an invisible
	  variable in the hash table.  Fixes seg fault caused by referring to
	  unset local variable using array notation

{locale,variables}.c
	- support LC_TIME as a special locale variable so HISTTIMEFORMAT tracks
	  the current locale

				    8/2
				    ---
variables.c
	- fixed small memory leak in makunbound() when a local array variable
	  is unset.  Fix from William Park

lib/readline/display.c
	- fixed a problem when computing the number of invisible characters on
	  the first line of a prompt whose length exceeds the screen width
	  (should only happen when invisible characters occur after the
	  line wrap).  Bug reported by agriffis@gentoo.org

builtins/command.def
	- `command -V' passes a new flag, CDESC_ABSPATH, which means to convert
	  to an absolute path

builtins/type.def
	- in posix mode, `type' and `command -v/-V' should not report
	  non-executable files, even if the execution code will attempt to
	  run them.  Other posix shells do this

doc/bashref.texi
	- add note to POSIX Mode section describing behavior of type and command
	  when finding a non-executable file

execute_cmd.c
	- force extended_glob to 1 before calling binary_test in
	  execute_cond_node so that the right extended pattern matching gets
	  performed

				    8/3
				    ---
braces.c
	- make sure lhs[0] and rhs[0] are cast to `unsigned char' so chars
	  with values > 128 are handled correctly

builtins/printf.def
	- change bexpand() and printstr() to handle strings with a leading
	  '\0' whose length is non-zero, since that's valid input for the
	  `%b' format specifier

subst.c
	- fix a couple of instances of find_variable that didn't check the
	  result for an invisible variable

variables.c
	- BASH_ARGC, BASH_ARGV, BASH_SOURCE, BASH_LINENO no longer created as
	  invisible vars

pcomplete.c
	- make sure COMP_WORDS is not invisible when bind_comp_words returns
	- ditto for COMPREPLY in gen_shell_function_matches

				    8/4
				    ---
braces.c
	- fix problem where ${ was ignored but did not increment the open
	  brace count.  Bug reported by Tim Waugh <twaugh@redhat.com>

variables.c
	- if make_local_variable finds a variable in the correct context in
	  the right variable scope, make sure it's not invisible before
	  returning it

				    8/5
				    ---
builtins/trap.def
	- fixed usage message to show `action' as not optional, though it
	  actually is when not in posix mode (for a single argument)

				    8/7
				    ---
configure.in
	- kfreebsd-gnu has had its sbrk() problems fixed, and no longer needs
	  to be configured --without-gnu-malloc

lib/readline/vi_mode.c
	- in rl_vi_search, free any saved history line before starting the
	  search, so failure leaves you at that line, not the last line in
	  the history (assuming the current line is not the last history line).
	  Fix from llattanzi@apple.com to replace fix of 7/7

				    8/9
				    ---
support/Makefile.in
	- renamed `mostly-clean' target to `mostlyclean'

				   8/11
				   ----
lib/readline/vi_mode.c
	- make same change for EOL in multibyte character case of
	  rl_vi_change_char

				   8/12
				   ----
subst.c
	- in verify_substring_values, fix off-by-one error checking bounds of
	  `offset', esp. in array values (e.g., getting the highest element
	  of an array)

				   8/16
				   ----
aclocal.m4
	- change BASH_CHECK_DEV_FD to make sure that file descriptors > 2 are
	  accessible via /dev/fd, unlike FreeBSD 5.x

lib/sh/strftime.c
	- make sure `zone' is initialized with gettimeofday before it is used
	- work around HPUX lack of `altzone' and differing definitions of
	  `timezone'

lib/malloc/malloc.c
	- internal_memalign and memalign now take a `size_t' as their first
	  argument, which seems to be the prevailing standard

lib/malloc/{malloc.c,shmalloc.h}
	- change sh_memalign to take a `size_t' as its first argument

builtins/echo.def
	- if posixly_correct and xpg_echo are both set, don't try to interpret
	  any arguments at all, as POSIX/XOPEN requires (fix inspired by Paul
	  Eggert)

doc/bashref.texi
	- amend description of bash posix mode to include new echo behavior

builtins/fg_bg.def
	- allow bg to take multiple job arguments, as posix seems to specify,
	  placing them all in the background, returning the status of the last
	  one as the status of `bg'

lib/readline/vi_mode
	- fix _rl_vi_change_mbchar_case (multibyte-char version of `~'
	  command) to have the right behavior at EOL -- handle case where vi
	  mode backs up at the end of the line

				   8/18
				   ----
array.c
	- check for an empty array in array_rshift before shifting elements
	  and adjusting max_index
	- check for null array in array_subrange

jobs.c
	- fix raw_job_exit_status to not ignore exit status of the last
	  process in the pipeline when `set -o pipefail' is enabled

				   8/19
				   ----
lib/readline/mbutil.c
	- make sure _rl_find_next_mbchar_internal has a valid multibyte
	  character before it checks whether or not it's a zero-width
	  wide character and adjusts point accordingly

                                  8/24
                                   ----
bashline.c
        - new function, bash_directory_expansion, duplicates the expansions
          performed on the directory name by rl_filename_completion_function
        - call bash_directory_expansion in command_word_completion_function
          if we decide we're doing tilde expansion (and any other
          canonicalization) on the directory name being completed

                                   8/25
                                   ----
configure.in
        - use new-style AC_CHECK_HEADER to check for sys/ptem.h (which requires
          sys/stream.h).  The correct checks are in the code, but autoconf
          complains if sys/stream.h is not included, rather than simply
          checking for the header's presence

				   8/26
				   ----
builtins/hash.def
	- fix a bug that prevented `hash -d' from working right (as soon as
	  hash removed a command from the table, the bug caused it to be added
	  right back)

				   8/27
				   ----
doc/{bash.1,bashref.texi}
	- explicitly note that conditional primaries that operate on files
	  operate on the targets of symbolic links rather than the links
	  themselves

				   8/30
				   ----
lib/readline/display.c
	- fix multibyte calculation of `physchars' in prompt expansion, to
	  handle double-width multibyte characters correctly
	- changes to rl_redisplay to handle prompts longer than the screenwidth
	  that might contain double-width multibyte characters.  Fixes from
	  Tomohiro Kubota

				    9/6
				    ---
subst.c
	- change word_list_split to avoid really bad behavior caused by calling
	  list_append for each split word -- as the list gets long, you have
	  to traverse it every time.  Keep a pointer to the end of the list and
	  and just tack onto it

				    9/8
				    ---
lib/readline/complete.c
	- change fnprint to calculate the displayed width of a filename in
	  the same way as fnwidth

subst.c
	- in verify_substring_values, when expanding ${array[@]:offset}, make
	  sure negative offsets count from one greater than the array's
	  maximum index so things like ${x[@}: -1} work to give the last element
	  (requires fixing array tests)

builtins/common.c
	- new error function, sh_wrerror(),  for builtins to call when a write
	  error occurs

builtins/common.h
	- extern declaration for sh_wrerror()

builtins/cd.def
	- change builtin_error call to use sh_wrerror()

builtins/echo.def
	- report write errors with sh_wrerror() instead of just returning
	  failure

builtins/printf.def
	- change printstr to return failure (-1) or success (0) indication
	  rather than void
	- report write errors when printstr() fails, return failure
	- if any of the PF/printf calls fail, report write error and return
	  failure

execute_cmd.c
	- change execute_in_subshell so the subshell command inherits the
	  command timing flags from the enclosing COMMAND *

				   9/11
				   ----
[prayers for the victims of 9/11/2001]

lib/sh/strnlen.c
	- new file, implementation of GNU libc extension function strnlen

lib/sh/Makefile.in, {config.h,configure,Makefile}.in, MANIFEST
	- changes for strnlen

configure.in
	- version changed to 3.1-devel

doc/bash.1, lib/readline/doc/rluser.texi
	- added description of `-o plusdirs' to complete/compgen (thanks,
	  Arnold)

parse.y
	- new parser_state flag, PST_ASSIGNOK, if set indicates we're parsing
	  arguments to a builtin that accepts assignment statement arguments
	- turn on PST_ASSIGNOK in read_token_word when appropriate
	- turn off PST_ASSIGNOK in read_token when appropriate
	- don't attempt to parse a compound assignment specially unless we're
	  in a position where an assignment statement is acceptable, or
	  PST_ASSIGNOK is set

				   9/13
				   ----
variables.c
	- make BASH_ARGC, BASH_ARGV, BASH_LINENO, and BASH_SOURCE
	  non-unsettable, since the shell uses those values internally

expr.c
	- make exponentiation right-associative, as is apparently correct

				   9/16
				   ----
arrayfunc.c
	- make sure convert_var_to_array marks the environment as needing
	  recreation if the converted variable was exported

				   9/17
				   ----
braces.c
	- mark ${ as introducing an additional level of braces only if it's
	  not in a quoted string -- quoted strings are handled before brace
	  matching is done

parse.y
	- fixed an obscure problem in history_delimiting_chars where the `in'
	  in a case statement could have a semicolon added after it, if the
	  `case word' was on a previous line

support/config.guess
	- support for newest versions of tandem non-stop kernel

lib/readline/display.c
	- in compute_lcd_of_matches, explicitly cast `text' to `char *' before
	  passing it to rl_filename_dequoting_function

lib/readline/terminal.c
	- bind the key sequence sent by the keypad `delete' key to delete-char
	  (same as ^D in emacs mode)

builtins/ulimit.def
	- in print_all_limits, don't print anything if get_limit returns
	  -1/EINVAL, indicating that the kernel doesn't support that particular
	  limit
	- add -i (max number of pending signals), -q (max size of posix msg
	  queues), -x (max number of file locks) for systems (Linux) that
	  support them

doc/{bash.1,bashref.texi}
	- fix description of correspondence between FUNCNAME, BASH_LINENO,
	  and BASH_SOURCE indices in description of BASH_LINENO

				   9/18
				   ----
lib/sh/shquote.c
	- don't quote CTLESC and CTLNUL with CTLESC in sh_backslash_quote, as
	  long as the resultant string never gets sent to the word expansion
	  functions without going through the shell parser

externs.h
	- add extern declarations for strnlen and strpbkrk from lib/sh

subst.[ch]
	- changes to handle case where IFS consists of multibyte characters.
	  Changed: string_extract_verbatim, split_at_delims,
	  string_list_dollar_star, string_list_dollar_at, list_string,
	  get_word_from_string, setifs

				   9/19
				   ----
mailcheck.c
	- change file_mod_date_changed to reset the cached mail file data if
	  the file size drops to zero

lib/readline/complete.c
	- change append_to_match so that a non-zero value for
	  rl_completion_suppress_append will cause no `/' to be appended to a
	  directory name

bashline.c
	- experimental change to suppress appending a slash for a completed
	  filename that is found in PATH as well as a directory in the current
	  directory under certain circumstances:  a single instance found in
	  $PATH when `.' is not in $PATH, and multiple instances found in the
	  $PATH, even when `.' is in the $PATH

				   9/24
				   ----
command.h
	- new word flag: W_ASSIGNRHS, means word is rhs of assignment statement
	- new word flag: W_NOTILDE, means word is not to be tilde expanded
	- new word flag (internal): W_ITILDE, means the next character is a
	  tilde that should be expanded

general.c
	- new set of tilde suffixes for use when parsing the RHS of an
	  assignment statement and =~ should not be subject to tilde expansion
	- if ASSIGN_P argument to bash_tilde_expand is 2, use tilde prefixes
	  for parsing RHS of assignment statement

general.[ch]
	- new function bash_tilde_find_word, drop-in replacement for
	  tilde_find_word

subst.c
	- call bash_tilde_expand with secord argument of 2 when expanding rhs
	  of an assignment statement, so tildes after second and subsequent
	  `=' in an assignment are not expanded
	- new function, expand_string_assignment, to expand the rhs of an
	  assignment statement
	- add `~' to EXP_CHAR, the characters that will cause the word
	  expansion functions to be called
	- move tilde expansion into expand_word_internal instead of many
	  different calls to bash_tilde_expand scattered across different
	  functions.  NOTE:  This means that double quotes surrounding a
	  {paramOPword} expansion will cause tilde expansion to NOT be
	  performed on `word'.  I think this is right, what POSIX specifies,
	  and consistent with the behavior of other characters in the rhs

execute_cmd.c
	- take out calls to bash_tilde_expand before calling word expansion
	  functions

				   9/26
				   ----
execute_cmd.c
	- make sure to call UNBLOCK_CHILD before returning on a pipe creation
	  failure in execute_pipeline

				   9/27
				   ----
variables.c
	- change get_bash_command to deal with the_printed_command_except_trap
	  being NULL

execute_cmd.c
	- fix execute_simple_command to deal with the_printed_command being
	  NULL when assigning to the_printed_command_except_trap -- fixes
	  seg fault in savestring()

parse.y
	- change the parser so that the closing `)' in a compound variable
	  assignment delimits a token -- ksh93 does it this way

doc/{bash.1,bashref.texi}
	- change description of tilde expansion to note that expansion is
	  attempted only after the first =~ in an assignment statement

builtins/declare.def
	- when assigning to an array variable with declare -a x=(...), make
	  sure the last character in the rhs  of the variable assignment is
	  `)', not just that it appears somewhere

				   9/28
				   ----
command.h
	- add a `W_NOEXPAND' flag to inhibit all expansion except quote removal
	- add a `W_COMPASSIGN' flag to denote a word is a compound assignment
	  statement

parse.y
	- set W_COMPASSIGN on words that appear to be compound assignments

subst.c
	- pass W_NOXPAND and W_COMPASSIGN through end of expand_word_internal

subst.[ch]
	- new function, expand_assignment_string_to_string, calls
	  expand_string_assignment and then string_list on the result

variables.c
	- assign_in_env now calls expand_assignment_string_to_string

				   9/30
				   ----
builtins/common.c
	- change get_job_spec so the null job `%' once again means the current
	  job

				   10/1
				   ----
subst.c
	- do_assignment_internal now takes a WORD_DESC * as its first
	  argument, and uses its `word' member as the assignment string
	- change expand_word_list_internal to call do_word_assignment instead
	  of do_assignment, passing it `word' instead of, e.g., `word->word'
	- change extract_array_assignment_list to just return the passed
	  string minus a trailing `)' if the last character is a right
	  paren
	- change do_assignment_internal to call extract_array_assignment_list

subst.[ch]
	- change do_assignment and do_assignment_no_expand to take a `char *'
	  instead of `const char *' first argument; change extern prototypes
	- new function, do_word_assignment, takes a WORD_DESC * and calls
	  do_assignment_internal on it; add extern declaration with prototype

general.h
	- new typedef, sh_wassign_func_t, like sh_assign_func_t but takes a
	  WORD_DESC * as its first argument

variables.[ch]
	- assign_in_env now takes a WORD_DESC * as its first argument

				   10/2
				   ----
command.h
	- new word flag, W_ASSNBLTIN, denotes that the word is a builtin
	  command (in a command position) that takes assignment statements
	  as arguments, like `declare'
	- new word flags, W_ASSIGNARG, denotes that word is an assignment
	  statement given as argument to assignment builtin

execute_cmd.c
	- set W_ASSNBLTIN flag in fix_assignment_words if necessary (if there
	  are any arguments that are assignment statements)
	- set W_ASSIGNARG flag in fix_assignment_words if necessary

subst.c
	- new function, do_compound_assignment, encapsulates the necessary
	  code to perform a compound array assignment (including creation of
	  local variables); called from do_assignment_internal
	- to fix the double-expansion problem with compound array assignments
	  that are arguments to builtins like `declare', changed
	  shell_expand_word_list to treat those arguments like assignment
	  statements (with proper creation of local variables inside shell
	  functions) and pass the attribute-setting portion of the statement
	  onto the builtin.  This is what ksh93 appears to do, from inspection
	  of the `ksh93 -x' output

execute_cmd.c
	- fix execute_simple_command:  in case of pipeline or async command,
	  when forking early, set `subshell_environment' so that it can contain
	  both SUBSHELL_PIPE and SUBSHELL_ASYNC -- the two should not be
	  mutually exclusive.  Fixes bug reported by pierre.humblet@ieee.org
	- remove references to last_pid, old_command_subst_pid; use NO_PID as
	  a sentinel value to decide whether or not a child process has been
	  created and needs to be waited for.  Submitted by
	  pierre.humblet@ieee.org to fix recycling-pid problem on cygwin

doc/{bash.1,bashref.texi}
	- fixed documentation of `@(pattern)' extended globbing operator --
	  it succeeds if the string matches one of the patterns, not exactly
	  one.  This is what ksh93 does, too

lib/readline/complete.c
	- fixed rl_menu_complete so that a negative argument cycles backwards
	  through the list

				   10/3
				   ----
subst.c
	- use W_COMPASSIGN flag in do_assignment_internal instead of deciding
	  lexically which assignments are compound array assignments

				   10/6
				   ----
support/shobj-conf
	- additions for System V.5 from Boyd Gerber <gerberb@zenez.com>

subst.c
	- in command_substitute, if subshell_environment includes
	  SUBSHELL_ASYNC, call make_child with the `async_p' argument set to
	  non-zero.  This keeps command substitutions for async commands or
	  pipelines from trying to give the terminal back to the shell's
	  pgrp.  make sure to save and restore last_asynchronous_pid.  Fix
	  suggested by <pierre.humblet@ieee.org>

				   10/7
				   ----
config.h.in
	- add a placeholder definition for WCONTINUED_BROKEN

				   10/9
				   ----
aclocal.m4
	- add BASH_CHECK_WCONTINUED, checks for glibc bug where WCONTINUED is
	  defined but rejected as invalid by waitpid(2)

configure.in
	- add call to BASH_CHECK_WCONTINUED, defines WCONTINUED_BROKEN

redir.c
	- experimental change to add_undo_redirect to save manipulations to
	  file descriptors >= SHELL_FD_BASE (10) on the list of redirections
	  to be undone even if `exec' causes the list to be discarded

doc/{bash.1,bashref.texi}
	- note that redirections using file descriptors > 9 should be used
	  carefully, because they might conflict with file descriptors the
	  shell uses internally

				   10/11
				   -----
parse.y
	- fix pipeline_command production to handle case where `pipeline'
	  as `argument' of `!' or `time' is null (e.g., a syntax error not
	  handled by the grammar)

				   10/13
				   -----
lib/readline/readline.c
	- new internal variable, _rl_bind_stty_chars; if non-zero, bind the
	  terminal special characters to readline equivalents at startup
	- change readline_default_bindings() and reset_default_bindings() to
	  understand _rl_bind_stty_chars

lib/readline/rlprivate.h
	- new extern declaration for _rl_bind_stty_chars

lib/readline/rltty.c
	- change rl_prep_terminal to add support for _rl_bind_stty_chars

				   10/15
				   -----
lib/readline/bind.c
	- new bindable variable, `bind-tty-special-chars', bound to value of
	  _rl_bind_stty_chars

doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
	- documented new readline variable `bind-tty-special-chars'

builtins/pushd.def
	- make the first check for option `--' skip the rest of option
	  checking

				   10/16
				   -----
lib/readline/shell.c
	- change sh_set_lines_and_columns to prefer setenv, which has
	  predictable memory allocation behavior, to putenv, which does not

				   10/19
				   -----
variables.c
	- change push_exported_var so that a tempenv variable has to have the
	  export attribute set (which they all do -- something to look at) and
	  the `propagate' attribute set to be propagated down to the next
	  scope

execute_cmd.c
	- change execute_builtin so that if CMD_COMMAND_BUILTIN is set in the
	  passed flags argument, call pop_scope with a value that says the
	  builtin is not special, since `command' means that preceding variable
	  assignments don't persist in the environment.  Fixes problem with
	  variable assignments preceding command preceding special builtin
	  keeping those variable assignments around (when in posix mode)

				   10/20
				   -----
lib/sh/shquote.c
	- new function, sh_mkdoublequoted, brackets a given string with
	  double quotes and returns a new string.  Flags argument, if non-
	  zero, means to quote embedded double quotes with backslashes

externs.h
	- new extern declaration for sh_mkdoublequoted

parse.y
	- use sh_mkdoublequoted after calling localeexpand()

lib/sh/strtrans.c
	- change ansicstr to understand that  (flags & 4) != 0 means to remove
	  backslash from unrecognized escape sequences

general.c
	- fix logic problem in assignment() that caused non-variable-starter
	  characters to be allowed, resulting in things like `1=xxx' creating
	  a variable `1' in the hash table

				   10/21
				   -----
bashline.c
	- don't call programmable_completions with an assignment statement
	  argument

				   10/22
				   -----
lib/readline/rltty.c
	- in prepare_terminal_settings, turn echoing on (readline_echoing_p)
	  if get_tty_settings fails because the input is not a terminal

				   10/24
				   -----
lib/readline/util.c
	- include rlmbutil.h for multibyte definitions
	- new function, _rl_walphabetic, wide char version of rl_alphabetic

lib/readline/mbutil.c
	- new function, _rl_char_value(buf, ind), returns value of (possibly
	  multibyte) character at buf[ind]

lib/readline/rlmbutil.h
	- extern defines for _rl_walphabetic and _rl_char_value for when
	  multibyte chars are not being used
	- new wrapper definitions for _rl_find_next_mbchar (MB_NEXTCHAR) and
	  _rl_find_prev_mbchar (MB_PREVCHAR) that try to avoid unneeded
	  function calls

lib/readline/text.c
	- fix rl_foward_word to work with multibyte characters (or in a
	  multibyte locale) using above utility functions
	- fix rl_backward_word to work with multibyte characters (or in a
	  multibyte locale) using above utility functions

				   10/26
				   -----
parse.y
	- fix parse_matched_pair so that it doesn't swallow \<newline> when
	  parsing a $'...' construct (call shell_getc with different arg)

				   10/28
				   -----
lib/glob/glob.c
	- after some (compiled-in) threshold, glob_vector will stop using
	  alloca to allocate `struct globval's and will switch to using
	  malloc, with appropriate cleanup before returning

subst.c
	- don't expand tildes after `=' in expand_word_internal, even if the
	  W_TILDEEXP flag is set, unless it's the first tilde in a word
	  marked W_ASSIGNMENT

				   10/31
				   -----
lib/readline/text.c
	- make sure rl_point doesn't go below 0 in rl_delete_horizontal_space
	  (from SUSE, but not sent in)

shell.c
	- make sure shell_is_restricted skips over a single leading `-' in
	  the shell name (from SUSE, but not sent in)

lib/readline/display.c
	- disable `fast redisplay' at the end of the line if in a locale that
	  supports multibyte characters (from SUSE, but not sent in)

lib/readline/histexpand.c
	- fix a problem with finding the delimiter of a `?' substring when
	  compiled for multibyte characters (from SUSE, but not sent in)

				   11/1
				   ----
lib/readline/display.c
	- correct some assignments to _rl_last_c_pos:  when in a multibyte
	  locale, it's used as an absolute cursor position; when not using
	  multibyte characters, it's a buffer offset.  I should have caught
	  this when the multibyte character support was donated

				   11/5
				   ----
general.c
	- change `assignment()' to accept `+=' assignment operator

arrayfunc.[ch]
	- bind_array_variable and assign_array_element both take a new `flags'
	  argument
	- assign_array_var_from_string, assign_array_from_string, and
	  assign_array_var_from_word_list now all take a new `flags' argument
	- change assign_array_var_from_word_list to understand how to append
	  to an array variable
	- change assign_array_var_from_string to understand how to append
	  to an array variable.  It does not unset the previous value if
	  appending, allowing both old values to be changed and new ones to
	  be added

subst.h
	- new flag #defines to use for evaluating assignment statements

{subst,variables}.c, builtins/{declare,read}.def
	- change callers of assign_array_element and bind_array_variable
	- change do_compound_assignment to understand assignment flags
	- change do_assignment_internal to set assignment flags and pass them
	  to underlying functions

pcomplete.c,builtins/{declare,read}.def
	- fix callers of assign_array_var_from_string, assign_array_var_from_word_list

variables.[ch]
	- make_variable_value now takes a new `flags' argument
	- make_variable_value now understands how to append to a particular
	  variable, using the old value
	- bind_variable_value now takes a new `flags' argument
	- change make_variable_value to understand ASS_APPEND flag
	- bind_variable now takes a new `flags' argument
	- bind_variable_internal now takes a new `flags' argument

arrayfunc.c
	- change callers of make_variable_value to add flags arg

builtins/declare.def
	- change callers of bind_variable_value to add flags arg

{execute_cmd,mailcheck,pcomplete,shell,subst,variables}.c,parse.y
builtins/{cd,command,declare,getopts,read,set,setattr}.def
	- change callers of bind_variable to add flags arg

variables.c
	- change callers of bind_variable_internal
	- change bind_variable_internal to pass assignment flags on to
	  make_variable_value
	- change assign_in_env to treat `var+=value' like `var=value'

arrayfunc.c
	- break code that actually constructs the new value and assigns it
	  to a particular array index out into a new functions:
	  bind_array_var_internal.  This fakes out make_variable_value by
	  passing a dummy SHELL_VAR * so it can do proper appending and other
	  += processing
	- changes to assign_array_var_from_string to accept and process as if
	  they were `standalone' assignment statements array assignment words
	  of the form [ind]+=val

				   11/7
				   ----
builtins/declare.def
	- added support for `declare [flags] var+=value'.  `Flags' are applied
	  before the assignment is performed, which has implications for things
	  like `-i' -- if -i is supplied, arithmetic evaluation and increment
	  will be performed

builtins/setattr.def
	- add support for `+=' assignment for rest of `assignment builtins':
	  export, readonly

				   11/12
				   -----
lib/readline/display.c
	- make sure prompt_physical_chars and prompt_invis_chars_first_line
	  are reset to 0 if the prompt string passed to rl_expand_prompt is
	  NULL or empty

				   11/14
				   -----
{configure,config.h}.in
	- check for `raise', define HAVE_RAISE if available

lib/intl/dcigettext.c
	- make sure `raise' is defined if HAVE_RAISE is not before
	  eval-plurah.h is included

lib/malloc/trace.c
	- put extern declaration for imalloc_fopen inside the MALLOC_TRACE
	  #ifdef

				   11/16
				   -----
lib/intl/Makefile.in
	- make sure SHELL is defined to cpp

lib/intl/dcigettext.c
	- make sure we use getcwd() even if HAVE_GETCWD is not defined after
	  including config.h; if SHELL is defined, #define HAVE_GETCWD

				   11/18
				   -----
trap.[ch]
	- new function, int signal_in_progress(int sig), returns TRUE if the
	  trap handler for signal SIG is currently executing

				   11/19
				   -----
redir.c
	- slightly change do_redirection_internal to set the close-on-exec
	  flag for file descriptors > 2 used to save file descriptors < 2
	  using explicit redirections (e.g., `exec 3>&1').  This keeps file
	  descriptors pointing to pipes from being left open but doesn't
	  change the shell's file descriptor semantics

				   11/20
				   -----
doc/{bash.1,bashref.texi}
	- correct some minor typos, forwarded from doko@debian.org

				   11/22
				   -----
doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
	- documented detail that yank-last-arg and yank-nth-arg use the history
	  arg expansion code (and, as a result, are subject to restrictions
	  of the history-comment character)

				   11/23
				   -----
execute_cmd.c
	- changes so that BASH_COMMAND preserves its value into a DEBUG trap:
	  for commands, arithmetic for command expressions, select commands,
	  case commands, (( commands, [[ commands, simple commands

				   11/24
				   -----
doc/{bash.1,bashref.texi}
	- changed description of `set' builtin slightly so that it is clear
	  that only variables are displayed in posix mode and that read-only
	  variables can't be reset by simply sourcing the output of `set'

lib/sh/strftime.c
	- don't try to redefine `inline' if it's already defined

				   11/26
				   -----
execute_cmd.c
	- fix execute_function to check funcname_a after function execution,
	  since FUNCNAME can be changed or unset within a function

				   11/27
				   -----
builtins/evalfile.c
	- make same changes as 11/26, this time to _evalfile

execute_cmd.c
	- change execute_function to run the return trap after a function
	  completes execution even if the shell is compiled without DEBUGGER
	  defined
[--snip--]
