[work begins on post-netwide-1.12 release.]

				   1/30
				   ----
machines.h, general.c, nojobs.c
	- changes for AIX/RT 2.2.1

lib/readline/vi_mode.c
	- fixed a bug with vi mode, `cw' and whitespace that removed the
	  last character of the previous word

lib/readline/readline.c
	- readline did not correctly save the value of last_readline_init_file
	  across things like `bind'.  Now it does the following:

		last_readline_init_file initialized to NULL
		readline_initialize_everything calls rl_read_init_file with
		an explicit argument of ~/.inputrc
		rl_read_init_file sets last_readline_init_file to
		savestring(filename) so it saves a fresh copy

getcwd.c
	- new version from Roland McGrath, with changes for the bash build
	  environment

execute_cmd.c, variables.c
	- bash was not looking for $PATH in the temp environment when
	  looking up a command.  Now, find_variable looks in the temp
	  environment if subshell_environment is set.  This will be
	  set when bash is looking a command up in the path (it's set in
	  find_user_command_internal while looking up the path string to
	  pass to find_user_command_in_path)

				   1/31
				   ----
make_cmd.c
	- removed useless call to alloca, replaced with a static array
	  definition

				    2/3
				    ---
machines.h
	- Cray machine description

				    2/4
				    ---
builtins/getopt.[ch]
	- upgraded to a more recent version from the Gnu C library

jobs.c
	- added a call to init_signal_handler to replace equivalent in-line
	  code in initialize_jobs

trap.c
	- new function: maybe_call_trap_handler (sig) calls a trap function
	  for signal SIG if one exists

jobs.c
	- bash now (effectively) ignores SIGINT while waiting for a job run
	  from a script.  We don't want to die if a SIGINT is received while
	  running another process, only if that job dies due to SIGINT.  This
	  lets interactive processes run from scripts that want to catch
	  SIGINT and handle it do so without disturbing the shell that's
	  interpreting the script.  All other versions of sh behave this way.

	  The implementation is fairly straightforward.  In wait_for, the
	  parent shell sets the SIGINT handler to wait_sigint_handler, which
	  allows the wait builtin to be interrupted and sloughs off everything
	  else.  flush_child controls the behavior when a `foreground' process
	  dies due to SIGINT: it calls a trap handler if one exists;
	  otherwise it calls either sigint_sighandler (interactive) or
	  termination_unwind_protect (non-interactive).  It then resets the
	  SIGINT signal handler to what it was before wait_for changed it.
	  wait_for does reset the sighandler before returning if flush_child
	  does not, so the SIGINT does not stay ignored.

	  There is a race condition between the time that make_child creates
	  a child and sets it to run and the time the parent calls wait_for.
	  This is handled by having old_sigint_handler, which holds the
	  value of the `real' SIGINT signal handler, be NULL except when the
	  shell is in wait_for, and only operate on the SIGINT handler state
	  if this variable is non-null.

	  Should the stuff be unwind-protected?  I don't think so; u-p gets
	  run on interrupts, and we're controlling the interrupt handler.

				    2/5
				    ---
trap.c
	- new function signal_is_trapped (sig) returns 1 if a trap handler
	  has been established for SIG

shell.c
	- have throw_to_top_level call longjmp(top_level, DISCARD) if the
	  shell is non-interactive and a SIGINT occurred and was trapped

cpp-Makefile, machines.h
	- instead of running `basename ...` to discover the name of the
	  alloca object file, use a new variable $ALLOCA_OBJECT.  It's set
	  to alloca.o if we're using the C emulation, and to ALLOCA_OBJ,
	  which must be defined in the machines.h entry, for an
	  architecture defining ALLOCA_ASM

cpp-Makefile
	- BSD make of 4.3-tahoe and later already defines MACHINE and does
	  not allow it to be overridden, so replace it with Machine.

endian.c
	- added changes from Cray to configure endianness correctly on
	  machines with 8-byte longs

parse.y
	- added '&' to no_semi_successors in bash_add_history so bash will
	  not add a semicolon after it appears

				    2/6
				    ---
subst.c
	- since string_extract_verbatim was overloaded, added a new function
	  string_extract_single_quoted to call when extracting strings in
	  ''

lib/readline/history.c
	- changed call to string_extract_verbatim to a call to
	  string_extract_single_quoted

lib/readline/vi_mode.c
	- rl_vi_subst was not calling rl_end_undo_group properly (i.e. at all)

execute_cmd.c
	- On systems without job control, async commands (`&') have an
	  extra redirection added before calling execute_command_internal
	  that redirects /dev/null to standard input.  This redirection
	  must be removed right after execute_command_internal returns,
	  because the loop functions call execute_command_internal multiple
	  times with the same command struct.  If we keep tacking redirections
	  onto the front of it, eventually we'll run out of file descriptors
	  on a big enough loop.

jobs.c
	- some functions were not correctly blocking SIGCHLD while running:
	  delete_all_jobs, map_over_jobs, start_job when it calls
	  reset_current

				    2/7
				    ---
print_cmd.c
	- an extra space was being printed at the end of a redirection list.
	  This caused exporting of functions with embedded here-documents to
	  fail, since the end marker would not be matched

				     2/8
				     ---
nojobs.c
	- change reap_zombie_children to keep calling waitpid while it returns
	  something > 0 (a valid pid)
	- add a call to reap_zombie_children if we get a valid pid after
	  waiting in wait_for

variables.c
	- include pwd.h after sys/types.h.  It matters on some systems.

shell.c
	- added a function to encapsulate the differences between systems
	  in setting a file pointer to line-buffered: line_buffer_file

				    2/9
				    ---
shell.c
	- unbuffer stdin when it's not a tty and bash is reading a script
	  from stdin

				   2/10
				   ----

machines.h, cpp-Makefile
	- a new machine description variable HAVE_DIRENT, passed down to
	  makes in libraries

support/mksysdefs
	- check for the existance of /usr/include/dirent.h, define
	  HAVE_DIRENT_H if there

				   2/11
				   ----
machines.h
	- add #define USE_TERMCAP_EMULATION to HP-UX machine description
	- added #define HAVE_DIRENT to a number of entries

jobs.h
	- added missing definitions for WSTOPSIG, WTERMSIG, WEXITSTATUS
	  for Posix systems that do not have them and do not have the
	  `union wait' defined

builtins/suspend.def, unwind_prot.c, longest_sig.c
	- include <sys/types.h> before <signal.h> -- some systems require
	  it

support/mksysdefs
	- For HP machines running HPUX, SYSDEF is set to one of hpux8, hpux7,
	  hpux6, or hpux, corresponding to different releases of HP-UX.
	- if `uname -m' returns something starting with XD88, the machine is
	  a Tektronix XD88

				   2/12
				   ----
variables.c
	- stop core dumping on startup if SHLVL is not set

lib/glob/glob.c
	- make sure we always recurse and glob the entire filename so the
	  quoting characters added in shell_glob_filename get removed
	  correctly

jobs.c
	- new function end_job_control to terminate stopped jobs and
	  give the terminal back to the original pgrp
	- new function restart_job_control to re-initialize the job
	  control state

builtins/exec.def
	- call end_job_control before we try to execve the command so
	  we're back in the original process group for the new process
	  and restart_job_control if the shell_execve fails and we're
	  not exiting

shell.c
	- change the code that resets the pgrp just before exiting to
	  call end_job_control instead

lib/readline/chardefs.h
	- new define, MACRO_CHAR

lib/readline/readline.c
	- changed rl_generic bind to correctly handle binding keys > 128
	  by using the appropriate meta keymap (map[ESC].function as a
	  keymap)
	- changed rl_dispatch, rl_show_char, and rl_bind_key to use
	  UNMETA instead of substracting 128 and to use META_CHAR to
	  check for a character's `meta-ness'

				   2/13
				   ----
lib/readline/readline.c, lib/glob/glob.c
	- define HAVE_DIRENT if it's not defined but HAVE_DIRENT_H is

lib/readline/history.c
	- instead of calling write(2) twice for each history line, build
	  a big buffer of all the history data to write, fill it, and
	  call write(2) once

subst.c
	- wrapped up the eight-bit changes by making the single-quoted
	  strings and double-quoted strings code in expand_word_internal
	  simply discard a word if it's "" or '' and that's not the
	  entire word.  This preserves sh semantics.

parse.y
	- If process substitution is compiled into the shell, there was
	  a mistake by which <[ and >[ were treated the same as $[

lib/glob/glob.c, lib/readline/readline.c
	- Reorganized the twisty maze of defines for HAVE_DIRENT

				   2/14
				   ----
posixstat.h
	- removed lines consisting of only a single #.  Some ANSI cpps
	  don't like lines like that

execute_cmd.c
	- added a call to QUIT between commands in cmd1 ; cmd2 sequence

test.c
	- removed redundant declaration of expr() in test_command()

				     2/16
				     ----
builtins/Makefile
	- added dependencies on the header files in the main shell directory

jobs.c, jobs.h, builtins/fg_bg.def, builtins/kill.def
	- replaced the notified, foreground, and job_control members of the
	  job structure with a flags field and bits J_NOTIFIED, J_FOREGROUND,
	  and J_JOBCONTROL

subst.c
	- fixed a typo (result[0] == '\0') in EIGHT_BIT version of
	  dequote_string

cpp-Makefile
	- added dependencies for the builtin object files

execute_cmd.c
	- complete fix from 2/14 -- add QUIT calls to &&, ||, and `;' when
	  executing a command and ignoring the return value

jobs.c
	- if a job is suspended while running in a loop, break out of the
	  loop

nojobs.c
	- made the same wait_sigint_handler and wait_for changes as those
	  made to jobs.c

shell.c
	- moved the code that adds 128 to last_command_exit_value before
	  any SIGINT trap handler is run

subst.c
	- if a word is enclosed completely in "" or '', set the quoted
	  flag when the word is returned from expand_word_internal. This
	  keeps the globbing routines from being called

				   2/17
				   ----
shell.c
	- use shell_name instead of (++argv[0]) when testing for a
	  restricted shell

				   2/18
				   ----
general.c
	- redid the defines for index and rindex to define and use
	  HAVE_INDEX and HAVE_RINDEX, respectively

machines.h
	- added HAVE_DIRENT to the AIXRT machine description

jobs.c
	- define and use INVALID_SIGNAL_HANDLER as something old_sigint_handler
	  cannot be set to

				   2/19
				   ----

config.h
	- made restricted shell mode configurable, #define RESTRICTED_SHELL

shell.c, flags.c, execute_cmd.c, builtins/cd.def
	- add code to implement ksh/sh restricted shell mode

shell.c
	- new function maybe_make_restricted (name) which turns the shell
	  into a restricted shell if name == `rbash'

lib/readline/readline.c
	- fixed rl_key_sequence_length problem when meta-ized characters are
	  read (one too short).  This left extra characters in macros when
	  end-kbd-macro was bound to a meta-ized character

builtins/common.c
	- added set_working_directory (name) as analog of
	  get_working_directory

variables.h
	- added `imported' variable attribute

				   2/20
				   ----
Makefile
	- DESTDIR -> bindir
	- aix-Makefile -> ansi-Makefile because an ANSI C compiler like that
	  in SunOS5 (hah!) need not accept /**/# as a directive

bashline.c
	- added code from bfox to do completion into brace expansions
	- use BUILTIN_ENABLED flag

builtins.h
	- added a flags field to struct builtin to replace the `enabled'
	  structure member

cpp-Makefile
	- set SHELL=MAKE_SHELL if MAKE_SHELL is defined
	- added support for the LD_HAS_NO_DASH_L definition from machines.h
	- PROGRAM -> Program
	- support for the new LD_HAS_NO_DASH_L machine defintion variable

execute_cmd.c
	- removed the subshell_environment variable
	- find_user_command_internal now calls find_variable_internal

general.c
	- moved init_signal_handler here, changed name to set_signal_handler

general.h
	- added definition for set_signal_handler for non-Posix systems

jobs.c
	- now print `Done' when a background job exits with status 0

machines.h
	- combined all of the Sun machine descriptions into one
	- new descriptions for SunOS5, Alliant, Motorola Delta 68k
	- completely redid the HPUX description, making M_MACHINE much more
	  specific rather than just `hpux'

nojobs.c
	- change all instances of signal() to set_signal_handler()

shell.c
	- removed definition of init_signal_handler
	- changed more instances of signal to set_signal_handler

subst.c
	- monster reformat

variables.c
	- added a function find_variable_internal that can be explictly told
	  to search the temporary environment, changed find_variable to call
	  it
	- changed all variables and functions from the initial shell
	  environment to have the `imported' attribute
	- made set_func_auto_export return the pointer to the function struct

builtins/Makefile
	- ar clq --> ar cq

builtins/cd.def
	- `pushd_silent' is gone

builtins/common.c
	- there is no more `enabled' member of a builtin struct;
	  test with BUILTIN_ENABLED instead

builtins/enable.def, builtins/help.def
	- use BUILTIN_ENABLED bitmask

builtins/mkbuiltins.c
	- initialize all builtins to be BUILTIN_ENABLED | STATIC_BUILTIN

lib/glob/Makefile
	- ar clq -> ar cq

lib/glob/glob.c
	- added another shell interruption point
	- reorganized the twisty maze of dirent defines to use HAVE_DIRENT_H

lib/readline/readline.c, lib/readline/funmap.c
	- put rl_arrow_keys back in

lib/readline/Makefile
	- ar clq -> ar cq

lib/readline/readline.c
	- reorganized the twisty maze of dirent defines to use HAVE_DIRENT_H
	- made the search string for i-searches dynamically allocated and
	  expandable rather than using alloca
	- turned on USE_XON_XOFF again
	- RL_DEFAULT_INPUT_FILE -> DEFAULT_INPUTRC

support/cppmagic
	- added `legal' to the list of unknown flags

support/getcppsyms
	- now recognizes _M88KBCS_TARGET

support/mksysdefs
	- code to distinguish SunOS5 from SunOS4
	- aix-Makefile -> ansi-Makefile

lib/readline/vi_mode.c
	- after completing with `*' or `\', Posix.2a says to go into
	  insertion mode
	- for c[wW], don't move back any farther than we started to
	  emulate c[eE] -- Posix.2 says the cursor position should not
	  change

variables.c
	- if we get PWD from the environment, and it's the same directory
	  as `.' (calling same_file) set the_current_working_directory
	  to that value

builtins.h
	- added a #define for SPECIAL_BUILTIN

mksysdefs
	- Xenix systems now have one of XENIX_22, XENIX_23, or XENIX_32
	  defined based on the OS release level
	- test for /dev/fd being a directory and /dev/fd/0 being readable
	  to decide whether or not we have the /dev/fd way of naming open
	  files

				   2/24
				   ----
builtins/common.c
	- set_working_directory is now a void

general.c
	- new implementation of canonicalize_pathname from bfox
	  (+ bug fixes, of course)

bashline.c
	- make bash_symbolic_link_hook call canonicalize_pathname

variables.c
	- set_func_auto_export no longer returns a SHELL_VAR *

lib/readline/readine.c
	- added code to determine whether or not the terminal has a
	  meta key and to use it while editing if one is available

subst.c
	- minor bug fix to remove_quoted_escapes (logic bomb :-)

				   2/25
				   ----
machines.h
	- cleaned up the hpux section.  Cannot define M_OS as HPUX_X,
	  because HPUX_X is already defined as expanding to nothing;
	  this results in a blank M_OS

	- attempted to rationalize Xenix support.  Depending on the
	  XENIX_nn define provided by support/mksysdefs, configure in
	  -DREVERSED_SETVBUF_ARGS, -xenix, -lx, -ldir, and HAVE_DIRENT

		Xenix 2.2: -DREVERSED_SETVBUF_ARGS
			   cc -lx

		Xenix 2.3: HAVE_DIRENT
			   cc -ldir

		Xenix 3.2: HAVE_DIRENT
			   cc -xenix -ldir

				   2/26
				   ----
builtins/source.def
	- POSIX_PENDANTIC -> POSIX_PEDANTIC

				   2/27
				   ----
support/getcppsyms.c
	- consolidated HP definitions to be of the form

		#if defined (__hp9000s300) || defined (hp9000s300)
		  printf (" -Dhp9000s300")
		#endif /* __hp9000s300 || hp9000s300 */

machines.h
	- changed the way the hp9000s300 tests for hp9000s200 being defined

support/mksysdefs
	- changed the XENIX_nn defines a little bit

input.c
	- new input buffering package -- like stdio but allows syncing with
	  the underlying file descriptor when creating child processes, and
	  provides a fd-stream mapping.

input.h, shell.c, jobs.c
	- changes for the input buffering package, using default_buffered_input
	  in place of default_input

general.c
	- fix canonicalize_pathname to keep from running off the end of the
	  result string (check result[i] before assigning start = i++)

jobs.c
	- change some calls to signal to call set_signal_handler instead

				     2/29
				     ----
shell.c
	- only initialize default_buffered_input to the input file
	  descriptor if the shell is not interactive

builtins/getopt.c
	- cast the arguments properly in calls to my_bcopy

execute_cmd.c
	- added code to do_redirection_internal to change buffered streams
	  if one of the file descriptors corresponding to a buffered input
	  stream is modified.  This lets the shell do proper buffering if
	  the file descriptor from which the shell is reading input is
	  modified by a redirection (e.g., exec 0</etc/passwd)

input.c, shell.c, parse.y, jobs.c, nojobs.c
	- changed default_buffered_input to an integer file descriptor that
	  is mapped to a buffered stream via the `buffers' array

input.c
	- the `buffers' array is now lazily dynamically allocated
	- added functions to duplicate buffered streams so that things like
	  exec 0<&4 will work right
	- added functions to access the buffered stream functionality given
	  a file descriptor argument, indexed through the `buffers' array.
	- unbuffered streams now have bp->b_size == 1, so that no special-
	  case code is needed when reads are done.

input.h
	- the member of the BASH_INPUT union in effect if it describes a
	  buffered stream is now a file descriptor

jobs.c
	- SCO 3.2.4 has fixed the sigsuspend() bug, so don't execute the
	  hack workaround if SCOv4 is defined

				     3/1
				     ---
builtins/common.c
	- made shell_builtin_compare perform some tests itself before
	  calling strcmp to cut down the number of strcmp calls
	- did the same thing for builtin_address_internal

parse.y
	- removed calls to strcmp from read_token, just test if token[0] == }
	  and !token[1]
	- only call clearerr if bash_input.type == st_stream in shell_getc
	- removed a call to strcpy from shell_getc that only added a newline;
	  changed it to two assignment statements
	- used token_index instead of a call to strlen at the end of
	  read_token where the word is being constructed and returned

unwind_prot.c
	- changed a strcmp to a STREQ in unwind_frame_run_internal

variables.c
	- removed some dead code that had been #if'd out
	- added a variable to avoid a call to strlen in
	  initialize_shell_variables
	- change a call to strncmp to a STREQN in initialize_shell_variables
	- changed strcmp to STREQ in non_unsettable

				    3/2
				    ---
jobs.c
	- rearranged the code that calls flush_child (0) for SCO so it is
	  easier to do something like SCO && !SCOv4
	- changed flush_child so that the loop is performed in a blocking
	  fashion only if SCO && !SCOv4

				    3/3
				    ---
signames.c
	- new standalone program to create a signames.h file that contains
	  the initialization code for the signal_names array

trap.h
	- removed the signal_names array initialization code
	- include "signames.h"

cpp-Makefile
	- make sure signames.aux builds signames.h correctly

input.c
	- changed fd_is_seekable and bufstream_getc into macros

mksysdefs
	- changes to define SCOv4 if uname returns the right info

machines.h
	- changes to define BROKEN_SIGSUSPEND and NO_DEV_TTY_JOB_CONTROL
	  for various SCO systems

jobs.c
	- check for BROKEN_SIGSUSPEND and NO_DEV_TTY_JOB_CONTROL instead
	  of using SCO

				    3/4
				    ---
general.c
	- make set_signal_handler return the old signal handler again

shell.c
	- set SIGINT handler to sigint_sighandler for non-interactive shells
	- remove SIGQUIT from list of terminating signals

				    3/5
				    ---
builtins/trap.def
	- added special SIGINT handling for the case of reverting a signal
	  handler to the default

shell.c
	- added SIGINT back to the list of terminating signals for
	  non-interactive shells

variables.c
	- initialize mail variables in initialize_shell_variables only if
	  interactive_shell is true
	- only check for command_oriented_history if interactive shell
	- only initialize the history variables if history expansion is
	  being performed (remember_on_history == 1)
	- only make PS1 and PS2 non-unsettable if the shell is interactive

				    3/6
				    ---
variables.c
	- set up a new temporary environment, FUNCTION_ENV, which is the
	  temporary environment provided to a function
	- make find_tempenv_variable search both temporary_env and
	  function_env, searching function_env if variable_context > 0
	- change maybe_make_export_env to add variables from function_env
	  to the environment
	- new function dispose_function_env to deallocate the temporary
	  function environment and cause a new export_env to be made
	- added code to qsort_string_compare to compare the first
	  characters of the strings passed before calling strcmp

general.c
	- new function copy_array (char **array) returns a newly-allocated
	  copy of ARRAY

execute_cmd.c
	- added code to execute_builtin_or_function that initializes the
	  temporary function environment and takes care of disposing of
	  it on normal or abnormal exit
	- dispose of temporary environment after we initialize the function
	  environment
	- added same code to execute_subshell_builtin_or_function
	- since the trap code now restores the SIGCHLD handler to the
	  original, any time make_child is called and the shell needs to
	  run in the child process, set_sigchld_handler should be called
	  to reinstall the proper SIGCHLD handler

jobs.c
	- new function set_sigchld_handler to reinstall flush_child as the
	  SIGCHLD signal handler

				    3/9
				    ---
bashline.c
	- swapped code around to avoid calling savestring (this_fignore)
	  when this_fignore is null

				   3/10
				   ----
jobs.c
	- make sure the code in flush_child that calls the SIGCHLD trap
	  handler saves last_made_pid and the_pipeline using unwind-protects

lib/readline/readline.c
	- make sure the code that uses VLNEXT is protected by #ifdef
	  TERMIOS_TTY_DRIVER

shell.c
	- add a `beenhere' flag to avoid executing $ENV more than once

parse.y
	- added a new token ASSIGNMENT_WORD
	- made read_token return ASSIGNMENT_WORD if in a simple command
	  position, token contains `=', the `=' is not the first character,
	  and the characters before `=' are a legal identifier (as Posix.2
	  specifies)
	- a simple_command_element can now also be an ASSIGNMENT_WORD
	- alias expansion is attempted if the last token was an
	  ASSIGNMENT_WORD, as Posix.2a specifies

				   3/11
				   ----
execute_cmd.c
	- moved the code that checks command words for `/' down into
	  execute_disk_command, and made it check only the first command
	  word, like sh and ksh
        - vfree() is no longer static, so other code that needs to add 
          unwind-protects that use free can use it

trap.c
	- added a function set_sigchld_trap (command) to set the SIGCHLD
	  trap handler to `command', because unwind-protects cannot take
	  two arguments

jobs.c
	- changed the code in flush_child to set up and use and unwind-protect
	  frame to protect the things it needs to while running the SIGCHLD
	  trap commands

				   3/12
				   ----
nojobs.c
	- added the BUFFERED_INPUT code to make_child

subst.c
	- folded the test and increment of the string pointer into
	  string_extract_double_quoted and string_extract_single_quoted
	- made string_extract_verbatim and string_extract static

lib/readline/history.c
	- changed code that calls string_extract_single_quoted to not
	  increment the string pointer after the call

variables.c
	- added code to qsort_var_comp to compare the first character of
	  the variable names before calling strcmp

				   3/13
				   ----
parse.y
	- include string.h or strings.h

lib/readline/readline.c, lib/glob/glob.c
	- removed the code that defined HAVE_DIRENT_H if _POSIX_VERSION
	  was defined -- it breaks on apollos, and is a bad idea
	  anyway

input.c
	- make sure close_buffered_fd closes the fd, whether or not it
	  was a buffered stream

				   3/16
				   ----
machines.h
	- added a #define LD_HAS_NO_DASH_L to the Sequent Dynix entries

trap.c
	- made trap_list[SIGINT] == IMPOSSIBLE_TRAP_HANDLER while running
	  the interrupt trap, so we can tell if the trap handler sets
	  another trap and not restore the original handler if so

				   3/17
				   ----
trap.c
	- a new function set_sigint_handler, which subshells doing `shellsy'
	  things like command substitution and ( cmd ) call to make sure
	  they handle interrupts right

execute_cmd.c, subst.c
	- added calls to set_sigint_handler in the appropriate spots

				   3/18
				   ----
hash.c
	- replaced the old hash function with the one from Gnu cpp, which has
	  a much better distribution

jobs.c
	- make end_job_control call setpgid to reset the pgrp to the original
	  only if original_pgrp >= 0

builtins/exec.c
	- remove the calls to restore_default_signal; restore_original_signals
	  now does all the necessary work

				   3/19
				   ----
jobs.c, nojobs.c
	- make sure that make_child resets default_buffered_input to -1
	  after closing it with close_buffered_fd

				   3/23
				   ----
lib/glob/tilde.c
	- had an extern declaration for malloc rather than xmalloc

general.h
	- added #define for REVERSE_LIST, a macro which calls reverse_list
	  on a list only if the pointer is valid and there is more than one
	  element

parse.y
	- removed calls to legal_assignment in read_token; assignment()
	  already does those checks

general.c
	- reformatted reverse_list

copy_cmd.c
	- changed calls to reverse_list in copy_word_list and copy_redirects
	  to calls to REVERSE_LIST

subst.c
	- changed a call to reverse_list in expand_word_internal to one to
	  REVERSE_LIST

				   3/24
				   ----
builtins/common.c
	- replaced a call to sscanf with code to skip leading whitespace and
	  calls to all_digits and atoi

mailcheck.c
	- did the same for a call to sscanf in time_to_check_mail

				   3/26
				   ----
variables.c
	- made find_variable_internal call find_tempenv_variable only if
	  temporary_env or function_env exists
[gprof.int.4]

alias.c, alias.h
	- rewrote the alias code so that it now uses a hash table instead
	  of looking things up in a linear list

subst.c
	- removed the inclusion of alias.h

parse.y
	- added inclusion of alias.h

cpp-Makefile
	- removed alias.h from subst.o's dependencies
	- added alias.h to y.tab.o's dependencies

bashline.c, builtins/alias.def
	- rewrote code that knew about the internal alias data structure
	  to use an array of alias structures to search, match, and print

				   3/27
				   ----
test.c
	- group_member() needs to check against gid and egid regardless
	  of whether or not the system has getgroups(2); Posix.1 does not
	  require that the primary group id show up in the group list,
	  and some systems do not put it there

				   3/30
				   ----
parse.y
	- add `|' to the list of tokens that should not have a semicolon
	  following them when adding a line to the history when command-
	  oriented history is active

lib/readline/readline.c
	- fixed up the control character display by making the code print
	  c ^ 0x40

support/cppmagic
	- add support for recognizing the s5r4 c pre-processor,
	  /usr/ccs/lib/cpp

lib/readline/vi_mode.c
	- made rl_vi_delete_to pay attention to whether or not we're redoing,
	  and to use the last motion key if we are
	- made rl_vi_char_search use the last char searched for if we're
	  redoing

				   3/31
				   ----
parse.y
	- removed the check for non-interactive-ness when doing shell
	  comments

				    4/1
				    ---
lib/readline/readline.c
	- completion with tilde expansion needs to have any `/' present at
	  the end of the user's directory name re-inserted manually, because
	  pathname canonicalization strips any trailing `/', before tacking
	  on the expanded filename

subst.c
	- fixed a bug in dequote_string that caused reading beyond the end
	  of the string if the last character in the string was an (unquoted)
	  CTLESC
	- made list_string obey the setting of `quoted' and not do the
	  initial strip of whitespace from the beginning and end of the
	  word if it was set
	- expand_word_internal calls list_string with quoting == 1 if splitting
	  a word after expanding "$@"

error.c
	- new function itrace for interactive traces

subst.c
	- command_substitute should give the terminal back to pipeline_pgrp
	  only if the shell is interactive

execute_cmd.c
	- execute_disk_command should turn off interactive while performing
	  redirections for an asynchronous command.  The problem was a race
	  condition with command_subst.  A command like
		date > `hostname` &

	  would leave the subshell begun to run date and the primary shell
	  fighting over the terminal.  After the subshell did the command
	  substitution, it wanted to give the terminal back to pipeline_pgrp,
	  which was its own pid.  Since it was in the background, though,
	  that was wrong, and ended up taking the terminal away from the
	  primary (interactive) shell, which thought it had the thing.

lib/readline/readline.c
	- if SYSTEM_CALL_RESTART is not defined, declare c as an integer

				    4/3
				    ---
bashline.c
	- put code into command_word_completion_func to skip all but pathname
	  completion checks if the hint given is an absolute pathname
	- fix strncmp of basename against hint text (??); this always failed
	  unless there was no pathname given

				    4/7
				    ---
bashline.c
	- fixed the cases where the simple `last character is a command
	  separator' test fails for distinguishing between program name
	  completion and filename completion: the tokens >&, >|, and <&.
	- corrected fix of 4/3 to handle command word completion with and
	  without leading paths

				    4/8
				    ---
lib/readline/readline.c
	- break the declaration and initialization of a variable with a call
	  to setjmp into a declaration and separate assignment statement (for
	  Cray)

				   4/10
				   ----
subst.c
	- A word that uses both "" and '' to do quoting will not be marked
	  as fully quoted by expand_word_internal.  Wrote a
	  fully_quoted_word () predicate function to solve that.
	- Quoted patterns with globbing characters are sent to the
	  globbing functions because glob_pattern_p doesn't understand
	  shell quoting.  Wrote a new function unquoted_glob_pattern_p,
	  to fix that.

				   4/13
				   ----
shell.c
	- make sure default_input is valid and being used for an interactive
	  shell started without line editing

				   4/15
				   ----
builtins/common.c
	- redid part of the new get_numeric_argument code to avoid a call to
	  atoi and just do everything ourselves

variables.c
	- only call set_if_not on PS1 and PS2 in initialize_shell_variables
	  if the shell is not interactive
	- check the variable returned by looking up PWD to make sure it's
	  non-null before trying to use it in initialize_shell_variables

jobs.c
	- add a descriptive tag to the call to get_working_directory in
	  job_working_directory

				   4/17
				   ----
test.c
	- fixed a typo in group_member: gid -> pgid in assignment statement
	- in the normal Sun compilation environment, getgroups returns an
	  array of ints, not gid_ts.  getgid and getegid also return ints.
	  stat structures contain a gid_t, though.

	  Need to reorder the includes so that stat.h is included first, then
	  uid_t and gid_t are redefined to int, then the rest of the files
	  are included.

	  Also need to cast the values from a stat structure to gid_t and
	  uid_t before comparing them to the results of getgid and getuid
	  when implementing -O and -G

				     4/21
				     ----
lib/readline/readline.c
	- added code to rl_getc to handle EWOULDBLOCK/EAGAIN and turning off
	  no-delay mode

				   4/22
				   ----

builtins/cd.def
	- made change_to_directory canonicalize the pathname before attempting
	  to chdir(2) if follow_symbolic_links is set

				   4/23
				   ----
builtins/type.def
	- made type handle absolute program names by just echoing the name

builtins/alias.def
	- made single_quote correctly handle single quotes in aliases

				   4/28
				   ----
trap.c
	- made ignore_sig and restore_default_signal check that the value
	  of the original signal handler (in original_signals) was valid
	  before trying to use it.  Bug noticed with `trap "" 1 2 3' as
	  first line in script.

				   4/29
				   ----
lib/readline/readline.c
	- made rl_signal_handler only unblock the signal it just received
	  on BSD and Posix systems

				    5/5
				    ---
builtins/type.def
	- don't look up the function with find_function until we actually
	  need the info

execute_cmd.c
	- in do_redirection_internal, don't do unnecessary work.  For instance,
	  >&1 ends up duplicating fd 1 as itself (then adding a close for it,
	  which is a bug)

				    5/8
				    ---
general.h
	- don't attempt to declare index and rindex if `index' is defined
	  (with #define)

lib/readline/vi_mode.c
	- fixed the `c' command so that cl and c<space> are equivalent --
	  formerly the c<space> changed two characters instead of one.
	  The same fix was made to rl_vi_change_to, rl_vi_delete_to, and
	  rl_vi_yank_to

parse.y
	- bash_add_history did not correctly handle lines that ended with
	  an escaped newline.  It would insert semicolons in the locations
	  where the line breaks occurred.

				     5/12
				     ----
documentation/bash.1
	- removed references to pushd_silent
	- added setion on process substitution

subst.c
	- fixed a bug in expand_word_internal that caused $xxx"" to expand
	  to nothing when `xxx' was unset.  The code now explicitly turns
	  a partially quoted string that expands to nothing (istring[0] == 0)
	  into a QUOTED_NULL (istring[0] = CTLNUL) before returning the
	  word list.

				   5/15
				   ----
documentation/bash.1
	- added a missing .PD in the builtins section after the line
	  summarizing `:'
	- added text describing the effect of additional arguments to the
	  `.' command

subst.c, general.c, jobs.c, nojobs.c, error.c, getcwd.c
	- only declare errno as `extern int' if it's not #defined

builtins/{bind,exec,fc,kill,source}.def, lib/readline/{readline,history}.c
	- ditto with errno

lib/glob/fnmatch.c
	- ditto with errno

				     5/17
				     ----
execute_cmd.c
	- shells compiled with job control active should perform the implicit
	  `</dev/null' redirection for asynchronous commands when it is not
	  active

builtins/mkbuiltins.c
	- added a `-nodocument' option to inhibit the output of the `xxx_doc'
	  array that is a builtin's long documentation.  Saves between 26
	  and 27K in the bash executable on the RT, 32K on the Sun-4

				   5/22
				   ----
print_cmd.c
	- added code to make group commands print better

builtins/common.c
	- new function remove_hashed_filename to remove a filename from the
	  table of hashed commands

execute_cmd.c
	- make sure the filename found in the hash table actually exists and
	  is executable.  If not, remove it from the hash table and look it
	  up in $PATH.

general.c
	- make sure to #include <signal.h> before defining set_signal_handler
	  (on Posix systems)

builtins/command.def
	- change HPUX_7 to hpux_7

				   5/27
				   ----
builtins/times.def
	- added USGr3 to the list of systems that should have HAVE_RESOURCE
	  undefined even though <sys/resource.h> exists

				   5/28
				   ----
machines.h
	- added a description for 386/486 boxes running BSDI BSD/386

support/mksysdefs
	- looks for <limits.h> and writes a define to sysdefs.h if it's
	  found

maxpath.h
	- rewritten -- now includes limits.h if HAVE_LIMITS_H is defined,
	  then tries to define MAXPATHLEN as PATH_MAX

				   5/29
				   ----
lib/readline/history.c
	- added definition for rl_string_extract_single_quoted so the
	  code inhibiting history expansion inside quotes does not depend
	  on the shell
	- change to use rl_string_extract_single_quoted
	- removed code that would have inhibited history expansion in
	  double-quoted strings

subst.c
	- make string_extract_{single,double}_quoted static again

				    6/1
				    ---
trap.c
	- systems with _POSIX_VERSION defined need not reset the signal handler
	  inside trap_handler
	- set_signal should use set_signal_handler() to install the signal
	  handler rather than signal()
	- initialize_traps needs to use set_signal_handler for SIGINT and
	  SIGQUIT rather than signal()
	- restore_default_signal needs to use set_signal_handler

parse.y
	- the readline interface code needs to use set_signal_handler to
	  install the SIGINT handler

lib/readline/readline.c
	- new function rl_set_sighandler, which is the readline analogue of
	  the bash set_signal_handler
	- rl_set_signals and rl_clear_signals need to use rl_set_sighandler
	  for SIGINT and SIGALRM

				    6/2
				    ---
signames.c
	- fixed a typo (signame_names -> signal_names)

				    6/3
				    ---
subst.c, general.c
	- AIX machines need to use sysv_getc rather than getc when reading
	  from the command substitution pipe -- read(2) is not restarted
	  automatically when interrupted by a signal and returns EINTR

				    6/5
				    ---
documentation/bash.1
	- removed documentation of M-C-j command in emacs editing mode
	- added description of M-{ (complete-into-braces)
	- added description of M-! and C-x ! command completion
	- added description of M-TAB dynamic history completion

lib/readline/search.c
	- new file containing code to perform non-incremental history
	  searches.  Functions to call are rl_noninc_forward_search
	  and rl_noninc_backward_search

lib/readline/emacs_keymap.c
	- bound M-^R to non-incremental-search-backward, M-^S to
	  non-incremental-search-forward

lib/readline/readline.h
	- extern defintions for rl_noninc_{forward,backward}_search

lib/readline/funmap.c
	- added names `non-incremental-forward-search-history' and
	  `non-incremental-reverse-search-history'

lib/readline/vi_mode.c
	- rl_vi_yank_arg should put readline into insertion mode when
	  it is done

lib/readline/vi_keymap.c
	- ^I should just insert when in vi insertion mode, rather than
	  attempt completion

				     6/6
				     ---

lib/readline/funmap.c
	- removed the `vi-dosearch' bindable string, since rl_vi_dosearch
	  is really a private function for vi_mode.c.  It does not fit
	  the calling conventions of the bindable readline functions
	  (and I've since removed it)

lib/readline/readline.h
	- removed the extern definition for rl_vi_dosearch

lib/readline/search.c
	- added new functions rl_noninc_forward_search_again and
	  rl_noninc_backward_search_again to search for the last saved
	  search string from the current `noninc' history position

lib/readline/vi_mode.c
	- removed the vi history search code and changed rl_vi_search
	  and rl_vi_search_again to call the non-incremental search code
	  from search.c

				    6/8
				    ---

[changes from bfox version dated 5/10]

bashline.c
	- changed the conditional clause that decides whether a token is
	  in a command position for command name completion to be a little
	  simpler

bracecomp.c
	- new version from bfox

config.h
	- moved BUFFERED_INPUT define here

flags.c
	- new flag for interactive comments
	- reformatted find_flag

flags.h
	- added interactive_comments and an extern declaration of restricted

machines.h
	- new cray definition from bfox

maxpath.h
	- don't include limits.h if BUILDING_MAKEFILE is defined

shell.c
	- moved the check for restricted to immediately after the sourcing
	  or .profile

test.c
	- now includes shell.h in the initial block of includes

trap.c
	- new function get_original_signal to take care of the bookkeeping
	  of correctly setting up original_signals[sig]

trap.h
	- signal_decode -> decode_signal

builtins/exec.def
	- adjusted the help text to make it clear that only non-interactive
	  shells check the no_exit_on_failed_exec variable and exit if the
	  execve fails

builtins/set.def
	- added description and code to implement set -o interactive_comments

lib/glob/glob.c
	- if PAT is empty when glob_vector is called, skip the loop and
	  return one empty filename.  This is how to make echo */ echo
	  only directory names

lib/readline/parens.c
	- new file from bfox implementing parenthesis matching for readline

lib/readline/emacs_keymap.c
	- if PAREN_MATCHING is defined, perform `show-matching' on `)', `}',
	  and `]'

lib/readline/history.c
	- add `$' to the list of separating characters in history_tokenize
	  so that two-character `$' tokens ($$, $!, $() are parsed correctly

lib/readline/readline.c
	- Make an argument of 1 to rl_rubout and rl_delete work the same
	  as if any other argument had been given by saving the text on
	  the kill ring
	- in rl_getc, check that the value returned from read == sizeof
	  unsigned char

lib/readline/readline.h
	- added declaration of rl_event_hook, which is the address of a
	  function to call periodically while readline is awaiting
	  character input

support/cppmagic
	- new implementation from bfox, now returns a full cpp specification,
	  complete with system dependent flags

support/mksysdefs
	- added a variable MAKE_ANSI which, if set to true, causes the
	  ansi Makefile to be generated
	- added code to recognize various types of cray/unicos machines

[end of fixes from bfox]

getcwd.c
	- integrated changes that allow getcwd to handle paths longer
	  than PATH_MAX by shifting to using a dynamically-allocated
	  buffer

builtins/set.def
	- make the check for emacs or vi check to make sure the shell is
	  interactive

				   6/10
				   ----
builtins/common.c
	- the dollar_arg_stack was never being reallocated in push_dollar_vars
	  because of a stray `if (!dollar_arg_stack)' before the realloc call

				     6/12
				     ----
cpp-Makefile
	- added some missing $(RM) $@ in explicit targets for objects (the
	  ones that don't go through the default rules) as well as the
	  targets for the auxiliary programs

subst.c
	- redid the way bash handles assignment statements on command lines
	  to fix two bugs:

		1) variable assignments are not supposed to affect expansion
		   performed on the same line, if a command is to be run
		2) if the words left after removing the variable and environment
		   assignments don't expand to a command word, the assignments
		   should affect the shell's environment

	  new function: separate_out_assignments
		removes variable assignments that precede other words and puts
		them on VARLIST
		removes environment assignments in the rest of the words, if
		set -k is in effect, and puts them on ENVLIST

	  just before expand_words_internal returns, it checks varlist and
	  envlist (if it is doing expansion) and performs the assignments, if
	  any.  If it's returning a null list, these assignments affect the
	  shell's environment

				     6/13
				     ----
subst.c
	- eliminated ENVLIST; VARLIST can serve for both variable and
	  environment assignments

	- sped up expand_words_internal's section for brace expansion by
	  eliminating unnecessary copies -- original word is used unless brace
	  expansion occurred, in which case the original word is linked to
	  a list of words to dispose when brace expansion is completed

	- sped up the word expansions section of expand_words_internal by
	  (possibly) eliminating a call to reverse_list on the results of
	  word expansion and splitting on $IFS, because the most common
	  case will expand to only a single word
	- `expanded' needs to be freed only if expansion and word splitting
	  took place, no moving the call to dispose_words up after the call
	  to word_list_split means that the common case no longer needs to
	  copy the list

	- sped up globbing by eliminating copying as was done for brace
	  expansion -- keeping a list of `disposable' words and using the
	  original list contents if expansion failed or was not performed
	- in the case that we're not globbing a word because it has no
	  unquoted globbing characters, eliminated the copy and creation of
	  a brand new list
	- added a define GLOB_FAILED that handles the cases of using and
	  not using the GNU libc Posix.2 globbing library
	- moved the code that dequotes the original word so it's executed
	  only if the glob fails
	- wrapped the code that performs globbing inside an if (new_list)
	  clause
	- call REVERSE_LIST only if we're actually doing globbing; otherwise
	  dequote the list and go on to performing assignments

				   6/15
				   ----
lib/glob/glob.c
	- if the directory portion of a pathname to be globbed contains
	  quoted globbing characters, the quotes (backslashes) need to be
	  removed before the code tries to open and read that directory

				   6/17
				   ----
execute_cmd.c
	- index -> indx in extract_colon_unit

nojobs.c
	- make wait_for_single_pid return the status of the pid it's waited
	  for, instead of throwing it away
	- added a simple pid-status array to avoid multiple calls to
	  wait_for and calling wait on dead processes.  make_child adds
	  pids to this array, and the status of a pid is updated when
	  it's returned from wait(2) or waitpid(2)
	- removed the checks for whether or not the pid is valid (using
	  kill(2)) in favor of using the information in the pid_list

parse.y
	- call cleanup_dead_jobs on non-job-control systems to clean up the
	  pid_list

				   6/18
				   ----
subst.c
	- include config.h before trying to include string.h or strings.h
	  so USG is properly defined

				     6/19
				     ----
support/mksysdefs
	- look for /usr/include/string.h and define HAVE_STRING_H if
	  found.  This is the file mandated by ANSI C.

cpp-Makefile
	- look for the HAVE_STRING_H definition from sysdefs.h and define
	  it as part of SYSTEM_FLAGS if found
	- added the HAVE_STRING_H to LIBRARY_CFLAGS, so readline can
	  decide what to include

general.c, parse.y, subst.c
	- use the HAVE_STRING_H define in deciding which flavor of the
	  include file to use

builtins/common.c
	- include strings.h or string.h, depending on the definition of
	  HAVE_STRING_H
	- added extern declaration of rindex and index at file scope
	- removed extern declaration of rindex in find_hashed_filename

lib/readline/rldefs.h
	- removed the messy #ifdef clauses and such from readline.c and
	  moved them to this new file
	- added a section on string functions (string.h vs. strings.h,
	  whether or not index and rindex need to be defined)

lib/readline/readline.c
	- removed the messy #ifdef clauses that attempt to parameterize
	  things and define constants on a system-specific basis
	- removed the definition of the unused variable xoff_state

flags.c
	- corrected a typo in the comment describing jobs_m_flag

jobs.c
	- new function, current_working_directory (), which returns the
	  cwd without calling malloc to allocate memory, even indirectly.
	  This can safely be called from a signal handler, like when
	  flush_child calls notify_of_job_status if async notification is on
	- changed call to job_working_directory in pretty_print_job to call
	  current_working_directory
	- moved assignment to DIR in notify_of_job_status after the calls
	  to sigprocmask to block SIGCHLD and SIGTTOU
	- in notify_of_job_status, DIR is now assigned via a call to
	  current_working_directory and hence does not need to be freed
	- notify_of_job_status now initializes DIR to NULL and calls
	  current_working_directory only if it needs to
	- changed a call to reverse_list in stop_pipeline to REVERSE_LIST,
	  because most pipelines will be only one process long

builtins/jobs.def
	- make an illegal jobspec cause a failure instead of returning 0 all
	  the time

builtins/times.def
	- times now ignores any arguments for sh and ksh compatibility

				     6/20
				     ----
execute_cmd.c
	- fixed execute_until_or_while to actually return the status of the
	  last command executed in the body rather than
	  last_command_exit_value, which is the status of the test (which
	  has just failed)

				     6/23
				     ----
execute_cmd.c
	- fixed execute_subshell_builtin_or_function to exit with 
	  last_command_exit_value if a builtin longjmps to top_level
	  with value EXITPROG, rather than with EXITPROG (3)

				   6/25
				   ----
cpp-Makefile
	- added rldefs.h to READLINE_SOURCE

builtins/type.def
	- `type' now returns 0 if no arguments are given

jobs.c
	- make wait_sigint_handler obey interrupt_immediately as well
	  as whether the wait builtin is the current command (XXX - in
	  the future remove the check for wait_builtin entirely and
	  just use interrupt_immediately, because this_shell_builtin
	  could be changed by the code that runs from a SIGCHLD trap)
	- make the code that runs commands from SIGCHLD traps set
	  interrupt_immediately to 1 each time through the loop

				   6/26
				   ----
builtins/common.c
	- declare extern void vfree and use it in the add unwind protect
	  call, to avoid having to declare what type free returns

execute_cmd.c, builtins/common.c
	- removed all references to builtin_pipe_in_hack, which is no
	  longer used

parse.y
	- removed all references to current_token_being_expanded and
	  pending_token_being_expanded, since their function is subsumed
	  by expanded_token_stack.  Also no need to save this on the
	  pushed string stack, so that element is removed from the
	  struct.
	  (current_token_being_expanded == expanded_token_stack->saved_token)

builtin/jobs.def
	- removed immediate return if job_control == 0.  This makes it work
	  in command substitution subshells

				     6/29
				     ----
expr.c
	- added unary `+'
	- added bitwise not (`~') at same precedence as logical not (`!')
	- added left and right shifts (<<, >>) between +,- and the comparisons
	- added bitwise and, or, xor (&, |, ^)
	- added logical and, or (&&, ||)
	- changed exp1 to allow multiple consecutive ! and ~ (in the same way
	  that exp0 allows multiple consecutive leading - and +

lib/readline/history.c
	- close memory leak -- in history_do_write, free the output filename
	  before returning
	- close same memory leak in read_history_range

builtins/enable.def
	- make `enable' with no arguments print only the enabled builtins, and
	  `enable -n' with no other arguments print only the disabled builtins

builtins/setattr.def
	- make readonly and export return failure when given -f with an
	  argument that is not a function name
	- added -n to the documentation for readonly

execute_cmd.c
	- cleaned up the code that checks for #! and binary files some: made
	  sure the file descriptor was always closed, made sure sample_len
	  was > 0 before checking the first two characters, collapsed two
	  if statements into one

jobs.c
	- changed call to job_working_directory in start_job to call to
	  current_working_directory
	- changed input_tty to a macro
	- changed the call to QUIT in wait_for after the wait_loop
	  label to depend on whether job_control is enabled; the test
	  against the terminal process group is superfluous now that
	  we use wait_sigint_handler

builtins/fg_bg.def
	- Posix.2a specifies that fg and bg should return failure if
	  run when job control is disabled

				    7/2
				    ---
variables.c
	- when an existing variable is given a new value by bind_variable,
	  turn off the invisible attribute

shell.c
	- dup default_buffered_input using fcntl(fd, F_DUPFD, 10) to put
	  it above the shell's user-manipulatable range

execute_cmd.c
	- in add_undo_redirect, make the redirection added a
	  r_duplicating_input so buffered streams get duplicated as
	  necessary.  It makes no difference for the non-buffered-stream
	  code

				    7/3
				    ---
subst.c
	- command_substitute needs to set interactive = 0 and leave
	  interactive_shell reflecting the interactive state of the
	  parent shell

signames.c
	- prevent SIGGRANT and SIGRETRACT from overriding other already-defined
	  signal names, since, on the RT at least, they override SIGUSR2
	  and SIGEMT, respectively, which are much more common

jobs.c
	- in notify_of_job_status, if job control is not enabled, do not
	  print the status messages.  Mark dead jobs as notified so they
	  get cleaned up properly

braces.c
	- when checking for `,' if a closing brace was not found, make
	  sure the , is unquoted
	- make sure we found an unquoted , before attempting to perform
	  the expansion -- since brace_gobbler purports to understand
	  quoting with \, the rest of the code should support it
	- disabled the code that caused a failure longjmp if a matching
	  closing brace was not found -- the pattern should be left
	  unchanged, as with any other failed expansion

trap.c
	- new function maybe_set_sigchld_trap, which sets the trap on
	  SIGCHLD if and only if the signal is not currently trapped

jobs.c
	- call maybe_set_sigchld_trap after running SIGCHLD trap commands
	  on the death of a child to restore the trap handler, so if the
	  trap handler calls `trap xxx CHLD' it will not be overwritten

lib/glob/fnmatch.c
	- fnmatch must treat [ without a matching ] as a `regular' character
	  to be matched against the string so that the Posix.2 rules for
	  case command matching are not broken

shell.c
	- change the call to fcntl that sets default_buffered_input to one
	  to dup2(fd, getdtablesize() - 1) to hopefully get the highest
	  file descriptor

				    7/6
				    ---
parse.y
	- if read_token reads a character that matches the current delimiter
	  character, it should make sure the character is `"' before
	  checking delimited_paren_level and blindly accepting it.  There
	  are other values for `delimiter' besides `"'.

shell.c
	- turn on no_line_editing for non-interactive shells

builtins/set.def
	- removed test against interactive_shell when deciding whether or
	  not emacs or vi is `on' [backed out of fix from 6/8]

				    7/8
				    ---
lib/readline/history.c
	- changed get_history_event so that shell metacharacters (;&()|<>)
	  can terminate an event spec

subst.c
	- the TERM and TERMCAP variables need special handling only if
	  READLINE is defined
	- ditto for history_completion_file

machines.h
	- new description for HPs running OSF/1

				    7/9
				    ---
lib/readline/readline.c
	- new variable `eight-bit-input'.  If this is on, readline disables
	  ISTRIP for the Posix or sysv tty drivers

execute_cmd.c, variables.c
	- new variable `subshell_environment' set in children right after
	  forking and reset in shell_reinitialize.  It means to look in
	  the temporary environment first when looking up variables and
	  functions

				   7/13
				   ----
config.h, parse.y
	- changed CSH_HISTORY_EXPANSION to BANG_HISTORY_EXPANSION

shell.c
	- made all the history-related code #ifdef HISTORY
	- made maybe_save_shell_history be called only if the shell is
	  interactive and we're remembering history lines

parse.y, flags.c, flags.h, subst.c, variables.c
	- made all the history-related code #ifdef HISTORY
	- assignment_acceptable and command_token_position no longer are
	  dependent on ALIAS being defined, since they are used to return
	  ASSIGNMENT_WORD tokens

builtins/bind.def
	- removed inclusion of readline/history.h

builtins/exec.def, builtins/common.c
	- made all the history-related code #ifdef HISTORY

builtins/fc.def, builtins/history.def
	- added a $DEPENDS_ON HISTORY line

builtins/mkbuitins.c
	- line_error should not try to print error_directory without checking
	  to see whether it is NULL

builtins/Makefile
	- add $(DIRECTDEFINE) to the command line that builds builtins.c

lib/glob/tilde.c
	- use getpwuid(getuid()) to look up the home directory of the user
	  executing the shell for tilde expansion ~/foo if $HOME unset

cpp-Makefile, subst.c, config.h
	- Fixes to make brace expansion a configuration option, on by default

				   7/14
				   ----
builtins/set.def
	- fixed unset so an attempt to unset a readonly variable or function
	  is an error (as Posix.2 specifies)

general.h
	- removed extern declarations of index, rindex
	- added extern declarations for strchr, strrchr
	- changed `member' to use strchr

subst.c, general.c, bashline.c, execute_cmd.c, parse.y, test.c
	- changed calls to index to calls to strchr, calls to rindex to calls
	  to strrchr

builtins/echo.def, builtins/fc.def, builtins/common.c
	- changed calls to index to calls to strchr, calls to rindex to calls
	  to strrchr

lib/glob/glob.c
	- changed calls to index to calls to strchr, calls to rindex to calls
	  to strrchr

lib/readline/history.c, lib/readline/readline.c, lib/readline/vi_mode.c
	- changed calls to index to calls to strchr, calls to rindex to calls
	  to strrchr

lib/readline/vi_mode.c
	- changed calls to strchr to inline checks, since we're only checking
	  for two characters

				   7/15
				   ----
variables.c
	- If PPID is imported, turn off export status

				   7/17
				   ----
general.h
	- for USG and Posix systems, define NO_READ_RESTART_ON_SIGNAL


general.c
	- sysv_getc --> getc_with_restart
	- compile in getc_with_restart if NO_READ_RESTART_ON_SIGNAL is
	  defined

subst.c
	- call getc_with_restart in command_substitute if on a system
	  with NO_READ_RESTART_ON_SIGNAL defined

parse.y
	- call getc_with_restart in yy_stream_get if NO_READ_RESTART_ON_SIGNAL
	  is defined

input.c
	- change b_fill_buffer to restart reads on EINTR

general.h
	- wrap the declarations of strchr and strrchr inside an #ifdef strchr
	  because some ANSI C compilers (e.g., RS/6000) make them defines in
	  /usr/include/string.h

				   7/20
				   ----
lib/readline/readline.c
	- wrap the declarations of strchr and strrchr inside an #ifdef strchr
	  because some ANSI C compilers (e.g., RS/6000) make them defines in
	  /usr/include/string.h

				   7/21
				   ----
lib/readline/parens.c
	- wrap all parameters and variables associated with the select call
	  into #ifdef FD_SET

execute_cmd.c
	- added tilde expansion to the pattern list members of case statement
	  clauses, as specified by Posix.2 d11.3

lib/readline/readline.c
	- when comparing members of the c_cc array directly against
	  _POSIX_VDISABLE, cast both sides to unsigned char

support/getcppsyms.c
	- recognized __svr4__

machines.h
	- for Sun machines, if __svr4__ is defined and USGr4 is not, define
	  USGr4

shell.c
	- some machines need sys/types.h included before stdio.h (mostly for
	  size_t)

lib/malloc/malloc.c
	- add SunOS5 to the list of systems that do no redefine valloc (?)

				   7/22
				   ----
make_cmd.c
	- save and restore the value of line_number around reading a
	  here-document

lib/glob/glob.c
	- change to use HAVE_STRING_H to decide which version of the
	  header files to include

				     7/25
				     ----
execute_cmd.c
	- fixed execute_command_internal so that failure to perform
	  redirections attached to a shell compound command like if
	  or while causes the command to return failure right away
	- eliminated use of redir_result in execute_builtin_or_function
	- changed execute_while_or_until so that body_status is
	  initialized to EXECUTION_SUCCESS, and then directly returned
	  without a check for commands_executed, so that the Posix.2
	  behavior of returning success when no body commands are
	  executed is preserved

				   7/27
				   ----
jobs.c
	- make sure that trap_list[SIGCHLD] is not set to IGNORE_SIG
	  before trying to run commands when a SIGCHLD is caught

test.c
	- define and use UID_T and GID_t, which are equivalent to uid_t
	  and gid_t on all systems but SunOS 4.1.?, because SunOS makes
	  `int' the return value of all the uid and gid functions (except
	  stat!)

				   7/28
				   ----
shell.c
	- call end_job_control in termination_unwind_protect

variables.c
	- if PWD is imported from the environment and it is wrong (i.e.,
	  not the same as the current directory), rebind it to the current
	  directory (as obtained by get_working_directory)

				   7/29
				   ----
lib/readline/history.c
	- do not history expand ! when immediately preceded by [, assuming
	  it's the globbing pattern negation character

execute_cmd.c
	- plug some memory leaks -- redirectee_word needs to be freed
	  before returning from do_redirection_internal
	- changed the noclobber code to open the file with O_EXCL after
	  verifying that it's not there with stat to shorted possible
	  race conditions (this doesn't help over NFS)

				   7/30
				   ----
lib/readline/history.c
	- treat a negative arg to stifle_history as 0

lib/readline/readline.c
	- #undef PC before declaring it as a variable because some systems
	  (Solaris2) define it in system header files
	- changed type of insert_some_chars, update_line, and delete_chars
	  to void
	- added a check when doing filename completion in
	  filname_completion_function to see if the first characters of the
	  filename and directory entry match before calling strncmp
	  (inline expansion of STREQN)

				   7/31
				   ----
lib/readline/vi_keymap.c
	- Make arrow keys work for history in vi command mode by binding
	  `o' and `[' in vi_escape keymap to rl_arrow_keys

				    8/6
				    ---
subst.c
	- broke the code that quotes strings for the globbing functions
	  into a separate function: quote_string_for_globbing (), so
	  there are not two copies of it
	
execute_cmd.c
	- rewrote execute_case_command so that quote_string_for_globbing
	  is called for the patterns in a pattern list and reordered some
	  other code for clarity
	- execute_case_command now turns quoted null strings into empty
	  strings because quote_string_for_globbing does not do it

				    8/7
				    ---
lib/readline/readline.c
	- added generic code to init_terminal_io to fetch the termcap
	  codes for the arrow keys (ku, kd, kl, kr) and bind the right
	  functions to them

lib/readline/vi_keymap.c, lib/readline/emacs_keymap.c
	- removed bindings to `rl_arrow_keys' from all keymaps

				   8/13
				   ----
subst.c
	- command_substitute: only close fildes[1] if it's > 2

				   8/26
				   ----
lib/readline/readline.c
	- rewrote get_y_or_n to get rid of label and goto
	- added code to the completion listing function that makes it
	  skip padding the line out with blanks after writing what will
	  be the last filename on the line

machines.h
	- added -DHAVE_SETDTABLESIZE to SYSDEP_CFLAGS for Sequents
	  running Dynix/ptx

				   8/28
				   ----
machines.h
	- added a machine description for the BBN Butterfly from
	  Kaveh Ghazi

variables.c
	- HPOSF1 machines cannot redefine getenv()

support/getcppsyms.c
	- recognize __hp_osf

parse.y
	- allow reserved word recognition after done, fi, and esac
	  Posix.2 section 3.4 seems to allow this

lib/readline/readline.c
	- include <sys/ioctl.h> on OSF/1 machines for TIOCGWINSZ

subst.c
	- in command_substitute, when checking to see that we're not
	  overflowing `istring', allow for the insertion of two characters
	  in the check to account for possible quoting

				    9/3
				    ---
builtins/bashgetopt.c
	- force reset_internal_getopt to set loptend to NULL
	- force internal_getopt to set loptend to NULL when the list it
	  gets is NULL, and when it detects that it's been called with
	  a different word list

				    9/8
				    ---
variables.c
	- make adjust_shell_level clamp the value of $SHLVL at 1

[Fixes from bfox 1.13]

bashline.c
	- remove `%' from list of readline special prefixes

config.h
	- BANG_HISTORY_EXPANSION -> BANG_HISTORY

cpp-Makefile
	- add HAVE_STRCHR
	- changes to macros that build libraries
	- reorganized library declarations and support

execute_cmd.c
	- indx -> p_index in extract_colon_unit

general.c
	- provide definitions of strchr, strrchr for systems that do not
	  have them

machines.h
	- define `Solaris' for Suns running Solaris 2.x
	- turn all the definitions of M_OS into strings

parse.y
	- replace delimiter and old_delimiter with a stack of delimiters
	  encountered while parsing the current token

subst.c
	- removed all traces of EIGHT_BIT

variables.c
	- new function dispose_temporary_vars, for both dispose_used_env_vars
	  and dispose_function_env

lib/readline/readline.c
	- `eight-bit-input' -> `meta-flag'

lib/tilde
	- new directory for the tilde expansion library code

[end of bfox changes]

cpp-Makefile
	- pass $(RM) down to makes in libraries

				   9/10
				   ----
parse.y
	- remove the bfox change that set CMD_FORCE_SUBSHELL for async
	  commands

				   9/14
				   ----
builtins/bind.def
	- surround the code with #ifdef READLINE

builtins/fg_bg.def
	- surround the body of the code with #ifdef JOB_CONTROL

builtins/getopts.def
	- surround the body of the code with #ifdef GETOPTS_BUILTIN

builtins/alias.def
	- surround the body of the code with #ifdef ALIAS

				   9/15
				   ----
lib/readline/emacs_keymap.c
	- bind rl_noninc_reverse_search to M-P and rl_noninc_forward_search
	  to M-N, respectively

lib/readline/readline.c
	- made name_key_alist struct static
	- added new functions to manipulate keymaps:
		rl_get_keymap_by_name()
		rl_get_keymap()
		rl_set_keymap()

lib/readline/keymaps.h
	- added declarations for the new keymap functions

builtins/bind.def
	- added -m map option to allow bind commands to specify the keymap
	  to be used when binding key sequences to readline commands

				   9/16
				   ----
builtins/alias.def
	- in single_quote, allocate a new string three times as big as the
	  old to handle the possible quoting characters

bashline.c
	- set last_fignore to null after freeing it in setup_ignore_patterns

				   9/17
				   ----
parse.y
	- added code to handle the functionality of `ignoreboth' as a
	  value for history_control (ignore both lines beginning with
	  spaces and duplicates of the last history entry)
	- don't use history_control for the second and subsequent lines
	  of a multi-line command when command_oriented_history is in
	  effect

				   9/18
				   ----
bashline.c
	- fix attempt_shell_completion to call command_word_completion_function
	  even if the supplied text begins with `/'
	- fix command_word_completion_function to make sure that absolute
	  program names passed are executable before returning them as
	  possible matches

				   9/20
				   ----
parse.y
	- If we read a blank line (shell_input_line[0] == 0) and we have
	  reached EOF (shell_input_line_terminator == EOF) then don't echo
	  the line, even if -v has been turned on

				   9/23
				   ----
lib/malloc/malloc.c
	- changed to use USG rather than SYSV
	- changed BSD42 to BSD4_2 like emacs malloc.c
	- removed conditional compilation code dealing with VMS
	- include getpagesize.h only if BSD4_2 is not defined
	- changed conditionally compiled code dealing with BSD, since
	  BSD is not defined by bash and malloc.c does not include
	  sys/param.h, which defines BSD on 4.x BSD systems

lib/malloc/getpagesize.h
	- new implementation, inspired by gdb 4.6
		uses _SC_PAGESIZE, if present
		defaults to 4096

lib/readline/vi_keymap.c
	- when in insert mode, Posix.2a says that \ is quoted-insert
	- remove the binding to vi_escape_keymap; Posix.2a says that
	  ESC in movement mode does nothing (vi description)

				   9/24
				   ----
shell.c
	- shell should send SIGHUP to all it's jobs when it receives
	  SIGHUP only if it is an interactive login shell

execute_cmd.c
	- systems running the Andrew File System don't use the Unix file
	  mode bits to decide whether or not a file is executable (they're
	  unused, since AFS as ACLs), so executable_file needs to call
	  access (file, X_OK) if running on AFS

				   9/25
				   ----
jobs.c
	- make sure a non-interactive shell initializes original_pgrp to
	  NO_PID, so it does not attempt to give the terminal back to that
	  pgrp when it exits or calls the `exec' builtin

				   10/3
				   ----
machines.h
	- add -DHAVE_RESOURCE to the NeXT machine description as SYSDEP_CFLAGS
	- add -DHAVE_GETDTABLSIZE and -DHAVE_SETDTABLESIZE to Dynix/ptx
	  description

shell.c
	- make a non-interactive script shell call dup2 on the fd it has
	  open to the script file to move the descriptor to one that hopefully
	  user programs will not attempt to use

general.c
	- make the definition of getdtablesize() depend on HAVE_GETDTABLESIZE
	  not being defined.  Auto-define that for non-USG systems (or HPUX).
	  This allows a SYSDEP_CFLAGS entry to override it

builtins/ulimit.def
	- new function canraise(cmd, curlim, newlim) to call on systems
	  without HAVE_RESOURCE to decide whether or not the limit can be
	  raised.  Maybe we should remove the test altogether and let the
	  system call fail instead

				   10/8
				   ----
execute_cmd.c
	- If a command is not found, make the exit status 127 like Posix.2
	  says

				   10/14
				   -----
print_cmd.c
	- changed cprintf(s) to cnprintf(args_length, s) and made cnprintf
	  malloc the buffer it uses for vsprintf to avoid overrun of the
	  5000-character temp buffer used previously.  args_length is the
	  expected total length of all the arguments

				   10/15
				   -----
jobs.c
	- set last_command_exit_value before calling a trap handler for
	  SIGINT: new function process_exit_status(), changes to use it

				   10/18
				   -----
print_cmd.c
	- removed `cnprintf' changes
	- re-implemented cprintf as a miniature vsprintf interpreting %s,
	  %d, and %c and using a dynamically-allocated buffer

support/mksysdefs
	- look for /usr/include/varargs.h and define HAVE_VARARGS_H if
	  found

cpp-Makefile
	- pass HAVE_VARARGS_H down to the makes in the various libraries

				   10/26
				   -----
lib/glob/glob.c
	- free `result' before using temp_results to return the value
	  of glob_dir_to_array -- plugs a small memory leak

				   11/2
				   ----
[Fixes from bfox version dated 10/18]

bashline.c
	- separated definitions of BRACE_COMPLETION and the extern declaration
	  of the brace completion functions

config.h
	- make PROCESS_SUBSTITUTION depend on the value of MKFIFO_MISSING

cpp-Makefile
	- add posixstat.h, tilde.[ch], xmalloc.c to the readline library
	  sources (also the corresponding object files)
	- make the definition of HAVE_TILDE_SOURCE depend on the definition
	  of HAVE_READLINE_SOURCE

lib/posixheaders
	- new directory, for posix support functions and header files
	- various cleanups to the library support rules

execute_cmd.c
	- make the practice of checking hashed filenames for executability
	  dependent on $POSIXLY_CORRECT

general.c
	- The `hppa' running hpux-8 does not have `getdtablesize'

general.h
	- make the extern declaration of strchr and strrchr go away if
	  __STDC__ is defined
jobs.h
	- test for and define all of the W* macros individually

machines.h
	- completely new alliant description from bfox
	- add -DMKFIFO_MISSING to NeXT SYSDEP_CFLAGS
	- add description for Siemens MX500 running `sinix'

builtins/common.c
	- move code that depends on BANG_HISTORY being defined inside #ifdef
	  HISTORY blocks, since you can't have BANG_HISTORY without HISTORY

builtins/echo.def
	- make -E work all the time, not just on sys5 systems

builtins/enable.def
	- add -all option (with synonym of -a)
	- change `DISABLED' to 2 and make argument to list_some_builtins a
	  bitmask

builtins/kill.def
	- it is an error if `signum' == NSIG

documentation/bash.1
	- added -E flag to `echo'
	- added description of -all to enable

lib/readline/tilde.c, lib/readline/xmalloc.c
	- links to these files for standalone readline lib

lib/readline/{funmap.c,history.c,keymaps.c,readline.c}
	- make xmalloc and xrealloc static again and dependent on the
	  definition of STATIC_MALLOC

lib/readline/readline.c
	- include <sys/file.h> only if NO_SYS_FILE is not defined
	- add support for a `stat' char after filenames when listing completion
	  alternatives if VISIBLE_STATS is defined
	- add support for _GO32_ definition (PC)
	- add LibraryVersion internal variable
	- initialize rl_instream and rl_outstream to NULL, because all of a
	  sudden stdin and stdout may no longer be constants
	- make readline_default_bindings `static void'
	- add support for quoting a portion of the input line to make it
	  immune from completion

support/getcppsyms.c
	- recognize `alliant'

support/mksysdefs
	- presence of /bin/fxc.info indicates that the machine is an alliant

support/{FAQ,PORTING,mklinks,fixdist}
	- new files

[end of changes from bfox]

machines.h
	- added support for HP-UX 9.0 (hpux_9)

				   11/12
				   -----
machines.h
	- added -lsocket to the REQUIRED_LIBRARIES define for ICL RS6000
	- removed the `#undef HAVE_WAIT_H' from the isc386 description

lib/readline/rltty.c
	- split off almost all tty-related code from readline.c to this file

				   11/13
				   -----
lib/readline/rltty.c
	- changed the way the bsd tty code works to use a `struct bsdtty'
	  that encapsulates all of the bsd tty state into a single structure
	  that can be passed around by reference
	- changed the bsd tty setup and teardown code to be more like the
	  ce version of things
lib/readline/rldefs.h
	- added code to define HAVE_USG_SIGHOLD for svr3 machines.  The
	  prepping and deprepping code uses them to block SIGINT while
	  getting and setting the tty attributes

				   11/14
				   -----
lib/readline/rltty.c
	- encapsulated the system-specific code for setting up the terminal
	  into a function: `prepare_terminal_settings'.  This means that the
	  code for rl_prep_terminal and rl_deprep_terminal is basically
	  identical between tty driver versions
	- changed the BSD version of rltty_set_default_bindings to use a
	  struct bsdtty and get_tty_settings
	- rl_prep_terminal and rl_deprep terminal are now non tty-driver
	  specific -- there is only one version of each function.  The
	  tty-driver specific code is now in {set,get}_tty_settings and
	  prepare_terminal_settings

				   11/24
				   -----

general.c
	- make the function definitions for bcopy and bzero depend on a
	  HAVE_BCOPY define

machines.h
	- define HAVE_BCOPY for RS/6000s, RTs running AIX, and Linux
	- new description for Linux

shell.c, variables.c
	- don't declare getpwuid for Linux systems

support/getcppsyms.c
	- recognize `linux' and `__linux__'

builtins/psize.c
	- don't redefine memset() for USG machines

general.c
	- add extern declaration of getdtablesize() to dup2() replacement
	- don't compile in bcopy and bzero on Linux machines

test.c
	- don't declare getgid, getegid, or geteuid on Linux

lib/readline/rldefs.h
	- don't try to include <sys/stream.h> on Linux machines

lib/readline/readline.c
	- only call rl_parse_and_bind on non-empty lines when reading
	  ~/.inputrc
	- allow backslash to quote characters in the key sequence to be
	  bound, which allows you to bind C-x \ for example
	- allow delimiter characters in the body of a macro, quoted with
	  a backslash
	- changed rl_function_dumper so that it outputs backslash-quoted
	  " and \ when called by bind -d

lib/readline/funmap.c
	- fixed a typo in the entry for `vi-replace'

subst.c
	- make sure the $(( xxx )) case sets this_command_name to NULL so
	  there are no confusing garbled error messages
	- fix a memory leak in $[ xxx ] code (free temp)
	- make $(( xxx )) case do the same variable expansion that the
	  $[ xxx ] case does

				   11/25
				   -----
parse.y
	- removed CMD_FORCE_SUBSHELL assignments

command.h
	- add a new flag for commands: CMD_NO_FORK

shell.c
	- added a function run_one_command for -c shells that just sets up
	  the top_level stuff for longjmp and calls parse_and_exec.  This
	  is controlled by the definition of ONESHOT

execute_cmd.c
	- execute_disk_command takes an extra argument: nofork.  If non-zero,
	  this tells it to not fork for a command without pipes in or out
	- set NO_FORK for a simple command run in a subshell with
	  want_subshell ( `( xxx )' )

builtins/common.c
	- if the from_file argument to parse_and_execute is "-c", then
	  assume this is a one-shot -c command and set NO_FORK for simple
	  commands.  This is controlled by the definition of ONESHOT

				   12/1
				   ----
support/getcppsyms.c
	- add defines for bsdi and __386BSD__

machines.h
	- add a section for 386bsd

				   12/2
				   ----
input.c
	- added a new function check_bash_input (fd) which checks whether
	  or not file descriptor fd is the buffered fd which bash is using
	  to read a script, and, if so, swaps the buffered fd to a new
	  file descriptor and reinits bash_input
	- input buffering now solves these problems:
		parent-child synchronization
		using the script fd in a user redirection
		auto-restart of interrupted reads on all systems
		speed

execute_cmd.c
	- call check_bash_input from do_redirection_internal before a call
	  to dup2 and a call to duplicate_buffered_fd

				   12/3
				   ----
builtins/getopt.c
	- only redefine `const' if it is not already #defined

lib/readline/rltty.c
	- make sure HANDLE_SIGNALS is defined here as it is in readline.c

				   12/7
				   ----
lib/malloc/malloc.c
	- change the conditional around get_lim_data to be HAVE_RESOURCE
	  (ulimit if not defined, getrlimit if it is)
	- removed the 4.1BSD version of get_lim_data
	- conditionalize the inclusion of sys/resource.h on the definition
	  of HAVE_RESOURCE

				   12/11
				   -----
lib/readline/readline.c
	- changed the name of strpbrk to rl_strpbrk to avoid any conflicts
	  with OS include files and libraries

				   12/15
				   -----

bashline.c
	- changed initialize_readline to type void

execute_cmd.c
	- execute_for_command called expand_words with an extra argument

jobs.c
	- changed stop_pipeline to use xrealloc instead of realloc

lib/readline/readline.c
	- changed rl_complete_internal to call xmalloc instead of malloc

variables.c
	- dispose_used_env_vars, non_unsettable declared void

builtins/common.c
	- include <sys/stat.h> because we cast things to struct stat *

builtins/exit.def
	- change exit_or_logout to be declared static

builtins/psize.c
	- removed call to memset and therefore the need to #ifdef it's
	  definition

builtins/bind.def, builtins/ulimit.def
	- add extern declaration for strerror()

builtins/exec.def
	- add extern declaration for strerror()
	- add extern declaration for full_pathname() and remove casts to
	  char *
	- add extern declaration for make_word_array() and remove casts to
	  char **

builtins/fc.def, copy_cmd.c, shell.c, parse.y
	- add extern declaration for reverse_list()

builtins/read.def
	- change free to vfree so systems don't complain about the extern
	  declaration (type clashes, etc.)

lib/tilde/tilde.c
	- include string.h or strings.h as appropriate to get the correct
	  declaration of strcpy before the savestring macro uses it

parse.y
	- add extern declaration for sub_append_string and remove casts to
	  char *
	- add extern declaration for add_string_to_list and remove casts to
	  WORD_LIST *

				   12/16
				   -----
lib/malloc/malloc.c
	- move the check for RLIMIT_DATA after the inclusion of
	  <sys/resource.h> (duh!)

bashline.c
	- added extern declaration for get_working_directory

jobs.c
	- added extern declaration for polite_directory_format

execute_cmd.c
	- added extern declaration for copy_redirects

subst.c
	- added extern declaration for reverse_list

machines.h
	- new entry for KSR1 running KSROS (OSF/1)

support/getcppsyms.c
	- recognize `ksr1'

general.h
	- make sure that strcpy is declared before the definition of
	  savestring

alias.c, bashline.c, bracecomp.c, braces.c, copy_cmd.c, execute_cmd.c,
expr.c, general.c, hash.c, jobs.c, mailcheck.c, make_cmd.c, print_cmd.c,
trap.c, variables.c, parse.y
        - make sure that string.h or strings.h is included before general.h
          (which is included by shell.h)
        
builtins/mkbuiltins.c
        - add extern declaration of strcpy if __STDC__ and strcpy not defined
        - include <string.h> or <strings.h> as needed

builtins/cd.def, builtins/shift.def, builtins/source.def, builtins/test.def,
builtins/command.def, builtins/declare.def, builtins/fc.def,
builtins/getopts.def, builtins/hash.def
	- include <string.h> or <strings.h> before definition of savestring

lib/tilde/tilde.c, lib/readline/chardefs.h
	- include <string.h> or <strings.h> before definition of savestring

lib/readline/readline.c
	- made glean_key_from_name cast NAME to unsigned char * before
	  dereferencing it to better handle 8-bit character sets

				   12/17
				   -----
subst.c
	- made command_substitute set up top_level with setjmp so that shells
	  running command substitution won't longjmp all the way back to
	  main() if they're interrupted and call throw_to_top_level

				   12/18
				   -----
lib/readline/readline.c
	- split the code that handles setting the screen size off into a new
	  function: set_screen_size
	- changed init_terminal_io to call set_screen_size
	- changed rl_handle_sigwinch to call set_screen_size instead of
	  totally reinitializing the world on each SIGWINCH
	- added a new function cr() that simply puts the cursor at physical
	  column 0
	- changed rl_handle_sigwinch to call cr() and
	  rl_forced_update_display() after resetting its idea of the screen
	  size

				   12/20
				   -----
lib/readline/history.c
	- changed the way history_expand treats `\' to make it a general
	  quoting character like the shell treats it so that allows single
	  quotes to be quoted

				   12/23
				   -----
machines.h
	- changed M_OS define in BSDI description to BSD386, since cpp
	  doesn't like BSD/386

				   12/28
				   -----
execute_cmd.c
	- changed execute_case_command so that expand_word_no_split is called
	  on the `word', as Posix.2 specifies

				    1/5
				    ---
machines.h
	- new machine description for Dec Alpha running Dec OSF/1

support/getcppsyms.c
	- recognize alpha, __alpha, osf, and __osf__

				    1/7
				    ---
lib/readline/readline.c
	- removed definition of HANDLE_SIGNALS
	- changed rl_signal_handler so that systems with HAVE_POSIX_SIGNALS
	  defined will not set the SIGINT handler to SIG_IGN
	- include <sys/ioctl.h> for _386BSD and BSD386 for TIOCGWINSZ

lib/readline/rldefs.h
	- added definition of HANDLE_SIGNALS

lib/readline/rltty.c
	- added GETATTR and SETATTR macros for termios/termio systems for
	  use by get_tty_settings and set_tty_settings

				    1/9
				    ---
shell.c
	- new variable: startup_state.  Set to 0 for scripts, 1 for
	  interactive shells, and 2 for -c command shells.  Superset of
	  the functionality provided by the `interactive_shell' variable

builtins/common.c
	- changed parse_and_execute to use startup_state to detect that
	  it's being called as a result of -c command, rather than the
	  ad-hoc method previously employed

				   1/11
				   ----
support/getcppsyms.c
	- recognize `m88k'

machines.h
	- new description for Motorola M88K Delta running SVR4

support/mksysdefs
	- moved the defaulting of `SYSDEF' to `cadmus' until just before
	  the definition is written out

shell.c
	- changed ambiguous assignment to `login_shell' by introducing a
	  dummy variable (~line 400: login_shell = -++login_shell)

lib/malloc/malloc.c
	- moved the code that decides whether or not to define USG or
	  BSD4_2 inside checks for USG and USGr4, since USGr4 passes
	  the tests for the various signals

alias.c
	- changed a call to index() to strchr()

				   1/12
				   ----
lib/readline/readline.c
	- moved inclusion of posixstat.h before inclusion of rldefs.h
	  (rldefs.h requires that stat.h be included before it)
	- don't test whether or not a file is a symlink or a socket
	  in stat_char unless S_ISLNK and S_ISSOCK are defined,
	  respectively

				   1/13
				   ----
machines.h
	- added -I/usr/ucbinclude to SYSDEP_CFLAGS and a #define 
	  USE_GNU_TERMCAP for the ICL DRS6000 description

support/bashbug.c
	- added definition for gethostname() for systems that do not have
	  it (USG except for SGI and HP)

				   1/14
				   ----
test.c
	- made the #define of uid_t also dependent on HAVE_UID_T being
	  undefined.  That way, hosts which have trouble can add a
	  -DHAVE_UID_T to SYSDEP_CFLAGS in the machines.h entry
	- made the extern declaration of getgid() be conditionalized out
	  on Sony non-Posix machines

machines.h
	- added -DHAVE_UID_T to SYSDEP_CFLAGS in the Sony/BSD entry

				   1/15
				   ----
parse.y
	- made type of `report_syntax_error' be static void
	- made type of `handle_eof_input_unit' be static void
	- added an error message when EOF is reached unexpectedly
	  (if EOF_Reached is 1 when report_syntax_error is called)
	- added `extern void make_here_document ();'

make_cmd.c
	- made type of make_here_document be void

execute_cmd.c
	- added declarations of set_clexec to function prologues for
	  do_redirection and do_redirection_internal

variables.c
	- added `extern long atol()' to assign_seconds ()

jobs.c
	- changed type of `making_children ()' to void
	- removed unused label `wait_exit' in wait_for()
	- changed `sigset_t set' to `sigset_t suspend_set' inside the
	  BROKEN_SIGSUSPEND definition because `set' shadows the
	  definition used in BLOCK_CHILD and UNBLOCK_CHILD

mailcheck.c
	- changed type of add_mail_file to void

alias.c
	- changed type of delete_all_aliases to void
	- changed block-local declaration of `tl' to `tlen', because
	  `tl' shadows a function-scope variable

input.c
	- made duplicate_buffered_stream return new fd (like dup2) when
	  it finishes
	- made free_buffered_stream() a void-valued function

bashline.c
	- cleaned up the precedence of the expression that checks whether
	  or not the ignore patterns have changed in setup_ignore_patterns

lib/readline/readline.c
	- made rl_gather_tyi a void-valued function
	- made rl_dispatch a void-valued function
	- made rl_redisplay a void-valued function
	- made free_history_entry a void-valued function
	- removed unused label `some_matches' from rl_complete_internal

lib/readline/vi_mode.c
	- removed check of return value from rl_dispatch in rl_vi_redo,
	  since rl_dispatch never returned one anyway

lib/readline/history.c
	- removed unused label `search_won' in get_history_event
	- removed unused label `read_which' in get_history_event
	- removed unused label `bad_word_spec' in history_expand
	- removed unused label `error_exit' in history_expand
	- changed block-local declaration of `len' to `slen' in
	  history_expand because len shadows a function-local variable
	- changed block-local declaration of `l' to `ll' in
	  history_expand because len shadows a function-local variable
	- removed unused label `get_first' in get_history_word_specifier

				   1/18
				   ----
parse.y
	- fixed up the support for `unexpected EOF' errors by making
	  read_token set `EOF_Reached' to 1 before returning yacc_EOF
	  when it reads EOF while looking for the start of a token
	- added better messages for unexpected eof to report_syntax_error
	- added better messages for unexpected tokens to report_syntax_error
	- made handle_eof_input_unit reset EOF_Reached to 0 if the
	  shell is interactive
	- made report_syntax_error reset EOF_Reached to 0 if the
	  shell is interactive
	- changed the non-interactive error messages to add `line' before
	  printing the line number rather than simply use filename:digit:

				   1/19
				   ----
builtins/type.def
	- changed code so that simple `type' (-all not specified) takes
	  the same path as a regular command search (find_user_command()
	  rather than user_command_matches())

				   1/20
				   ----
shell.c
	- new variable `passwd_shell' set from the pw_shell field in the
	  password file
	- new variable `passwd_dir' set from the pw_dir field in the
	  password file

variables.c
	- used passwd_shell and passwd_dir to eliminate the calls to the
	  getpw* functions
	- if $SHELL is unset at shell startup, it is set to the value of
	  passwd_shell

				   1/21
				   ----
support/mksysdefs
	- look for sys/ptem.h, define HAVE_SYS_PTEM_H if found
	- look for sys/pte.h, define HAVE_SYS_PTE_H if found

cpp-Makefile
	- pass HAVE_SYS_PTEM_H and HAVE_SYS_PTE_H to the readline make

lib/readline/rldefs.h
	- include sys/ptem.h and sys/pte.h depending on the above two
	  definitions

lib/readline/readline.c
	- include <sys/ioctl.h> if on an AIX system to get TIOCGWINSZ and
	  struct winsize

machines.h
	- added #undef HAVE_ALLOCA to hpux_6 description.  alloca seems
	  to have problems when passing alloca'd memory to other functions
	  (esp. in the globbing code, passing directory_name)

				   1/22
				   ----
machines.h
	- make the cadmus definition active only of M_MACHINE is not defined
	  when the code gets there

				    2/1
				    ---
builtins/set.def
	- changed the reference to $9 in the help string
	- added `-' to the help string listing the options

documentation/bash.1
	- changed the reference to $9 in the set builtin description
	- added `-' to the set builtin synopsis listing the options

				    2/2
				    ---
machines.h
	- added REQUIRED_LIBARIES = -lPW -lc_s to SCO unix description
	  when not using gcc

variables.c
	- new variable builtin_env; builtin analogue of function_env
	- new function dispose_builtin_env to free up all strings in
	  builtin_env
	- find_tempenv_variable now looks in builtin_env after the
	  temporary environment

execute_cmd.c
	- execute_builtin_or_function and execute_subshell_builtin_or_function
	  now set up builtin_env for the `source' builtin so that things like
	  this work:
		foo contains:
			echo XXX=$XXX
			echo XXX=$XXX
		and you run
			XXX=aaa . foo
		which should output
			XXX=aaa
			XXX=aaa
	  (bug report by mfg@castle.ed.ac.uk)

				    2/3
				    ---
execute_cmd.c
	- when a command is forced into a subshell with ( ), turn off its
	  INVERT_RETURN bit in the flags so the exit status of the subshell
	  is not inverted.  In execute_command_internal

				    2/5
				    ---
[work to make readline configurably 8-bit clean]

lib/readline/readline.c
	- added variable convert_meta_chars_to_ascii, which controls
	  whether meta characters are converted into ESC-prefixed
	  key sequences.  Set to 1 by default
	- added a readline variable `convert-meta', settable in a
	  .inputrc, that controls the value of convert_meta_chars_to_ascii

lib/readline/keymaps.h
	- changed the hard-coded keymap size of 128 to a #define
	  of KEYMAP_SIZE, which is initially 128

lib/readline/keymaps.c
	- changed all instances of 128 to KEYMAP_SIZE
	- changed rl_make_keymap to initialize positions 128-256 to
	  rl_insert if KEYMAP_SIZE > 128

lib/readline/chardefs.h
	- properly define _CHARDEFS_ to protect against multiple inclusion

documentation/bash.1
	- documented new `convert-meta' readline variable

				    2/7
				    ---
lib/readline/keymaps.h
	- increased KEYMAP_SIZE to 256

lib/readline/emacs_keymap.c
	- added entries to make the keymaps 256 entries.  The entries in
	  emacs_standard_keymap are the ISO Latin-1 characters

lib/readline/vi_keymap.c
	- added entries to make the keymaps 256 entries.  The entries in
	  vi_insertion_keymap are the ISO Latin-1 characters

				    2/8
				    ---
lib/readline/readline.c
	- make sure that rl_display checks that there is room for 8 more
	  characters when deciding whether or not to realloc the line,
	  since we might have to insert a tab
	- rl_display_search should not use MESSAGE as a printf format
	  string, since it might contain %
	- reversed arguments in calls to rl_kill_text in
	  rl_unix_word_rubout so that killed text is prepended to the
	  undo data rather than appended

				    2/9
				    ---
builtins/alias.def
	- moved single_quote() to builtins/common.c and made it global

builtins/trap.def
	- made sure that the output of `trap' is suitable for re-input
	  to the shell as a trap definition by using proper single-quoting
	  of the command

lib/readline/readline.c
	- new readline variable `completion-query-items' to control the
	  value of rl_completion_query_items (initially and by default
	  100)
	- new function rl_insert_completions which performs a call to
	  rl_complete_internal ('*')

lib/readline/readline.h
	- added extern declaration for rl_insert_completions ()

lib/readline/funmap.c
	- added bindable command name `insert-completions' that maps to a
	  call to rl_insert_completions ()

documentation/bash.1
	- added documentation for new `completion-query-items' readline
	  variable
	- added documentation for new `insert-completions' readline
	  command

				   2/10
				   ----
subst.c
	- made ${xxx} behave correctly when the -u option was on and xxx
	  was not set
	- made $xxx with -u enabled and xxx unset set $? to 1

lib/malloc/malloc.c
	- made free() a void function, like ANSI and Posix say to

support/mksydefs
	- look for /usr/include/stdlib.h and define HAVE_STDLIB_H if found

cpp-Makefile
	- pass HAVE_STDLIB_H to all makes

ansi_stdlib.h
	- new file containing the extern function declarations that ANSI
	  puts into <stdlib.h> that bash uses; really a link to
	  lib/posixheaders/ansi_stdlib.h

lib/posixheaders/ansi_stdlib.h
	- real copy of ansi_stdlib.h

alias.c, bashline.c, variables.c, shell.c, error.c, hash.c, signames.c,
expr.c, general.c, input.c, builtins/mkbuiltins.c, builtins/fc.def,
lib/glob/glob.c, lib/tilde/tilde.c, lib/malloc/xmalloc.c
	- include <stdlib.h> if HAVE_STDLIB_H is defined, include
	  ansi_stdlib.h if not

general.h, alias.h
	- removed extern declarations for malloc and realloc

lib/readline/{readline,history,funmap,keymaps,vi_mode}.c
	- include <stdlib.h> or ansi_stdlib.h
	- remove extern char *getenv() declarations

cpp-Makefile
	- added dependencies on ansi_stdlib.h

support/fixdist
	- changes to make things work with ansi_stdlib.h (basically just
	  dupliating the lines for posixstat.h)

alias.h, braces.c, expr.c, general.h, hash.h, vprint.c,
builtins/fc.def, builtins/getopts.def, lib/glob/glob.c,
lib/tilde/tilde.c
	- define NULL as ((void *)0) if NULL undefined and compiling in an
	  ANSI C environment (__STDC__)

				   2/11
				   ----
lib/readline/readline.c
	- moved declaration of convert_meta_chars_to_ascii into the `forward'
	  declarations section, before its first use

				   2/13
				   ----
expr.c
	- if x is a char *, don't compare *x to NULL, use '\0' instead

				   2/15
				   ----
lib/readline/readline.c
	- add a call to rl_initialize_funmap at the beginning of
	  rl_named_function to make sure all of the function names will
	  be found

				   2/16
				   ----
parse.y
	- handle double-quoted ${...} words like the Posix.2 spec says --
	  count braces and skip command substitutions and quoted strings
	  to find the end of the pattern: new variables delimited_brace_level
	  and dollar_brace_level
	- add new variable embedded_quoted_string so that the parser can
	  skip embedded quoted strings while parsing $() and ${}
	  constructs

subst.c
	- new function: extract_dollar_brace_string () which implements
	  the Posix.2 rules about ${...} extraction: counting braces while
	  skipping quoted strings and command substitutions.  Called from
	  extract_string_double_quoted and expand_word_internal
	- changed the way pattern removal was done: the pattern is now
	  run through tilde expansion, parameter expansion, command
	  substitution, and arithmetic substitution, then quoted in a
	  way acceptable to fnmatch with quote_string_for_globbing
	- add code so that expansions like ${HOME:`xxxx`} are errors, as
	  they should be, and put the full expansion string in the error
	  message

				   2/17
				   ----

subst.c
	- changed expand_word_internal to call parameter_brace_expand_rhs
	  with the `quoted' parameter set to 0 except when the separator
	  between PARAM and WORD is `+'.  This makes things like

		echo "${undef-"foo bar"}"
	  echo `foo bar' without the quotes.  I'm still not sure this is
	  right, but it is compatible with other versions of sh

				   2/18
				   ----
parse.y
	- add code to reserved_word_acceptable so that bash will parse a
	  reserved word after a `}'

getcwd.c
	- make it compilable on machines without dirent.h and struct direct
	  or unistd.h (like the NeXT) using the proper conditional inclusion
	  with HAVE_DIRENT_H and HAVE_UNISTD_H

general.c
	- moved the getwd() replacement out from inside #ifdef USG and just
	  protected it with #ifdef HAVE_GETWD

machines.h
	- added #undef HAVE_GETWD and #undef HAVE_GETCWD to the NeXT
	  machine description

subst.c
	- added `forward' declarations for tilde_expand and
	  expand_string_unsplit and removed the function-local extern
	  declarations

				   2/19
				   ----
getcwd.c
	- changed to do conditional inclusion of limits.h, stdlib.h, string.h

				   2/22
				   ----
builtins/cd.def
	- if the chdir to the canonicalized form of the pathname in
	  change_to_directory fails, try what the user passed.  If that
	  succeeds, reinitialize the_current_working_directory to what
	  getwd() returns, and return success.  Fix for pathological
	  cases like

		mkdir x
		cd x
		( cd .. ; mv x y )
		cd .

				   2/24
				   ----
command.h
	- added extern declarations for make_word_array, make_command,
	  make_bare_simple_command, and make_here_document
	- added extern declarations for functions in copy_command.c:
	  copy_command, copy_word, copy_word_list, copy_redirect,
	  copy_redirects

copy_cmd.c
	- made all functions not used outside this file static

execute_cmd.c
	- removed extern declaration of make_word_array

				   2/25
				   ----
shell.c
	- made non-interactive shell look for $BASH_ENV startup file rather
	  than $ENV (conflict with Posix.2)

command.h
	- broke the `union redirectee' out of the struct redirect, made
	  the union it's own typedef (REDIRECTEE), then added
	  REDIRECTEE redirectee to the struct redirect
	- made the `dest' member of a REDIRECTEE a long.  It matters on
	  some machines (sizeof(long) == sizeof(pointer) != sizeof(int)
	  and works on those machines with all those sizes being 32 bits
	  (this should really be a typedef rather than a long)

execute_cmd.c, parse.y
	- changed all calls to make_redirection to pass a WORD_DESC * or
	  a long as the third argument to make_redirection
[this should conclude the changes needed for the alpha]

				    3/2
				    ---
subst.c, variables.c
	- moved some function-scope extern function declarations to file
	  scope

subst.c
	- changed paramter_brace_expand_pattern to call expand_string_internal
	  on the removal pattern, since we do not want word splitting

jobs.c
	- call get_tty_state or set_tty_state in wait_for() depending on
	  a job's exit status when interactive_shell is set, rather
	  than testing interactive.  This makes stty commands in scripts
	  executed with `.' `stick'

nojobs.c
	- make sure we only call {set,get}_tty_state when interactive_shell
	  is set

				    3/3
				    ---
unwind_prot.c
	- make sure there is actually something on unwind_protect_list
	  before calling without_interrupts to run something on it or
	  delete something from it

jobs.c
	- make sure job_slots is not empty in cleanup_dead_jobs and
	  delete_all_jobs before actually doing something

				    3/4
				    ---
machines.h
	- add #undef HAVE_GETWD to Xenix286 machine description

lib/readline/history.c
	- fixed an off-by-one error in the history expansion code: if
	  the length of the result string after adding the current piece
	  is (allocated_len - 1), the strcpy will write over the first
	  marker placed there by the malloc debugging code.
	- changed the history realloc code to work in 256-character chunks
	  rather than 255-character ones

				    3/8
				    ---
execute_cmd.c
	- new variable exec_redirection_undo_list that holds redirections
	  that must be undone even when `exec' throws away
	  redirection_undo_list.  These are copies of open files for
	  constructs like 7<&1.  Set in add_undo_redirect and used in
	  execute_builtin_or_function.  Disposed of otherwise.

				    3/9
				    ---
execute_cmd.c
	- fixed a memory leak in execute_builtin_or_function by adding an
	  unwind_protect to dispose of saved_undo_list
	- anywhere do_redirections is called with INTERNAL==1 (which means
	  we make redirection_undo_list), arrange to clean up 
	  exec_redirection_undo_list

print_cmd.c
	- massive namespace cleanups -- made almost all functions static
	- new function `colon' to be called in place of `cprintf(";")'
	  to ensure that we don't print a `;' right after a `&' from 
	  compound command printing functions (if, while, until, for)

[put code out for FTP on 3/10]

				   3/11
				   ----
documentation/bash.1
	- removed the description of >&word as a way to redirect both
	  standard output and standard error

endian.c
	- moved new-endian.c to this.  This handles 64-bit machines
	  directly

lib/readline/readline.c
	- rl_copy -> rl_copy_text to avoid clashes with Sun's libraries
	- moved the completion code to a new file

lib/readline/complete.c
	- new file with the completion code from readline

lib/readline/Makefile, cpp-Makefile
	- added complete.c and complete.o to the necessary make variables

subst.c
	- added an entry to special_vars to make a change to $TERMINFO
	  cause readline to reset itself (sv_terminal())

				   3/12
				   ----
builtins/exec.def
	- free `command' if the exec fails

machines.h
	- change sgi machine description to define HAVE_GETWD

lib/readline/history.c
	- fixed a memory leak in read_history_range -- need to free
	  `buffer' before returning
	- if read(2) returns <= 0 in history_truncate_file, then
	  immediately exit
	- start checking at buffer[chars_read - 1] for newlines

lib/readline/readline.c
	- fixed a memory leak in rl_read_init_file -- `buffer' must
	  be freed before we return
	- rearranged code in update_line so that we check for ols and
	  nls being in bounds before trying to compare their values

parse.y
	- fixed memory leak in read_token -- don't need to save `token'
	  into a fresh variable before calling push_string because
	  push_string does its own savestring in save_expansion

subst.c
	- fixed memory leak in expand_words_internal -- the word_list
	  allocated by the `@' case when expanding $@ needs to
	  be freed after turning it into a string with string_list
	- fixed memory leak in expand_word_internal -- the string
	  returned by extract_dollar_brace_string needs to be freed
	- fixed memory leak in expand_word_internal -- the string
	  returned by substring() in the `default:' case needs to be
	  freed

variables.c
	- fixed a free-memory reference in makunbound -- have to save the
	  value of `name' before calling dispose_variable, because it
	  might directly reference old_var->name.  If so, then
	  stupidly_hack_special_variables will refer to freed memory

dispose_cmd.c
	- fixed a memory leak in dispose_command: if a group_command is
	  being disposed, need to free command->value.Group after
	  calling dispose_command (command->value.Group->command);
	- fixed a memory leak in dispose_command: if a case command is
	  being disposed, need to free command->value.Case after
	  freeing everything else

mailcheck.c
	- fixed memory leak in remember_mail_dates -- need to
	  free the value returned by get_mailpaths()
	- fixed memory leak in remember_mail_dates -- need to
	  free the value returned by extract_colon_unit()

				   3/13
				   ----
bashline.c
	- fixed memory leak in bash_symbolic_link_hook -- 
	  get_working_directory always returns newly-allocated memory
	  that must be freed
	- fixed memory leak in bash_symbolic_link_hook -- 
	  if `*dirname' is going to be replaced, the current contents
	  have to be freed (if non-null)
	- make bash_symbolic_link_hook call get_working_directory with
	  a non-empty string for the value of `for_whom'

execute_cmd.c
	- make sure that execute_command cleans up after itself by
	  disposing the fd_bitmap it allocates

shell.c
	- fixed memory leak in reader_loop -- if throw_to_top_level is
	  called with DISCARD, the current command needs to be disposed

lib/readline/complete.c
	- when we return NULL to indicate the end of a set of completion
	  matches, free dirname, filename, and users_dirname -- there's
	  no reason to let them persist between calls, consuming memory

				   3/16
				   ----
shell.c
	- when moving the `script' fd to the highest available fd, check
	  for getdtablesize returning -1 and default to 20 in that case

jobs.c
	- if getdtablesize returns something < 0, default to 20 
	- check that getdtablesize() leaves `nds' set to something valid
	  before trying to dup2 shell_tty to it

machines.h
	- changed M_OS in KSR/1 description to OSF1

maxpath.h
	- include sys/param.h if __ksr1__ defined

parse.y
	- changed declaration of the_time from long to time_t

lib/readline/readline.c
	- changed extern declarations for rl_basic_word_break_characters
	  and rl_completer_word_break_characters to file scope rather
	  than block scope
	- changed declaration of chars_avail (param to FIONREAD ioctl) to
	  int, which it should have been all along

				   3/17
				   ----
jobs.c
	- clamp nfds in initialize_jobs at 256

shell.c
	- clamp the value returned by getdtablesize() to 256

				   3/19
				   ----
execute_cmd.c
	- make find_user_command_in_path return a pathname if it exists
	  and the caller wants FS_EXISTS files.  This affects the `.'
	  builtin and files as script arguments to the shell (shell.c)
	- clamp the highest-numbered file descriptior at 256 in
	  close_all_files().

jobs.c
	- make get_tty_info print error message on tcgetattr failure only
	  if interactive != 0 (that is, we're really interactive now)

lib/readline/rltty.c
	- changed SETATTR macro to call tcsetattr with TCSANOW flag, since
	  this call is being used to affect an input file descriptor.
	  Ditto for the sys5 tty driver code and TCSETA (was TCSADRAIN and
	  TCSETAW, respectively)
	- added a flag for ksr1 machines `ksrflow' which is the state of
	  suspended output for this process.  If 1, this process has called
	  tcflow (tty, TCOOFF) to suspend output and tcflow(tty, TCOON)
	  may be called safely
	- temporarily (?) disabled the code that simulates at ^Q at the end
	  of set_tty_settings.  Let's see if it makes any difference

				   3/22
				   ----
execute_cmd.c
	- new global variable (yucch) `current_fds_to_close' that is set to
	  the fd_bitmap passed to execute_simple_command while expand_words
	  is being executed so that this information is available to the
	  process substitution code
	- set current_fds_to_close to NULL at start of execute_command

subst.c
	- change call to close_all_files in process_substitute to call
	  close_fd_bitmap (current_fds_to_close)
	- fixed memory leak in parameter_brace_expand_length() -- need to
	  free the memory used to expand the PS1 in something like ${#PS1}
	- fixed memory leak in expand_word_internal ${3:+posix} did not
	  free the memory used to expand the $3

documentation/bash.1
	- && and || have equal precedence; fixed up man page to reflect
	  this

				   3/23
				   ----
[fixes from bfox version of 1.13 dated 3/21/93 from eos.ucsb.edu]

config.h
	- #undef alloca before redefining it as __builtin_alloca

cpp-Makefile
	- compile newversion.c with $(CFLAGS) instead of $(DEBUG_FLAGS)

general.h
	- new #define: maybe_free(x)

jobs.c
	- alliant has same problem as NeXT wrt /usr/etc/rlogind and /dev/tty
	- make delete_all_jobs be static void

builtins/cd.def
	- use maybe_free define

builtins/common.c
	- HAVE_VPRINTF --> HAVE_VFPRINTF

builtins/test.def
	- document -h as a synonym for -L

lib/readline/history.c, lib/readline/rldefs.h
	- #undef alloca before redefining it as __builtin_alloca

lib/readline/history.c
	- new functions history_get_state and history_set_state

lib/readline/tilde.c
	- put in #pragma alloca if on AIX machine

support/getcppsyms.c
	- recognize __GNUC__ and __STDC__ and pass them along as output

				   3/24
				   ----

subst.c
	- removed fully_quoted_word(), since it was unused

execute_cmd.c
	- added extern declarations for functions in dispose_cmd.c
	- removed extern declaration of atol()

parse.y
	- added extern declaration for dispose_words()

documentation/bash.1
	- re-added the description of >&filename as a way to redirect
	  both stdout and stderr to filename

machines.h
	- slight changes to the alpha description

shell.c
	- moved all the extern function declarations to have file scope

print_cmd.c
	- colon --> semicolon

parse.y
	- in read_token, if we're parsing an embedded quoted string, don't
	  bother with special processing of `$' and characters following

				   3/25
				   ----
print_cmd.c
	- added a new function the_printed_command_resize to expand the
	  printed command buffer in cprintf()

builtins/bind.def
	- removed the unwind-protect code, because unwind_protect_pointer
	  is not guaranteed to work on a FILE *

lib/readline/readline.c
	- assign in_stream and out_stream immediately, because they may
	  be used before readline_internal is called

				   3/26
				   ----
cpp-Makefile
	- allow for use of different compress programs with the use of
	  $(COMPRESS) and $(COMPRESS_EXT)

				   3/29
				   ----

general.c
	- new function set_lines_and_columns to set $LINES and $COLUMNS in
	  response to a SIGWINCH

lib/readline/readline.c
	- call set_lines_and_columns() in set_screen_size() to set the
	  right environment variables on a SIGWINCH (code needed to be
	  rearranged a bit to make this happen)

jobs.c
	- add a SIGWINCH handler to set $LINES and $COLUMNS if readline is
	  not being compiled into the shell and TIOCGWINSZ and SIGWINCH
	  are defined

subst.c
	- made dequote_string extern so `read' can use it

builtins/read.def
	- added CTLESC characters to represent escapes instead of doing
	  backslash processing internally

braces.c
	- fixed the brace expansion code so that backslash can correctly
	  act as an escape character, and escape `"' in a double-quoted
	  string

				   3/31
				   ----
make_cmd.c
	- the `<>' redirection needs to open the file O_RDWR|O_CREAT
	  for Posix.2 compatibility

				    4/1
				    ---
parse.y
	- the function read_a_line was changed to take a flag telling it
	  whether or not to remove quoted newlines
	- read_secondary_line was changed to call read_a_line with an arg
	  of 1, telling it to strip \<newline> pairs

	  These two changes fix two bugs with here documents:
		1.  delimiter check occurs after \<newline> stripping
		2.  leading tab deletion occurs after \<newline> stripping

lib/readline/rldefs.h
	- include <termcap.h> if on Linux

lib/readline/readline.c
	- don't declare PC, BC, and UP if on Linux (??)
	- change the conditional parsing code that handles the `$if term='
	  construct to test the name given in the if command against both
	  the `long' and `short' forms of rl_terminal_name.  For instance,
	  if `rl_terminal_name' were `sun-cmd', it would be tested with
	  stricmp against both `sun' and `sun-cmd'

machines.h
	- add HAVE_VFPRINTF to the Linux description

unwind_prot.h
	- change the unwind_protect_int macro to cast the second argument to
	  unwind_protect_var to a (char *), which is what unwind_protect_var
	  expects

unwind_prot.c
	- change unwind_protect_var to allocate memory and do a bcopy if the
	  size of the variable passed to save is not sizeof(int).  That's
	  what restore_variable expects

lib/readline/complete.c
	- fixed rl_complete_internal so that it pays attention to the value
	  of rl_completer_quote_characters and quotes a match if the match
	  contains a word break character

bashline.c
	- set rl_completer_quote_characters to ' and "

				    4/5
				    ---
lib/readline/complete.c
	- changed rl_complete_internal so that an `attempted completion
	  function' may tell readline not to perform filename completion
	  if it fails by returning (char **) -1

bashline.c
	- attempt_shell_completion should return (char **) -1 if doing
	  command word completion and no matches are found.  This will
	  tell readline not to perform filename completion

				    4/6
				    ---
builtins/common.c
	- fixed the error message printer by get_working_directory:
	  `for_whom', shell_name, or `bash: ' is printed first; the
	  first non-empty one being printed.  Explanatory text is
	  added to the error message

				    4/7
				    ---
machines.h
	- in the Sun section, define Solaris of either `USGr4' or __svr4__
	  is defined
	- Solaris 2 systems have sys_siglist, so don't #undef HAVE_SYS_SIGLIST

jobs.c
	- don't declare sys_siglist if on Solaris 2

				    4/8
				    ---
lib/readline/rldefs.h
	- do not define USE_XON_XOFF.  This causes output to be swallowed
	  when using bash over a relatively slow line (like a modem line).
	  This means that ^S and ^Q don't work on termio/termios systems;
	  use ^V to quote characters instead

variables.c
	- don't perform a get_working_directory on startup unless we did
	  not inherit $PWD or the inherited value of $PWD is wrong

trap.c
	- new functions: free_trap_strings and reset_original_signals.
	  Together they do the same thing as restore_original_signals()

jobs.c, nojobs.c
	- removed call to restore_original_signals from make_child.  Now
	  callers have to handle this themselves

execute_cmd.c
	- added a call to restore_original_signals after make_child in the
	  child process everywhere make_child is called

subst.c
	- added call to restore_original_signals after make_child in
	  process_substitute
	- added call to reset_signal_handlers after make_child in
	  command_substitute for the child process

	  [THERE IS A PROBLEM WITH A TRAP on `0' -- it is inherited in the
	   child process started to run the command substitution]

[These are fixes to make savetraps="$(trap)" work as Posix.2 specifies]

				   4/11
				   ----
bashline.c
	- supply a value for rl_completer_word_break_characters; `$' is
	  not a shell word break character

				   4/13
				   ----
lib/readline/complete.c
	- only look at adding quote characters to completion matches if
	  we're doing filename completion

bashline.c
	- don't supply a value for rl_completer_word_break_characters

				   4/14
				   ----
documentation/bash.1
	- clarify what the readline function shell-expand-line does

jobs.c
	- clean up dead jobs in wait_for even in non-interactive shells
	  rather than waiting for the next call to the parser

				   4/15
				   ----
bashline.c
	- reorganized the shell_expand_line code; broke it up into several
	  discrete functions
	- added new functions: history_and_alias_expand_line,
	  history_expand_line
	- added a new emacs-mode command, M-!, bound to history-expand-line

				   4/18
				   ----
unwind_prot.c
	- more fixes to the save-variable and restore-variable code,
	  mostly to make things work better on machines like the alpha
	  where sizeof(int) != sizeof(char *):

		save and restore now use identical logic and nearly
		identical code to decide whether or not to use malloc and
		bcopy or assignment

builtins/common.c
	- new functions to manage the state of the dollar variables:

		dollar_vars_changed - return 1 if the dollar variables have
				      been changed
		set_dollar_vars_changed - set the state of dollar variable
					  modification to `changed'
		set_dollar_vars_unchanged - set the state of dollar variable
					  modification to `unchanged'

builtins/source.def
	- new function: maybe_pop_dollar_vars.  This is called so that the
	  `.' command will restore the dollar variables only if the script
	  run with . has not changed them.  If the script changed $@, the
	  new values should stay in place
	- changes to source_builtin to set the state of the dollar
	  variables to `unchanged' before executing the script, and calling
	  maybe_pop_dollar_vars() to decide whether or not to restore the
	  dollar variables and to do so if warranted

machines.h
	- new description for NEC EWS4800, from m-hirano@sra.co.jp via
	  hikichi@sra.co.jp

				   4/19
				   ----
support/mksysdefs
	- check for both /hp-ux and /bin/uname before deciding a machine
	  should be checked for an HP/UX revision level

				   4/22
				   ----
input.h, general.h, lib/readline/readline.h, lib/tilde/tilde.h
	- added typedefs for CPFunction (pointer to function returning
	  pointer to char) and CPPFunction (pointer to function returning
	  pointer to pointer to char)

execute_cmd.c
	- replaced all instances of (int)redirectee in do_redirection_internal
	  with a variable redir_fd, which is set to redirectee.dest

print_cmd.c
	- replaced all instances of (int)redirectee in print_redirection
	  with a variable redir_fd, which is set to redirectee.dest

maxpath.h
	- #include <sys/param.h> on OSF/1 systems

subst.c
	- added extern declaration for list_append
	- changed sv_allow_null_glob_expansion to compare the return value
	  from find_variable to NULL to set the value of
	  allow_null_glob_expansion

parse.y
	- fix the assignment_acceptable macro so we cannot return
	  ASSIGNMENT_WORD while in the middle of a case statement pattern
	  list (in_case_pattern_list != 0)

general.c
	- Linux has gethostname() and does not need the emulation

jobs.c
	- Linux has a declaration for sys_siglist that conflicts with the
	  extern declaration; use the one from the standard include file
	- the sigprocmask emulation did not handle NULL arguments in
	  oldset and newset; check them before using

				   4/23
				   ----
lib/readline/complete.c
	- use single_quote() to quote a completion replacement with
	  embedded occurrences of characters from rl_completer_quote_characters

				   4/26
				   ----
print_cmd.c
	- redid cprintf() for systems without varargs to be what bfox has
	  (using char * where bfox has void *)

parse.y
	- make read_secondary_line take an argument telling it whether or
	  not to have read_a_line remove quoted newlines

make_cmd.c
	- pass an argument to read_secondary_line saying whether or not to
	  remove quoted newlines, set to 1 if the delimiter of a here
	  document is unquoted

				   4/28
				   ----
builtins/ulimit.def
	- added -u option to set and get the max number of processes
	  available to a user; available on systems which define
	  RLIMIT_NPROC
	- added better handling of getrlimit failures to ulimit_builtin

cpp-Makefile
	- made $(HOSTTYPE_DECL) appear on the cc command line before the
	  $(CPPFLAGS) when making variables.o

				   4/29
				   ----
lib/readline/complete.c
	- added an extern declaration for getpwent() for isc386 machines
	  where __STDC__ is not defined and _POSIX_SOURCE is

				   4/30
				   ----
general.c
	- new function legal_identifier, which returns 1 if a string
	  passed is a legal shell identifier and 0 otherwise.  Used
	  to decide what is and is not a legal variable name for the
	  expansion functions

subst.c
	- make expand_word_internal check that a ${ } expression
	  that starts with a digit is composed of all digits before
	  deciding that a variable starting with a digit is special
	  (setting var_is_special to 1)
	- new function valid_brace_expansion_word (name, var_is_special)
	  returns 1 if name is a legal lhs of a brace expansion
	  expression
	- make expand_word_internal check an identifier for validity
	  before passing it off to parameter_brace_expand_word by calling
	  valid_brace_expansion_word ()
	- new function valid_length_expression (name) returns 1 if NAME is
	  something that can be passed to parameter_brace_expand_length();
	  called from expand_word_internal before calling
	  parameter_brace_expand_length()


	These fix the following:
		${#<digit><alpha>} was treated as x=$<digit><alpha>, ${#x}
		${<digit><alpha>} was treated as ${<digit>}<alpha>
		${<illegal-id>} was not flagged as an error
		${#<illegal-id>} was not flagged as an error

				    5/2
				    ---
input.c
	- make check_bash_input change the value of default_buffered_fd
	  if it moves the input fd to a new fd as the result of a 
	  redirection

execute_cmd.c
	- don't make do_piping try the dup2 and close if pipe_out ==
	  REDIRECT_BOTH (-2) -- it's useless work
	- add error checking to do_piping to see if the dup2 calls fail
	  and why

error.c
	- new function internal_error for shell internal error messages

jobs.c
	- changed some fprintf(stderr, ...) calls to internal_error()
	  calls

				    5/3
				    ---
execute_cmd.c
	- do not change the buffered stream associated with a file descriptor
	  when processing an r_inputa_direction redirection in
	  do_redirection_internal

jobs.c, nojobs.c
	- don't sync the buffered stream associated with default_buffered_input
	  in make_child if the shell is reading input from fd 0 and running an
	  asynchronous command

				    5/4
				    ---

execute_cmd.c
	- if the shell is not interactive, clean up the dead jobs each time
	  we call execute_command ()

jobs.c
	- new function, mark_dead_jobs_as_notified
	- if the shell is not interactive, mark all dead jobs as notified in
	  notify_and_cleanup so that cleanup_dead_jobs frees up the slot in
	  the jobs array

nojobs.c
	- make cleanup_dead_jobs call reap_zombie_children on Posix systems,
	  so the shell doesn't keep growing in size as more jobs accumulate
	  before a call to wait_for()

				    5/6
				    ---
jobs.c
	- take the code that resets the signal handler out of flush_child;
	  it should be done in wait_for
	- new function reap_dead_jobs to be run by non-interactive shells
	  that marks all dead jobs as notified and cleans up the job list
	- removed the code from notify_and_cleanup that marks dead jobs as
	  notified if the shell is not interactive

execute_cmd.c
	- took the code that cleaned up dead jobs out of execute_command
	  There is a problem when this is run as the result of a trap on
	  SIGINT and the trap command is called directly from flush_child --
	  a job slot can disappear out from underneath flush_child and
	  wait_for and cause the shell to abort
	- added a new define REAP that causes a non-interactive shell to
	  clean out the job table by calling reap_dead_jobs or
	  cleanup_dead_jobs
	- added calls to reap to execute_for_command and
	  execute_until_or_while

nojobs.c
	- changed wait_sigint_handler to not do anything when it is called,
	  not even run a signal handler
	- changed wait_for to call the old sigint handler if a foreground
	  process exits due to a SIGINT

	  [these make nojobs.c behave like jobs.c when waiting for a job in
	  a non-interactive shell]

config.h.mini
	- new `minimal' configuration file

				    5/7
				    ---
subst.c
	- make sure that command_substitute closes the pipe file descriptors
	  if there is a goto error_exit

				   5/10
				   ----
nojobs.c
	- add a SIGWINCH handler to set $LINES and $COLUMNS if readline is
	  not being compiled into the shell and TIOCGWINSZ and SIGWINCH
	  are defined

[code put out for FTP on slc2.ins.cwru.edu]

				   5/11
				   ----

braces.c
	- commas within backquotes inside matching braces are now treated as
	  quoted (e.g., echo {`echo foo:bar | sed s/:/,/`})

lib/readline/search.c
	- added extern declarations for xmalloc, xrealloc

				   5/12
				   ----
lib/malloc/malloc.c
	- added a #define wrapper around the sbrk() declaration so that it's
	  not declared as char * if hpux_8 or VOID_STAR_SBRK are defined

subst.c
	- changed sense of #ifdef so that unless KSH_INCOMPATIBLE is defined
	  ${#@} and ${#*} are equivalent to $#

				   5/13
				   ----
execute_cmd.c
	- don't create the export env unless we are running a command with
	  shell_execve (in execute_disk_command)

jobs.c, nojobs.c
	- don't create the export env in make_child (why were we doing this
	  in the first place?)

hash.c
	- removed declaration of initialize_hashed_filenames, which is unused

subst.c
	- make list_rest_of_args, list_string, and the brace expansion code
	  in expand_words_internal use the REVERSE_LIST macro rather than a
	  call to reverse_list()

make_cmd.c, copy_cmd.c
	- change uses of reverse_list to REVERSE_LIST

				   5/17
				   ----
execute_cmd.c
	- make execute_disk_command look in the temp environment for an
	  assignment to PATH, and disable hash lookup for the command if
	  such an assignment is present

				   5/18
				   ----
parse.y
	- changed read_a_line so that a backslash can quote a \<newline>
	  pair and prevent its removal when remove_quoted_newline is 1

				   5/19
				   ----
siglist.h
	- new file, to encapsulate the declarations of sys_siglist and
	  provide a `strsignal' macro

jobs.h, siglist.c, longest_sig.c
	- include siglist.h

jobs.c, nojobs.c
	- removed declaration of sys_siglist

				   5/20
				   ----
execute_cmd.c
	- don't set up the loop_redirections unwind-protect unless there
	  are actually some redirections
	- combined the AND_AND and OR_OR cases of execute_command_internal
	  to remove some duplicated code
	- folded two tests together in the simple command case of
	  execute_command_internal to remove a layer of indentation and
	  braces
	- don't set up the unwind_protect in execute_simple_command unless
	  the command actually expands to something
	- broke the code that executes functions and builtins out into new
	  functions (execute_function and execute_builtin) and changed
	  execute_builtin_or_function and execute_subshell_builtin_or_function
	  to call them
	- replaced the async_redirections unwind-protect in
	  execute_disk_command, since there's no reason to do it if we're
	  already in a subshell and simply going to exit if the redirections
	  fail
	- set up the unwind-protect on saved_undo_list in 
	  execute_builtin_or_function only if there are redirections saved
	  in saved_undo_list
	- only call do_redirections in execute_disk_command if there are
	  redirections to perform -- no need for the side effects since
	  we're in a subshell

				   5/21
				   ----
parse.y
	- make read_a_line, shell_getc, decode_prompt_string, prompt_again,
	  bash_add_history, reset_readline_prompt, read_token, discard_until,
	  shell_ungetc static functions
	- eliminated the after_preprocess label in shell_getc
	- broke the prompt command execution code out into a separate
	  function: execute_prompt_command

subst.c
	- combined some common code in extract_string_double_quoted for the
	  $( ) and ${ } cases
	- changed the allocation scheme in string_list_internal to hopefully
	  reduce the number of allocations
	- added a new define SET_INT_VAR and changed all of the sv_*
	  functions that set a variable depending on whether or not a
	  variable exists to use it

variables.c
	- declare argument to getenv as `const char *' on Linux

machines.h
	- Linux has the fixed include files if gcc is being used to compile
	  the shell

				   5/23
				   ----
subst.c
	- only call rl_reset_terminal in sv_term if no_line_editing is 0
	  (which means we're actually using readline)

				   5/25
				   ----
execute_cmd.c
	- changed execute_for_command to explicitly call the functions that
	  were to be called by the unwind-protect code (e.g., dispose_words),
	  and changed the run_unwind_frame call to a call to
	  dispose_unwind_frame.  This is to avoid using the kernel to block
	  interrupts as much as possible
	- did the same for execute_case_command and execute_builtin

jobs.c
	- only run traps on SIGCHLD if job_control != 0

				    6/3
				    ---
unwind_prot.c
	- have without_interrupts call QUIT only if interrupt_immediately
	  is set to 1

				    6/7
				    ---
machines.h, jobs.h, lib/readline/chardefs.h, maxpath.h
	- changes for Solaris 2 with gcc from Greg Onufer

lib/malloc/malloc.c
	- define NO_SBRK_DECL if hpux_8 or Solaris
	- declare sbrk as extern char * unless NO_SBRK_DECL is defined.
	  VOID_STAR_SBRK has been removed

lib/readline/readline.c
	- changed a call to alloca to a call to xmalloc to avoid problems
	  on the DEC alpha (can't pass memory allocated with alloca to
	  another function)
	- moved key binding and startup file code to bind.c

lib/readline/rldefs.h
	- created common definitions for emacs_mode and vi_mode

lib/readline/bind.c
	- new file containing the key binding and startup file code.

				    6/8
				    ---
lib/readline/readline.c
	- changed rl_message to use varargs, if HAVE_VARARGS_H is defined

lib/readline/rldefs.h
	- include <varargs.h> if HAVE_VARARGS_H is defined

lib/readline/{readline.c,bind.c,rltty.c,vi_mode.c,search.c}
	- cleaned up the namespace by prefixing all pseudo-global readline
	  variables (variables private to the library but used in multiple
	  files) with _rl_

				   6/10
				   ----
[changes from bfox]

bashansi.h
	- new file, including both string.h and ansi_stdlib.h

dispose_cmd.h, make_cmd.h, subst.h
	- new files containing extern function declarations

endian.c
	- for machines with sizeof(long)==8, shift by 31, then 1 to fake
	  out gcc 2.4, which complains when you shift by 32

general.h
	- added an include of string.h or strings.h
	- changed the declarations of the savestring() and member() macros

shell.c
	- changed the structure of the long_args struct to be more portable

subst.c
	- made dequote_string and dequote_list static

[end of changes from bfox]

general.h
	- added extern declarations for all of the non-int functions
	  defined in general.c

<most files>
	- removed extern declarations that appear in one of the bash header
	  files

				   6/15
				   ----
lib/readline/readline.c
	- incorporated a patch to rl_transpose_chars from Tom Tromey
	  which allows C-t to be undone
	- fixed rl_rubout so the fast screen fixup when deleting the
	  last character on the line handles characters that are more
	  than one screen position wide by erasing the right number of
	  physical characters

				   6/16
				   ----
siglist.h
	- don't declare sys_siglist on 4.4 BSD

builtins/mkbuiltins.c, lib/readline/history.c
	- include <unistd.h> if HAVE_UNISTD_H is defined

				   6/19
				   ----
machines.h
	- new description for the Intel Paragon running OSF/1

support/getcppsyms.c
	- new variables for the paragon (__i860__, __PARAGON__, etc.)

documentation/bash.1
	- make it clear the the -noprofile switch disables the sourcing
	  of ~/.bash_login and ~/.profile as well as /etc/profile and
	  ~/.bash_profile

				   6/23
				   ----
shell.c
	- instead of calling maybe_execute_file on "/etc/profile",
	  use a #define for SYS_PROFILE, which is initially defined
	  to be "/etc/profile" by default

lib/readline/isearch.c
	- new file, with the isearch code

lib/readline/display.c
	- new file, with the incremental redisplay code

lib/readline/readline.c
	- removed the isearch, display code

				   6/24
				   ----
lib/readline/readline.c
	- removed the signal-handling code

lib/readline/signals.c
	- new file with the signal-handling  code

				    7/1
				   ----
test.c
	- changed the `advance' macro to get around some picky compilers

machines.h
	- machine description for hp9000 running 4.4 BSD

support/getcppsyms.c
	- recognize __BSD_4_4__ for 4.4 BSD machines

builtins/souirce.def
	- cast the st_size stat struct member to int because it's
	  64 bits on 4.4 BSD

lib/readline/signals.c
	- include <sys/ioctl.h> if compiling on a 4.4 BSD machine

				    7/2
				    ---
builtins/read.def
	- if $IFS is unset it defaults to "" when splitting the line
	  read into words (so no splitting is performed)

				    7/5
				    ---
shell.c
	- remove SIGKILL from terminating_signals[] -- it can't be caught
	  or ignored
	- make terminating_signals[] static
	- make terminating_signals[] an array of structs that hold the signal
	  number and the original handler
	- change initialize_terminating_signals to use the new struct termsig
	  and to set the original handlers for all the terminating_signals
	- new function reset_terminating_signals to restore original handlers
	  for all terminating signals in terminating_signals[]

trap.c
	- new function signal_is_special, returns 1 if a signal is one of
	  the signals the shell treats specially
	- call reset_terminating_signals from restore_original_signals

getcwd.c
	- changed call to `stat' to call `lstat' to keep symlinks that
	  point to non-existant files from causing getcwd to fail
	- if S_ISLNK is not defined after inclusing `posixstat.h', use
	  a cpp #define lstat stat

machines.h
	- new entry for Symmetric 375 running 4.2 BSD

support/getcppsyms.c
	- recognize and pass along `scs' for the Symmetric 375

lib/readline/bind.c
	- new function: rl_set_keymap_from_edit_mode, which sets the
	  keymap appropriately depending on the editing mode as if we
	  were about to edit a command line

				    7/6
				    ---
lib/termcap
	- new code from the GNU termcap library distribution 1.02

endian.c
	- include bashansi.h

shell.c
	- fall back to sourcing $ENV if $BASH_ENV is not found

variables.c
	- make add_or_supercede search `array' only if it is non-null

				    7/7
				    ---
subst.c
	- made do_assignment_internal an int function that returns 1 if
	  the assignment was made correctly and 0 if it was not
	- do_assignment and do_assignment_no_expand now return the value
	  from do_assignment_internal

variables.c
	- made assign_in_env return 1 if everything appeared to go
	  successfully (which it always does)

cpp-Makefile
	- add variables.c as an explicit dependency for variables.o; there
	  appears to be a bug in Gnu make

braces.c
	- removed static version of copy_array since there's already one
	  in general.c, declared extern in general.h

lib/malloclib
	- updated to sources from Gnu libc 1.06

				    7/9
				    ---
shell.h
	- new struct: user_info, containing uid, gid and passwd file info
	  about the current user

shell.c
	- new variable current_user of type struct user_info
	- eliminated passwd_shell, passwd_dir, and current_user_name

subst.c
	- rewrote sv_uids to use the info in current_user.uid and .euid
	  and to use itos rather than sprintf

variables.c, mailcheck.c, test.c, execute_cmd.c, parse.y
	- changed to use current_user.user_name rather than current_user_name
	  and to use current_user.shell and current_user.home_dir instead of
	  passwd_shell and passwd_dir, respectively

flags.c, flags.h
	- new flag, `-p' for `privileged', a la ksh.  This is set automatically
	  if uid != euid || gid != egid
	- if +p, set the real and effective uids and gids to the real uid and
	  gid

flags.c
	- include shell.h for the current_user struct and don't explicitly
	  include header files included by shell.h

builtins/set.def
	- code to handle -p and -o privileged

documentation/bash.1
	- added documentation for set -p/set -o privileged
	- added documentation for bind -m keymap
	- added documentation to readline section for non-inc search bindings

builtins/bind.def
	- documented the -m keymap option

				   7/10
				   ----
machines.h
	- new description for NeXTstep running on intel 486

lib/tilde/tilde.c
	- fixed up definition of savestring macro

bashline.c
	- changed attempt_shell_completion so that when completing command
	  words and no matches are found, it tells readline to perform
	  filename completion but sets the completion ignore function
	  to one that will ignore all filenames matched, leaving only
	  directories in the list of matches
	- generalized the ignore processing, breaking the body of the
	  existing ignore function into a generic function that takes as an
	  argument a pointer to a function used to test each filename in the
	  match list for `acceptability'
	- added a new ignore function to support the `ignore filenames'
	  behavior described above

				   7/12
				   ----

machines.h
	- add #undef HAVE_GETCWD to Motorola M88100 description
[put code out for FTP on slc2.ins.cwru.edu]

				   7/13
				   ----
builtins/type.def
	- broke the code that does the work of the type builtin out into a
	  separate function and added a couple of other display options,
	  for eventual use by command -v and -V

builtins/bashgetopt.c
	- added a new function `report_bad_option'

builtins/jobs.def, bultins/histctl.def
	- changed to use report_bad_option

builtins/command.def
	- added the Posix.2 -v and -V options

				   7/14
				   ----
execute_cmd.c
	- make sure that execute_command_internal sets redirection_undo_list
	  and exec_redirection_undo_list to NULL after making local copies
	  so things don't get undone twice.  This can happen as the result
	  of an `fc' redoing a command with redirections:
			wc subst.c > xxx &
			r
	  [bug report from Ian Watson]

builtins/setattr.def
	- converted to use internal_getopt, so export and readonly both use
	  it

builtins/bashgetopt.c
	- changed the default error messages a little bit

shell.h
	- new exit values:  EX_NOEXEC, for when a command name is not
	  executable (126), and EX_NOTFOUND, for when a command is not
	  found (127)

execute_cmd.c
	- change to use EX_NOEXEC and EX_NOTFOUND

parse.y
	- broke function definitions off into their own production,
	  function_def

				   7/15
				   ----
builtins/kill.def
	- added code so that signals are listed by kill -l in the manner
	  specified by Posix.2 if the POSIXLY_CORRECT variable exists in
	  the environment
	- Posix.2 UPE says kill can take % job control arguments even if
	  job control is disabled, so let interactive shells use them

parse.y
	- decode_prompt_string now performs the Posix.2 ! expansion for
	  $PS1 and $PS2, if POSIXLY_CORRECT is turned on

builtins/exec.def
	- changed exit status to be in line with Posix.2 specification
	  (127 for not found, 126 for not executable)

builtins/wait.def
	- unknown jobs should cause wait to return 127

shell.c
	- change the behavior of sh -c so that if POSIXLY_CORRECT is in the
	  environment, the first argument after -c command is assigned to
	  $0, and the rest of the arguments, if any, are bound to $1 ... $n
	  Posix.2 4.56.3 specifies this behavior
	- move the code that does -c command out of the !local_skip_execution
	  block.  I can't see why it was there in the first place
	- made some of the private variables static to clean up the name
	  space
	- moved the code that runs the startup files into a separate
	  function: run_startup_files.  This is called with an argument
	  telling it whether or not to use the Posix.2 startup file sequence
	  ($ENV).  This argument is 1 if POSIXLY_CORRECT is found in the
	  environment at startup

builtins/fg_bg.def
	- bg needs to set last_asynchronous_pid when restarting a job in
	  the background, as per Posix.2, 5.4.2

jobs.c
	- make sure the status of exited jobs is printed as Done(n) where
	  `n' is the exit status, if POSIXLY_CORRECT is specified

				   7/16
				   ----
general.c
	- fixed a problem with canonicalize_pathname which made it get
	  confused with xxx/./yyy if yyy was `.' or `..'

parse.y
	- broke the code in read_token that checked for reserved words
	  into a macro: CHECK_FOR_RESERVED_WORD
	- if posixly_correct is 1, read_token does not allow reserved words
	  to be aliased (checks for reserved words before doing alias
	  expansion).  See Posix.2 3.3.1
	- changed the function_def production to make redirections
	  specified with a function definition bind to the function
	  rather than to the definition.  This introduced 66 (!)
	  bison shift/reduce conflicts.  From Posix.2 3.9.5
	- if `posixly_correct' is set, <>word will open word for read/write
	  on fd 0, rather than fd 0 and fd 1 as normal

builtins/source.def
	- removed the ALLOW_RIGID_POSIX_COMPLIANCE define; the check for
	  POSIXLY_CORRECT will always be performed

shell.c
	- new long option: -posix, sets posixly_correct to 1
	- posixly_correct set to 1 in main if POSIXLY_CORRECT found in
	  shell environment

subst.c
	- new function sv_strict_posix, sets value of posixly_correct
	  depending on $POSIXLY_CORRECT
	- if posixly_correct is set, don't do tilde expansion on 
	  =~ in words that are not shell assignment statements

execute_cmd.c, jobs.c
	- removed calls to getenv("POSIXLY_CORRECT") with checks of
	  posixly_correct
	- if posixly_correct is set, don't translate >&x into >x 2>&1

expr.c
	- implemented the OP= Posix.2 arithmetic assignment operators
	  (see Posix.2 table 2.15, section 2.9.2.1, and section 3.6.4)

documentation/bash.1
	- added documentation of new arithmetic evaluation assignment
	  operators
	- documented the new -posix long option

				   7/17
				   ----
builtins/setattr.def
	- made set_or_show_attributes correctly quote the values of shell
	  variables it prints so the output of `export' or `readonly' can
	  be used as input to the shell

builtins/fc.def
	- made fc write its output as Posix.2 5.12.6.1 specifies: when not
	  numbering, the command should still be output with a leading tab

variables.c
	- if `posixly_correct' is true, bash uses ~/.sh_history as the
	  default value of $HISTFILE

shell.c, subst.c
	- if posixly_correct is true, turn on interactive comments, since
	  that's what Posix.2 says to do

				   7/20
				   ----
lib/malloclib/{malloc.c,free.c,malloc.h}
	- bug fix from Mike Haertel

builtins/mkbuiltins.c
	- added code so that the Posix.2 `special' builtins have
	  SPECIAL_BUILTIN added to the flags in their entry in the
	  builtins array defined in builtins.c

shell.c
	- declare `restricted' as `extern int', since it's already
	  declared in flags.c

lib/readline/bind.c
	- only try to set the keymap to vi_insertion_keymap in
	  rl_set_keymap_from_edit_mode if VI_MODE is #defined

lib/malloc/malloc.c
	- define NO_SBRK_DECL for hpux_9

machines.h
	- hpux_9 needs to link with libPW.a to pick up alloca(), which
	  has reportedly been fixed

lib/tilde/Makefile
	- add a definition for RM to the makefile

				   7/21
				   ----
documentation/Makefile
	- added info, dvi targets
	- changed `squeaky-clean' to `distclean'
	- use $(MAKEINFO) in recipes rather than `makeinfo'

bashline.c
	- fixed memory leak in cleanup_expansion_error
	- fixed up some extern declarations of pre_process_line

cpp-Makefile
	- define HAVE_FIXED_INCLUDES by default if we're using gcc

				   7/27
				   ----
machines.h
	- add -ldgc to the DG/UX description if we're not building an
	  `M88KBCS_TARGET'

				   7/28
				   ----
shell.c
	- always initialize top_level_mask from what the shell inherits,
	  even for login shells

lib/tilde/tilde.c
	- declare the getpw functions only for USG systems

				   7/30
				   ----
lib/readline/readline.c
	- new function: _rl_kill_kbd_macro () to cancel any keyboard
	  macros being defined on a SIGINT

lib/readline/signals.c
	- call _rl_kill_kbd_macro on a SIGINT

bashline.c
	- don't bind anything with a META via rl_add_defun; change those to
	  add the definition unbound, then explicitly bind it into
	  emacs_meta_keymap

				    8/3
				    ---
bashline.c
	- save and restore the value of rl_startup_hook when using it in
	  special editing functions

				    8/4
				    ---
general.c
	- new global variable: global_error_list, returned instead of -1
	  from functions returning lists
	- changed delete_element to return &global_error_list instead of
	  (char **)-1

braces.c, general.c, expr.c
	- removed the conditional definition of NULL; it should be defined
	  in general.h

lib/glob/glob.c
	- new global variable: glob_error_return, returned instead of
	  (char **)-1 to signal a glob error
	- changed functions to return &glob_error_return instead of
	  (char **)-1

subst.c
	- fix the GLOB_FAILED macro to test against &glob_error_return
	  rather than (char **)-1

builtins/ulimit.def
	- cleaned up the casts like (long) -1; changed to -1L, which is
	  equivalent and more correct

lib/readline/complete.c
	- use the address of a new local variable `dead_slot' to mark
	  dead slots in the list of completion matches rather than
	  (char *)-1, which doesn't work everywhere

lib/readline/history.c
	- have get_history_word_specifier return the address of a static
	  variable `error_pointer' in case of error, rather than (char *)-1

lib/readline/signals.c
	- if SHELL is defined, don't mess with SIGTSTP, SIGTTIN, or SIGTTOU

lib/readline/vi_mode.c
	- make rl_vi_change_case skip over characters that are neither
	  upper nor lower case

				    8/5
				    ---
lib/readline/funmap.c
	- made qsort_string_compare compare the first characters of the
	  two strings before calling strcmp()

builtins/bind.def
	- rewrote to use internal_getopt
	- map specifications made with -m now affect all other options
	  and binding specifications
	- no processing is done until all the options have been processed
	- the -q option is now limited to a single argument, as the
	  documentation has always stated

lib/readline/vi_mode.c
	- fixed the `r' command so that the replacement is saved, and it
	  is redoable

command.h
	- add `line' members to the simple_command and command structs to
	  keep track of the line number the command appears on for $LINENO

make_cmd.c
	- save line number when making a `bare' simple command to the value
	  of line_number
	- save the first line of a function definition in make_function_def

copy_cmd.c
	- make sure that the line number information is copied with a command

execute_cmd.c
	- use the line number attached to the start of a function definition
	  and the line number of commands to update line_number while a
	  function is executing

				    8/6
				    ---
config.h, config.h.mini, cpp-Makefile
	- made ONESHOT a configuration option rather than a cpp define in
	  cpp-Makefile

builtins/fc.def, builtins/getopts.def
	- removed the code that defines NULL if undefined -- these files
	  include general.h, which already does that

lib/posixheaders/stdc.h
	- new file containing macros so that functions can be defined with
	  prototypes using the __P macro and compile on both ANSI C and
	  `traditional' C compilers

lib/malloc/malloc.c
	- changed the ASSERT macro to use a new __STRING define when calling
	  botch(), so that ANSI C systems see the correct error string
	  rather than `p' (unfortunately, the MAGICx constants are expanded
	  in the string passed to botch())

				    8/7
				    ---
bashline.c, execute_cmd.c, variables.c, parse.y, make_cmd.c, jobs.c
	- removed extern declarations of functions already declared as extern
	  in bash header files

execute_cmd.c
	- include lib/tilde/tilde.h
	- include builtins/common.h
	- include builtins/builtext.h for the extern declarations for the
	  shell builtins
	- moved vfree() to general.c

builtins/common.c
	- made dotted_filename static
	- made builtin_address_internal static

builtins/common.h
	- new file with extern declarations for all functions defined in
	  common.c

variables.h
	- added extern declaration of qsort_string_compare, assign_in_env

mailcheck.c
	- removed full_pathname (), since it is a function of general use

general.c
	- moved full_pathname () here from mailcheck.c
	- moved vfree() here from execute_cmd.c

general.h
	- added extern declaration for full_pathname

subst.h
	- added extern declaration for dequote_string

jobs.h
	- added external declarations for wait_for_background_pids and
	  wait_for_single_pid

parse.y
	- new function: find_reserved_word

builtins/{alias,builtin,cd,exec,exit,hash,read,setattr,shift,trap,wait}.def
	- removed extern declarations, replaced with inclusion of common.h

builtins/type.def
	- include common.h, remove extraneous extern declarations
	- call find_reserved_word instead of searching word_token_alist

builtins/bashgetopt.h
	- new file, extern declarations for stuff defined in bashgetopt.c

builtins/{bind,command,fc,histctl,jobs,setattr}.def
	- include bashgetopt, removed internal getopt extern declarations

cpp-Makefile, builtins/Makefile
	- add dependencies on bashgetopt.h to builtins
	- add dependencies on common.h to builtins

nojobs.c
	- wait_for_background_pids should be void

				    8/9
				    ---
builtins/common.c
	- new function, double_quote(), to double-quote strings

documentation/bash.1
	- added text specifying return value of `command -[vV]'
	- added description of the -E option to echo
	- added text specifying that `enable' accepts -a in place of -all

				   8/10
				   ----
shell.c
	- since non-Posix systems with job control use top_level_mask,
	  it needs to be initialized correctly by
	  initialize_terminating_signals

mailcheck.c
	- fixed mailpath-parsing code to correctly handle backslash-quoted
	  `?' and `%' in the $MAILPATH entries by adding a function
	  parse_mailpath_spec to return a pointer to the first unquoted
	  `?' or `%' and having remember_mail_dates and check_mail call it

documentation/bash_builtins.1
	- new man page for bash builtins, from jaws@pangaea.dme.nt.gov.au
	  (implemented by using number registers as flags and sourcing
	  bash.1)

				   8/16
				   ----
bashline.c
	- have maybe_make_readline_line use rl_delete_text rather than
	  rl_kill_text because the text need not be saved on the kill
	  ring

				   8/17
				   ----
jobs.h
	- don't include extern declarations for fork(), getpid(), or
	  getpgrp() if __SVR4_2__ is defined (Unixware, SVR4.2).
	  __SVR4_2__ used as in siglist.h

test.c
	- don't include extern declarations for getegid(), getgid(),
	  or geteuid() if __SVR4_2__ is defined (Unixware, SVR4.2)

				   8/18
				   ----
execute_cmd.c
	- don't check that the current directory in the path is `.' if
	  we've already found `.' in the path in find_user_command_internal
	- new function make_full_pathname, to glue `path' and `name'
	  together in find_user_command_internal rather than using sprintf,
	  which is very slow

				   8/19
				   ----

support/mksysdefs
	- packaged all of the uname calls into one block at the top of the
	  script; uname sets up some script variables:

		UNAME
		UNAME_R
		UNAME_M
		RELEASE
		LEVEL
	- make sure machines running SVR4.2 have __SVR4_2__ defined

machines.h
	- for i386 machines running SVR4.2, make sure that __SVR4_2__ is
	  added to SYSDEP_CFLAGS

test.c
	- changed the test_exit define to use the do { ... } while(0) idiom
	- made GID_T and UID_T be int for BSD/386, since that's what
	  getgroups() returns
	- cast both sides of a test to UID_T or GID_T to make sure we're
	  on the same page when testing

lib/readline/bind.c, lib/readline/readline.c
	- fixes to deal with the Cray's pointers of different sizes --
	  pointers to functions are a different size than pointers to
	  structs

				   8/20
				   ----
machines.h, test.c, jobs.h, siglist.h, support/mksysdefs
	- changed __SVR4_2__ to USGr4_2

support/getcppsyms.c
	- added support for recognizing __SVR4_2__ and USGr4_2

				   8/23
				   ----

variables.c
	- added a static variable that keeps track of whether or not
	  function local variables have been created with the `local'
	  or `typeset' builtins and short-circuits the call to
	  kill_all_local_variables if none have been created

lib/readline/vi_mode.c
	- extern declaration for rl_vi_check and rl_digit_loop1
	- declare `count' argument to rl_vi_delete
	- made rl_vi_set_last a void function

lib/readline/bind.c
	- declare `count' argument to strnicmp

lib/readline/readline.c
	- made rl_add_undo, free_undo_list void functions

lib/readline/readline.c, lib/readline/bind.c, lib/readline/search.c,
lib/readline/vi_mode.c
	- changed return; to return 0; and added explicit returns to many
	  `int' returning functions that didn't return a value

				   8/24
				   ----
builtins/ulimit.def
	- check for RLIMIT_RSS being defined before trying to use it

machines.h
	- fixes to cray machine description from Bill Jones

builtins/common.c
	- make all of the dollar_arg_stack stuff static

lib/malloc/alloca.c
	- new version, from emacs 19

				   8/26
				   ----
lib/readline/complete.c
	- use double quotes to quote replacement text with word breaks
	  rather than single quotes, which inhibit tilde expansion

lib/readline/vi_keymap.c
	- changed TAB to default to completion for the VI insert keymap

bashline.c
	- new function: posix_readline_initialize to make any changes
	  to the readline keymaps when switching into and out of Posix.2
	  mode
	- call posix_readline_initialize from initialize_readline

subst.c
	- call posix_readline_initialize from sv_strict_posix

				   8/27
				   ----
subst.c
	- changed USE_GLOB_LIBRARY to USE_POSIX_GLOB_LIBRARY to make the
	  intent clear

shell.c
	- new function, issock(fd) returns 1 if FD is a socket according
	  to fstat(2) -- note that this only works if S_ISSOCK is defined
	  in posixstat.h
	- run_startup_files calls issock to see whether or not to run
	  the .bashrc

input.c
	- include general.h for declarations of xmalloc, xrealloc

lib/tilde/tilde.c, lib/tilde/tilde.h
	- tilde_expansion_failure_hook is now a pointer to a CPFunction,
	  since that's how it's used

lib/readline/history.c
	- include <string.h> or <strings.h> as appropriate

				   8/29
				   ----
machines.h
	- avoid `M_MACHINE redefined' messages in the hpux description

				   8/30
				   ----
jobs.h
	- added #defines for sigfillset, sigdelset, and sigismember to fill
	  out the Posix.1 signal functions

general.h
	- add an extern declaration for getwd()

general.c
	- NeXT machines already have a vfree() with a declaration in stdlib.h,
	  so don't define our vfree() on those systems

cpp-Makefile
	- NeXT machines don't have a link to `gcc', so make sure that
	  HAVE_GCC is not defined on those machines, even if __GNUC__ is

lib/readline/readline.h, lib/readline/complete.c
	- rl_attempted_completion_function is now declared as a pointer to
	  a CPPFunction, since that's how it is used

bashline.c, bracecomp.c
	- fixed assignments to rl_attempted_completion_function, since it's
	  now a pointer to a CPPFunction

lib/readline/keymaps.h
	- fleshed out declarations of function types inside __FUNCTION_DEF
	  macro to match other files

lib/readline/readline.h
	- removed typedefs for function pointer types, since they are now
	  declared in keymaps.h

				   8/31
				   ----

lib/readline/complete.c
	- if there is more than one match, don't quote the replacement
	  text unless the matching prefix has a word break character.  The
	  old code quoted the replacement if any of the possible replacements
	  had a word break character

builtins/alias.def
	- fixed memory leak -- free the array returned by all_aliases when
	  alias is called without arguments

builtins/read.def
	- fixed memory leak -- need to free return value from
	  string_list_dollar_star

builtins/fc.def
	- fixed memory leak -- need to free return value from fc_readline

builtins/hash.def
	- fixed memory leak -- need to free return value from
	  find_user_command

builtins/alias.def
	- fixed memory leak -- remove_alias needs to free the key in the
	  hash table entry it deletes

execute_cmd.c
	- fixed memory leak in find_user_command_in_path: if we're not
	  returning full_path, we need to free it

lib/readline/bind.def
	- fixed memory leak -- need to free the returned arrays from
	  recursive calls to invoking_keyseqs_in_map

				    9/1
				    ---
builtins/bind.def
	- return failure immediately if no_line_editing is set

builtins/shift.def
	- fixed memory leak -- make sure all of the word list element from
	  rest_of_args is freed when shifting it into dollar_vars[9]

builtins/hash.def
	- fixed memory leak -- only need to save the key for a particular
	  hash item once in remember_filename

expr.c
	- fixed memory leak -- free `tokstr' after performing the assignment
	  statement and before assigning to it with savestring

execute_cmd.c
	- fixed memory leak -- need to free the copy of the command line
	  passed to make_child in execute_disk_command if the command is
	  not found

lib/readline/display.c
	- fixed call to tgoto in delete_chars -- caused the delete to fail
	  when using term_DC on some systems

[code made available via ftp -- first redistributable version]
