460f6e6317062cdef9c000bd619fc1ff47464109
[platform/upstream/bash.git] / CWRU / changelog
1                                 12/23/1996
2                                 ----------
3 [bash-2.0 released]
4
5                                    12/27
6                                    -----
7 configure.in
8         - don't automatically use GNU malloc on FreeBSD, the builtin one
9           is supposed to be better (but doesn't have the debugging hooks)
10
11 builtins/exec.def
12         - check that full_pathname(command) doesn't return NULL because of
13           inaccessible parent directories
14
15 support/config.sub
16         - recognize OpenBSD
17
18 execute_cmd.c
19         - broke the code that opens a file for output redirection when in
20           noclobber mode out into a separate function: noclobber_open().
21           This tries to avoid race conditions and file replacement between
22           stat(2) and open(2)
23
24 subst.c
25         - make sure pat_subst does not run off the end of its return
26           string when copying the unmatched portion of the input string
27
28                                    12/30
29                                    -----
30 doc/Makefile.in
31         - don't install readline.3 by default
32
33 lib/tilde/tilde.c
34         - removed an unnecessary check for string[i] being non-null in
35           tilde_find_suffix
36
37                                    12/31
38                                    -----
39 support/config.{sub,guess}
40         - merged in changes from config.sub in autoconf-2.12 distribution
41
42 lib/readline/readline.c
43         - in rl_newline, only call _rl_vi_done_inserting and _rl_vi_reset_last
44           if readline is currently in vi mode
45
46 lib/readline/display.c
47         - corrected a misuse of inv_lbreaks where vis_lbreaks was wanted in
48           the code that decides whether the cursor is at the beginning of
49           an otherwise-empty line
50
51                                     1/2
52                                     ---
53 support/bashbug.sh
54         - fixed a typo, thanks to eggert@twinsun.com
55
56 aclocal.m4
57         - new test, BASH_STRUCT_DIRENT_D_FILENO, testing for d_fileno member
58           of struct dirent
59
60 configure.in
61         - call BASH_STRUCT_DIRENT_D_FILENO
62
63 config.h.in
64         - new #define for STRUCT_DIRENT_HAS_D_FILENO
65
66 lib/posixheaders/posixdir.h
67         - only define d_fileno as d_ino if STRUCT_DIRENT_HAS_D_INO is defined
68           and STRUCT_DIRENT_HAS_D_FILENO is not defined.  This fixed the
69           problem of compiling getcwd.c on SunOS4.1.4 with cc
70
71                                     1/3
72                                     ---
73 lib/readline/complete.c
74         - fix a memory-used-after-freed bug reported by Andreas Schwab
75
76 configure.in
77         - call BASH_CHECK_SOCKLIB only if getpeername is not found in libc
78           (ac_cv_func_getpeername = no)
79
80                                    1/13
81                                    ----
82
83 builtins/getopt.h
84         - change #define guard to _SH_GETOPT_H to avoid similar guards in
85           /usr/include/getopt.h (Dec OSF/1 4.x, for example)
86
87 variables.h
88         - fix assign_array_from_string so that it rejects attempts to assign
89           to readonly variables
90
91 subst.c
92         - fix verify_substring_values to handle offsets that are past the
93           end or before the beginning (in the case of a negative offset)
94           of the expanded variable value
95
96                                    1/14
97                                    ----
98 bashline.c
99         - fix a problem where any completion after a `cmd` command
100           substitution would inappropriately attempt command completion,
101           even if the previous command substitution was correctly closed
102
103 builtins/evalstring.c
104         - unwind_protect remember_on_history even if the shell is not
105           interactive, since history can now be used in scripts, and
106           `source' will turn off interactive_shell before calling
107           parse_and_execute
108
109 jobs.c
110         - new function get_job_by_pid(pid, block) to translate a pid to
111           a job number.  The block argument says whether or not to block
112           SIGCHLD
113
114 jobs.h
115         - new extern declaration for get_job_by_pid
116
117 builtins/jobs.def
118         - call get_job_by_pid if an argument appears to be a pid rather
119           than a jobspec
120
121 configure.in
122         - configure --without-gnu-malloc automatically on MachTen 4.x
123
124 builtins/cd.def
125         - change to mindist() so that a best guess of `.' returns 3,
126           which means not reasonable
127
128 lib/posixheaders/memalloc.h
129         - changed hpux_9 to __hpux, since the new config stuff doesn't
130           define hpux_9
131
132 subst.c
133         - fix parameter_brace_patsub to handle null patterns (doesn't
134           do anything)
135
136 oslib.c
137         - slight change to bzero replacement
138
139 support/bashbug.sh
140         - changed TEMP to be /tmp/bbug.$$ as a sop to systems with 14-char
141           file names
142
143 doc/bashref.texi
144         - add note to POSIX Mode section that the output of `set' when
145           invoked without arguments is sorted when in POSIX mode
146
147                                    1/15
148                                    ----
149 support/recho.c
150         - a couple of changes prompted by a `gcc -Wall'
151
152 subst.c
153         - changed ASSIGN_RETURN macro to use the do...while(0) idiom to
154           avoid problems with its multiple statements
155
156 builtins/setattr.def
157         - a bad identifier given to readonly or export without an assignment
158           statement (e.g. `readonly a[5]') is an error, but not an assignment
159           error (i.e., return EXECUTION_FAILURE rather than EX_BADASSIGN)
160
161 tests/{{array,new-exp}.,tilde-}tests
162         - added `set +o posix' at the beginning to disable POSIX mode, which
163           causes some of the tests to fail.  Some systems (e.g. LINUX-FT),
164           set POSIXLY_CORRECT by default
165
166 tests/test-tests
167         - added a warning if $UID is 0 to the effect that the test suite
168           should not be run as root
169         - worked around the `noread' and `nowrite' tests failing when run
170           as root
171
172 test.c
173         - began removing the remains of the STANDALONE code, since test is
174           included in GNU shellutils
175
176                                    1/16
177                                    ----
178 lib/readline/{readline,display}.c
179         - a couple of slight changes to build on Win95 using djgpp (reported
180           by x-aes@telelogic.se)
181
182 Makefile.in
183         - changed TERMCAP_LIBDIR to TERM_LIBDIR, so building the termcap
184           library (if necessary) should work now
185
186 bashline.c
187         - new function: quote_word_break_characters(), to backslash-quote 
188           characters in a filename that the readline completion code would
189           treat as word breaks
190         - change bash_quote_filename to call quote_word_break_characters if
191           the completion quoting style says to use backslashes
192         - add `:' to rl_filename_quote_characters, since it's part of
193           filename_word_break_characters
194
195 lib/posixheaders/posixjmp.h
196         - new file, with half of bashjmp.h
197         - posixjmp.h and lib/readline/posixjmp.h are symlinks to this file
198
199 bashjmp.h
200         - include "posixjmp.h" for possible redefinitions of setjmp/longjmp
201           and procenv_t
202
203                                    1/17
204                                    ----
205 shell.c
206         - bad options now cause the standard shell usage message (a subset
207           of what `bash --help' prints) to be displayed on stderr
208
209 trap.c
210         - don't free the trap command for a DEBUG trap in
211           restore_default_signal if SIG_INPROGRESS is set -- there's already
212           a pointer saved to the old value in _run_trap_internal.  This
213           makes bashdb run better, too
214
215 examples/bashdb/bashdb.{pre,fns}
216         - a couple of minor fixes; it actually has a chance of working now
217
218                                    1/21
219                                    ----
220 config.h.in
221         - add a define for <dlfcn.h>, HAVE_DLFCN_H
222
223 configure.in
224         - look for <dlfcn.h>, define HAVE_DLFCN_H if found
225
226 builtins/enable.def
227         - include <dlfcn.h> only if HAVE_DLFCN_H is defined
228
229 lib/readline/display.c
230         - renamed clear_to_eol to _rl_clear_to_eol and made it global, so
231           other library files (readline.c) can use it
232         - new function _rl_clear_screen, to clear the screen with the right
233           termcap escape sequence
234
235 lib/readline/readline.c
236         - call _rl_clear_to_eol and _rl_clear_screen instead of using tputs
237         - extern declarations for _rl_clear_to_eol and _rl_clear_screen
238
239                                    1/22
240                                    ----
241 mailcheck.c
242         - fixed a problem in make_default_mailpath() where a slash was not
243           added between the default mail directory and the username
244
245                                    1/23
246                                    ----
247 stringlib.c
248         - added a fourth parameter to ansicstr: the length of the returned
249           string
250
251 externs.h
252         - changed declaration of ansicstr
253
254 parse.y
255         - changed call to ansicstr -- saves a call to strlen
256
257 builtins/echo.def
258         - changed call to ansicstr
259         - if do_v9 is non-zero, use putchar to output the string instead
260           of printf, since there may be embedded NULL characters
261
262 doc/{bash.1,bashref.texi}, builtins/trap.def
263         - modified the `trap' documentation to make it clearer that trap
264           takes multiple signal specs as arguments
265
266 jobs.c, nojobs.c, jobs.h
267         - renamed initialize_jobs to initialize_job_control, added an
268           argument (force)
269
270 jobs.c
271         - set shell_tty to fileno(stderr) in initialize_job_control if
272           the shell is not interactive.  This fixes the problem of bad
273           tty pgrps when monitor mode is turned on in a non-interactive
274           shell
275
276 sig.c
277         - made initialize_terminating_signals do only that; moved the rest
278           of the code that used to be there into a new function:
279           initialize_shell_signals, which calls initialize_terminating_signals
280           if the shell is interactive
281         - initialize_terminating_signals is now extern
282         - made reset_terminating_signals return immediately if
283           termsigs_intitialized is zero, meaning that
284           initialize_terminating_signals has not been called
285
286 sig.h
287         - new extern declaration for initialize_terminating_signals
288
289 trap.c
290         - call initialize_terminating_signals from set_signal if sig is
291           EXIT_TRAP and the shell is not interactive.  Since the terminating
292           signals do not need to be initialized until a trap on exit is
293           set, not doing that at startup should result in a speed increase
294           for scripts
295
296 execute_cmd.c
297         - save and restore command->flags in time_command, so you can use
298           `time command' in a loop
299
300                                    1/24
301                                    ----
302 lib/readline/display.c
303         - fix redisplay code to wrap correctly if the prompt is longer than
304           the screen width (reported by bos@Eng.Sun.COM)
305
306 lib/readline/undo.c
307         - don't include <setjmp.h>, it's not needed
308
309 lib/readline/{util,readline}.c
310         - include "posixjmp.h" instead of <setjmp.h>
311         - readline_top_level is now a `procenv_t' instead of a `jmp_buf'
312           (now readline uses the correct posix semantics for preserving
313           the signal mask and other things across longjmp)
314
315 parse.y
316         - fixes to push_string/pop_string to make them more general -- they
317           now can be used generally, instead of having to be associated
318           with an alias being expanded
319         - fixes to the parser so that it parses (( ls abc; ls def); ls ghi)
320           as a nested subshell command for backwards compatibility.  Broke
321           the double-paren expression parsing off into a new function:
322           parse_arith_cmd, called from read_token when a `((' is seen.  If
323           it looks like an arithmetic command, return `let' and set things
324           up so that the expression is returned as a double-quoted string
325           by the next call to read_token.  If it's a nested subshell, push
326           the text we parsed onto the list of strings for later consumption
327           and return `('
328
329 lib/glob/glob.c
330         - fix glob_vector so it doesn't short-circuit checking a filename if
331           it starts with a `.' and the pattern starts with `\.' (if
332           noglob_dot_filenames is set).  This makes `".junk2"*' match
333           `.junk2.txt' correctly
334
335                                    1/27
336                                    ----
337 support/bashbug.sh
338         - ask for confirmation before sending the bug report
339
340 builtins/fc.def
341         - when editing and re-executing a multiline command, make sure
342           current_command_line_count is initialized and then incremented
343           for each line read from the file so that the lines added to
344           the history list by fc_replhist and fc_addhist obey the `lithist'
345           and `cmdhist' shopt options.  Reported by tibbitts@pb.seflin.org
346
347                                    1/28
348                                    ----
349 lib/readline/readline.h
350         - added a couple of extern declarations for variables described in
351           the documentation but heretofore undeclared
352
353 builtins/ulimit.def
354         - try to catch some classes of integer overflows before calling
355           set_limit
356
357                                    1/29
358                                    ----
359 parse.y
360         - push and pop a `(' delimiter while parsing a $(...) construct, so
361           the history code doesn't try to inappropriately add a `;' when
362           a newline appears in the `...'
363
364 aclocal.m4
365         - new macro, BASH_STRUCT_WINSIZE, which looks for `struct winsize'
366           in <sys/ioctl.h> (or one of the files it includes)
367
368 configure.in
369         - call BASH_STRUCT_WINSIZE
370         - slightly reorganized the calls to bash-specific macros
371
372 config.h.in
373         - add an `#undef STRUCT_WINSIZE_IN_SYS_IOCTL'
374
375 jobs.c, nojobs.c
376         - only look in sys/ptem.h for struct winsize if
377           STRUCT_WINSIZE_IN_SYS_IOCTL is not defined to cpp
378
379                                    1/30
380                                    ----
381 .{distribution,patchlevel}
382         - renamed to _{distribution,patchlevel}
383
384 configure.in
385         - create a variable BASHVERS, from the contents of _distribution,
386           and a variable BASHPATCH, from the contents of _patchlevel,
387           (using m4 magic so we don't have to distribute .distribution
388           and .patchlevel) and substitute them into Makefile.in
389
390 Makefile.in
391         - use Version and PatchLevel variables instead of the contents of
392           .distribution and .patchlevel, respectively.  These are set by
393           configure
394         - removed `.machine' from targets and dependencies
395
396 support/mkversion.sh
397         - new shell script to handle updating version.h, replaces mkversion.c
398           (which is now overkill)
399
400 support/mkdist
401         - don't bother with writing .distribution and .patchlevel files,
402           since they're no longer distributed
403
404 support/mknewvers.sh
405         - simple bash script to make new version files.  It can increment
406           the major or minor version numbers or patchlevel, or take a
407           completely new version number (e.g., 2.01) as an argument
408
409 doc/Makefile.in
410         - added support for the `install-info' command to update the info
411           directory file after installing bash.info
412
413                                    1/31
414                                    ----
415 builtins/help.def
416         - fix core dump with `help --'
417
418 susbt.c
419         - make call_expand_word_internal obey the convention that if
420           expand_word_internal returns &expand_word_{fatal,error}, then
421           w->word has already been freed
422         - return &expand_word_fatal from expand_word_internal if the shell
423           is not interactive and `set -u' has been executed
424
425 test.c, general.c
426         - moved group_member from test.c to general.c
427
428 externs.h, general.h
429         - moved extern declaration of group_member from externs.h to general.h
430
431 general.c
432         - broke the code that initializes the group array out into a new
433           function, initialize_group_array()
434         - initialize_group_array() now initializes an array even if the OS
435           does not have getgroups().  If it does not, an array with one
436           element (the real gid) is created
437         - call sysconf(_SC_NGROUPS_MAX) if sysconf is available and
438           _SC_NGROUPS_MAX is defined
439         - new function, char **get_group_list(int *), to return an array
440           of strings made from the groups list
441
442 variables.c
443         - new dynamic array variable: GROUPS, expands to the group set as
444           obtained with getgroups() (or whatever initialize_group_array()
445           makes)
446
447 doc/{bash.{1,html},bashref.texi}
448         - added description of GROUPS variable
449
450 test/test-tests
451         - before modifying the setgid bit on /tmp/setgid, try to change its
452           group to ${GROUPS[0]} 
453
454                                     2/3
455                                     ---
456 aclocal.m4
457         - new autconf macro, BASH_MISC_SPEED_T, to see if speed_t is defined
458           in <sys/types.h>
459
460 configure.in
461         - call BASH_MISC_SPEED_T
462
463 config.h.in
464         - add `#undef SPEED_T_IN_SYS_TYPES'
465
466 lib/readline/tcap.h
467         - include `rltty.h' if HAVE_TERMCAP_H and __linux__ are defined, but
468           SPEED_T_IN_SYS_STYPES is not, before including <termcap.h>
469
470 support/mksignames.c, siglist.c
471         - add support for 4.4 BSD SIGLOST
472
473 support/config.guess
474         - add support for recognizing QNX based on `uname' output
475
476 Makefile.in
477         - make sure recho and zecho are compiled with the same set of CC
478           options as the rest of the sources
479
480 lib/readline/bind.c
481         - change calls to rl_generic_bind to cast the third argument to
482           (char *) where necessary
483
484 command.h
485         - two new flags: CMD_AMPERSAND (currently unused), and CMD_STDIN_REDIR,
486           which means that this command should have its standard input
487           redirected from /dev/null if there are not any explicit redirections
488           to stdin
489
490 execute_cmd.c
491         - a redirection of type r_inputa_direction is no longer added at the
492           beginning of the redirection chain for an async command;
493           CMD_STDIN_REDIR is set in the flags instead
494         - new function: stdin_redirects: returns the number of redirections to
495           stdin in a chain of redirections
496         - new functions: async_redirect_stdin() to open /dev/null and make it
497           file descriptor 0
498         - changes to make CMD_STDIN_REDIR propagate to all of the necessary
499           functions (like execute_simple_command)
500         - execute_disk command now takes the flags from simple_command rather
501           than just the CMD_NO_FORK flag as its last argument
502         - various places after make_child is executed (in the child) check for
503           CMD_STDIN_REDIRECT (and no stdin redirections or piping) and call
504           async_redirect_stdin
505         - stdin_redir is now global
506
507 eval.c
508         - set stdin_redir to 0 just before calling execute_command so it
509           gets reset to a known value and doesn't persist across commands
510
511                                     2/4
512                                     ---
513 builtins/ulimit.def
514         - add a stub function for ulimit(2) on systems without HAVE_RESOURCE
515           or HAVE_ULIMIT that just sets errno to EINVAL and returns -1 --
516           QNX is one such system
517
518 bashhist.c
519         - pre_process_line needs to protect all occurrences of hist_verify
520           with #ifdef READLINE
521
522 builtins/shopt.def
523         - hist_verify needs to be protected with #ifdef READLINE, not
524           #ifdef HISTORY
525
526                                     2/5
527                                     ---
528 support/config.{guess,sub}, configure.in
529         - chages to better support the Harris Night Hawk
530
531 [many files]
532         - changes for things pointed out by gcc -Wall
533
534 lib/glob/Makefile.in
535         - make sure -DSHELL is included in CCFLAGS so that globbing is
536           interruptible
537
538 lib/malloc/malloc.c
539         - extern declaration for botch: if botch is #defined, it should be
540           the name of a void function
541
542 configure.in,Makefile.in,builtins/Makefile.in,
543 lib/{glob,malloc,readline,tilde}/Makefile.in
544         - add a LOCAL_DEFS variable, substituted from configure into the
545           various Makefiles.  It's set to -DSHELL, so that define gets
546           passed to all sub-makes without doing anything special
547
548 lib/readline/readline.c
549         - change to rl_digit_loop to make it compatible with GNU emacs:
550           if a key bound to `universal-argument' is read after reading
551           some digits, it terminates the argument but is otherwise
552           ignored.  This is how people can insert repeated digits
553
554 doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo
555         - changed description of `universal-argument' to describe how
556           to terminate a numeric argument
557
558                                     2/6
559                                     ---
560 jobs.c
561         - changed kill_pid to diddle the job and process data structures
562           if we're sending SIGCONT to a stopped job with `kill' so that
563           the shell knows the job is running again.  ksh93 does this
564
565                                     2/7
566                                     ---
567 unwind_prot.c
568         - changed bcopy to FASTCOPY
569
570 builtins/enable.def
571         - changed pointer arithmetic in delete_builtin to just subtract
572           the head of the builtins list (shell_builtins) from a pointer
573           to the builtin to be deleted (b) to find its index in the list
574           on ANSI C systems
575
576                                    2/10
577                                    ----
578 lib/readline/bind.c
579         - when using old-style keynames to bind to a new-style macro,
580           pass an array of type (unsigned char *) to rl_macro_bind
581
582 builtins/getopt.c
583         - change sh_getopt to return EOF if nextchar is empty or NULL
584           and sh_optind is greater than argc.  This can happen if a
585           script mixes calls to `getopts' with calls to `shift'
586
587                                    2/11
588                                    ----
589 print_cmd.c
590         - fixed make_command_string_internal so that commands with the
591           CMD_TIME_POSIX flag set print `time -p' instead of `time'
592         - changed print_redirection_list so the here documents are
593           printed after all the other redirections, and followed by a
594           newline (rather than a possible semicolon)
595         - added a new variable, was_heredoc, to avoid adding a semicolon
596           at the beginning of an empty line after printing the heredoc
597           ending delimiter
598
599 execute_cmd.c
600         - don't put the gnu_argv_flags into the environment any more; it's
601           proven to be a bad idea
602
603 configure.in
604         - set LOCAL_CFLAGS to `-DSunOS5' on Solaris 5.5[.x]
605
606 builtins/echo.def
607         - only call fflush() after printing each word on SunOS 5.5, since
608           that's the system with the bug that prompted its inclusion in
609           the first place
610
611 support/mksignames.c
612         - added support for more system-specific signals from AIX 4.2,
613           changed initialization order so that system-specific signals
614           are done first, before the common signals
615
616                                    2/12
617                                    ----
618 execute_cmd.c
619         - broke the code that creates a file containing the text of a
620           here document out into a separate function: here_doc_to_fd
621         - create the temp file used for a here document with mode 600
622         - open the temp file used for a here document with O_EXCL
623
624 shell.h
625         - changed the uid members of struct user_info to be of type uid_t
626           and the gid members to be of type gid_t
627
628 parse.y
629         - changed the type of the `type' argument to init_yy_io() to be
630           `enum stream_type', since that's what's always passed
631
632 input.h
633         - changed the function prototype for init_yy_io so the third arg is
634           type `enum stream_type'
635
636 externs.h
637         - added a prototype for getcwd, if HAVE_GETCWD is not defined
638
639 builtins/umask.def
640         - changed all variables that are used as arguments to or save the
641           return value from umask(2) to be of type mode_t
642         - changed print_symbolic_umask to take an argument of type mode_t
643
644                                    2/13
645                                    ----
646 jobs.c
647         - if old_sigint_handler is set to SIG_DFL, as it will be in a script
648           without a trap on SIGINT installed, call termination_unwind_protect()
649           directly from waitchld()
650
651                                    2/14
652                                    ----
653 configure.in
654         - added a section before the call to BASH_CHECK_LIB_TERMCAP to
655           set a variable prefer_curses on some systems (AIX, for one)
656
657 aclocal.m4
658         - in BASH_CHECK_LIB_TERMCAP, don't return -ltermcap if $prefer_curses
659           is non-empty
660
661 lib/readline/Makefile.in
662         - redid the dependencies
663
664                                    2/17
665                                    ----
666 hashlib.c, getcwd.c
667         - include `bashansi.h' instead of stdlib.h and string.h
668
669 error.c, siglist.c, xmalloc.c, builtins/{common,evalfile,mkbuiltins,psize}.c,
670 builtins/{exec,exit,fg_bg,hash,history}.def
671         - include `bashtypes.h' instead of directly including <sys/types.h> 
672
673 builtins/fc.def
674         - include ../bashtypes.h and ../posixstat.h instead of bashtypes.h
675           and posixstat.h
676
677 builtins/mkbuiltins.c
678         - include ../posixstat.h instead of <sys/stat.h>
679
680 general.h
681         - include `bashtypes.h' if RLIMTYPE is defined, so we can fetch
682           a definition of quad_t (or whatever) from <sys/types.h> before
683           using it in a function prototype
684
685 Makefile.in, builtins/Makefile.in
686         - updated dependencies
687
688                                    2/18
689                                    ----
690 builtins/set.def
691         - new function, set_posix_mode, called when `set [-+]o posix'
692           or `shopt -[su] -o posix' is executed.  It sets or unsets
693           $POSIXLY_CORRECT and calls sv_strict_posix
694
695 subst.c
696         - in sv_strict_posix, call posix_readline_initialize only if
697           the shell is interactive (interactive_shell != 0)
698
699 shell.c
700         - if we are acting like `sh', call posix_readline_initialize
701           if the shell is interactive
702         - moved the code that does posix.2 mode initialization after
703           interactive_shell is set, and call posix_readline_initialize
704           if interactive_shell is non-zero
705
706 bashwait.h
707         - renamed to unionwait.h, since that is what it defines
708
709 posixwait.h
710         - moved the POSIX 1003.1 job control defines here from jobs.h
711
712 jobs.h
713         - include `posixwait.h'
714
715                                    2/19
716                                    ----
717 braces.c
718         - if SHELL is defined, pass the contents of new-style command
719           substitution through without expanding brace constructs between
720           the parens -- let the subshell do it
721
722 subst.c
723         - when brace-expanding words, preserve the flags (word->flags) if
724           brace expansion does not change the word.  This fixes the problem
725           of things like
726
727                  local -a avar=( ${PATH//: } );
728
729 bashline.c
730         - have shell_expand_line pass a copy of rl_line_buffer to expand_string
731           in case there are substitution errors and the string gets freed
732
733                                    2/20
734                                    ----
735 expr.c
736         - make sure that expland and explor set `lasttok' to LAND and LOR,
737           respectively, if they parse `&&' or `||'.  This makes the
738           precedence code work right
739
740 subst.c
741         - changes so that non-interactive shells exit immediately when a
742           parameter that is unset is referenced after `set -u' has been
743           executed causes the shell to exit immediately
744
745                                    2/21
746                                    ----
747 flags.c
748         - if `set -r' is executed, call maybe_make_restricted so that $PATH
749           and $SHELL are made read-only
750
751 execute_cmd.c
752         - if `set -e' has been executed, and we're inverting a pipeline's
753           return status with `!', set CMD_IGNORE_RETURN so a failing
754           command does not inadvertently cause the shell to exit before
755           the exit status can be inverted.  This is probably only a problem
756           with the `eval' builtin.
757
758                                    2/24
759                                    ----
760 builtins/hash.def
761         - add a missing argument of 0 to add_hashed_command
762
763 builtins/kill.def
764         - job identifiers can be used in non-interactive shells as long as
765           job control has been turned on with `set -m'
766
767 jobs.c
768         - we want to be notified of stopped jobs if job_control is non-zero,
769           even if the shell is not interactive
770
771 execute_cmd.c
772         - make sure shell_execve returns EX_NOTFOUND if execve fails and
773           errno is set to ENOENT
774         - makes sure execute_builtin saves the temporary environment to
775           builtin_env for the `eval' builtin, since it can destroy the
776           temporary environment when it calls parse_and_execute
777
778 bashhist.c
779         - new variable: hist_last_line_added, set to 1 if the last command
780           line was added to the history successfully as a separate entry.
781           Used by `history' and `fc'
782
783                                    2/25
784                                    ----
785 trap.c
786         - save line number before executing trap command, because
787           parse_and_execute resets it to 1 and the trap command might
788           want it
789
790 execute_cmd.c
791         - change to executing_line_number to return trap_line_number if
792           the shell is currently running a trap
793
794                                    2/26
795                                    ----
796 execute_cmd.c
797         - change to time_command so that a `real' value of 0 does not
798           cause a divide-by-zero error when computing cpu percentage
799
800 lib/readline/signals.c
801         - if MUST_REINSTALL_SIGHANDLERS is defined, reinstall the SIGWINCH
802           handler in rl_handle_sigwinch
803
804 builtins/set.def
805         - `unset' now rejects attempts to unset names that are not valid
806           shell identifiers as errors
807         - add a description of `-o history' option to help text
808
809 subst.c
810         - in parameter_brace_patsub, we want backslash removal done on
811           the replacement if (mflags & MATCH_QUOTED), since the code
812           in expand_word_internal will not do it.  We need to call
813           expand_string_unsplit directly, since maybe_expand_string does
814           not do the right thing
815
816                                    2/28
817                                    ----
818 execute_cmd.c
819         - if execute_for_command finds that the iteration variable is readonly,
820           decrement loop_level before returning
821
822 builtins/break.def
823         - if the break count is <= 0, display an error message and break out
824           of all loops
825
826 builtins/command.def
827         - if PATH is unset, and we're using command -p, we don't want PATH
828           to be set to the empty string when `command' completes
829
830 builtins/common.c
831         - POSIX.2 says `kill -l signum' prints the signal name without the
832           leading `SIG' prefix, so check for this_shell_builtin == kill_builtin
833           in display_signal_list
834
835 builtins/getopts.def
836         - when invoked without any arguments, `getopts' now prints a usage
837           message
838
839                                     3/3
840                                     ---
841 builtins/common.c
842         - add a second argument to get_numeric_arg: if non-zero, the shell
843           exits on a bad argument; if not, the shell jumps to top_level
844           with a DISCARD argument, which aborts the current command
845
846 builtins/{break,exit,history,return,shift}.def
847         - change calls to get_numeric_argument
848
849 lib/readline/funmap.c
850         - add `dump-macros' to list of bindable names
851
852 lib/readline/readline.h
853         - added extern declaration for rl_prompt (it was apparently missing)
854
855 lib/readline/readline.c
856         - new internal function, _rl_init_line_state, which sets rl_point
857           and rl_end to 0, sets the_line to point to _rl_line_buffer, and
858           clears the line
859
860 lib/readline/callback.c
861         - if a user's callback function does not clear the line, clear it
862           for him by calling _rl_init_line_state
863
864                                     3/4
865                                     ---
866 alias.c
867         - made the readline support functions #ifdef READLINE, so they're
868           not compiled into the shell unless readline is
869
870 lib/readline/bind.c
871         - new function _rl_untranslate_macro_value, to expand meta-prefixes
872           and other special characters in a macro value for printing by
873           _rl_macro_dumper_internal
874         - call _rl_untranslate_macro_value in _rl_macro_dumper_internal to
875           get a printable version of the macro value
876
877 lib/readline/readline.c
878         - new variable, rl_dispatching, set to 1 when we call a function
879           from _rl_dispatch
880
881 lib/readline/readline.h
882         - extern declaration for rl_dispatching
883
884 lib/readline/complete.c
885         - make sure S_ISCHR and S_ISBLK are defined before using them
886
887 lib/readline/terminal.c
888         - add a new #define NEED_EXTERN_PC.  Define this if the termcap
889           or curses libraries need `extern' before declarations of PC,
890           BC, and UP
891
892 lib/readline/{readline,terminal,histfile}.c
893         - changes to compile on OS/2 with OS/2 `EMX' port of gcc, originally
894           sent by ilya@math.ohio-state.edu
895
896 builtins/set.def
897         - fixed a bug in set_shellopts that caused the shell to crash if
898           there were no shell options set
899
900                                     3/5
901                                     ---
902 configure.in,Makefile.in
903         - choose run-all or run-minimal as the test script based on whether
904           the --enable-minimal-config option was given to configure
905
906 builtins/setattr.def
907         - fixed `export -p' and `readonly -p' so that they output `export'
908           or `readonly' when in POSIX mode, as POSIX.2 specifies
909
910                                     3/6
911                                     ---
912 builtins/setattr.def
913         - make `readonly -a var=(...)' work just like `declare -ar var=(...)',
914           since the two logically mean the same
915         - `readonly -f' and `export -f' don't print the function definition
916           for each readonly or exported function, respectively, when in
917           POSIX mode
918
919 jobs.c, nojobs.c
920         - don't report status for processes killed by SIGPIPE if
921           DONT_REPORT_SIGPIPE is defined
922
923 config.h.top
924         - added a commented-out define for DONT_REPORT_SIGPIPE
925
926 execute_cmd.c
927         - `time' can now be used to time background pipelines, and reports
928           the timing statistics when the pipeline completes
929
930 [bash-2.01-alpha1 frozen]
931
932                                    3/12
933                                    ----
934 subst.c
935         - move the parent end of the pipe file descriptor used for process
936           substitution to a high, unused file descriptor to avoid clashes
937           with redirections performed explicitly by a script
938
939 configure.in
940         - added a `--with-curses' argument so curses can be forcibly chosen
941           over libtermcap (some Unix versions ship lousy termcap databases)
942
943 support/mkconffiles
944         - new script to create _distribution and _patchlevel from values
945           contained in `configure'
946
947 doc/bashref.texi
948         - updated installation instructions
949
950                                    3/13
951                                    ----
952 general.c
953         - if `getgroups' returns 0, make sure we add the primary group id
954           as GROUPS[0].
955         - if we have getgroups, and the primary gid is not in the array
956           getgroups returns, add it as group_array[0] and shuffle everything
957           up one element.  This ensures that current_user.gid == group_array[0]
958           all the time
959
960 tests/builtins.tests
961         - changes to avoid stray variables in environment when the shell
962           version of printenv is used with bash as /bin/sh, running the
963           `exec -c' tests.
964
965                                    3/14
966                                    ----
967 builtins/cd.def
968         - spelling correction is no longer enabled by default
969
970 support/bashbug.sh
971         - if the shell's release status is alpha or beta, offer the option
972           of sending the bug report to the bash-testers mailing list as
973           well as to chet
974
975                                    3/17
976                                    ----
977 configure.in
978         - configure --without-gnu-malloc by default on *-sgi-irix6* because
979           their code needs 8-byte alignment
980
981 support/bashbug.sh
982         - ``' needs to be quoted with a backslash in double-quoted strings
983
984 aclocal.m4
985         - slight changes to the strcoll test, since AIX 4.2 returns -1, 0, or
986           1 from strcmp(3) but a numeric collation order difference from
987           strcoll(3)
988
989                                    3/18
990                                    ----
991 command.h
992         - new redirection error code:  HEREDOC_REDIRECT
993
994 execute_cmd.c
995         - return HEREDOC_REDIRECT from do_redirection_internal when
996           here_document_to_fd cannot create the temp file for a here document
997         - changed redirection_error to print a meaningful message when
998           here document temp file creation fails (HEREDOC_REDIRECT)
999
1000                                    3/19
1001                                    ----
1002 subst.c
1003         - changes to match_pattern_char: return 1 if the first char of the
1004           pattern is `?' only if the string is non-null; just return 1 if
1005           the first char of the pattern is `[' and the string is non-empty
1006           rather than try to re-implement the brace matching code from fnmatch
1007
1008 lib/glob/fnmatch.c
1009         - some changes from glibc-2.0.1 posix/fnmatch.c
1010
1011                                    3/21
1012                                    ----
1013 variables.c
1014         - only do the initialization of `ignoreeof' if the shell is
1015           interactive
1016         - reset values of $SHLVL > 1000 to 1 in adjust_shell_level, and
1017           don't call itos, since we don't need its generality
1018         - new function, initialize_shell_level, just calls adjust_shell_level
1019           with argument of 1.  If $SHLVL is unset, adjust_shell_level will
1020           deal with it correctly
1021         - change initialize_shell_variables to not malloc a copy of each
1022           environment variable, just keep two pointers into the env string:
1023           one for the name, one for the value
1024         - broke the code that computes the value of $BASH out into a separate
1025           function: get_bash_name
1026         - get_bash_name special-cases shell_name with a `./' prefix when
1027           initializing $BASH
1028         - new function: set_home_var, sets $HOME to current_user.home_dir if
1029           it's not already set, calling get_current_user_info if
1030           current_user.home_dir is NULL
1031         - new function: set_shell_var, sets $SHELL to current_user.shell if
1032           it's not already set, calling get_current_user_info if
1033           current_user.shell is NULL
1034         - changed places that reference information in current_user to check
1035           for NULL values of the member they're interested in and call
1036           get_current_user_info if necessary
1037
1038 shell.c
1039         - moved the code that sets up the information in current_user that
1040           comes from the password file into a new function,
1041           get_current_user_info
1042         - shell_initialize calls get_current_user_info only if the shell is
1043           interactive
1044
1045 externs.h
1046         - new extern declaration for get_current_user_info(), so variables.c
1047           can use it
1048
1049                                    3/24
1050                                    ----
1051 lib/tilde/tilde.c
1052         - if SHELL is defined, user the current_user struct info to find
1053           the user's home directory rather than calling getpwuid
1054
1055                                    3/25
1056                                    ----
1057 nojobs.c
1058         - don't try to open /dev/tty when getting or setting the tty state
1059           and window size; use shell_tty instead
1060         - initialize shell_tty to standard error in initialize_job_control
1061         - only fetch the tty state initially if the shell is interactive
1062
1063 general.c
1064         - open /dev/tty with the O_NONBLOCK flag
1065
1066 variables.c
1067         - changed all_vars so that it sorts its output all the time, not
1068           just when in POSIX mode.  This means that the output of `set'
1069           and `export' will be sorted
1070
1071 builtins/set.def
1072         - in initialize_shell_options, only call parse_shellopts if we
1073           inherited $SHELLOPTS from the environment
1074         - make sure we call parse_shellopts from initialize_shell_options
1075           with a copy of the value of SHELLOPTS, in case one of the functions
1076           called while setting one of the variables modifies $SHELLOPTS
1077
1078 lib/readline/readline.c
1079         - make sure that digit arguments don't change the state of
1080           rl_last_func
1081
1082 support/printenv.c
1083         - new file, printenv(1) clone, used to avoid environment variables
1084           that might be set automatically when using printenv.sh
1085
1086 lib/tilde/tilde.c
1087         - if SHELL is defined, don't call getenv to get the value of $HOME,
1088           call get_string_value () directly
1089
1090                                    3/26
1091                                    ----
1092 lib/readline/histexpand.c
1093         - abstracted the `#ifdef SHELL' stuff that checked for special cases
1094           that should not be history expanded ([!...], ${!...}) into a call
1095           to a function that is the value of the
1096           new history_inhibit_expansion_function variable
1097
1098 lib/readline/history.h
1099         - extern declaration for history_inhibit_expansion_function
1100
1101 bashhist.c
1102         - new function, bash_history_inhibit_expansion, which checks for
1103           the special cases in which history expansion should be inhibited
1104         - changes to the various history initialization functions to
1105           set history_inhibit_expansion_function
1106
1107 lib/readline/doc/hstech.texinfo
1108         - documented history_inhibit_expansion_function
1109
1110 lib/readline/shell.c
1111         - new file, containing versions of the functions that are provided
1112           by bash when readline is linked as part of bash
1113         - new function: get_env_value().  If SHELL is defined, this calls
1114           get_string_value().  If SHELL is not defined, this calls getenv()
1115
1116 lib/readline/histexpand.c
1117         - moved single_quote() to shell.c
1118
1119 lib/readline/util.c
1120         - moved savestring() to shell.c
1121
1122 lib/readline/terminal.c
1123         - moved set_lines_and_columns() to shell.c
1124
1125 lib/readline/Makefile.in, Makefile.in
1126         - added shell.c and shell.o to the appropriate variables that contain
1127           the files comprising the readline and history libraries
1128
1129 lib/readline/signals.c
1130         - introduced two new cpp defines:  HANDLE_JOB_SIGNALS and
1131           HANDLE_SIGTERM.  When HANDLE_JOB_SIGNALS is defined, SIGTSTP,
1132           SIGTTIN, and SIGTTOU are caught and handled.  When HANDLE_SIGTERM
1133           is defined, SIGTERM is caught and handled.  These are both
1134           defined automatically if SHELL is not defined
1135
1136 lib/readline/{bind,histfile,nls,readline,terminal}.c
1137         - call get_env_value instead of getenv().  This should remove the
1138           dependency on being able to redefine getenv() in oslib.c
1139
1140 shell.c
1141         - added a missing argument of -1 to the call to list_minus_o_opts.
1142           Now `bash -o' lists all options, not just random ones depending
1143           on what's on the stack
1144
1145                                    3/28
1146                                    ----
1147 builtins/ulimit.def
1148         - change RLIM_INFINITY to the hard limit only if the hard limit is
1149           greater than the current (soft) limit
1150
1151 hashlib.c
1152         - return immediately from flush_hash_table if the hash table passed
1153           is NULL
1154
1155                                     4/1
1156                                     ---
1157 shell.c
1158         - remove call to initialize_filename_hashing -- initialize the hash
1159           table the first time a hashed command has to be remembered
1160
1161 hashcmd.c
1162         - new file, with functions to perform filename hashing and lookup
1163           taken from builtins/hash.def and builtins/common.c
1164         - change to remember_filename -- call initialize_filename_hashing
1165           if hashing_initialized is 0
1166
1167 hashcmd.h
1168         - new file, mostly from builtins/hashcom.h, with extern function
1169           declarations added
1170
1171 execute_cmd.c, builtins/{hash,type}.def
1172         - include hashcmd.h for hash function and type definitions
1173
1174 builtins/{common.{c,h},hash.def}
1175         - moved hashing functions and declarations to hashcmd.c/hashcmd.h
1176
1177 Makefile.in, builtins/Makefile.in
1178         - changed source and object file definitions and dependencies because
1179           of addition of hashcmd.h and hashcmd.c
1180
1181 builtins/hash.def
1182         - return immediately from print_hashed_commands if hashed_commands
1183           is empty, indicating that the hash table has not been initialized
1184
1185                                     4/2
1186                                     ---
1187 lib/readline/bind.c
1188         - fixed translation of ESC in rl_untranslate_keyseq and
1189           rl_untranslate_macro_value
1190
1191 lib/readline/{readline,kill}.c
1192         - added an argument to _rl_fix_point telling it whether or not to
1193           fix up the mark also; changed calls to _rl_fix_point to add the
1194           appropriate argument
1195
1196 Makefile.in
1197         - changed the substitution delimiter in the `sed' commands that
1198           create bashbug from `:' to `%' to avoid conflicts with options
1199           containing `:'
1200
1201                                     4/3
1202                                     ---
1203 print_cmd.c
1204         - made the initial value and the default growth value for the
1205           printed command somewhat smaller -- we don't really need to
1206           allocate 4096 bytes for the printed command
1207         - added stdarg support to xprintf if PREFER_STDARG is defined
1208
1209 stringlib.c
1210         - changed strip_trailing to take the index of the last character
1211           as the second argument, saving a (useless) call to strlen, since
1212           the caller already knows where the end of the string is
1213
1214 subst.c
1215         - change call to strip_trailing in command_substitute to add the
1216           new second argument
1217
1218 externs.h
1219         - changed extern declaration for strip_trailing
1220
1221                                     4/4
1222                                     ---
1223 Makefile.in, configure.in, lib/malloc/Makefile.in
1224         - changed the strategy for picking which `malloc' to include by
1225           having configure define a `malloc target' and the Makefile in
1226           lib/malloc implementing rules for that target
1227
1228                                     4/5
1229                                     ---
1230 Makefile.in
1231         - slightly changed the rules for remaking `parser-built':  it is
1232           now a copy of y.tab.h, updated only when the contents of y.tab.h
1233           change
1234         - everything that used to depend on y.tab.h now depends on
1235           parser-built
1236
1237                                     4/6
1238                                     ---
1239 execute_cmd.c, print_cmd.c
1240         - use #include <y.tab.h> so we pick up y.tab.h from the build
1241           directory instead of the source directory if it happens to be
1242           recreated in the build directory
1243
1244                                     4/7
1245                                     ---
1246 bashline.c
1247         - fixed another problem with `pwd`/[TAB] thinking that the `/
1248           started an unclosed command substitution, generating errors
1249
1250                                     4/8
1251                                     ---
1252 general.c
1253         - renamed bash_tilde_expansion_failure_hook to be
1254           bash_special_tilde_expansions, since that more accurately reflects
1255           its function
1256         - changed tilde_initialize so that there is no failure hook -- the
1257           special expansions are handled first with the preexpansion hook
1258
1259 lib/tilde/tilde.c
1260         - new variable: tilde_expansion_preexpansion_hook -- if non-null, it
1261           points to a function that is called before standard tilde expansion
1262           is attempted
1263
1264 lib/tilde/tilde.h
1265         - extern declaration for tilde_expansion_preexpansion_hook
1266
1267 doc/{bash.{1,html},bashref.texi}
1268         - added optional open paren to description of `case' command syntax
1269
1270                                     4/9
1271                                     ---
1272 variables.c
1273         - on qnx, set and export a variable `NODE' which contains the QNX
1274           `node id'
1275
1276 general.c
1277         - QNX system can now handle pathnames with a leading `//'
1278
1279 configure.in
1280         - added `-Dqnx' to LOCAL_CFLAGS on QNX machines
1281
1282 lib/malloc/getpagesize.h
1283         - some systems need sysconf(_SC_PAGE_SIZE) to obtain the page size;
1284           added code to check for it
1285
1286                                    4/10
1287                                    ----
1288 print_cmd.c
1289         - include the prototype for cprintf only if PREFER_STDARG is defined,
1290           otherwise just have a K&R-style forward function declaration
1291
1292 hashlib.h
1293         - reduced the default number of buckets in a hash table to 53
1294
1295 lib/tilde/tilde.c
1296         - prime the result string in tilde_expand by allocating a new string
1297           that's as long as the input string (+16 if a tilde appears in
1298           the string to be expanded).  This should reduce the number of
1299           reallocs
1300
1301 subst.c
1302         - broke the code that reads the output of a command substitution
1303           through the pipe to the subshell out into a separate function:
1304           read_comsub().  This does not use stdio, but rather reads
1305           directly from the pipe into a local 128-character buffer
1306
1307                                    4/11
1308                                    ----
1309 execute_cmd.c
1310         - some systems need both <sys/time.h> and <time.h>, so include both
1311           if it's possible, otherwise include <sys/time.h> (if present)
1312
1313 lib/readline/rl{tty,defs}.h
1314         - moved includes of <sys/stream.h>, <sys/ptem.h>, etc. to rltty.h
1315
1316 lib/readline/terminal.c
1317         - include rltty.h after rldefs.h
1318
1319 variables.c
1320         - changes to make environment creation faster and use less memory
1321           (fewer malloc/free calls, too):
1322
1323                 o two new variables: export_env_index (how many environment
1324                   strings are in export_env) and export_env_size (the
1325                   number of slots for strings allocated in export_env)
1326                 o added new function add_to_export_env, since adding the
1327                   exported shell variables and shell functions does not
1328                   need to search the export_env for a definition to supersede
1329                   (we just cleared it out!)
1330                 o renamed add_or_supersede to add_or_supersede_exported_var,
1331                   since it always works on export_env, and changed the second
1332                   argument to a flag saying whether or not to allocate a new
1333                   copy of the string placed into the environment
1334                 o changed calls to add_or_supersede to the new
1335                   add_or_supersede_exported_var with the appropriate flags
1336                 o don't free and reallocate export_env in maybe_make_export_env,
1337                   just free the strings and start anew
1338                 o prime the size of export_env from the total number of shell
1339                   variables and shell functions -- this will always be enough
1340                   for the exported shell functions and variables, and big
1341                   enough most of the time for the entire environment
1342
1343 builtins/cd.def
1344         - efficiency hack in bindpwd():  if PWD is exported, we will have to
1345           rebuild the entire exported environment after every time we change
1346           directories.  What we do is see if array_needs_making changes value
1347           from 0 to 1 after bind_variable ("PWD", dirname) is called, and
1348           that PWD is exported.  If that happens, we just replace the value
1349           of PWD in the exported environment with a call to
1350           add_or_supersede_exported_var
1351
1352 bashline.c, parse.y
1353         - check calls to pre_process_line to make a fresh copy of the line
1354           if pre_process_line returns what it was passed, in preparation
1355           for future changes
1356
1357 bashhist.c
1358         - pre_process_line now returns its argument if it did not make
1359           any changes to it
1360
1361 alias.c
1362         - free the bucket entry holding the alias to be removed in
1363           remove_alias, as well as the data
1364
1365                                    4/14
1366                                    ----
1367 unwind_prot.c
1368         - if an unwind-protect frame is being discarded, and its cleanup
1369           function is `restore_variable', the `arg' member points to a
1370           SAVED_VAR that must be freed.  This change is made in
1371           remove_unwind_protect_internal and unwind_frame_discard_internal
1372
1373 parse.y
1374         - need to free memory allocated by parse_arith_cmd if it is an
1375           arithmetic command, after using it to make a new word
1376
1377 subst.c
1378         - fixed some memory leaks caused by not freeing the argument to
1379           make_bare_word, which duplicates its string argument
1380         - need to dispose list generated by list_rest_of_args in
1381           paramter_list_remove_pattern
1382         - make sure the return value from getpattern() is freed
1383         - make sure array_value_internal always returns newly-allocated
1384           memory
1385         - get_var_and_type returns a new type: VT_ARRAYMEMBER if the
1386           string passed is of the form var[index]
1387         - make sure parameter_brace_substring frees the memory allocated
1388           by get_var_and_type if verify_substring_values returns 0
1389
1390 hashlib.c, hashlib.h
1391         - new function, dispose_hash_table (table), which frees the
1392           table's bucket array and the table itself
1393
1394 alias.c
1395         - call dispose_hash_table from delete_all_aliases instead of just
1396           freeing the table
1397
1398 pathexp.c
1399         - make sure to free `newnames' (but *not* its contents) before
1400           returning from ignore_globbed_names
1401
1402 builtins/exec.def
1403         - make sure the argv created to pass to shell_execve is freed if
1404           the execve fails and we're not exiting on failed execs
1405
1406 expr.c
1407         - broke evalexp into two functions: evalexp, which sets up the
1408           jmp_buf that errors jump to, and subexpr, which does the
1409           evaluation and pushing and popping of contexts
1410         - readtok now calls subexpr to evaluate subexpressions in
1411           parentheses
1412         - evalexp now takes an additional paramter, a pointer to an int.
1413           If the expression contains errors, the location to which this
1414           points gets 0, otherwise it gets 1 to show that the value
1415           returned may be used.  This plugs up memory leaks that were
1416           the result of evalexp() longjmping back to top_level
1417         - fixed a memory leak: expr_stack[0] was not being freed
1418
1419 externs.h
1420         - changed extern declaration for evalexp
1421
1422 variables.c, subst.c, builtins/let.def
1423         - changed calls to evalexp appropriately.  They either cause a
1424           longjmp (top_level, DISCARD) (which is what the old stuff in
1425           expr.c did) or are handled by returning an appropriate error
1426           value (e.g., &expand_word_error in subst.c)
1427
1428                                    4/16
1429                                    ----
1430 shell.c
1431         - make sure to free dollar_vars[0] before assigning it the first
1432           argument following `-c command'
1433
1434 variables.c
1435         - if unsetting a local variable with a previous context, make sure      
1436           to free the hash table element used to store the local variable
1437
1438 lib/readline/terminal.c
1439         - rearrange the includes so <sys/ioctl.h> is included before rltty.h,
1440           as it is in rltty.c
1441
1442                                    4/17
1443                                    ----
1444 flags.c
1445         - new function: reset_shell_flags, which resets all of the flags
1446           back to their initial values
1447
1448 flags.h
1449         - extern declaration for reset_shell_flags
1450
1451 builtins/set.def
1452         - new function: reset_shell_options, which resets all of the -o
1453           options that are not also shell flags back to their initial values
1454
1455 builtins/shopt.def
1456         - new function: reset_shopt_options, which resets all of the shopt
1457           options that are not also shell flags or -o options back to their
1458           initial values
1459
1460 builtins/common.h
1461         - extern declarations for reset_shell_options and reset_shopt_options
1462
1463 execute_cmd.c
1464         - broke the code that reinitializes things when an executable script
1465           without a leading `#!' is found out into a new function:
1466           initialize_subshell
1467         - initialize_subshell now calls the reset_* functions that reset the
1468           shell flags and options
1469
1470 general.c, general.h
1471         - move_to_high_fd now takes a third argument: the highest fd at which
1472           to start looking.  If that's less than 20, the maximum number of
1473           open files as returned by getdtablesize() is used (which is what
1474           it did before this)
1475
1476 jobs.c, shell.c, subst.c
1477         - changed calls to move_to_high_fd appropriately
1478
1479 [bash-2.01-beta1 frozen]
1480
1481                                    4/18
1482                                    ----
1483 general.c
1484         - itos now uses a local char buffer to do its conversion, but still
1485           returns newly-allocated memory
1486
1487                                    4/21
1488                                    ----
1489 variables.c
1490         - be a little more careful when checking for backwards-compatibility
1491           with exported function definitions
1492
1493                                    4/22
1494                                    ----
1495 builtins/ulimit.def
1496         - translate RLIM_INFINITY to limit.rlim_max if the current limit is
1497           less than or equal to the hard limit, not just strictly less than
1498           (the change of 3/28 was too drastic)
1499
1500                                    4/23
1501                                    ----
1502 oslib.c
1503         - fixed definition of to_lower on machines without strcasecmp
1504
1505 trap.c
1506         - don't free the trap command in change_signal if the SIG_INPROGRESS
1507           is set in the signal's flags -- it will cause memory to be freed
1508           twice if a trap command resets the signal handler more than once,
1509           and _run_trap_internal keeps a pointer to the trap command so it
1510           can free it, so there will be no leaks
1511
1512                                    4/24
1513                                    ----
1514 aclocal.m4,configure.in
1515         - removed BASH_CC_WORKS, since AC_PROG_CC now has the functionality
1516
1517 shell.c, externs.h
1518         - get_current_user_info is now a void function
1519
1520 bashline.c
1521         - alias_expand_line_internal was removed
1522         - new function, alias_expand_line, performs alias expansion on
1523           rl_line_buffer and either replaces rl_line_buffer or signals
1524           an error
1525         - new bindable commands: alias-expand-line and
1526           history-and-alias-expand-line, available if ALIAS is defined
1527
1528                                    4/25
1529                                    ----
1530 Makefile.in, lib/malloc/malloc.c
1531         - changed the define that turns on malloc range checking from
1532           `rcheck' to `RCHECK'
1533
1534 lib/readline/isearch.c
1535         - fixed a couple of places where rl_search_history would try to
1536           free a NULL pointer
1537
1538                                    4/29
1539                                    ----
1540 unwind_prot.c
1541         - fixed a problem with saving a variable that is a null pointer
1542           in unwind_protect_var.  It happens only on machines where the
1543           size of a pointer is not the size of an int.  The old FASTCOPY
1544           code would copy the eight bytes at memory location zero, which
1545           did not necessarily make a null pointer
1546
1547                                    4/30
1548                                    ----
1549 shell.c
1550         - run_startup_files should turn off job control, since the startup
1551           files should be run without job control enabled -- this makes
1552           SIGINT interrupt startup file execution again
1553         - if we get a SIGINT or other longjmp to top_level while executing
1554           the startup files, re-enable job control for interactive shells
1555           before setting locally_skip_execution
1556
1557                                     5/2
1558                                     ---
1559 lib/readline/nls.c
1560         - if we have setlocale(3), don't bother with checking the
1561           environment variables for valid values; just use setlocale()
1562           to set the locale categories from the environment variables
1563           directly and go into eight-bit mode if the current locale is
1564           not C or POSIX
1565
1566                                     5/5
1567                                     ---
1568 sig.c
1569         - make sure that the handler for SIGPROF is not changed if it has
1570           been set to something other than SIG_IGN or SIG_DFL -- this makes
1571           profiling work after the terminating signals have been initialized
1572
1573 bashline.c
1574         - if a filename containing `!' is completed, and the user has started
1575           the string with a `"', change the completion style to backslash-      
1576           quoting, since there's no way to use `!' with double quotes (this
1577           requires more changes to readline to really work right)
1578
1579                                     5/6
1580                                     ---
1581 lib/readline/complete.c
1582         - changes to make_quoted_replacement, insert_all_matches, and
1583           insert_match and their callers to allow the application-specific
1584           filename quoting function to change the quote character (e.g., for
1585           bash to change a filename containing a `!' and started with a
1586           double quote by the user into a filename with the `!' quoted by
1587           a backslas and no double quote)
1588
1589                                     5/8
1590                                     ---
1591 jobs.c
1592         - new function: nohup_all_jobs(), calls nohup_job for each entry in
1593           the jobs list
1594         - delete_all_jobs is now global
1595
1596 jobs.h
1597         - new extern declarations for delete_all_jobs() and nohup_all_jobs()
1598
1599 builtins/jobs.def
1600         - `disown' without any jobspec arguments means the current job.  Fix
1601           a core dump printing the error message when there is no current job
1602
1603                                    5/12
1604                                    ----
1605 subst.c
1606         - process an expansion like $((foo); bar) as a command substitution,
1607           not as an arithmetic expansion.  An arithmetic expansion must have
1608           a closing `))'
1609
1610                                    5/14
1611                                    ----
1612 builtins/evalstring.c
1613         - the third argument to parse_and_execute() is now a flags word.
1614           The caller can control the value of `interactive' and whether
1615           or not history is disabled while parse_and_execute() runs
1616
1617 builtins/common.h
1618         - new #defines for the flag values for parse_and_execute()
1619
1620 {bashline,jobs,shell,subst,trap,variables}.c, parse.y, builtins/evalfile.c,
1621 builtins/{eval,fc}.def
1622         - changed calls to parse_and_execute appropriately
1623
1624 builtins/evalfile.c
1625         - if _evalfile() is passed FEVAL_HISTORY as part of the flags arg,
1626           don't pass SEVAL_NOHIST to parse_and_execute
1627         - new function: fc_execute_file, which sets FEVAL_HISTORY in the
1628           flags argument to _evalfile()
1629
1630 bashline.c
1631         - call bash_add_history instead of add_history from
1632           vi_edit_and_execute_command so the bash state variables get
1633           updated properly.  This keeps the `v' command from operating
1634           on an empty command when the history list is stifled
1635
1636 bashhist.c
1637         - bash_add_history is now global
1638
1639 bashhist.h
1640         - extern declaration for bash_add_history
1641
1642 builtins/fc.def
1643         - call fc_execute_file instead of maybe_execute_file in the
1644           edit-and-re-execute case (fc -e ...)
1645         - don't manually insert the commands from the file created by `fc -e'
1646           into the history list, just set remember_on_history and let
1647           fc_execute_file take care of telling parse_and_execute to do the
1648           right thing.  This makes compound commands and the `cmdhist'
1649           and `lithist' settings work better.  This supersedes the fix of
1650           1/27.  This was reported again by rchen@fractal.eng.yale.edu.
1651
1652 parse.y
1653         - the body of a `for' command (the commands between do...done or
1654           {...}) should be a `compound_list' instead of a `list'.  Problem
1655           reported by cpg@research.bell-labs.com
1656
1657                                    5/19
1658                                    ----
1659 lib/readline/complete.c
1660         - in filename_completion_function, if we find that the directory
1661           pointer (return value from opendir(3)), is not null when state
1662           is 0 (indicating that this is the first time the completion
1663           function has been called for the current completion), call
1664           closedir on it, assuming that it was left open by a previous
1665           (interrupted) completion
1666
1667 [bash-2.01-beta2 frozen]
1668
1669                                    5/27
1670                                    ----
1671 Makefile.in
1672         - make sure that `make distclean' (and other clean targets) remove
1673           the `printenv' executable
1674
1675 tests/execscript, tests/redir.tests
1676         - make sure to set LANG=C and LC_ALL=C so the messages show up in
1677           English
1678
1679 tests/run-func
1680         - add a warning about exported functions in the environment
1681
1682                                    5/29
1683                                    ----
1684 builtins/hash.def
1685         - if one of the arguments passed to `hash' is an absolute pathname,
1686           just continue the loop, don't do list=list->next first.  This
1687           fixes the `hash a/b' -> core dump bug
1688
1689                                    5/30
1690                                    ----
1691 general.c
1692         - change canonicalize_pathname to leave a leading `/' alone, as
1693           POSIX requires
1694
1695                                     6/2
1696                                     ---
1697 support/xenix-link.sh
1698         - shell script for linking bash under Xenix
1699
1700                                     6/3
1701                                     ---
1702 bashline.c
1703         - fixed a memory leak in command_word_completion_function, courtesy
1704           of a.pfaller@pop.gun.de
1705
1706 hashcmd.c
1707         - fixed find_hashed_filename to always return a newly-allocated
1708           string
1709
1710 execute_cmd.c
1711         - since find_hashed_filename returns newly-allocated memory, don't
1712           call savestring() on it, and free it if the data is stale (in
1713           search_for_command()).  Another memory leak fixed courtesy of
1714           a.pfaller@pop.gun.de
1715
1716 builtins/type.def
1717         - free the value returned by find_hashed_filename
1718
1719 [bash-2.01-release frozen]
1720
1721                                     6/6
1722                                     ---
1723 configure.in
1724         - force shlicc2 and libc malloc for BSD/OS 3.0
1725
1726                                     6/9
1727                                     ---
1728 doc/Makefile.in
1729         - don't create ${man3dir}, since we're not installing the readline
1730           manual page
1731
1732 lib/readline/readline.h
1733         - rl_dispatching should be declared `extern'
1734           [in bash-2.01.1]
1735
1736                                    6/10
1737                                    ----
1738 lib/malloc/Makefile.in
1739         - make sure ${ALLOCA_SOURCE} is preceded by ${srcdir} so that things
1740           work when building in a directory other than the source directory
1741           [in bash-2.01.1]
1742
1743                                    6/30
1744                                    ----
1745 lib/readline/examples/rltest.c
1746         - don't free the value returned by history_list()
1747
1748 lib/readline/histfile.c
1749         - open the history file for writing with mode 0600 for better
1750           security
1751           [in bash-2.01.1]
1752
1753 execute_cmd.c
1754         - select_query now uses legal_number to decide whether the user's
1755           selection is a valid number, and just executes the loop again if
1756           invalid input is entered
1757           [in bash-2.01.1]
1758
1759                                     7/1
1760                                     ---
1761 builtins/evalstring.c
1762         - fix to parse_and_execute so `bash -c 'time [-p] zzz'' works right
1763           [in bash-2.01.1]
1764
1765 execute_cmd.c
1766         - fix to execute_command_internal so that `bash -c time [-p] (zzz)''
1767           works right
1768           [in bash-2.01.1]
1769         - print_formatted_time should pass a long as the fourth parameter
1770           to mkfmt 
1771           [in bash-2.01.1]
1772
1773 externs.h, shell.c
1774         - `exit_shell' is now a void function
1775
1776 hashlib.c
1777         - print_table_stats is now a void function
1778
1779 mailcheck.c
1780         - made add_mail_file check for the filename in the mail file list
1781           using the expanded filename, since that is what it puts into
1782           the list
1783           [in bash-2.01.1]
1784
1785 variables.c
1786         - for the time being, PWD will be auto-exported, since some systems
1787           seem to expect it
1788
1789 doc/bashref.texi, lib/readline/doc/{hist,rlman}.texinfo
1790         - added necessary `dircategory' and `direntry' commands to make
1791           `install-info' work correctly
1792
1793 Makefile.in
1794         - move $(LDFLAGS) after $(BUILTINS_LDFLAGS) and $(LIBRARY_LDFLAGS) on
1795           the line that links bash
1796
1797 doc/texinfo.tex
1798         - upgraded to version 2.185 from the texinfo-3.9 distribution
1799
1800 lib/tilde/tilde.c
1801         - fixed a bug in tilde_expand so that enough space is allocated for
1802           the string and terminating null byte if a `~' does not appear.
1803           This was masked before by the bash malloc()
1804           [in bash-2.01.1]
1805
1806                                     7/3
1807                                     ---
1808 aclocal.m4
1809         - new test, BASH_TYPE_INT32_T, to check which builtin C type is
1810           32 bits wide
1811         - new test, BASH_TYPE_PTRDIFF_T, to check which builtin C type is
1812           appropriate for pointer arithmetic
1813
1814 configure.in
1815         - check sizes of int and long, and for the existence of an int32_t
1816           basic system type.  Call BASH_TYPE_INT32_T if int32_t is not
1817           defined anywhere in the system header files
1818         - check size of (char *), and for the existence of a ptrdiff_t
1819           basic system type.  Call BASH_TYPE_PTRDIFF_T if ptrdiff_t is not
1820           defined anywhere in the system header files
1821         - added a check for <stddef.h>
1822
1823 config.h.in
1824         - add lines for SIZEOF_INT, SIZEOF_LONG, SIZEOF_CHAR_P, int32_t,
1825           u_int32_t, and ptrdiff_t
1826         - added line for HAVE_STDDEF_H
1827
1828 lib/malloc/malloc.c
1829         - new version, with many changes and much better memory usage; old
1830           (bash-2.01) version is lib/malloc/omalloc.c
1831
1832 lib/malloc/gmalloc.c
1833         - new version, with a number of changes and range checking included
1834           by default; old (bash-2.01) version is lib/malloc/ogmalloc.c
1835
1836 execute_cmd.c
1837         - applied patch from 5/27 to make execute_simple_command fork early
1838           if it's part of a pipeline.  This keeps assignment statements or
1839           other commands that don't require a builtin, function, or disk
1840           command to be executed from modifying the shell's environment
1841
1842 tests/exec?.sub
1843         - renamed from tests/execscript.sub? because those filenames are
1844           too long for System V 14-char filename systems
1845
1846 tests/source?.sub
1847         - renamed from tests/source.sub? because those filenames are bad
1848           for DOS/Windows
1849
1850 tests/getopts?.sub
1851         - renamed from tests/getopts.sub? because those filenames are bad
1852           for DOS/Windows
1853
1854 tests/histexp.{tests,right}
1855         - renamed from histexpand.{tests,right} because those filenames are
1856           too long for System V 14-char filename systems
1857
1858 tests/trap1.sub
1859         - renamed from trap.sub1 because that filename was bad for DOS/Windows
1860
1861 tests/ifs-[123].right
1862         - renamed from ifs.[123].right because those filenames were bad for
1863           DOS/Windows
1864
1865 tests/ifs-[123].test
1866         - renamed from ifs-test-[123].sh because those filenames were bad
1867           for DOS/Windows
1868
1869 examples/startup-files/Bashrc.bfox
1870         - renamed from examples/startup-files/Bashrc because that filename
1871           conflicts with examples/startup-files/bashrc on case-insensitive
1872           file systems
1873
1874 tests/exec.right
1875         - renamed from execscript.right because that filename is too long
1876           for System V 14-char filename systems
1877
1878 tests/run-set-e
1879         - renamed from run-set-e-test
1880
1881 tests/misc/perftest
1882         - renamed from tests/misc/haertel.perftest because that filename is
1883           too long for System V 14-char filename systems
1884
1885 lib/glob/fnmatch.c
1886         - new version with full POSIX.2 BRE matching (character classes,
1887           collating symbols, equivalence classes), full support for
1888           strcoll(3), and case-insensitive pattern matching
1889
1890 lib/glob/fnmatch.h
1891         - new version, with necessary symbols for the new fnmatch.c
1892
1893 tests/posixpat.{tests,right}, tests/run-posixpat
1894         - test suite for the POSIX.2 BRE pattern matching code
1895
1896 variables.c
1897         - make sure that array assignment using the compound syntax empties
1898           the array before doing the assignment
1899           [in bash-2.01.1]
1900
1901 trap.c
1902         - new function, trap_to_sighandler(sig), which returns the correct
1903           trap handler for SIG depending on the information in sigmodes[sig]
1904           [in bash-2.01.1]
1905
1906 sig.h
1907         - extern declarations for trap_handler and trap_to_sighandler
1908           [in bash-2.01.1]
1909
1910 jobs.c
1911         - if we get an interrupt while waiting for a command to complete,
1912           and there was a trap set on SIGINT that resets the handler to
1913           SIG_DFL, the value that waitchld uses for old_trap_handler will
1914           be wrong (it will be trap_handler, but trap_handler no longer
1915           knows anything about SIGINT).  If old_signal_handler is trap_handler,
1916           but signal_is_trapped(SIGINT) returns 0, we need to call
1917           trap_to_sighandler to decide what to do
1918           [in bash-2.01.1]
1919
1920                                     7/7
1921                                     ---
1922 locale.c
1923         - fix to set_locale_var to handle an assignment to LC_ALL (e.g., as
1924           the result of `unset LANG') when default_locale is null
1925           [in bash-2.01.1]
1926
1927                                     7/8
1928                                     ---
1929 builtins/umask.def, doc/{bash.{1,html},bashref.texi}
1930         - added `-p' option for umask to print output in a reusable form
1931
1932                                     7/9
1933                                     ---
1934 doc/{bash.{1,html},bashref.texi}
1935         - removed descriptions of `-type', `-path', and `-all' options to
1936           the `type' builtin in preparation for removing them in the next
1937           release
1938
1939 builtins/type.def
1940         - removed mention of `-type', `-path', and `-all' options from the
1941           long help description
1942
1943 error.c, error.h
1944         - new function: internal_warning, for warning messages
1945
1946 variables.c
1947         - changed a call to internal_error to use internal_warning
1948         - modified change of 7/3 so that arrays are not emptied until
1949           just before the shell is about to assign the new values, so
1950           the old value can be used to generate the rhs of the assignment,
1951           if necessary.  This is how `normal' shell variables work
1952           [in bash-2.01.1]
1953
1954 jobs.c, jobs.h
1955         - delete_job now takes a second int argument and prints a warning
1956           message when deleting a stopped job if the second argument is
1957           non-zero
1958
1959 jobs.c, builtins/jobs.def
1960         - changed all calls to delete_job to provide a proper second arg
1961
1962 lib/readline/bind.c
1963         - broke rl_read_init_file into an `upper' and `lower' half in
1964           preparation for adding file inclusion capability to inputrc
1965           parsing
1966         - handle_parser_directive now displays an error message if an
1967           unknown directive is encountered
1968         - parser_endif now prints an error message if an $endif without
1969           a matching $if is found
1970         - added `$include' parser directive to read bindings and commands
1971           from another file at that point
1972
1973 lib/readline/doc/rluser.texinfo, doc/{bash.{1,html},readline.3}
1974         - documented new readline `$include' parser directive
1975
1976 shell.c, parse.y
1977         - added a new invocation option, --dump-po-strings, and code to
1978           make it dump translatable strings ($"...") in GNU gettext
1979           `po' format
1980
1981 doc/{bash.{1,html},bashref.texi}
1982         - documented new `--dump-po-strings' invocation option
1983
1984 lib/readline/{{kill,funmap}.c,readline.h}
1985         - added `rl_paste_from_clipboard()', bound to `paste-from-clipboard'
1986           for CYGWIN32 users
1987
1988 lib/readline/kill.c
1989         - incorporated bfox's patches for `iterative' yank-last-arg handling.
1990           This means that one can keep pressing M-. and move backwards in
1991           the history, yanking the last argument of successive history lines
1992
1993 lib/readline/rlwinsize.h
1994         - new file, encapsulates various locations of the definition for
1995           `struct winsize'
1996
1997 aclocal.m4
1998         - augmented BASH_STRUCT_WINSIZE to look in termios.h as well as
1999           sys/ioctl.h for definition of `struct winsize'
2000
2001 lib/readline/rltty.h
2002         - include "rlwinsize.h" after including tty-driver-specific header
2003           file
2004
2005                                    7/10
2006                                    ----
2007 support/config.guess
2008         - add better support for SunOS on M68K (old Sun3 machines)
2009
2010 parse.y
2011         - check for compound array assignment in read_token_word only if
2012           there are characters before the `=' (which would make it a legal
2013           assignment statement).  This fixes the problem with defining a
2014           function named `=' with `=() { echo foo; }'
2015           [in bash-2.01.1]
2016
2017 jobs.c, jobs.h
2018         - nohup_all_jobs and delete_all_jobs now take a parameter which
2019           says whether or not to restrict their operation to only running
2020           jobs
2021
2022 jobs.c
2023         - changed all calls to delete_all_jobs
2024
2025 builtins/jobs.def
2026         - added `-a' (all jobs) and `-r' (running jobs only) options to
2027           `disown'
2028
2029 doc/{bash.{1,html},bashref.texi}
2030         - documented new `-a' and `-r' options to `disown'
2031
2032 findcmd.c, findcmd.h
2033         - new files with command searching code from execute_cmd.c and
2034           function declarations from execute_cmd.h
2035
2036 Makefile.in, builtins/Makefile.in
2037         - updated dependencies to account for new findcmd.[ch]
2038         - updated dependencies to account for new redir.[ch]
2039
2040 redir.c, redir.h
2041         - new files with code that sets up lists and performs redirections
2042           from execute_cmd.c and execute_cmd.h
2043
2044 execute_cmd.c
2045         - include new findcmd.h, redir.h
2046
2047                                    7/11
2048                                    ----
2049 Makefile.in, configure.in
2050         - PROFILE_FLAGS is now substituted into the Makefile by configure
2051
2052                                    7/14
2053                                    ----
2054 print_cmd.c
2055         - make sure single_quote is called from xtrace_print_word_list
2056           to correctly quote each word of trace output, especially those
2057           with embedded quotes
2058           [in bash-2.01.1]
2059
2060 aclocal.m4
2061         - extended BASH_CHECK_GETPW_FUNCS so that it checks that getpwuid
2062           and getpwnam can also be declared, as well as getpwent
2063           [in bash-2.01.1]
2064         - in BASH_FUNC_PRINTF, cast printf to type `_bashfunc' before trying
2065           to assign it to `pf' to avoid any prototype problems in the
2066           declaration
2067           [in bash-2.01.1]
2068
2069 trap.c
2070         - include <unistd.h> before any of the bash-specific header files,
2071           but after config.h
2072           [in bash-2.01.1]
2073
2074 test.c
2075         - include <errno.h> and declare `extern int errno' before including
2076           any of the bash-specific include files, but after <unistd.h>
2077           [in bash-2.01.1]
2078
2079 builtins/Makefile.in
2080         - PROFILE_FLAGS is now substituted into the Makefile by configure
2081
2082 configure.in
2083         - new options, --enable-profiling and --enable-static-link, to turn
2084           on profiling with gprof and link bash statically (if using gcc)
2085           for use as a root shell.  The former implies the latter.  If
2086           we're linking statically, dynamic loading of new builtins is not
2087           available
2088
2089 doc/bashref.texi
2090         - documented new --enable-profiling and --enable-static-link
2091           options in installation section; regenerated INSTALL
2092
2093 lib/glob/glob.[ch]
2094         - new global variable, glob_ignore_case, turns on case-insensitive
2095           filename matching in fnmatch() using the FNM_CASEFOLD flag
2096
2097 doc/{bash.{1,html},bashref.texi}
2098         - documented new shopt `nocaseglob' option
2099
2100                                    7/15
2101                                    ----
2102 bashline.c
2103         - when glob_complete_word is called with state == 0, make sure we
2104           set rl_filename_completion_desired so that proper quoting of
2105           the resultant filenames is performed
2106           [in bash-2.01.1]
2107
2108                                    7/16
2109                                    ----
2110 externs.h, oslib.c
2111         - strcasecmp and strncasecmp replacements should have `const char *'
2112           as the first two arguments, to match OS definitions
2113           [in bash-2.01.1]
2114
2115                                    7/17
2116                                    ----
2117 (many files)
2118         - changes for minix-2.0, mostly just adding #ifndef _MINIX around
2119           include files that minix doesn't provide, like <sys/param.h> and
2120           <sys/file.h>
2121
2122 lib/readline/terminal.c
2123         - removed `outchar' function; use _rl_output_character_function in
2124           its place
2125
2126 support/config.guess
2127         - changes to recognize HP_ARCH of `hppa2.0'
2128
2129 test.c
2130         - new `-N' option: `test -N file' returns true if FILE exists and
2131           has been modified since it was last accessed
2132
2133 doc/{bash.{1,html},bashref.texi}
2134         - documented new `test -N' option
2135
2136                                    7/22
2137                                    ----
2138 aclocal.m4
2139         - prefer /var/spool/mail to /usr/spool/mail in BASH_DEFAULT_MAIL_DIR
2140           [in bash-2.01.1]
2141
2142 lib/readline/{complete,bind}.c
2143         - new readline variable, print-completions-horizontally, which causes
2144           matches to be printed across the screen (like `ls -x') rather than
2145           up-and-down (like `ls')
2146         - new readline variable, completion-ignore-case, which causes filename
2147           completion and matching to be performed case-insensitively
2148
2149 doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo
2150         - documented new print-completions-horizontally variable
2151         - documented new completion-ignore-case variable
2152
2153 _distribution, Makefile.in
2154         - bumped the version number up to 2.02-alpha1
2155
2156 bracecomp.c
2157         - fixes so that the braces are not quoted by the filename quoting
2158           function when complete-into-braces is executed with M-{.  The
2159           brace completion functions do filename quoting themselves
2160           [in bash-2.01.1]
2161
2162 pathexp.c
2163         - changed quote_string_for_globbing so that it takes a flags word
2164           as its second argument
2165
2166 pathexp.h
2167         - defines for flags passed to quote_string_for_globbing
2168
2169 subst.c,execute_cmd.c
2170         - changed calls to quote_string_for_globbing to pass the correct
2171           flag arguments
2172
2173 expr.c
2174         - added a `**' binary operator to do exponentiation (2**16 == 65536).
2175           precedence is lower than arithmetic operators, higher than unary
2176           operators (2**16-1 == 65535)
2177
2178 doc/{bash.{1,html},bashref.texi}
2179         - documented new `**' arithmetic binary operator
2180
2181                                    7/24
2182                                    ----
2183 shell.c
2184         - added new (currently undocumented) `--wordexp' option to do the
2185           job required by POSIX.2 wordexp().  If -n is supplied along with
2186           --wordexp, command substitution is disallowed and the shell
2187           exits with a status of 125 if one is attempted.  If there is an
2188           expansion error, the shell exits with a status of 127.  If there
2189           is a shell parsing error, the shell exits with a status of 126.
2190           Otherwise, the exit status is 0.  The current output is
2191
2192                 number of words\n
2193                 number of bytes\n
2194                 expanded words, one per line, separated by newlines
2195
2196           This will have to be changed when an interface to glibc is coded
2197
2198                                    7/28
2199                                    ----
2200 hashcmd.h
2201         - reduced the default size of the filename hash table from 631
2202           to 107
2203
2204 sig.c
2205         - don't call initialize_siglist if HAVE_UNDER_SYS_SIGLIST is defined
2206           [in bash-2.01.1]
2207
2208 siglist.c
2209         - don't compile this file if HAVE_UNDER_SYS_SIGLIST is defined
2210           [in bash-2.01.1]
2211
2212 variables.c
2213         - fix to make $RANDOM work better in subshells
2214           [in bash-2.01.1]
2215
2216 aclocal.m4
2217         - new macro, BASH_DECL_UNDER_SYS_SIGLIST, looks for _sys_siglist in
2218           <signal.h> and <unistd.h>, defines UNDER_SYS_SIGLIST_DECLARED if
2219           found
2220           [in bash-2.01.1]
2221         - change BASH_UNDER_SYS_SIGLIST to require BASH_DECL_UNDER_SYS_SIGLIST,
2222           like BASH_SYS_SIGLIST requires AC_DECL_SYS_SIGLIST
2223           [in bash-2.01.1]
2224
2225 config.h.in
2226         - add a line for UNDER_SYS_SIGLIST_DECLARED
2227           [in bash-2.01.1]
2228
2229 configure.in
2230         - make sure that SVR4_2 is defined for machines that have $host_os
2231           sysv4.2* (e.g., sysv4.2MP) as well as $host == sysv4.2
2232           [in bash-2.01.1]
2233
2234                                    7/29
2235                                    ----
2236 command.h
2237         - new command type, ARITH_COM, used to create and execute a ((...))
2238           command without translating it into let "..."
2239
2240 parse.y
2241         - changes to the grammar and lexer so that ((...)) is parsed as a
2242           command of type ARITH_CMD.  An ARITH_CMD is a WORD_LIST, for
2243           future expansion, even though only the first word is used
2244
2245 make_cmd.c, make_cmd.h
2246         - definition and declaration of a function to build an arithmetic
2247           command
2248
2249 dispose_cmd.c
2250         - added code to dispose of arithmetic commands
2251
2252 print_cmd.c
2253         - added code to print arithmetic commands, both `regularly' and
2254           when they're being traced with `set -x'
2255
2256 externs.h
2257         - extern declaration for xtrace_print_arith_cmd
2258
2259 copy_cmd.c
2260         - added code to copy arithmetic commands
2261
2262 execute_cmd.c
2263         - added code to directly execute arithmetic commands -- they are
2264           a shell_control_structure, so just about everything like
2265           redirections and piping is taken care of by the boilerplate code.
2266           All that's needed is to expand the expression (which is within
2267           double quotes -- added by parse.y:parse_arith_cmd()), print it
2268           if tracing is enabled, call the expression evaluator, and return
2269           an appropriate result
2270
2271                                    7/30
2272                                    ----
2273 input.c
2274         - new function, set_buffered_stream(fd, bp), sets the buffered stream
2275           associated with FD to BP and returns the old buffered stream
2276
2277 input.h
2278         - extern declaration for set_buffered_stream
2279
2280 parse.y
2281         - call set_buffered_stream rather than manipulating the BUFFERS array
2282           directly
2283
2284 shell.c
2285         - unset_bash_input now takes an argument, CHECK_ZERO.  This tells it
2286           whether to check whether default_buffered_input is >= 0 or just > 0
2287
2288 externs.h
2289         - changed extern declaration for unset_bash_input
2290
2291 execute_cmd.c, jobs.c, nojobs.c
2292         - changed calls to unset_bash_input to add appropriate argument
2293
2294 input.h
2295         - #undef B_* before defining them as flag values for b_flags.  Some
2296           systems, like SVR4, have a B_ERROR define in a file included by
2297           jobs.c and nojobs.c, and it causes a warning
2298
2299                                    7/31
2300                                    ----
2301 fnmatch.c
2302         - rewrote most of fnmatch(), so that it now implements ksh-88 style
2303           pattern matching (`[@+*?!](patlist)') if the FNM_EXTMATCH flag
2304           is set
2305
2306 fnmatch.h
2307         - added a define for FNM_EXTMATCH
2308
2309                                     8/4
2310                                     ---
2311 lib/readline/display.c
2312         - fixed _rl_redisplay_after_sigwinch () so that it really redisplays
2313           only the portion after the final newline of a multi-line prompt
2314           [in bash-2.01.1]
2315
2316 bashline.c
2317         - attempt_shell_completion no longer returns matches if a glob pattern
2318           matches more than one filename -- it caused too many problems
2319           [in bash-2.01.1]
2320
2321                                     8/5
2322                                     ---
2323 lib/glob/glob.c
2324         - updated glob_pattern_p so that the extended matching operators
2325           are recognized
2326
2327 pathexp.c
2328         - udpated unquoted_glob_pattern_p so that the extended matching
2329           operators are recognized
2330         - udpated quote_globbing_chars so that the extended matching
2331           operators are recognized and quoted appropriately
2332
2333 subst.c
2334         - updated match_pattern_char so that the extended matching operators
2335           are recognized
2336
2337 parse.y
2338         - updated read_token_word so that it parses an extended matching
2339           pattern as a single word
2340
2341 jobs.c
2342         - if a job is suspended with SIGTSTP, and the user has set
2343           checkwinsize with `shopt', update the window size
2344           [in bash-2.01.1]
2345
2346 pathexp.c, pathexp.h
2347         - new global variable, extended_glob, controls whether the extended
2348           pattern matching features are enabled
2349
2350 pathexp.h
2351         - new define, FNMATCH_EXTFLAG, to be OR'd with other values for
2352           flags argument to fnmatch to enable the extended pattern matching
2353           features if extended_glob is set
2354
2355 {pathexp,execute_cmd,bashhist,subst,test}.c, builtins/help.def
2356         - changed calls to fnmatch to add FNMATCH_EXTFLAG to the flags arg if
2357           extended_glob is non-zero
2358
2359 lib/glob/glob.c
2360         - changed flags arg passed to fnmatch to include FNM_EXTMATCH if
2361           extended_glob is non-zero (#ifdef SHELL)
2362
2363                                     8/6
2364                                     ---
2365 builtins/shopt.def
2366         - added a new `extglob' shell option, controls the value of
2367           extended_glob
2368
2369                                     8/7
2370                                     ---
2371 doc/{bash.{1,html},bashref.texi}
2372         - documented new extended pattern matching operators and the `extglob'
2373           shell option
2374
2375 tests/{extglob.{tests,right},run-extglob}
2376         - test suite for the new extended globbing features
2377
2378                                     8/8
2379                                     ---
2380 parse.y, pathexp.h, lib/glob/fnmatch.c
2381         - made the extended globbing code #ifdef EXTENDED_GLOB
2382
2383 config.h.in
2384         - added a line for EXTENDED_GLOB, controlled by configure
2385
2386 configure.in
2387         - new option, --enable-extended-glob, controls defining of
2388           EXTENDED_GLOB (on by default)
2389
2390 doc/bashref.texi
2391         - documented new `configure' `--enable-extended-glob' option
2392
2393                                    8/11
2394                                    ----
2395 builtins/printf.def
2396         - new `printf' builtin, implemented according to POSIX.2 spec
2397           for printf(1)
2398
2399 Makefile.in,builtins/Makefile.in
2400         - added necessary stuff for new printf builtin
2401
2402                                    8/12
2403                                    ----
2404 lib/readline/isearch.c
2405         - change to make ^G interrupt the incremental search correctly
2406           [in bash-2.01.1]
2407
2408 configure.in, config.h.in
2409         - configure now checks for the availability of strtoul(3)
2410
2411 builtins/printf.def
2412         - use strtoul for the `%o', `%u', `%x', and `%X' formats if it
2413           is available
2414
2415                                    8/13
2416                                    ----
2417 tests/{printf.{right,tests},run-printf}
2418         - extensive test suite for the new `printf' builtin
2419
2420 builtins/Makefile.in
2421         - change so that `builtext.h' is not recreated every time the source
2422           file for a builtin is changed if the contents are the same.  This
2423           keeps many files from being recompiled
2424
2425                                    8/14
2426                                    ----
2427 subst.c
2428         - changed verify_substring_values so that it returns -1 for substring
2429           range errors, 0 for expression errors, and 1 for success
2430           [in bash-2.01.1]
2431         - changed parameter_brace_substring to return an error if
2432           verify_substring_values returns 0, and a null string if it returns
2433           -1.  This matches the ksh93 behavior
2434           [in bash-2.01.1]
2435
2436 trap.c
2437         - changed decode_signal so that it makes sure the first three
2438           characters of a signal name are `SIG' before allowing the `SIG'
2439           prefix to be omitted.  This is so a signal spec of `T' does not
2440           match `EXIT', for instance
2441           [in bash-2.01.1]
2442
2443 builtins/trap.def
2444         - make sure that showtrap() displays traps for signals with unknown
2445           names using the signal number
2446           [in bash-2.01.1]
2447 shell.c
2448         - make sure that `bash -r' doesn't turn on the restricted mode until
2449           after the startup files are executed
2450           [in bash-2.01.1]
2451
2452 doc/{bash.{1,html},bashref.texi}
2453         - documented printf builtin
2454
2455                                    8/15
2456                                    ----
2457 general.c
2458         - added \xNNN escape to ansicstr -- NNN are up to three hex digits.
2459           This affects $'...', `echo -e', and printf
2460
2461 builtins/printf.def
2462         - added \xNNN escape to bexpand -- NNN are up to three hex digits.
2463           This affects printf's `%b' conversion specifier
2464
2465 doc/{bash.{1,html},bashref.texi}
2466         - documented new \xNNN escape sequence for echo, $'...', and printf
2467
2468 builtins/setattr.def
2469         - make sure that a variable found in the temp environment does not
2470           cause a null string to be assigned by bind_variable (e.g.,
2471                 foo="" export foo
2472           )
2473           [in bash-2.01.1]
2474
2475                                    8/18
2476                                    ----
2477 subst.c
2478         - fixed a bug that sometimes caused bad memory (pointer into an
2479           allocated block) to be passed to free when doing arithmetic
2480           substitution.  Bug report from stevet@myofb.org
2481           [in bash-2.01.1]
2482
2483                                    8/19
2484                                    ----
2485 subst.c
2486         - considerable changes:  moved the code that expands a single
2487           $... parameter expansion into a separate function: param_expand()
2488           This function returns a string, which may contain characters
2489           quoted with CTLESC or CTLNUL without doing word splitting
2490         - changed expand_word_internal to not remove the expansion of "$*"
2491           if the number of positional parameters is > 0
2492         - changed the '"' case of expand_word_internal to remove quoted
2493           nulls from the resultant word if the expansion was not "$@", and
2494           the word is not a quoted null string ([] == CTLNUL, [1] == '\0')
2495
2496 subst.c, variables.c
2497         - moved the code that handles special variables from subst.c to
2498           variables.c
2499
2500                                    8/20
2501                                    ----
2502 subst.c
2503         - rearranged the source a bit to group functions with similar
2504           operation together
2505         - fixed parameter_brace_expand so that it no longer allows
2506           indirect expansion of `special' variables
2507         - fixed parameter_brace_expand so taking the length of some of
2508           the shell's special parameters works again
2509         - moved all of the code that computes the length of a shell
2510           parameter (the ${#xxx} expansion) into parameter_brace_expand_length.
2511           Previously, the code that handled the lengths of the shell's
2512           special parameters was in parameter_brace_expand_word
2513         - valid indirect expansions are now only variable names or positional
2514           parameters
2515
2516                                    8/21
2517                                    ----
2518 subst.c
2519         - fixed param_expand to raise an expansion error if $! is being
2520           expanded and no asynchronous processes have been created
2521         - an expression error in a $((...)) arithmetic expansion now causes
2522           a non-interactive shell running in POSIX mode to exit
2523         - relaxed change of 8/20 to allow indirect references to $#, $@, $*
2524
2525 builtins/bashref.texi
2526         - documented new posix-mode exit on invalid expressions in $((...))
2527
2528 lib/readline/complete.c
2529         - don't call rl_strpbrk unless rl_filename_quote_characters is not
2530           NULL -- strpbrk requires non-NULL arguments
2531           [in bash-2.01.1]
2532
2533                                    8/22
2534                                    ----
2535 bashline.c
2536         - don't make `history-expand-line' a bindable command unless
2537           BANG_HISTORY is defined, and don't compile the code for that
2538           command in unless BANG_HISTORY is defined
2539         - make history_expand_line(), tcsh_magic_space(), alias_expand_line(),
2540           and history_and_alias_expand_line() int-returning functions that
2541           return 0 for success and non-zero on error.  This allows
2542           tcsh_magic_space() to just call history_expand_line() and insert
2543           a space if that returns successfully
2544         - `magic-space' is now a bindable readline command
2545
2546 doc/bash.{1,html}, lib/readline/doc/rluser.texinfo
2547         - documented new `magic-space' bindable readline command
2548
2549                                    8/25
2550                                    ----
2551 parse.y
2552         - fixed decode_prompt_string so that values of $PWD longer than
2553           PATH_MAX don't cause buffer overruns (char t_string[PATH_MAX])
2554           [in bash-2.01.1]
2555
2556 general.c
2557         - fixed polite_directory_format so that values of $HOME longer
2558           than PATH_MAX don't cause buffer overruns (char tdir[PATH_MAX])
2559           [in bash-2.01.1]
2560
2561 subst.c
2562         - fix to expansion of $* so that the positional parameters are
2563           separated by the first character of $IFS, even when the expansion
2564           is not within double quotes, so the correct split is still
2565           performed even when IFS does not contain a space.  Works for
2566           ${*}, too
2567         - fix to expansion of $@ so that the positional parameters are
2568           separated by the first character of $IFS, even when the expansion
2569           is not within double quotes, so the correct split is still
2570           performed even when IFS does not contain a space.  Works for
2571           ${@}, too
2572         - new function, string_list_dollar_at(), which is to $@ as
2573           string_list_dollar_star is to $*
2574         - fixed expansion of $@ so that splitting is still done even if
2575           IFS is unset or NULL, as POSIX.2 specifies (section 3.5.2)
2576         - fixed expansion of $* so that it expands to multiple words if there
2577           is more than one positional parameter, just like $@, even if
2578           IFS is unset or NULL
2579         - new function list_quote_escapes, quotes (with CTLESC) all
2580           CTLESC and CTLNUL characters in each member of the list
2581
2582 tests/dollar-{at,star}.sh
2583         - combined into dollar-at-star, changed run-dollars accordingly
2584
2585                                    8/26
2586                                    ----
2587 Makefile.in
2588         - make the `tests' target use $(SHELL) instead of hardcoding `sh'
2589
2590                                    8/29
2591                                    ----
2592 subst.c
2593         - expand_word_list_internal now takes a flags word as the second
2594           argument, telling which expansions to perform on the WORD_LIST
2595         - broke expand_word_list_internal into several functions: one
2596           each to do brace expansion, glob expansion, and the `normal'
2597           shell expansions
2598         - new extern function: expand_words_shellexp() to perform the
2599           `normal' shell expansions on a WORD_LIST
2600
2601 subst.h
2602         - extern declaration for expand_words_shellexp
2603
2604 bashline.c
2605         - fixed a problem with attempt_shell_completion where it attempted
2606           to refer to rl_line_buffer[-1] (completion at the start of the
2607           line, which means that ti == -1, which means that the test for
2608           rl_line_buffer[ti] at line 715 was an array bounds error
2609           [in bash-2.01.1]
2610
2611 eval.c
2612         - new function, parse_string_to_word_list(), which takes a string
2613           and runs it through the parser, returning the resultant word
2614           list
2615
2616 externs.h
2617         - new extern declaration for parse_string_to_word_list()
2618
2619 variables.c
2620         - change assign_array_var_from_string to first split the string
2621           between the parens on whitespace, then expand the resultant
2622           list of words with all the shell expansions before doing the
2623           assignment
2624
2625                                     9/4
2626                                     ---
2627 redir.c, redir.h
2628         - redirection_error is no longer a static function
2629
2630 builtins/evalstring.c
2631         - changes to handle $( < filename ) (equivalent to $(cat filename))
2632           as in ksh
2633
2634 lib/readline/bind.c
2635         - added two new functions: rl_unbind_function_in_map(func, map),
2636           which unbinds all keys that execute FUNC in MAP; and
2637           rl_unbind_command_in_map(command, map), which unbinds all keys
2638           bound to COMMAND in MAP
2639
2640 lib/readline/readline.h
2641         - extern declarations for rl_unbind_{function,command}_in_map
2642
2643 lib/readline/doc/rltech.texi
2644         - documented rl_unbind_{function,command}_in_map
2645
2646 builtins/bind.def
2647         - added a new option, -u FUNCNAME, which unbinds all key sequences
2648           bound to FUNCNAME in the specified (or current) keymap
2649
2650 doc/{bash.{1,html},bashref.texi}
2651         - documented new $( < filename ) command substitution
2652         - documented new bind -u FUNCNAME option
2653
2654                                     9/5
2655                                     ---
2656 shell.c
2657         - send SIGHUP to all jobs when an interactive login shell exits if
2658           the variable `hup_on_exit' is non-zero
2659         - modified run_startup_files so that if `NON_INTERACTIVE_LOGIN_SHELLS'
2660           is #define'd (perhaps in config.h.top, though there is nothing there
2661           for it), all login shells (interactive and non-interactive) run
2662           /etc/profile and one of the per-user login shell startup files
2663
2664 builtins/shopt.def
2665         - new shopt option `huponexit' to control the value of hup_on_exit
2666
2667 doc/{bash.{1,html},bashref.texi}
2668         - documented new `huponexit' shell option
2669
2670                                     9/8
2671                                     ---
2672 builtins/common.c
2673         - changed contains_shell_metas to return 1 if a tilde appears at the
2674           start of a string or after a `=' or `:'
2675         - changed backslash_quote to quote a tilde if it appears at the start
2676           of a string or after a `=' or `:'
2677
2678 lib/readline/complete.c
2679         - moved rl_tilde_expand to util.c; it doesn't really have anything
2680           to do with completion
2681         - moved insert_text to readline.c, renamed it _rl_replace_text (since
2682           that's really what it does), changed callers
2683         - moved code that postprocesses the list of completion matches into
2684           a new function: postprocess_matches
2685         - new implementation of tcsh-like menu completion in a single new
2686           function: rl_menu_complete
2687
2688 lib/readline/{funmap.c,readline.h}
2689         - necessary declarations for binding rl_menu_complete to the
2690           new `menu-complete' command
2691
2692 doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo
2693         - documented new `menu-complete' bindable readline command
2694
2695                                     9/9
2696                                     ---
2697 jobs.c
2698         - delete_job should print a warning only if subshell_environment
2699           is 0, so we don't print bogus warnings when shell scripts without
2700           a leading #! are executed
2701
2702                                    9/10
2703                                    ----
2704 builtins/read.def
2705         - fixed the code so that the `read' is automatically restarted when
2706           it returns -1 with errno == EINTR.  SIGINT is handled by the
2707           interrupt handler, since interrupt_immediately is set to 1, so
2708           this handles things like SIGCHLD
2709           [in bash-2.01.1]
2710
2711                                    9/11
2712                                    ----
2713 test.c
2714         - reorganized the code slightly to make it easier to add the ksh-like
2715           [[...]] compound command
2716
2717 test.h
2718         - new file, with extern declarations for functions available in test.c
2719
2720 externs.h
2721         - moved declaration of test_command to test.h
2722
2723 builtins/test.def
2724         - include `test.h'
2725
2726                                    9/16
2727                                    ----
2728 {command,make_cmd,dispose_cmd,externs,subst}.h
2729 parse.y, subst.c
2730 {make,dispose,copy,print,execute}_cmd.c
2731         - changes to add the new ksh-93 compatible [[...]] conditional command
2732
2733 configure.in
2734         - new enable option, --enable-cond-command, to compile in the [[...]]
2735           command code
2736
2737 config.h.in
2738         - new #define, COND_COMMAND, to compile in the [[...]] command code
2739
2740 tests/{run-cond,cond.{tests,right}}
2741         - test suite for the new [[...]] command
2742
2743 {builtins,lib/{readline,glob,tilde}}/Makefile.in
2744         - explicit dependencies for .o files on .c files for losing makes
2745           like Solaris
2746
2747 doc/{bash.{1,html},bashref.texi}
2748         - documented the new `[[' compound command
2749         - documented the test/[ builtin behavior based on the number of
2750           arguments in the description of the builtin
2751         - made a new section for conditional expressions that just lists
2752           the available primaries -- the connectives and other operators
2753           are listed in the description of the [[ command and the test/[
2754           builtin
2755
2756                                    9/18
2757                                    ----
2758 builtins/set.def
2759         - minus_o_option_commands is now a global function so the shopt
2760           code can use it
2761         - minus_o_option_commands now takes an argument telling it which
2762           options to print, just like list_minus_o_options
2763         - new function, print_minus_o_option, which prints the value of
2764           a `set -o' option either in the traditional format or in the
2765           format used by `set +o'
2766         - changed list_minus_o_opts and minus_o_option_commands to call
2767           print_minus_o_option
2768
2769 builtins/shopt.def
2770         - `shopt -p' now causes output to be printed in a format reusable
2771           as input (the format is a series of shopt commands, like the
2772           output of `set +o')
2773         - fixed a bug that made `shopt -so' and `shopt -uo' not work
2774         - fixed list_shopt_o_options so that `shopt -op' acts like `set +o'
2775         - fixed list_shopt_o_options to that `shopt -op optname' prints the
2776           value of optname in a reusable format
2777         - fixed list_some_o_options so that `shopt -ops' and `shopt -opu'
2778           work and display output in a reusable format
2779
2780                                    9/19
2781                                    ----
2782 doc/{bash.{1,html},bashref.texi}
2783         - documented new `shopt -p' behavior
2784
2785 shell.c
2786         - made `bash +o' display the same output as `set +o' and then
2787           start an interactive shell (previously `bash -o' and `bash +o'
2788           displayed the same thing)
2789
2790 builtins/common.h
2791         - added prototypes to the extern function declarations
2792
2793                                    9/22
2794                                    ----
2795 builtins/evalstring.c
2796         - fixed the DISCARD case of the jump_to_top_level so that it
2797           doesn't try to call dispose_command(command) after the
2798           `pe_dispose' unwind frame gets run, since that disposes the
2799           command
2800
2801                                    9/23
2802                                    ----
2803 test.[ch]
2804         - test_eaccess is now a global function so that globbing code can
2805           use it
2806
2807 lib/glob/glob.c
2808         - rewrote glob_vector to be slightly more efficient and to not
2809           read the directory if the filename pattern does not contain
2810           any globbing chars.  This satisfies the POSIX requirement that
2811           read permission is not required for a directory when the
2812           pathname component does not contain a pattern character (bug
2813           reported by jsm28@cam.ac.uk)
2814
2815 subst.c
2816         - fixed parameter_brace_expand so that ${array[@]} and ${array[*]}
2817           behave correctly when IFS is unset or set to something that does
2818           not contain a space (they should result in separate words, just
2819           like $@ and $*)
2820
2821 tests/{run-array2,array-at-star,array2.right}
2822         - tests for the expansions of ${array[@]} and ${array[*]}, derived
2823           from the tests in dollar-at-star
2824
2825                                    9/24
2826                                    ----
2827 jobs.c
2828         - fixed cleanup_dead_jobs so that it doesn't remove the job
2829           containing last_asynchronous_pid from the job table.  This
2830           fixes the POSIX.2 `wait' requirement problem
2831
2832                                    9/25
2833                                    ----
2834 parse.y
2835         - added `\r' escape sequence to the prompt expansion code
2836
2837 lib/readline/chardefs.h
2838         - added defines for ISOCTAL, OCTVALUE, isxdigit (if not defined),
2839           and HEXVALUE
2840
2841 lib/readline/bind.c
2842         - added `normal' echo/printf-like backslash escapes to the
2843           key sequence translation code, with the addition that \d
2844           expands to RUBOUT.  This means that key sequence definitions
2845           (before the `:') and macro values may contain these special
2846           backslash-escape sequences
2847         - now that we can translate octal escape sequences in key bindings,
2848           change _rl_get_keyname so that it turns characters with values
2849           128-159 inclusive into octal escape sequences (\200-\237), since
2850           those characters are not ASCII or ISO Latin 1
2851
2852 doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo
2853         - documented new backslash escapes for readline key sequence and
2854           macro translation
2855
2856 builtins/pushd.def
2857         - new function, get_dirstack_from_string(char *string), returns an
2858           element from the directory stack or null, treating the argument
2859           exactly as `dirs string' would, with the exception that if
2860           the first character of `string' is not `+' or `-', a `+' is
2861           assumed
2862
2863 builtins/common.h
2864         - new extern declaration for get_dirstack_from_string
2865
2866 general.c
2867         - added code to bash_special_tilde_expansions to get the expansion
2868           using get_dirstack_from_string() if the first character of the
2869           tilde-prefix is a digit or the first character is a `+' or `-'
2870           and the second is a digit
2871
2872 tests/dstack.{tests,right}
2873         - renamed from dirstack.{tests,right}
2874
2875 tests/dtack2.{tests,right}
2876         - new tests for the directory stack tilde expansion code
2877
2878 tests/run-dirstack
2879         - now runs both dstack and dstack2
2880
2881                                    10/3
2882                                    ----
2883 trap.c
2884         - reordered header file inclusion for irix 4
2885
2886 execute_cmd.c
2887         - fixed select_query so that a reply that is not a number is treated
2888           the same as a numeric reply that is out of range
2889
2890 lib/readline/util.c
2891         - added a backwards-compatibility definition of _rl_savestring()
2892
2893 builtins/set.def
2894         - initialize_shell_options now takes an argument saying whether or
2895           not we should parse $SHELLOPTS from the environment.  The shell
2896           does not parse the value if it's restricted, running setuid, or
2897           running in `privileged mode'
2898
2899 shell.c
2900         - change call to initialize_shell_options to add the correct argument
2901
2902 builtins/common.h
2903         - changed extern declaration for initialize_shell_options
2904
2905 doc/{bash.{1,html},bashref.texi}
2906         - added note that the shell ignores $SHELLOPTS in the environment at
2907           startup if running in privileged mode
2908         - added note that the restricted shell does not parse $SHELLOPTS from
2909           the environment at startup
2910
2911                                    10/6
2912                                    ----
2913 aclocal.m4
2914         - change BASH_RLIMIT_TYPE so that it looks for rlim_t in
2915           <sys/resource.h> as well as <sys/types.h>, for Solaris 2.6
2916         - new macro, BASH_LARGE_FILE_SUPPORT, to enable special compilation
2917           options for large files on Solaris 2.6 (from eggert@twinsun.com)
2918
2919 mailcheck.c
2920         - the `file_size' member of the FILEINFO struct should be of
2921           type `off_t'
2922         - the `size' variable in file_has_grown should be of type `off_t'
2923         - the RESET_MAIL_FILE macro should initialize file_size to 0, not 0L
2924
2925 builtins/Makefile.in
2926         - LDFLAGS and LOCAL_LDFLAGS are now set by configure
2927         - `mkbuiltins' is now created from `mkbuiltins.o' instead of directly
2928           from the source to the executable
2929
2930 builtins/evalfile.c
2931         - fixed _evalfile so that it handles large files correctly on
2932           systems where the st_size member of `struct stat' will not fit
2933           into an `int'
2934
2935 builtins/mkbuiltins.c
2936         - don't assume that st_size fits into an int
2937
2938 input.[ch]
2939         - the `b_size' member of a struct BSTREAM is now of type `size_t'
2940         - changed third argument to make_buffered_stream to size_t; changed
2941           caller
2942         - changed `size' variable in fd_to_buffered_stream to type `size_t'
2943
2944 general.h
2945         - include <sys/resource.h> if HAVE_SYS_RESOURCE_H and RLIMTYPE are
2946           both defined, for possible necessary definition of RLIMTYPE
2947           (e.g., on Solaris 2.6)
2948
2949 {execute_cmd,jobs}.c, builtins/times.def
2950         - don't include <sys/resource.h> explicitly if RLIMTYPE is defined,
2951           since general.h will include it in that case
2952
2953 lib/readline/bind.c
2954         - new function, char *_rl_read_file(filename, sizep), which reads
2955           FILENAME into a malloced buffer, returning the buffer and the
2956           size of the buffer in *SIZEP
2957
2958 lib/readline/histfile.c
2959         - changed read_history_range and history_truncate_file to handle
2960           large files
2961
2962 hashcmd.c
2963         - find_hashed_filename should not add `./' to the front of a pathname
2964           that already begins with `./'
2965
2966                                    10/8
2967                                    ----
2968 support/config.sub
2969         - recognize `hppa2.0' as a valid machine architecture
2970
2971 aclocal.m4
2972         - changed BASH_CHECK_LIB_TERMCAP so that `gnutermcap' is not chosen
2973           if `$prefer_curses' is set to something
2974
2975 bashhist.c
2976         - don't use HISTCONTROL or HISTIGNORE to remove lines from the
2977           second and subsequent lines of a multi-line command
2978           (current_command_line_count > 1).  Old code did this only when
2979           command-oriented-history was enabled
2980
2981 doc/{bash.{1,html},bashref.texi}
2982         - changed descriptions of HISTCONTROL and HISTIGNORE to state that
2983           these variables are not applied to the second and subsequent
2984           lines of a multi-line command
2985
2986 builtins/hash.def, {copy,dispose}_cmd.c
2987         - include "bashtypes.h" -- cray machines need it because of their
2988           oddball definition of `word'
2989
2990 configure.in
2991         - changed check of ${host_cpu} to check for `*cray*' and `*Cray*'
2992           when deciding whether to include the GNU malloc, since it
2993           seems that ${host_cpu} gets set to `CrayYMP'
2994
2995                                    10/9
2996                                    ----
2997 configure.in
2998         - look for strtod and strtol in libc
2999         - make lib/sh directory in build directory if not there
3000         - create lib/sh/Makefile
3001
3002 config.h.in
3003         - added HAVE_STRTOD and HAVE_STRTOL
3004
3005 Makefile.in
3006         - changes for lib/sh/libsh.a (shell library)
3007
3008 builtins/printf.def
3009         - took out the `#ifdef STRTOUL' code, since strtoul is in libsh.a,
3010           and will be resolved from there if it's not in libc
3011
3012 variables.c
3013         - call strtol() instead of string_to_long()
3014
3015 general.c, general.h
3016         - removed string_to_long
3017         - changed legal_number to use strtol so it correctly sets errno
3018           to ERANGE on overflow
3019         - moved bash_getcwd_errstr here from lib/sh/oslib.c
3020
3021 externs.h
3022         - moved extern declarations for functions defined in libsh to a
3023           separate section of the file, added extern declarations for
3024           other functions in libsh
3025
3026 builtins/ulimit.def
3027         - changed macro definition for string_to_rlimtype to call strtol
3028           directly instead of string_to_long
3029
3030 lib/sh/clktck.c
3031         - moved get_clock_tck to its own file, since it's compiled in
3032           unconditionally
3033
3034                                    10/10
3035                                    -----
3036 lib/sh/getenv.c
3037         - moved getenv() and __getenv() here from lib/sh/oslib.c
3038
3039 lib/sh/{setlinebuf,strerror,strcasecmp}.c
3040         - moved {setlinebuf,strerror,strcasecmp}() from oslib.c to
3041           individual files
3042
3043 lib/sh/Makefile.in, Makefile.in
3044         - changes for new files in lib/sh
3045
3046 aclocal.m4
3047         - new macro BASH_SYS_RESTARTABLE_SYSCALLS, which does what
3048           AC_SYS_RESTARTABLE_SYSCALLS does, but using posix sigaction()
3049
3050 configure.in
3051         - call BASH_SYS_RESTARTABLE_SYSCALLS if ac_cv_sys_restartable_syscalls
3052           is `no'
3053
3054                                    10/13
3055                                    -----
3056 builtins/jobs.def
3057         - catch out-of-range jobs better in disown_builtin
3058
3059 configure.in
3060         - don't build with GNU malloc on cygwin32
3061
3062 trap.c
3063         - change signal_name to handle the case where signal_names[sig] is
3064           NULL, which can happen on cygwin32
3065
3066 execute_cmd.c
3067         - changes to do_piping to make pipes text mode (O_TEXT) on cygwin32
3068
3069 cross-build
3070         - new directory with cache files and other stuff for cross-compiling
3071           bash (currently only for building for cygwin32 on a Unix machine)
3072
3073 cross-build/cygwin32.cache
3074         - new file containing configuration variable assignments for
3075           cygwin32 that would otherwise require a default case for AC_TRY_RUN
3076
3077 configure.in
3078         - source ${srcdir}/cross-build/cygwin32.cache on CYGWIN32 systems
3079           if we're cross-compiling on a unix machine
3080         - set $CC_FOR_BUILD for cygwin32 cross-compiling environment
3081
3082 Makefile.in
3083         - CC_FOR_BUILD is now a variable set by configure
3084
3085 builtins/mkbuiltins.c
3086         - only check for read(2) returning <= 0 in extract_info() (error
3087           and exit on < 0, warning and return on == 0)
3088
3089 builtins/evalfile.c
3090         - only check for read(2) returning <= 0 in _evalfile() (error and
3091           and failure return on < 0, success on == 0 while short-circuting
3092           rest of operation)
3093
3094                                    10/14
3095                                    -----
3096
3097 vprint.c
3098         - moved to lib/sh/vprint.c
3099
3100 lib/sh/Makefile.in
3101         - added entries for vprint.[co] in the appropriate places
3102
3103 cross-build/win32sig.h
3104         - a version of signames.h for cross-compiling for the CYGWIN32
3105           environment on a Unix machine (from noer@cygnus.com)
3106
3107 aclocal.m4
3108         - made all cases of AC_TRY_RUN and AC_TRY_COMPILE have reasonable
3109           default cases for cross-compiling, and tell the user what they are
3110
3111 Makefile.in
3112         - removed vprint.c from shell sources and vprint.o from shell
3113           objects
3114         - added a level of indirection for signames.h -- the variable
3115           SIGNAMES_H is set by configure to either `lsignames.h' or
3116           a file for a cross-compilation environment (currently only
3117           the cygwin32 stuff is supported).  Then that file is copied
3118           to `signames.h'.  `lsignames.h' is created by `mksignames' as
3119           was previously used to create signames.h directly
3120
3121 configure.in
3122         - set SIGNAMES_H to either `$(srcdir)/cross-build/win32sig.h' or
3123           `lsignames.h' as appropriate, substitute into Makefile
3124
3125                                    10/15
3126                                    -----
3127 builtins/Makefile.in
3128         - CC_FOR_BUILD is now set by configure and used to build mkbuiltins
3129           and psize.aux
3130
3131 variables.h
3132         - new variable attribute `att_tempvar', set if the SHELL_VAR * was
3133           constructed on the fly from the temporary environment
3134
3135 variables.c
3136         - find_name_in_env_array now sets the `att_tempvar' attribute on
3137           the SHELL_VAR it creates
3138
3139 findcmd.c
3140         - search_for_command now disposes the SHELL_VAR created by searching
3141           the temporary environment for $PATH, if it is found there
3142         - _find_user_command_internal also disposes of the SHELL_VAR if it
3143           has the `att_tempvar' attribute set
3144
3145 builtins/setattr.c
3146         - show_name_attributes looks in the temporary environemnt, so it needs
3147           to dispose the SHELL_VAR if it has the att_tempvar attribute set
3148
3149 subst.c
3150         - parameter_brace_expand_word now disposes of the SHELL_VAR returned
3151           by find_variable if it has the att_tempvar attribute set
3152         - ditto for param_expand and word_split
3153
3154 builtins/kill.def
3155         - disallow null pid arguments instead of treating them as 0
3156         - display a usage message and return failure if no pid or job
3157           arguments are supplied
3158
3159                                    10/16
3160                                    -----
3161 builtins/declare.def
3162         - make `var=value declare -x var' behave the same as
3163           `var=value export var' and `var=value declare -r var' behave the
3164           same as `var=value readonly var', now that we have the `tempvar'
3165           attribute
3166
3167                                    10/22
3168                                    -----
3169 jobs.c
3170         - non-interactive shells shouldn't report jobs killed by a SIGINT,
3171           even if the standard output is to a terminal
3172         - pretty_print_job should add a CR at the end of its output if the
3173           shell is interactive and asynchronous notification is being
3174           performed.  This fixes the problem with extra CRs in the output
3175           of $(jobs)
3176
3177 general.c
3178         - changed canonicalize_pathname to change `//' into `/', but leave
3179           other pathnames starting with two consecutive slashes alone
3180
3181                                    10/27
3182                                    -----
3183
3184 lib/readline/histexpand.c
3185         - fixed history_expand so that the appearance of the history
3186           comment character at the beginning of a word inhibits history
3187           expansion for the rest of the line
3188
3189                                    10/29
3190                                    -----
3191 jobs.c,variables.c
3192         - moved set_pipestatus_array to variables.c
3193
3194 variables.c
3195         - new function, set_pipestatus_from_exit(int), which sets the
3196           PIPESTATUS variable from a command's exit status
3197
3198 variables.h
3199         - extern declarations for set_pipestatus_from_exit and
3200           set_pipestatus_array
3201
3202 execute_cmd.c
3203         - fixed execute_simple_command to call set_pipestatus_from_exit
3204           if a foreground builtin or function, or a foreground null
3205           command is executed
3206
3207                                    10/31
3208                                    -----
3209 shell.c
3210         - fixed run_startup_files to detect being run by sshd, and treat
3211           that case as equivalent to being run by rshd
3212
3213                                    11/3
3214                                    ----
3215 builtins/set.def
3216         - make sure `set -a' doesn't cause SHELLOPTS to be exported when
3217           a change is made to one of the shell options
3218
3219                                    11/4
3220                                    ----
3221 pathexp.c
3222         - fix to shell_glob_filename in the code that uses a POSIX glob
3223           library
3224
3225                                    11/5
3226                                    ----
3227 jobs.c
3228         - fix cleanup_dead_jobs to hang onto the job corresponding to
3229           last_asynchronous_pid only if the shell is not interactive
3230           (this still has the problem that until a new async process
3231           is started, the job will stay in the jobs table)
3232
3233 configure.in,aclocal.m4
3234         - added a new macro, BASH_TYPE_U_INT32_T, to check for u_int32_t
3235           separately from int32_t, since there are systems (HP-UX 10.20)
3236           that have a define for the latter but not the former
3237
3238                                    11/6
3239                                    ----
3240 jobs.c
3241         - cleanup_dead_jobs no longer checks whether the job it is deleting
3242           corresponds to last_asynchronous_pid
3243         - notify_of_job_status and mark_dead_jobs_as_notified now will not
3244           mark the job corresponding to last_asynchronous_pid as notified
3245           if the shell is not interactive
3246         - wait_for_single_pid, if told to wait for last_asynchronous_pid,
3247           or the job of which it is a member, will take care of marking
3248           the job as notified after calling wait_for and collecting the
3249           status.  This means that two successive `wait' calls for $! will
3250           succeed the first time and fail the second, as POSIX.2 specifies
3251           (take this code out if it causes problems)
3252
3253                                    11/7
3254                                    ----
3255 jobs.c
3256         - wait_for_job, if told to wait for the job corresponding to the
3257           last async pid, will mark the job as notified after waiting for
3258           it and collecting the status
3259
3260 general.h
3261         - fixed MEMBER macro to avoid reading past end of S (it used to
3262           test s[1] before s[0], which is an error if s == "")
3263
3264 subst.c
3265         - expand_word_internal should free ISTRING before returning if
3266           param_expand returns an error
3267         - parameter_brace_expand_word should free the memory it allocates
3268           and passes to param_expand
3269
3270 execute_cmd.c
3271         - execute_arith_command should call dispose_words on the list
3272           returned by expand_words
3273
3274 parse.y
3275         - after calling parse_arith_command, read_token needs to free the
3276           string value that parse_arith_command fills in, since make_word
3277           makes a copy of the string it's passed
3278
3279                                    11/10
3280                                    -----
3281 subst.c
3282         - cond_expand_word needs to free the value returned by string_list
3283           after it is run through quote_string_for_globbing
3284
3285 parse.y
3286         - make sure cond_term frees yylval.word if it is just a `!' and
3287           it's parsed as a term negation operator
3288
3289 variables.c
3290         - assign_array_var_from_string needs to free the word list returned
3291           by parse_string_to_word_list after calling expand_words_shellexp
3292           on it
3293
3294 execute_cmd.c
3295         - changed execute_simple_command to avoid saving the_printed_command
3296           into command_line until just before it's needed.  This should save
3297           time and prevent memory leaks on errors, but it must be watched
3298           closely to make sure that the_printed_command doesn't change out
3299           from under execute_simple_command before we copy it
3300
3301                                    11/12
3302                                    -----
3303 builtins/alias.def
3304         - alias and unalias should print error messages when passed an
3305           argument that is not an alias for printing or deletion,
3306           respectively, even if the shell is not interactive
3307
3308 builtins/exit.def
3309         - `logout' will no longer exit a non-login non-interactive shell
3310
3311                                    11/17
3312                                    -----
3313 lib/readline/nls.c
3314         - add `koi8-r' as a legal LANG value
3315
3316 builtins/alias.def
3317         - if `alias' or `alias -p' is executed when no aliases are defined,
3318           the return status should be 0, according to POSIX.2
3319
3320                                    11/18
3321                                    -----
3322 subst.c
3323         - changed a couple of calls to make_word_list (make_word(z), ...)
3324           to add_string_to_list (z, ...)
3325
3326 execute_cmd.c
3327         - execute_cond_command now sets this_command_name to `[['
3328
3329                                    11/21
3330                                    -----
3331 variables.c
3332         - all_visible_{function,variable}s and the functions they call
3333           should be compiled in only if READLINE is defined
3334
3335                                    11/24
3336                                    -----
3337 aclocal.m4
3338         - remove some leading whitespace before preprocessor statements in
3339           BASH_KERNEL_RLIMIT_CHECK
3340
3341 general.[ch]
3342         - fix declarations for group_member so the extern declaration in
3343           general.h agrees with the definition in general.c (fix from
3344           Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>)
3345
3346 builtins/cd.def
3347         - print the new working directory if the shell is interactive
3348           and `cd -' succeeds
3349         - don't print the new working directory if it's found in $CDPATH
3350           if the shell is not interactive
3351
3352                                    11/25
3353                                    -----
3354 builtins/cd.def
3355         - fixes to bindpwd so that it copes with get_working_directory
3356           returning NULL (bug from schwab@issan.informatik.uni-dortmund.de)
3357
3358                                    12/2
3359                                    ----
3360 support/config.guess
3361         - add support for new OS name for SINIX SVR4 systems
3362
3363                                    12/3
3364                                    ----
3365
3366 builtins/set.def
3367         - `unset' should check that a function it's trying to unset is a
3368           legal identifier only when in POSIX mode
3369
3370 redir.c
3371         - changed here_document_to_fd to try and make sure the filename
3372           used for the here document is `more unique', since the old
3373           version would fail if two here documents were created in less
3374           than a second
3375
3376                                    12/4
3377                                    ----
3378 builtins/cd.def
3379         - POSIX.2 says that if CDPATH is used to find the new directory,
3380           and it's not relative to the current directory, the new directory
3381           name should be displayed on stdout even if the shell is not
3382           interactive
3383
3384                                    12/5
3385                                    ----
3386 parse.y
3387         - changes so that `time' is recognized as a reserved word only at
3388           the beginning of a pipeline (the last read token is one of 0,
3389           `;', `\n', `&&', `||', or `&'):
3390
3391                 o add clause to special_case_tokens that does the check
3392                   and returns TIME if the conditions are met
3393                 o take check for `TIME' out of CHECK_FOR_RESERVED_WORD, but
3394                   leave it in the word_token_alist so that `type' still
3395                   reports it as a `keyword'
3396                 o new function, time_command_acceptable(), encapsulates the
3397                   necessary conditions for `time' to be returned as a 
3398                   reserved word
3399
3400 [bash-2.02-alpha1 frozen]
3401
3402                                   1/6/98
3403                                   ------
3404 lib/glob/fnmatch.c
3405         - fix define for isgraph so that it does not return success for space
3406         - fix strcompare() so that the call to strcoll is surrounded by
3407           #ifdef HAVE_STRCOLL
3408
3409                                     1/7
3410                                     ---
3411 lib/glob/fnmatch.c
3412         - the `test' argument to brackmatch() should be of type `unsigned char'
3413
3414                                    1/11
3415                                    ----
3416 execute_cmd.c
3417         - make sure execute_arith_command sets this_command_name to `(('
3418
3419                                    1/29
3420                                    ----
3421 parse.y
3422         - make sure the code for pushing and popping strings is compiled in
3423           if either ALIAS or DPAREN_ARITHMETIC is defined, because the ((
3424           code uses push_string in the case of a nested subshell
3425         - fix cond_skip_newlines so it resets the prompt to $PS2 while
3426           parsing an unfinished conditional command
3427
3428 dispose_cmd.c, copy_cmd.c, builtins/hash.def
3429         - fixes to not use `word' as a variable name or the name of a
3430           function parameter to get around stuff in the Cray Unix include
3431           files
3432
3433 builtins/printf.def
3434         - return failure immediately if an illegal format character is
3435           encountered
3436
3437 redir.c
3438         - make the code that creates here-documents behave better if the
3439           file it's trying to create already exists for some reason
3440
3441 lib/readline/complete.c
3442         - changed print_filename to return the number of characters it
3443           outputs; changed callers to use that value.  This makes columns
3444           line up when printing completion listings with filenames
3445           containing control characters
3446
3447 doc/bash.{1,html}
3448         - fixed a typo in the quote removal section
3449
3450                                    1/30
3451                                    ----
3452 parse.y
3453         - free_string_list() needs to check that t->expander is not NULL
3454           before trying to dereference it
3455         - reset_parser() doesn't need to set pushed_string_list to NULL
3456           after calling free_string_list(), since free_string_list does it
3457
3458 configure.in,cross-build/cygwin32.cache
3459         - fixes from Geoff Noer for better cygwin32 cross-compilation
3460
3461 tests/printf.{tests,right}
3462         - removed test for integer overflow, since error messages differ
3463           across systems
3464
3465 pathexp.c
3466         - fixed a problem with unquoted_glob_pattern_p that made things
3467           like `x+*' not expand correctly
3468
3469 lib/glob/glob.c
3470         - fixed a problem with glob_pattern_p that made things like `x+*'
3471           not expand correctly
3472
3473 builtins/cd.def
3474         - if `cd -P' is executed, or `set -o physical' has been executed,
3475           the value of $PWD after a successful cd will not contain any
3476           symlinks, regardless of whether or not the shell is in posix mode
3477
3478                                     2/3
3479                                     ---
3480 lib/readline/shell.c
3481         - include <string.h> or <strings.h> as appropriate
3482
3483                                     2/4
3484                                     ---
3485 builtins/common.c
3486         - take out the code in backslash_quote() that looks for tildes to
3487           quote, for the time being
3488         - if getcwd() fails, get_working_directory now prints the error
3489           message corresponding to errno in addition to the rest of the
3490           information -- TENTATIVE CHANGE
3491
3492 lib/sh/getcwd.c
3493         - fix from Paul Smith to make getcwd() behave better in the presence
3494           of lstat(2) failures
3495
3496 stringlib.c
3497         - when copying the replacement string into the output string being
3498           constructed, strsub() needs to make sure enough space for the
3499           replacement string is allocated, not the length of the pattern
3500           (use REPLEN, not PATLEN)
3501
3502 mailcheck.c
3503         - make sure make_default_mailpath() has a valid current_user struct
3504           before trying to construct the default mailpath
3505
3506                                     2/5
3507                                     ---
3508 execute_cmd.c
3509         - execute_builtin needs to call run_unwind_frame if the builtin is
3510           `source' or `eval' and we're not in a subshell rather than just
3511           calling dispose_builtin_env, because not all invocations copy 
3512           the temporary_env to builtin_env, and nested calls to `.' require
3513           that the temporary env given to the first persist until that first
3514           call to `.' finishes
3515
3516 parse.y
3517         - fix to history_delimiting_chars so that function definitions like
3518
3519                 function xyz
3520                 {
3521                         echo a
3522                 }
3523
3524           are saved to the history correctly when command_oriented_history
3525           is enabled, but literal_history is not
3526
3527 bashhist.c
3528         - when calling internal_error from pre_process_line, use "%s" as
3529           the format with history_value as the argument to avoid the
3530           problem with the failed history event containing printf escape
3531           sequences
3532
3533                                    2/13
3534                                    ----
3535 shell.c
3536         - if shell_initialized is non-zero, don't line-buffer stderr and
3537           stdout in shell_initialize on SunOS5 -- see if this fixes the
3538           crashing problems for scripts without a leading `#! /bin/sh'
3539
3540                                    2/17
3541                                    ----
3542 bashline.c
3543         - added diffs to _ignore_completion_names from Andreas Schwab to
3544           complete names that would otherwise be ignored with FIGNORE if
3545           they are the only possible completions.  Define NO_FORCE_FIGNORE
3546           if you want this; it is not defined by default
3547
3548                                    2/19
3549                                    ----
3550 support/bashbug.sh
3551         - changed the bug-bash address to bug-bash@gnu.org
3552
3553 examples/loadables/Makefile.in
3554         - converted from `Makefile' with some boilerplate configure variables
3555           to find the source and build directories -- still requires some
3556           hand-editing to get the right CFLAGS and LDFLAGS for shared object
3557           creation
3558
3559 Makefile.in
3560         - create examples/loadables/Makefile with `make makefiles'
3561
3562 configure.in
3563         - create examples/loadables directory so `make makefiles' can write a
3564           makefile there
3565
3566 general.c
3567         - make sure initialize_groups_array always sets things up so that
3568           ${GROUPS[0]} is the user's primary group (current_user.gid)
3569
3570                                    2/20
3571                                    ----
3572 lib/readline/parens.c
3573         - change the time delay when showing matching parens from 1.5 sec to
3574           0.5 sec
3575
3576                                    2/23
3577                                    ----
3578 shell.c
3579         - isnetconn() should call getpeername(fd,...) instead of using 0
3580           (though fileno(stdin) should always be 0)
3581
3582 support/config.guess
3583         - updates from master FSF copy
3584
3585                                    2/24
3586                                    ----
3587 support/man2html.c
3588         - modified version of man2html to convert bash.1 into bash.html
3589
3590 support/Makefile.in
3591         - simple Makefile to create man2html
3592
3593 configure.in
3594         - make sure support/Makefile is created
3595
3596 Makefile.in
3597         - make sure support/Makefile is created and cleaned
3598
3599 doc/Makefile.in
3600         - changes to suffix rules to say how to make .html from .1 
3601         - `bash.html' is now a makefile target, created by man2html from
3602           bash.1 rather than being hand-modified
3603
3604 lib/sh/itos.c, general.c
3605         - new file, itos() from general.c.  This is here because the
3606           implementation of strerror in lib/sh/strerror.c uses itos()
3607
3608 Makefile.in, lib/sh/Makefile.in
3609         - changes to add itos.c in libsh.a
3610
3611 externs.h, general.h
3612         - moved extern declaration of itos() from general.h to externs.h
3613
3614 aclocal.m4
3615         - changes to BASH_LARGE_FILE_SUPPORT for the LFS64_* variables in
3616           Solaris 2.6
3617
3618 Makefile.in
3619         - make sure configure sets CPPFLAGS in this file
3620
3621                                    2/27
3622                                    ----
3623
3624 builtins/command.def
3625         - make sure get_standard_path returns the value of
3626           STANDARD_UTILS_PATH if _CS_PATH is defined, but confstr(3)
3627           returns 0, indicating that _CS_PATH does not have a defined
3628           value
3629
3630 bashhist.c
3631         - fixed bash_history_inhibit_expansion() so that extended globbing
3632           expressions like *.!(c) are not history expanded if extended_glob
3633           is non-zero (shopt -s extglob has been executed)
3634
3635                                     3/2
3636                                     ---
3637 Makefile.in
3638         - changed release status to `beta1'
3639
3640 [bash-2.02-beta1 frozen]
3641
3642                                    3/17
3643                                    ----
3644 lib/readline/vi_mode.c
3645         - make sure _rl_vi_save_insert() gets a non-null UNDO_LIST pointer
3646           before trying to do anything with it
3647
3648 jobs.c
3649         - add a call to internal_warning from wait_for_job if the job is
3650           stopped
3651         - changed notify_of_job_status to not report pipelines exiting due to
3652           SIGPIPE in non-interactive shells if the shell is compiled with
3653           -DDONT_REPORT_SIGPIPE
3654
3655 builtins/psize.sh
3656         - some fixes to try to avoid /tmp file races and surreptitious
3657           substitutions
3658
3659 version.c
3660         - changed the extended version info to show 1998 as the copyright year
3661
3662 parse.y
3663         - fixes from Andreas Schwab <schwab@LS5.informatik.uni-dortmund.de>
3664           for compilation errors when the shell is configured --disable-alias
3665           but with dparen arithmetic enabled
3666
3667 eval.c
3668         - fixes from Andreas Schwab <schwab@LS5.informatik.uni-dortmund.de> to
3669           make sure the input stream is popped correctly when performing an
3670           array assignment in the command argument to `bash -c', e.g.,
3671           `bash -c 'A=()''
3672
3673 builtins/kill.def
3674         - make `kill' with no arguments print a usage message and return a
3675           failure status
3676
3677 alias.c
3678         - fix so that rd_token doesn't dump core when trying to do alias
3679           expansion on a line containing an unclosed single quote (fix from
3680           Vasco Pedro <vp@di.fct.unl.pt>)
3681
3682 builtins/cd.def
3683         - fix so that using a non-empty directory from CDPATH to construct
3684           the name of the directory to change to results in an absolute
3685           pathname of the new current working directory being displayed,
3686           as POSIX.2 specifies
3687
3688 support/bashbug.sh
3689         - a couple of small fixes to minimize /tmp file races -- the script
3690           is still raceable, the window is just smaller
3691
3692                                    3/24
3693                                    ----
3694 variables.c
3695         - make sure assign_in_env passes a malloc'd string to
3696           expand_string_unsplit, because some of the error code assumes that
3697           it is malloc'd and frees it (bug reported by Marko.Makela@HUT.FI)
3698
3699                                    3/25
3700                                    ----
3701 doc/bashref.texi
3702         - changed the email addresses to use the @email texinfo tag
3703
3704 trap.c
3705         - call reset_parser from the exit trap code before calling
3706           parse_and_execute, so reserved words are parsed correctly
3707
3708 subst.c
3709         - make sure parameter_brace_patsub expands the pattern string as if
3710           the expression were not in double quotes, even if the entire
3711           expansion is enclosed in double quotes, so that quote removal
3712           on embedded double quotes is performed correctly (bug report from
3713           schwab@issan.informatik.uni-dortmund.de)
3714
3715                                    3/27
3716                                    ----
3717 support/config.guess
3718         - changes to allow Power PCs running Apple's Rhapsody to configure
3719
3720                                    3/31
3721                                    ----
3722
3723 Makefile.in
3724         - changed release status to `beta2'
3725
3726 [bash-2.02-beta2 frozen]
3727
3728                                     4/6
3729                                     ---
3730 subst.c
3731         - make sure command_substitute does not try to set the terminal's
3732           process group to a background job
3733
3734 [bash-2.02 frozen]