d09a5b5a71c71f2bdb07ff952dd7050c191f9ac2
[platform/upstream/bash.git] / CWRU / changelog
1                                     6/2
2                                     ---
3 lib/readline/readline.c
4         - fixed an off-by-one error in the kill ring reallocation code
5           in rl_kill_text
6
7 Makefile
8         - replaced instances of /bin/sh with $(SHELL)
9
10 Makefile, cpp-Makefile, documentation/Makefile
11         - added a working `uninstall' target
12
13 [1.14.0 FCS release made available for FTP]
14
15                                     6/3
16                                     ---
17 README
18         - added note about building with gcc, same as in Makefile
19
20 documentation/Makefile
21         - some versions of make don't understand `$*' in a regular recipe;
22           replace with features.dvi in the recipe for features.ps
23
24                                     6/4
25                                     ---
26 subst.c
27         - fix up the calls to string_extract_double_quoted and 
28           string_extract_single_quoted in char_is_quoted so the initial
29           value of the index is *after* the opening quote character
30         - make sure we only return 1 from char_is_quoted if the index
31           into the string after a call to string_extract_double_quoted or
32           string_extract_single_quoted is *greater than* `eindex'
33
34 lib/readline/complete.c
35         - change the order and sense of the quoting tests in
36           rl_complete_internal so that the expensive char_is_quoted
37           is only called if `scan' actually is a word break character
38
39 shell.c
40         - fixed a typo in the test for a restricted shell
41
42 builtins/exec.def
43         - need to include flags.h
44
45                                     6/6
46                                     ---
47 make_cmd.c
48         - make sure that we don't try to walk down a null command tree
49           in connect_async_list (tickled by `(command &) &')
50         - if a command has the CMD_WANT_SUBSHELL bit set in its flags,
51           don't even try to walk the command tree and move the `&';
52           just connect the command with a null command using `&'
53
54 execute_cmd.c
55         - make sure we don't try to reference a command struct without
56           first checking it (case '&')
57
58                                     6/7
59                                     ---
60 machines.h
61         - fix a typo in the NeXT/i386 description; change the NeXT description
62           to #define HAVE_RESOURCE if not already defined rather than putting
63           -DHAVE_RESOURCE into the SYSDEP_CFLAGS
64
65                                     6/9
66                                     ---
67 Makefile
68         - make sure all of the rules that reinvoke `make' have the
69           `-f bash-Makefile' before the assignment statements; some
70           versions of make like it that way
71
72 variables.c
73         - make sure that `interactive' is set to 0 before evaluating the
74           string containing an exported function obtained from the
75           environment, so that it does not try to execute PROMPT_COMMAND
76           (this may not be the best fix)
77
78                                    6/13
79                                    ----
80 documentation/Makefile
81         - make sure all of the directories exist before trying to install
82           doc files into them
83
84 lib/readline/history.c
85         - add a missing O_TRUNC to the open call for writing in
86           history_truncate_file
87
88 trap.c
89         - run_interrupt_trap should only try to run the trap command if
90           the value is not IMPOSSIBLE_TRAP_HANDLER
91
92 Makefile
93         - add `realclean'
94
95 lib/readline/complete.c
96         - do the same kind of double-quoting a replacement string if the
97           user supplies the opening double quote as we would if we were
98           adding both quotes ourselves
99
100 variables.c
101         - fixed the variable initialization so that history_control/HISTCONTROL
102           can be inherited from a parent shell
103
104 INSTALL, README, cpp-Makefile, documentation/bash.1, documentation/readline.3
105         - ai.mit.edu -> prep.ai.mit.edu
106
107 shell.c
108         - fixed a problem with setting no_line_editing to the result of the
109           check for running inside emacs, thereby losing any value
110           initialized by the `-nolineediting' flag
111
112 cpp-Makefile
113         - `make distclean' will now remove the `installed-bash' link
114
115 print_cmd.c
116         - fixed a problem with undefined variables when HAVE_VARARGS_H is
117           not defined
118
119                                    6/14
120                                    ----
121 lib/readline/history.c
122         - fixed an error in the csh history expansion code so that the
123           `-y' word designator now expands to `0-y' rather than `1-y'
124
125 lib/readline/isearch.c
126         - changed an absolute check for a character falling within the
127           ASCII 32-126 range (printable chars) with checks for CTRL_P
128           and META_CHAR and a check against the value RUBOUT
129         - changed a `break' to a `continue' so that the first non-matching
130           character in the search string does not cause the search to
131           end abruptly
132         - initialize prev_line_found to 0 at the top of rl_search_history
133           to avoid duplicate history lines being saved across searches
134
135 lib/readline/rltty.c
136         - consolidated repeated code for setting special characters into
137           `SET_SPECIAL' defines
138
139 lib/readline/readline.c
140         - include <sys/ioctl.h> if VSTATUS is defined
141         - add bindable command rl_tty_status (unbound by default)
142
143 lib/readline/funmap.c
144         - assign bindable command name `tty-status' to rl_tty_status
145
146 INSTALL
147         - add note about compiling with gcc, same text as README
148
149 lib/readline/display.c
150         - many changes and tweaks to make redisplay work better when the
151           prompt has invisible characters.  These changes are non-optimal
152           in that the prompt is redrawn more than it needs to be, but
153           things are a hell of a lot better than they were
154
155                                    6/15
156                                    ----
157 documentation/Makefile
158         - make a variable NROFF that people can set to `groff -Tascii' if
159           they don't have real nroff
160         - changed the suffix rules to use $<
161
162 support/bashbug.sh
163         - if rmail doesn't exist or fails, save the bug report in
164           ~/dead.bashbug
165
166 execute_cmd.c
167         - in setup_async_signals, only ignore SIGINT and SIGQUIT if job
168           control is not active.  If it is active and the job is restarted,
169           SIGINT remains ignored, and the now-foregrounded job is not
170           interruptible
171
172 subst.c
173         - fixed up a problem with char_is_quoted that caused backslash-
174           escaped characters to cause incorrect results
175
176 tests/run-dollars, tests/dollar-at.sh, tests/dollar-star.sh
177         - since the error messages produced by `cat' vary, changed `cat'
178           to `recho' and updated the correct answers file
179
180 machines.h
181         - fixes to CRAY_STACKSEG_END definitions for different versions of
182           Unicos on the YMP (from Bill Jones)
183         - Motorola SVR4 machines have getcwd() and should not undef
184           HAVE_GETCWD
185         - on hpux 9.x, don't try to link with -lPW if compiling with gcc
186           (for alloca)
187
188 parse.y
189         - an ugly fix for a compiler problem with structure assignment on
190           the cray
191
192                                    6/16
193                                    ----
194 builtins/wait.def
195         - replaced a call to sscanf with a validity check using all_digits()
196           and a call to atoi, since a pid_t is not necessarily an int, and
197           the sscanf clobbered the stack frame on systems where it is shorter
198           than an int (e.g., SCO)
199
200 lib/readline/display.c
201         - since META_CHAR and the other macros only work with unsigned
202           chars, make rl_character_len convert its argument to an unsigned
203           char before testing it
204
205 documentation/Makefile
206         - use $(INSTALL_DATA) instead of $(CP) to install the man pages and
207           info files
208
209 cpp-Makefile
210         - use INSTALL_PROGRAM and INSTALL_DATA to install binaries and
211           documentation; pass both values to installs in subdirectories
212
213                                    6/18
214                                    ----
215 builtins/ulimit.def
216         - compensate for systems which define RLIMIT_OFILE instead of
217           RLIMIT_NOFILE, or don't provide such a compatibility define
218           themselves
219
220 shell.c
221         - make maybe_execute_file check for directories and print an
222           appropriate error message, since it's doing an fstat anyway
223
224 support/mksysdefs
225         - added support for a `-s srcdir' option so it can find
226           cpp-Makefile if ansi-Makefile is to be created
227
228 Makefile
229         - call mksysdefs with -s $(srcdir)
230
231 jobs.c
232         - add the magic #undef lines to avoid redefinition warnings on
233           SunOS 4 only
234
235                                    6/20
236                                    ----
237 cpp-Makefile
238         - install `bashbug' with `make install'
239
240 trap.c
241         - make sure that `interactive' is set to 0 when running trap
242           commands
243
244 builtins/umask.c
245         - fixed typo in usage error message
246
247 subst.c
248         - fix process_substitute to set subshell_environment
249
250 jobs.c, nojobs.c
251         - only mess with the terminal settings for an interactive shell
252           that is not in a subshell environment
253
254                                    6/21
255                                    ----
256 lib/readline/history.h
257         - add extern declaration of history_get
258
259 builtins/fc.def
260         - make history replacement when using `r' or `fc -s' obey the
261           setting of HISTCONTROL
262
263 general.c
264         - in canonicalize_pathname, preserve a double // at the start
265           of an absolute pathname, since that means something special
266           for the network directory system
267
268 README, INSTALL
269         - updated information about submitting bug reports
270
271 lib/readline/vi_mode.c, lib/readline/isearch.c
272         - make sure unistd.h is included before rldefs.h, if
273           HAVE_UNISTD_H is defined
274
275                                    6/24
276                                    ----
277 lib/readline/complete.c
278         - add `#' to the list of characters which cause a completed filename
279           to be quoted
280
281 execute_cmd.c
282         - be more careful about closing pipe file descriptors in do_piping;
283           don't want to have `dup2(i, i); close(i);' problem
284
285 lib/readline/{keymaps,readline}.h
286         - include local copies of include files if READLINE_LIBRARY is
287           defined, otherwise include the `official, installed' versions
288           using #include <readline/xxx.h>
289
290 lib/readline/*.c
291         - define READLINE_LIBRARY before including any files
292         - include only `local' copies of include files using #include "xxx.h"
293           rather than #include <readline/xxx.h>
294
295                                    6/26
296                                    ----
297 execute_cmd.c
298         - check for clobbering the bash input stream before closing a file
299           descriptor due to an r_close_this redirection
300
301 lib/readline/history.c
302         - made history_expand inhibit history expansion if the history
303           expansion char is set to 0
304
305 lib/readline/chardefs.h
306         - moved savestring() definition to rldefs.h
307         - changed lowercase_p, uppercase_p, to_lower, to_upper defines to
308           use <ctype.h> macros rather than assume ASCII
309
310 lib/readline/bind.c, general.c, general.h
311         - use strcasecmp, strncasecmp instead of str[n]icmp if
312           HAVE_STRCASECMP is defined
313
314 cpp-Makefile
315         - pass -DHAVE_STRCASECMP to builds in the libraries, primarily
316           readline
317
318 machines.h
319         - add HAVE_STRCASECMP to the entries for BSD/386, NetBSD, FreeBSD,
320           and 4.4 BSD
321
322 builtins/hash.def
323         - add a fourth parameter to remember_filename, the initial value
324           of times_found (0 if we're just looking it up for `hash', 1
325           for the command execution code)
326
327 execute_cmd.c
328         - call remember_filename with an initial value of 1 for times_found
329
330 builtins/wait.def
331         - handle a null argument with an error message
332
333 builtins/common.c
334         - parse_and_execute now takes a third parameter: the value for
335           `interactive' while it is executing commands
336
337 bashline.c, jobs.c, parse.y, shell.c, subst.c, trap.c, variables.c
338         - set the new third argument to parse_and_execute appropriately
339
340 builtins/eval.def, builtins/fc.def, builtins/source.def
341         - set the new third argument to parse_and_execute appropriately
342
343 builtins/help.def
344         - changed a call to strnicmp to strncmp when trying to find what
345           to give help on; it seems more correct
346
347                                    6/27
348                                    ----
349 machines.h
350         - cleaned up the SunOS section so it no longer relies on
351           HAVE_SHARED_LIBS being defined; it uses SunOS4 and SunOS5
352           instead
353
354 support/mksysdefs
355         - define SYSDEF to be SunOS4 or SunOS5 depending on the output
356           of uname rather than looking for ld.so
357
358                                    6/29
359                                    ----
360 machines.h
361         - minor change to the ardent titan machine description
362         - move the ardent and stardent descriptions before the
363           mips riscos description
364
365 print_cmd.c
366         - ardent machines also need the extern declaration for printf
367
368 make_cmd.c
369         - connect_async_list should do its work only if the lists to be
370           backgrounded are connected with `;'.  This makes `;' bind tighter
371           than `&', so only the last job in the list is backgrounded.  All
372           other lists should have the entire thing put in the background
373
374 parse.y
375         - added a function `print_prompt' to take care of displaying the
376           prompt string if readline is not being used.  This fixes problems
377           with the prompt being displayed before the status of completed
378           jobs is printed
379
380                                    6/30
381                                    ----
382 builtins/fg_bg.def
383         - `fg' and `bg' now print error messages if invoked when job control
384           is disabled
385
386 lib/readline/rltty.c
387         - if not compiled into the shell, make get_tty_settings get and set
388           the window size.  This noop stops the process if it is started in
389           the background
390
391 lib/readline/readline.c
392         - provide a function version of savestring, if not being compiled
393           into the shell, since the macro has been removed from the
394           `public' header files
395
396 lib/readline/readline.h
397         - provide all extern function declarations without checking whether
398           VI_MODE or PAREN_MATCHING are defined.  It does not hurt to define
399           them if they are not used and not in the library, and other
400           applications using readline can't tell whether or not VI_MODE was
401           defined when the library was compiled anyway
402
403                                     7/1
404                                     ---
405 machines.h
406         - add #undef HAVE_DIRENT_H to the ardent titan description
407
408                                     7/2
409                                     ---
410 lib/readline/chardefs.h
411         - removed META_P define, renamed CTRL_P to CTRL_CHAR
412
413 lib/readline/bind.c, lib/readline/isearch.c
414         - changed instances of CTRL_P to CTRL_CHAR
415
416 lib/readline/search.c
417         - include <unistd.h> before rldefs.h, if HAVE_UNISTD_H is defined
418
419 lib/readline/readline.c
420         - declare PC, UP, and BC as extern rather than `local' to the
421           readline library
422
423                                     7/5
424                                     ---
425 bashline.c
426         - implement command word completion inside of command substitution
427           with a new function: `command_subst_completion_function'
428
429 subst.c
430         - new function to help with command subst completion: unclosed_pair
431
432 lib/readline/complete.c
433         - new variable rl_filename_quoting_desired, which can be set to 0
434           to inhibit the quoting of filenames after completion
435
436 lib/readline/readline.h
437         - declare rl_filename_completion_desired and
438           rl_filename_quoting_desired
439
440 builtins/bind.def
441         - don't save the old value of rl_outstream before initializing
442           readline -- it saves garbage values and screws up readline
443
444 parse.y
445         - don't have private state telling whether or not readline has
446           been initialized -- use bash_readline_initialized like other
447           functions in bashline.c
448
449 lib/readline/readline.c
450         - make the default 8-bit behavior be based on whether LC_CTYPE is
451           defined and its value (accept iso-8859-1 or iso_8859_1)
452
453                                     7/6
454                                     ---
455 variables.c
456         - fix up the declaration of getenv() for convex machines
457
458                                     7/7
459                                     ---
460 lib/readline/readline.c
461         - fixed up typos in the declaration of `savestring'
462
463 lib/readline/history.c
464         - fixed an off-by-one error in the ADD_CHAR macro which caused one
465           extra character to be overwritten, causing the gnu malloc to abort
466           when that one character was at the end of an allocated block
467         - changed the ADD_STRING macro to avoid some unnecessary xreallocs
468
469 lib/readline/display.c
470         - fixed a problem with move_cursor_relative -- function now returns
471           immediately if it has nothing to do
472         - fixed another problem with displaying prompts with invisible chars
473
474 lib/readline/chardefs.h
475         - fixed the CTRL macro to be right (agree with the BSD kernel, for
476           example)
477
478 cpp-Makefile
479         - fixed typo in the `install' recipe
480
481                                     7/8
482                                     ---
483 support/srcdir
484         - fixed to handle srcdir when it begins with ./ or ../ to handle
485           $(srcdir) being a relative path better
486
487 cpp-Makefile
488         - changed some include paths to $(BUILTIN_ABSSRC) when building in
489           `builtins' to handle $(srcdir) being a relative path
490         - change the `chmod' on bashbug to turn on read and execute for all
491         - added a couple of definitions to make it easier for a later
492           `configure' program
493
494 support/mksysdefs
495         - added a -i option to specify an alternate set of directories to
496           search for include files
497
498 lib/readline/bind.c
499         - in rl_read_init_file, when skipping whitespace at the start of
500           the line, decrement `i' so that we don't jump past the start
501           of the next line
502
503 machines.h
504         - SCOv4 has a `robust' opendir that checks that you're actually
505           opening a directory
506
507                                    7/11
508                                    ----
509 lib/readline/complete.c
510         - make sure a word break character is unquoted before using it to
511           separate out the current word for completing
512
513 machines.h
514         - new machine description: NetBSD on motorola m68k machines like
515           the hp300
516         - undef HAVE_GETWD in the generic svr4 machine description, like
517           other svr4 descriptions
518
519 lib/readline/rltty.c
520         - make sure to fflush (rl_outstream) after toggling the setting
521           of the keypad and meta key
522
523 portbash/libc.sh
524         - add a test for OPENDIR_NOT_ROBUST
525
526 support/getcppsyms.c
527         - output __svr4__ if we find __uxps__ (this makes the Fujitsu port of
528           SVR4 to the sparc build OK)
529
530                                    7/12
531                                    ----
532 lib/readline/display.c
533         - more display-related fixes when the prompt has invisible chars;
534           this time for screen updates when moving between screen lines
535
536 lib/readline/readline.c, lib/readline/display.c
537         - changes to make readline work with terminals that have auto-wrap
538           from Per Bothner (new function _rl_update_final, term_xn changes,
539           some efficiency speedups, new function space_to_eol)
540
541                                    7/13
542                                    ----
543 lib/readline/display.c
544         - after moving up screen lines using term_up in _rl_move_vert, if
545           the new screen line is 0, _rl_last_c_pos needs to be adjusted
546           to take invisible characters into account.  This was the source
547           of many bugs
548
549                                    
550                                    7/14
551                                    ----
552 documentation/Makefile
553         - change instances of `groff' to `${GROFF}', GROFF is set to
554           `groff' by default
555
556 general.c, variables.c
557         - moved `qsort_string_compare' from variables.c to general.c
558
559 general.h, variables.h
560         - moved declaration of `qsort_string_compare' from variables.h
561           to general.h
562
563 alias.c, lib/readline/funmap.c
564         - moved qsort auxiliary functions after their use and added
565           forward declarations to avoid warnings from ANSI C compilers
566
567 memalloc.h
568         - hpux_9 needs alloca declared as `extern void *' if __STDC__
569           is defined
570
571 support/mksysdefs
572         - removed HAVE_SHARED_LIBS entirely
573         - make a call to /bin/uname -X for SCO machines to avoid running
574           a different uname from the $PATH
575
576 machines.h
577         - new descriptions: Intel i860 running SVR4, Tahoe running 4.3 BSD
578         - changed descriptions: Mips/RiscOS, DG AViiON, unknown machine
579
580 jobs.c
581         - changes to how the shell handles foreground jobs dying of SIGINT:
582                 an interactive shell using job control will no longer
583                 act as if it received a SIGINT if the foreground job
584                 dies from a SIGINT
585
586                 a non-interactive shell or shell without job control tries
587                 to differentiate between SIGINTs it has seen (in
588                 wait_sigint_handler) and a foreground job dying of a SIGINT
589                 not sent from the keyboard, and runs the normal SIGINT code
590                 only in the former case
591
592                                    7/15
593                                    ----
594 support/mksysdefs
595         - check for ${UNAME}${RELEASE} expanding to `SunOS4*' or `SunOS5*'
596           to set SYSDEF to SunOS4 or SunOS5, respectively.  Apparently
597           this does not work for Solbourne
598
599                                    7/18
600                                    ----
601
602 lib/readline/rltty.c
603         - if output is being flushed on termios systems, loop until the
604           FLUSHO bit is no longer set in the termios struct
605
606 support/mksysdefs
607         - added a -A flag to force creation of ansi-Makefile
608
609 machines.h
610         - new entry for Tandem machines running SVR3
611
612                                    7/19
613                                    ----
614 lib/readline/rldefs.h
615         - include <termcap.h> if HAVE_TERMCAP_H is defined
616         - use <termio.h> stuff if HAVE_TERMIO_H is defined and _POSIX_VERSION
617           is not defined
618
619 lib/readline/rldefs.h, lib/readline/history.c
620         - include "config.h" if HAVE_CONFIG_H is defined
621
622 lib/readline/{rldefs.h,signals.c,readline.c}
623         - WINSIZE_IN_IOCTL_H -> GWINSZ_IN_SYS_IOCTL for compatibility with
624           other GNU programs
625
626 lib/readline/doc/Makefile
627         - fixed up to create the readline and history manuals in dvi and
628           ps format
629
630 lib/readline/Makefile
631         - changes inspired by the standalone readline-2.0 distribution
632
633                                    7/20
634                                    ----
635 lib/readline/history.c
636         - new function, history_is_stifled (), returns history_stifled
637         - set history_state flags member in the history state functions
638
639 lib/readline/history.h
640         - reorganized the function declarations, added missing declarations
641         - history_stifled is no longer exported by the library
642         - added a `flags' member to the HISTORY_STATE structure
643
644 bashline.c
645         - use history_is_stifled () instead of history_stifled
646
647 lib/readline/readline.c, lib/readline/vi_mode.c
648         - filled in correct argument declarations for functions called via
649           keymaps (count, key)
650
651 lib/readline/complete.c
652         - efficiency improvement for compare_strings
653
654                                    7/21
655                                    ----
656 examples/dirfuncs
657         - new directory functions from ksh book, contributed by
658           Ken Konecki (kenk@wfg.com)
659
660 machines.h
661         - hpux_8 and hpux_9 should both #undef HAVE_ALLOCA unless gcc is
662           being used
663
664                                    7/22
665                                    ----
666 bashline.c
667         - fixed up command_word_completion_function so that filenames with
668           leading tildes are completed correctly
669
670                                    7/26
671                                    ----
672 builtins/read.def
673         - if -r not given, make sure CTLESC is removed from input string
674           when reading \<newline>
675
676 lib/readline/readline.c
677         - new function bind_arrow_keys, which binds vt100/ansi arrow key
678           escape sequences after reading the termcap definition and the
679           inputrc file
680         - new function rl_yank_last_arg, which does what insert-last-arg
681           does in bash
682
683 lib/readline/emacs_keymap.c
684         - remove default bindings to rl_arrow_keys for M-[ and M-O
685         - rl_yank_last_arg is now bound to `M-.' and `M-_' in
686           emacs_meta_keymap
687
688 subst.c
689         - when performing process substitution on systems with /dev/fd,
690           make sure the child clears the slot in dev_fd_list it gets
691           from its parent so the file descriptor does not get closed
692           inappropriately if reallocated by, e.g., pipe(2)
693
694 bashline.c
695         - removed insert_last_arg and the calls to bind in to `M-.' and `M-_'.
696           `insert-last-argument' is now bound to rl_yank_last_arg for
697           backwards compatibility
698
699 lib/readline/funmap.c
700         - `yank-last-arg' is now a named command for rl_yank_last_arg
701
702
703 documentation/bash.1, documentation/readline.3
704         - add description of yank-last-arg as one of the readline user
705           commands
706
707 lib/readline/doc/rluser.texinfo
708         - added description of yank-last-arg
709
710 builtins/getopts.def
711         - fixed a typo in the int-to-string code computing the value to set
712           OPTIND to: had '\0' instead of '0'
713         - made getopts handle the case where there are more than 9 dollar
714           variables (where rest_of_args is non-null) correctly
715
716                                    7/28
717                                    ----
718 lib/readline/display.c
719         - fixes to the display code for single-line-display in the presence
720           of prompts containing invisible characters
721
722 lib/readline/readline.c
723         - if we are using horizontal scrolling and we have term_xn, decrement
724           the screenwidth by 1, since we won't be doing any line wrapping
725
726                                    7/31
727                                    ----
728 jobs.c
729         - new variable `freeze_jobs_list' to set when changes to the jobs
730           list or status of jobs in the list (other than calling something
731           like `jobs -n') are undesirable.  This is set when execuing traps
732           on SIGCHLD
733
734                                     8/1
735                                     ---
736 subst.c
737         - check that `~' is unquoted before performing tilde expansion in
738           an assignment statement
739
740                                     8/3
741                                     ---
742 bracecomp.c
743         - keep brace completion from dumping core if there is only one
744           match
745
746 lib/readline/chardefs.h
747         - add a define for digit_p, which returns the value of isdigit()
748
749 lib/readline/readline.c
750         - added function equivalents for uppercase_p, lowercase_p, to_upper,
751           to_lower, pure_alphabetic, digit_p, and digit_value
752         - replaced calls to numeric () with calls to digit_p, removed
753           definition of numeric ()
754
755 lib/readline/history.c
756         - digit -> digit_p
757
758 lib/readline/vi_mode.c
759         - replaced uses of the `isletter' define to use pure_alphabetic
760           from chartypes.h
761         - replaced uses of `numeric' with calls to digit_p
762         - added do...while(0) to `exchange' define
763
764                                     
765                                     8/4
766                                     ---
767 execute_cmd.c
768         - make sure execute_function saves and restores the current loop
769           count with unwind_protect_int
770
771 documentation/features.texi
772         - change the `Shell Command Line Options' section to `Invoking
773           Bash' to be closer to the GNU coding standards
774
775                                     8/5
776                                     ---
777 builtins/read.def
778         - fixed up a memory leak and made behavior correct when no
779           variables given and backslash escaped at least one input char
780         - if we added CTLESC anywhere while reading the input string,
781           make sure we call dequote_string on each word of the input
782           before calling bind_variable with that string
783
784                                     8/6
785                                     ---
786 lib/readline/readline.h
787         - removed definition of rl_show_star -- the variable no longer
788           exists
789
790 lib/readline/readline.h, lib/readline/history.h
791         - reorganized to follow texinfo manual structure
792
793 lib/readline/bind.c
794         - rl_function_dumper is now static
795         - rl_list_funmap names does not take any arguments
796
797 builtins/bind.def
798         - rl_list_funmap names does not take any arguments
799
800 lib/readline/readline.c, lib/readline/signals.c
801         - rl_init_argument ->_rl_init_argument
802
803 lib/readline/rltty.c
804         - remove declaration and references to output_was_flushed
805
806 support/getcppsyms.c
807         - if __uxps__ is defined, define __uxps__ and __svr4__
808
809                                     8/9
810                                     ---
811 support/mkdist
812         - added a -r option to set the `root name' of the distribution
813           (e.g., `bash' or `readline')
814
815                                    8/10
816                                    ----
817 input.c
818         - if check_bash_input sees that default_buffered_input is about
819           to be the target of a redirection, but the buffered input stream
820           is not the current input stream (e.g. as the result of an
821           `eval' while in a script, change default_buffered_input to a
822           new fd and use a new variable `bash_input_fd_changed' to note
823           the change
824
825 parse.y
826         - if pop_stream sees that default_buffered_input has changed while
827           a buffered stream was on the save stack (because
828           bash_input_fd_changed is non-zero), then make the popped stream
829           and the corresponding buffer use the new fd
830
831 test.c
832         - fixed an off-by-one error in test_stat when testing /dev/fd/n.
833
834 cpp-Makefile
835         - add -I$(incdir) to CPPFLAGS
836         - add `incdir = $(prefix)/include' assignment
837
838                                    8/11
839                                    ----
840 lib/readline/signals.c
841         - changed some calls to signal () to call rl_set_sighandler()
842         - call _rl_redisplay_after_sigwinch from the sigwinch handler
843           to do better redisplay of wrapped command lines and multi-line
844           prompts
845
846 builtins/suspend.def
847         - changed some calls to signal () to call set_signal_handler()
848
849 lib/readline/*.c
850         - include config.h before anything else if HAVE_CONFIG_H is defined
851
852 lib/readline/readline.c
853         - renamed rl_set_mark to _rl_set_mark_at_pos
854         - call _rl_vi_initialize_line from rl_initialize if the current
855           editing mode is vi mode
856         - only output a term_cr in crlf if term_cr is non-null
857
858 lib/readline/readline.h
859         - added declarations for rl_vi_set_mark and rl_vi_goto_mark
860
861 lib/readline/readline.c, lib/readline/readline.h
862         - added a new bindable command to set the mark, rl_set_mark
863
864 lib/readline/funmap.c
865         - new bindable function with name `set-mark', bound to rl_set_mark
866         - new bindable vi-mode functions with names `vi-set-mark' and
867           `vi-goto-mark'
868
869 documentation/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo
870         - added documentation for `set-mark' (unbound)
871
872 lib/readline/vi_mode.c
873         - new vi-command mode commands to save marks (the vi `m' command)
874           and go to saved marks (the ``' command)
875         - new function _rl_vi_initialize_line called from rl_initialize
876           to set up the line state in vi mode.  Right now this just resets
877           all the marks
878
879 lib/readline/vi_keymap.c
880         - new vi command-mode bindings to set the mark (`m') and to go to
881           a saved mark (``')
882
883 documentation/readline.3
884         - added vi-set-mark and vi-goto-mark to list of key bindings for
885           vi command mode
886
887 lib/readline/{readline.c,display.c}
888         - renamed term_xn to _rl_term_autowrap
889
890 lib/readline/display.c
891         - new function _rl_redisplay_after_sigwinch to encapsulate the
892           necessary redisplay code after a SIGWINCH is received
893
894 variables.c
895         - only call find_user_command on the shell name in shell_initialize
896           if shell_name is not an absolute program name
897         - call canonicalize_pathname on the full shell pathname after
898           calling make_absolute on it if the shell name starts with a `.'
899
900 siglist.h
901         - FreeBSD does not need a definition of sys_siglist[]
902
903                                    8/12
904                                    ----
905 lib/readline/rltty.c
906         - don't try to use FLUSHO unless FLUSHO is defined
907
908 cpp-Makefile
909         - make sure to pass $(CC) to the make in the lib/malloc subdirectory
910
911 lib/readline/readline.c
912         - don't declare PC, UP, and BC as extern; it causes too many problems
913
914                                    8/13
915                                    ----
916 machines.h
917         - add -DNO_SBRK_DECL to SYSDEP_CFLAGS for SVR4.2 on i386
918
919 support/mksysdefs
920         - new variable UNAME_S for the output of `uname -s'
921         - if uname -s does not output the same thing as uname, and uname -s
922           outputs UNIX_SV, then set UNAME to UNIX_SV.  Some versions of i386
923           SVR4.2 make `uname' equivalent to `uname -n'
924
925 lib/readline/memalloc.h
926         - removed from the library; not needed since readline does not use
927           alloca
928
929 lib/readline/{history.c,isearch.c,search.c,rldefs.h}, lib/tilde/tilde.c
930         - no longer include memalloc.h
931
932 lib/readline/Makefile
933         - remove dependencies on memalloc.h
934
935 lib/readline/signals.c
936         - overhauled signal handling based on ideas from Bruno Haible
937           (haible@ma2s2.mathematik.uni-karlsruhe.de) so that readline
938           saves and restores the signal mask and flags on Posix systems
939         - don't include fcntl.h, sys/file.h, errno.h, or stdlib.h
940         - ignore SIGALRM during rl_signal_handler like SIGINT until the
941           old handler is installed, on non-Posix or non-BSD systems
942         - new define SIGHANDLER_RETURN, dependent on the value of
943           VOID_SIGHANDLER
944         - use RETSIGTYPE instead of `sighandler' as the signal handler
945           return type; it's the name autoconf uses.  If not defined,
946           set up from VOID_SIGHANDLER
947
948 lib/readline/rltty.c
949         - call control_meta_key and control_keypad from rl_deprep_terminal
950           before putting the terminal back into ICANON mode to avoid
951           messing up the tty driver
952
953                                    8/15
954                                    ----
955 cpp-Makefile
956         - changes so that fewer -Idir arguments are passed to the make
957           in ./builtins
958
959                                    8/16
960                                    ----
961 lib/readline/bind.c
962         - use KEYMAP_SIZE instead of 128 in rl_invoking_keyseqs_in_map
963
964 lib/readline/complete.c
965         - qsort the array of matches omitting matches[0], which must stay
966           in place no matter what, even if strcmp doesn't compare unsigned
967           chars correctly
968         - some fixes to the loop that prints the list of completions
969
970 lib/readline/keymaps.c
971         - run the loop up to 127 when creating a new keymap in rl_make_keymap
972
973 input.h, general.h, lib/readline/keymaps.h, lib/readline/tilde.h
974         - use _FUNCTION_DEF instead of __FUNCTION_DEF
975
976 lib/readline/parens.c
977         - include "config.h" if HAVE_CONFIG_H is defined
978         - include <sys/select.h> if HAVE_SYS_SELECT_H is defined
979         - use HAVE_SELECT instead of FD_SET as the `configuring define';
980           define HAVE_SELECT if it is not already defined but FD_SET is
981
982 lib/readline/readline.c, lib/readline/rltty.c
983         - the __GO32__ include file is <pc.h>
984
985 lib/tilde/tilde.c
986         - rewrote tilde_expand_word, eliminated static u_name array in
987           favor of using xmalloc
988
989 lib/tilde/tilde.h
990         - use single leading underscore for file inclusion guard
991
992 lib/readline/vi_mode.c
993         - use KEYMAP_SIZE rather than a literal 127 as the loop limit when
994           creating the overstrike keymap
995
996 support/install.sh
997         - new file, from the make-3.71 distribution
998
999                                    8/17
1000                                    ----
1001 lib/readline/complete.c, lib/readline/readline.h
1002         - new variable, rl_basic_quote_characters, used to see
1003           if a word break character was a quoting character, so we can
1004           do appropriate quoting after the completion
1005
1006 lib/readline/parens.c
1007         - use rl_basic_quote_characters when trying to find a matching
1008           open paren
1009
1010 lib/readline/doc/rltech.texinfo
1011         - description of rl_basic_quote_characters
1012
1013                                    8/18
1014                                    ----
1015 newversion.c
1016         - renamed to support/mkversion.c, which builds to mkversion
1017
1018 cpp-Makefile
1019         - changed to use support/mkversion
1020         - removed instances of $< except in suffix rules -- some makes don't
1021           handle those right
1022
1023 lib/readline/rldefs.h
1024         - make sure to #undef HAVE_DIRENT_H on NeXT machines
1025
1026                                    
1027                                    8/19
1028                                    ----
1029 lib/readline/readline.h
1030         - removed some duplicate function declarations
1031
1032 trap.h
1033         - define DEBUG_TRAP as NSIG for the last slot in trap_list
1034         - define EXIT_TRAP as 0
1035         - declare trap_list as array of unknown size, since this is just a
1036           header file
1037
1038 trap.c
1039         - extend trap_list and sigmodes to NSIG+1
1040         - initialize DEBUG_TRAP to do nothing; changes to functions to handle
1041           DEBUG_TRAP
1042         - let decode_signal return OK if NSIG is given, even though this will
1043           vary between systems, for DEBUG_TRAP
1044         - make reset_signal_handlers and restore_original_signals loop from
1045           1 to NSIG, not 0 to NSIG
1046         - change GET_ORIGINAL_SIGNAL to try to get the original signal handler
1047           only if `sig' is less than NSIG
1048         - restore_default_signal just frees the trap string for both EXIT_TRAP
1049           and DEBUG_TRAP
1050         - run_debug_trap: new function to run traps on DEBUG
1051         - free_trap_command: new function to free a trap string if it is
1052           really a command and not one of the special trap values
1053         - if a SIGINT trap resets the SIGINT trap string, free the old string
1054         - new function: set_debug_trap(char *), which will reset the DEBUG
1055           trap string, suitable for calling from an unwind-protect handler
1056
1057 signames.c
1058         - arrange things so that signal_names[NSIG] == "DEBUG"
1059
1060 builtins/trap.def
1061         - make sure traps on DEBUG are printed
1062
1063 execute_cmd.c
1064         - call run_debug_trap at the end of the `cm_simple' case in
1065           execute_command_internal
1066         - change execute_function so that traps on DEBUG do not propagate
1067           into the function
1068
1069 documentation/bash.1, documentation/features.texi
1070         - documented the new DEBUG trap
1071
1072                                    8/20
1073                                    ----
1074 shell.c, config.h
1075         - made the name of the restricted shell configurable in config.h;
1076           the option is RESTRICTED_SHELL_NAME
1077
1078 shell.c
1079         - if the shell is invoked as `sh', enter Posix.2 mode after running
1080           /etc/profile and ~/.profile
1081
1082 builtins/read.def
1083         - added a -p option for a prompt string, which is displayed before
1084           trying to read anything
1085
1086 documentation/bash.1
1087         - description of `read -p'
1088         - description of new -r and -s options to `jobs' 
1089
1090 documentation/features.texi
1091         - description of new -r and -s options to `jobs' 
1092
1093 jobs.c
1094         - new functions: list_running_jobs, list_stopped_jobs
1095         - list_jobs -> list_all_jobs
1096         - new function `print_job' to do the work for all of the list*jobs
1097           functions
1098         - list_one_job type now void, calls print_job to do the work
1099
1100 jobs.h
1101         - new declarations for list_running_jobs, list_stopped_jobs
1102         - list_one_job now void
1103         - list_jobs -> list_all_jobs
1104
1105 builtins/jobs.def
1106         - new options: -r to print only running jobs, -s to print only
1107           stopped jobs
1108
1109                                    8/22
1110                                    ----
1111 lib/readline/readline.c
1112         - don't try to expand a null prompt string
1113
1114 subst.c
1115         - remove special handling of hostname_completion_file and
1116           history_control; HOSTFILE and HISTCONTROL are the acceptable
1117           names
1118         - new function sv_histignore; call if HISTIGNORE variable is
1119           assigned to
1120
1121 bashhist.c
1122         - new functions and declarations for handling HISTIGNORE variable
1123           and its specifications for command lines to ignore
1124         - change maybe_add_history to call history_should_ignore if the
1125           HISTCONTROL tests are passed
1126
1127 documentation/bash.1, documentation/features.texi
1128         - removed mention of history_control and hostname_completion_file
1129         - added description of HISTIGNORE
1130
1131                                    8/23
1132                                    ----
1133 array.c, array.h
1134         - promoted to the shell mainline code; the `array' subdir is now
1135           gone
1136
1137 variables.h
1138         - include `array.h' for the ARRAY typedef
1139
1140 variables.c
1141         - changes to assignment() to handle array assignments a[x]=b
1142         - split off the creation of new variables into a new function:
1143           make_new_variable
1144         - split off the construction of variable values for assignments and
1145           bindings into a new function: make_variable_value
1146         - new function: bind_array_variable, to handle the addition of
1147           new array variables and indices
1148
1149 subst.c
1150         - changes to do_assignment_internal to handle a[x]=b:
1151                 parse the subscript out of the name and call evalexp() on it
1152                 call bind_array_variable to do the value assignment
1153         - change the printing of assignment statements when -x is in effect
1154           to before the variable binding is attempted, so any error messages
1155           look better
1156         - new functions for referencing indexed arrays and to find the length
1157           of arrays or array indices
1158
1159                                    8/24
1160                                    ----
1161 expr.c
1162         - fixed up error reporting to use get_name_for_error if not executing
1163           a builtin
1164
1165 subst.c
1166         - everywhere evalexp() is called, use maybe_expand_string to expand
1167           the expression (calls expand_string if necessary)
1168
1169 subst.h
1170         - extern declarations for array convenience functions exported to the
1171           rest of the shell
1172
1173 variables.c
1174         - more new convenience array functions: make_new_array_variable and
1175           convert_var_to_array
1176
1177 builtins/declare.def
1178         - additions to declare_internal to add a -a flag which makes array
1179           variables, and the requisite semantics (declare +a does not work,
1180           declare -a name=value does not work, etc.)
1181         - code to support the ksh-like declare a[] syntax to make array
1182           variables
1183
1184 builtins/setattr.def
1185         - made set_or_show_attributes understand array variables and `-a'
1186
1187 builtins/set.def
1188         - changes to make `unset name' work, where name is an array variable
1189         - changes to make `unset name[xxx]' work
1190
1191                                    8/25
1192                                    ----
1193
1194 lib/readline/readline.c
1195         - make sure meta characters are added to a keyboard macro as
1196           ESC-char if we are converting meta chars to ascii
1197         - change rl_unix_word_rubout to handle repeat counts
1198         - move the check of LC_CTYPE from rl_initialize to
1199           readline_initialize_everything, where it should have been
1200           all along
1201
1202 error.c
1203         - make sure <sys/types.h> is included before <fcntl.h>
1204
1205 machines.h
1206         - new entry for Bull DPX2
1207
1208 lib/tilde/tilde.c
1209         - include <sys/types.h> before <pwd.h>
1210
1211 variables.c
1212         - PS1 and PS2 are no longer non-unsettable
1213
1214                                    8/26
1215                                    ----
1216 variables.c
1217         - PPID, UID, and EUID, since they are read-only, need not appear on
1218           the `non-unsettable' list
1219         - PATH and IFS now have the `nounset' attribute set rather than use
1220           a separate `non-unsettable' list
1221         - the non-unsettable list and non_unsettable() are gone
1222
1223 variables.h
1224         - new define `non_unsettable_p' to test nounset attribute
1225
1226 builtins/set.def
1227         - `unset' now uses non_unsettable_p to tell whether a variable can
1228           be unset even if it's not readonly
1229
1230 builtins/read.def
1231         - read -a arrayname will read a list of values from stdin and assign
1232           them to the array `arrayname', splitting on " \t\n" (honoring
1233           backslash quoting if -r is not supplied)
1234
1235 builtins/declare.def
1236         - print values of arrays when `display -a' is invoked
1237
1238 builtins/exit.def
1239         - remove references to `bye'
1240
1241                                    8/28
1242                                    ----
1243 lib/readline/rltty.c
1244         - removed calls to control_keypad; they cause problems on some
1245           machines and should not really be performed by an application
1246
1247 cpp-Makefile
1248         - support for optionally linking array.o into the shell
1249
1250 lib/glob/glob.c
1251         - when returning an error after glob_filename on the directory name
1252           returns an error result, make sure to free `result'.  This fixes
1253           a memory leak for names passed to glob_filename which contain
1254           globbing characters before the first `/' but do not match any
1255           existing files
1256
1257                                    8/29
1258                                    ----
1259 execute_cmd.c
1260         - the `for' and `select' commands should expand their word lists
1261           using expand_words_no_vars
1262
1263 command.h, execute_cmd.c, general.c, make_cmd.c, print_cmd.c, subst.c,parse.y
1264         - changed the `dollar_present', `quoted', and `assignment' members
1265           of WORD_DESC to a single flags word
1266
1267                                    8/30
1268                                    ----
1269 variables.c
1270         - make get_string_value return array[0] if called with a variable
1271           that is an array
1272
1273                                    8/31
1274                                    ----
1275 lib/readline/display.c
1276         - don't take the value of _rl_term_autowrap into account when
1277           computing which screen line the cursor should be on; it screws
1278           up wrapping on terminals without the `xn' capability
1279
1280 lib/readline/examples/rltest.c
1281         - new file, test code moved here from readline.c
1282
1283 documentation/features.texi, lib/readline/doc/hsuser.texinfo
1284         - fixed up printing of some of the shell options and the history
1285           commands and modifiers
1286
1287 subst.c
1288         - make sure $name, where `name' is an array variable, returns
1289           ${name[0]}
1290
1291 variables.c
1292         - convert a variable to an array even if index 0 is being assigned to,
1293           instead of leaving it a `normal' variable
1294
1295                                     9/1
1296                                     ---
1297
1298 builtins/setattr.def
1299         - make sure that array variables printed by `declare' single-quote
1300           the value after the `=' so the statement can be reused as input
1301
1302 variables.c
1303         - make sure array variables can be exported (name=(assignments)), and
1304           that the export code works.  The code is commented out because of
1305           the possible confusion between an array and a regular string that
1306           looks like an array assignment string.
1307
1308                                     9/2
1309                                     ---
1310 variables.c
1311         - make sure there is an executable file with the same name as
1312           `shell' name in the current directory before assigning it to
1313           $BASH at startup.  If there is not, just make $BASH the login
1314           shell name
1315
1316                                     9/3
1317                                     ---
1318 parse.y
1319         - removed a reduction from the `list0' production that could cause
1320           statements which require semicolons to be allowed without error
1321           (like before a `}' in a group command)
1322
1323 lib/readline/display.c
1324         - new functions: _rl_save_prompt and _rl_restore_prompt to save and
1325           restore prompt invisible character info
1326         - if the redisplay code encounters a line shorter than the old one
1327           and containing invisible characters, make sure that the cursor is
1328           at the end of the new text before calling clear_to_eol
1329         - new variable last_invisible containing the index in the prompt
1330           string of the last invisible character.  We only have to redraw
1331           the prompt string of _rl_last_c_pos is < last_invisible
1332         - new function _rl_make_prompt_for_search to take care of setting
1333           up the prompt string for a non-incremental search when the prompt
1334           contains invisible characters
1335         - fix so that a prompt string with invisible characters is not
1336           redrawn each time through update_line (don't tputs term_cr unless
1337           the cursor is before the last invisible character in the prompt
1338           and will be moving past the last invisible char of the prompt
1339
1340 lib/readline/isearch.c
1341         - call _rl_save_prompt and _rl_restore_prompt when changing the prompt
1342           to do i-search
1343
1344                                     9/4
1345                                     ---
1346 lib/readline/readline.c
1347         - doing_an_undo -> _rl_doing_an_undo for use by the vi-mode code
1348         - rewrote rl_do_undo to reformat and eliminate a clumsy goto
1349         - new split the add-to-kill-ring code off into a separate function,
1350           _rl_copy_to_kill_ring
1351         - added a new bindable function rl_copy_region_as_kill
1352         - added a new bindable function rl_kill_region
1353         - moved _rl_char_search_internal to here from vi_mode.c
1354         - new bindable function rl_char_search
1355
1356 lib/readline/vi_mode.c
1357         - made `.' work for the `cw' and `[Ss]' commands, which implicitly
1358           put the editor into insertion mode after they run
1359         - split rl_vi_char_search code that actually searches for a character
1360           into a new function, _rl_char_search_internal
1361
1362 lib/readline/emacs_keymap.c
1363         - bind M-= to possible-completions for ksh compatibility
1364         - bind M-* to insert-completions
1365         - bind C-x C-x to exchange-point-and-mark
1366         - bind C-] to character-search
1367         - bind C-@ to set-mark
1368
1369 lib/readline/funmap.c
1370         - new bindable function names: exchange-point-and-mark, kill-region,
1371           copy-region-as-kill, character-search
1372
1373 lib/readline/readline.h
1374         - declare rl_exchange_point_and_mark, rl_copy_region_to_kill,
1375           rl_kill_region, and rl_char_search externally
1376
1377 documentation/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo
1378         - document new exchange-point-and-mark bindable command
1379         - documented M-* default emacs-mode binding to insert-completions
1380         - documented new copy-region-as-kill and kill-region commands
1381         - documented new character search emacs-mode command
1382         - documented new binding for set-mark
1383
1384 lib/readline/rldefs.h
1385         - moved values for `dir' when searching for characters in the line
1386           from vi_mode.c to here
1387
1388                                     9/6
1389                                     ---
1390 general.c
1391         - new function ansicstr, which decodes ANSI-C backslash-escaped
1392           characters (with the addition of \e and \E to mean escape) and
1393           returns a new string
1394
1395 subst.c
1396         - new expansion $'...' which translates ANSI-C backslash escapes
1397           in `...' and expands to the result
1398
1399 builtins/echo.def
1400         - ifdefs for ANSI-C for \a and \v rather than just expanding to
1401           literal ASCII values
1402
1403 documentation/bash.1
1404         - documented new $'...' expansion
1405
1406                                     9/7
1407                                     ---
1408 builtins/enable.def
1409         - fixed up the help text
1410         - added a -s flag to restrict operation to Posix.2 `special' builtins
1411         - removed -all option; -a is the way to do it now
1412         - converted to use the builtin getopt
1413
1414 builtins/common.c
1415         - changed builtin_address_internal to return a pointer to a
1416           struct builtin, which makes it much more useful.  Changed
1417           find_shell_builtin and builtin_address accordingly
1418         - new function find_special_builtin, which returns special builtins
1419           ((flags & SPECIAL_BUILTIN) != 0)
1420
1421 execute_cmd.c
1422         - in Posix.2 mode, find special builtins before shell functions
1423           when performing command lookup
1424         - in find_user_command_internal, return NULL if there is no $PATH
1425         - in Posix.2 mode, failure of a special builtin causes a non-
1426           interactive shell to exit
1427
1428 variables.c
1429         - allow $PATH to be unset
1430
1431                                     9/8
1432                                     ---
1433 input.h
1434         - added a new `input type': st_stdin, for use when using readline,
1435           since readline is not properly a string
1436
1437 parse.y
1438         - surgery on the grammar:
1439                 o added new `compound_list' production: a list that can end
1440                   without a newline, `;' or `&' (used in subshell commands
1441                   and case clause commands)
1442                 o removed shell_command_1, folded rules into command
1443                 o eliminated pattern_list_1; changed case_clause_sequence to
1444                   directly incorporate the SEMI_SEMI token (a pattern_list_1
1445                   was just a pattern_list with a trailing SEMI_SEMI)
1446                 o new `for_command' and `case_command' productions
1447                 o redirections -> redirection_list
1448                 o newlines -> newline_list
1449                 o redid the code that attaches redirections to the function
1450                   command rather than the function definition and eliminated
1451                   all of the shift/reduce conflicts
1452         - changed with_input_from_stdin in the readline case to set
1453           bash_input.type to st_stdin
1454
1455 print_cmd.c
1456         - a couple of changes to the way functions are printed
1457
1458 shell.c
1459         - only execute the PROMPT_COMMAND if input is not coming from a
1460           string (bash_input.type != st_string).  This fixes the problem
1461           of PROMPT_COMMAND being executed by `eval' commands in an
1462           interactive shell
1463
1464                                    9/12
1465                                    ----
1466 shell.c
1467         - all interactive shells SIGHUP running jobs when exiting due to
1468           a SIGHUP, not just login shells
1469
1470                                    9/13
1471                                    ----
1472 config.h, config.h.mini
1473         - changed the default primary prompt (PPROMPT) to "\s\$ "
1474         - removed the INTERACTIVE_COMMENTS define
1475
1476 flags.c
1477         - interactive comments are now enabled by default, regardless of the
1478           INTERACTIVE_COMMENTS define
1479
1480 input.h
1481         - a new enum: stream_type, used in the BASH_INPUT struct
1482
1483 parse.y
1484         - bash_input.type is now initialized to st_none
1485
1486 bashhist.c
1487         - command_oriented_history is now the default
1488
1489 documentation/bash.1
1490         - removed description of `nolinks' variable, updated set -P
1491           description
1492         - removed description of `notify' variable, updated set -b
1493           description
1494         - removed description of `noclobber' variable, updated set -C
1495           description
1496
1497 variables.c
1498         - IFS may now be unset
1499
1500 builtins/read.def
1501         - now does the right thing if IFS is unset (acts as if it is
1502           set to " \t\n")
1503
1504 builtins/cd.def
1505         - added a new parameter to change_to_directory () which says
1506           whether or not to follow symlinks, instead of using the
1507           global no_symbolic_links
1508         - changed cd_builtin to accept a -P option to disable symlink
1509           following temporarily
1510
1511 builtins/ulimit.def
1512         - instead of using a hardcoded `long' for the return type of the
1513           rlimit functions, use RLIMTYPE, which defaults to long
1514         - new defines string_to_rlimtype -> string_to_long and
1515           print_rlimtype for systems which do not need `RLIMTYPE' defined
1516           to something other than long
1517
1518 general.c
1519         - function replacements for string_to_rlimtype and print_rlimtype
1520           for machines which have RLIMTYPE defined in the machine description
1521
1522 general.h
1523         - extern declarations for string_to_rlimtype and print_rlimtype
1524
1525 shell.c
1526         - don't source file named by $ENV at script startup if act_like_sh
1527           is turned on
1528
1529 machines.h
1530         - new entry for amiga/netbsd
1531         - change all the netbsd entries to add -DRLIMTYPE=quad_t to
1532           SYSDEP_CFLAGS
1533
1534 siglist.h
1535         - define sys_siglist as _sys_siglist on the amiga only if USGr4 is
1536           defined
1537
1538 print_cmd.c
1539         - change so that printf is not prototyped on LynxOS with gcc
1540
1541 lib/readline/Makefile
1542         - changed the `installdirs' target to not fail if the directories
1543           do not need creating
1544
1545 lib/readline/history.c
1546         - fixed a bug in history_arg_extract which manifested itself when
1547           !* was used after a command without arguments (e.g., pwd ; echo !*)
1548
1549                                    9/15
1550                                    ----
1551 subst.c
1552         - expand_word_internal should preserve the flags (other than
1553           W_QUOTED) from the word passed as a parameter on the word it returns
1554         - expand_words_internal renamed to expand_word_list_internal
1555         - expand_word_list_internal does not perform word splitting or
1556           globbing on words with the W_ASSIGNMENT bit set
1557         - removed special treatment of `notify', `command_oriented_history',
1558           `history_control', and `nolinks'
1559         - rewrote some of the sv_* functions to remove or avoid calls to
1560           sscanf, one of the most expensive C library functions
1561
1562 variables.c
1563         - don't look for $command_oriented_history at startup, since it now
1564           defaults to `on'
1565
1566 general.h, general.c
1567         - new function posix_initialize to do whatever is necessary to enable
1568           `Posix mode'
1569
1570 shell.c, subst.c
1571         - call posix_initialize
1572
1573 general.c
1574         - rewrote replacements for strchr, strrchr to make them faster
1575
1576 builtins/enable.def
1577         - new -f option and necessary support to load builtins from a shared
1578           object file on systems supporting both dlopen() and dlsym().  New
1579           builtins loaded this way can replace existing shell builtins or
1580           add completely new functionality
1581
1582 builtins.h
1583         - mkbuiltins.c creates `static_shell_builtins', which is a fixed
1584           array, `shell_builtins' points to this array initially
1585         - extern declaration for current_builtin
1586
1587 builtins/mkbuiltins.c
1588         - change to creat static_shell_builtins[] and declare shell_builtins
1589           as a pointer to it
1590         - change to declare `current_builtin' in created builtins.c
1591
1592 builtins/source.def
1593         - print an error message and return failure if no filename argument
1594           is supplied
1595
1596 builtins/common.c
1597         - current_builtin is set by find_shell_builtin, find_special_builtin,
1598           and builtin_address_internal
1599         - new function builtin_usage, which prints the contents of
1600           current_builtin->short_doc
1601
1602 builtins/{bind,declare,enable,fc,getopts,hash,history,jobs,kill,read,set,
1603           setattr,trap,ulimit,umask}.def
1604         - changed the builtins in these files to use builtin_usage() to
1605           print usage messages
1606
1607 cpp-Makefile
1608         - support for the HAVE_DLOPEN and HAVE_DLSYM defines
1609
1610 machines.h
1611         - added -ldl and -Bdynamic to the SunOS4 entry
1612
1613 documentation/{bash.1,features.texi}
1614         - documented new enable -f option to dynamically load builtins
1615
1616                                    9/16
1617                                    ----
1618 test.c
1619         - added `==' as a synonym for `='
1620
1621                                    9/18
1622                                    ----
1623 bashline.c
1624         - include readline/rlconf.h so that VI_MODE is defined if
1625           appropriate
1626
1627 shell.c
1628         - removed `-nobraceexpansion' option
1629
1630 flags.c, flags.h
1631         - added new -B flag; enabled if brace expansion is turned on
1632
1633 subst.c
1634         - use brace_expand instead of !no_brace_expand
1635
1636 builtins/set.def
1637         - change set -o braceexpand to be equivalent to set -B
1638
1639 parse.y
1640         - in with_input_from_stdin, do nothing if bash_input.type already
1641           is st_stdin or if there is already a stream with type st_stdin
1642           on the saved stream stack
1643         - new function stream_on_stack to find out if there is a saved
1644           stream of a specified type
1645
1646 documentation/bash.1, documentation/features.texi
1647         - doeumented new set -B option
1648         - removed -nobraceexpansion shell startup option
1649
1650                                    9/19
1651                                    ----
1652 builtins/reserved.def
1653         - made `help select' work
1654
1655 cpp-Makefile
1656         - removed references to the nonexistant `load.def'
1657         - removed conditionals based on GETOPTS_BUILTIN
1658
1659 builtins/getopts.def
1660         - no longer $DEPENDS_ON GETOPTS_BUILTIN
1661
1662 config.h, config.h.mini, builtins/help.def
1663         - made the `help' builtin dependent on the HELP_BUILTIN define
1664         - removed GETOPTS_BUILTIN
1665
1666 builtins/mkbuiltins.c
1667         - made the `$DEPENDS_ON' clause work for reserved words and
1668           shell control structures in reserved.def by writing out
1669           dependencies to builtext.h even if there is no `function'
1670         - made the long_doc for each builtin and reserved word get
1671           written out to builtins.c with #ifdef HELP_BUILTIN surrounding
1672           the doc strings -- this makes the minimal shell much smaller
1673
1674 shell.c, documentation/bash.1
1675         - removed `-quiet' long option
1676
1677 parse.y
1678         - make sure that word splitting is not performed on the prompt
1679           string after expanding in prompt_string_decode by calling
1680           expand_string_unsplit instead of expand_string
1681
1682 lib/readline/bind.c
1683         - new readline variable `mark-directories': if set, completed
1684           directory names have a slash appended
1685
1686 lib/readline/complete.c
1687         - support for `mark-directories'
1688
1689 documentation/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo
1690         - documented the new `mark-directories' variable
1691
1692 builtins/bind.def
1693         - new option `-r' to remove a binding for a specified key sequence
1694         - make sure that a failure return from bind resets the keymap
1695           correctly if a -m option was supplied
1696
1697 documentation/{bash.1,features.texi}
1698         - documented new bind -r option
1699
1700                                    9/20
1701                                    ----
1702 builtins/jobs.def
1703         - new `disown' builtin
1704
1705 documentation/{bash.1,features.texi}
1706         - documented new `disown' builtin
1707
1708 cpp-Makefile
1709         - removed support for `MAKE_SHELL' cpp variable
1710         - renamed endian.aux to mkendian, look for endian.c in support dir
1711         - link in array.o, alias.o, braces.o, bracecomp.o
1712           unconditionally, rely on cpp defines in the files to exclude code
1713         - pass -DHAVE_SYS_SIGLIST if sys_siglist is defined
1714         - pass -DHAVE_GETCWD if HAVE_GETCWD is defined in machines.h
1715         - pass -DHAVE_VFPRINTF_EMUALTION through from machines.h to
1716           compilation
1717
1718 array.c
1719         - don't compile in body of file unless ARRAY_VARS is defined
1720
1721 braces.c
1722         - don't compile in body of file unless BRACE_EXPANSION is defined
1723
1724 alias.c
1725         - don't compile in body of file unless ALIAS is defined
1726
1727 bracecomp.c
1728         - don't compile in body of file unless BRACE_EXPANSION and READLINE
1729           are defined
1730
1731 bashline.c
1732         - don't compile in body of file unless READLINE is defined
1733
1734 bashhist.c
1735         - don't compile in body of file unless HISTORY is defined
1736
1737 siglist.c
1738         - don't compile in body of file unless HAVE_SYS_SIGLIST is not
1739           defined
1740
1741 getcwd.c
1742         - don't compile in body of file unless HAVE_GETCWD is not defined
1743
1744 vprint.c
1745         - don't compile in body of file unless USE_VFPRINTF_EMULATION
1746           is defined
1747
1748 support/mksysdefs
1749         - for SCO machines, define SYSDEF as SCO or SCOv4
1750
1751 lib/readline/readline.[ch]
1752         - new function rl_push_macro_input (s), which makes s the current
1753           macro input string
1754
1755 endian.c
1756         - renamed to support/endian.c
1757
1758                                    9/21
1759                                    ----
1760 lib/readline/complete.c
1761         - more file types for the VISIBLE_STATS code:
1762                 |       FIFOs
1763                 %       character special devices
1764                 #       block special devices
1765
1766 lib/readline/isearch.c
1767         - made RETURN an alternate search string terminator
1768
1769 builtins/read.def
1770         - removed use of stdio -- unbuffered stdio on a dup of fd 0 is
1771           a big loss
1772
1773 builtins/set.def
1774         - new function: minus_o_option_value, returns 1, 0, or -1 given
1775           a -o option name (-1 means a bad name)
1776         - reorganized list_minus_o_options to be more efficient
1777
1778 execute_cmd.c
1779         - when expanding a here document, use maybe_expand_string rather
1780           than a simple expand_string to try a speed things up a bit
1781
1782 input.c
1783         - don't compile in the body of the file unless BUFFERED_INPUT
1784           is defined in config.h
1785
1786                                    9/22
1787                                    ----
1788 jobs.h, siglist.h
1789         - replaced instances of Solaris with SunOS5
1790
1791 shell.c
1792         - changed long option parsing code so that --arg is equivalent
1793           to -arg, when `arg' is one of the recognized multichar options
1794
1795 builtins/history.def
1796         - rewrote to regularize the option parsing and use internal_getopt
1797         - now allows only one of -awrn to be specified
1798         - added a new -p option that adds each of its arguments to the
1799           end of the history list, and deletes the `history -p' history
1800           entry
1801
1802 builtins/trap.def
1803         - added new -p option to display specified trap values, or all
1804           trap values if no other arguments supplied
1805
1806 documentation/{bash.1,features.texi}
1807         - documented new history -p option
1808         - documented new trap -p option
1809
1810                                    9/25
1811                                    ----
1812 lib/readline/display.c
1813         - fixed up the calcluation of the correct cursor line number (a `+'
1814           and `-' were transposed in the calculation of `nleft')
1815
1816                                    9/26
1817                                    ----
1818 general.c
1819         - moved isint() here from test.c, renamed to legal_number
1820
1821 general.h
1822         - extern declaration of legal_number
1823
1824 test.c
1825         - only compile isint() if SHELL is not defined, define it as
1826           legal_number otherwise
1827
1828 trap.c
1829         - use legal_number in decode_signal instead of sscanf()
1830
1831 builtins/common.c
1832         - moved list_sigs to here from trap.def, renamed to
1833           display_signal_list
1834         - changed get_numeric_arg to use legal_number instead of doing
1835           the parsing and calculation itself
1836
1837 builtins/common.h
1838         - extern declaration for display_signal_list
1839
1840 builtins/{trap.def
1841         - changed to use display_signal_list for trap -l
1842
1843 builtins/kill.def
1844         - changed to use display_signal_list for kill -l
1845         - added new kill -n signum option
1846
1847 documentation/bash.1
1848         - added description of new kill -l signame functionality
1849         - added description of new kill -n signum feature
1850         - added description of new enable -d option
1851
1852 builtins.h
1853         - added a char *handle member to `struct builtin' for later use
1854         - new flags value: BUILTIN_DELETED
1855
1856 builtins/mkbuiltins.c
1857         - added code to inintialize the `handle' member to null in the
1858           static builtin array definition
1859
1860 builtins/common.c
1861         - don't `find' a builtin if the BUILTIN_DELETED flag is set in the
1862           flags word of the struct builtins array
1863
1864 builtins/enable.def
1865         - new option -d to remove a builtin loaded with -f, depends on
1866           HAVE_DLCLOSE
1867
1868 cpp-Makefile
1869         - pass -DHAVE_DLCLOSE through from machines.h to compilation
1870
1871 machines.h
1872         - change SunOS4 machine description to define HAVE_DLCLOSE
1873
1874                                    9/27
1875                                    ----
1876 shell.c
1877         - split shell exit code off into a separate function: exit_shell(status)
1878
1879 builtins/exec.def
1880         - rewrote for clarity and speed and to use the builtin getopt()
1881         - added new -a, -c, and -l options
1882         - now calls exit_shell if shell_execve fails and the shell is not
1883           interactive
1884
1885 documentation/bash.1
1886         - documented the new options to `exec'
1887
1888                                    9/28
1889                                    ----
1890 builtins/exec.def
1891         - if the execve fails and the shell is not going to exit, reinitialize
1892           traps and signals
1893         - only call end_job_control if subshell_environment != 0
1894         - exec should exit unconditionally if the execve fails and
1895           subshell_environment != 0
1896
1897 subst.c
1898         - if valid_brace_expansion_word fails, make sure `temp' is set to
1899           NULL before trying to free it after the `goto bad_substitution'
1900
1901 cpp-Makefile
1902         - add $(CPPFLAGS) to the compilation flags when making `mksignames'
1903
1904 documentation/features.texi
1905         - fixed a typo in the tilde expansion section
1906
1907                                    9/29
1908                                    ----
1909 machines.h
1910         - DEC OSF/1 has the dlopen/dlsym/dlclose set of library functions
1911
1912 shell.c
1913         - don't execute /etc/profile if -noprofile given
1914
1915 builtins/pushd.def
1916         - new file, pushd/popd/dirs split off from cd.def
1917         - replaced calls to sscanf with calls to legal_number
1918
1919 builtins/Makefile, cpp-Makefile
1920         - changes for pushd.def
1921
1922 config.h, config.h.mini
1923         - ALLOW_RIGID_POSIX_COMPLIANCE is no longer used
1924
1925 subst.c, variables.c
1926         - GETOPTS_BUILTIN is no longer used
1927
1928 variables.c
1929         - if the first character of argv[0] is not a `/', search the path
1930           and canonicalize the result to find out how to set $BASH
1931
1932                                    10/2
1933                                    ----
1934 builtins/enable.def
1935         - changed enable_shell_builtin to use builtin_address_internal to find
1936           the builtin rather than searching the list itself
1937         - list_some_builtins skips a builtin if flags & BUILTIN_DISABLED != 0
1938         - rewrote dyn_load_builtin to take a list of names to load from a
1939           single filename
1940         - don't dlclose the shared object in dyn_unload_builtin unless its
1941           reference count drops to 0
1942
1943 builtins/test.def
1944         - don't bother making new copies of everything in the argument list
1945           when constructing the argc and argv for test_command; just make
1946           sure not to free anything but ARGV
1947
1948                                    10/3
1949                                    ----
1950 bashline.c
1951         - remove C-e binding in vi movement mode which switches into emacs
1952           mode
1953
1954 general.c
1955         - make xfree only try to call free on non-null strings
1956
1957                                    10/4
1958                                    ----
1959 builtins/read.def
1960         - new `-e' option that uses readline to read the line
1961         - if one of the arguments is not a legal variable name, print an
1962           error message and return failure
1963
1964 builtins/reserved.def
1965         - changed the `Variables' to `variables' so `help variables' works
1966
1967 subst.c
1968         - set startup_state to 2 in child of command substitution to try to
1969           avoid some unneeded forks
1970
1971 trap.c
1972         - removed call to reset_terminating_signals in restore_original
1973           signals; callers are now required to take care of that themselves,
1974           if necessary
1975
1976 execute_cmd.c, subst.c
1977         - added necessary calls to reset_terminating_signals before calls
1978           to restore_original_signals
1979
1980 execute_cmd.c
1981         - when executing a null command in a subshell, don't bother passing
1982           a string to make_child; just pass NULL
1983         - in execute_builtin_or_function, don't add so many unwind-protects
1984           if `subshell' == 1
1985         - in command_substitute, call cleanup_the_pipeline to discard the
1986           old pipeline, so pipeline_pgrp does not get set to 0 in
1987           start_pipeline, which is called by make_child via making_children
1988
1989 jobs.c, nojobs.c
1990         - new function, ignore_tty_job_signals, to set SIGTTIN, SIGTTOU, and
1991           SIGTSTP to SIG_IGN
1992         - new function, default_tty_job_signals, to set those signals
1993           to SIG_DFL
1994         - new function, cleanup_the_pipeline to free up the_pipeline and
1995           set it to NULL
1996
1997                                    10/5
1998                                    ----
1999 builtins/history.def
2000         - the history -p option is now -s (to sort of parallel the ksh
2001           print -s option)
2002         - the -s option now combines all of its arguments into a single
2003           string and appends the string to the history list
2004         - new history -p option to history expand each argument and print
2005           the result without modifying the history list
2006
2007 documentation/bash.1, documentation/features.texi
2008         - documented the new -e option to read
2009         - documented the new history -s and -p options
2010         - documented the new cd and pwd -L options
2011
2012 builtins/cd.def
2013         - changed cd and pwd to use internal_getopt
2014         - added the -L option to cd and pwd to follow symlinks (like if
2015           set +P were issued)
2016
2017 builtins/pushd.def
2018         - added text for dirs +N and dirs -N to the dirs builtin long doc
2019         - added -v option to dirs to print dirstack one dir per line with
2020           stack index prepended
2021
2022                                    10/6
2023                                    ----
2024 execute_cmd.c
2025         - split the command searching code into a new function:
2026           search_for_command
2027         - removed a bunch of dead code from shell_execve
2028         - removed call to reset_terminating_signals when executing a function
2029           or builtin in a subshell (either via (xxx) or xxx &)
2030         - don't add unwind protects at all in execute_function if subshell == 1
2031
2032 lib/readline/chardefs.h
2033         - new macro ALPHABETIC(c), returns 1 if c is a letter or digit
2034
2035 lib/readline/readline.c
2036         - don't call abort() in rl_change_case(); it's impolite in a
2037           library function
2038         - new macro, SWAP, used to swap values of two integers
2039         - changed alphabetic to use ALPHABETIC, made it slightly faster
2040         - modified rl_change_case() so that word capitalization is the
2041           same as GNU Emacs
2042
2043 lib/readline/search.c
2044         - in noninc_dosearch, don't reset the history positition to what
2045           it was if we're currently in vi editing mode (as per Posix.2
2046           `/' and `?' vi-mode editing commands)
2047
2048                                    10/7
2049                                    ----
2050 builtins/common.c
2051         - changed single_quote and double_quote to use char pointers
2052           rather than string indexing
2053         - new function backslash_quote(string), which quotes special
2054           characters in STRING using backslashes
2055
2056                                    10/8
2057                                    ----
2058 alias.h
2059         - added an extern declaration for alias_expand_word
2060
2061 parse.y
2062         - broke the alias expansion code off into a function
2063           alias_expand_token; its return value says whether to re-read
2064           a token or go on
2065         - changed the alias expansion code to handle aliases that expand
2066           to nothing better
2067         - broke the code that does special-case token recognition off into
2068           a function: special_case_tokens
2069         - used the new functions to make sure that the special-case tokens
2070           can be the expansion of an alias
2071         - made sure that if in `posix mode' that reserved words cannot be
2072           aliased and that all reserved words can be the values of aliases
2073           and be recognized after expansion
2074
2075                                    10/10
2076                                    -----
2077 lib/readline/complete.c
2078         - replaced #ifdef SHELL code with two new exported readline interfaces:
2079           rl_filename_quoting_function and rl_filename_dequoting_function.
2080           Both return a pointer to char.
2081         - new extern variable rl_filename_quote_characters, containing a list
2082           of characters that cause a word to be quoted by the completer if
2083           they appear in a file name
2084
2085 bashline.c
2086         - new functions for rl_filename_quoting_function and
2087           rl_filename_dequoting_function.
2088         - initialize rl_filename_quoting_function and rl_filename_dequoting_function
2089           in initialize_readline
2090         - initialize rl_filename_quote_characters
2091
2092 lib/readline/readline.h
2093         - extern declarations for new public interfaces
2094           rl_filename_quoting_function and rl_filename_dequoting_function
2095         - added declarations for NO_MATCH, SINGLE_MATCH, and MULT_MATCH for
2096           use by the filename quoting functions
2097         - new extern declaration for rl_filename_quote_characters
2098
2099 lib/readline/history.c
2100         - made a version of single_quote be compiled in if SHELL is not
2101           defined
2102         - the `q' and `x' modifiers are now compiled in by default, not
2103           just if SHELL is defined
2104
2105                                    10/11
2106                                    -----
2107 subst.c
2108         - string_quote_removal was being a little overzealous in stripping
2109           things within embedded quoted strings when `quoted' was == 1.
2110           Only remove one level of quotes each time through the function
2111           This fixes the problem of quotes being stripped incorrectly in
2112                 var="The text \"hello\" should show up inside double quotes."
2113
2114 lib/readline/history.c
2115         - made the behavior of single quotes inhibiting history expansion
2116           configurable with a variable: history_quotes_inhibit_expansion,
2117           not just shell-specific
2118         - added a new variable: history_search_delimiter_chars, which is a
2119           list of characters that can also delimit a history search string
2120
2121 lib/readline/history.h
2122         - extern declaration of history_quotes_inhibit_expansion
2123         - extern declaration of history_search_delimiter_chars
2124
2125 bashhist.c
2126         - set history_quotes_inhibit_expansion to 1 in bash_initialize_history
2127         - initialize history_search_delimiter_chars to ";&()|<>"
2128
2129 lib/readline/doc/{rltech,hstech}.texinfo
2130         - documented new readline and history library interfaces
2131
2132 parse.y
2133         - split the part of read_token that reads a single word off into
2134           a new function: read_token_word
2135
2136 lib/readline/chardefs.h
2137         - include <string.h> by default; only check HAVE_STRING_H if
2138           HAVE_CONFIG_H is defined
2139
2140                                    10/12
2141                                    -----
2142 parse.y
2143         - moved the `RESET' code out of read_token into reset_parser
2144         - rewrote some of decode_prompt_string to make it more efficient
2145         - rewrote more of read_token_word to make it more efficient
2146         - make shell_getc cast its result to `unsigned char' before
2147           returning it.  This fixes the problem of \255 appearing in a
2148           line
2149
2150 machines.h
2151         - new entry for m68k machines running Linux
2152
2153                                    10/13
2154                                    -----
2155 builtins/exec.def
2156         - use search_for_command rather than find_user_command to look up
2157           the path to exec, so the hash table and temp environment are used
2158
2159 variables.c
2160         - don't rebuild the export environment after binding a shell
2161           function unless that function is exported
2162         - make sure that copy_variable copies arrays correctly, using
2163           dup_array()
2164         - in assign_in_env, only call tilde_expand if a `~' appears somewhere
2165           in the value
2166
2167 execute_cmd.c
2168         - if we found $PATH in the temp environment in search_for_command,
2169           call find_user_command_in_path instead of find_user_command, so
2170           we don't try to search the temporary env again.  Call
2171           find_user_command as normal if PATH is not in the temp environment
2172
2173 subst.c
2174         - char_is_quoted should not be compiled in if READLINE is not
2175           defined
2176
2177 lib/readline/complete.c
2178         - add a new external interface: Function *rl_char_is_quoted_p,
2179           which is called to find out whether a word break character is
2180           quoted and should be skipped over when breaking words for
2181           the completer
2182
2183 lib/readline/readline.h
2184         - extern declaration for rl_char_is_quoted_p
2185
2186 bashline.c
2187         - initialize rl_char_is_quoted_p to char_is_quoted
2188
2189 lib/readline/doc/rltech.texinfo
2190         - documented rl_char_is_quoted_p
2191
2192 lib/readline/readline.c
2193         - extend the undo records so that a `start' or `end' value of -1
2194           means rl_point and a value of -2 means rl_end.  This is a start
2195           to better support for undoing vi-mode commands like `C'
2196
2197 lib/readline/vi_mode.c
2198         - don't save what's entered in insert mode after a `C' command
2199           for later insertion when doing a `redo'
2200
2201                                    10/16
2202                                    -----
2203 test.c
2204         - rewrote unop() to use a switch statement instead of a call to
2205           strchr
2206         - remove #ifdef SHELL blocks by defining getuid, geteuid, getgid
2207           and getegid as references to current_user.{uid,euid,gid,egid}
2208           respectively
2209         - change group_member to only fetch the group list once and to use
2210           NGROUPS_MAX or NGROUPS to find the maximum number of groups
2211
2212 documentation/bash.1
2213         - fixed description of ${#@} expansion
2214
2215                                    10/17
2216                                    -----
2217 support/bashbug.sh
2218         - add a `From:' line to the mail message handed to rmail
2219
2220                                    10/18
2221                                    -----
2222 test.c
2223         - rewrote binary_operator for speed and clarity
2224         - removed age_of, added arithcomp(), filecomp() to support new
2225           binary_operator
2226         - removed support for `-l string'
2227
2228 documentation/bash.1
2229         - removed mention of `-l string' from `test' description
2230
2231                                    10/19
2232                                    -----
2233 cpp-Makefile
2234         - pass PROGRAM as the double-quoted shell name to compilation of
2235           shell.c and error.c
2236
2237                                    10/20
2238                                    -----
2239 support/bashbug.sh
2240         - don't try to use ${word:-expansion}; ultrix sh doesn't understand it
2241
2242 hash.c
2243         - new function: flush_hash_table (table, free_data) to delete the
2244           contents of a given hash table.  *free_data is called to free
2245           each item's data, if free() is inappropriate
2246
2247 builtins/hash.def
2248         - new functions free_hashed_filenames and free_filename_data to
2249           flush the table of hashed filenames
2250
2251 subst.c
2252         - change sv_path to call flush_hashed_filenames directly
2253
2254 variables.c
2255         - only sort arrays of variables or functions for the environment or
2256           `set' output if `posixly_correct' is set.  sh does it; ksh does
2257           not, and there's no real requirement to do so
2258         - rewrote delete_all_variables so it looks like flush_hash_table
2259
2260 trap.c
2261         - two new flag values for the `sigmodes' array: SIG_INPROGRESS,
2262           which is set for sigmodes[sig] while a trap handler for sig
2263           is executing, and SIG_CHANGED, which is set if a new trap
2264           value is set when SIG_INPROGRESS is set.  This should obviate
2265           the need to set the trap value to IMPOSSIBLE_TRAP_HANDLER while
2266           the trap handler is executing
2267
2268 alias.c
2269         - rewrote delete_all_aliases so it looks like flush_hash_table
2270
2271                                    10/21
2272                                    -----
2273 alias.c
2274         - changed delete_all_aliases to call flush_hash_table directly
2275           and use free_alias_data as the `free function' argument
2276
2277 variables.c
2278         - changed delete_all_variables to call flush_hash_table directly
2279
2280 tests/run-test, tests/test-tests
2281         - new scripts to run tests of the `test' builtin as part of the
2282           regression test
2283
2284                                    10/24
2285                                    -----
2286 bashline.c
2287         - initialize_hostname_list needs to look for HOSTFILE first
2288         - hostname list is no longer sorted
2289         - replaced binary search in hostnames_matching with a simple
2290           linear search
2291         - made the code that reads hostnames skip over the first word on
2292           a line only if its first character is a digit, assuming it's
2293           an Internet address
2294
2295 copy_cmd.c
2296         - removed copy_select_command; overload copy_for_command, since the
2297           select and for command structs are exactly the same
2298
2299 make_cmd.c
2300         - combined make_for_command and make_select_command into a new
2301           function, make_for_or_select
2302         - rewrote make_here_document to remove the unneeded `switch' statement
2303
2304 builtins/common.c, builtins/hash.def
2305         - moved remove_hashed_filename from common.c to hash.def
2306
2307 builtins/common.c
2308         - remove the \r from error message printed by get_working_directory
2309         - change parse_and_execute to call dispose_fd_bitmap directly then
2310           discard the `pe_dispose' unwind-protect frame rather than running
2311           the frame
2312
2313 builtins/set.def
2314         - changed how set -o options are set and retrieved, using set and get
2315           functions to avoid all that special-case inline code
2316
2317                                    10/26
2318                                    -----
2319 test.c
2320         - added unary operator `-o', which returns true of the shell option
2321           name given as an argument is set
2322
2323 lib/readline/readline.c
2324         - added a definition of set_lines_and_columns to be called if the
2325           library is not compiled -DSHELL
2326
2327 shell.c
2328         - added a --verbose startup long option
2329         - renamed `--nolineediting' to `--noediting'
2330
2331                                    10/27
2332                                    -----
2333 lib/readline/util.c
2334         - new file, for readline utility functions
2335
2336 lib/readline/readline.c
2337         - moved a bunch of functions to util.c
2338
2339 subst.c
2340         - make sure set_sigint_handler is called only by the subshells doing
2341           command and process substitution
2342
2343 builtins/read.def
2344         - make sure that rlbuf is initialized to null
2345
2346 trap.c
2347         - new flag for sigmodes[] members: SIG_IGNORED, set when signal is
2348           ignored, even if it's special or untrappable
2349         - new function: signal_is_ignored (sig), which returns 1 if SIG
2350           has been ignored with trap ''
2351
2352 builtins/trap.def
2353         - changed to use the builtin getopt
2354
2355 shell.c
2356         - added a check to sigint_sighandler for whether or not SIGINT has
2357           been ignored with trap '' in an interactive shell.  This fixes
2358           the problem with `read' being interruptible in an interactive
2359           shell even if SIGINT is being ignored
2360
2361                                    11/8
2362                                    ----
2363 lib/readline/Makefile
2364         - added definition of INSTALLED_HEADERS, just in case
2365
2366                                    11/11
2367                                    -----
2368 variables.c
2369         - change assign_in_env so that it doesn't use savestring ("") to
2370           set `value' to a dummy value; don't call strcpy if there's
2371           nothing to copy
2372
2373                                    11/15
2374                                    -----
2375 general.h
2376         - new defines, legal_variable_starter and legal_variable_char
2377         - new define SIGRETURN(n) which encapsulates the VOID_SIGHANDLER
2378           differences when returning from a signal handler
2379
2380 general.c, variables.c, subst.c, expr.c
2381         - use legal_variable_starter and legal_variable_char
2382
2383 shell.c, nojobs.c, trap.c, jobs.c, builtins/suspend.def
2384         - change to use SIGRETURN macro
2385
2386 subst.c
2387         - massive changes to clean up the code and remove unused code and
2388           variables
2389         - expanded the ${#param} code so that all of the shell special
2390           variables may have their length taken
2391
2392 tests/run-tilde
2393         - new test for tilde expansion
2394
2395 bashline.c
2396         - fix a bug in command_subst_completion_matches: make sure that
2397           `matches' is static
2398
2399 parse.y
2400         - don't print a prompt when not using readline if the current
2401           input type is st_string
2402
2403 machines.h
2404         - add -DINT_GROUPS_ARRAY to SYSDEP_CFLAGS on ultrix
2405         - fixes to the cray machine description from Bill Jones
2406
2407 braces.c
2408         - fixed a bug in brace_gobbler that prevented a backslash from
2409           escaping an open brace
2410
2411                                    11/16
2412                                    -----
2413 tests/braces-tests, tests/run-braces
2414         - new regression tests for brace expansion
2415
2416 builtins/pushd.def
2417         - new -p option for `dirs' that prints dirstack on per line
2418           without numbers
2419
2420                                    11/17
2421                                    -----
2422 command.h
2423         - move redirection error values here from execute_cmd.c
2424         - new defines INPUT_REDIRECT and OUTPUT_REDIRECT
2425
2426 shell.c
2427         - make the default MAINTAINER `bash-maintainers@prep.ai.mit.edu'
2428
2429 execute_cmd.c
2430         - many changes to clean up the code and remove unused variables and
2431           functions
2432         - new functions: redirection_error, find_in_path_element,
2433           find_absolute_program
2434         - fixes to redirection error reporting, so things like exec 4<&y*
2435           and exec 4<&$FOO are displayed correctly
2436         - removed the `lexical_scoping' code
2437
2438 flags.c, flags.h
2439         - removed the lexical_scoping code and variable
2440
2441 documentation/{bash.1,features.texi}
2442         - removed the description of the `-l' option to `set'
2443
2444 jobs.c
2445         - don't try to open /dev/tty to get the controlling tty, use
2446           fd 2 like other job control shells
2447
2448 lib/readline/vi_mode.c
2449         - when using `d%', make sure the matching character found by
2450           the `%' is deleted by the `d'.  Ditto for `c%'.
2451         - stub function for vi undo: rl_vi_undo.  Right now it just
2452           calls rl_undo_command
2453
2454 lib/readline/vi_keymap.c
2455         - change to call rl_vi_undo instead of rl_undo_command
2456
2457 lib/readline/readline.h
2458         - extern declaration for rl_vi_undo
2459
2460                                    11/21
2461                                    -----
2462 execute_cmd.c
2463         - fix to print_select_list to avoid a possible divide-by-zero error
2464           and subsequent core dump
2465         - fix to execute_select_command to just return 0 if there is no
2466           select list
2467
2468 parse.y
2469         - remove `in' from the list of tokens that cannot take trailing
2470           semicolons
2471
2472 builtins/read.def
2473         - make sure that leading IFS whitespace is removed before calling
2474           get_word_from_string the first time.  This matters when IFS is
2475           not " \t\n" but non-null
2476         - make sure the array code uses IFS to split the input string
2477           before assigning it to the array
2478
2479                                    11/22
2480                                    -----
2481 parse.y
2482         - make sure that if \nnn expands to CTLESC or CTLNUL, the char
2483           is protected by a CTLESC
2484         - new variable `promptvars', which, if non-zero, causes all the
2485           variable expansions to be performed in decode_prompt_string.
2486           If zero, only quote removal is performed.
2487
2488 builtins/source.def
2489         - new variable: `source_uses_path', set to 1 by default.  If
2490           non-zero, the `.' builtin uses $PATH to find the script to
2491           source
2492
2493 builtins/getopt.h
2494         - cut out everything not needed by bash
2495
2496 builtins/getopt.c
2497         - cut out everything not needed by bash
2498
2499 builtins/getopts.def
2500         - removed the call to getopt_set_posix_option_order, which is no
2501           longer necessary
2502
2503 execute_cmd.c
2504         - split the code that writes out here documents to files out into
2505           a separate function
2506
2507                                    11/23
2508                                    -----
2509 builtins/getopt.c, builtins/getopt.h, builtins/getopts.def, subst.c
2510         - prefix all of the getopt variables and functions with `sh_'
2511           (that is, optind becomes sh_optind and getopt becomes sh_getopt)
2512           to avoid confusion with a system's getopt(3) implementation
2513
2514 subst.c
2515         - new functions: parameter_brace_substring and verify_substring_values
2516           and changes to expand_word_internal to support the ksh-93
2517           ${var:exp1:exp2} substring syntax
2518
2519 documentation/bash.1
2520         - documented the new ${var:exp1[:exp2]} syntax
2521
2522                                    11/25
2523                                    -----
2524 builtins/setattr.def
2525         - don't allow readonly -n at all
2526
2527 array.c
2528         - split array_to_string into two parts; a new function
2529           array_to_string_internal does the real work
2530         - new function array_subrange () to return a subset of the elements
2531           in an array
2532
2533 subst.c
2534         - augmented the substring code to handle the positional parameters
2535           and array variables
2536         - made quote_list and dequote_list return their WORD_LIST *
2537           arguments so they can be used like
2538
2539                 z = string_list ((quoted ? quote_list (l) : l), xxx);
2540
2541         - augmented the ${xxx} expansion code to do indirect variable
2542           references if the first character of the variable name is `!'
2543
2544 tests/new-exp.tests
2545         - added regression tests for substring expansion
2546         - added regression tests for indirect variable references
2547
2548                                    11/28
2549                                    -----
2550 builtins/set.def
2551         - added set -o hashfunc and set -o onecmd, synonyms for set -h
2552           and set -t, respectively
2553
2554 builtins/shift.def
2555         - changed shift so that the positional parameters are not changed
2556           if the argument is > $# (this is ksh and Posix.2, unlike sh)
2557
2558 documentation/bash.1
2559         - documented true behavior of `shift'
2560
2561 lib/readline/kill.c
2562         - split the kill ring management code and the kill commands out
2563           from readline.c into this file
2564
2565 lib/readline/undo.c
2566         - split the code that does undoing out of readline.c into this file
2567
2568 shell.c
2569         - force the shell to exit with status 127 if a longjmp back to
2570           run_one_command occurs with bash -c
2571         - force the last command exit status to 1 if a
2572           longjmp (top_level, DISCARD) is performed
2573
2574 builtins/read.def
2575         - don't throw away partial lines after reading EOF
2576
2577 subst.c
2578         - command substitution should not inherit the -e flag
2579
2580 builtins/source.def
2581         - make sure to set the exit status correctly when in posix mode
2582           and the filename argument to `.' does not exist
2583
2584                                    11/29
2585                                    -----
2586 lib/readline/input.c
2587         - split the input buffering and character input code out of
2588           readline.c to here
2589
2590 lib/readline/macro.c
2591         - moved the keyboard macro management code to here from readline.c
2592
2593 lib/readline/readline.c
2594         - removed the STATIC_MALLOC code
2595
2596 lib/readline/rltty.c
2597         - return -1 in POSIX get_tty_settings if tcgetattr returns -1 and
2598           errno != EINTR, even if output is being flushed
2599
2600                                    12/1
2601                                    ----
2602 machines.h
2603         - fixes to the hpux_8 and hpux_9 machine descriptions
2604
2605 trap.c
2606         - make run_exit_trap return the right exit status
2607           (last_command_exit_value)
2608         - run_exit_trap no longer preserves the value of last_command_exit_value
2609           around the execution of the trap commands
2610         - run_exit_trap now turns off SIG_TRAPPED and sets SIG_INPROGRESS
2611           and will not try to run anything if SIG_INPROGRESS is set
2612
2613 trap.h
2614         - change definition for run_exit_trap
2615
2616 shell.c
2617         - call run_exit_trap only if trap[0] is set and not ignored
2618
2619 builtins/exit.def
2620         - make sure we only source the .bash_logout file once, even if it
2621           contains a call to `exit'
2622
2623 execute_cmd.c
2624         - if we run an exit trap in a (...) user subshell, allow it to
2625           override the exit status of the subshell
2626
2627 lib/readline/readline.c
2628         - made rl_delete_text bounds check its `to' argument, and limit
2629           it at rl_end
2630
2631 lib/readline/vi_mode.c
2632         - make rl_vi_subst call `rl_delete_text' directly for the `s'
2633           command
2634
2635 support/mksysdefs
2636         - define a new variable for the sysdefs.h file for ISC machines:
2637           ISC_release, which can be ISC_2, ISC_3, or ISC_4
2638
2639 machines.h
2640         - don't `#undef' HAVE_GETCWD on ISC 4.x machines
2641         - `#undef' HAVE_RESOURCE on ISC 4.x machines
2642
2643 support/mkversion.c
2644         - include "posixstat.h" rather than <sys/stat.h> for the benefit
2645           of ISC machines
2646
2647                                    12/5
2648                                    ----
2649 lib/readline/complete.c
2650         - changed username_completion_function so that a null username
2651           generates a list of all users as possible completions
2652
2653 lib/readline/readline.h
2654         - added definitions for STREQ, STREQN
2655
2656 lib/readline/{search.c,isearch.c,kill.c}
2657         - removed private definitions of STREQ, STREQN
2658
2659 execute_cmd.c
2660         - in find_user_command_internal, just return a copy of the pathname
2661           passed as an argument if there is no PATH
2662
2663                                    12/6
2664                                    ----
2665 siglist.h
2666         - NetBSD 1.0 does not need a define for strsignal()
2667
2668                                    12/8
2669                                    ----
2670 subst.c
2671         - removed assignment_name, word_list_quote_removal, word_quote_removal,
2672           and sub_append_number -- unused functions
2673         - removed some unexecuted code from expand_word_internal
2674
2675                                    12/9
2676                                    ----
2677 execute_cmd.c
2678         - if PATH is set to the empty string, find executables in the
2679           current directory
2680
2681 shell.c, parse.y, trap.c
2682         - before setting the SIGINT sighandler unconditionally to one of
2683           sigint_sighandler or termination_unwind_protect, check that it
2684           is not ignored.  Now trap '' 2 really sets the SIGINT signal
2685           handler to SIG_IGN. [In 1.14.3]
2686
2687 trap.c
2688         - rewrote set_sigint_handler to use SIG_IGNORED rather than checking
2689           against IGNORE_SIG
2690         - changed ignore_signal, run_exit_trap, maybe_call_trap_handler, and
2691           run_trap_internal to check SIG_IGNORED
2692
2693 shell.c
2694         - removed the check for signal_is_ignored(SIGINT) in sigint_sighandler
2695
2696                                    12/11
2697                                    -----
2698 sig.c, sig.h
2699         - new files, moved signal-related definitions and code here from
2700           shell.c, general.h, general.c, jobs.c, jobs.h, externs.h
2701
2702 unwind_prot.c, shell.h, nojobs.c
2703         - include sig.h
2704
2705                                    12/12
2706                                    -----
2707 jobs.c
2708         - only break out of loops if SIGTSTP was used to stop a job in the
2709           loop, the shell is currently interactive, and job control is on.
2710           SIGSTOP does not break loops. [In 1.14.3]
2711
2712                                    12/13
2713                                    -----
2714 expr.c
2715         - bases < 2 or > 36 are now accepted without silently being reset
2716           to 10
2717
2718 braces.c
2719         - make sure array_concat copies the array it returns if one of
2720           the arguments is null [In 1.14.3]
2721
2722                                    12/14
2723                                    -----
2724 subst.c
2725         - split the ${...} expansion code out into a separate function,
2726           static char *parameter_brace_expand()
2727         - changes to array_value so that any variable can be referred to
2728           as an array with an integer subscript.  The value will be
2729           returned if a non-array variable is referred to as ${var[0]};
2730           if the subscript is > 0 a null string is returned
2731
2732                                    12/15
2733                                    -----
2734 machines.h
2735         - fixes to freebsd description for FreeBSD 2 [In 1.14.3]
2736
2737 support/bashbug.sh
2738         - changed to use /usr/lib/sendmail if present or /usr/sbin/sendmail
2739           if present, defaulting to rmail [In 1.14.3]
2740
2741 bashhist.c
2742         - HISTFILESIZE now controls how large the history file is after
2743           it is written.  After saving the shell history, sv_histfilesize
2744           will truncate it if necessary.  history -w can override this.
2745
2746 documentation/bash.1
2747         - documented change to treatment of HISTSIZE when saving history
2748
2749 lib/malloc/malloc.c
2750         - removed the calls to sigsetmask() in malloc().  This should
2751           result in a speed improvement
2752
2753                                    12/19
2754                                    -----
2755 builtins/enable.def
2756         - don't allow -f or -d in a restricted shell
2757
2758 builtins/alias.def
2759         - rewrote alias and unalias to use the internal getopt
2760         - added -p option to print the alias list to alias
2761         - fixed up the documentation for `alias'
2762
2763 documentation/{bash.1,features.texi}
2764         - updated the documentation for `alias'
2765         - updated the documentation for $_
2766
2767 array.c,array.h
2768         - new function `empty_array (ARRAY *a)' removes all of the
2769           elements in a without destroying the array variable in
2770           preparation for overwriting it.  Used by read -a.
2771
2772 builtins/read.def
2773         - call empty_array() before assigning list of values with read -a
2774         - changed dispose_array to use empty_array to destroy the
2775           array elements
2776
2777 variables.c
2778         - set $_ to argv[0] at variable initialization time
2779
2780                                    12/20
2781                                    -----
2782 subst.c
2783         - broke the pattern removal code into a few separate functions:
2784           getpatspec to get the pattern specifier, getpattern to do the
2785           necessary word expansions and return the pattern to be matched
2786         - new function: parameter_list_remove_pattern(), which implements
2787           the ${param[#%][[%#]]pattern} where param is `@' or `*'
2788
2789 documentation/bash.1
2790         - documented new pattern removal functionality for the positional
2791           paramters
2792
2793 general.c
2794         - new function strsub (s, pat, rep, gflag) replaces PAT with REP
2795           in S.  All occurrences are replaced if GFLAG != 0; the first is
2796           replaced otherwise
2797         - changed strindex() to avoid multiple calls to strnicmp by
2798           checking first character of the string
2799
2800 builtins/fc.def
2801         - changed to use builtin_getopt with a check for fc numbers as
2802           arguments
2803         - some code rearranging for efficiency and clarity
2804         - fc_dosubs now just calls strsub(); fc_replace is gone
2805
2806                                    12/21
2807                                    -----
2808 subst.c
2809         - new function, match_pattern, which matches a shell globbing
2810           pattern anywhere in a string and returns the boundaries of the
2811           match
2812
2813 lib/readline/readline.h
2814         - declarations for rl_insert_command and rl_backward_char_search
2815
2816 lib/readline/readline.c
2817         - new function rl_insert_comment, no longer vi-mode-specific
2818         - new function rl_backward_char_search
2819
2820 lib/readline/bind.c
2821         - comment-begin now sets the comment char for emacs and vi modes
2822         - variable holding the value is now _rl_comment_begin
2823
2824 lib/readline/vi_mode.c
2825         - move the `comment-begin' stuff to readline.c and bind.c
2826
2827 lib/readline/funmap.c
2828         - vi-comment is now insert-comment
2829         - new bindable command character-search-backward
2830
2831 lib/readline/vi_mode.c
2832         - command mode `#' now invokes rl_insert_comment
2833
2834 lib/readline/emacs_keymap.c
2835         - M-# now bound to insert-comment
2836         - M-space now bound to set-mark
2837         - M-^] now bound to character-search-backward
2838
2839 bashline.c
2840         - posix_readline_initialize now calls rl_variable_bind to set the
2841           value of comment-begin rather than directly modifying
2842           _rl_comment_begin
2843
2844 documentation/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo
2845         - added description of new bindable `insert-comment' command
2846         - documented new M-space emacs mode binding
2847         - documented new character-search-backward command and default
2848           emacs mode binding to M-C-]
2849
2850 shell.c
2851         - only call posix_initialize if posixly_correct is set
2852
2853                                    12/22
2854                                    -----
2855 cpp-Makefile
2856         - make $(Program) depend on $(srcdir)/.distribution, for the
2857           benefit of systems where `make' does not have VPATH support
2858           [In 1.14.3]
2859
2860 jobs.c
2861         - if a foreground job is killed by SIGINT while job control is
2862           active, print a newline to compensate for the kernel printing
2863           ^C without one [in 1.14.3]
2864
2865 bashline.c
2866         - make sure bashline_reinitialize resets rl_completion_entry_function
2867           to NULL, as the comment says it should [In 1.14.3]
2868
2869                                    12/23
2870                                    -----
2871 test.c
2872         - fix a problem that caused core dumps if a `)' was missing in a
2873           parenthesized expression [In 1.14.3]
2874
2875 jobs.c
2876         - broke the code the manages the manipulation of the job table and
2877           process status out of flush_child into a new function waitchld()
2878         - flush_child now just calls waitchld() with a parameter that tells
2879           it not to block
2880         - wait_for calls waitchld() with the pid it's looking for and tells
2881           it to block (don't call it with WNOHANG)
2882         - cleaned up wait_for considerably -- turned the wait_loop: label
2883           stuff into a do-while loop and removed the setting of job status
2884           (that's now done only by waitchld).  wait_for now calls
2885           waitchld continuously until the job it is interested in is
2886           marked JDEAD.
2887
2888                                    12/28
2889                                    -----
2890 subst.c
2891         - fixed expand_word_internal so that any word that expands into
2892           nothing and contains a double-quoted $@ is removed, like sh
2893           and ksh
2894         - new function: expand_string_for_rhs, which calls expand_word_internal
2895           with a variable that lets it find out whether or not a $@ appeared
2896           in the WORD in ${paramOPword} when expanding it, so that "$@"
2897           and various other things are handled correctly on the rhs
2898         - added params for parameter_brace_expand to tell expand_word_internal
2899           if a quoted $@ was processed as part of the rhs (or even the lhs);
2900           these new params are passed along to parameter_brace_expand_rhs
2901         - pass the right value of quoted to parameter_brace_expand_rhs from
2902           parameter_brace_expand.  expand_string_for_rhs doesn't need to know
2903           whether the brace expression is quoted
2904
2905                                    12/31
2906                                    -----
2907 support/printenv
2908         - now an official part of the distribution, moved from CWRU/misc
2909           [in 1.14.3]
2910
2911 cpp-Makefile
2912         - copy support/printenv into the `tests' directory when making tests
2913           [in 1.14.3]
2914         - change to understand GCC_STANDARD [in 1.14.3]
2915
2916 support/bashbug.sh
2917         - fixed a typo that caused it to not parse correctly [in 1.14.3]
2918
2919 machines.h
2920         - define GCC_STANDARD if the standard `cc' is gcc and you don't want
2921           to use the compiler named `gcc' for some reason [in 1.14.3]
2922
2923                                     1/2
2924                                     ---
2925 general.h
2926         - added FS_DIRECTORY to the list of flags that file_status returns
2927
2928 execute_cmd.c
2929         - changed find_in_path_element to return null if the flags argument
2930           specifies FS_EXEC_ONLY and the file is not executable
2931         - return FS_DIRECTORY from file_status if the argument specifies a
2932           directory
2933         - new function, is_directory (char *), which returns non-zero if the
2934           filename argument is a directory
2935
2936 execute_cmd.h
2937         - extern declaration for is_directory
2938
2939 flags.c, flags.h
2940         - hashing_disabled and locate_commands_in_functions were removed,
2941           hashing_enabled added
2942
2943 execute_cmd.c, builtins/common.c. builtins/hash.def
2944         - use hashing_enabled instead of hashing_disabled, and reverse
2945           the sense of tests of it
2946
2947 documentation/bash.1, documentation/features.texi
2948         - changed description of `set -h/set -o hashcmds', removed
2949           set -d/set -o nohash
2950
2951 bashline.c
2952         - changed command_word_completion_function to return matches if names
2953           are directories as well as if they are executable files
2954
2955 support/mksysdefs
2956         - look for `ranlib' in $PATH before searching the file system;
2957           look in /usr/gnu/bin for it; default to `:' if not found
2958
2959 general.c
2960         - change ansicstr to accept a second argument telling it whether to
2961           recognize \c and to pass back a non-zero value in it if \c is
2962           seen
2963
2964 general.h
2965         - changed extern declaration of ansicstr
2966
2967 subst.c
2968         - call ansicstr with an extra argument
2969
2970                                     1/3
2971                                     ---
2972 builtins/echo.def
2973         - rewrote to use ansicstr() with the new argument
2974
2975                                     1/4
2976                                     ---
2977 trap.c
2978         - changed instances of signal() to set_signal_handler() [in 1.14.4]
2979         - combined reset_signals and restore_signals into a single function,
2980           since they were essentially identical
2981
2982 subst.c
2983         - if set -u is set, references to the positional parameters now
2984           generate errors if that parameter is not set [in 1.14.4]
2985
2986 lib/*/Makefile, builtins/Makefile
2987         - since RANLIB can be just `ranlib', just try to run it without
2988           checking that the file exists [in 1.14.4]
2989
2990 builtins/set.def
2991         - changed `hashcmds' to `hashall'
2992
2993 documentation/{bash.1,features.texi}
2994         - changed `hashcmds' to `hashall'
2995
2996                                     1/5
2997                                     ---
2998 trap.c
2999         - make the loop that restores signal handlers run from signal 0 to
3000           make sure user subshells don't inherit traps on `exit' (to fix
3001           for 1.14.3, change restore_original_signals so that the loop
3002           starts from 0) [in 1.14.4]
3003
3004 variables.c
3005         - don't import exported function definitions at startup if the
3006           shell is restricted
3007
3008 builtins/source.def
3009         - don't allow use of pathname arguments containing `/' in a
3010           restricted shell
3011
3012 execute_cmd.c
3013         - when a shell is spawned to execute a shell script without a
3014           #! line, turn off the -r flag if the shell is restricted
3015
3016 shell.c
3017         - added a new long option `--restricted'
3018
3019 documentation/bash.1
3020         - added a section on the restricted shell, and documented the
3021           new `--restricted' long invocation option
3022
3023                                     1/7
3024                                     ---
3025 shell.c
3026         - when using bash -c command, make run_one_command return
3027           last_command_exit_value if a throw_to_top_level with value
3028           EXITPROG occurs [in 1.14.4]
3029
3030 print_cmd.c
3031         - make sure to initialize arg_index in the non-varargs implementation
3032           of cprintf [in 1.14.4]
3033
3034 jobs.c
3035         - don't try to change the state of the SIGCHLD handler before
3036           calling waitchld() from wait_for, since SIGCHLD is blocked
3037           while this code is executing [in 1.14.4]
3038
3039                                    1/11
3040                                    ----
3041 lib/readline/rltty.c
3042         - call control_keypad iff the value of a new variable,
3043           _rl_enable_keypad, is non-zero
3044
3045 lib/readline/bind.c
3046         - new readline variable `enable-keypad' to control whether readline
3047           tries to manipulate the application keypad
3048
3049 documentation/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo
3050         - documented new `enable-keypad' variable
3051
3052                                    1/12
3053                                    ----
3054 lib/readline/search.c
3055         - make sure to call rl_unix_word_rubout and rl_unix_line_discard
3056           with the correct arguments [in 1.14.4]
3057
3058 make_cmd.h
3059         - make sure make_select_command is declared even if SELECT_COMMAND
3060           is not defined
3061
3062 parse.y
3063         - make sure the \[ and \] escape sequences are not recognized if
3064           READLINE is not defined [in 1.14.4]
3065
3066 config.h
3067         - make sure HISTORY is defined if READLINE is; code moved here
3068           from bashhist.c [in 1.14.4]
3069
3070 bashhist.c
3071         - removed check for READLINE being defined without HISTORY; now
3072           in config.h
3073         - new function, bash_history_reinit
3074
3075 flags.h, flags.c, builtins/set.def
3076         - the -H/-o histexpand flag should be compiled into the shell
3077           only if BANG_HISTORY is defined [in 1.14.4]
3078
3079 subst.c
3080         - don't include sv_histchars unless BANG_HISTORY is defined
3081           [in 1.14.4]
3082         - if QUOTED is true in parameter_brace_expand_rhs, pre-process the
3083           word on the rhs of the parameter expansion by a call to
3084           string_extract_double_quoted with the STRIPDQ parameter set to 1
3085         - new arg for string_extract_double_quoted; causes it to strip
3086           double quotes and alter its backslash handling behavior; designed
3087           to be called from parameter_brace_expand_rhs
3088         - changed all other instances of string_extract_double_quoted to
3089           call it with STRIPDQ set to 0, to get old behavior
3090
3091 shell.c
3092         - call bash_history_reinit rather than manipulating history
3093           variables directly
3094
3095 variables.c
3096         - don't auto-export $BASH [in 1.14.4]
3097
3098 tests/rhs-exp.tests
3099         - new test script to check for behavior fixed by changes to
3100           string_extract_double_quoted and parameter_brace_expand_rhs
3101
3102 parse.y
3103         - `for' and `select' must now take non-empty lists between
3104           `in' and `;'
3105
3106                                    1/16
3107                                    ----
3108 subst.c
3109         - fixed string_quote_removal to do double-quoted string processing
3110           itself rather than call string_extract_double_quoted, which
3111           assumes that a call to expand_word_internal or the equivalent
3112           will follow immediately and leaves some backslashes in place,
3113           inappropriately for quote removal
3114
3115                                    1/23
3116                                    ----
3117 subst.c
3118         - make sure to set `temp' to NULL after it's freed by sub_append_string
3119           in expand_word_internal to keep it from pointing to newly-allocated
3120           memory that will be subsequently freed, causing a `memory freed
3121           twice' error [in 1.14.4]
3122
3123 trap.c
3124         - handle the EXIT_TRAP specially in reset_or_restore_signal_handlers,
3125           since in both cases we simply want to free up the trap string and
3126           mark the signal as not trapped
3127
3128 shell.h
3129         - added \n to the list of characters in slashify_in_double_quotes
3130
3131                                    1/26
3132                                    ----
3133 subst.c
3134         - make string_extract_single_quoted and string_extract_double_quoted
3135           `inline'
3136         - new function skip_single_quoted, used when we used to call
3137           string_extract_single_quoted and just throw the returned string
3138           away
3139         - new function skip_double_quoted for the same purpose
3140
3141                                    1/28
3142                                    ----
3143 subst.c
3144         - fixed expand_word_internal so that if an assignment word
3145           is expanded, no word splitting is performed [in 1.14.4]
3146
3147 builtins/ulimit.def
3148         - some systems lack RLIMIT_CPU; so `#ifdef' its use [in 1.14.4]
3149         - some versions of cpp expand parameters like \n if `n' is an
3150           argument to the macro; change `n' to `num' in the definition
3151           of print_rlimtype to compensate [in 1.14.4]
3152
3153 builtins/read.def
3154         - make sure the read loop sets `saw_escape' to note that an
3155           escape character was read if CTLESC or CTLNUL is read [in 1.14.4]
3156
3157 shell.c, sig.c
3158         - only test interactive_shell before calling maybe_save_shell_history
3159           [in 1.14.4]
3160 shell.c
3161         - include <locale.h> if HAVE_LOCALE_H is defined
3162         - call setlocale(LC_ALL, "") at the beginning of main() if
3163           either _POSIX_VERSION or HAVE_SETLOCALE is defined
3164
3165 support/mksysdefs
3166         - look for <locale.h>, define HAVE_LOCALE_H if found
3167
3168 cpp-Makefile
3169         - pass HAVE_LOCALE_H through from sysdefs.h to the build process
3170
3171 bashhist.c
3172         - remove test against interactive_shell in maybe_save_shell_history
3173           [in 1.14.4]
3174
3175 variables.c
3176         - moved definition of DEFAULT_MAIL_PATH to config.h
3177
3178 config.h, config.h.mini
3179         - now has definition of DEFAULT_MAIL_PATH [in 1.14.4]
3180         - changed default value of PATH to
3181           `/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:.'
3182           [in 1.14.4]
3183
3184 documentation/bash.1
3185         - updated the example of the default path in the description of
3186           the PATH variable
3187
3188 lib/readline/readline.c
3189         - set up a table of `legal' LC_CTYPE values and match the value of
3190           $LC_CTYPE against it when deciding whether or not to default to
3191           eight-bit input and output
3192         - check for LC_ALL, LC_CTYPE, and LANG, in that order, for names to
3193           check against the legal_lc_ctype_values table
3194
3195 lib/readline/bind.c
3196         - moved strindex, stricmp, and strnicmp to lib/readline/util.c, 
3197           added _rl_ prefix to names
3198         - some miscellaneous code cleanups and speedups
3199
3200 lib/readline/rldefs.h
3201         - define _POSIX_VDISABLE as _SVR4_VDISABLE if there is a define
3202           for the latter and not the former [in 1.14.4]
3203         - moved defining _rl_stricmp and _rl_strnicmp as strcasecmp and
3204           strncasecmp, respectively, here from bind.c, since the functions
3205           are now defined in util.c and used in two files
3206
3207 builtins/common.c
3208         - removed the \n case in double_quote, so a backslash is not added
3209           before an existing newline.  The \<newline> pair is removed by
3210           the parser before anything else in the shell gets hold of it
3211           except within single quotes [in 1.14.4]
3212
3213                                    1/30
3214                                    ----
3215 general.c
3216         - make sure the string index in canonicalize_pathname never goes
3217           < 0 (it can, in some cases, result in `start' being -1, and `i'
3218           being set to that) [in 1.14.4]
3219
3220                                     2/1
3221                                     ---
3222 execute_cmd.c
3223         - fix a typo in a call to `access' in AFS-specific code [in 1.14.4]
3224
3225                                     2/3
3226                                     ---
3227 builtins/shopt.def
3228         - finally added new `shopt' builtin
3229
3230 builtins/umask.def
3231         - converted to use builtin_getopt
3232
3233 bashhist.c
3234         - support for storing literal newlines in the history list when
3235           command_oriented_history is enabled, rather than using semicolons
3236
3237 builtins/Makefile
3238         - changed rule to make a .o file from a .def file to remove the
3239           .c file if the compilation fails
3240
3241                                     2/6
3242                                     ---
3243 bashhist.c
3244         - added new variable `force_append_history' that will force the
3245           history list to be appended to the history file at shell exit
3246         - new function, maybe_append_history, to append any history lines
3247           from the current session to the history file.  Used by history -a
3248
3249 builtins/bind.def
3250         - changed the `-d' option to -p
3251
3252 builtins/set.def
3253         - added `allenv' as a -o synonym for `set -k'.  Now all of the
3254           single-letter shell options have -o equivalents
3255
3256 builtins/shopt.def
3257         - added -p option to display shell options, like other builtins
3258         - added `interactive_comments' as a shell option, like set -o
3259
3260 builtins/bind.def, builtins/history.def, builtins/enable.def
3261         - changed use of multiple variables to hold option flag settings to
3262           one variable with bits representing flag values
3263
3264 documentation/bash.1, documentation/features.texi
3265         - changed the description of the `bind' builtin for the new -p option
3266         - changed the description of the `set' builtin for the new
3267           `-o allenv' option
3268         - updated the description of the `shopt' builtin
3269
3270 builtins/history.def
3271         - changed -a option to use maybe_append_history
3272
3273 subst.c
3274         - changed the substring/subarray code to make negative offsets
3275           count backwards from the end of the string or array
3276
3277 builtins/bashgetopt.c
3278         - added option modifiers `;' (argument is optional) and `#'
3279           (argument is optional, but if present must be numeric)
3280
3281 builtins/hash.def
3282         - converted to use builtin_getopt
3283         - broke code out into a new function: add_hashed_command
3284
3285                                     2/7
3286                                     ---
3287 builtins/getopt.c
3288         - changed to save state to avoid relying on `nextchar' staying the
3289           same across calls to sh_getopt [in 1.14.4]
3290         - added a function to restore `nextchar' from this saved state
3291           [in 1.14.4]
3292         - removed some dead code
3293
3294 builtins/getopts.def
3295         - call function to restore sh_getopt state when parsing explicitly
3296           supplied arguments rather than the positional parameters [in 1.14.4]
3297
3298 lib/readline/vi_mode.c
3299         - fixed an off-by-one error in _rl_vi_done_inserting that put the
3300           \0 in vi_insert_buf at offset `len' instead of `len - 1'
3301
3302 lib/readline/complete.c
3303         - print_filename now filters out control characters and displays
3304           them in printable format, rather than relying on the tty driver
3305           to do the right thing [in 1.14.4]
3306
3307                                     2/8
3308                                     ---
3309 lib/posixheaders/stdc.h
3310         - test for each special keyword being defined individually, rather
3311           than just testing on `const' [in 1.14.4]
3312
3313 lib/readline/util.c
3314         - new function _rl_abort_internal; rl_abort just calls this
3315
3316 nojobs.c
3317         - include error.h for extern function definitions [in 1.14.4]
3318
3319 builtins/ulimit.def
3320         - include <unistd.h> if HAVE_UNISTD_H is defined
3321         - use HAVE_LIMITS_H to decide whether or not to include <limits.h>
3322
3323 variables.c, subst.c, builtins/set.def
3324         - removed special handling of `noclobber' variable
3325
3326 builtins/set.def
3327         - new function set_shellopts to set up the $SHELLOPTS variable
3328           based on the values of the set -o options; `set' calls this
3329           function whenever one of the options is changed
3330         - new function parse_shellopts to take the value of SHELLOPTS and
3331           turn on each option found therein
3332         - new function initialize_shell_options to parse any inherited
3333           value of $SHELLOPTS and set up $SHELLOPTS
3334
3335 shell.c
3336         - call initialize_shell_options at the end of shell_initialize()
3337
3338 execute_cmd.c, general.c
3339         - moved extract_colon_unit from execute_cmd.c to general.c
3340
3341 execute_cmd.h, general.h
3342         - moved extern declaration of extract_colon_unit from
3343           execute_cmd.h to general.h
3344
3345 documentation/{bash.1,features.texi}
3346         - documented SHELLOPTS
3347
3348                                    2/18
3349                                    ----
3350 builtins/{shopt,pushd,jobs,umask}.def
3351         - removed the `longjobs', `longdirs', `pushd_home' and `symbolic_umask'
3352           options
3353
3354 lib/readline/{histexpand,histsearch,histfile}.c, lib/readline/histlib.h
3355         - new files, split off from old history library history.c
3356
3357 lib/readline/history.c, lib/readline/history.h
3358         - new function clear_history() to clear the history list
3359
3360 lib/readline/doc/hstech.texinfo
3361         - documented clear_history ()
3362
3363 builtins/pushd.def
3364         - new function clear_directory_stack() to delete all elements of
3365           the dir stack
3366         - new -c option for `dirs' to clear directory stack
3367         - new function get_dirstack_index for dirs -N and dirs +N to use
3368         - new function get_dirstack_element(i, dir) for use by other parts of
3369           the shell that want the functionality of dirs -N and dirs +N
3370           (dir is 1 for dirs +N, -1 for dirs -N)
3371         - new function set_dirstack_element(i, dir, val) for use by other
3372           parts of the shell to change values in the dirstack (dir is -1
3373           for dirs -N, +1 for dirs +N).  Used when assigning to $DIRSTACK.
3374
3375 builtins/history.def
3376         - new -c option to clear the history list
3377
3378 documentation/bash.1, documentation/features.texi
3379         - removed no-longer-valid shopt options
3380         - documented new dirs -c option
3381         - documented new history -c option
3382         - documented new \T and \H prompt escape sequences
3383         - documented new $DIRSTACK dynamic array variable
3384         - documented the new expand-glob and list-glob readline commands
3385
3386 variables.c
3387         - set PS4 to its default value of `+ ', so that unsetting it will
3388           disable the tracing characters [in 1.14.4]
3389         - new framework for dynamic array variables -- each place an
3390           array index is assigned to, a test is made.  if a dynamic
3391           assignment function exists, it is called with args `self',
3392           the index being assigned to, and the new value
3393         - new variable `$DIRSTACK', a dynamic array variable that holds
3394           the current contents of the directory stack.  You can even
3395           change the stack by assigning to thie variable
3396
3397 shell.c
3398         - changed indirection_level_string to return the null string if
3399           $PS4 is unset or null [in 1.14.4]
3400
3401 parse.y
3402         - new \H prompt escape for hostname up to first `.'; changed \h
3403           to return full hostname (like \w/\W)
3404         - new \T prompt escape for 12-hour time
3405
3406 bashline.c
3407         - new readline functions to expand glob patterns and insert or
3408           list the expansions (special completion functions)
3409
3410
3411                                    2/20
3412                                    ----
3413 builtins/pushd.def
3414         - new code for `pushd -n' and `popd -n' to inhibit cd when
3415           adding or removing directories from the stack
3416         - broke functionality off into separate functions for use by the
3417           $DIRSTACK manipulation functions
3418
3419                                    2/21
3420                                    ----
3421 lib/readline/kill.c
3422         - new functions to copy words to the kill ring, backward or
3423           forward
3424
3425 lib/readline/readline.h
3426         - extern declarations for rl_copy_{backward,forward}_word
3427
3428
3429 lib/readline/funmap.c
3430         - new bindable readline commands: copy-backward-word and
3431           copy-forward-word to copy portions of the line to the kill
3432           ring without deleting them
3433
3434 documentation/{bash.1,readline.3}, lib/readline/doc/hsuser.texinfo
3435         - documented the new copy-backward-word and copy-forward-word
3436           readline commands
3437
3438 mailcheck.c, config.h
3439         - the declaration of DEFAULT_MAIL_PATH is now only in config.h
3440           and used by mailcheck.c and variables.c.  There is no need to
3441           use DEFAULT_MAIL_PATH_LEN; `sizeof' does the job [in 1.14.4]
3442
3443                                    2/22
3444                                    ----
3445 support/mksysdefs
3446         - changes to fix `RELEASE' if it ends up being set to the empty string
3447           [in 1.14.4]
3448         - check for amdahl UTS [in 1.14.4]
3449         - check for SGI Irix version 6.x [in 1.14.4]
3450
3451 machines.h
3452         - new entry for Amdahl UTS [in 1.14.4]
3453         - changes to the SGI entry for Irix 6.x [in 1.14.4]
3454
3455                                    2/23
3456                                    ----
3457 machines.h
3458         - changes for BSD/OS 2.0 (M_OS now set to `BSD_OS') [in 1.14.4]
3459
3460 support/mksysdefs
3461         - change to recognize BSD/OS 2.0 and set SYSDEF to BSDI2 [in 1.14.4]
3462
3463 siglist.h
3464         - don't declare sys_siglist on BSD/OS 2.0 [in 1.14.4]
3465
3466                                    2/24
3467                                    ----
3468 parse.y
3469         - if reset_parser is called while the prompt command is being
3470           executed because of a syntax error in $PROMPT_COMMAND, an
3471           infinite loop results.  set token_to_read back to 0 at the
3472           end of execute_prompt_command to stop the looping [in 1.14.4]
3473
3474                                    2/25
3475                                    ----
3476 mailcheck.h
3477         - new header file for mail-checking and related definitions
3478         - declaration of DEFAULT_MAIL_PATH is now here
3479
3480 mailcheck.c
3481         - new function, make_default_mailpath, which constructs a default
3482           $MAILPATH string from DEFAULT_MAIL_PATH [in 1.14.4]
3483         - change remember_mail_dates to call make_default_mailpath
3484           [in 1.14.4]
3485
3486 externs.h
3487         - moved function declarations for functions in mailcheck.c to
3488           mailcheck.h
3489
3490 variables.c
3491         - change initialize_shell_variables to call make_default_mailpath
3492           [in 1.14.4]
3493         - removed some unneeded variables in initialize_shell_variables
3494
3495                                    2/26
3496                                    ----
3497 lib/readline/callback.c
3498         - new file with readline callback function interface
3499
3500 lib/readline/rlconf.h
3501         - new READLINE_CALLBACKS define for the readline callback code to
3502           be compiled in and available
3503
3504 lib/readline/readline.c
3505         - broke readline_internal into three functions: readline_internal_setup,
3506           readline_internal_charloop, and readline_internal_teardown
3507         - changes for READLINE_CALLBACKS
3508
3509 lib/readline/readline.h
3510         - extern declarations for the readline callback code
3511
3512 cpp-Makefile
3513         - added lib/readline/callback.c to the list of readline files
3514
3515 lib/readline/input.c
3516         - added a layer of indirection to allow the user to specify the
3517           function that reads a character from rl_instream.  The variable
3518           name is rl_getc_function, set by default to rl_getc
3519
3520                                    2/27
3521                                    ----
3522 lib/readline/display.c
3523         - added a variable rl_redisplay_function to allow an application-
3524           specified redisplay function, for those apps that want to control
3525           redisplay
3526
3527 lib/readline/readline.c
3528         - extern declarations for rl_getc_function and rl_redisplay_function
3529
3530 lib/readline/{readline,display,isearch,search,parens}.c
3531         - changed to call through rl_redisplay_function rather than
3532           rl_redisplay directly
3533
3534 parse.y
3535         - try to avoid some work in reset_readline_prompt and prompt_again
3536           if the prompt is the empty or null string [in 1.14.4]
3537
3538 lib/readline/readline.c
3539         - call rl_expand_prompt unconditionally [in 1.14.4]
3540
3541 lib/readline/display.c
3542         - short-circuit out of rl_expand_prompt if the prompt string is null
3543           after clearing out the saved local prompt values.  This allows
3544           $PS2 to be set to "" [in 1.14.4]
3545
3546 lib/readline/doc/rltech.texinfo
3547         - documented the callback code and functions
3548         - documented rl_getc_function and rl_redisplay_function
3549
3550 lib/readline/{callback,readline,rltty,signals}.c
3551         - added layer of indirction for terminal prep and deprep, with
3552           rl_term_prep_function and rl_term_deprep_function.  These are
3553           set by default to rl_prep_terminal and rl_deprep_terminal,
3554           respectively
3555
3556 lib/readline/readline.h
3557         - make rl_term_prep_function and rl_term_deprep_function available
3558           to callers
3559
3560                                     3/1
3561                                     ---
3562 lib/readline/complete.c
3563         - broke the (long, complicated) rl_complete_internal code into a
3564           number of separate functions:
3565
3566                 find_completion_word
3567                 gen_completion_matches
3568                 remove_duplicate_matches
3569                 display_matches
3570                 insert_text
3571                 insert_match
3572                 append_to_match
3573                 insert_all_matches
3574
3575         - made some efficiency improvments to filename_completion_function
3576         - the completion ignore function is now called no matter what type
3577           of completion is being performed (as it should have been all along)
3578
3579 lib/readline/rldefs.h
3580         - use #defines for the possible values ORed into `found_quote' by
3581           the completion code
3582
3583                                     3/2
3584                                     ---
3585 make_cmd.c, general.c
3586         - moved make_word_array from make_cmd.c to general.c, renamed to
3587           word_list_to_argv, extended it to optionally not malloc all of
3588           the strings and to reserve space at the start of the array
3589
3590 execute_cmd.c
3591         - changed to use word_list_to_argv, not mallocing space for the
3592           strings
3593
3594 builtins/common.c, builtins/common.h
3595         - new function make_builtin_argv, which uses word_list_to_argv
3596           and reserves 1 slot at the beginning for the command name
3597
3598 builtins/exec.def
3599         - changed to use word_list_to_argv
3600
3601 builtins/{getopts,test}.def
3602         - changed to use make_builtin_argv
3603
3604 subst.c
3605         - new function match_pattern_char, to see if the first char of
3606           a string has a chance to match a given pattern (test against
3607           the first char of the pattern); used by match_pattern in the
3608           MATCH_ANY case
3609
3610                                     3/3
3611                                     ---
3612 jobs.c
3613         - renamed flush_child to sigchld to capture the functionality better
3614
3615 array.c
3616         - new function array_pat_subst, to do pattern substitution on each
3617           element in an array
3618
3619 array.h
3620         - extern declaration for array_pat_subst
3621
3622 subst.c
3623         - new function pat_subst to do pattern matching and substitution on
3624           a string
3625         - new function parameter_brace_pat_subst to implement
3626           ${v/[/]pat[/sub]}; calls pat_subst for simple vars,
3627           pos_params_pat_subst to do substitution on the positional params,
3628           and array_pat_subst for things like ${v[@]/p/r}
3629
3630 subst.h
3631         - extern declaration for pat_subst so array.c can find it
3632
3633                                     3/6
3634                                     ---
3635 parse.y
3636         - <>filename now dups filename to file descriptor 0 for both input
3637           and output even when not in posix.2 mode
3638
3639 bashline.c
3640         - add the globbing characters to the list of characters that need
3641           to be quoted by filename completion
3642
3643 jobs.h
3644         - new convenience macros:
3645                 RUNNING, STOPPED, DEADJOB - to test a job's state
3646                 IS_FOREGROUND, IS_NOTIFIED, IS_JOBCONTROL - flags
3647
3648 jobs.c, builtins/{kill,fg_bg}.def
3649         - changed to use new jobs.h macros
3650
3651                                     3/7
3652                                     ---
3653 array.c, array.h
3654         - new function dup_array_subrange(a, s, e) to make a new array
3655           out of the elements of array A between S and E, inclusive
3656         - add `quoted' parameters to array_subrange and array_pat_subst
3657           to preserve proper quoting of elements when expanding things
3658           like "${av[@]/xx/yy}"
3659         - new function array_quote to quote the members of an array like
3660           the functions in subst.c
3661
3662 subst.c
3663         - pass the quoted flag to array_subrange and array_pat_subst
3664         - quote_string is no longer static
3665
3666 subst.h
3667         - extern declaration for quote_string
3668
3669 builtins/hash.def
3670         - added a -p pathname option to specify a pathname for the command
3671           name to be hashed.  With -p, no path search is performed.
3672
3673 lib/readline/histexpand.c
3674         - broke history_tokenize off into history_tokenize_internal and
3675           added two arguments: a character index and a word index.  If
3676           the char index is >= 0, the word index will be modified to point
3677           into the returned array of strings to the word surrounding that
3678           particular character index
3679         - new function history_find_word(line, ind) to return the word 
3680           containing the character at index IND in LINE
3681         - new variable search_match, found by history_find_word, to hold the
3682           word last matched by a !?string? search
3683         - corrected a problem with the `%' modifier: it should insert the
3684           word last matched, not the last search string
3685
3686                                     3/8
3687                                     ---
3688 cpp-Makefile
3689         - changed INSTALL_PROGRAM and INSTALL_DATA to use support/install.sh
3690         - changed `install' target to not explicitly save the old version of
3691           bash in `bash.old'; let install take care of it
3692
3693 shell.c
3694         - new static variable `running_under_emacs', set to 1 if the
3695           variable `EMACS' is in the startup environment, and to 2 if
3696           we're running under the `eterm' terminal emulator
3697         - send an escape sequence to eterm if running_under_emacs is 2
3698           after executing any $PROMPT_COMMAND to tell it the current
3699           directory
3700
3701                                     3/9
3702                                     ---
3703 builtins/ulimit.def
3704         - made getting -u work for systems that have a MAXUPRC define.
3705           it still cannot be set without RLIMIT_NPROC
3706
3707 shell.c
3708         - include trap.h for sig definitions
3709
3710 builtins/common.h, subst.h, general.h, externs.h
3711         - more extern function declarations
3712
3713 bashhist.c
3714         - new function, bash_history_disable(), to turn off history and
3715           history expansion
3716         - bash_history_disable now sets history_expansion_inhibited
3717
3718 bashline.h
3719         - new file with extern declarations from bashline.c
3720
3721 parse.y, bashhist.c, builtins/bind.def, subst.c, sig.c
3722         - include bashline.h
3723
3724                                    3/10
3725                                    ----
3726 lib/glob/glob.h
3727         - new file with extern declarations for local glob library
3728
3729 shell.c
3730         - include glob.h, mailcheck.h
3731
3732 cpp-Makefile
3733         - changes to dependencies due to mailcheck.h, bashline.h, glob.h
3734
3735                                    3/13
3736                                    ----
3737 execute_cmd.c
3738         - new function execute_connection to execute commands of type
3739           cm_connection
3740         - new function execute_pipeline, to execute pipelines
3741
3742 lib/readline/rltty.c
3743         - add a `tty' argument to the set_winsize function/macro, the
3744           non-shell version needs it
3745
3746                                    3/14
3747                                    ----
3748 parse.y
3749         - added \a (bell) and \e (escape) prompt string escape sequences
3750
3751                                    3/16
3752                                    ----
3753 lib/readline/display.c
3754         - fixed bug in update_line that caused stray characters to be left on
3755           lines after the first if characters are deleted so that the first
3756           line becomes exactly as long as the screen width [in 1.14.4]
3757
3758 lib/readline/doc-support
3759         - brought in the GNU getopt because texindex needs it
3760
3761 documentation/Makefile
3762         - adopted the BSD convention of a suffix of `.0' for formatted
3763           manual pages
3764
3765                                    3/17
3766                                    ----
3767 support/inpath
3768         - a script to find out if a particular command name appears in
3769           a directory in $PATH [in 1.14.4]
3770
3771 support/mksysdefs
3772         - changed to use inpath to find `ranlib' [in 1.14.4]
3773
3774                                    3/18
3775                                    ----
3776 bashline.c
3777         - include bashline.h
3778         - removed the DYNAMIC_HISTORY_COMPLETION define; that code is now
3779           included unconditionally
3780         - renamed ETCHOSTS to DEFAULT_HOSTS_FILE; moved definition to
3781           bashline.h
3782         - moved definition of BRACE_COMPLETION to config.h
3783
3784 config.h
3785         - conditional definition of BRACE_COMPLETION is now here
3786
3787 pathnames.h
3788         - new file with defines that are absolute pathnames
3789
3790 shell.h
3791         - include pathnames.h
3792
3793 mailcheck.h
3794         - def of DEFAULT_MAIL_PATH now moved to pathnames.h
3795
3796 shell.c
3797         - def of SYS_PROFILE moved to pathnames.h
3798
3799 alias.h
3800         - removed a bunch of extra definitions
3801
3802 lib/readline/{vi_mode.c,bind.c}
3803         - removed superfluous STATIC_MALLOC code
3804
3805 variables.c
3806         - removed SHADOWED_ENV code
3807
3808                                    3/20
3809                                    ----
3810 machines.h
3811         - don't define USG or USGr3 for linux machines [in 1.14.4]
3812         - change REVERSED_SETVBUF_ARGS to SETVBUF_REVERSED for autoconf
3813           compatibility
3814
3815 shell.c
3816         - change REVERSED_SETVBUF_ARGS to SETVBUF_REVERSED for autoconf
3817           compatibility
3818
3819 support/mksysdefs, maxpath.h
3820         - change HAVE_SYS_PARAM to HAVE_SYS_PARAM_H for autoconf
3821           compatibility
3822
3823 support/mksysdefs, jobs.h
3824         - use HAVE_SYS_WAIT_H
3825
3826 machines.h, error.c
3827         - change HAVE_VFPRINTF to HAVE_VPRINTF for autoconf compatibility
3828
3829 test.c
3830         - replace UID_T and GID_T with GETGROUPS_T, the size of the elements
3831           of the array returned by getgroups
3832
3833 general.c
3834         - define HAVE_KILLPG if killpg() is present; compile in a replacement
3835           killpg if not
3836
3837 machines.h, jobs.c
3838         - change BSD_GETPGRP to HAVE_BSD_PGRP
3839
3840 sig.c
3841         - don't call initialize_siglist if HAVE_SYS_SIGLIST is defined, no
3842           longer use INITIALIZE_SIGLIST
3843
3844 machines.h, lib/malloc/malloc.c
3845         - change NO_SBRK_DECL to SBRK_DECLARED
3846
3847                                    3/22
3848                                    ----
3849 machines.h
3850         - BSD/OS 2.0 does not need INT_GROUPS_ARRAY in SYSDEP_CFLAGS
3851
3852 lib/readline/rldefs.h
3853         - don't check `Linux'; just include <termcap.h> if HAVE_TERMCAP_H
3854           is defined
3855
3856 builtins/command.def
3857         - changed get_standard_path to use HAVE_CONFSTR 
3858
3859 execute_cmd.c
3860         - execute_simple_command no longer uses alloca
3861         - don't check RISC6000 anymore when deciding whether to use
3862           #pragma alloca
3863
3864 execute_cmd.c, shell.c
3865         - check for ultrix instead of Ultrix when calling alloca(0)
3866
3867 jobs.h
3868         - check HAVE_UNISTD_H to see whether to declare fork, getpid,
3869           and getpgrp
3870
3871 builtins/common.c
3872         - include <signal.h> for NSIG
3873
3874 sig.h
3875         - don't define SIGABRT as SIGIOT unless SIGIOT is defined
3876
3877 jobs.c
3878         - check for ultrix instead of Ultrix
3879
3880                                    3/23
3881                                    ----
3882 general.c, general.h
3883         - new function check_dev_tty, which makes sure we can open
3884           /dev/tty
3885
3886 shell.c
3887         - call check_dev_tty instead of having the code inline
3888
3889 posixstat.h
3890         - removed references to isc386
3891
3892 general.h
3893         - code to define one of TERMIOS_TTY_DRIVER, TERMIO_TTY_DRIVER,
3894           or NEW_TTY_DRIVER
3895
3896 jobs.c, nojobs.c
3897         - use the general.h code to define the tty driver types
3898
3899                                    3/24
3900                                    ----
3901 builtins/declare.def
3902         - new -p option to display variables and their values and attributes
3903           `declare -p xxx' displays attribs and value of var `xxx'
3904
3905 builtins/setattr.def
3906         - new function to display the attributes and value of a particular
3907           variable; used by set_or_show_attributes
3908         - new function to look up a variable by name and show that name's
3909           attributes and value
3910
3911 builtins/common.c
3912         - declarations for new functions in setattr.def
3913
3914 variables.c
3915         - don't set a default value for MAILPATH in initialize_shell_variables;
3916           let remember_mail_dates take care of it [in 1.14.4]
3917
3918 mailcheck.c
3919         - fixed an off-by-one bug in make_default_mailpath [in 1.14.4]
3920
3921                                    3/28
3922                                    ----
3923 [changes for autoconf-generated config files]
3924
3925 lib/malloc/malloc.c
3926         - use HAVE_GETPAGESIZE, HAVE_BSD_SIGNALS, HAVE_POSIX_SIGNALS
3927
3928 trap.c
3929         - remove tests for USG and USGr4
3930         - test on HAVE_POSIX_SIGNALS rather than _POSIX_VERSION
3931         - use MUST_REINSTALL_SIGHANDLERS define to decide whether trap_handler
3932           should call signal again
3933
3934 getcwd.c
3935         - redid the directory includes for autoconf compatibility
3936         - use HAVE_LSTAT instead of testing for S_ISLNK
3937         - use STRUCT_DIRENT_HAS_D_INO
3938         - include memalloc.h for alloca define
3939
3940 general.h
3941         - cleaned up strchr, strrchr definitions
3942         - removed tests against USG
3943         - use HAVE_MEMMOVE instead of MEMMOVE_MISSING
3944
3945 jobs.c
3946         - use HAVE_WAIT3, MUST_REINSTALL_SIGHANDLERS, GETPGRP_VOID
3947
3948 mailcheck.h
3949         - removed definition of DEFAULT_MAIL_DIRECTORY; now set by
3950           autoconf in config.h
3951
3952 shell.c
3953         - remove checks on USG, just check for HAVE_GETPW_DECLS
3954         - use C_ALLOCA define
3955         - redid the isnetconn() code using HAVE_SYS_SOCKET_H,
3956           HAVE_GETPEERNAME, SVR4 and SVR4_2
3957
3958 general.c
3959         - use HAVE_KILLPG, HAVE_RESTARTABLE_SYSCALLS, HAVE_UNAME,
3960           ULIMIT_MAXFDS, HAVE_TIMEVAL, HAVE_TIMES
3961
3962 lib/readline/rldefs.h
3963         - redid the tty driver definitions using HAVE_TERMIOS_H, etc.
3964         - don't define anything having to do with signal type
3965
3966 lib/glob/glob.c
3967         - redid the DIRENT defines and includes
3968         - redid other includes to remove dependencies on USG and system
3969           type (e.g., NeXT)
3970
3971 builtins/times.def
3972         - changed to use HAVE_GETRUSAGE, HAVE_TIMEVAL, HAVE_TIMES, and
3973           the autoconf way to include <sys/time.h> and <time.h>
3974
3975 builtins/ulimit.def
3976         - changed to use HAVE_GETRLIMIT
3977         - removed test of USG being defined
3978
3979 siglist.h
3980         - changed to use SYS_SIGLIST_DECLARED, HAVE_UNDER_SYS_SIGLIST, and
3981           HAVE_STRSIGNAL
3982
3983 print_cmd.c
3984         - use PRINTF_DECLARED
3985
3986 builtins/command.def
3987         - use HAVE_CONFSTR along with _CS_PATH to get the standard path
3988
3989 execute_cmd.c
3990         - only compile in execute_shell_script if HAVE_HASH_BANG_EXEC is not
3991           defined
3992
3993 nojobs.c
3994         - use HAVE_SIGINTERRUPT, HAVE_KILLPG, HAVE_POSIX_SIGNALS,
3995           MUST_REINSTALL_SIGHANDLERS, HAVE_WAITPID, *_TTY_DRIVER defines
3996
3997 test.c
3998         - set up a new `getmaxgroups' define, moving the code out of inline
3999         - eliminate use of GETGROUPS_T
4000
4001 variables.c
4002         - use CAN_REDEFINE_GETENV
4003
4004 sig.c, sig.h
4005         - use HAVE_POSIX_SIGNALS, MUST_REINSTALL_SIGHANDLERS
4006
4007 pathnames.h
4008         - removed the default mail directory defines; now set by autoconf
4009
4010 oslib.c
4011         - new file, functions from general.c that are unix-version variable
4012
4013 general.h
4014         - slightly changed function declarations for use by oslib.c
4015
4016 support/bashbug.sh
4017         - changed @xxx@ to !xxx! for sed substitutions to avoid conflicts
4018           with autoconf substitutions in the Makefile
4019         - added MACHTYPE variable
4020
4021 mailcheck.c
4022         - changed DEFAULT_MAIL_PATH to DEFAULT_MAIL_DIRECTORY, since that
4023           more clearly defines its function
4024
4025 lib/readline/rltty.h
4026         - new file, to include the correct tty driver #include file
4027
4028 lib/readline/rltty.c
4029         - include rltty.h
4030
4031 lib/malloc/malloc.c
4032         - make systems with Posix signals block all signals while malloc
4033           is executing
4034
4035                                    3/29
4036                                    ----
4037 input.c
4038         - use off_t as the type of a seek offset, rather that int or long
4039
4040 variables.c, oslib.c
4041         - moved `getenv' from variables.c to oslib.c
4042
4043                                    3/31
4044                                    ----
4045 sig.c, sig.h
4046         - new function, jump_to_top_level, which just calls longjmp with
4047           top_level as an argument -- here to isolate calls to longjmp
4048
4049 subst.c
4050         - replaced calls to longjmp with jump_to_top_level
4051
4052 bashjmp.h
4053         - new file with setjmp/longjmp defines and declarations
4054
4055 shell.h, nojobs.c
4056         - include bashjmp.h in place of setjmp.h
4057
4058 shell.c, sig.c, execute_cmd.c, unwind_prot.h, expr.c,
4059 builtins/{return,source}.def
4060         - change to use new defs in bashjmp.h
4061
4062 subst.c
4063         - make sure PAT and REP in pattern substitution are run through
4064           expand_string_unsplit
4065
4066 builtins/set.def
4067         - don't try to blindly dereference the value returned by
4068           find_flags in set_shellopts
4069
4070                                     4/2
4071                                     ---
4072 aclocal.m4, config.h.in, config.h.top, config.h.bot, configure.in,
4073 support/install.sh, support/config.guess, support/config.sub
4074         - new files for (now official) autoconf-based configuration
4075
4076 Makefile.in, builtins/Makefile.in,
4077 lib/{doc-support,malloc,glob,termcap,tilde,readline}/Makefile.in
4078         - new Makefiles for autoconf
4079
4080 [additionally, all source files now include config.h]
4081
4082                                     4/3
4083                                     ---
4084 array.c, array.h
4085         - index_t --> arrayind_t, because some systems define index_t in
4086           <sys/types.h>
4087
4088                                     4/4
4089                                     ---
4090 aclocal.m4
4091         - fix test for broken dup2
4092
4093 lib/*/Makefile.in
4094         - make all object files depend on $(BUILD_DIR)/config.h
4095
4096                                     4/5
4097                                     ---
4098 array.c
4099         - fixed problems in empty_array: need to reset max_index
4100           and max_size, and remove the links in the element chain
4101           after freeing them
4102
4103 jobs.c
4104         - new functions to save an array of status values for each
4105           foreground job that exits (degenerate case is to have a
4106           single-process job exit and have a 1-element array)
4107         - new function to set a shell array variable `PIPESTATUS'
4108           which holds the status values from each member of the
4109           last-executed pipeline that spawned children
4110
4111 documentation/bash.1
4112         - documented $PIPESTATUS
4113
4114                                     4/6
4115                                     ---
4116 configure.in
4117         - added new --with-afs argument to #define AFS for execute_cmd.c
4118
4119                                    4/10
4120                                    ----
4121 builtins/ulimit.def
4122         - use sysconf(_SC_CHILD_MAX) to find the maximum number of child
4123           proceeses per user if HAVE_SYSCONF and _SC_CHILD_MAX are both
4124           defined and RLIMIT_NPROC is not
4125
4126                                    4/12
4127                                    ----
4128 lib/readline/undo.c
4129         - new variable, local to library, to keep track of the number of
4130           `open' undo groups (UNDO_BEGIN without corresponding UNDO_END)
4131         - new function _rl_fix_last_undo_of_type to modify start and end
4132           bounds of last undo record of a specified type
4133
4134 lib/readline/vi_mode.c
4135         - _rl_vi_done_inserting now calls rl_end_undo_group if the count
4136           of unclosed groups is > 0
4137         - fixed rl_vi_change_to to save an undo record when redoing and
4138           to fix the buffer corruption when doing `u' undo after a `.'
4139           redo of `C'
4140
4141                                    4/13
4142                                    ----
4143 unwind_prot.h
4144         - changed to use a union { char *s; int i; } when unwind-protecting
4145           integers to force correct alignment on machines where ints and
4146           pointers differ in size
4147
4148 lib/readline/readline.c
4149         - new variable Keymap rl_executing_keymap, which is set to the
4150           keymap the last function was invoked out of
4151
4152 lib/readline/bind.c
4153         - new variable Keymap rl_binding_keymap, which is set to the last
4154           keymap a function and key sequence were bound in
4155
4156                                    4/17
4157                                    ----
4158 general.c
4159         - removed xmalloc, xrealloc, xfree to xmalloc.c
4160
4161 lib/malloc/Makefile.in
4162         - MALLOC and ALLOCA are both set by autoconf
4163         - need to provide some empty stub file to make up the library
4164           in case neither malloc.c and alloca.c are compiled into the
4165           shell
4166
4167 lib/malloc/gmalloc.c
4168         - new file, GNU libc malloc code
4169
4170 Makefile.in
4171         - new source file, xmalloc.c, new object file, xmalloc.o
4172
4173 general.h
4174         - changed type of size argument to xmalloc, xrealloc to `size_t'
4175
4176 configure.in
4177         - changes for new argument `--with-glibc-malloc' that includes
4178           gmalloc.o in libmalloc.a
4179
4180                                    4/18
4181                                    ----
4182 xmalloc.c
4183         - if malloc or realloc return null, report in the error message
4184           how many bytes have been allocated
4185
4186 lib/readline/display.c
4187         - changed redisplay code to use an array of positions in the visible
4188           and invisible lines at which to break lines instead of simply
4189           calculating based on the screenwidth and number of invisible
4190           characters.  In the future, this will allow newlines embedded in
4191           the lines to display to be handled better
4192
4193 [Bash-1.14.4 released to net]
4194
4195                                    4/19
4196                                    ----
4197 lib/readline/signals.c
4198         - changed last call to signal() to call rl_set_sighandler()
4199
4200                                    4/20
4201                                    ----
4202 lib/readline/display.c
4203         - changed some ascii-specific code to use CTRL_CHAR and UNCTRL
4204         - finished up the changes that keep an array of line breaks
4205
4206 shell.h
4207         - moved #define constants for parameter pattern substitution here
4208           from subst.c
4209
4210 subst.c
4211         - changed the pattern substitution functions to take a `flags'
4212           parameter, which subsumes the match type, global replacement
4213           flag, and quoted variables
4214         - changed the pattern substitution functions to handle the `#'
4215           and `%' match qualifiers, which anchor the match at the
4216           beginning and end of the string, respectively
4217
4218 shell.c
4219         - moved the code that turns off privileged mode into a function
4220           named `disable_priv_mode'
4221         - if the shell is running setuid or setgid and `-p' is not
4222           supplied, turn off privileged mode and reset the effective
4223           uid/gid
4224
4225                                    4/21
4226                                    ----
4227 subst.c
4228         - added a `quoted' paramter to parameter_brace_remove_pattern;
4229           Posix.2 says that the pattern is parsed differently if the
4230           entire expression is double-quoted
4231         - `getpattern' now takes a second argument, `quoted'
4232         - fixed `getpattern' to correctly handles a pattern spec when
4233           the whole expression is double-quoted.  Posix.2 says that
4234           quote characters inside the pattern spec don't quote any
4235           special pattern chars if the whole thing is double-quoted.
4236           For example, the `*' in "${foo#'*'}" is not quoted, and the
4237           single quotes must appear literally.
4238
4239 Makefile.in
4240         - add `documentation' as a dependency of `.made'
4241
4242                                    4/24
4243                                    ----
4244 Makefile.in
4245         - added `installdirs' target that makes bindir, infodir, mandir,
4246           and man3dir [in 1.14.5 cpp-Makefile]
4247
4248                                    4/25
4249                                    ----
4250 builtins/fc.def
4251         - fixed problem with `fc -l' that occurred when fewer than 16 lines
4252           were in the history list [in 1.14.5]
4253
4254                                     5/1
4255                                     ---
4256 Makefile.in, {builtins,documentation}/Makefile.in, lib/*/Makefile.in
4257         - fixed up the various `clean' targets to agree with Gnu coding
4258           standards
4259
4260                                     5/2
4261                                     ---
4262 lib/readline/complete.c
4263         - made insert_all_matches correctly quote each of the filenames
4264           inserted into the line, if necessary
4265
4266 config.h.top
4267         - surround definitions of DEFAULT_PATH_VALUE and STANDARD_UTILS_PATH
4268           with #ifndef/#endif to allow them to be overridden from the command
4269           line
4270
4271 builtins/set.def
4272         - changed set -o allenv to set -o keyword for ksh88 compatibility
4273
4274 documentation/{bash.1,features.texi}
4275         - changed set -o allenv to set -o keyword
4276
4277 builtins/setattr.def
4278         - added a `nodefs' attribute to set_or_show_attributes,
4279           show_var_attributes, and show_name_attributes to inhibit printing
4280           of definition as well as name
4281
4282 builtins/declare.def
4283         - changed calls to set_or_show_attributes, and show_var_attributes
4284           accordingly
4285
4286                                     5/3
4287                                     ---
4288 Makefile.in
4289         - LIBPATH -> LIBSUBDIR
4290
4291                                     5/4
4292                                     ---
4293 lib/readline/bind.c
4294         - renamed readline variable meta-flag to be input-meta
4295
4296 documentation/bash.1, lib/readline/doc/rluser.texinfo
4297         - changed meta-flag to input-meta
4298
4299 documentation/Makefile.in
4300         - use groff -Tascii to convert .1 -> .0
4301
4302 subst.c
4303         - new function, strip_trailing_ifs_whitespace, does the obvious
4304
4305 builtins/read.def
4306         - call strip_trailing_ifs_whitespace before assigning last
4307           variable to remainder of input string [in 1.14.5]
4308
4309                                     5/5
4310                                     ---
4311 builtins/hashcom.h
4312         - changed check_dot member of the PATH_DATA struct to flags, and
4313           added a HASH_CHKDOT define to replace the check_dot semantics
4314         - add HASH_RELPATH define for flags value
4315
4316 builtins/hash.def, builtins/common.c
4317         - instead of xxx->check_dot, use (xxx->flags & HASH_CHKDOT)
4318
4319 builtins/hash.def
4320         - if the full pathname to which a command is being hashed does
4321           not begin with a `/', set the HASH_RELPATH flag for it
4322
4323 builtins/common.c
4324         - if a hashed filename as HASH_RELPATH set, check ./filename,
4325           returning null if that filename is not executable
4326
4327 execute_cmd.c, general.c, execute_cmd.h, general.h
4328         - moved same_file and check_binary_file from execute_cmd.c to
4329           general.c
4330
4331 hashlib.c, Makefile.in
4332         - renamed hash.c to hashlib.c
4333
4334 hashlib.h, Makefile.in, builtins/Makefile.in, alias.h, variables.h,
4335 execute_cmd.c, hashlib.c, builtins/hashcom.h
4336         - renamed hash.h to hashlib.h
4337
4338 variables.c, alias.c
4339         - removed inclusion of `hash.h'; header files already include
4340           correct file
4341
4342 Makefile.in
4343         - new rule to remake all the Makefiles (`make Makefiles')
4344         - more changes to adhere to GNU coding standards for the various
4345           flavors of `clean' targets
4346
4347                                     5/8
4348                                     ---
4349 documentation/Makefile.in
4350         - use `texi2dvi' to make dvi files rather than tex and texindex
4351           [in 1.14.5]
4352         - don't install `bash_builtins.1' [in 1.14.5]
4353
4354 Makefile.in
4355         - removed instances of doc-support/texindex
4356
4357                                     5/9
4358                                     ---
4359 make_cmd.c
4360         - new function make_bare_word, to make a WORD_DESC from a string but
4361           not to set any of its flags
4362         - broke make_word into make_bare_word and make_word_flags
4363         - fixed a bug in make_word_flags to make backslash-quoting a quoting
4364           character work right to not set the W_QUOTED flags
4365
4366 subst.c, array.c, execute_cmd.c
4367         - call make_bare_word instead of make_word in situations where we
4368           don't want the flags set inadvertently
4369
4370                                    5/11
4371                                    ----
4372 subst.c
4373         - removed special handling of $POSIX_PEDANTIC
4374
4375                                    5/12
4376                                    ----
4377 shell.c
4378         - broke the code that fetches the uids and gids into a new
4379           function, uidget()
4380
4381 subst.c
4382         - EUID and UID are no longer handled specially, since they're
4383           readonly
4384         - removed sv_uids function
4385         - merge sv_histfilesize into sv_histsize
4386
4387 variables.c
4388         - instead of calling sv_uids from initialize_shell_variables,
4389           call uidset() instead
4390         - sv_uids -> uidset with mods to make it faster and avoid an
4391           extra call to free, malloc, and itos
4392
4393 bashhist.c
4394         - call sv_histsize instead of sv_histfilesize
4395
4396                                    5/13
4397                                    ----
4398 pathexp.c
4399         - moved setup_ignore_patterns here from bashline.c, so GLOBIGNORE
4400           works even when readline is compiled out of the shell
4401         - changed the ignore data structure to a `struct ignorevar',
4402           defined in pathexp.h
4403         - added functions to implement GLOBIGNORE
4404
4405 bashline.c
4406         - setup_ignore_patterns now in pathexp.c
4407         - renamed _ignore_names to ignore_completion_names
4408
4409 subst.c
4410         - new function sv_globignore to be called when GLOBIGNORE changes
4411           value
4412
4413 documentation/{bash.1,features.texi}
4414         - documented GLOBIGNORE
4415
4416                                    5/15
4417                                    ----
4418 documentation/texinfo.tex
4419         - upgraded to version 2.145 from autoconf-2.3 distribution
4420
4421                                    5/16
4422                                    ----
4423 lib/readline/display.c
4424         - delicate surgery on rl_redisplay, update_line, and _rl_update_final
4425           to convert to using the line breaks array instead of assuming that
4426           lines wrap because they're too long and using absolute buffer
4427           positioning calculated from the screen width.  Now the `lithist'
4428           shopt option works right
4429
4430 lib/readline/complete.c
4431         - make sure insert_match doesn't double an opening quote character
4432           after make_quoted_replacement adds an opening quote [in 1.14.5]
4433         - make sure append_match doesn't double a closing quote character
4434           [in 1.14.5]
4435
4436 quit.h
4437         - new macros: SETINTERRUPT, CLRINTERRUPT, ADDINTERRUPT, DELINTERRUPT
4438           to manipulate the value of interrupt_state
4439
4440 trap.c, sig.c, jobs.c
4441         - changes to use the new macros from quit.h
4442
4443 jobs.c
4444         - make an a job that exits due to SIGINT make the shell act as if
4445           it received the interrupt itself, but only if SIGINT is not
4446           trapped [in 1.14.5]
4447
4448                                    5/18
4449                                    ----
4450 builtins/common.c
4451         - fix up find_hashed_filename and the HASH_RELPATH code.  still need
4452           to use `shopt -s checkhash' to check the hashed pathnames.  could
4453           fix this up more to make that unnecessary in the HASH_RELPATH case
4454
4455 subst.c
4456         - new function get_array_value that does array subscripting for
4457           things like aa[1], for use by other parts of the shell like the
4458           expression evaluator
4459
4460 expr.c
4461         - changes to make things like $(( aa[1] + aa[2])) work without
4462           using ${aa[1]}
4463
4464 bashhist.c
4465         - converted the HISTIGNORE code to use the `struct ignorevar'
4466           framework, with a callback function histignore_item_func to
4467           set the HIGN_EXPAND flag if needed
4468
4469 pathexp.c
4470         - made the `globignore' variable static
4471         - redid the code that removes ignored names from the `names' array
4472           in ignore_globbed_names to make it more efficient
4473
4474 bashline.c
4475         - made the `fignore' variable static
4476
4477                                    5/20
4478                                    ----
4479 Makefile.in
4480         - made the `distclean' target remove the Makefiles in subdirectories
4481           created by autoconf
4482
4483                                    5/22
4484                                    ----
4485 builtins/command.def
4486         - don't allow `command -p' if the shell is restricted
4487
4488 documentation/bash.1
4489         - documented the restriction on command -p for rbash
4490
4491                                    5/23
4492                                    ----
4493 aclocal.m4
4494         - add a new macro BASH_CHECK_TYPE, based on AC_CHECK_TYPE, that
4495           allows the caller to specify the header files to be included
4496           in the test program and provides for a default value to be
4497           defined if the type is found in the system files
4498
4499 configure.in
4500         - check for getrusage and gettimeofday functions/syscalls
4501         - use BASH_CHECK_TYPE to check for clock_t in sys/types.h and
4502           sys/times.h
4503         - use BASH_CHECK_TYPE to check for sigset_t instead of a special
4504           BASH_TYPE_SIGSET_T
4505         - use BASH_CHECK_TYPE to check for quad_t instead of BASH_QUAD_T
4506         - new argument --enable-command-timing to compile in the `time'
4507           reserved word and command timing
4508
4509 general.c
4510         - print_time_in_hz takes a `clock_t', not a `time_t'
4511
4512 execute_cmd.c
4513         - support for timing pipelines with a new function time_command
4514         - execute_command_internal calls time_command if it is passed a
4515           command with the CMD_TIME_PIPELINE bit set in command->flags
4516         - new functions difftimeval and addtimeval to do arithmetic on
4517           timeval structs with overflow
4518
4519 parse.y
4520         - new production: pipeline_command, used by list1 and simple_list1
4521         - pipeline_command includes rules to handle `!' and time
4522         - code to recognize `time' as a reserved word
4523
4524 print_cmd.c
4525         - new code to print `time ' before a command if the CMD_TIME_PIPELINE
4526           flag bit is turned on
4527
4528 builtins/test.def
4529         - added description of string1 < string2 and string1 > string2 to
4530           the long doc
4531
4532 test.c
4533         - added `<' and `>' string binary operators
4534
4535 documentation/bash.1
4536         - documented the `time' reserved word and command timing
4537         - documented the new test `<' and `>' binary operators
4538
4539 documentation/features.texi
4540         - documented the `time' reserved word and command timing
4541         - added more to the section detailing the differences between bash
4542           and sh
4543         - added descriptions of LINENO and ENV to the Ksh variables section
4544         - added description of echo to bash builtins section
4545         - added PPID, BASH, SHLVL to the Bash variables section
4546
4547 subst.c
4548         - added a `quoted' parameter to extract_dollar_brace_string; changed
4549           all calls to it
4550
4551                                    5/24
4552                                    ----
4553 builtins/let.def
4554         - wrote code for an `exp' builtin that treats all of its arguments
4555           as an expression, concatenates them like `eval', and runs the
4556           expression evaluator
4557
4558 expr.c
4559         - added code to do the Posix.2 conditional operator: expr?expr:expr
4560         - added a `noeval' flag to suppress evaluation.  currently it only
4561           suppresses assignment
4562         - added code to the && and || functions so that evaluation is
4563           suppressed in the part of the statement that is not supposed to
4564           be executed (a && b: set noeval if a is false; a || b; set
4565           noeval if a is true)
4566
4567                                    5/25
4568                                    ----
4569 documentation/{bash.1,features.texi}
4570         - documented new `expr?expr:expr' conditional expression syntax
4571           now arithmetic evaluation is Posix.2-conformant
4572
4573 lib/readline/readline.c
4574         - added several more locale names to the list of legal $LANG
4575           values
4576
4577 subst.c
4578         - fixed a bug in parameter_brace_patsub: when replacing a string 
4579           with nothing, rep was set to "", and the code attempted to
4580           free "", which the GNU malloc upchucked on
4581
4582 bashhist.c
4583         - just add a line to the history if command_oriented_history is
4584           set to 1 and the current line in the command is > 1; don't
4585           even bother checking history_ignore
4586
4587 parse.y
4588         - new variable `two_tokens_ago' to remember the token read before
4589           `token_before_that'
4590         - fix to history_delimiting_chars to make sure that no semicolon
4591           is added after `()' (assume its a function definition), but that
4592           a semicolon is added after other `)' (assume its a parenthesized
4593           command)
4594
4595                                    5/31
4596                                    ----
4597 tests/run-all
4598         - put `.' first in $PATH and don't export ENV
4599         - set THIS_SH to ../bash if it's unset
4600
4601 lib/readline/complete.c
4602         - only try to find a word break character in rl_complete_internal
4603           if we hit the end of the input string and found_quote == 0
4604           (the opening quote could have been the last character in the
4605           string)
4606
4607                                     6/2
4608                                     ---
4609 subst.c
4610         - changed make_quoted_char to return CTLNUL\0 if passed a \0
4611           (this is what quote_string does, too) [in 1.14.5]
4612         - changed list_string to use make_quoted_char when adding a quoted
4613           null argument due to a null field when ifs != ' \t\n'
4614         - added an `expandpat' argument to getpattern, which tells it to
4615           call string_extract_double_quoted if the pattern expression is
4616           double-quoted, and changed all calls to initially pass `1' as
4617           its value
4618
4619 jobs.c
4620         - changed start_job so that an attempt to start a job marked as
4621           JDEAD elicits an error message [in 1.14.5]
4622
4623 Makefile.in
4624         - fixed `distclean' target so that it removes Makefiles in subdirs
4625           *after* descending into them to do submakes (!)
4626         - fixed `realclean' target to remove everything that distclean does
4627
4628                                     6/5
4629                                     ---
4630 builtins/declare.def
4631         - fixed a typo that made `declare +r var' turn off read-only status
4632           for a variable [in 1.14.5]
4633         - added -p option to short doc and long doc
4634         - added code to allow `declare -f -options name' to set and unset
4635           attributes for the named functions.  Only when no other options
4636           are supplied will the named and value of the function be displayed
4637           [in 1.14.5]
4638
4639 variables.h
4640         - new SETVARATTR macro to set or unset attributes for a specific
4641           SHELL_VAR *
4642
4643 builtins/setattr.def
4644         - use SETVARATTR
4645
4646                                     6/7
4647                                     ---
4648 execute_cmd.c
4649         - moved the retrieval of $PS3 inside the loop in execute_select_command
4650           so that PS3 can be modified in the select command's body
4651           [in 1.14.5]
4652
4653 execute_cmd.c
4654         - changed execute_builtin and execute_function to not set
4655           builtin_env and function_env, respectively, to NULL if there is
4656           no temporary env.  This makes the temp env persist across calls
4657           to functions from other functions [in 1.14.5]
4658
4659 configure.in
4660         - Linux needs LOCAL_LDFLAGS set to -rdynamic
4661
4662                                     6/8
4663                                     ---
4664 general.c
4665         - canonicalize_pathname should not attempt to interpret backslash
4666           quoting `/', since Unix doesn't really allow it [in 1.14.5]
4667
4668 bashline.c
4669         - added `\', `!', and `)' to the list of characters which
4670           cause filenames to be quoted
4671         - changed bash_quote_filename to use any of the three shell
4672           quoting styles based on the value of a variable,
4673           completion_quoting_style
4674         - if *qcp is not 0 when passed to bash_quote_filename, adjust the
4675           type of completion we're doing based on its value (i.e.,
4676           *qcp == '"' forces double quoting, *qcp == '\'' forces single)
4677         - bash_quote_filename now leaves the quotes intact in the filename
4678           it returns.  The readline completion code takes care of avoiding
4679           doubled open quotes
4680         - if a filename containing a `!' is passed to bash_quote_filename
4681           without an opening quote character, and we are performing history
4682           expansion, use single quoting as the quoting style
4683
4684 bashhist.c
4685         - changed bash_history_disable to not call bash_history_reinit(0),
4686           but do what it needs to directly
4687         - new function bash_history_enable
4688         - make history_expansion_inhibited exist only if BANG_HISTORY
4689           is defined
4690
4691 bashhist.h
4692         - extern declaration for bash_history_enable
4693
4694 lib/readline/complete.c
4695         - make make_quoted_replacement set should_quote to 1 if the quote
4696           character is `'' as well as if it's `"'
4697
4698 test.c
4699         - added the csh-like `=~' and `!~' pattern-matching binary operators
4700           which match the string on the lhs against the shell pattern on
4701           the rhs.  PATTERN_MATCHING must be defined for this to work; it is
4702           undefined and undocumented by default
4703
4704 jobs.c
4705         - broke the code that gets the new window size and sets $LINES and
4706           $COLUMNS out of sigwinch_sighandler into a new function,
4707           get_window_size, which sigwinch_sighandler calls
4708
4709                                    6/12
4710                                    ----
4711 parse.y
4712         - new function, pop_expansion, to remove the top string on the
4713           expanded token stack
4714         - renamed save_expansion to push_expansion
4715
4716 lib/readline/complete.c
4717         - fixed a bug in find_completion_word that tested found_quote
4718           instead of quote_char when trying to decide if we have an unclosed
4719           quoted string [in 1.14.6]
4720
4721                                    6/26
4722                                    ----
4723 subst.c
4724         - fixed expand_word_internal to remove all traces of $*, even if
4725           it's quoted, if there are no positional parameters and there are
4726           other characters in the expansion
4727
4728 bashline.c
4729         - don't attempt hostname completion if multiple consecutive `@'
4730           characters appear
4731
4732                                    6/27
4733                                    ----
4734 shell.c
4735         - initialize top_level early, and exit if a longjmp sends us there
4736           before we reinitialize
4737
4738 subst.c
4739         - more fixes to expansion of quoted $* when no positional parameters
4740         - broke the code that assigns a value to an array element (and parses
4741           the array element reference) into a new function,
4742           do_array_element_assignment
4743
4744 builtins/read.def
4745         - new function, bind_read_variable, to allow binding simple variables
4746           and array elements to strings read (uses do_array_element_assignment)
4747         - changed occurrences of bind_variable to bind_read_variable where
4748           it matters
4749
4750 variables.c
4751         - tentative change to bind_variable to make x=y the same as x[0]=y
4752           if x is already an array variable.  This works for `read' as well.
4753           This is what ksh does.
4754
4755                                    6/28
4756                                    ----
4757 alias.h
4758         - added a `flags' member to the ASSOC struct and renamed it to
4759           `alias_t'
4760
4761 alias.c, bashline.c, builtins/alias.def, builtins/type.def
4762         - changed ASSOC to alias_t
4763
4764 alias.c
4765         - changed add_alias to set the AL_EXPANDNEXT flag when the alias is
4766           inserted into the hash table
4767
4768 parse.y
4769         - added a third parameter to push_string: a pointer to the alias_t
4770           that is being expanded
4771         - push_string marks the alias it's passed as being expanded
4772           (AL_BEINGEXPANDED)
4773         - pop_string marks the alias being popped as no longer being
4774           expanded
4775         - changed shell_getc to defer popping an alias expansion until
4776           the parser has had a chance to catch up, since the parser reads
4777           ahead and would cause the expansion to be popped before it
4778           fully parsed the expanded string
4779         - changed alias_expand_word to check the AL_BEINGEXPANDED flag
4780           instead of the expanded_token_stack when checking whether an
4781           alias is already being expanded
4782
4783 oslib.c
4784         - make the definition of bzero be surrounded by #ifdef HAVE_BZERO
4785           rather than lumping it in with bcopy
4786
4787 configure.in
4788         - add a test for bzero
4789
4790 config.h.in
4791         - add a template for HAVE_BZERO
4792
4793                                     7/3
4794                                     ---
4795 builtins/set.def
4796         - added new meaning for `set +o' without options, as per the latest
4797           draft of Posix.2.  It means to list -o options as a series of set
4798           commands to recreate the current settings
4799
4800 documentation/bash.1
4801         - augmented description of the `set' builtin
4802
4803                                     7/6
4804                                     ---
4805 jobs.c
4806         - make sure that temp_handler is not set to SIG_DFL before calling
4807           it from waitchld
4808
4809 builtins/cd.def
4810         - rewrote cd_builtin to make the code flow clearer
4811         - broke full directory name construction out into a separate
4812           function: mkpath
4813         - cd_builtin now tests that a directory constructed from a $CDPATH
4814           entry is actually a directory before trying to chdir to it
4815         - added an error message if $HOME is not set
4816         - added a descriptive error message if `cd -' used and OLDPWD unset
4817         - changed the error messages to use builtin_error, not file_error
4818         - moved the code at the bind_and_exit label into a function,
4819           bindpwd (no_symlinks)
4820         - Posix.2 says that when using $CDPATH, the resultant value of PWD
4821           should have no symlinks
4822
4823                                     7/7
4824                                     ---
4825 input.c
4826         - if fd_to_buffered_stream fails in some way and returns a NULL
4827           buffered stream, with_input_from_buffered_stream uses a function
4828           that does nothing but return EOF as the `getter'.  This keeps
4829           the shell from crashing if invoked with fd 0 closed
4830
4831 subst.c
4832         - made the `quoted' parameter to expand_word_internal into a flags
4833           word with flag values defined in shell.h.  Each place where
4834           `quoted' is tested for a non-zero value was changed to test
4835           (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) != 0 instead
4836
4837 mailcheck.c, shell.c, parse.y
4838         - change calls to the expand_string* functions to pass an explicit
4839           Q_DOUBLE_QUOTES where appropriate
4840
4841                                     7/9
4842                                     ---
4843 subst.c
4844         - getpattern now passes Q_NOQUOTE to expand_word_internal, indicating
4845           that quotes in the pattern spec are not to be treated specially
4846
4847                                    7/12
4848                                    ----
4849 jobs.c
4850         - fixed up the MUST_UNBLOCK_CHILD code in wait_for so that it now
4851           unblocks all signals and sets the signal handler for SIGCHLD to
4852           SIG_DFL.  pre-v4 SCO machines seem to require this [in 1.14.5]
4853
4854 [Bash-1.14.5 released to net 7/16]
4855
4856                                    7/17
4857                                    ----
4858 documentation/features.texi
4859         - changed the Bourne Shell builtins section to have the same format
4860           as the bash builtins section, with usage synopses
4861         - added a section on the restricted shell
4862
4863                                    7/18
4864                                    ----
4865 documentation/features.texi
4866         - changed the name of this document to the Bash Reference Manual
4867         - added sections on POSIX mode and restricted shell
4868
4869 lib/readline/doc/hsuser.texinfo
4870         - added the text from the bash manual page about the bash history
4871           facilities if BashFeatures is set
4872
4873                                    7/19
4874                                    ----
4875 documentation/features.texi
4876         - added more stuff to the bash basics section
4877
4878 lib/readline/doc/rluser.texinfo
4879         - added a sample inputrc file
4880
4881                                    7/20
4882                                    ----
4883 documentation/features.texi
4884         - added section on shell expansions to bash basics section
4885
4886 builtins/Makefile.in, lib/glob/Makefile.in, lib/malloc/Makefile.in,
4887 lib/readline/Makefile.in, lib/termcap/Makefile.in, lib/tilde/Makefile.in
4888         - ar is now called with flags `cr' when building libraries
4889
4890                                    7/21
4891                                    ----
4892 lib/readline/complete.c
4893         - fixed a bug in find_completion_word that resulted in the found_quote
4894           flag and the delimiter character not being passed back to the
4895           caller (tested (*fp) instead of (fp) before assigning found_quote;
4896           similarly for dp).  With this fix, the filename dequoting function
4897           is properly called
4898
4899                                    7/25
4900                                    ----
4901 general.c
4902         - renamed bash_tilde_expand to bash_tilde_expansion_failure_hook
4903         - new function, bash_tilde_expand, that just sets interrupt_immediately
4904           and calls tilde_expand, returning what tilde_expand returns
4905
4906 subst.c, general.c, shell.c, execute_cmd.c, variables.c, bashline.c,
4907 builtins/cd.def
4908         - changed calls to tilde_expand to calls to bash_tilde_expand instead
4909
4910                                    7/27
4911                                    ----
4912 builtins/set.def
4913         - added a -o history option to enable and disable command history
4914           saving.  This uses bash_history_enable() and bash_history_disable()
4915           It's keyed off of remember_on_history.  With this, shell scripts 
4916           can use the command history
4917
4918 bashhist.c
4919         - bash_history_enable now calls sv_history_control and sv_histignore
4920
4921 builtins/fc.def
4922         - if history_list() returns a null pointer, immediately return
4923           [in 1.14.6]
4924
4925 documentation/{bash.1,features.texi}, lib/readline/doc/hsuser.texinfo
4926         - added a description of the `set -o history' option and changed
4927           text to refer to it rather than strictly interactive shells
4928
4929                                     8/1
4930                                     ---
4931 variables.c
4932         - new builtin variable $HOSTNAME, initialized to current_host_name
4933           as set in shell.c
4934
4935 documentation/bash.1, documentation/features.texi
4936         - documented $HOSTNAME
4937
4938                                     8/3
4939                                     ---
4940 support/texi2html
4941         - new program, a texinfo-html converter
4942
4943 documentation/Makefile.in
4944         - added directives to produce features.html from features.texi
4945
4946 MANIFEST.doc
4947         - added features.html and features_toc.html to the doc distribution
4948
4949                                    8/10
4950                                    ----
4951 lib/readline/bind.c
4952         - new functions rl_variable_dumper and rl_dump_variables to print
4953           readline variables and their values to rl_outstream
4954         - new functions rl_get_keymap_name and rl_get_keymap_name_from_edit_mode
4955           to get the name of the current keymap for the variable dumper
4956
4957 lib/readline/readline.h
4958         - extern declarations for rl_variable_dumper, rl_dump_variables, and
4959           rl_get_keymap_name
4960
4961 builtins/bind.def
4962         - added -V flag to print variable names and bindings
4963         - added -P flag to print variable names and bindings in the syntax
4964           of the inputrc file
4965
4966 lib/readline/funmap.c
4967         - added new bindable `dump-variables' readline command
4968
4969 documentation/{bash.{1,html},readline.3,features.html},
4970 lib/readline/doc/rluser.texinfo
4971         - documented new `dump-variables' readline command
4972
4973 documentation/{bash.{1,html},features.{texi,html}
4974         - documented new bind -P and -V options
4975
4976 documentation/bashbug.1
4977         - new manual page
4978
4979 documentation/Makefile.in
4980         - changes to build and install bashbug.1
4981
4982                                    8/15
4983                                    ----
4984 print_cmd.c
4985         - new function `xprintf' that just calls vfprintf(stdout, ...)
4986           to avoid having to declare printf
4987
4988 parse.y
4989         - slight change in how read_token_word computes `all_digits'
4990
4991                                    8/21
4992                                    ----
4993
4994 subst.c
4995         - new function dequote_escapes to remove CTLESC escaping
4996           CTLESC and CTLNUL in a string, returning a new string
4997
4998                                    8/25
4999                                    ----
5000 shell.c
5001         - execute the file SYS_BASHRC for interactive shells if SYS_BASHRC
5002           is defined, before executing ~/.bashrc
5003
5004 config.h.top
5005         - add a dummy commented definition for SYS_BASHRC, defaulting to
5006           /etc/bash.bashrc
5007
5008 lib/readline/input.c
5009         - added code to call select() in rl_gather_tyi() and return
5010           immediately if it indicates that there is nothing to read on
5011           the readline input fd (#ifdef HAVE_SELECT)
5012
5013 lib/posixheaders/posixdir.h
5014         - new file to localize the <dirent.h>/<sys/dir.h> and dirent/direct
5015           mess
5016
5017 posixdir.h, lib/readline/posixdir.h
5018         - symlinks to lib/posixheaders/posixdir.h
5019
5020 lib/readline/rldefs.h
5021         - removed the posix dir includes and defines
5022
5023 lib/readline/complete.c, getcwd.c
5024         - include posixdir.h rather than having the code inline
5025
5026 builtins/cd.def
5027         - new code to do spelling correction on the directory name
5028           modified from patch sent by Neil Russell (caret@c-side.com)
5029
5030                                    8/29
5031                                    ----
5032 builtins/shopt.def
5033         - new option `cdspell' to toggle cd directory name spelling
5034           correction
5035
5036 documentation/{bash.{1,html},features.texi}
5037         - documented new shopt `cdspell' option
5038
5039                                     9/5
5040                                     ---
5041 subst.c
5042         - $'' should expand to the same thing as '' (a quoted null string)
5043
5044 shell.h
5045         - changed CTLNUL to '\177'; some scripts use ^B for things like IFS
5046           [in 1.14.6]
5047
5048                                     9/7
5049                                     ---
5050 support/config.guess
5051         - added code to identify a PPC running Solaris 2
5052
5053 doc
5054         - new directory replacing documentation
5055
5056 Makefile.in, MANIFEST, MANIFEST.doc, configure.in
5057         - replaced `documentation' with `doc'
5058
5059                                     9/8
5060                                     ---
5061 lib/readline/display.c
5062         - fixed the code in _rl_update_final that decides whether or not the
5063           cursor is at character position 0 on an otherwise-empty line and
5064           adjusts _rl_vis_botlin accordingly
5065
5066                                    9/13
5067                                    ----
5068 general.c
5069         - fixed canonicalize_pathname to make sure that intermediate
5070           results correspond to directories before blindly chopping
5071           off the last component when we see a `..'.  This fixes the
5072           `cd ../.../..' being equivalent to `cd ..' problem
5073
5074 subst.c
5075         - fixed make_named_pipe so that mkfifo is called with mode 0600
5076           for security reasons [in 1.14.6]
5077         - changed the /dev/fd version of add_fifo_list to zero out new
5078           entries to the fifo_list when it resizes it larger [in 1.14.6]
5079         - changed make_dev_fd_filename to use DEV_FD_PREFIX
5080
5081 aclocal.m4
5082         - changed BASH_HAVE_DEV_FD to check for /proc/self/fd and define
5083           DEV_FD_PREFIX to either "/dev/fd/" or "/proc/self/fd/" as
5084           appropriate
5085
5086                                    9/14
5087                                    ----
5088 lib/readline/display.c
5089         - when displaying the first line of a multiline prompt, make sure
5090           that the final \n is followed by a \r (outputting one if necessary)
5091           so that we know we are starting at column 0
5092
5093 variables.h
5094         - new attribute: att_local
5095
5096 variables.c
5097         - changed make_local_variable to set the att_local attribute
5098         - changed makunbound to just make variables marked as `local' in
5099           the current context invisible.  This makes the local variable
5100           persist throughout the function even if it is unset, so a
5101           subsequent assignment preserves the `local' attribute
5102         - changed kill_all_local_variables to unset the att_local attribute
5103           before calling makunbound
5104
5105                                    9/18
5106                                    ----
5107 lib/readline/complete.c
5108         - make sure the cursor is on the last line of a possibly-multiple-
5109           line command line before listing the completions in
5110           display_matches
5111
5112                                    9/19
5113                                    ----
5114 braces.c
5115         - fixed the non-SHELL case in brace_gobbler so the loop exits when
5116           it should
5117
5118 lib/readline/bind.c, lib/readline/readline.h
5119         - added functions to dump key sequences bound to macros and their
5120           values
5121
5122 builtins/bind.def
5123         - added -S and -s options to dump the readline macros and their values
5124         - changed the options so that -p and -P dump functions, -v and -V
5125           dump variables, and -s and -S dump macros (s for string)
5126
5127 doc/{bash.{1,html},readline.3,features.texi}, lib/readline/doc/rluser.texinfo
5128         - added documentation for the new `bind' options
5129         - added documentation for the new readline functions to dump macros
5130           and the key sequences that output them
5131
5132                                    9/22
5133                                    ----
5134 print_cmd.c
5135         - new function xtrace_print_word_list (WORD_LIST *) to print the
5136           words of a simple command when set -x is on.  This prints ''
5137           when it encounters an empty string
5138
5139 externs.h
5140         - new extern declaration for xtrace_print_word_list
5141
5142 execute_cmd.c
5143         - call xtrace_print_word_list in execute_simple_command
5144
5145                                    9/25
5146                                    ----
5147 builtins/getopts.def
5148         - make sure that the loop counter stops at 10 when stepping through
5149           the dollar_vars array to count the number of positional parameters
5150           [in 1.14.6]
5151
5152                                    9/30
5153                                    ----
5154 lib/readline/histsearch.c
5155         - fixed history_search_internal to bail immediately if it gets a
5156           null or empty search string.  This fixes the !? core dumps.
5157           [in 1.14.6]
5158
5159                                    10/3
5160                                    ----
5161 lib/readline/histexpand.c
5162         - if there is a null string given with a !? search specifier, use
5163           a previous search string if one exists, else fail immediately
5164
5165 trap.c
5166         - made run_exit_trap preserve $? around the call to execute the
5167           trap string, unless the trap string contains an `exit'
5168           command, in which case it can set the shell's exit status
5169           [in 1.14.6]
5170
5171           In other words:
5172
5173                 touch /tmp/z
5174                 trap 'rm /tmp/z ; exit 5' 0
5175                 exit 1
5176
5177           exits with status 5; while
5178
5179                 touch /tmp/z
5180                 trap 'rm /tmp/z' 0
5181                 exit 1
5182
5183           exits with status 1
5184
5185 subst.c, parse.y
5186         - moved the $'...' code from subst.c to parse.y, more like ksh
5187           does it
5188
5189 doc/bash.1, doc/bash.html, doc/features.texi
5190         - moved the description of $'...' from the expansion section to
5191           the quoting section
5192
5193                                    10/4
5194                                    ----
5195 command.h
5196         - added a `line' member to the function struct for the source line
5197           the function definition starts on
5198
5199 make_cmd.c
5200         - initialize the `line' member in Function_def to 0
5201         - make_function_def takes a third parameter telling which line the
5202           function definition started on and a fourth telling which line
5203           the function body started on
5204
5205 make_cmd.h
5206         - changed prototype for make_function_def
5207
5208 parse.y
5209         - new variable `function_dstart', set by read_token and read_token_word
5210           to keep track of where a function definition begins
5211         - new variable `function_bstart' to keep track of where function
5212           body begins
5213         - pass function_dstart and function_bstart to make_function_def
5214         - new function strtrans to do the $"..." locale-specific translation
5215           of `...'
5216         - call strtrans() to translate $"string".  The translated string is
5217           double-quoted
5218
5219 doc/bash.{1,html}
5220         - updated the description of LINENO now that line numbers within
5221           functions are correct
5222
5223 configure.in
5224         - look for the `gettext' library function
5225
5226 config.h.in
5227         - define HAVE_GETTEXT if gettext(3) exists in a findable library
5228
5229                                    10/5
5230                                    ----
5231 builtins/common.c
5232         - changed backslash_quote so that `#' is only quoted at the start
5233           of a word
5234         - new function contains_shell_metas returns 1 if the argument
5235           string contains one or more shell meta-characters that require
5236           quoting
5237
5238 builtins/common.h
5239         - extern declaration for contains_shell_metas
5240
5241 print_cmd.c
5242         - changed xtrace_print_word_list to print words containing
5243           shell metacharacters within single quotes
5244
5245 lib/termcap
5246         - upgraded to GNU termcap version 1.3
5247
5248                                    10/9
5249                                    ----
5250 lib/readline/readline.c
5251         - call setlocale(LC_CTYPE, ...) after finding a legal value for
5252           one of LC_ALL, LC_CTYPE, or LANG
5253
5254                                    10/11
5255                                    -----
5256 lib/readline/search.c
5257         - make rl_history_search_internal just do previous-history or
5258           next-history as appropriate when given a null search string
5259           (rl_point == 0)
5260
5261                                    10/24
5262                                    -----
5263 subst.c
5264         - fixed an off-by-one error in char_is_quoted that skipped a
5265           characters after calling skip_single_quoted or skip_double_quoted
5266           [in 1.14.6]
5267         - fixed an off-by-one error in string_extract_verbatim so it
5268           leaves *sindex at the separator character if the separator
5269           character is "'" [in 1.14.6]
5270
5271                                    10/27
5272                                    -----
5273 parse.y
5274         - in CHECK_FOR_RESERVED_WORD, make sure that reading a `}'
5275           decrements open_brace_awaiting_satisfaction if it is non-zero
5276           [in 1.14.6]
5277
5278 shell.c
5279         - don't run the shell startup files if the shell is running
5280           setuid
5281         - don't source $ENV if the shell is running setuid
5282
5283 variables.c
5284         - new parameter to initialize_shell_variables: no_functions.  If
5285           non-zero, don't import functions from the environment
5286
5287 variables.h
5288         - change to function prototype for initialize_shell_variables
5289
5290 lib/readline/complete.c
5291         - fix for the code that decides whether or not a char is quoted for
5292           applications that don't supply a value for rl_char_is_quoted_p
5293         - fixed insert_match to not remove a user-supplied opening quote
5294           character if make_quoted_replacement does not return a string
5295           beginning with that quote character
5296
5297                                    11/2
5298                                    ----
5299 general.c
5300         - new function ungetc_with_restart that handles the local buffering
5301           [in 1.14.6]
5302
5303 parse.y
5304         - changed yy_stream_unget to call ungetc_with_restart if the OS
5305           does not have restartable syscalls [in 1.14.6]
5306
5307                                    11/3
5308                                    ----
5309 bashline.c
5310         - rewrote _ignore_completion_names to actually free and remove
5311           names from the array if more than one names in the array
5312           passed is acceptable, instead of just bailing [in 1.14.6]
5313
5314                                    11/7
5315                                    ----
5316 bashline.c
5317         - if no matches are acceptable to _ignore_completion_names,
5318           free the entries in NAMES, set NAMES[0] == 0, and let the
5319           caller clean up [in 1.14.6]
5320         - fixed a problem with backslash-quoted characters in
5321           bash_dequote_filename that caused the character after the
5322           backslash to be interpreted
5323         - bash_dequote_filename now takes a quote_char parameter that,
5324           if non-zero, gives the quote character (`'' or `"') that
5325           delimits the filename.  Used to initialize the quoting state
5326
5327 lib/readline/complete.c
5328         - if the completion ignore function returns with MATCHES == 0
5329           or MATCHES[0] == 0, ring the bell and quit the completion
5330           attempt [in 1.14.6]
5331         - pass quote_char to gen_completion_matches so it can pass it
5332           along to the app-specific filename dequoting function
5333         - have gen_completion_matches pass quote_char to whatever function
5334           is pointed to by rl_filename_dequoting_function
5335
5336 pathexp.c
5337         - rewrote ignore_globbed_names to be more like _ignore_completion_names
5338
5339 lib/readline/doc/rltech.texinfo
5340         - updated documentation for rl_filename_dequoting_function
5341
5342                                    11/10
5343                                    -----
5344 subst.c
5345         - fixed remove_quoted_nulls so that it is now a full function that
5346           removes unquoted CTLNUL chars from the string it is passed
5347           [in 1.14.6]
5348         - fixed expand_word_internal to avoid generating some unneeded
5349           quoted nulls (if the string is partially quoted, note that we
5350           have seen a quoted null and add one if the rest of the string
5351           doesn't expand to anything)
5352
5353                                    11/13
5354                                    -----
5355 variables.c
5356         - bind HOSTTYPE, OSTYPE, and HOSTNAME unconditionally
5357
5358 pathexp.c
5359         - new function quote_globbing_chars, adds `\' before globbing
5360           chars in its string argument, returns new string
5361
5362 pathexp.h
5363         - extern declaration for quote_globbing_chars
5364
5365 bashhist.c
5366         - if the previous line contains globbing chars, run it through
5367           quote_globbing_chars before trying to match.  This affects
5368           only HISTIGNORE patterns containing `&'
5369
5370                                    11/14
5371                                    -----
5372 bashhist.c
5373         - if the history line to be added contains globbing chars, quote
5374           them with backslashes by calling quote_globbing_chars in
5375           history_should_ignore before comparing them against the
5376           patterns in HISTIGNORE
5377
5378 bashline.c
5379         - make sure that we erase the current readline line after running
5380           fc on it and executing the resultant commands in
5381           vi_edit_and_execute_command, so the original readline line
5382           doesn't get returned [in 1.14.6]
5383
5384 jobs.h
5385         - added a new job listing format: JLIST_NONINTERACTIVE -- like
5386           JLIST_LONG, but does not print the job number
5387
5388 jobs.c
5389         - added code to pretty_print_job to handle JLIST_NONINTERACTIVE
5390         - call notify_and_cleanup() from wait_for even if the shell is
5391           running a script (interactive_shell == 0)
5392         - changed notify_and_cleanup to call notify_of_job_status if
5393           interactive or interactive_shell == 0, so scripts report
5394           about jobs they run
5395         - changed notify_of_job_status to call pretty_print_job with a
5396           JLIST_NONINTERACTIVE format if interactive_shell is 0 and a
5397           job is marked JDEAD, after printing the script name and line
5398           number.  This message is printed only if the job dies due to
5399           a fatal signal
5400
5401 support/mkversion.c
5402         - added support for a `-status status' argument to set the
5403           `release status' of the shell (alpha, beta, or release).  It
5404           defines `RELSTATUS' in version.h and changes the definition
5405           of SCCSVERSION, if present
5406
5407 Makefile.in
5408         - set a RELSTATUS variable that is included when printing the build
5409           message and passed to mkversion with the -status option
5410         - make RELSTATUS one of the variables sed sets when it creates
5411           bashbug from support/bashbug.sh
5412
5413 version.c
5414         - added a `release_status' variable that's set to RELSTATUS if
5415           it's defined
5416
5417 support/bashbug.sh
5418         - added the `RELSTATUS' variable to the report with heading
5419           `Release Status'
5420         - set the bug address to chet@po.cwru.edu if the release status
5421           is `alpha' or `beta'
5422
5423                                    11/15
5424                                    -----
5425
5426 shell.c, execute_cmd.c
5427         - new variable expand_aliases to control alias expansion.  For now,
5428           this is set to the same value as interactive_shell when that is
5429           set
5430
5431 parse.y
5432         - perform alias expansion if expand_aliases is non-zero rather than
5433           checking the value of interactive_shell
5434
5435                                    11/16
5436                                    -----
5437 builtins/shopt.def
5438         - new option `expand_aliases' to control the value of expand_aliases
5439
5440 doc/bash.1, doc/bash.html
5441         - updated the description of `shopt' with the `expand_aliases' option
5442
5443                                    11/28
5444                                    -----
5445 bashline.c
5446         - if there is only one completion in _ignore_completion_names, see
5447           if it is acceptable and return right away [in 1.14.6]
5448
5449 configure.in
5450         - change to define WAITPID_BROKEN on SCO 3.2v5
5451
5452                                    12/6
5453                                    ----
5454 parse.y
5455         - call prompt_again in read_token_word if a newline is read in an
5456           interactive shell and bash_input.type is either st_stdin or
5457           st_stream
5458         - remove superfluous call to reset_readline_prompt in yy_readline_get
5459
5460                                    12/7
5461                                    ----
5462 parse.y
5463         - combine delimiters, delimiter_depth, and delimiter_space into a
5464           single structure of type `struct dstack'
5465         - replace all references to delimiter* with dstack.delimiter*
5466         - include parser.h for struct dstack
5467         - new define pop_delimiter(), analogous to push_delimiter
5468         - current_delimiter, push_delimiter, and pop_delimiter defines now
5469           include the delimiter stack struct as the first parameter
5470
5471 parser.h
5472         - now includes definition of struct dstack
5473
5474 bashline.c
5475         - include parser.h for struct dstack
5476         - refer to dstack.delimiter_depth instead of delimiter_depth
5477
5478                                    12/12
5479                                    -----
5480 execute_cmd.c
5481         - before doing a longjmp(subshell_top_level,...) when executing a
5482           shell script without a leading #!, set history_lines_this_session
5483           to 0 to forget about the history and not save it on an exec
5484           (we don't free the memory with clear_history(), though -- that
5485           would slow bash down)
5486
5487                                    12/14
5488                                    -----
5489 jobs.c, nojobs.c
5490         - cause the sigwinch handling code to be compiled into the shell
5491           even if READLINE is defined
5492         - new functions: set_sigwinch_handler and unset_sigwith_handler
5493           to enable and disable catching of SIGWINCH and adjusting $LINES
5494           and $COLUMNS
5495         - changed initialize_job_signals to install a signal handler for
5496           SIGWINCH with set_sigwinch_handler
5497
5498 jobs.h
5499         - extern declarations for set_sigwinch_handler and
5500           unset_sigwinch_handler
5501
5502                                    12/20
5503                                    -----
5504 doc/bash.{1,html}, doc/readline.3, lib/readline/doc/rluser.texinfo
5505         - documented the readline `visible-stats' variable
5506
5507                                    12/21
5508                                    -----
5509 trap.c
5510         - new global variable `running_trap' incremented and decremented
5511           around running a trap command in _run_trap_internal
5512
5513 execute_cmd.c
5514         - new variable currently_executing_command, set to the COMMAND *
5515           currently being processed by execute_command_internal, unless a
5516           trap command is being run (running_trap != 0)
5517         - new function executing_line_number, which returns the line number
5518           of the currently executing command (which may not be the same as
5519           line_number)
5520         - don't run the debug trap if it was not set before the current
5521           simple command was executed, since we don't want to run it after
5522           the trap command that sets the DEBUG trap
5523
5524 variables.c
5525         - new function assign_lineno, to assign a value to line_number
5526           when LINENO is set
5527         - changed get_lineno to call executing_line_number() rather than
5528           returning line_number
5529
5530 parse.y
5531         - new argument for push_stream telling it whether or not to reset
5532           line_number to 0
5533
5534 builtins/common.c
5535         - change to parse_and_execute to call push_stream with an argument
5536
5537                                    12/29
5538                                    -----
5539 subst.c
5540         - set subshell_environment in command_substitute and process_substitute
5541           for the child process
5542
5543                                     1/2
5544                                     ---
5545 trap.c
5546         - made decode_signal recognize signal names case insensitively
5547
5548 shell.c
5549         - make the shell exit on a longjmp (DISCARD, ...) if
5550           subshell_environment is non-zero
5551
5552                                    1/16
5553                                    ----
5554 lib/readline/histexpand.c
5555         - let the `!' in ${!xxx} pass through without error
5556
5557 shell.c
5558         - new --help long option
5559         - new function show_shell_usage() for use by --help
5560
5561                                    1/19
5562                                    ----
5563 parse.y
5564         - changes to shell_getc to make sure that lines consisting of only a
5565           newline get added to the history correctly when they are part of
5566           a quoted string
5567
5568                                    1/24
5569                                    ----
5570 aclocal.m4, configure.in
5571         - added a check for -lsocket (and -lnsl) to fix solaris problems
5572           with isnetconn()
5573
5574 shell.c
5575         - rearranged the code in isnetconn to check for a socket using
5576           getpeername() first, before any SVR4 or SVR4.2-specific checks
5577         - added checks for ttys (isatty) and FIFOs (S_ISFIFO) to the
5578           SVR4/SVR4.2 case of isnetconn()
5579
5580 general.h
5581         - new macro RESIZE_MALLOCED_BUFFER to check and see whether there
5582           is enough room in a string to add a given number of characters
5583           and to resize it if there is not
5584
5585                                    1/25
5586                                    ----
5587 parse.y, general.c, subst.c, bashhist.c, alias.c, array.c, variables.c
5588         - use RESIZE_MALLOCED_BUFFER where appropriate
5589
5590                                    1/26
5591                                    ----
5592 support/config.{guess,sub}
5593         - merged in latest changes from GNU master copies
5594
5595                                    1/30
5596                                    ----
5597
5598 jobs.c
5599         - make sure to freeze the jobs list when calling a trap handler
5600           for SIGINT
5601         - added code to waitchld() so that a SIGINT trap handler is called
5602           if the shell is running a shell script and a SIGINT is received
5603           while waiting for a foreground job, even if that job does not
5604           die from the SIGINT
5605
5606 jobs.c, nojobs.c
5607         - make get_tty_state reset $LINES and $COLUMNS after each process
5608           exits if the variable `check_window_size' is non-zero
5609
5610 builtins/shopt.def
5611         - new variable `checkwinsize', which controls the value of
5612           check_window_size
5613
5614 doc/{bash.{1,html},features.texi}
5615         - updated description of `shopt' to include `checkwinsize'
5616
5617 execute_cmd.c, lib/readline,complete.c
5618         - some changes from the GNU WIN32 project for the bash port to
5619           Windows NT and Windows 95
5620
5621 bashwait.h
5622         - new file, with `union wait' defines from jobs.h
5623
5624 jobs.h
5625         - include `bashwait.h' if <sys/wait.h> is not present and
5626           _POSIX_VERSION is not defined
5627         - removed define of pid_t for non-Posix systems; now provided by
5628           autoconf in config.h
5629
5630                                    1/31
5631                                    ----
5632 parse.y
5633         - new temporary delimiter stack, used when decoding prompt strings.
5634           This is needed so command substitutions in the prompt strings
5635           (especially PS2) don't screw up the parser's quoting state
5636
5637 lib/readline/complete.c
5638         - new variable for readline library users:
5639           rl_completion_append_character.  The value of this variable is
5640           the character appended to a completion when it occurs at the
5641           end of a line.  Setting it to '\0' causes nothing to be
5642           appended.
5643
5644 lib/readline/readline.h
5645         - declaration for rl_completion_append_character
5646
5647 lib/readline/doc/rltech.texinfo
5648         - documented rl_completion_append_character as int variable available
5649           to library users
5650
5651 subst.c
5652         - new code for maintaining a string array saying which words in the
5653           output of expand_word_list_internal are the result of globbing
5654
5655 variables.c
5656         - new function put_gnu_argv_flags_into_env (pid, flags_string)
5657           to put Roland's GNU getopt helper variable into the export_env
5658
5659 execute_cmd.c
5660         - in execute_disk_command, after forking the child, put the GNU
5661           getopt helper environment variable into the child's export_env
5662
5663 unwind_prot.c
5664         - changed unwind_protect_var and restore_variable to do the
5665           bcopy of the variable's value if it's shorter than the size of
5666           an int, as well as if it's longer.  This keeps stray data
5667           from being copied if a short is being unwind-protected
5668
5669 unwind_prot.h
5670         - new define, unwind_protect_short, to protect variables smaller
5671           than an int
5672
5673 jobs.c
5674         - in the code that handles SIGCHLD traps, call unwind_protect_short
5675           if that is the size of a pid_t (for last_made_pid)
5676
5677                                     2/5
5678                                     ---
5679 Makefile.in
5680         - only try make distclean in HIST_LIBDIR if Makefile exists -- could
5681           have already been removed if HIST_LIBDIR is the same as RL_LIBDIR
5682
5683 general.c
5684         - make canonicalize_pathname be more careful about what it checks
5685           for being a directory name when processing a full pathname
5686
5687 Makefile.in, configure.in, doc/Makefile.in
5688         - small changes to get bash to build better in a directory not the
5689           source directory
5690
5691                                    2/12
5692                                    ----
5693 Makefile.in
5694         - added `install-strip' target
5695
5696                                    2/14
5697                                    ----
5698 doc/bash.{1,html}, doc/features.texi
5699         - documented the `--verbose' startup option
5700
5701 lib/readline/complete.c
5702         - fix to gen_completion_matches to fix a memory leak
5703         - fix to rl_complete_internal to fix a memory leak
5704
5705                                    2/15
5706                                    ----
5707 bashwait.h
5708         - changed to use WORDS_BIGENDIAN instead of LITTLE_ENDIAN or
5709           BIG_ENDIAN
5710
5711 configure.in, config.h.in
5712         - call AC_C_BIGENDIAN, define WORDS_BIGENDIAN
5713
5714 Makefile.in
5715         - remove all references to mkendian.c, mkendian, and bash_endian.h
5716         - added a `symlinks' target that just runs support/fixlinks
5717
5718 MANIFEST
5719         - mkendian.c is no longer in the distribution
5720
5721                                    2/16
5722                                    ----
5723 execute_cmd.c
5724         - include <sys/times.h> if HAVE_SYS_TIMES_H and HAVE_TIMES are
5725           defined
5726
5727 bashline.c
5728         - fix to bash_directory_completion_hook to compensate for
5729           canonicalize_pathname returning NULL
5730
5731 variables.c
5732         - fix to initialize_shell_variables to compensate for
5733           canonicalize_pathname returning NULL
5734
5735                                    2/22
5736                                    ----
5737 tests/test-tests, tests/test.right
5738         - changes to avoid writing in the source directory -- all temp files
5739           are created in /tmp
5740
5741 [First alpha release at Thu Feb 22 15:59:51 EST 1996]
5742
5743                                    2/23
5744                                    ----
5745 lib/readline/rldefs.h
5746         - work around SVR4.2 bug including <sys/ptem.h> and <termios.h>
5747
5748 lib/readline/chardefs.h
5749         - fix to CTRL_CHAR macro for chars > 128 on systems with signed
5750           characters
5751
5752 builtins/ulimit.def
5753         - protect more of the RLIMIT_* defines with checks
5754         - new macro RETINVALID() to set errno and return the correct
5755           value for an invalid request
5756
5757 doc/Makefile.in
5758         - add a definition for INSTALL, set by autoconf
5759
5760                                    2/26
5761                                    ----
5762 support/bashbug.sh
5763         - if USER is unset, assign it the value of $LOGNAME or `whoami`
5764
5765 Makefile.in,{lib/*,doc,builtins}/Makefile.in
5766         - use `test' instead of `[' to conform to GNU coding standards
5767         - `incdir' -> `includedir' as per latest GNU coding standards
5768
5769 lib/readline/Makefile.in, lib/glob/Makefile.in
5770         - use $(srcdir)/ instead of $(srcdir) in the CSOURCES variable
5771
5772 general.h
5773         - new define, FS_NODIRS, to not find directory names when searching
5774           $PATH
5775
5776 execute_cmd.c
5777         - fix to find_in_path_element so it does not return directories
5778         - executable_file() no longer returns directories as executable
5779
5780                                    2/27
5781                                    ----
5782 jobs.h
5783         - new flag value: J_NOHUP
5784
5785 jobs.c
5786         - new function: nohup_job(job).  Sets J_NOHUP flag for specified
5787           job
5788         - change hangup_all_jobs so that jobs marked J_NOHUP are not
5789           sent SIGHUP.  If stopped, the job still gets SIGCONT.
5790         - changed calls to report_error to call internal_error, which will
5791           not exit the shell
5792         - changed FIND_CHILD define to call internal_error, restore the
5793           SIGINT handler, set termination_state to 127 and return, rather
5794           than aborting the shell
5795
5796 builtins/jobs.def
5797         - new option for disown: `-h'.  Marks the specified jobs J_NOHUP.
5798
5799 doc/{bash.{1,html},features.texi}
5800         - added description of `disown -h'
5801
5802 jobs.c, nojobs.c
5803         - include some files needed for struct winsize by SCO
5804
5805 lib/readline/input.c
5806         - added some #ifdefs to avoid including <sys/time.h> on systems
5807           with select but without <sys/select.h>
5808
5809 configure.in
5810         - check for <stdarg.h>, define HAVE_STDARG_H in config.h if found
5811
5812 config.h.bot
5813         - define USE_VARARGS and either PREFER_STDARG or PREFER_VARARGS
5814           if one of <stdarg.h> or <varargs.h> is present
5815
5816 aclocal.m4
5817         - moved default mail directory check here from configure.in, macro
5818           name is BASH_DEFAULT_MAIL_DIR
5819         - rewrote BASH_CHECK_DEV_FD to cache the value
5820         - minor fixes from Bruno Haible
5821
5822 shell.c
5823         - no longer includes <varargs.h>
5824
5825 builtins/Makefile.in
5826         - add -I$(topdir)/builtins to list of includes
5827
5828 execute_cmd.c, lib/glob/glob.c
5829         - include memalloc.h for correct alloca definitions
5830
5831 error.[ch], print_cmd.c, builtins/common.[ch]
5832         - changes to include new ANSI-C stdargs code if PREFER_STDARG is
5833           defined
5834
5835                                    2/28
5836                                    ----
5837 aclocal.m4
5838         - more minor fixes from Andreas Schwab
5839
5840 doc/Makefile.in
5841         - change TEXINPUTS makefile variables to TEXINPUTDIR to avoid
5842           conflict with shell variable of the same name
5843
5844 builtins/pushd.def
5845         - fix to avoid a bad call to free after a call to
5846           polite_directory_format does not change its argument string
5847
5848 lib/readline/bind.c
5849         - fixes to _rl_macro_dumper_internal so that it prints whatever
5850           prefix it's passed, if any
5851
5852                                    2/29
5853                                    ----
5854 Makefile.in
5855         - slight change to the rule for `stamp-h': it should be created by
5856           running `config.status', not explicitly by the makefile rule
5857
5858 builtins/Makefile.in
5859         - replace `..' in the dependencies with `$(topdir)'
5860         - replace `.' in the dependencies with `$(srcdir)'
5861
5862                                     3/1
5863                                     ---
5864 Makefile.in
5865         - add a rule to build builtins/builtext.h for the benefit of
5866           deficient makes like the SunOS one
5867
5868 variables.c
5869         - fix to assign_in_env so that values in the environment are
5870           properly null-terminated
5871
5872 builtins/Makefile.in
5873         - added dependencies for object files made from .c files in this
5874           directory: common.o, getopt.o, bashgetopt.o.  SunOS /bin/make
5875           doesn't seem to be able to handle anything else
5876
5877 support/mkclone
5878         - new script to replace clone-bash that works from MANIFEST to link
5879           only those files contained in a distribution
5880
5881 support/mkversion.c
5882         - change so that it doesn't try to get `.build' from the source
5883           directory when that's different from the build directory
5884
5885                                     3/4
5886                                     ---
5887 bashjmp.h
5888         - #undef setjmp and longjmp before redefining them as sigsetjmp and
5889           siglongjmp, respectively
5890
5891 bashhist.c
5892         - fixed an uninitialized variable problem in expand_histignore_pattern
5893
5894 builtins/set.def
5895         - used `on_or_off' where `value' was needed in minus_o_option_commands
5896
5897 builtins/common.h
5898         - added extern declaration for set_var_attribute
5899
5900 print_cmd.c
5901         - include `bashansi.h' instead of just string.h or strings.h
5902
5903 builtins/*.def, builtins/common.c
5904         - include `../bashansi.h' where appropriate
5905
5906 parse.y
5907         - fixed a parenthesization problem in alias_expand_token
5908
5909 general.h
5910         - added extern declaration for `ungetc_with_restart'
5911
5912 lib/readline/readline.c
5913         - renamed LibraryVersion to rl_library_version, made it extern,
5914           assigned `2.1' to it
5915
5916 lib/readline/readline.h
5917         - extern declaration for `rl_library_version'
5918
5919 lib/readline/doc/rltech.texinfo
5920         - added description of `rl_library_version'
5921
5922 lib/glob/glob.c
5923         - changed call to sprintf in glob_dir_to_array to a couple of
5924           calls to strcpy, since we keep the length of the first string
5925           we copy
5926
5927                                     3/7
5928                                     ---
5929 aclocal.m4
5930         - added new macro `BASH_FUNC_LSTAT' to check for lstat on Linux,
5931           which defines it as an inline function in <sys/stat.h>
5932
5933 configure.in
5934         - call BASH_FUNC_LSTAT if $ac_cv_func_lstat has value `no'
5935
5936                                     3/8
5937                                     ---
5938 parse.y
5939         - changed the occurrences of `list' in the if command productions
5940           to use `compound_list' instead
5941
5942                                    3/11
5943                                    ----
5944 parse.y
5945         - changed the occurrences of `list' in the while and until command
5946           productions to use `compound_list'
5947
5948 lib/readline/complete.c
5949         - fix to filename_completion_function -- off-by-one error when
5950           expand-tilde is enabled and a filename to be completed begins
5951           with `~/'
5952
5953                                    3/12
5954                                    ----
5955 builtins/cd.def
5956         - made the POSIX.2 behavior of PWD not containing symlinks after
5957           using $CDPATH part of `posix mode', not default shell behavior
5958
5959 lib/readline/display.c
5960         - fix to update_line to handle update problems when using
5961           horizontal scroll mode.  This is a dumb update solution -- it
5962           should use a better one
5963
5964                                    3/14
5965                                    ----
5966 examples/functions/csh-compat
5967         - replaced the defintion for `alias' with a better one posted to
5968           usenet by Mohit Aron <aron@cs.rice.edu>
5969
5970                                    3/15
5971                                    ----
5972 jobs.c
5973         - fix to wait_for_background_pids to keep `wait' from hanging
5974
5975                                    3/19
5976                                    ----
5977 lib/readline/input.c
5978         - new function `_rl_input_available()' returns > 0 if there is
5979           input available on the readline input file descriptor.  Only
5980           works if select(2) or FIONREAD are available
5981
5982 lib/readline/isearch.c
5983         - slight change to the isearch termination behavior -- ESC still
5984           terminates the search, but if there is pending input or if input
5985           arrives within 0.1 seconds (on systems with select(2)) it is
5986           used as a prefix character with rl_execute_next
5987
5988 shell.c
5989         - the GNU coding standards say to write the output generated by
5990           the --help command line option to stdout, not stderr
5991         - show_shell_version now takes an `extended' option that displays
5992           copyright information if non-zero
5993         - show_shell_version now prints the value of `MACHTYPE' by default
5994         - the `--version' option now causes the shell to exit successfully
5995           after printing the extended version information
5996
5997 externs.h
5998         - changed prototype for show_shell_version
5999
6000 shell.c, bashline.c, builtins/help.def
6001         - changed calls to show_shell_version to add appropriate argument
6002
6003 Makefile.in
6004         - pass a `MACHTYPE' define to the compiler
6005
6006                                    3/22
6007                                    ----
6008 general.c
6009         - changed print_timeval() and print_time_in_hz() to output three
6010           fractional digits after the decimal point
6011
6012 examples/loadables/sleep.c
6013         - changed to an implementation that will sleep fractional portions
6014           of seconds if select() is available
6015
6016                                    3/25
6017                                    ----
6018 builtins/shopt.def
6019         - fixes to shopt -o from Andreas Schwab.  Use FLAG_ON/FLAG_OFF
6020           instead of SETOPT/UNSETOPT
6021
6022                                    3/26
6023                                    ----
6024 Makefile.in, builtins/Makefile.in
6025         - use `@includedir@' instead of `@incdir' for autoconf 2.9
6026
6027 Makefile.in
6028         - the `info', `dvi', and `ps' targets do not depend on `texindex'
6029         - add a `dist' target that just prints a message describing how
6030           distributions are constructed
6031
6032 support/mkdirs
6033         - replace uses of [...] with `test'
6034
6035                                    3/28
6036                                    ----
6037 parse.y
6038         - fix for a problem with \@ prompt expansion from Tim Mooney
6039
6040 jobs.c
6041         - broke the code that prints a pipeline out into a separate
6042           function: print_pipeline().  This gets called by
6043           pretty_print_job and can be used for debugging
6044         - two new functions to save and restore the_pipeline around calls
6045           to make_child that you don't want to disturb the current pipeline,
6046           for example in process substitution
6047
6048 subst.c
6049         - changed process_substitute to call save_pipeline and
6050           restore_pipeline in the appropriate places
6051
6052                                    3/29
6053                                    ----
6054 general.c
6055         - ansicstr now takes an additional parameter, the length of the
6056           string to be translated.  It's the second paramter.
6057
6058 builtins/echo.def
6059         - changed call to ansicstr to pass strlen(list->word->word)
6060
6061 parse.y
6062         - redid the $'...' expansion so it works like it's supposed to:
6063           the quoted strings may appear anywhere in a token, and multiple
6064           ansi-c quoted strings may appear in a token
6065         - redid the $"..." expansion so it works like it's supposed to
6066
6067 tests/nquote.{tests,right}, tests/run-nquote
6068         - tests for the $'...' and $"..." quoting stuff -- simple-minded
6069
6070 subst.c
6071         - on systems without /dev/fd, open the named pipe for a `reading
6072           in child' process substitution (>(...)) with O_NONBLOCK
6073
6074 lib/posixheaders/filecntl.h
6075         - add code to make sure the O_NONBLOCK is defined to O_NDELAY if
6076           it is present and O_NONBLOCK is not defined by <fcntl.h>
6077
6078 general.c
6079         - don't bother handling both O_NONBLOCK and O_NDELAY in
6080           unset_nodelay_mode, since filecntl.h defines O_NONBLOCK as
6081           O_NDELAY for non-Posix systems
6082
6083                                     4/1
6084                                     ---
6085 lib/readline/funmap.c
6086         - made `vi-fetch-history' a bindable command name
6087
6088 doc/readline.3
6089         - many cleanups, updated the list of default bindings 
6090
6091                                     4/4
6092                                     ---
6093 doc/bash.1, doc/readline.3
6094         - fixed up use of \-; now it is not used unless the text is being
6095           printed in bold or italic
6096
6097 configure.in, config.h.in
6098         - add a configuration option, --enable-usg-echo-default, to turn
6099           on DEFAULT_ECHO_TO_USG and make `echo' expand backslash-escaped
6100           characters by default
6101
6102                                     4/8
6103                                     ---
6104 parse.y
6105         - another small change to localeexpand to handle backslash-escaped
6106           double quotes in the double-quoted string
6107
6108                                     4/9
6109                                     ---
6110 shell.c
6111         - add the value of MACHTYPE to the text output by `--help'
6112
6113                                    4/11
6114                                    ----
6115 parse.y
6116         - more changes to the $"..." and $'...' code to move it into
6117           read_token
6118         - don't try to check token[token_index - 1] unless token_index
6119           is greater than 0
6120
6121                                    4/12
6122                                    ----
6123 trap.c
6124         - new function run_trap_cleanup to clean up after _run_trap_internal
6125           in the event that parse_and_execute does not return normally
6126           (e.g., if a `return' is executed in the trap command)
6127         - set running_trap to the number of the signal whose trap is being
6128           run plus one in _run_trap_internal
6129
6130 trap.h
6131         - extern declaration for run_trap_cleanup
6132
6133 jobs.c
6134         - new function `unfreeze_jobs_list' to set freeze_jobs_list back to 0.
6135           called from parse_and_execute_cleanup so a `return' while running
6136           an interrupt trap does not leave the jobs list frozen
6137
6138 jobs.h
6139         - new extern declaration for unfreeze_jobs_list
6140
6141 builtins/common.c
6142         - if running_trap is non-zero in parse_and_execute_cleanup, indicating
6143           that parse_and_execute was running a trap command when it got a
6144           `return', call run_trap_cleanup (running_trap - 1)
6145         - parse_and_execute_cleanup now calls unfreeze_jobs_list
6146
6147                                    4/16
6148                                    ----
6149 Makefile.in
6150         - don't try to make `doc' as a dependency of `install'
6151
6152 doc/Makefile.in
6153         - make `info' a dependency of `install' to make sure the info
6154           document is present and up to date before installing it
6155         - make the `install' target install the documents with a $(srcdir)/
6156           prefix in case we're building in another directory
6157
6158 lib/glob/glob.c
6159         - fixed an off-by-one error in glob_dir_to_array
6160
6161 shell.c
6162         - removed an extra increment of arg_index when setting up the
6163           arguments for -c command
6164
6165                                    4/17
6166                                    ----
6167 pathexp.c
6168         - made quote_globbing_chars backslash-quote backslashes as well as
6169           `?*[]'; changed it to be a little faster
6170
6171 bashhist.c
6172         - call quote_globbing_chars to quote backslashes in the previous
6173           history line even if no other globbing chars are present.  This
6174           is done only if we're matching against a HISTIGNORE pattern of `&'
6175         - don't bother quoting globbing characters in the current history
6176           line in history_should_ignore -- fnmatch ignores special chars in
6177           its `string' argument
6178
6179 [bash-2.0-alpha2 frozen]
6180
6181                                    4/18
6182                                    ----
6183 command.h
6184         - new flag value for a word: W_NOSPLIT.  A word with this bit set
6185           in its flags will not have word splitting performed
6186
6187 parse.y
6188         - turn on the W_NOSPLIT flags for assignment statements appearing
6189           where an assignment statement is acceptable (words that would
6190           return ASSIGNMENT_WORD rather than WORD).  This means that, for
6191           the time being, assignment statement arguments to builtins like
6192           `declare' or `alias' will be split unless they are quoted
6193
6194 subst.c
6195         - don't split a word in expand_word_internal if the W_NOSPLIT flag
6196           is set, rather than checking W_ASSIGNMENT; do the same thing in
6197           expand_word_list_internal
6198
6199 builtins.h
6200         - a new flag, ASSIGNMENT_BUILTIN, indicating that this builtin takes
6201           assignment statements as arguments
6202         - rearranged the values of the builtin flags, so the BUILTIN_* flags
6203           come first, then the *_BUILTIN flags
6204
6205 builtins/makebuiltins.c
6206         - added code for an array of `assignment builtins' -- builtins that
6207           take assignment statements as arguments -- and to add the
6208           ASSIGNMENT_BUILTIN flag for those builtins
6209
6210 execute_cmd.c
6211         - added a hack function `fix_assignment_words', which checks the
6212           first word of a builtin command to see if it is a builtin that
6213           has the ASSIGNMENT_BUILTIN flag set, and adds W_NOSPLIT to the
6214           flags for all words with the W_ASSIGNMENT bit set.  This means
6215           that word splitting is not done for any of the assignment
6216           statements in commands like `declare z=$a'
6217
6218                                    4/19
6219                                    ----
6220 execute_cmd.c
6221         - fixed a memory-freed-twice error in find_in_path_element
6222
6223 lib/readline/rltty.c
6224         - include <sys/ioctl.h> if GWINSZ_IN_SYS_IOCTL is defined and
6225           SHELL is not defined
6226
6227 lib/readline/input.c
6228         - changed a stray HAVE_FIONREAD to FIONREAD
6229         - include <sys/ioctl.h> if FIONREAD_IN_SYS_IOCTL is defined
6230
6231 aclocal.m4
6232         - new macro, BASH_HAVE_FIONREAD, to check for a #define of
6233           FIONREAD in <sys/ioctl.h> or one of the files it includes;
6234           defines FIONREAD_IN_SYS_IOCTL if present
6235
6236 config.h.in
6237         - new line for FIONREAD_IN_SYS_IOCTL
6238
6239 configure.in
6240         - call BASH_HAVE_FIONREAD
6241
6242                                    4/22
6243                                    ----
6244 builtins/cd.def
6245         - fixed a memory-freed-twice error in mkpath()
6246
6247 jobs.c
6248         - don't print a job termination message for a non-interactive shell
6249           with startup_state == 2 (those shells are started to run commands
6250           when bash is invoked with `-c command')
6251
6252                                    4/23
6253                                    ----
6254 general.h
6255         - definition for a `generic pointer' type PTR_T -- `void *' on ANSI
6256           C systems, `char *' otherwise
6257
6258 jobs.h
6259         - new members of job struct: `j_cleanup', a function to call when the
6260           job is marked JDEAD, and `cleanarg', argument to pass to j_cleanup
6261
6262 jobs.c
6263         - initialize j_cleanup and cleanarg to NULL in stop_pipeline
6264         - call j_cleanup from waitchld() when a job is marked JDEAD
6265
6266 test.c
6267         - fixed binop() so it recognizes `<' and `>' as binary operators
6268         - fixed a bug in binary_operator so `<' works correctly
6269
6270 tests/test-tests
6271         - fixed the tests so they no longer rely on the modes of files in
6272           the file system to test -u, -g, -r, -x, -w, and so on, except
6273           for a few `standard' files like /dev/tty and /dev/null
6274         - added tests for string < string and string > string
6275
6276 xmalloc.c
6277         - include <unistd.h> if HAVE_UNISTD_H is defined for a prototype
6278           for sbrk
6279         - add an extern declaration for sbrk if SBRK_DECLARED is not defined
6280         - use PTR_T to cast the return value of sbrk() when finding out where
6281           the break is and how many bytes of memory have been allocated
6282
6283 lib/malloc/malloc.c
6284         - added code to write 0xcf into memory as it's freed, to uncover
6285           callers that try to refer to freed memory, and writes 0xdf into
6286           newly-allocated memory, to uncover callers that assume something
6287           about new allocations (e.g., that newmem[0] == 0)
6288
6289 lib/malloc/gmalloc.c
6290         - latest version from GNU sources
6291
6292                                    4/25
6293                                    ----
6294 doc/bash.1
6295         - changed the description of `unset' to include a description of
6296           the `-v' option
6297
6298 parse.y
6299         - fixed a problem with conversion to 12-hour time in
6300           decode_prompt_string that made 12:00pm show up as 00:00pm
6301
6302                                    4/26
6303                                    ----
6304 builtins/common.c, subst.c
6305         - a couple of fixes from Andreas Schwab
6306
6307 configure.in
6308         - set up the minimal configuration after checking for
6309           --enable-minimal-config with AC_ARG_ENABLE, before checking any
6310           of the other options, instead of after checking all options.
6311           This makes `--enable-minimal-config --enable-prompt-string-decoding'
6312           work as documented
6313         - changed AC_PREREQ to require autoconf version 2.8 or higher
6314         - added some code to disable gnu malloc by default on the systems
6315           listed in NOTES
6316         - set MALLOC_SRC to have the $(ALLOC_LIBSRC)/ prefix to avoid having
6317           a directory in the dependencies when making without the gnu
6318           malloc
6319
6320 lib/malloc/Makefile.in
6321         - make gmalloc.o depend on $(BUILD_DIR)/config.h
6322
6323                                    4/30
6324                                    ----
6325 COMPAT
6326         - new file listing user-visible incompatibilites between bash-1.14
6327           and bash-2.0
6328
6329 parse.y
6330         - new prompt expansions, \v (version) and \V (version + patchlevel)
6331
6332 config.h.top
6333         - the default value of PS1 is now '\s-\v\$ '
6334
6335 doc/{bash.{1,html},features.texi}
6336         - added descriptions of \v and \V prompt expansions
6337         - changed default value of PS1
6338
6339 Makefile.in
6340         - added dependencies on config.h.top for files that use definitions
6341           included there
6342
6343 builtins/exec.def
6344         - removed reference to `no_exit_on_failed_exec' from the help text
6345
6346                                     5/3
6347                                     ---
6348 builtins/cd.def
6349         - fixed a typo in fix from 4/22
6350
6351                                     5/7
6352                                     ---
6353 builtins/common.c
6354         - new function `no_options (WORD_LIST *)' to be called by builtins
6355           that do not take options to check for options and -?.  It returns
6356           0 on success, non-zero if an unwanted option is supplied
6357
6358 builtins/common.h
6359         - extern declaration for no_options
6360
6361 builtins/return.def
6362         - corrected the error message to include returning from a sourced
6363           script
6364
6365 builtins/{getopts,eval,wait,source,fg_bg,help}.def
6366         - changed the following builtins to either call no_options or test
6367           explicitly for options and return EX_USAGE if any are found:
6368
6369                 getopts eval wait source . fg bg help
6370
6371 builtins/help.def
6372         - error messages are now printed using builtin_error
6373
6374                                     5/8
6375                                     ---
6376 builtins/jobs.def
6377         - fixed an unitialized variable problem
6378
6379 tests/more-exp.tests
6380         - added additional tests for IFS problem uncovered by `iffe'
6381
6382                                     5/9
6383                                     ---
6384 lib/malloc/Makefile.in
6385         - use $(ALLOCA_SOURCE) instead of $< in rule that builds alloca.o.
6386           Some makes don't expand the $< in non-suffix rules
6387
6388 lib/readline/rldefs.h
6389         - fix workaround for SVR4.2 bug
6390
6391 shell.c
6392         - even though SVR4.2 has getpeername(), isnetconn() should not use it
6393
6394 maxpath.h
6395         - rework to make sure PATH_MAX and NAME_MAX are defined, and remove
6396           the BUILDING_MAKEFILE code
6397
6398 general.c, parse.y, oslib.c, jobs.c, builtins/common.c, builtins/cd.def
6399         - change uses of MAXPATHLEN to PATH_MAX
6400
6401 examples/loadables/{{log,base,dir}name,tty,pathchk,tee}.c
6402         - new loadable builtins:
6403
6404                 logname basename dirname tty pathchk tee
6405
6406 configuure.in, config.h.in
6407         - look for tzset(3), define HAVE_TZSET if found
6408
6409 subst.c
6410         - new special variable function, sv_tz, which calls tzset when
6411           TZ is changed, if tzset(3) exists and the shell is compiled
6412           to do prompt string decoding
6413
6414 subst.h
6415         - extern declaration for sv_tz
6416
6417                                    5/10
6418                                    ----
6419 builtins/echo.def
6420         - only call printf if the string to print is non-null
6421         - add an fflush(stdout) after the printf call to work around a
6422           bug in SunOS 5.5
6423
6424                                    5/16
6425                                    ----
6426 shell.c
6427         - moved some variable declarations out of this file to more
6428           logical places
6429
6430 support/config.guess
6431         - small fixes from rfg@monkeys.com
6432
6433 version.c
6434         - moved functions for getting, setting, and displaying shell version
6435           information here from shell.c
6436
6437 general.c
6438         - moved set_lines_and_columns to variables.c
6439         - moved getc_with_restart and ungetc_with_restart to input.c
6440         - new function argv_to_word_list(), converts an array of strings
6441           into a WORD_LIST
6442         - renamed find_name_in_list to find_name_in_array to match rest
6443           of functions that operate on arrays of strings
6444
6445 configure.in, Makefile.in, jobs.c, nojobs.c
6446         - changes so that jobs.c no longer includes nojobs.c, and the correct
6447           object file (jobs.o or nojobs.o) is selected by configure
6448           and substituted into the Makefile
6449
6450 list.c
6451         - new file, list manipulation functions from general.c
6452
6453 externs.h, general.h
6454         - moved extern declarations for functions defined in oslib.c and
6455           list.c to externs.h from general.h
6456
6457                                    5/17
6458                                    ----
6459 locale.c
6460         - new file, with locale code from parse.y and shell.c
6461
6462 shell.c
6463         - don't turn off job control if act_like_sh is set
6464         - if an unknown option is supplied at startup or if -c is
6465           supplied without an argument, exit with EX_USAGE
6466         - call posix_initialize after parsing all the options, to
6467           catch `bash -o posix'
6468         - new functions: init_interactive(), init_noninteractive()
6469         - exit with EX_NOTFOUND if a script argument is not found
6470         - exit with EX_NOINPUT if a script file cannot be opened for
6471           some reason
6472
6473 shell.h
6474         - new define for EX_NOINPUT exit status (126)
6475
6476                                    5/18
6477                                    ----
6478 lib/readline/bind.c
6479         - fixed _rl_get_keyname() so that it properly handles C-\ and outputs
6480           it as \C-\\ and C-" as \C-\".  This fixes the improper binding
6481           commands written by `bind -p' that caused weird things to happen
6482           when people used the output of `bind -p' as a start for their
6483           own inputrc files
6484         - new function _rl_init_file_error to print error messages encountered
6485           while parsing the inputrc file
6486         - print out an error message if parsing an inputrc line and no closing
6487           double quote is found for a key binding
6488
6489 lib/readline/complete.c
6490         - in rl_complete_internal, if the completion function results in
6491           multiple matches, but none match up to even the first character, 
6492           use what the user typed in (which is presumably a glob pattern
6493           that expanded into multiple files) as matches[0].  This makes
6494           things like show-all-if-ambiguous work right, too
6495
6496 oslib.c
6497         - if we are providing our own version of getenv(), provide a function
6498           _getenv() as well, which just calls getenv()
6499
6500 builtins/ulimit.def
6501         - #define _KERNEL before including <sys/resource.h> if HPUX is
6502           defined.  This makes the full set of limits available on hpux
6503           version 8 and above
6504
6505 bashline.c
6506         - new function, enable_hostname_completion, sets up readline to
6507           perform or not perform hostname completion.  Hostname completion
6508           is on by default.
6509         - don't attempt hostname completion in attempt_shell_completion()
6510           unless perform_hostname_completion is set
6511
6512 builtins/shopt.def
6513         - add a `set_func' member to the shopt options structure, to provide
6514           a hook for those variables that require a little more than just
6515           toggling a variable on or off
6516         - new shopt variable `hostcomplete', turns hostname completion on and
6517           off
6518
6519 doc/{bash.{1,html},features.texi}
6520         - added description of new shopt `hostcomplete' variable
6521
6522                                    5/21
6523                                    ----
6524 sig.c
6525         - don't try to save the shell history in termination_unwind_protect
6526           if we're dying due to SIGABRT
6527
6528 bashhist.c
6529         - new functions: last_history_entry (static), last_history_line
6530
6531 bashhist.h
6532         - extern declarations for new functions in bashhist.c
6533
6534 error.c
6535         - have programming_error() report the last command in the history
6536           before aborting
6537
6538 builtins/fc.def
6539         - if the editor returns a non-zero exit status when using `fc -e',
6540           return immediately without trying to execute the commands, as
6541           per Posix.2, 5.12.2
6542         - when using `fc -s', echo the command to be executed to stderr,
6543           not stdout
6544
6545 lib/readline/terminal.c
6546         - new file, with all code related to termcap/terminfo
6547
6548 lib/readline/{readline,rltty,display,util}.c
6549         - moved functions dealing with termcap to terminal.c
6550
6551 lib/readline/readline.c
6552         - readline_initialize_everything now calls _rl_enable_meta_key()
6553           to turn on the meta key, based on the value of _rl_enable_meta
6554           (on by default)
6555
6556 lib/readline/rltty.c
6557         - do not enable and disable the meta key each time readline is
6558           called; do it once at initialization
6559
6560                                    5/23
6561                                    ----
6562 bashhist.c
6563         - when `hist_verify' is set, call re_edit with the expanded line,
6564           not the original one, and do not print the results of the
6565           expansion before re-editing
6566
6567                                    5/24
6568                                    ----
6569 support/config.guess
6570         - recognize linux/sparc
6571
6572 configure.in
6573         - don't use GNU malloc on linux/sparc
6574
6575 variables.c
6576         - initialize a new $MACHTYPE variable to the value of MACHTYPE as
6577           set by autoconf
6578
6579 doc/{bash.{1,html},features.texi}
6580         - documented $MACHTYPE
6581
6582                                    5/30
6583                                    ----
6584 builtins/ulimit.def
6585         - allow the max vm size to be set via setrlimit() if RLIMIT_VMEM
6586           is defined
6587
6588                                    5/31
6589                                    ----
6590 shell.h
6591         - changed EX_USAGE to 258, EX_BADUSAGE is now 2
6592         - added a number of execution failure statuses, so that builtins
6593           can indicate various failures.  All are greater than 256, so
6594           they cannot be returned by other utilities
6595
6596 execute_cmd.c
6597         - new function, builtin_status(), to translate the new return
6598           status codes to something the shell can export
6599         - changed execute_simple_command to call builtin_status after
6600           execute_builtin_or_function to translate error codes if a
6601           builtin is invoked.  If a function or regular builtin is
6602           invoked, all return values greater than EX_SHERRBASE get
6603           translated to EXECUTION_FAILURE, with the exception that
6604           EX_USAGE gets translated to EX_BADUSAGE.  If a special
6605           builtin failed with a status > EX_SHERRBASE, special_builtin_failed
6606           is set to cause the shell to exit in POSIX mode
6607         - changed execute_builtin_or_function to return EX_REDIRFAIL if
6608           redirections fail
6609         - changed execute_subshell_builtin_or_function to translate
6610           EX_USAGE to EX_BADUSAGE if a builtin is executed
6611         - set this_command_name to NULL in execute_for_command before binding
6612           each member of the word list to the loop variable, to avoid
6613           garbled error messages if the variable has the integer attribute
6614
6615 builtins/{set,unset}.def
6616         - return EX_USAGE instead of EXECUTION_FAILURE if a bad option is
6617           supplied
6618
6619 builtins/source.def
6620         - return EX_USAGE instead of EXECUTION_FAILURE if the required
6621           filename argument is missing
6622
6623 builtins/setattr.def
6624         - return EX_BADASSIGN if any assignment statements given as arguments
6625           to readonly, export, etc. return failures (assignment to
6626           non-identifier, assignment to readonly variable)
6627
6628 builtins/declare.def
6629         - don't allow `declare var=value' to assign value to a readonly
6630           variable
6631
6632 lib/readline/rldefs.h
6633         - include <stdarg.h> if we're going to be using stdarg instead of
6634           varargs
6635
6636 lib/readline/display.c
6637         - added `stdarg' version of rl_message
6638
6639 lib/readline/readline.h
6640         - changed extern declaration for rl_message to be in ANSI-C format
6641           if __STDC__ is defined and we're using stdarg
6642
6643 variables.c
6644         - make sure this_command_name is set to null before calling
6645           make_variable_value in assign_array_var_from_string so any
6646           error messages are not garbled
6647
6648                                     6/2
6649                                     ---
6650 builtins/common.c
6651         - don't execute the command in parse_and_execute if -n has been
6652           enabled and the shell is not interactive
6653         - include flags.h for read_but_dont_execute
6654
6655 [bash-2.0-alpha3 released]
6656
6657                                     6/5
6658                                     ---
6659 subst.c
6660         - array_length_reference and parameter_brace_expand_length now
6661           return -1 on errors
6662         - parameter_brace_expand now returns &expand_param_error if
6663           paramter_brace_expand_length returns something < 0
6664
6665 variables.c
6666         - assign_in_env now checks for assignments to readonly shell
6667           variables and disallows them
6668
6669                                     6/6
6670                                     ---
6671 xmalloc.c
6672         - only do pointer arithmetic on pointers cast to (char *), since
6673           it's not required that compilers support arithmetic on void *
6674
6675 shell.c
6676         - make sure <sys/socket.h> is included with the same conditions
6677           used to call getpeername(2) in isnetconn()
6678
6679 parse.y
6680         - added a new function, paren_match, to parse the contents of $(...)
6681           constructs.  This function correctly handles embedded quoted
6682           strings, embedded command substitutions, embedded command
6683           substitutions with embedded quoted strings, etc.  The implementation
6684           is much closer to that described in POSIX.2, section 3.6.3.
6685         - changed read_token_word to call paren_match where appropriate
6686
6687 subst.c
6688         - rewrote extract_delimited_string so that it correctly understands
6689           quoted strings inside command substitutions, a la paren_match
6690           in parse.y.  Corrected the description of the function's output
6691           in the code.  extract_delimited_string is now very recursive, and
6692           does not try to do everything in one pass without recursion
6693
6694                                     6/7
6695                                     ---
6696 test.c
6697         - fixed three_arguments() to test the second argument for a valid
6698           binary operator before checking whether or not the first argument
6699           is `!'.  This is what POSIX.2 says to do.
6700
6701 lib/malloc/malloc.c
6702         - don't compile in the memory scrambling code (#define MEMSCRAMBLE)
6703           if NO_MEMSCRAMBLE is defined.
6704
6705 configure.in
6706         - define NO_MEMSCRAMBLE in LOCAL_CFLAGS for SCO 3.2v[45]
6707
6708                                     6/9
6709                                     ---
6710 parse.y
6711         - renamed paren_match to parse_matched_pair
6712         - call parse_matched_pair to parse <(...) and >(...) constructs,
6713           since those should be treated the same as $(...) for the purposes
6714           of matching parens and skipping embedded quoted strings
6715
6716                                    6/13
6717                                    ----
6718 parse.y
6719         - augmented parse_matched_pair
6720                 o fixed up backslash quoting and CTLESC handling after
6721                   backslashes
6722                 o match pairs of ${...} and $[...] inside double-quoted
6723                   strings or `` strings
6724                 o keep track of line number quoted string starts on for
6725                   better error messages
6726                 o push and pop delimiters when parsing quoted strings
6727                   inside $(...), ${...}, and $[...] for use by the
6728                   history code
6729                 o set EOF_Reached to 1 if we get an EOF before finding the
6730                   match closer
6731         - rewrote read_token_word from scratch to use parse_matched_pair:
6732                 o shell quote characters use parse_matched_pair to find
6733                   the matching quote
6734                 o fixed up backslash parsing code
6735                 o compound array assignments use parse_matched_pair
6736                 o corrected all_digits and dollar_present computations, so,
6737                   for instance, 2''>/dev/null is no longer accepted as
6738                   identical to 2>/dev/null
6739                 o converted ${...} parsing to use parse_matched_pair
6740                 o removed printing of error messages about unmatched quotes;
6741                   now handled by parse_matched_pair
6742                 o converted $'...' and $"..." to use parse_matched_pair
6743                 o removed all of the delimited_xxx and dollar_xxx variables
6744                   and embedded_quoted_string
6745         - modified report_syntax_error to regularize error messages:
6746                 o non-interactive shells and interactive shells running
6747                   scripts with `.' now always report line numbers
6748                 o unexpected EOF is always reported when EOF_Reached is true
6749                 o non-interactive shells no longer duplicate the script name
6750                   in error messages (e.g., `./z3: ./z3: line 3: syntax error')
6751
6752 bashline.c
6753         - make sure `newnames' is freed in _ignore_completion_names
6754
6755 lib/readline/complete.c
6756         - don't insert the first match on TAB completion in
6757           rl_complete_internal() if matches[0] is the empty string --
6758           that will overwrite whatever the user has typed, if dequoting
6759           what the user typed results in the empty string
6760
6761 execute_cmd.c
6762         - include <limits.h> if HAVE_LIMITS_H is defined for ARG_MAX
6763         - only put the special environment variable for GNU getopt into
6764           the environment if ARG_MAX exceeds 10240
6765
6766 subst.c
6767         - rewrote extract_dollar_brace_string so that it fully obeys
6768           the POSIX.2 rules for finding the closing `}' and uses
6769           skip_{single,double}_quoted rather than trying to do it with
6770           inline delimiters
6771         - removed the INC_NEST and DEC_NEST defines
6772
6773                                    6/14
6774                                    ----
6775 jobs.c
6776         - don't print status messages for background jobs that complete
6777           successfully when running shell scripts
6778
6779 builtins/shopt.def
6780         - when using shopt -o as a synonym for set -o, make sure $SHELLOPTS
6781           is updated
6782         - make sure to update $SHELLOPTS when using shopt to set or unset
6783           interactive comments
6784
6785 execute_cmd.c
6786         - fixed find_in_path_element to not return non-executable files
6787           when FS_EXEC_PREFERRED is one of the flags, after saving such
6788           a file as file_to_lose_on (fix from william@nscs.fast.net)
6789
6790                                    6/17
6791                                    ----
6792 lib/readline/complete.c
6793         - after printing possible completions, all lines of a multi-line
6794           prompt are redisplayed using rl_forced_update_display()
6795
6796 subst.c
6797         - in expand_word_internal, only do tilde expansion on words where
6798           (flags & (W_ASSIGNMENT|W_QUOTED)) == W_ASSIGNMENT (unquoted
6799           assignment statements) and contain unquoted `=~' or `:~', and
6800           only if posixly_correct is off.  POSIX.2 says that only the
6801           assignments preceding the command name should be tilde-expanded.
6802
6803                                    6/18
6804                                    ----
6805 support/config.guess
6806         - recognize the new Pyramid DC-OSx as `mips-pyramid-sysv4'
6807
6808 configure.in
6809         - set LOCAL_CFLAGS to -Xa for mips-pyramid-sysv4 as per
6810           Peter Chubb
6811
6812 subst.c
6813         - variable assignment errors when there is not a command name
6814           after the assignments now causes a non-interactive shell to 
6815           exit in POSIX.2 mode
6816
6817 execute_cmd.c
6818         - if the iteration variable in a for statement is a read-only
6819           variable, a variable assignment error occurs.  This causes
6820           non-interactive shells to exit in posix mode, and a failure
6821           status to be returned for other non-interactive shells and
6822           interactive shells
6823         - if the selection variable in a select statement is a read-only
6824           variable, a variable assignment error occurs, with the same
6825           consequences as a for statement variable assignment error
6826
6827 doc/bashref.*
6828         - renamed features.* to bashref.*, since that more accurately
6829           reflects the current contents
6830
6831                                    6/19
6832                                    ----
6833 test.c
6834         - changed three_arguments() to do one-argument tests on $1 and
6835           $3 and return the appropriate values if -a or -o is given as
6836           the second argument
6837         - changed three_arguments() to perform a one-argument test on
6838           $2 if $1 == '(' and $3 == ')' and return that result
6839         - make sure test_stat translates /dev/fd/xx to DEV_FD_PREFIX/xx
6840           so /dev/fd/0 always means the same thing, even on linux,
6841           which uses /proc/self/fd
6842
6843 aclocal.m4
6844         - added a check for libncurses in BASH_CHECK_LIB_TERMCAP
6845
6846 configure.in
6847         - added an initial message saying we're configuring for bash-2.0
6848
6849 lib/glob/fnmatch.c
6850         - made a small change to fnmatch() to fix a bug matching patterns
6851           with multiple consecutive `*'s
6852
6853                                    6/20
6854                                    ----
6855 parse.y
6856         - inhibit history expansion when calling pre_process_line() from
6857           shell_getc() if the current delimiter is a single quote, even
6858           if we're on a different line than the opening quote
6859         - make sure read_a_line prints a prompt if we're interactive and
6860           not using readline, and make sure we call clearerr() if we
6861           get EOF when interactive and not using readline
6862
6863 bashhist.c
6864         - new function history_expansion_p(char *) returns 1 if the string
6865           passed contains the history expansion or history substitution
6866           characters
6867         - pre_process_line() now calls history_expansion_p and calls
6868           the history expansion code only if that returns 1
6869
6870                                    6/26
6871                                    ----
6872 lib/readline/isearch.c
6873         - swap the behavior of ^J and ^M when i-searching.  ^J now terminates
6874           the search without accepting the line.  ^M terminates the search
6875           and accepts the line, executing the command
6876
6877 examples/loadables/sprintf.c
6878         - new `sprintf' builtin: sprintf var format [args...]
6879
6880 lib/readline/readline.c
6881         - added a line in _rl_dispatch that sets _rl_suppress_redisplay if
6882           the function is rl_insert and there is input available
6883
6884                                    6/27
6885                                    ----
6886 builtins/getopts.def
6887         - new function, getopts_bind_variable(), used when assigning a value
6888           to the user-supplied variable passed to getopts().  It makes sure
6889           that that variable name is legal and prints an error message if it
6890           is not
6891
6892 builtins/getopt.c
6893         - don't increment sh_optind until after we've checked whether or not
6894           the current option character appears in the list of options passed
6895           to getopts by the user
6896
6897                                    6/28
6898                                    ----
6899 variables.c
6900         - added a new parameter to print_var_value: QUOTE.  If it's non-zero
6901           and the variable's value contains shell metacharacters, quote the
6902           value so it can be read back in
6903
6904 variables.h
6905         - changed extern declaration for print_var_value
6906
6907 siglist.h
6908         - if SYS_SIGLIST_DECLARED is not defined, but HAVE_UNDER_SYS_SIGLIST
6909           is, only declare sys_siglist as extern char *sys_siglist[] if
6910           sys_siglist is not `#define'd
6911
6912 parse.y
6913         - make sure a reserved word is acceptable before returning `}' as
6914           a token from special_case_tokens, even if the token read so far
6915           is "}"
6916         - make reset_parser set allow_open_brace to 0
6917
6918                                     7/1
6919                                     ---
6920 test.c
6921         - fixed binop to not try to read s[3] if s[2] == '\0'.  There are
6922           no one-character binary operators that begin with `-'
6923
6924 variables.c
6925         - fixed kill_all_local_variables to do nothing if variable_context
6926           is >= local_variable_stack_size (indicating that we do have some
6927           local variables, but not at this level of function nesting, and
6928           we are beyond the end of the array allocated the last time we
6929           had local variables)
6930
6931                                     7/2
6932                                     ---
6933 execute_cmd.c
6934         - non-interactive shells in posix mode should exit if the variable
6935           in a for command is not a valid identifier.  This should really
6936           be caught by the parser
6937         - non-interactive shells in posix mode should exit if a function
6938           name is not a valid identifier.  This should also be caught by
6939           the parser
6940
6941                                     7/3
6942                                     ---
6943 jobs.c
6944         - non-interactive shells should ignore stopped children, so
6945           waitchld() should set waitpid_flags to WUNTRACED only if the
6946           shell is interactive and it's not a subshell environment
6947
6948 lib/readline/signals.c
6949         - if not being compiled as part of the shell, readline should
6950           catch SIGTERM and clean up
6951
6952 shell.c
6953         - change to isnetconn: on Solaris 2.5, getpeername() can return
6954           EINVAL rather than ENOTSOCK if the fd passed as the first
6955           argument is not a socket
6956
6957                                     7/5
6958                                     ---
6959 lib/readline/complete.c
6960         - new variable, available to library users, to inhibit completion
6961           and cause the completion character to be inserted into the
6962           line with self-insert: rl_inhibit_completion.  Set to 0 by default.
6963
6964 lib/readline/readline.h
6965         - extern declaration for rl_inhibit_completion
6966
6967 lib/readline/doc/rltech.texinfo
6968         - documented rl_inhibit_completion
6969
6970 lib/readline/bind.c
6971         - new readline user variable: disable-completion.  This provides
6972           users a way to toggle the value of rl_inhibit_completion
6973
6974 doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo
6975         - documented disable-completion variable
6976
6977 lib/readline/doc/Makefile
6978         - added `html' target to create html from rlman.texinfo and
6979           hist.texinfo
6980
6981                                     7/8
6982                                     ---
6983 builtins/cd.def
6984         - only try cd spelling correction if the shell is currently
6985           interactive, regardless of value of `cdspell' option
6986
6987 lib/posixheaders/alloca.h
6988         - AIX 4.2 needs `#pragma alloca' if gcc is not being used
6989
6990                                     7/9
6991                                     ---
6992 builtins/getopts.def
6993         - return EXECUTION_FAILURE from getopts if it's trying to assign
6994           to a read-only variable
6995         - reset sh_badopt to zero in getopts_reset()
6996
6997 builtins/getopt.c
6998         - new variable, sh_badopt, set to 1 if we find an illegal option
6999         - do the increment of sh_optind if sh_badopt is non-zero and we're
7000           at the end of the option string at the beginning of sh_getopt().
7001           The increment is deferred until the next call so $OPTIND is
7002           correct
7003
7004 builtins/getopt.h
7005         - extern declaration of sh_badopt
7006
7007                                    7/10
7008                                    ----
7009 Makefile.in
7010         - don't pass ALLOCA_SOURCE or ALLOCA_OBJECT to the make in lib/malloc
7011         - don't make libmalloc.a depend on ALLOCA_DEP -- it causes some
7012           compilers to build alloca.o in the top directory, and if ALLOCA
7013           is not defined, makes the malloc library depend on a directory
7014
7015 aclocal.m4
7016         - some small changes to make the output look better
7017
7018 memalloc.h
7019         - made some small changes suggested by the autoconf documentation
7020
7021                                    7/11
7022                                    ----
7023 parse.y
7024         - swapped meanings of \h and \H in prompt_string_decode for
7025           bash-1.14.6 compatibility
7026
7027 doc/{bash.{1,html},bashref.texi}
7028         - updated prompt string decoding section with swap of \h and \H
7029
7030 general.c
7031         - print_timeval and print_time_in_hz now accept a FILE * as the
7032           first argument, so `times' can print to stdout while `time'
7033           prints to stderr
7034
7035 execute_cmd.c
7036         - changed time_command to print the timing statistics to stderr
7037
7038 builtins/times.def
7039         - added the FILE * argument to the calls to print_timeval and
7040           print_time_in_hz
7041
7042 support/texi2html
7043         - upgraded to version 1.50
7044
7045 error.c
7046         - include bashhist.h if HISTORY is defined for declarations of
7047           last_history_line() and remember_on_history
7048
7049 lib/glob/glob.c
7050         - add a `#pragma alloca' as the first thing in the file if we're
7051           not using gcc and _AIX is defined
7052
7053 lib/posixheaders/memalloc.h
7054         - remove the `#pragma alloca' stuff; it is done in the C source
7055           files now, to avoid problems with other AIX header file
7056           declarations
7057
7058                                    7/12
7059                                    ----
7060 lib/readline/rltty.c
7061         - some changes to work around AIX 4.2 bugs (sometimes OPOST is unset
7062           in termios, sometimes FLUSHO is inexplicably set in termios, etc.)
7063
7064                                    7/15
7065                                    ----
7066 lib/readline/rltty.c
7067         - make SETATTR use TCSADRAIN on POSIX machines.  This setting is
7068           supposed to be used for changes that affect output
7069
7070 [bash-2.0-alpha4 released]
7071
7072                                    7/16
7073                                    ----
7074 trap.c
7075         - changed reset_or_restore_signal_handlers to honor traps before
7076           special signals, so that `trap "" 2' works right and causes
7077           children to ignore SIGINT
7078
7079 locale.c
7080         - added lc_all variable to track the value of LC_ALL
7081         - added new functions: set_default_locale_vars, set_locale_var,
7082           set_lang, get_locale_var, removed get_current_messages_locale
7083
7084 subst.h
7085         - added extern declaration for sv_locale
7086
7087 subst.c
7088         - LC_ALL, LC_CTYPE, LC_MESSAGES, and LANG are now special variables;
7089           sv_locale() is called when they are assigned a value
7090
7091 shell.c
7092         - call set_default_locale_vars after initializing the shell variables
7093           in main(), so LC_CTYPE and LC_MESSAGES (if present) have values
7094         - shell.c does not need to include <locale.h>
7095
7096 general.c
7097         - changed print_timeval and print_time_in_hz to format their output
7098           as Posix.2 specifies for `time -p' if the new POSIX_TIME argument
7099           is non-zero
7100
7101 parse.y
7102         - new grammar production: timespec, to handle `time' and `time -p'
7103         - change to special_case_tokens so that -p after `time' returns
7104           TIMEOPT
7105
7106 execute_cmd.c
7107         - set posix_time in time_command if the command's flags include
7108           CMD_TIME_POSIX
7109         - call print_timeval and print_time_in_hz with posix_time as
7110           the new third argument
7111         - use a space to separate the word (`real') and the time if we're
7112           in posix mode.  This is what POSIX.2 defines for `time -p'
7113
7114 builtins/times.def
7115         - call print_timeval and print_time_in_hz with 0 as the new third
7116           argument
7117
7118 command.h
7119         - new flag: CMD_TIME_POSIX, used to handle `time -p'
7120
7121 doc/{bash.{1,html},bashref.texi}
7122         - documented `time -p'
7123
7124                                    7/17
7125                                    ----
7126 support/mkversion.c
7127         - include `config.h' before any other include files
7128
7129 parse.y
7130         - initialize was_dollar to 0 in parse_matched_pair
7131
7132 configure.in
7133         - removed duplicate check for <sys/file.h> from call to
7134           AC_HAVE_HEADERS
7135
7136 sig.c
7137         - include siglist.h so we can find out if it defines HAVE_SYS_SIGLIST
7138
7139 siglist.h
7140         - define HAVE_SYS_SIGLIST if we end up defining sys_siglist as
7141           _sys_siglist (Solaris 2.[45])
7142
7143 siglist.c
7144         - include "siglist.h" before testing whether or not HAVE_SYS_SIGLIST
7145           is defined; it may be defined in there (Solaris 2.[45])
7146
7147                                    7/19
7148                                    ----
7149 examples/misc/alias-conv.sh
7150         - updated, now uses code from examples/functions/csh-compat to do
7151           the alias conversion, uses `command' builtin in functions it
7152           creates, does some substitution of csh special variables to
7153           bash equivalents
7154
7155 examples/misc/cshtobash
7156         - a more ambitious script that attempts to convert csh aliases,
7157           environment variables, and local variables to bash equivalents
7158
7159                                    7/22
7160                                    ----
7161 bashline.c
7162         - added `:' to the set of completion word break characters so that
7163           individual directories in $PATH assignments can be completed
7164
7165 aclocal.m4
7166         - added a new macro, BASH_CC_WORKS, that aborts configuration if
7167           ${CC} can't compile a simple program successfully
7168
7169 configure.in
7170         - call BASH_CC_WORKS before doing anything else
7171
7172                                    7/23
7173                                    ----
7174 execute_cmd.c
7175         - fixed select_query to print the prompt ($PS3) to stderr
7176
7177 support/bashbug.sh
7178         - workaround for bug in SunOS 5.x /bin/sh that causes it to
7179           not ignore interrupts while waiting for a foreground process
7180           to exit
7181
7182                                    7/24
7183                                    ----
7184 general.c
7185         - added new functions to decompose `timeval's and `clock_t's into
7186           seconds and thousandths of seconds:  timeval_to_secs and
7187           clock_t_to_secs
7188         - changed print_timeval and print_time_in_hz to call timeval_to_secs
7189           and clock_t_to_secs, respectively
7190         - removed no-longer-used third argument for print_timeval and
7191           print_time_in_hz -- `time' output is now done in execute_cmd.c
7192
7193 general.h
7194         - new extern declarations for timeval_to_secs and clock_t_to_secs
7195
7196 builtins/times.def
7197         - changed calls to print_timeval and print_time_in_hz, removing the
7198           no-longer-used third argument
7199
7200 execute_cmd.c
7201         - changed the way time_command prints its output:  it now interprets
7202           a format string, replacing several escape sequences prefixed with
7203           a `%' with the real, user, and system times.  There are options in
7204           the format string to ask for the `long' format that `times' uses
7205           as well as to specify the number of places after the decimal point,
7206           and whether to output fractional seconds at all
7207         - time_command now uses the value of the `TIMEFORMAT' variable, if
7208           present, to format the timing output.  This is flexible enough to
7209           encompass the bash default, posix `time -p', BSD, and SV time
7210           formats
7211
7212                                    7/25
7213                                    ----
7214 Makefile.in
7215         - `make clean' should delete the files listed in $(CREATED_SUPPORT);
7216           `make mostlyclean' should not
7217
7218 doc/{bash.{1,html},bashref.texi}
7219         - fixed an error in the description of the effect that setting and
7220           unsetting GLOBIGNORE has on the setting of the `dotglob' option
7221
7222 doc/bashref.texi
7223         - updated the section listing the major differences between bash
7224           and the SVR4.2 shell
7225
7226 lib/readline/readline.c
7227         - removed the setting of _rl_suppress_redisplay, since it doesn't
7228           really do anything yet
7229
7230 oslib.c
7231         - new function get_clk_tck (void), returns the value of _SC_CLK_TCK
7232           if sysconf(3) is available, otherwise returns the value of
7233           CLOCKS_PER_SEC (default 60)
7234
7235 general.c
7236         - moved CLOCKS_PER_SEC defines to oslib.c
7237         - changed clock_t_to_secs to call get_clk_tck once to get the
7238           right value to use
7239
7240 externs.h
7241         - extern declaration for get_clk_tck
7242
7243 execute_cmd.c
7244         - changed print_formatted_time so that a `%' at the end of the string
7245           is output literally
7246         - changed print_formatted_time to output a newline after the
7247           translated format string, so it does not need to be included in
7248           the format
7249         - changed BASH_TIMEFORMAT (the default time format) to have a leading
7250           newline to match ksh93
7251
7252 configure.in
7253         - use `shlicc2' on BSD/OS machines
7254
7255                                    7/26
7256                                    ----
7257 doc/bash.html
7258         - major overhaul, cleaned up text, corrected some minor HTML errors
7259
7260 variables.c
7261         - call sv_optind and sv_opterr to initialize the getopts stuff in
7262           initialize_shell_variables
7263
7264                                    7/29
7265                                    ----
7266 shell.c
7267         - don't let maybe_execute_file try to read files that are not
7268           `regular files'
7269
7270                                    7/30
7271                                    ----
7272 parse.y
7273         - cast `string' in yy_string_get() to unsigned char * to avoid
7274           sign extension bugs.  For example, bash -c $'ls\377who'
7275
7276
7277 builtins/reserved.def
7278         - add help text for the `time' reserved word
7279         - deleted description of `HISTCONTROL'
7280         - added descriptions for HISTIGNORE, PWD, HOSTNAME, GLOBIGNORE,
7281           MACHTYPE
7282
7283                                    7/31
7284                                    ----
7285 builtins/common.c
7286         - parse_and_execute saves and restores the line number around
7287           calls, and resets it to 0 when pushing the string onto the
7288           input stack
7289
7290 parse.y
7291         - added code that parses `` within a double-quoted string as a
7292           single word
7293
7294                                     8/6
7295                                     ---
7296 configure.in, config.h.in
7297         - look for `textdomain' as well as `gettext' for internationalization
7298
7299 locale.c
7300         - when LC_MESSAGES is set, call textdomain as well as setlocale
7301         - new variable `default_domain', used to track the value of
7302           $TEXTDOMAIN
7303
7304 subst.c 
7305         - call sv_locale when TEXTDOMAIN changes
7306
7307                                     8/7
7308                                     ---
7309 error.c
7310         - new function, sys_error(), which prints a formatted string followed
7311           by a colon and strerror(errno) to stderr
7312
7313 error.h
7314         - extern declaration for sys_error
7315
7316 jobs.c, nojobs.c, input.c, execute_cmd.c, subst.c
7317         - changes to use sys_error()
7318
7319 [many files]
7320         - changes to many of the literal strings in the code for consistency
7321           and easier potential translation
7322
7323                                     8/8
7324                                     ---
7325 parse.y
7326         - new function debug_parser(int) to toggle the value of yydebug
7327           if YYDEBUG != 0
7328
7329                                     8/9
7330                                     ---
7331 oslib.c
7332         - don't use CLOCKS_PER_SEC, just try to get CLK_TCK (60 by default)
7333
7334 bashline.c
7335         - set saved_history_line_to_use to -1 when it's not going to be used
7336           rather than 0.  A value of 0 can be confused with the first
7337           history line
7338
7339 builtins/evalstring.c
7340         - moved parse_and_execute and auxiliary functions here from
7341           builtins/common.c
7342
7343 builtins/evalfile.c
7344         - moved maybe_execute_file here from shell.c
7345
7346 Makefile.in, builtins/Makefile.in
7347         - changes necessitated by the new files
7348
7349                                    8/12
7350                                    ----
7351 builtins/common.c
7352         - fixed an off-by-one bug in single_quote that could make bash
7353           run off the end of a string if it consisted entirely of single
7354           quotes
7355
7356                                    8/13
7357                                    ----
7358 shell.c
7359         - moved code from main() to a new function: open_shell_script
7360         - don't try to fclose(default_input) if BUFFERED_INPUT is defined
7361         - moved argument binding code out of two places in main() and
7362           open_shell_script() to a new function: bind_args().  This takes
7363           an additional argument telling whether to bind starting at $0
7364           or $1
7365         - moved the code that calls the with_input_from_* functions into
7366           a new function: set_bash_input
7367         - moved the normal shell command-line option parsing code out of
7368           main() into a new function: parse_shell_options
7369         - moved the long option parsing code out of main() into a new
7370           function: parse_long_options()
7371
7372 general.c
7373         - new function: move_to_high_fd(fd), which tries to move FD to a
7374           file descriptor close to the allowed maximum, returning the new
7375           fd and closing the old one (or returning the old one if something
7376           goes wrong)
7377
7378 general.h
7379         - new extern declaration for move_to_high_fd
7380
7381 variables.c
7382         - moved indirection_level_string() here from shell.c
7383
7384 jobs.c
7385         - change initialize_jobs to use move_to_high_fd() instead of the
7386           inline code to do the same thing
7387
7388                                    8/14
7389                                    ----
7390 lib/readline/readline.c
7391         - add `en_US.ISO8859-1' to the list of legal LANG values that turns
7392           on readline's 8-bit mode
7393
7394                                    8/15
7395                                    ----
7396 builtins/evalfile.c
7397         - combined source_file and maybe_execute_file into a new function
7398           _evalfile(fname, flags), where the flags select the appropriate
7399           behavior
7400
7401 eval.c
7402         - moved the functions that perform the read-eval loop here from
7403           shell.c
7404
7405 execute_cmd.c
7406         - changed CPU calculation for printing timing statistics using
7407           ideas and code from Deven Corzine (deven@ties.org)
7408
7409 eval.c, builtins/evalstring.c
7410         - make sure we dispose of global_command if set -n is on and the
7411           shell is not interactive
7412
7413                                    8/16
7414                                    ----
7415 variables.c
7416         - make a new array variable, BASH_VERSINFO, with version information:
7417
7418                 BASH_VERSINFO[0] = release      (2)
7419                 BASH_VERSINFO[1] = version      (00)
7420                 BASH_VERSINFO[2] = patch level  (0)
7421                 BASH_VERSINFO[3] = build version (1058)
7422                 BASH_VERSINFO[4] = release status (beta1)
7423                 BASH_VERSINFO[5] = $MACHTYPE    (sparc-sun-sunos4.1.4)
7424
7425 doc/{bash.{1,html},bashref.texi}
7426         - Documented BASH_VERSINFO
7427
7428 configure.in, config.h.in
7429         - look for bindtextdomain(), set HAVE_BINDTEXTDOMAIN if found
7430
7431 subst.c
7432         - call sv_locale if TEXTDOMAINDIR is set or changes
7433
7434 locale.c
7435         - handle TEXTDOMAINDIR in set_locale_var; call bindtextdomain if
7436           it is present
7437
7438 tests/array.tests
7439         - added calls to egrep to filter out BASH_VERSINFO and PIPESTATUS,
7440           which can vary from system to system
7441
7442                                    8/19
7443                                    ----
7444 shell.c
7445         - moved line_buffer_stream from here to oslib.c, made it into a
7446           replacement for setlinebuf() if that is not available
7447
7448 externs.h
7449         - extern declaration for setlinebuf()
7450
7451 lib/readline/input.c
7452         - in rl_gather_tyi, punt if chars_avail < 0 after checking input fd
7453
7454                                    8/20
7455                                    ----
7456 builtins/suspend.def
7457         - send SIGSTOP instead of SIGTSTP
7458
7459                                    8/21
7460                                    ----
7461 builtins/colon.def
7462         - added true and false as builtins (undocumented)
7463
7464 CWRU/POSIX.NOTES, doc/bashref.texi
7465         - note that process substitution is not available in posix mode
7466
7467 bashintl.h
7468         - new header file for internationalization, included by locale.c
7469
7470                                    8/22
7471                                    ----
7472 subst.c
7473         - in command_substitute, set istring to NULL before trying to
7474           make the pipe, so if that fails, the code at error_exit:
7475           doesn't try to free it
7476
7477 execute_cmd.c
7478         - when executing a shell script without a leading `#!' internally,
7479           and the shell is not interactive, close the fd to the script
7480           we're reading.  If this is called by the exec builtin, the shell
7481           will not have forked, and the fd will not have been closed, even
7482           though it's marked close-on-exec
7483         - if subshell_argv is non-null, free its members (except 0) and
7484           subshell_argv in shell_execve before reassigning it
7485         - dispose of currently_executing_command before jumping back to
7486           subshell_top_level
7487
7488 builtins/hash.def
7489         - use a sentinel variable so we only initialize the hash table
7490           once in initialize_filename_hashing
7491
7492 shell.c
7493         - don't flush the filename hash table in shell_reinitialize
7494         - free dollar_vars[0] in set_shell_name before assigning it
7495         - don't fetch the current hostname more than once
7496         - don't fetch the current user information more than once unless
7497           the uid changes
7498
7499 parse.y
7500         - initialize_bash_input should free bash_input.name if it is
7501           non-null before zeroing it
7502
7503                                    8/23
7504                                    ----
7505 aclocal.m4
7506         - changed BASH_CHECK_SOCKLIB:  if -lsocket is present, check for
7507           and cache the existence of -lnsl.  Define LIBS appropriately
7508           based on the values of the cache variables rather than relying
7509           on the autoconf tests to do it
7510
7511                                    8/26
7512                                    ----
7513 parse.y
7514         - fix up yy_readline_get and yy_stream_get to fix the sign
7515           extension problem
7516
7517 shell.c
7518         - move the setjmp(top_level) that catches early SIGINTs to the
7519           first statement in main()
7520
7521 Makefile.in
7522         - added a `strip' target to strip the binary
7523
7524 [bash-2.0-beta1 frozen]
7525
7526                                    8/27
7527                                    ----
7528 parse.y
7529         - replaced several static state variables with a single flags word:
7530           parser_state
7531
7532                                    8/28
7533                                    ----
7534 parse.y
7535         - in read_token_word, combined the ${...} case with the other
7536           expansion cases -- the code was identical
7537         - added code to handle ksh-style ((...)) -- equivalent to
7538           `let "..."'.  In fact, the above construct is translated internally
7539           into `let "..."', so error messages output by the evaluator
7540           will contain `let'
7541
7542 expr.c
7543         - changed evalerror to call internal_error so the name of the
7544           shell script is prefixed to the message, if necessary
7545
7546 Makefile.in
7547         - changed RELSTATUS to `beta2'
7548
7549 tests/{arith,new-exp}.{tests,right}
7550         - changed the expected error message because of the change in format
7551           of the arithmetic evaluation error messages in expr.c
7552
7553 builtins/pushd.def
7554         - changed pushd_builtin so `pushd -' is equivalent to `pushd $OLDPWD'
7555
7556 externs.h
7557         - changed the extern declaration for setlinebuf() to avoid having
7558           to include stdio.h before externs.h everywhere
7559
7560                                    8/29
7561                                    ----
7562 error.c
7563         - new function, parser_error, for use by parts of the parser that
7564           don't want to call report_syntax_error
7565
7566 error.h
7567         - extern declaration for parser_error
7568
7569 parse.y
7570         - changed some parts of the parser to use parser_error
7571         - made the ((...)) code #ifdef'd on DPAREN_ARITHMETIC
7572
7573 shell.c
7574         - added a line to the --help output saying to use `bashbug' to
7575           report bugs
7576
7577 configure.in
7578         - added new option: --enable-dparen-arithmetic; it controls
7579           the DPAREN_ARITHMETIC define in config.h
7580         - changed $host_os check for SCO to only enable -DWAITPID_BROKEN
7581           for sco3.2v5; all other SCO versions enable -DMUST_UNBLOCK_CHILD
7582
7583 config.h.in
7584         - added line for DPAREN_ARITHMETIC, modified by configure
7585
7586 doc/{bash.{1,html},bashref.texi}
7587         - documented new ((...)) command and new configuration option
7588
7589 execute_cmd.c
7590         - shell_execve should not try to close default_buffered_input unless
7591           it is >= 0.  Other code that closes it and deallocates the buffer
7592           should set default_buffered_input to -1
7593
7594                                    8/30
7595                                    ----
7596 configure.in
7597         - more changes to LOCAL_CFLAGS for sco machines
7598
7599 error.c
7600         - changed parser_error to handle all cases of the shell being
7601           interactive, not interactive, reading from a script, and reading
7602           from some other file
7603
7604 parse.y
7605         - changed report_syntax_error to call parser_error for consistent
7606           messages
7607
7608 dispose_cmd.c
7609         - change dispose_command to use programming_error instead of
7610           report_error
7611
7612 execute_cmd.c, input.c, general.c
7613         - changed calls to report_error to internal_error, since we don't
7614           want to possibly exit in any of those cases
7615
7616                                     9/3
7617                                     ---
7618 input.c
7619         - changed the `localbuf' type to `unsigned char'
7620
7621 parse.y
7622         - changed yy_stream_get to use feof to test for end of file when
7623           not using getc_with_restart
7624
7625                                     9/6
7626                                     ---
7627 config.h.top
7628         - added a commented-out define for SYS_BASH_LOGOUT, which is a
7629           system-wide .bash_logout file, run when a login shell exits
7630         - added /sbin to STANDARD_UTILS_PATH
7631
7632 builtins/exit.def
7633         - added support for SYS_BASH_LOGOUT
7634
7635                                    9/10
7636                                    ----
7637 lib/readline/{{chardefs,histlib}.h,{bind,histexpand,readline,util,vi_mode}.c}
7638         - changed to_upper to _rl_to_upper and to_lower to _rl_to_lower
7639         - changed digit_value to _rl_digit_value
7640         - changed digit_p to _rl_digit_p
7641         - changed uppercase_p and lowercase_p to _rl_uppercase_p and
7642           _rl_lowercase_p respectively
7643         - changed pure_alphabetic to _rl_pure_alphabetic
7644
7645 support/zecho.c
7646         - new file, implements a bare-bones echo (no -n, no \-escapes),
7647           to be used by tests
7648
7649 tests/rhs-exp.tests
7650         - changed calls to echo to use recho to avoid errors when bash is
7651           configured with --enable-usg-echo-default
7652
7653 tests/more-exp.tests
7654         - changed some calls to echo to use zecho to avoid errors when bash
7655           is configured with --enable-usg-echo-default
7656
7657                                    9/11
7658                                    ----
7659 lib/readline/histexpand.c
7660         - fixed a possible off-by-one error in history_expand_internal when
7661           deciding whether or not to reallocate `result'
7662
7663 expr.c
7664         - fixed expcond() so that an assignment may be supplied as the
7665           token after the `?'
7666         - illegal bases now cause an evaluation error
7667         - multiple base specifications now cause an evaluation error
7668
7669 tests/arith.tests
7670         - added more tests for conditional operator and associativity
7671
7672 tests/{run-heredoc,heredoc.{tests,right}}
7673         - new set of tests for here-documents
7674
7675 builtins/common.c
7676         - print out the name returned by get_name_for_error in
7677           builtin_error()
7678
7679 subst.c
7680         - set this_command_name to NULL before processing command-line
7681           assignment statements so arithmetic evaluation errors don't
7682           print garbage
7683         - according to POSIX.2, echo ${foo?$x} should print the expanded
7684           value of $x, even when it doesn't expand into anything
7685
7686                                    9/12
7687                                    ----
7688 shell.c
7689         - changed the execution of startup files so that $ENV is never
7690           run by a non-interactive shell and an interactive shell begun
7691           as `sh' reads and executes $ENV, as posix specifies
7692
7693 doc/{bash.{1,html},bashref.texi}
7694         - updated description of startup file behavior
7695
7696 doc/Makefile.in
7697         - make sure references to bashref.texi are preceded by $(srcdir)/
7698           so we can build the documentation in another directory just by
7699           typing `make'; e.g. after giving configure the --srcdir option
7700
7701 subst.c
7702         - change to array_remove_pattern to avoid evaluating the `param'
7703           part of the ${param#word} spec twice when doing things like
7704           echo ${A[x=(i+=1)]#${A[y=(i+=2)]}}
7705
7706                                    9/13
7707                                    ----
7708 builtins/bashgetopt.c
7709         - fixed a problem with `;' option specifier (optional argument)
7710
7711 support/config.{sub,guess}
7712         - added cases to recognize CRAY C90 and T90
7713
7714 builtins/ulimit.def
7715         - rewritten almost from scratch to use internal_getopt and to not
7716           mask the return value from getrlimit/setrlimit, and to make it
7717           easier to maintain
7718         - added `-l' option for systems with RLIMIT_MEMLOCK (4.4 BSD)
7719
7720 doc/{bash.{1,html},bashref.texi}
7721         - documented new `-l' option to `ulimit'
7722
7723                                    9/24
7724                                    ----
7725 parse.y
7726         - added `in' to the list of tokens that should not be followed by
7727           a semicolon when combining history lines
7728         - removed the special-case code in history_delimiting_chars that
7729           tried to be smart about `()'
7730
7731                                    9/25
7732                                    ----
7733 print_cmd.c
7734         - fixes to print_group_command from Andreas Schwab
7735         - rewrote indent() to use a single malloced string for the spaces
7736           to print, rather than calling cprintf multiple times
7737
7738 shell.c
7739         - make sure to set the strings in current_user to NULL after freeing
7740           their contents in uidget().
7741
7742 parse.y
7743         - make sure decode_prompt_string quotes the values inserted by the
7744           \w and \W escape sequences using backslashes if the string will be
7745           expanded later because promptvars is set
7746
7747 support/mkdirs
7748         - removed leading `^' from regular expressions to be matched by
7749           `expr' on the advice of meyering@appaloosa.asic.sc.ti.com
7750
7751                                    9/26
7752                                    ----
7753 parse.y
7754         - added a few more possible flag values for parser_state
7755         - changed history_delimiting_chars to not add a semicolon after a
7756           right paren if we're parsing a case statement
7757
7758                                    9/27
7759                                    ----
7760 builtins/ulimit.def
7761         - a few minor cleanups
7762
7763                                    10/1
7764                                    ----
7765 builtins/trap.def
7766         - make sure first_arg is non-empty before calling signal_object_p()
7767
7768 [bash-2.0-beta2 frozen]
7769
7770                                    10/2
7771                                    ----
7772 bashintl.h
7773         - if we have setlocale(), but don't have a definition for LC_ALL,
7774           undefine HAVE_SETLOCALE
7775
7776 configure.in
7777         - set LOCAL_LDFLAGS on AIX 4.2 to allow dynamic loading of builtins
7778
7779 builtins/enable.def
7780         - use correct flags for AIX 4.2 in dlopen call if _AIX is defined
7781
7782 examples/loadables/Makefile
7783         - add sample commands for AIX 4.2
7784
7785                                    10/3
7786                                    ----
7787 variables.c
7788         - new functions: merge_temporary_env(), merge_builtin_env(), to
7789           take temporary_env and builtin_env, respectively, and create
7790           shell variables from them
7791
7792 variables.h
7793         - new extern declarations for merge_temporary_env() and
7794           merge_builtin_env()
7795
7796 execute_cmd.c
7797         - if variable assignments preceds a posix special builtin, and the
7798           shell is in posix mode, those assignments should persist in the
7799           shell environment after the builtin completes
7800
7801 doc/bashref.texi
7802         - modified description of what's changed by posix mode to include
7803           the persistance of assignment statements preceding special builtins
7804
7805 doc/mkposix
7806         - new script to create CWRU/POSIX.NOTES directly from the `Bash
7807           POSIX Mode' node of bashref.texi, like INSTALL is created
7808
7809                                    10/4
7810                                    ----
7811 lib/{malloc,glob,readline}/Makefile.in, builtins/Makefile.in
7812         - don't have autoconf substitute LOCAL_CFLAGS into the CFLAGS
7813           assignment so people on SCO 3.2v[45] can still build with
7814           NO_MEMSCRAMBLE even when they run `make CFLAGS=...'
7815
7816 test.c
7817         - renamed eaccess() to test_eaccess() to avoid conflict with SCO
7818
7819 config.h.bot
7820         - #undef HAVE_GETCWD if GETCWD_BROKEN is defined, so we use the
7821           replacement in getcwd.c
7822
7823 general.c
7824         - fixed a small memory leak in full_pathname that occurs if
7825           getcwd() returns NULL
7826
7827 oslib.c
7828         - new constant string variable: bash_getcwd_errstr, to use when
7829           getcwd() returns NULL
7830
7831 {general,jobs}.c, parse.y, builtins/{cd.def,common.c}
7832         - change calls to getwd() to use getcwd() instead
7833
7834 general.c, builtins/common.c, builtins/cd.def
7835         - changed error behavior when getcwd() returns NULL to use
7836           bash_getcwd_errstr, sys_error(), and strerror(errno) where
7837           appropriate
7838
7839 sig.c
7840         - change a couple of calls to signal to set_signal_handler
7841
7842 aclocal.m4
7843         - added definitions of _popen and _pclose to the BASH_FUNC_GETCWD
7844           macro
7845
7846 configure.in
7847         - added -DPATH_MAX=1024 to LOCAL_CFLAGS for sco3.2v[45] on the
7848           advice of <grog@lemis.de>
7849         - removed check for getwd(3)
7850
7851 externs.h
7852         - removed extern declaration for getwd(), added extern declaration
7853           for getcwd() if HAVE_GETCWD is not defined
7854
7855 oslib.c
7856         - removed definition of getwd(); it is no longer used
7857
7858 lib/readline/rltty.c
7859         - changed SETATTR macro for SCO POSIX systems to call tcsetattr
7860           with TCSANOW, on advice of <wbader@nacs.fast.net>
7861
7862                                    10/7
7863                                    ----
7864 support/mkdirs
7865         - slight change to work around a bug in the HP-UX `expr'
7866
7867                                    10/8
7868                                    ----
7869 lib/readline/vi_mode.c
7870         - changes so that the text inserted with an `i' command is available
7871           to be reinserted with `.'
7872
7873 examples/functions/autoload.v2
7874         - new implementation: uses arrays, keeps a list of autoloaded
7875           functions, allows autoloaded functions to be removed, allows
7876           autoloaded functions to be listed
7877
7878 execute_cmd.c
7879         - when freeing the members of subshell_argv in shell_execve(), free
7880           only the members up to subshell_argc
7881
7882                                    10/9
7883                                    ----
7884 configure.in
7885         - replaced calls to AC_HAVE_FUNCS with AC_CHECK_FUNCS
7886         - replaced calls to AC_FUNC_CHECK with AC_CHECK_FUNC
7887         - replaced calls to AC_HAVE_HEADERS with AC_CHECK_HEADERS
7888         - added additional code to check for libintl.{a,so} for the
7889           internationalization functions if bindtextdomain is not found
7890           in libc
7891         - define HAVE_WAIT3 if AC_FUNC_CHECK(wait3,...) succeeds, rather
7892           than HAVE_FUNC_WAIT3, which is not used in the source
7893         - added a call to AC_FUNC_STRCOLL to check for the presence of a
7894           working strcoll(3)
7895
7896 config.h.in
7897         - removed HAVE_FUNC_WAIT3
7898         - added HAVE_STRCOLL
7899
7900 variables.c, stringlib.c
7901         - move sort_char_array from variables.c to stringlib.c
7902
7903 variables.h, externs.h
7904         - move extern declaration of sort_char_array from variables.h to
7905           externs.h
7906
7907 variables.c
7908         - don't sort the exported environment, even when we're not in
7909           posix mode
7910
7911 stringlib.c
7912         - changed qsort_string_compare to use strcoll(3) if it is available
7913           (HAVE_STRCOLL is defined).  This means that the results of glob
7914           expansions are now sorted in the per-locale collation order
7915
7916 locale.c
7917         - track the value of $LC_COLLATE and call setlocale(LC_COLLATE,...)
7918           when it changes.  Also, set its default value
7919
7920 subst.c
7921         - LC_COLLATE is now a special variable; call sv_locale when it is
7922           assigned to or unset
7923
7924 lib/readline/util.c
7925         - move compare_strings here from complete.c; renamed it
7926           _rl_qsort_string_compare; made it use strcoll(3) if it's
7927           available; made it global so other library files can use it
7928
7929 lib/readline/complete.c
7930         - use _rl_qsort_string_compare instead of static compare_strings.
7931           This means that completions are now sorted in a locale-specific
7932           collation order
7933
7934 lib/readline/funmap.c
7935         - removed static declaration of qsort_string_compare; qsort now
7936           uses _rl_qsort_string_compare instead
7937
7938 oslib.c
7939         - rewrote stricmp, strnicmp; renamed them strcasecmp and
7940           strncasecmp, since they're only compiled in if HAVE_STRCASECMP
7941           is not defined
7942
7943 externs.h
7944         - removed extern declarations of strnicmp, stricmp, replacing them
7945           with declarations of strcasecmp and strncasecmp if HAVE_STRCASECMP
7946           is not defined; removed #defines of stricmp and strnicmp to
7947           strcasecmp and strncasecmp
7948
7949 trap.c
7950         - changed calls to stricmp to direct calls to strcasecmp
7951
7952 Makefile.in
7953         - bumped RELSTATUS to `beta3'
7954
7955 doc/bash.{1,html}
7956         - added mention of LC_COLLATE
7957
7958 doc/bashref.texi
7959         - removed item about sorting environment from the section on posix
7960           mode
7961
7962                                    10/16
7963                                    -----
7964 subst.c
7965         - fixed array_length_reference to return 0 for an unbound variable
7966           and 1 for a variable that is not an array
7967
7968 examples/scripts.v2/cdhist.bash
7969         - package with functions to replace cd and maintain a cd directory
7970           stack
7971
7972 examples/scripts.v2/pmtop
7973         - a `poor man's top' for SunOS 4.x and BSD
7974
7975 examples/scripts.v2/bashrand
7976         - a script to return a random number within a specified range, with
7977           an optional seed
7978
7979 examples/scripts/zprintf
7980         - printf(1) replacement that uses gawk to do the output
7981
7982 doc/{bash.{1,html},bashref.texi}, lib/readline/doc/hsuser.texinfo
7983         - several small corrections
7984
7985                                    10/17
7986                                    -----
7987 variables.c
7988         - changed the calls to list_string_with_quotes and then
7989           expand_words_no_vars in assign_array_var_from_string to a single
7990           call to expand_string.  This behaves more rationally, and closer
7991           to ksh93
7992
7993 subst.c
7994         - commented out list_string_with_quotes -- it is no longer used
7995
7996 lib/readline/terminal.c
7997         - new function, _rl_set_screen_size(int rows, int cols), to set
7998           readline's idea of the screen size
7999
8000 jobs.c, nojobs.c
8001         - make sure that window size changes are propagated back down to
8002           the readline code, by calling _rl_set_screen_size with the
8003           new sizes.  This happens when bash gets a SIGWINCH or if
8004           `checkwinsize' is set with `shopt'
8005
8006                                    10/18
8007                                    -----
8008 support/config.guess
8009         - added code to recognize the various NetBSD ports
8010
8011 lib/readline/signals.c
8012         - don't install a handler for SIGALRM if the containing application
8013           has installed a handler with SA_RESTART as part of the flags.
8014           This is in effect, obviously, only for systems with POSIX signals.
8015
8016 subst.c
8017         - make parameter_brace_expand_length expand variables in a double-
8018           quoted environment so it takes spaces in the variable value into
8019           account
8020
8021                                    10/21
8022                                    -----
8023 command.h
8024         - flags for possible values of subshell_environment telling what
8025           caused the subshell
8026
8027 builtins/command.def
8028         - the `command' builtin should not be setting CMD_NO_FORK at all;
8029           it doesn't know enough about the execution context to do so
8030
8031 execute_cmd.c, subst.c
8032         - set subshell_environment to one of the values in command.h rather
8033           than to `1', so we know what kind of subshell it is (just for
8034           informational purposes; nothing actually uses this yet)
8035
8036
8037                                    10/22
8038                                    -----
8039 execute_cmd.c
8040         - just return EXECUTION_SUCCESS immediately in execute_command_internal
8041           if read_but_dont_execute is set
8042
8043                                    10/23
8044                                    -----
8045 general.c
8046         - fixed check_dev_tty to return immediately if ttyname() returns NULL
8047
8048 builtins/suspend.def
8049         - SIGSTOP cannot be caught, so there's no reason to try to do so
8050
8051 examples/loadables/{finfo,pathchk,print}.c
8052         - minor fixes
8053
8054 pathexp.c
8055         - fix to off-by-one error in setup_ignore_patterns
8056
8057 jobs.c
8058         - try to set the tty pgrp to our pgrp if we change our pgrp to our
8059           pid and become a process group leader.  If it doesn't work,
8060           reset our pgrp to what it was originally and disable job control
8061
8062 aclocal.m4
8063         - new test, BASH_STRUCT_TERMIO_LDISC, to test for a c_line member
8064           of struct termio
8065
8066 config.h.in
8067         - add a new preprocessor variable, TERMIO_LDISC, undefined by default
8068
8069 configure.in
8070         - call BASH_STRUCT_TERMIO_LDISC after BASH_STRUCT_TERMIOS_LDISC
8071
8072                                    10/25
8073                                    -----
8074 lib/readline/terminal.c
8075         - increased the size of the termcap buffers to 4096
8076
8077                                    10/29
8078                                    -----
8079 parse.y
8080         - include memalloc.h for uses of alloca that the code in the
8081           generated bison parser does not catch (e.g., HP-UX 10.10)
8082
8083 aclocal.m4
8084         - new test, BASH_KERNEL_RLIMIT_CHECK, to check whether a given
8085           HP-UX machine needs _KERNEL defined for the RLIMIT_* defines in
8086           <sys/resource.h> (9.05, 10.01 yes, 10.10,10.20 no)
8087
8088 configure.in
8089         - call BASH_KERNEL_RLIMIT_CHECK if $host_os begins with `hpux'
8090
8091 config.h.in
8092         - new #undef for RLIMIT_NEEDS_KERNEL
8093
8094 builtins/ulimit.def
8095         - only define _KERNEL before including <sys/resource.h> if HPUX
8096           and RLIMIT_NEEDS_KERNEL are both defined
8097
8098 [bash-2.0-beta3 frozen]
8099
8100                                    11/1
8101                                    ----
8102 locale.c
8103         - if setting LC_ALL to a null value (as is done when `unset LC_ALL'
8104           is run), call setlocale() to set LC_ALL back to default_locale
8105
8106 lib/readline/readline.c
8107         - moved i18n code from here to nls.c
8108
8109 lib/readline/Makefile.in, Makefile.in
8110         - new readline library member, nls.c
8111
8112 lib/readline/nls.c
8113         - new file, with internationalization code from readline.c (such as
8114           it is)
8115         - updated legal_lang_values to just contain a list of codesets
8116         - added code modified from a diff sent by Ulrich Drepper
8117           <drepper@cygnus.com> to parse a locale specification and isolate
8118           and normalize the codeset part, for checking against the values
8119           in legal_lang_values
8120
8121                                    11/4
8122                                    ----
8123 builtins/setattr.def, locale.c, aclocal.m4, oslib.c
8124         - minor cleanups
8125
8126                                    11/5
8127                                    ----
8128 lib/readline/complete.c, test.c, trap.c
8129         - more minor cleanups
8130
8131                                    11/6
8132                                    ----
8133 parse.y
8134         - added a `flags' parameter to parse_matched_pair, currently unused
8135
8136                                    11/7
8137                                    ----
8138 configure.in, config.h.in
8139         - add a check for time_t, defaulting to `long' if it's not
8140           defined in <sys/types.h>
8141
8142 builtins/fc.def
8143         - use `time_t *' instead of `long *' in call to time()
8144
8145                                    11/8
8146                                    ----
8147 configure.in
8148         - removed check for getpwent in libsun.a; it's not necessary for
8149           recent versions of irix (irix[56].?)
8150
8151                                    11/11
8152                                    -----
8153 test.c
8154         - used `&&' where `||' was needed when testing if HAVE_LSTAT and
8155           S_IFLNK are both defined
8156
8157 [bash-2.0-beta3 net release version frozen]
8158
8159                                    11/12
8160                                    -----
8161 builtins/getopt.c
8162         - when sh_getopt detects that a required argument is not present,
8163           set sh_optarg to "" so that getopts does the right thing
8164
8165                                    11/15
8166                                    -----
8167 builtins/ulimit.c
8168         - made the default (without -H or -S) report the soft limit and set
8169           both soft and hard limits (like sh and ksh)
8170
8171 expr.c
8172         - changed the maximum base in base#num constants to 64, implemented
8173           just like ksh93
8174
8175 doc/{bash.{1,html},bashref.texi}
8176         - updated description of ulimit builtin to new behavior when
8177           neither -H nor -S is supplied
8178         - updated arithmetic evaluation section with new maximum base and
8179           explanation of how numbers between 10 and 63 are represented
8180
8181 lib/readline/vi_mode.c
8182         - in rl_vi_done_inserting, don't try to save the text entered while
8183           in insert mode unless rl_undo_list is non-null (indicating that
8184           there was actually some text to be saved)
8185
8186                                    11/19
8187                                    -----
8188 lib/readline/tcap.h
8189         - new file, for termcap library definitions.  Uses <termcap.h> if
8190           it is available
8191
8192 lib/readline/rldefs.h
8193         - remove inclusion of termcap.h; now included in tcap.h
8194
8195 lib/readline/{terminal,display,readline}.c
8196         - include tcap.h
8197
8198 lib/readline/Makefile.in
8199         - update dependencies to include tcap.h
8200
8201                                    11/21
8202                                    -----
8203 lib/readline/complete.c
8204         - broke the code that computes the lcd of the list of completion
8205           matches out into a separate function, compute_lcd_of_matches()
8206
8207 lib/readline/complete.c
8208         - call compute_lcd_of_matches after calling the application-specific
8209           completion ignore function, since it may have eliminated some
8210           names from the match list
8211
8212 builtins/cd.def
8213         - replaced instances of MAXNAMLEN in the spelling correction code
8214           with PATH_MAX
8215
8216 lib/readline/terminal.c
8217         - new termcap capabilities: kh (sent by Home key) and kH (sent by
8218           End key) automatically bound to beginning-of-line and end-of-line
8219           respectively in emacs_standard and vi_movement maps
8220
8221 mailcheck.c
8222         - fix to remember_mail_dates so any message following the
8223           filename is saved correctly
8224
8225                                    11/22
8226                                    -----
8227 lib/readline/bind.c
8228         - fixed extern declaration of _rl_parsing_coditionalized_out
8229           to match declaration in readline.c
8230
8231                                    11/25
8232                                    -----
8233 doc/{bash.{1,html},bashref.texi}
8234         - fixed a gross documentation error in the description of
8235           ${parameter:offset:length} (offset and length were transposed)
8236         - slight changes to the description of output redirection
8237
8238 subst.c
8239         - new function, quoted_substring, to return substrings of variables
8240           when the expression is within double quotes and the value has
8241           CTLESC characters embedded within it.  Called by
8242           parameter_brace_substring
8243         - get_var_and_type should return VT_POSPARMS if `*' is passed as
8244           the variable name
8245         - added a new first parameter for pos_params -- the variable name
8246         - changed pos_params to obey the rules for "$*" wrt using the
8247           first character of IFS as the separator in the result
8248         - if an unquoted $* or $@ is expanded, call quote_escapes on the
8249           result to protect any special characters from inadvertently
8250           causing quoting
8251
8252                                    12/3
8253                                    ----
8254 builtins/ulimit.def
8255         - corrected a misspelling of `unlimited'
8256         - added support for linux RLIMIT_AS resource limit for -v option
8257           and changed the block multiplier to 1024 if we have RLIMIT_VMEM
8258           or RLIMIT_AS
8259
8260                                    12/5
8261                                    ----
8262 lib/readline/readline.c
8263         - fix rl_insert to handle a count of exactly 1024
8264
8265 shell.c
8266         - new function: unbind_args(), which removes all the positional
8267           parameters.  Just calls remember_args(NULL, 1)
8268
8269 execute_cmd.c
8270         - call unbind_args when executing a subshell, after setting up
8271           subshell_argX
8272
8273 bashintl.h
8274         - include <libintl.h> if HAVE_LIBINTL_H defined
8275
8276 config.h.in
8277         - add HAVE_LIBINTL_H define
8278
8279 configure.in
8280         - add call to AC_CHECK_HEADERS for libintl.h
8281
8282 doc/Makefile.in
8283         - added infodir and various mandir defines for completeness
8284
8285 Makefile.in
8286         - changed some of the *dir defines to use the autoconf values
8287           (e.g., bindir = @bindir@)
8288         - changed manroot to mandir, removed old mandir and manext variables
8289         - added `manpfx' variable; should be either `man' or `cat'
8290
8291                                    12/6
8292                                    ----
8293 lib/readline/readline.c
8294         - fixed rl_digit_loop so it once again displays the argument count
8295           as it's being entered (added calls to _rl_save_prompt and
8296           _rl_restore_prompt)
8297
8298                                    12/7
8299                                    ----
8300 support/config.guess
8301         - recognize netbsd/vax
8302         - recognize openbsd on all supported platforms
8303         - recognize tenon's machten running on powerpc and macintosh
8304
8305                                    12/9
8306                                    ----
8307 support/config.guess
8308         - added all sorts of systems from config.guess distributed with
8309           autoconf-2.12
8310
8311                                    12/10
8312                                    -----
8313 subst.c
8314         - new function quoted_strchr(); does the same thing as strchr but
8315           honors shell backslash and CTLESC quoting conventions
8316         - parameter_brace_patsub now calls quoted_strchr
8317
8318                                    12/11
8319                                    -----
8320 shell.c
8321         - if the shell is named `-su', run the normal login shell startup
8322           files, even if the shell is not interactive.  This handles the
8323           case of `su - username -c command' compatibly
8324
8325 lib/readline/readline.c
8326         - minor change to rl_digit_loop so that M-- and M--1 are equivalent,
8327           as the prompt for digit arguments has always implied
8328
8329 lib/malloc/malloc.c
8330         - added definitions of calloc() and cfree(), compiled in unless
8331           NO_CALLOC is defined to cpp
8332
8333
8334                                    12/16
8335                                    -----
8336 parse.y
8337         - protect uses of history_expansion_inhibited with #ifdef
8338           BANG_HISTORY
8339
8340 [bash-2.0-release candidate frozen]
8341
8342 builtins/common.c
8343         - changed backslash_quote to quote a tilde if it's the first
8344           character in the string
8345
8346                                    12/17
8347                                    -----
8348 aclocal.m4
8349         - changed BASH_CC_WORKS to provide a cross-compiling default for
8350           better error messages
8351
8352 configure.in
8353         - generated configure using autoconf-2.12
8354         - changed the default value of CFLAGS to `-g -O2'
8355
8356                                    12/18
8357                                    -----
8358 aclocal.m4
8359         - look for /var/spool/mail before /usr/spool/mail when checking
8360           for the default mail directory
8361
8362 jobs.c, builtins/shopt.def
8363         - fixed a couple of `macro replacement within a string literal'
8364           problems
8365
8366 Makefile.in
8367         - removed `realclean' target
8368
8369 shell.c
8370         - changed the first line ouput by bash --version to conform to
8371           the latest GNU coding standards (replace space between version
8372           and machtype with a hyphen)
8373
8374                                    12/19
8375                                    -----
8376 execute_cmd.c
8377         - when looking at the debug trap in execute_function and
8378           execute_command_internal, make sure it's trapped and not
8379           ignored before trying to save the value of the trap string
8380
8381                                    12/20
8382                                    -----
8383 trap.c
8384         - changed set_signal and ignore_signal to handle EXIT_TRAP and
8385           DEBUG_TRAP specially, so we don't try to fetch signal handlers
8386           or do other unnecessary things
8387
8388                                    12/22
8389                                    -----
8390 builtins/ulimit.def
8391         - if the current euid is not 0, and we're trying to set the hard
8392           limit of a resource to RLIM_INFINITY, set it to the current hard
8393           limit to avoid error messages
8394
8395 builtins/read.def
8396         - fix for bug that caused core dump if line read had leading white
8397           space and IFS was set to ''
8398
8399 [bash-2.0-release frozen]