Imported from ../bash-2.01.tar.gz.
[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]