Imported from ../bash-2.05a.tar.gz.
[platform/upstream/bash.git] / CWRU / changelog
1                                  4/9/2001
2                                  --------
3 [bash-2.05 released]
4
5                                    4/10
6                                    ----
7 redir.c
8         - check return value of fclose() in write_here_document() for error
9           returns; don't just rely on fwrite() failing
10
11 support/bashbug.sh
12         - set TMPDIR to /tmp if it's null or unset
13         - use $TMPDIR in the TEMP tempfile name template
14         - fixed the call to `mktemp', if it exists, to make it more portable
15
16 jobs.c
17         - if WCONTINUED is not defined, define it to 0 and add a define for
18           WIFCONTINUED(wstatus) which expands to 0
19         - add WCONTINUED to the flags passed to waitpid(2) in waitchld()
20         - don't increment children_exited if waitpid's status is WIFCONTINUED,
21           since we don't want to call a SIGCHLD trap handler in this case
22         - in waitchld(), we set child->running to 1 if WIFCONTINUED(status)
23           is non-zero
24         - make sure pretty_print_job doesn't check for the core dump bit if
25           the process has been continued; it's only valid if the job is dead
26         - in set_job_status_and_cleanup, set the job to JRUNNING if job_state
27           is non-zero and the job was previously marked as JSTOPPED
28
29 configure.in
30         - add -DBROKEN_DIRENT_D_INO to interix LOCAL_CFLAGS
31
32 lib/glob/glob.c
33         - if BROKEN_DIRENT_D_INO is defined, define REAL_DIR_ENTRY to 1
34
35 jobs.c
36         - in kill_pid, we only need to block and unblock SIGCHLD if the
37           `group' argument is non-zero, since otherwise we just call `kill'
38           on the pid argument
39
40 version.c
41         - update copyright date to 2001
42
43 bashline.c
44         - prog_complete_return needs to take a `const char *' as its first
45           argument
46         - history_completion_generator needs to take a `const char *' as
47           its first argument, and `text' needs to be a `const char *'
48
49                                    4/11
50                                    ----
51 redir.c
52         - fixed a weird typo in redir_special_open, case RF_DEVFD, added
53           call to all_digits before call to legal_number
54         - fixed do_redirection_internal to call legal_number instead of atol(3)
55           when translating r_duplicating_{in,out}put_word, so it handles
56           overflow better
57         - produce an error message in redirection_error for out-of-range
58           file descriptors
59         - change allocation strategy in redirection_error so we don't have to
60           malloc scratch memory if redirection_expand() fails
61
62 jobs.h
63         - added defines for `running' member of a struct process
64
65 general.c
66         - fix legal_number to return 0 when strtol(3) reports overflow or
67           underflow
68
69 parse.y
70         - changed read_token_word to call legal_number instead of atoi(3)
71
72 input.c
73         - return -1/EBADF from close_buffered_fd if fd is < 0
74
75 command.h
76         - fixed bogus comment about IS_DESCRIPTOR in description of the
77           REDIRECTEE struct
78
79 print_cmd.c
80         - change cprintf's 'd' modifier code to display negative numbers as
81           an out-of-range value.  We can do this only because the only use
82           of %d is to output file descriptor numbers in redirections
83
84 support/mksignames.c
85         - need to include config.h to get a possible value for
86           UNUSABLE_RT_SIGNALS
87
88                                    4/16
89                                    ----
90 lib/readline/doc/rluser.texinfo
91         - corrected a small error in one description of M-DEL
92
93                                    4/17
94                                    ----
95 stringlib.c
96         - need to initialize `ind' before calls to RESIZE_MALLOCED_BUFFER
97           in strcreplace()
98
99 support/bashversion.c
100         - new file, prints bash version information
101
102 Makefile.in
103         - rules for building bashversion and linking it to version.o
104
105                                    4/24
106                                    ----
107 conftypes.h
108         - new file with HOSTTYPE, OSTYPE, MACHTYPE, etc. defines from
109           variables.h
110
111 variables.h, version.c
112         - include conftypes.h
113
114 patchlevel.h
115         - new file, contains define for PATCHLEVEL.  Doing away with the old
116           scheme of having the information in configure.in
117
118 version.c
119         - include patchlevel.h
120
121 Makefile.in
122         - run bashversion -p to find patch level rather than have configure
123           substitute in a value
124         - pass -S ${top_srcdir} to support/mkversion.sh
125
126 support/mkversion.sh
127         - don't put PATCHLEVEL define into version.h, but accept and ignore
128           a -p option
129         - take a new -S srcdir option
130         - find the patch level by parsing it out of patchlevel.h
131
132 configure.in
133         - hard-code BASHVERS assignment instead of reading it from a file
134         - remove BASHPATCH; don't substitute it
135
136 _distribution,_patchlevel
137         - removed
138
139                                    4/26
140                                    ----
141 shell.c
142         - call init_noninteractive() in open_shell_script if forced_interactive
143           is non-zero (the shell was started with -i) and fd_is_tty is 0
144           (the script file is a real file, not something like /dev/stdin),
145           since it wasn't done earlier
146
147 builtins/printf.def
148         - change for POSIX.2 compliance when conversion errors are encountered
149           when processing %d, %u, and floating point conversion operators
150           (print a warning message, return the value accumulated at the time
151           of the error -- which is always 0 -- and exit with a non-zero status)
152
153 command.h
154         - added CMD_COMMAND_BUILTIN for use by the `command' builtin and the
155           code in execute_cmd.c
156
157 builtins/command.def
158         - add CMD_COMMAND_BUILTIN to the created command's flags
159
160                                     5/1
161                                     ---
162 configure.in
163         - add call to AC_C_CONST to test `const' compiler behavior
164         - add call to AC_C_INLINE to test `inline' compiler behavior
165         - add call to AC_C_STRINGIZE to test cpp #x stringizing operator
166
167 config.h.in
168         - add `#undef const' for configure to substitute
169         - add `#undef inline' for configure to substitute
170         - add `#undef HAVE_STRINGIZE' for configure to substitute
171
172 include/stdc.h
173         - remove code that defines or undefines `const' and `inline'
174         - change the __STRING macro to be defined depending on the value
175           of HAVE_STRINGIZE
176
177 lib/malloc/malloc.c
178         - change the __STRING macro to be defined depending on the value
179           of HAVE_STRINGIZE
180
181 lib/readline/{readline,rlprivate}.h
182         - moved rl_get_termcap to readline.h, making it a public function
183
184 lib/readline/readline.h
185         - new #define, RL_READLINE_VERSION, hex-encoded library version
186           number, currently set to 0x0402
187         - new public int variable, rl_readline_version
188
189 lib/readline/readline.c
190         - #define RL_READLINE_VERSION if it is not already defined (which it
191           should be in readline.h)
192         - initialize rl_readline_version to RL_READLINE_VERSION
193
194 lib/readline/doc/rltech.texinfo
195         - documented rl_get_termcap
196         - documented rl_readline_version
197
198 jobs.c
199         - job_exit_status should return an int, not a WAIT (undetected
200           before because on most POSIX-like systems a WAIT is really an int)
201
202 builtins/evalfile.c
203         - added FEVAL_REGFILE (file must be a regular file) to accepted
204            _evalfile flags
205         - fc_execute_file() adds FEVAL_REGFILE to _evalfile flags.  This
206           means that startup files and files read with `.' no longer need
207           to be regular files
208
209                                     5/2
210                                     ---
211
212 lib/termcap/Makefile.in
213         - fix target for installed termcap library (normally unused)
214
215 lib/tilde/Makefile.in
216         - fix install target to install in $(libdir) (normally unused)
217
218 Makefile.in
219         - don't make $(man3dir) since there's nothing installed there
220
221 Makefile.in,doc/Makefile.in
222         - change `man1ext' to `.1', `man3ext' to `.3'
223         - change appropriate install targets to use new values of man[13]ext
224         - use `test ...' instead of `[...]'
225         - add support for DESTDIR root installation prefix, for package
226           building (installdirs, install, install-strip, uninstall targets)
227
228 builtins/common.c
229         - new function int get_exitstat(WORD_LIST *list) returns an eight-bit
230           exit status value for use in return, exit, logout builtins
231
232 builtins/common.h
233         - extern declaration for get_exitstat()
234
235 builtins/{exit,return}.def
236         - call get_exitstat where appropriate
237
238 builtins/printf.def
239         - add support for "'" flag character as posix 1003.2-200x d6 says
240         - fix core dump when user-supplied field width or precision is 0
241         - fix to printstr() to handle zero-length precision with `%b' format
242           specifier (printf '%.0b-%.0s\n' foo bar)
243         - fix to printstr() to treat a negative field width as a positive
244           field width with left-justification
245         - fix to mklong to avoid static buffers, which can always be overrun
246           by someone sufficiently motivated
247
248 bashline.c
249         - change var in add_host_name to type `size_t' for passing to xrealloc
250
251                                     5/3
252                                     ---
253 execute_cmd.c
254         - change restore_signal_mask to accept a sigset_t *, since a sigset_t
255           may not fit into a pointer, change call
256
257 unwind_prot.c
258         - use a union UWP in restore_variable when restoring a variable whose
259           size is the same as sizeof(int), the reverse of the method used to
260           store it in unwind_protect_int
261
262 builtins/printf.def
263         - use a #define LENMODS containing the length modifiers instead of
264           testing against each possible modifier character, save any mod
265           character found
266         - add support for ISO C99 length specifiers `j', `t', and `z'
267         - if `L' modifier is supplied with a floating point conversion char,
268           pass a `long double' to printf if HAVE_LONG_DOUBLE is defined
269
270 configure.in,config.h.in
271         - call AC_C_LONG_DOUBLE to check for `long double'; define
272           HAVE_LONG_DOUBLE if supported
273
274 bashline.c
275         - fix an inadvertantly-unclosed comment in attempt_shell_completion
276         - make set_saved_history return a value
277         - make dynamic_complete_history return a useful value
278
279 {make_cmd,execute_cmd,shell,subst,trap,variables,input,unwind_prot,test,
280 pcomplete}.c
281         - removed some declared-but-unused variables
282
283 builtins/{cd,enable,fc,set,setattr,type,umask,printf,complete}.def
284         - removed some declared-but-unused variables
285
286 lib/sh/{zread,netopen}.c
287         - removed some declared-but-unused variables
288
289 execute_cmd.c
290         - in execute_arith_command, use a long variable to hold the result
291           of evalexp(), since that's what it returns
292
293 builtins/evalstring.c
294         - make cat_file return -1 on a read or write error
295
296 lib/sh/stringlib.c
297         - make merge_stringlists() return the right value
298
299                                     5/7
300                                     ---
301 pcomplete.c
302         - remove typo that caused empty declaration (;;)
303
304 parse.y
305         - fix yyerror() to accept a single string argument; fix callers
306
307 trap.c
308         - cast pointer to long instead of int when printing message with
309           internal_warning() in run_pending_traps()
310
311 subst.c
312         - fix process_substitute to handle stdin being closed
313
314 test.c
315         - change `while' to `if' in and() and or(), since the loop isn't
316           actually performed -- there's an unconditional `return' in the
317           loop body
318         - check for integer overflow of arguments to `-t'
319
320 lib/sh/netopen.c
321         - change _getserv() to reject negative port/service numbers
322
323 expr.c
324         - fix strlong() to not convert the base specification from long to
325           int before checking for overflow, since truncation on machines
326           where sizeof(int) != sizeof(long) may mask errors
327
328 builtins/{jobs,kill,wait}.def
329         - use legal_number instead of atoi when converting strings to pid_t;
330           check for numeric overflow
331
332 input.c
333         - fix for cygwin in b_fill_buffer -- off-by-one error when checking
334           buffer for \r\n termination
335
336 general.h
337         - new #define INT_STRLEN_BOUND(t), computes max length of string
338           representing integer value of type T, possibly including a sign
339           character
340         - include <limits.h> if it's present
341
342 {execute_cmd,findcmd,test}.c
343         - don't include <limits.h>, since general.h does it now
344
345 {execute_cmd,lib/sh/itos,pcomplete,print_cmd,subst,variables}.c
346         - use INT_STRLEN_BOUND instead of static array sizes when converting
347           various strings to integer values
348
349 shell.h
350         - struct fd_bitmap now uses an `int' size, since it's bounded by
351           the number of file descriptors, which must fit into an `int'
352
353 execute_cmd.c
354         - FD_BITMAP_DEFAULT_SIZE is now 32, not 32L
355         - new_fd_bitmap takes an `int' size parameter, not a `long'
356
357 execute_cmd.h
358         - change prototype for new_fd_bitmap()
359
360 test.c
361         - fix test_stat to check for overflow when parsing the integer file
362           descriptor number; return ENOENT instead of EBADF for files that
363           are not open
364
365 hashlib.c
366         - don't discard the upper 32 bits of the random value, if present
367
368 lib/readline/shell.c
369         - use the same INT_STRLEN_BOUND mechanism to decide how much space to
370           allocated in sh_set_lines_and_columns
371
372                                     5/8
373                                     ---
374 aclocal.m4
375         - add check for libtinfo (termcap-specific portion of ncurses-5.2) to
376           BASH_CHECK_LIB_TERMCAP
377         - new macro, RL_LIB_READLINE_VERSION, checks version of installed
378           readline library and (optionally) writes version #defines to
379           config.h.  Bash doesn't use the version defines
380
381 configure.in
382         - call RL_LIB_READLINE_VERSION instead of support/rlvers.sh
383
384 execute_cmd.c
385         - fix execute_shell_script and the WHITECHAR and STRINGCHAR macros
386           to check array bounds before indexing into the sample string
387
388 unwind_prot.[ch]
389         - import new versions submitted by Paul Eggert <eggert@twinsun.com>
390           with a couple of changes for backwards compatibility, so the rest
391           of the source doesn't need to be changed yet
392
393 jobs.c
394         - use unwind_protect_var on last_made_pid in run_sigchld_trap
395
396 builtins/bind.def
397         - use unwind_protect_var on rl_outstream
398
399 general.c
400         - rework print_rlimtype to use INT_STRLEN_BOUND and handle the
401           most negative number correctly
402
403 expr.c
404         - `tokval' should have been a `long', since all arithmetic is done
405           as longs
406
407 builtins/history.def
408         - consolidate tests for valid history position in one block to
409           avoid duplicate code and strings
410
411 builtins/ulimit.def
412         - fix check for overflow when setting limit to work when int is 32
413           bits and RLIMTYPE is 64
414
415 lib/sh/tmpfile.c
416         - don't truncate the result of time(3) to int; just use time_t,
417           since it's being assigned to an `unsigned long'
418
419 mailcheck.c
420         - use legal_number instead of atoi in time_to_check_mail() to catch
421           more numeric errors; consolidate error checking in one block
422         - last_time_mail_checked should be a time_t
423
424                                     5/9
425                                     ---
426 builtins/set.def
427         - recognize `set [-+]o nolog' if HISTORY is defined
428
429 bashline.c
430         - new variable `dont_save_function_defs', set by `set -o nolog';
431           currently ignored
432
433 command.h
434         - the `dest' member of a REDIRECTEE is now an `int'
435
436 parse.y,redir.c
437         - changed uses of `redir.test' (where redir is a REDIRECTEE) since
438           it's now an int
439
440 lib/readline/rlstdc.h
441         - don't mess around with `const', rely on configure to supply a
442           proper definition if the compiler doesn't support it
443
444 lib/tilde/tilde.h
445         - include <config.h> if HAVE_CONFIG_H is defined
446         - don't mess around with `const', rely on configure
447
448 builtins/shopt.def
449         - new read-only `shopt' option, login_shell, non-zero if shell is a
450           login shell (as decided by shell.c)
451         - new function set_login_shell(), sets shopt private value of
452           login_shell
453
454 builtins/common.h
455         - new extern declaration for set_login_shell
456
457 shell.c
458         - call set_login_shell after setting value of login_shell (in
459           main() and set_shell_name())
460
461 parse.y
462         - added new `\A' prompt string escape sequence:  time in 24-hour
463           HH:MM format
464
465 configure.in, config.h.in
466         - check for <grp.h>, define HAVE_GRP_H if found
467
468 builtins/complete.def
469         - add new `-A group/-g' option to complete group names
470
471 pcomplete.h
472         - new define for CA_GROUP, used with group name completion
473
474 pcomplete.c
475         - add code to support CA_GROUP group name completion
476
477 bashline.c
478         - new function, bash_groupname_completion_function(), supports
479           programmable completion of group names
480
481 bashline.h
482         - extern declaration for bash_groupname_completion_function
483
484 lib/readline/bind.c
485         - new inputrc variable, `match-hidden-files', controls completion
486           matching files beginning with a `.' (on Unix)
487
488 lib/readline/complete.c
489         - new variable, _rl_match_hidden_files, mirrors `match-hidden-files'
490           inputrc variable
491
492 lib/readline/rlprivate.h
493         - extern declaration for _rl_match_hidden_files
494
495 builtins/hash.def
496         - new `-t' option to list hash values for each filename argument
497
498 builtins/read.def
499         - alarm(3) takes an `unsigned int' argument, not int
500         - check for arithmetic overflow with -t and -n options
501
502 input.c
503         - check for read error before doing \r\n translation on cygnus in
504           b_fill_buffer
505         - reset bp->b_used to 0 instead of leaving it at -1 on read error
506           in b_fill_buffer
507
508 builtins/shopt.def
509         - new functions, shopt_setopt(name, mode) and
510           shopt_listopt(name, mode) to give the rest of the shell an easy
511           interface
512
513 builtins/common.h
514         - extern declarations for shopt_setopt and shopt_listopt
515
516 shell.c
517         - new invocation options -O and +O, to list or set/unset shopt
518           options like +o/-o sets and unsets `set -o' options
519
520 doc/{bash.1,bashref.texi}
521         - document `set -o nolog'
522         - document `login_shell' shopt option
523         - document new `\A' prompt string escape sequence
524         - document new `-t' option to `hash'
525         - document new `[+-]O' invocation option
526
527 doc/bashref.texi
528         - add text to `Invoking Bash' section defining a login shell; text
529           taken from man page
530
531 doc/bash.1, lib/readline/doc/rluser.texinfo
532         - documented new complete/compgen `-A group/-g' option
533
534 lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
535         - documented new `match-hidden-files' inputrc variable
536
537                                    5/10
538                                    ----
539 configure.in
540         - fix AC_CHECK_PROG(ar, ...)
541         - add AC_CHECK_TYPE for ssize_t
542
543 config.h.in
544         - new #undef for ssize_t
545
546 lib/sh/zread.c
547         - int -> ssize_t fixes to mirror modern declarations of read and write
548         - the `off' variable in zsyncfd should be an off_t since it computes
549           a file offset
550         - the local buffer `lbuf' is now char, since it's not nice to pass
551           unsigned char * to read(2), and the values from it are assigned to
552           a char anyway
553         - lind and lused are now size_t, since they index into a buffer
554         - set lused to 0 on read error
555
556 lib/sh/zwrite.c
557         - change second argument to type `char *', since ISO C says you have
558           to pass a `char *' to `write'
559
560 externs.h
561         - fix extern declarations of zread, zread1, zreadc, and zwrite
562         - prototype extern declaration of qsort_string_compare
563         - add extern declaration for history_delimiting_chars() from parse.y
564
565 input.h
566         - b_used and b_inputp members ofr struct BSTREAM are now size_t
567
568 builtins/evalstring.c
569         - the number of chars read with zread in cat_file should be assigned
570           to a variable of type ssize_t
571
572 input.c
573         - the number of chars read with zread in b_fill_buffer should be
574           assigned to a variable of type ssize_t
575         - `localbuf' is now type char[], since POSIX says you shouldn't pass
576           unsigned char * to read(2)
577         - in getc_with_restart(), use a variable of type unsigned char to
578           get a value from the local buffer and return it
579         - in ungetc_with_restart, explicitly return the character arg passed
580           to avoid relying on localbuf being unsigned char
581
582 subst.c
583         - the number of chars read with zread in read_comsub should be
584           assigned to a variable of type ssize_t
585
586 mksyntax.c
587         - instead of casting to unsigned char * in addcstr, use a variable
588           of type unsigned char and let the compiler do the work
589
590 parse.y
591         - instead of casting to unsigned char * in yy_readline_get, use a
592           variable of type unsigned char and let the compiler do the work
593         - ditto for yy_string_get and shell_getc (cast to unsigned char)
594
595 subst.c
596         - instead of casting to unsigned char when assigning to ifscmap in
597           expand_word_internal, use a variable of type unsigned char and
598           let the compiler do the work
599
600 lib/sh/strtrans.c
601         - instead of casting to unsigned char in ansic_quote, use a variable
602           of type unsigned char and let the compiler do the work
603
604 builtins/evalstring.c
605         - remove extern declarations for zwrite and run_trap_cleanup; they're
606           in externs.h
607         - prototype cat_file forward declaration
608
609 Makefile.in
610         - remove -I$(includedir) from INCLUDES and SUBDIR_INCLUDES
611
612 aclocal.m4
613         - change RL_LIB_READLINE_VERSION to set RL_PREFIX, RL_LIBDIR,
614           and RL_INCLUDEDIR to what it used to test the installed readline
615           library version for use by the caller
616         - change RL_LIB_READLINE_VERSION to not compute ac_cv_rl_prefix if
617           the caller has already assigned it a value
618         - rename _rl_prefix -> ac_cv_rl_prefix, _rl_libdir -> ac_cv_rl_libdir,
619           _rl_includedir -> ac_cv_rl_includedir
620
621 configure.in
622         - change testing of whether to use the value of
623           $opt_with_installed_readline to be != no, to allow the user to
624           specify a prefix where the installed readline library may be found
625         - if --with-installed-readline=PREFIX is supplied, set ac_cv_rl_prefix
626           to PREFIX before calling RL_LIB_READLINE_VERSION
627         - if --with-installed-readline[=PREFIX] is supplied, don't set
628           RL_LIBDIR and RL_INCLUDEDIR; let RL_LIB_READLINE_VERSION take care
629           of it, set RL_INCLUDE=-I${RL_INCLUDEDIR}
630         - if --with-installed-readline[=PREFIX] is supplied, and we're
631           linking with the history library, assign $RL_LIBDIR to HIST_LIBDIR
632           so we use the same version of the installed readline and history
633           libraries
634
635 Makefile.in, builtins/Makefile.in
636         - have configure substitute RL_INCLUDEDIR, set RL_INCLUDEDIR variable
637
638 doc/bashref.texi
639         - updated description of --with-installed-readline configure option 
640
641 general.c
642         - moved QSFUNC typedef here from builtins/common.c
643
644 {alias,bashline,variables,lib/sh/stringvec}.c
645         - cast fourth argument to qsort to (QSFUNC *)
646
647 alias.c
648         - prototype forward declaration of qsort_alias_compare
649
650 bashhist.c
651         - include <glob/glob.h> for extern declaration of glob_pattern_p
652         - remove extern declaration of history_delimiting_chars; it's now
653           in externs.h
654         - prototype forward declarations of histignore_item_func,
655           maybe_add_history, and bash_add_history
656
657 bracecomp.c
658         - remove extern declaration for sh_backslash_quote; it's in externs.h
659
660 braces.c
661         - remove extern declaration for extract_command_subst; it's in subst.h
662         - prototype forward declarations for expand_amble, array_concat, and
663           brace_gobbler
664
665 error.c
666         - prototype extern declaration of give_terminal_to, fix bad call
667
668 {execute_cmd,expr,findcmd,jobs,mailcheck,nojobs,pcomplete,print_cmd,redir,
669 shell}.c
670         - prototype all static forward function declarations
671
672 pcomplete.c
673         - changed some function parameters to `const char *' to avoid discarding
674           const qualifier
675
676 make_cmd.c
677         - make_bare_word, make_word_flags, and make_word now take a
678           `const char *' string argument
679
680 make_cmd.h
681         - changed extern declarations for make_bare_word and make_word
682
683 print_cmd.c
684         - cprintf now takes a `const char *' as its first argument, like
685           xprintf and printf
686         - the conditional define for xprintf should have been HAVE_VPRINTF,
687           not HAVE_VFPRINTF
688
689 shell.c
690         - in isnetconn(), the return value of sizeof() is size_t
691
692 aclocal.m4
693         - add inclusion of stddef.h if STDC_HEADERS is defined to 1 in
694           BASH_CHECK_TYPE
695
696 configure.in
697         - add a call to BASH_CHECK_TYPE for socklen_t (type of third argument
698           to getpeername(2))
699
700                                    5/11
701                                    ----
702 lib/readline/bind.c
703         - make `useq' a char array to pass to rl_macro_bind in
704           rl_parse_and_bind
705
706 lib/readline/{{bind,isearch}.c,rlprivate.h}
707         - _rl_isearch_terminators is now a char *, not unsigned char *
708
709 {subst,variables,lib/sh/tmpfile}.c
710         - dollar_dollar_pid is now a `pid_t' instead of `int'
711
712 variables.c
713         - sbrand() now takes an `unsigned long' to set the seed value
714         - changed last_random_value to type int, since it's always between
715           0 and 32767
716         - use strtoul to convert the value in assign_random instead of atoi
717         - take out casts in any arguments to sbrand()
718         - take out cast to int in call to inttostr in set_ppid()
719
720 subst.c
721         - don't cast last_asynchronous_pid when passing to itos()
722
723 {sig,subst}.c
724         - prototype all static forward function declarations
725
726                                    5/14
727                                    ----
728 {test,trap,variables}.c
729         - prototype all static forward function declarations
730
731 variables.c
732         - free_variable_hash_data() now takes a PTR_T, a `generic pointer'
733
734 builtins/{alias,bind,break,cd,complete,declare,enable,exit,fc,fg_bg,help,
735 history,jobs,pushd,read,set,trap,umask,
736         - prototype all static forward function declarations
737
738 builtins/read.def
739         - reset_eol_delim now takes a `char *' arg, since that's what the
740           unwind_protect functions pass it, and it ignores its arguments
741           anyway
742
743 lib/readline/{histsearch,input,kill,rltty,search,vi_mode}.c
744         - prototype all static forward function declarations
745
746 lib/tilde/tilde.c
747         - prototype all static forward function declarations
748         - tilde_find_prefix, tilde_find_suffix, isolate_tilde_prefix, and
749           glue_prefix_and_suffix now take `const char *' arguments where
750           appropriate
751
752 configure.in,config.h.in
753         - check for vsnprintf, define HAVE_VSNPRINTF if found
754
755 lib/readline/display.c
756         - use vsnprintf() in rl_message if it's available; if we don't, at
757           least set the last character in msg_buf to 0 to avoid overrun --
758           we really can't do anything about overflow at this point.  if it's
759           available, this fixes buffer overflow problems in rl_message
760
761                                    5/15
762                                    ----
763 lib/readline/histexpand.c
764         - in get_history_word_specifier, allow any character to terminate
765           a `:first-' modifier, not just `:' and null.  This is what csh
766           appears to do.  This allows things like `!:0- xyzzy' to replace the
767           last argument with xyzzy
768
769                                    5/18
770                                    ----
771 configure.in, config.h.in
772         - check for <stdint.h>, define HAVE_STDINT_H if found
773         - check for intmax_t in <stdint.h>, define intmax_t as long if not
774           found
775
776                                    5/21
777                                    ----
778 builtins/kill.def
779         - change to use strerror() for error message when kill(2) fails
780
781 aclocal.m4
782         - new macro, BASH_C_LONG_LONG, check for `long long'
783
784 configure.in, config.h.in
785         - call BASH_C_LONG_LONG, define HAVE_LONG_LONG if found
786
787 lib/sh/snprintf.c
788         - new file, with implementations of snprintf, vsnprintf, asprintf,
789           and vasprintf, derived from inetutils version
790
791 Makefile.in, lib/sh/Makefile.in
792         - add snprintf.c/snprintf.o
793
794 configure.in, config.h.in
795         - add checks for snprintf, asprintf, vasprintf, with appropriate
796           cpp defines
797
798 lib/readline/{rldefs,xmalloc}.h, lib/readline/xmalloc.c
799         - xmalloc and xrealloc now take `size_t' arguments, like their bash
800           counterparts
801
802 externs.h,lib/sh/itos.c
803         - inttostr and itos now take `long' arguments
804         - inttostr takes a `size_t' argument for the buffer size
805
806 {expr,lib/malloc/malloc,variables,general}.c
807         - fixed calls to itos() by removing casts, etc.
808
809 subst.[ch]
810         - get_dollar_var_value now takes a long, not an int
811         - sub_append_number now takes a long, not an int
812
813 subst.c
814         - in parameter_brace_expand_word, use a long and legal_number to
815           translate ${N}, to avoid overflow
816         - in parameter_brace_expand_length, use a long and legal_number to
817           translate ${#N}, to avoid overflow
818         - in do_array_element_assignment, array_expand_index,
819           array_value_internal, use arrayind_t instead of int
820         - let verify_substring_values take long * arguments for the return
821           value of evalexp()
822         - pass long * arguments to verify_substring_values in
823           parameter_brace_substring
824         - parameter_brace_expand_length now returns `long'
825         - parameter_brace_expand now uses a long variable for the return
826           value of parameter_brace_expand_length
827         - param_expand now uses a long variable for the return value from
828           evalexp
829         - array_length reference now returns an `arrayind_t', since it can
830           return the num_elements member of an array, which is of type
831           arrayind_t
832
833 subst.h
834         - array_expand_index now returns an `arrayind_t'
835
836 array.[ch]
837         - array_subrange now takes arrayind_t arguments, not `int'
838         - dup_array_subrange now uses arrayind_t local variable to do
839           array indexing
840         - use long to print array indices in print_element
841
842 variables.c
843         - null_array_assign, assign_dirstack, bind_array_variable
844           now take arrayind_t arguments as array indices
845         - assign_array_var_from_word_list, assign_array_var_from_string,
846           unbind_array_element now use arrayind_t local variables for
847           array indexing
848
849 variables.h
850         - change extern declaration of bind_array_variable
851
852 builtins/common.[ch]
853         - get_numeric_arg now returns a `long', since it usually returns
854           the value of legal_number()
855
856 builtins/{shift,break}.def
857         - use long variables for the return value of get_numeric_arg
858
859 builtins/history.def
860         - convert string argument to int only if it's in range
861
862 builtins/pushd.def
863         - set_dirstack_element and get_dirstack_element now take `long'
864           index arguments
865         - get_dirstack_index now takes a `long' index argument, since it's
866           passed the converted value from legal_number
867
868 lib/sh/timeval.c
869         - in print_timeval, don't assume that the number of minutes fits into
870           an int, since it's just seconds/60.
871
872 lib/sh/clock.c
873         - ditto for print_clock_t
874
875                                    5/22
876                                    ----
877 shell.c
878         - since the -O option settings may possibly be overridden by the
879           normal shell initialization or posix initialization, save the
880           invocation options on an alist (with add_shopt_to_alist) and
881           process them after basic initialization (with run_shopt_alist)
882
883                                    5/23
884                                    ----
885 trap.h
886         - new define, BASH_NSIG, all system signals plus special bash traps
887
888 trap.c, builtins/trap.def
889         - use BASH_NSIG for array bounds and loops where appropriate
890
891 trap.c
892         - change decode_signal to disallow numeric signal numbers above
893           NSIG -- this means you can only reference special traps like
894           DEBUG by name
895         - new SPECIAL_TRAP(s) macro to test whether s is one of the special
896           bash traps (currently DEBUG and EXIT)
897         - change reset_or_restore_signal_handlers so command substitution
898           doesn't inherit the debug trap (like ksh93), and child processes
899           don't have to rely on initialize_traps being run to get rid of
900           any debug trap
901
902 support/mksignames.c
903         - add extra "ERR" signal name, value NSIG+1, allocate space for it
904           and write it out in signal_names[]
905
906 trap.h
907         - new define: ERROR_TRAP == NSIG+1, change BASH_NSIG to NSIG+2
908         - extern declarations for set_error_trap, run_error_trap
909         - new define: TRAP_STRING(s), expands to trap_list[s] if signal S
910           is trapped and not ignored, NULL otherwise
911
912 trap.c
913         - add ERROR_TRAP to SPECIAL_TRAPS define
914         - initialize ERROR_TRAP stuff in initialize_traps
915         - new function: set_error_trap(command), sets the ERR trap string
916         - new function: run_error_trap(command), runs the ERR trap string
917         - set trap string for ERROR_TRAP to NULL in free_trap_strings
918         - change reset_or_restore_signal_handlers so child processes don't
919           inherit the ERR trap
920         - add case to call run_error_trap in maybe_call_trap_handler
921
922 execute_cmd.c
923         - in execute_command_internal, keep track of ERR trap and call it if
924           necessary
925         - use TRAP_STRING to get the value of debug and error traps
926         - in execute_function, arrange things so the ERR trap is not inherited
927           by shell functions, and is saved and restored like the DEBUG trap
928
929 doc/{bash.1,bashref.texi}
930         - documented new ERR trap
931
932 tests/{trap.{tests,right},trap2.sub,trap2a.sub}
933         - added ERR trap tests
934
935 subst.c
936         - on machines without /dev/fd, change the named pipe fifo list to a
937           list of structs containing pathname and proc information
938         - change unlink_fifo_list to kill the proc in the fifo list with
939           signal 0 and not remove the fifo if the proc is still alive.  This
940           should fix the problem on those backward systems without /dev/fd
941           where fifos were removed when a job using process substitution was
942           suspended
943
944                                    5/24
945                                    ----
946 examples/loadables/getconf.h
947         - new file, with basic defines needed to make getconf work minimally
948           on POSIX systems without the necessary definitions
949
950 examples/loadables/getconf.c
951         - replacement functions for confstr, sysconf, pathconf for systems
952           that lack them, providing a minimal posix interface
953         - heavily augmented getconf, now supports all POSIX.1-200x,
954           POSIX.2-200x, Solaris 7, AIX 4.2 getconf variables
955
956                                    5/29
957                                    ----
958 builtins/setattr.def
959         - make `readonly', `export', and `declare' print `invisible' variables
960           as just a command and variable name, without a value, when listing
961           all variables (as POSIX.2-200x d6 requires)
962
963                                    5/30
964                                    ----
965
966 configure.in
967         - upgraded to autoconf-2.50 on main development machine, so require
968           autoconf-2.50 in preparation for using some if its new features
969         - call AC_C_PROTOTYPES
970         - remove call to AC_EXEEXT, which now does the wrong thing
971         - changed AC_INIT to new flavor
972         - added call to AC_CONFIG_SRCDIR
973         - AC_CONFIG_HEADER -> AC_CONFIG_HEADERS
974         - AC_RETSIGTYPE -> AC_TYPE_SIGNAL
975
976 configure.in, aclocal.m4, config.h.in
977         - removed call to BASH_LARGE_FILE_SUPPORT, use AC_SYS_LARGEFILE
978           standard support, with new macros _FILE_OFFSET_BITS and
979           _LARGE_FILES
980         - removed definition of BASH_LARGE_FILE_SUPPORT
981
982 doc/bashref.texi
983         - document new `--enable-largefile' configure option
984
985 lib/readline/readline.c
986         - change rl_set_prompt to call rl_expand_prompt unconditionally, so
987           local_prompt and local_prompt_prefix get set correctly
988
989                                     6/6
990                                     ---
991 lib/readline/complete.c
992         - don't append `/' or ` ' to a match when completing a symlink that
993           resolves to a directory, unless the match doesn't add anything
994           to the word.  This means that a tab will complete the word up to
995           the full name, but not add anything, and a subsequent tab will add
996           a slash.  Change to append_to_match; callers changed
997
998 hashlib.c
999         - new function, hash_table_nentries (table), returns the number of
1000           items in TABLE
1001
1002 hashlib.h
1003         - extern declaration for hash_table_nentries
1004
1005 configure.in
1006         - configure without bash malloc on openbsd; they claim it needs
1007           eight-bit alignment (which the bash malloc provides, but...)
1008
1009                                     7/2
1010                                     ---
1011 stringlib.c
1012         - only call RESIZE_MALLOCED_BUFFER from strsub() if the replacement
1013           string length is > 0, avoid possible hangs if replacement is null
1014
1015 subst.c
1016         - don't include input.h; no longer needed
1017
1018 configure.in
1019         - remove calls to AC_SYS_RESTARTABLE_SYSCALLS and
1020           BASH_SYS_RESTARTABLE_SYSCALLS; the results are no longer used
1021
1022 config.h.in
1023         - remove define for HAVE_RESTARTABLE_SYSCALLS
1024
1025 aclocal.m4
1026         - removed definition of BASH_SYS_RESTARTABLE_SYSCALLS; no longer used
1027
1028 execute_cmd.c
1029         - changed select command so `return' no longer terminates the select
1030           command, so it can be used to return from an enclosing function.
1031           This is as ksh (88 and 93) does it
1032
1033 lib/readline/vi_mode.c
1034         - fix trivial typo in declaration of vi_motion; `t' appears twice;
1035           the second instance should be `T'
1036
1037                                     7/3
1038                                     ---
1039 configure.in
1040         - don't add -static to LDFLAGS on Solaris 2.x.  This means that the
1041           auxiliary programs will be built as dynamic executables, but that
1042           should do no harm
1043
1044                                     7/5
1045                                     ---
1046 lib/glob/fnmatch.c
1047         - fix the code that processes **(pattern) to short-circuit if the
1048           pattern is ill-formed or lacks a trailing `)'  -- this fixes the
1049           segfault on **(/*)
1050
1051 Makefile.in, builtins/Makefile.in
1052         - split CCFLAGS into CCFLAGS_FOR_BUILD and CFLAGS, to aid in
1053           cross-compilation
1054         - build programs that use $(CC_FOR_BUILD) using $(CCFLAGS_FOR_BUILD)
1055
1056 configure.in, config.h.in
1057         - check for getaddrinfo(3), define HAVE_GETADDRINFO if found
1058
1059 lib/sh/netopen.c
1060         - implemented a version of _netopen (_netopen6) that uses
1061           getaddrinfo(3) if available, use if HAVE_GETADDRINFO is defined.
1062           old _netopen is _netopen4; _netopen now calls either _netopen6
1063           or _netopen4 as appropriate
1064
1065                                     7/9
1066                                     ---
1067 builtins/exit.def
1068         - don't source ~/.bash_logout if subshell_environment is non-zero
1069
1070 execute_command.c
1071         - in execute_until_or_while, handle the case where `breaking' is
1072           set in the loop test (e.g., by the job control code when a job
1073           is stopped with SIGTSTP), but the return value from the test is
1074           something that would cause the loop to break.  Need to decrement
1075           `breaking' in this case
1076
1077                                    7/10
1078                                    ----
1079 execute_cmd.c
1080         - in execute_in_subshell, make sure a command of type cm_subshell
1081           inherits its `enclosing' command's CMD_IGNORE_RETURN flag
1082
1083 variables.c
1084         - in maybe_make_export_env, don't allow restricted shells to put
1085           exported functions in the export environment
1086
1087                                    7/11
1088                                    ----
1089 lib/glob/strmatch.h
1090         - renamed old fnmatch.h
1091         - changed guard #ifdef to _STRMATCH_H
1092         - include system <fnmatch.h> if HAVE_LIBC_FNM_EXTMATCH is defined
1093
1094 lib/glob/strmatch.c
1095         - renamed old fnmatch.c
1096         - include "strmatch.h"
1097         - if HAVE_LIBC_FNM_EXTMATCH is defined, define a dummy version of
1098           strmatch() that just calls fnmatch(3)
1099
1100 lib/glob/glob.c
1101         - include "strmatch.h"
1102         - fnmatch -> strmatch
1103
1104 Makefile.in, lib/glob/Makefile.in
1105         - fnmatch -> strmatch
1106
1107 {bashhist,execute_cmd,pathexp,pcomplete,shell,stringlib,subst,test}.c,
1108 pathexp.h,builtins/help.def
1109         - include <glob/strmatch.h>
1110         - fnmatch -> strmatch
1111
1112 execute_cmd.c
1113         - broke the code that parses the interpreter name from a #! line
1114           out from execute_shell_script to a new function, getinterp()
1115         - call getinterp from execute_shell_script
1116         - use return value from getinterp in error message about bad
1117           #! interpreter in shell_execve
1118
1119                                    7/12
1120                                    ----
1121 lib/readline/isearch.c
1122         - the last isearch string is now remembered in a new static variable,
1123           last_isearch_string
1124         - if ^R^R is typed, readline now searches for the remembered isearch
1125           string, if one exists
1126
1127                                    7/24
1128                                    ----
1129 pcomplete.h
1130         - extern declaration for completions_to_stringlist()
1131
1132                                    7/25
1133                                    ----
1134 builtins/complete.def
1135         - make compgen handle -o default option
1136         - make compgen return success only if sl->list_len is non-zero,
1137           indicating that there are items on the list
1138
1139                                    7/31
1140                                    ----
1141 execute_cmd.c
1142         - in execute_connection, force stdin to /dev/null for asynchronous
1143           commands if job control is not active, not just if the shell is
1144           running a shell script (since you can run `set -m' in a script)
1145
1146 lib/readline/rltty.c
1147         - make sure _rl_tty_restore_signals resets `tty_sigs_disabled' on
1148           successful restoration of the terminal modes
1149         - make sure _rl_tty_disable_signals turns off IXON so that ^S and
1150           ^Q can be read by rl_quoted_insert
1151
1152                                     8/1
1153                                     ---
1154 aclocal.m4
1155         - new check for FNM_EXTMATCH being defined in <fnmatch.h>, as Ullrich
1156           Drepper intends to do for new versions of GNU libc
1157
1158 config.h.in
1159         - new definition for HAVE_LIBC_FNM_EXTMATCH
1160
1161 configure.in
1162         - check for fnmatch, but don't define anything in config.h
1163         - call BASH_FUNC_FNMATCH_EXTMATCH to check for FNM_EXTMATCH
1164
1165                                     8/2
1166                                     ---
1167 alias.h
1168         - remove bogus extern declaration for xmalloc()
1169         - include "stdc.h"
1170         - add prototype declarations for all extern function declarations
1171
1172 xmalloc.c,lib/readline/xmalloc.c
1173         - fix xmalloc to return a PTR_T
1174         - fix xrealloc to return a PTR_T and take a PTR_T as first argument
1175
1176 include/ansi_stdlib.h
1177         - extern declarations for malloc and realloc have them return PTR_T
1178
1179 xmalloc.h
1180         - new file, with extern declarations for functions in xmalloc.c
1181
1182 general.h
1183         - removed extern declarations for functions in xmalloc.c
1184         - include xmalloc.h
1185
1186 Makefile.in,builtins/Makefile.in
1187         - update dependencies to include xmalloc.h
1188
1189 parse.y,{alias,array,bashline,bracecomp,execute_cmd,findcmd,flags,general,
1190 hashcmd,locale,mailcheck,make_cmd,pathexp,pcomplete,print_cmd,stringlib,
1191 subst,unwind_prot,variables}.c
1192 builtins/{common,evalfile}.c
1193 builtins/{cd,command,enable,exec,printf,read,set}.def
1194 lib/sh/{makepath,netopen,pathphys,setlinebuf,shquote,snprintf,stringlist,
1195 strtrans,tmpfile}.c
1196 lib/readline/{util,terminal,shell,readline,macro,kill,isearch,input,
1197 histfile,histexpand,display,complete,bind}.c
1198         - make sure all calls to xmalloc are cast to the right return value
1199
1200 siglist.c
1201         - include xmalloc.h
1202
1203 parse.y,{alias,bashline,bracecomp,expr,make_cmd,nojobs,print_cmd,subst}.c
1204 builtins/{fc,printf,read}.def
1205 lib/sh/snprintf.c, lib/tilde/tilde.c
1206 lib/readline/{bind,display,histexpand,isearch,macro,util,vi_mode}.c
1207         - make sure all calls to xrealloc are cast to the right return value
1208
1209 lib/sh/{netopen,setlinebuf,shquote,snprintf}.c, lib/tilde/tilde.c
1210         - include xmalloc.h, remove extern declaration of xmalloc
1211
1212 lib/readline/xmalloc.h
1213         - xmalloc and xrealloc should return PTR_T
1214
1215 lib/readline/rldefs.h
1216         - don't include an extern declaration for xmalloc
1217
1218                                     8/7
1219                                     ---
1220 support/shobj-conf
1221         - fixed up commented-out stanzas for HP's unbundled C compiler on
1222           HP/UX
1223
1224 support/bashbug.sh
1225         - force the subject to be changed from the default
1226
1227 lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
1228         - document that transpose-words swaps the last two words on the line
1229           if point is at the end of the line
1230
1231                                     8/9
1232                                     ---
1233 stringlib.c
1234         - fix possible infinite recursion problem with null pattern in
1235           strsub()
1236
1237 hashlib.c
1238         - new function copy_hash_table to copy a hash table using a caller-
1239           supplied function to copy item data (defaults to savestring())
1240
1241 hashlib.h
1242         - new extern declaration for copy_hash_table
1243
1244 builtins/declare.def
1245         - changes so that declare [-a] var=value assigns `value' to element 0
1246           of array variable `var' like ksh93
1247         - change so that declare [-a] var[N]=value assigns `value' to element
1248           N of array variable `var' like ksh93
1249
1250                                    8/13
1251                                    ----
1252 arrayfunc.c
1253         - new file, for miscellaneous array functions
1254
1255 arrayfunc.h
1256         - new file, extern declarations for functions in arrayfunc.c
1257
1258 variables.c
1259         - move convert_var_to_array, bind_array_variable,
1260           assign_array_from_string, assign_array_var_from_word_list,
1261           assign_array_var_from_string, quote_array_assignment_chars,
1262           skipsubscript, unbind_array_element, print_array_assignment
1263           to arrayfunc.c
1264
1265 shell.h
1266         - include arrayfunc.h after variables.h
1267
1268 variables.h
1269         - remove above extern function declarations moved to arrayfunc.h
1270         - add extern declaration for var_lookup
1271
1272 Makefile.in
1273         - add arrayfunc.c, arrayfunc.h in appropriate places
1274         - add arrayfunc.h to dependencies
1275
1276 subst.c
1277         - move valid_array_reference, array_expand_index, array_variable_part,
1278           array_value_internal, array_value (now global), get_array_value,
1279           do_array_element_assignment to arrayfunc.c
1280
1281 subst.h
1282         - extern declarations for functions above moved to arrayfunc.h
1283
1284 arrayfunc.h
1285         - extern declarations for above functions from subst.c
1286
1287 subst.[ch]
1288         - string_list_dollar_star and string_list_dollar_at are now global
1289           functions
1290         - quote_escapes is now a global function
1291
1292 subst.c
1293         - maybe_expand_string -> expand_string_if_necessary
1294         - expand_string_to_string -> expand_string_to_string_internal
1295         - new functions: expand_string_to_string and
1296           expand_string_unsplit_to_string, which call
1297           expand_string_to_string_internal with expand_string and
1298           expand_string_unsplit as the FUNC arguments, respectively
1299
1300 arrayfunc.c
1301         - change array_expand_index to call expand_string_to_string instead
1302           of maybe_expand_string
1303
1304                                    8/14
1305                                    ----
1306 shell.c
1307         - in execute_env_file, call expand_string_unsplit_to_string
1308
1309 mailcheck.c
1310         - in check_mail, call expand_string_to_string
1311
1312 variables.c
1313         - in assign_in_env, call expand_string_unsplit_to_string
1314
1315 arrayfunc.c
1316         - new function, array_variable_name, splits an array reference into
1317           a name (which is returned as a new string) and subscript
1318         - change array_variable_part to just call array_variable_name and
1319           look up the string returned with find_variable
1320         - new function, find_or_make_array_variable (name, flags) which will
1321           look up an array variable and convert a string variable to an
1322           array if necessary.  The FLAGS argument, if non-zero, says to
1323           check the readonly and noassign attributes and fail if either is set
1324
1325 builtins/read.def
1326         - make `read -a aname' honor any readonly status of `aname'
1327         - read -a now calls find_or_make_array_variable with FLAGS value 1
1328
1329 arrayfunc.[ch], subst.c, builtins/{declare,read}.def
1330         - do_array_element_assignment -> assign_array_element
1331
1332                                    8/20
1333                                    ----
1334 parse.y
1335         - changed `for' command grammar to allow missing word list after `IN'
1336           token, like latest POSIX drafts require
1337
1338 lib/sh/tmpfile.c
1339         - in sh_mktmpname(), check for filenum == 0 and init to non-zero number
1340           in this case.  it can happen on arithmetic overflow
1341
1342 support/mkversion.sh
1343         - added `[0-9].[0-9][0-9][a-z]' as an acceptable value for a
1344           distribution to allow for intermediate versions, like 2.05a
1345
1346 support/config.guess
1347         - removed the addition of the output of `/usr/bin/objformat' when
1348           creating the canonical name on FreeBSD machines, so the canonical
1349           name is once again `freebsd4.2' instead of `freebsdelf4.2'
1350
1351                                    8/22
1352                                    ----
1353 lib/readline/{rlstdc,history,keymaps,readline,rldefs,rlprivate,rlshell,
1354 rltypedefs,xmalloc}.h
1355 lib/readline/{bind,compat,complete,display,funmap,histexpand,histsearch,
1356 input,isearch,kill,nls,parens,readline,rltty,search,shell,signals,vi_mode
1357         - changed __P to PARAMS
1358
1359 lib/tilde/tilde.[ch]
1360         - changed __P to PARAMS
1361
1362 {Makefile,configure}.in
1363         - changed the version number to 2.05a
1364         - changed the release status to `alpha1'
1365
1366                                    8/23
1367                                    ----
1368 support/shobj-conf
1369         - support for building shared libraries on Darwin/MacOS X
1370
1371 siglist.h
1372         - extern declaration for strsignal() to compensate for lack of
1373           a definition in some system include files
1374
1375 jobs.c
1376         - remove casts from strsignal() calls
1377
1378 [bash-2.05a-alpha1 frozen]
1379
1380                                    8/27
1381                                    ----
1382 [bash-2.05a-alpha1 released]
1383
1384                                    8/27
1385                                    ----
1386 execute_cmd.c
1387         - fix eval_arith_for_expr to handle the case where the expanded
1388           word list is NULL, returning 0 in this case
1389
1390 print_cmd.c
1391         - in print_function_def, make sure that func_redirects is assigned
1392           a value before being used
1393
1394                                    8/28
1395                                    ----
1396 alias.c
1397         - include <ctype.h> for definition of isalpha()
1398
1399 bashhist.h
1400         - add prototypes for extern function declarations
1401
1402 flags.c
1403         - include bashhist.h for extern function declarations
1404
1405 mksyntax.c
1406         - include <unistd.h> if HAVE_UNISTD_H is defined in config.h
1407
1408 parse.y
1409         - include test.h for extern function declarations
1410
1411 externs.h
1412         - change extern declaration for setlinebuf to sh_setlinebuf
1413
1414 stringlib.c
1415         - include <glob/glob.h> for extern function declarations
1416
1417 variables.h
1418         - add function prototypes for all of the sv_* functions
1419
1420 builtins/common.h
1421         - add extern declarations for set_shellopts() and parse_shellopts()
1422           from builtins/set.def
1423
1424 variables.c
1425         - include "hashcmd.h" for extern declaration for flush_hashed_filenames
1426         - include "pathexp.h" for extern declaration for setup_glob_ignore
1427
1428 lib/malloc/malloc.c
1429         - cast to `long' instead of `int' in memalign for 64-bit machines
1430
1431 {pcomplete,trap}.c
1432         - changed printf escape sequences used to print pointers to %p
1433
1434 lib/readline/undo.c
1435         - include "xmalloc.h" for extern function declaration
1436
1437 input.h
1438         - add function prototypes to extern declarations for getc_with_restart
1439           and ungetc_with_restart
1440
1441 variables.[ch]
1442         - changed type of `function' member of `struct name_and_function' to
1443           `sv_func_t', which is defined and prototyped in variables.h
1444         - map_over now takes an `sh_var_map_func_t *'
1445
1446 shell.h
1447         - start of a set of function pointer typedefs like those in
1448           lib/readline/rltypedefs.h
1449
1450 hashlib.[ch]
1451         - second paramter to flush_hash_table is now an `sh_free_func_t *'
1452
1453 trap.c
1454         - parameter to reset_or_restore_signal_handlers is now an
1455           `sh_resetsig_func_t *'
1456
1457 pcomplete.h, pcomplib.c
1458         - function pointer argument to print_all_compspecs is now an
1459           `sh_csprint_func_t *'
1460         - function pointer `list_getter' element of an `ITEMLIST' is now
1461           prototyped with __P((...)) instead of using `Function *'
1462
1463 jobs.[ch]
1464         - `j_cleanup' member of a JOB is now an `sh_vptrfunc_t *'
1465
1466 alias.c
1467         - map_over_aliases now takes an `sh_alias_map_func_t *'
1468         - free_alias_data now takes a `PTR_T'
1469
1470 pathexp.c
1471         - function pointer argument to ignore_globbed_names is now an
1472           `sh_ignore_func_t *' 
1473
1474 bashline.c
1475         - function pointer argument to _ignore_completion_names is now an
1476           `sh_ignore_func_t *' 
1477
1478 pathexp.h,{bashhist,bashline.c
1479         - `item_func' member of a `struct ignorevar' is now an
1480           `sh_iv_item_func_t *'
1481
1482 builtins/evalfile.c
1483         - `errfunc' is now an `sh_vmsg_func_t *'
1484
1485 jobs.c
1486         - map_over_job now takes an `sh_job_map_func_t *' as its first argument
1487
1488 array.[ch]
1489         - function pointer argument to array_walk is now an
1490           `sh_ae_map_func_t *'
1491
1492 general.c
1493         - tilde_expansion_preexpansion_hook has type `tilde_hook_func_t *',
1494           and so the assignment in tilde_initialize doesn't need a cast
1495
1496 list.c
1497         - map_over_words now takes an `sh_icpfunc_t *' as its second argument
1498
1499 input.h
1500         - the `getter' and `ungetter' function pointer members of a
1501           BASH_INPUT are now of types `sh_cget_func_t *' and
1502           `sh_cunget_func_t *' respectively
1503         - init_yy_io now takes an `sh_cget_func_t *' as its first argument and
1504           an `sh_cunget_func_t *' as its second
1505
1506 parse.y
1507         - init_yy_io now takes an `sh_cget_func_t *' as its first argument and
1508           an `sh_cunget_func_t *' as its second
1509         - initialize_bash_input casts bash_input.getter and bash_input.ungetter
1510           appropriately
1511
1512 builtins/mkbuiltins.c
1513         - make the extern function definitions written to builtext.h have
1514           prototypes with __P((...))
1515         - include "stdc.h"
1516         - change Function to mk_handler_func_t
1517         - fixed comment_handler to take the right number of args
1518         - prototyped all the handler functions with __P((...))
1519
1520 builtins.h
1521         - the `function' member of a struct builtin is now of type
1522           `sh_builtin_func_t *'
1523
1524 builtins/common.[ch]
1525         - last_shell_builtin, this_shell_builtin are now of type
1526           `sh_builtin_func_t *'
1527         - find_shell_builtin, builtin_address, find_special_builtin now return
1528           `sh_builtin_func_t *'
1529
1530 builtins/exit.def, {execute_cmd,jobs,nojobs,variables}.c, parse.y
1531         - changed all declarations of last_shell_builtin and this_shell_builtin
1532
1533 execute_cmd.c
1534         - execute_builtin, execute_builtin_or_function,
1535           execute_subshell_builtin_or_function now take an
1536           `sh_builtin_func_t *' instead of a `Function *' for argument
1537         - changed appropriate variables from `Function *' to
1538           `sh_builtin_func_t *'
1539
1540 builtins/{bind,builtin,enable,read,setattr}.def
1541         - replaced uses of `Function *' in variable declarations with
1542           appropriate types (sh_builtin_func_t * or rl_command_func_t *)
1543
1544 builtins/set.def
1545         - set_func and get_func members of binary_o_options are now of types
1546           `setopt_set_func_t *' and `setopt_get_func_t *', which are
1547           prototyped
1548
1549 builtins/shopt.def
1550         - set_func member of shopt_vars is now of type `shopt_set_func_t *'
1551
1552 bashline.c
1553         - enable_hostname_completion now returns `int' (the old value of
1554           perform_hostname_completion)
1555
1556 [The only use of Function and VFunction now is for unwind-protects]
1557
1558                                     9/4
1559                                     ---
1560 lib/sh/getcwd.c
1561         - use const define from config.h rather than `CONST'
1562         - use PTR_T define from xmalloc.h rather than `PTR'
1563         - include xmalloc.h for PTR_T
1564         - remove PATH_MAX define, rely on value from maxpath.h
1565
1566 {general,mailcheck}.c, lib/sh/{pathcanon,pathphys}.c
1567         - don't include maxpath.h directly; it's already included by shell.h
1568
1569 lib/sh/mailstat.c
1570         - new `mailstat()' implementation, to stat a mailbox file for
1571           mail checking.  handles maildir-style mail directories with one
1572           file per message and creates a dummy stat struct from them
1573
1574 lib/sh/Makefile.in
1575         - add mailstat.c and mailstat.o in the appropriate places
1576
1577 lib/malloc/malloc.c
1578         - augmented implementation with wrapper functions that pass in file
1579           and line number information from cpp.  currently unused, but a
1580           placeholder for future debugging and use tracking
1581
1582 lib/malloc/shmalloc.h
1583         - new file, extern declarations for allocation wrapper functions for
1584           use by the shell (and others, I guess)
1585
1586 xmalloc.[ch]
1587         - wrapper functions for xmalloc, xfree, xrealloc (sh_ prefixed) that
1588           pass cpp line number information through to the malloc functions,
1589           if USING_BASH_MALLOC is defined
1590
1591                                     9/5
1592                                     ---
1593 lib/malloc/gmalloc.c
1594         - removed; no longer part of distribution
1595
1596 lib/malloc/Makefile.in
1597         - removed references to gmalloc.[co]
1598
1599 configure.in, doc/bashref.texi
1600         - removed references to `--with-glibc-malloc' configure option
1601
1602 {configure,Makefile}.in
1603         - changed the way bash malloc is configured into the Makefile, making
1604           it more like how readline is configured.  If the bash malloc is
1605           not configured in, nothing in lib/malloc will be built
1606
1607                                     9/6
1608                                     ---
1609 lib/malloc/imalloc.h
1610         - new file, some internal malloc definitions
1611
1612 lib/malloc/mstats.h
1613         - new file, definitions for malloc statistics structs and functions
1614
1615 lib/malloc/trace.c
1616         - new file, malloc tracing functions (currently just print messages
1617           to stderr), code is #ifdef MALLOC_TRACE
1618
1619 lib/malloc/stats.c
1620         - new file, moved malloc stats code from malloc.c to here
1621
1622 lib/malloc/malloc.c
1623         - moved some definitions to imalloc.h
1624         - moved stats code to stats.c
1625         - malloc tracing calls added to internal_{malloc,realloc,free}, all
1626           #ifdef MALLOC_TRACE
1627
1628 lib/malloc/Makefile.in, Makefile.in
1629         - added {imalloc,mstats}.h, {trace,stats}.c
1630
1631 parse.y
1632         - changed decode_prompt_string to save and restore $?
1633           (last_command_exit_value) around calls to expand_prompt_string(),
1634           so command substitutions in PS1, etc. don't change $?
1635
1636 {array,subst}.c
1637         - a couple more arrayind_t fixes from Paul Eggert
1638
1639 configure.in
1640         - remove redundant check for wait3(2)
1641
1642 redir.h
1643         - fixed a typo (stdin_redirs -> stdin_redirects)
1644
1645                                    9/10
1646                                    ----
1647 execute_cmd.c
1648         - remove check for \n and \r from WHITESPACE macro, since those
1649           chars are not whitespace as returned by the whitespace(c) macro
1650         - getinterp now takes a `char *' as first arg, not unsigned char *
1651         - execute_shell_script now takes a `char *' as first arg, not
1652           unsigned char *
1653         - fix typo in forward declaration for `initialize_subshell'
1654         
1655 general.[ch]
1656         - check_binary_file now takes a (char *) argument, not unsigned char *
1657         - pass unsigned char to isspace and isprint because of ISO C fuckup
1658         - bash_tilde_expand now takes a `const char *' as its argument
1659
1660 builtins/evalfile.c, shell.c
1661         - buffer passed to check_binary_file is char, not unsigned char
1662
1663 parse.y
1664         - fix extern declaration for yyerror()
1665         - yyerror now takes a `const char *' as first arg
1666
1667 {error,jobs}.c
1668         - fixes to printf-style functions to handle pids wider than an int
1669
1670 lib/readline/{isearch,vi_mode}.c
1671         - fix call to rl_message in rl_display_search (remove extra arg)
1672
1673 variables.c
1674         - fix missing argument to builtin_error in make_local_variable
1675
1676 builtins/getopts.def
1677         - since getopts takes no options, change while loop calling
1678           internal_getopts to a simple `if' check
1679
1680 builtins/printf.def
1681         - since printf takes no options, change while loop calling
1682           internal_getopts to a simple `if' check
1683
1684 lib/readline/bind.c
1685         - remove _SET_BELL macro, expand code inline
1686
1687 lib/readline/input.c
1688         - change _rl_input_available to use either select or FIONREAD,
1689           but not both
1690
1691 lib/readline/readline.c
1692         - fix rl_digit_loop to remove unreachable code at end of loop
1693
1694 {bashhist,bashline,expr,jobs,redir,shell}.c, builtins/fc.def, lib/sh/snprintf.c
1695         - bracket unused functions with #ifdef INCLUDE_UNUSED/#endif
1696         - remove some unused variables
1697
1698 execute_cmd.c
1699         - remove #ifdef'd code that allowed `return' to terminate a select
1700           statement
1701
1702 expr.c
1703         - remove some extraneous tests from strlong()
1704
1705 array.h
1706         - arrayind_t is now a long, since shell arithmetic is performed as
1707           longs
1708         - remove second declaration of new_array_element
1709
1710 builtins/printf.def
1711         - in mklong, xrealloc cannot return NULL, so don't check for it
1712         - remove some #if 0 code
1713         - fix core dump triggered by a format specification with more than
1714           one `*'
1715         - remove `foundmod', since its value mirrors `modchar != 0'
1716         - include "common.h" for builtin_{error,usage} declarations
1717
1718 Makefile.in,builtins/Makefile.in
1719         - updated some dependencies due to new include files
1720
1721 pcomplete.c
1722         - include "execute_cmd.h" for declaration of execute_shell_function
1723
1724 arrayfunc.c
1725         - include <stdio.h> for printf
1726         - include "builtins/common.h" for builtin_error declaration
1727
1728 builtins/evalstring.c
1729         - include "../trap.h" for run_trap_cleanup declaration
1730
1731 builtins/help.def
1732         - include "common.h" instead of locally declaring builtin_error
1733           and builtin_usage
1734
1735 error.h
1736         - add extern declaration for itrace()
1737         - add prototype to extern declaration of get_name_for_error
1738         - file_error now takes a `const char *' as first argument
1739
1740 externs.h
1741         - added prototype for sh_setlinebuf declaration, bracketed with
1742           NEED_SH_SETLINEBUF_DECL so we don't need stdio.h everywhere
1743         - add extern declaration for parse.y:return_EOF()
1744
1745 shell.c
1746         - add NEED_SH_SETLINEBUF_DECL before including shell.h
1747
1748 lib/readline/callback.c
1749         - include <stdlib.h> or "ansi_stdlib.h" for abort declaration
1750
1751 quit.h
1752         - remove declaration of throw_to_top_level
1753
1754 subst.c
1755         - remove unused extern declaration for getopts_reset
1756
1757 lib/sh/netopen.c
1758         - include <shell.h> for legal_number, etc.
1759         - add prototype for inet_aton extern declaration
1760
1761 lib/sh/clock.c
1762         - include <stdc.h> for __P declaration
1763         - add extern declaration for get_clk_tck
1764
1765 support/mkversion.sh
1766         - changed so that extern function declarations for functions in
1767           version.c (moved from externs.h) are in the generated version.h
1768
1769 shell.h
1770         - include version.h
1771
1772 version.c
1773         - various `char *' version variables are now `const char *'
1774
1775 general.h
1776         - add prototype for same_file, bracketed with _POSIXSTAT_H
1777           #ifdef, since that's what include/posixstat.h defines
1778
1779 builtins/common.[ch]
1780         - _evalfile, maybe_execute_file, source_file, and fc_execute_file
1781           now take a `const char *' as their first argument
1782
1783 eval.c
1784         - removed extern declaration of yyparse; it's in externs.h
1785
1786 parse.y
1787         - added prototypes to static forward function declarations
1788         - changed local `all_digits' variable in read_token_word () to
1789           all_digit_token to avoid clash with all_digits() function in
1790           general.c
1791
1792 {bashhist,copy_cmd,make_cmd,hashlib,mailcheck}.c
1793         - added prototypes for static function declarations
1794
1795 shell.h
1796         - add extern declarations for interactive, interactive_shell,
1797           changed c files with extern declarations
1798
1799 pcomplete.c
1800         - changed it_init_aliases to avoid shadowing global variable
1801           `aliases'
1802
1803 bashline.c,pathexp.c,general.h
1804         - sh_ignore_func_t is now a pointer to a function taking a
1805           `const char *'; users changed
1806
1807 configure.in
1808         - test for <strings.h>
1809
1810 config.h.in
1811         - add #undef HAVE_STRINGS_H
1812
1813 bashansi.h
1814         - change like recommended in autoconf manual
1815
1816                                    9/11
1817                                    ----
1818 [a date which will live in infamy.  prayers for the victims.]
1819
1820 execute_cmd.c
1821         - don't use an absolute index into abuf in mkfmt, use
1822           sizeof(abuf) to compute last index
1823
1824 builtins/common.c
1825         - fix read_octal to do a better job of detecting overflow while
1826           iterating through the string
1827
1828 builtins/umask.def
1829         - change octal-print mode to print 4 digits, like other shells
1830         - cast umask to unsigned long to avoid problems on systems where
1831           it's wider than an int (POSIX doesn't guarantee that mode_t is
1832           no wider than an int, but real-world systems use int)
1833
1834 builtins/printf.def
1835         - mklong can never return NULL (it uses xrealloc), so the mainline
1836           doesn't need to check for NULL returns
1837         - new function, getldouble (long double *), to get long doubles
1838         - mklong now takes a `char *' as its second argument, the modifier(s)
1839           to use
1840         - changed use of `modchar' to handle more than a single modifier
1841           character
1842         - changed to handle `long double' and `L' formats better, rather
1843           than discarding long double information
1844         - since printf now follows the POSIX.2 rules for conversion errors,
1845           we can dispense with the status returns from the get* functions
1846         - make the get* functions as similar in structure as possible,
1847           removing type casts, etc.
1848
1849 lib/sh/timeval.c,execute_cmd.c
1850         - change some instances of `long' to `time_t', for systems where
1851           a time_t is bigger than a long
1852
1853 jobs.c
1854         - include "posixtime.h" instead of <sys/time.h>
1855
1856 config.h.in
1857         - add defines for HAVE_DECL_CONFSTR, HAVE_DECL_STRTOLD,
1858           HAVE_DECL_SBRK, HAVE_DECL_PRINTF
1859         - remove defines for SBRK_DECLARED and PRINTF_DECLARED
1860         - add _GNU_SOURCE define
1861
1862 configure.in
1863         - add AC_CHECK_DECLS for strtold, confstr, sbrk, printf
1864         - remove call to BASH_FUNC_SBRK_DECLARED
1865         - remove call to BASH_FUNC_PRINTF
1866
1867 xmalloc.c, lib/malloc/malloc.c
1868         - change check of SBRK_DECLARED to HAVE_SBRK_DECL
1869
1870 print_cmd.c
1871         - change PRINTF_DECLARED to HAVE_DECL_PRINTF
1872
1873 builtins/evalstring.c, builtins/common.h
1874         - parse_and_execute now takes a `const char *' as its second argument
1875
1876 input.h,parse.y
1877         - with_input_from_* functions now take a `const char *' as their
1878           second argument
1879         - init_yy_io now takes a `const char *' as its fourth argument
1880
1881 parse.y,externs.h
1882         - parse_string_to_word_list now takes a `const char *' as its second
1883           argument
1884
1885 tests/builtins.right
1886         - change output to account for extra digit in umask output
1887
1888 pcomplib.c
1889         - free_progcomp now takes a PTR_T argument
1890
1891 builtins/bashgetopt.h
1892         - include <stdc.h>
1893         - add prototypes to extern declarations
1894
1895 builtins/shopt.def
1896         - add prototypes to static function declarations
1897
1898 builtins/{fc,umask,wait}.def, builtins/{bashgetopt,common}.c
1899         - include <ctype.h> for isdigit macro (referenced by `digit(x)')
1900
1901 lib/readline/complete.c
1902         - added more static function declarations with prototypes
1903
1904                                    9/12
1905                                    ----
1906 lib/sh/tmpfile.c
1907         - use `^' instead of `*' in sh_mktmpname to make filenames a bit
1908           more random
1909
1910 include/stdc.h,lib/readline/rldstdc.h
1911         - add __attribute__ definition 
1912
1913 builtins/common.h
1914         - add printf __attribute__ to declaration of builtin_error
1915
1916 error.h
1917         - add printf __attribute__ to declaration of programming_error,
1918           report_error, parser_error, fatal_error, sys_error, internal_error,
1919           internal_warning
1920
1921 lib/readline/readline.h
1922         - add printf __attribute__ to declaration of rl_message
1923
1924 pcomplete.c
1925         - add printf __attribute__ to declaration of debug_printf
1926
1927 print_cmd.c
1928         - add printf __attribute__ to declarations of cprintf, xprintf
1929
1930 include/chartypes.h
1931         - new file, includes <ctype.h> and defines macros that check for
1932           safe (ascii) arguments before calling the regular ctype macros
1933
1934 {alias,bashline,execute_cmd,expr,findcmd,general,locale,mksyntax,stringlib,subst,variables}.c
1935 parse.y
1936 builtins/{bashgetopt,common}.c
1937 builtins/{fc,printf,umask,wait}.def
1938 lib/glob/strmatch.c
1939 lib/sh/{oslib,pathcanon,pathphys,snprintf,strcasecmp,strindex,stringvec,strtod,strtol,strtrans}.c
1940 examples/loadables/{head,sleep}.c
1941         - include "chartypes.h" or <chartypes.h> instead of <ctype.h>
1942
1943 Makefile.in,{builtins,lib/{glob,sh}}/Makefile.in
1944         - update dependencies to include chartypes.h
1945
1946 lib/sh/inet_aton.c
1947         - use `unsigned char' instead of `char' to pass to ctype.h functions
1948
1949 lib/sh/netopen.c
1950         - check for '0' <= host[0] <= '9' in _getaddr instead of using
1951           isdigit
1952
1953 subst.c,lib/sh/shquote.c
1954         - change array subscripts into sh_syntaxtab from `char' to
1955           `unsigned char'
1956
1957 {alias,bashline,execute_cmd,expr,general,subst}.c, parse.y
1958 builtins/{fc,printf,umask,wait}.def builtins/{bashgetopt,common}.c
1959 lib/sh/{pathcanon,pathphys,snprintf,strcasecmp,strindex,strtod,strtol,strtrans}.c
1960 examples/loadables/{head,sleep}.c
1961         - change to use some of the new macros in chartypes.h
1962         - remove old local macro definitions now provided by chartypes.h
1963
1964 general.h
1965         - remove definition of isletter, ISOCTAL, digit, digit_value
1966         - change legal_variable_starter and legal_variable_char to use
1967           chartypes.h macros
1968         - change ABSPATH to use chartypes.h macros
1969
1970 lib/readline/util.c
1971         - change to use Paul Eggert's FUNCTION_FOR_MACRO define to define
1972           function replacements for macros in chardefs.h
1973
1974 lib/readline/chardefs.h
1975         - added some of the same macros as in chartypes.h
1976         - change _rl_lowercase_p, _rl_uppercase_p, _rl_digit_p,
1977           _rl_to_upper, _rl_to_lower to use new IS* macros
1978         - added _rl_isident macro from vi_mode.c:isident
1979
1980 lib/readline/{bind,complete,nls}.c
1981         - change to use some of the new macros from chardefs.h
1982
1983 lib/readline/vi_mode.c
1984         - isident -> _rl_isident
1985         - remove local defines of macros in chardefs.h
1986
1987 lib/sh/strtol.c
1988         - updated to new version, modified from glibc 2.2.4 and sh-utils-2.0.
1989           This one can do strtoll and strtoull, if necessary
1990
1991                                    9/13
1992                                    ----
1993 builtins/ulimit.def
1994         - changed get_limit so it retrieves both hard and soft limits
1995           instead of one or the other
1996         - changed callers of get_limit
1997         - changed getmaxvm to take soft limit, hard limit as arguments
1998         - changed getmaxuprc to just take a single argument, the value
1999         - changed calls to printone() to pass soft limit or hard limit
2000           depending on `mode' instead of using old current_limit variable
2001         - moved check for out-of-range limits in ulimit_internal into the
2002           block that converts a string argument to a value of type rlim_t
2003         - changed RESOURCE_LIMITS struct to break the description into a
2004           description string and separate scale factor string
2005         - changed print_all_limits to print a single error message if
2006           get_limit fails, including limits[i].description now that the
2007           scale factor has been removed from the description string
2008         - removed DESCFMT define, since it's now used only in printone()
2009         - changed printone to print the option character associated with a
2010           particular limit if we're printing multiple limits
2011         - changed calls to builtin_error to print the description associated
2012           with a limit if setting or getting the limit fails
2013         - added support for new POSIX 1003.1-200x rlim_t values:
2014           RLIM_SAVED_CUR and RLIM_SAVED_MAX, which expand to the current
2015           soft and hard limits, whatever they are
2016         - changed printone to print `hard' or `soft' if the current limit is
2017           RLIM_SAVED_MAX or RLIM_SAVED_CUR, respectively
2018         - changed ulimit_internal to handle new `hard' and `soft' arguments
2019         - changed help text do describe the special limit arguments `hard',
2020           `soft', and `unlimited'
2021
2022 doc/{bash.1,bashref.texi}
2023         - documented new `hard' and `soft' limit arguments to `ulimit'
2024
2025 hashlib.[ch]
2026         - find_hash_item now takes a `const char *' is its first argument
2027         - hash_string now takes a `const char *' is its first argument
2028         - remove_hash_item now takes a `const char *' as its first argument
2029
2030 pcomplib.c
2031         - removed cast from first argument to find_hash_item in find_compspec
2032
2033 general.[ch]
2034         - absolute_program now takes a `const char *' as its argument
2035         - absolute_pathname now takes a `const char *' as its argument
2036
2037 lib/glob/glob.[ch]
2038         - glob_pattern_p now takes a `const char *' as its argument
2039
2040 bashline.c
2041         - removed cast from first argument to absolute_program in
2042           command_word_completion_function
2043         - removed cast from first argument to glob_pattern_p in
2044           attempt_shell_completion
2045
2046 findcmd.[ch]
2047         - find_absolute_program, find_user_command, find_path_file,
2048           search_for_command, user_command_matches now take a
2049           `const char *' as their first argument
2050         - file_status, executable_file, is_directory, executable_or_directory
2051           now take a `const char *' as their argument
2052         - _find_user_command_internal, find_user_command_internal,
2053           find_user_command_in_path 
2054
2055 lib/sh/makepath.c, externs.h
2056         - changed sh_makepath so it takes `const char *' for its first
2057           two arguments
2058
2059 hashcmd.[ch]
2060         - find_hashed_filename now takes a `const char *' as its first arg
2061         - remove_hashed_filename now takes a `const char *' as its first arg
2062
2063 variables.[ch]
2064         - new_shell_variable, var_lookup, shell_var_from_env_string,
2065           find_name_in_env_array, bind_function, makunbound,
2066           bind_name_in_env_array, bind_tempenv_variable, bind_variable
2067           now take a `const char *' as their first arg
2068         - find_function, make_new_variable, find_tempenv_variable,
2069           find_variable_internal, find_variable, set_func_read_only,
2070           set_func_auto_export, all_variables_matching_prefix, assign_in_env,
2071           assignment, kill_local_variable, make_local_variable, unbind_variable
2072           now take a `const char *' as their arg
2073         - mk_env_string now takes `const char *' arguments
2074
2075 arrayfunc.[ch]
2076         - skipsubscript now takes a `const char *' as its argument
2077
2078                                    9/17
2079                                    ----
2080 lib/readline/complete.c
2081         - attempt to preserve case of what the user typed in
2082           compute_lcd_of_matches if we're ignoring case in completion
2083
2084 builtins/{let,pushd}.def,{execute_cmd,expr}.c
2085         - change some 0L constants to 0 and let the compiler sort it out
2086
2087                                    9/18
2088                                    ----
2089 lib/malloc/alloca.c
2090         - alloca now takes a `size_t' argument
2091
2092 include/memalloc.h
2093         - if we're providing an extern function declaration for alloca,
2094           use `void *' and prototype if __STDC__ is defined
2095         - if HAVE_ALLOCA_H is defined, but C_ALLOCA is defined, don't
2096           define HAVE_ALLOCA
2097
2098                                    9/19
2099                                    ----
2100 subst.c
2101         - do_assignment_internal, do_assignment, and do_assignment_no_expand
2102           now take a `const char *' as their first argument
2103
2104 general.h
2105         - a `sh_assign_func_t' is now a function taking a `const char *' and
2106           returning int
2107
2108 hashcmd.c
2109         - free_filename_data now takes a `PTR_T' argument to agree with the
2110           typedef for `sh_free_func_t'
2111
2112 lib/sh/snprintf.c
2113         - use TYPE_MAXIMUM define like strtol.c instead of huge constants
2114
2115                                    9/20
2116                                    ----
2117 lib/sh/snprintf.c
2118         - don't bother to compile the bulk of the body unless HAVE_SNPRINTF
2119           or HAVE_ASPRINTF is not defined
2120
2121                                    9/24
2122                                    ----
2123 flags.c
2124         - ignore `set -n' if the shell was started interactively
2125
2126 lib/readline/readline.c
2127         - initialize readline_echoing_p to 0; let the terminal-specific code
2128           in rltty.c set it appropriately
2129
2130 lib/malloc/malloc.c
2131         - changed internal_memalign() slightly to avoid compiler warnings about
2132           negating an unsigned variable (-alignment -> (~alignment + 1))
2133
2134                                    9/27
2135                                    ----
2136 lib/readline/readline.c
2137         - changed rl_newline to set _rl_history_saved_point appropriately
2138           for the {previous,next}_history code
2139
2140 lib/readline/rlprivate.h
2141         - extern declaration for _rl_history_preserve_point
2142
2143 lib/readline/bind.c
2144         - new bindable variable, `history-preserve-point', sets value of
2145           _rl_history_preserve_point
2146
2147                                    10/1
2148                                    ----
2149 lib/malloc/table.c
2150         - new file, with a map of allocated (and freed) memory for debugging
2151           multiple frees, etc.  Indexed by hash on values returned by
2152           malloc(); holds size, file and line number info for last alloc or
2153           free and a couple of statistics pointers
2154
2155 lib/malloc/malloc.c
2156         - a few cleanups; added calls for registering allocations and frees
2157           if MALLOC_REGISTER is defined
2158         - replaced MALLOC_RETURN with explicit MALLOC_NOTRACE define
2159         - reordered fields in `struct...minfo' in `union mhead' to restore
2160           eight-byte alignment
2161         - added explicit checks for underflow in free and realloc since
2162           checking mh_magic2 is not sufficient to detect everything (it's
2163           no longer the last field in the struct, and thus not the bytes
2164           immediately preceding what's returned to the user)
2165         - new function, xbotch, for printing file and line number info for
2166           the failed assertion before calling botch() (programming_error())
2167
2168 configure.in
2169         - replaced call to BASH_C_LONG_LONG with call to
2170           AC_CHECK_TYPES([long long])
2171         - moved the C compiler tests before the tests for various
2172           system types, so we can know whether we have `long long'
2173           before testing for 64-bit types
2174         - if we have `long long', check for sizeof(long long) and save value
2175
2176 aclocal.m4
2177         - changed BASH_TYPE_BITS64_T to check `long long' before `long', but
2178           after `double'
2179
2180                                    10/2
2181                                    ----
2182 lib/malloc/malloc.c
2183         - made malloc and realloc both agree on the rounding for a request of
2184           size N (round up to nearest multiple of 8 after adjusting for
2185           malloc overhead); uses new ALLOCATED_BYTES macro
2186         - realloc and free now use new IN_BUCKET macro for underflow checks
2187
2188 execute_cmd.c
2189         - fixed time_command() to use `time_t' instead of `long' to hold
2190           time stamps
2191
2192 lib/sh/clock.c
2193         - clock_t_to_secs now takes a `time_t *' second argument
2194         - fixed print_clock_t to call clock_t_to_secs with right arguments
2195
2196 lib/sh/timeval.c
2197         - fixed print_timeval to make `minutes' a `long' and make its
2198           structure identical to print_clock_t
2199
2200 redir.c
2201         - changed redirection_error to check for EBADF and use the file
2202           descriptor being redirected from in the error message if it
2203           is >= 0
2204
2205 Makefile.in
2206         - changed release status to `beta1'
2207
2208 lib/glob/collsyms.h
2209         - added a few ASCII symbols to the posix_collsyms array
2210
2211                                    10/3
2212                                    ----
2213 aclocal.m4
2214         - fixed typo in BASH_TYPE_BITS64_T
2215
2216 configure.in
2217         - added check for unsigned chars with AC_C_CHAR_UNSIGNED
2218
2219 config.h.in
2220         - added PROTOTYPES and __CHAR_UNSIGNED__ #defines
2221
2222 general.h
2223         - if CHAR_MAX is not define by <limits.h>, provide a definition
2224
2225 builtins/printf.def
2226         - change tescape() to mask \0 and \x escape sequences with 0xFF
2227         - change tescape() to process at most two hex digits after a `\x'
2228
2229 lib/sh/strtrans.c
2230         - change strtrans() to mask \0 and \x escape sequences with 0xFF
2231         - change strtrans() to process at most two hex digits after a `\x'.
2232           This affects `echo -e' and $'...' processing
2233
2234 lib/readline/bind.c
2235         - changed rl_translate_keyseq() to process at most two hex digits
2236           after a `\x'
2237
2238 lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
2239         - changed documentation for key binding escape sequences to specify
2240           that at most two hex digits after \x are translated
2241         - changed documentation for key binding to specify that the result
2242           of \nnn or \xhh escapes is an eight-bit value, not just ASCII
2243
2244 doc/{bash.1,bashref.texi}
2245         - changed documentation of $'...' to specify that at most two hex
2246           digits after \x are translated
2247         - changed `echo' documentation to specify that at most two hex
2248           digits after \x are translated
2249         - changed documentation for `echo' and $'...' to specify that the
2250           result of \nnn or \xhh escapes is an eight-bit value, not just ASCII
2251
2252                                    10/4
2253                                    ----
2254 lib/malloc/malloc.c
2255         - changed interface for xbotch to pass memory address and error code
2256           as two additional arguments
2257         - call mregister_describe_mem from xbotch to get the last allocation
2258           or free before the botch
2259
2260 configure.in
2261         - call AC_CHECK_DECLS([strsignal])
2262
2263 config.h.in
2264         - add HAVE_DECL_STRSIGNAL
2265
2266 siglist.h
2267         - make declaration of strsignal() dependent on !HAVE_DECL_STRSIGNAL
2268
2269                                    10/5
2270                                    ----
2271 support/texi2html
2272         - upgraded to version 1.64
2273
2274                                    10/9
2275                                    ----
2276 aclocal.m4
2277         - added check for `long long' to BASH_TYPE_PTRDIFF_T
2278
2279 configure.in
2280         - replaced call to BASH_HAVE_TIOCGWINSZ with AC_HEADER_TIOCGWINSZ
2281
2282 aclocal.m4
2283         - replaced body of BASH_STRUCT_TERMIOS_LDISC with call to
2284           AC_CHECK_MEMBER(struct termios.c_line, ...)
2285         - replaced body of BASH_STRUCT_TERMIO_LDISC with call to
2286           AC_CHECK_MEMBER(struct termios.c_line, ...)
2287
2288 [bash-2.05a-beta1 frozen]
2289
2290                                    10/10
2291                                    -----
2292 lib/sh/snprintf.c
2293         - fixed exponent() to not smash the trailing zeros in the fraction
2294           when using %g or %G with an `alternate form'
2295         - fixed exponent() to handle the optional precision with %g and %G
2296           correctly (number of significant digits before the exponent)
2297
2298                                    10/11
2299                                    -----
2300 expr.c
2301         - fixed strlong() to correct the values of `@' and `_' when
2302           translating base-64 constants (64#@ == 62 and 64#_ == 64), for
2303           compatibility with ksh
2304
2305 lib/sh/itos.c
2306         - added a slightly more flexible fmtlong() function that takes a
2307           base argument and flags (for future use)
2308         - rewrote itos and inttostr in terms of fmtlong
2309
2310 lib/sh/fmtulong.c
2311         - new file, converts unsigned long to string.  hooks for `unsigned
2312           long long' in the future.  unused as yet
2313
2314                                    10/15
2315                                    -----
2316 lib/readline/rltty.c
2317         - change the SET_SPECIAL macro to avoid possible (but highly
2318           unlikely) negative array subscripts
2319
2320 error.h
2321         - add __attribute__ to extern declaration of itrace (even though the
2322           function isn't defined in released versions of bash)
2323
2324 bashansi.h
2325         - include <strings.h> if HAVE_STRINGS_H is defined, to get any extra
2326           function declarations provided therein
2327
2328 copy_cmd.c
2329         - fix typo in forward declaration for copy_arith_for_command
2330
2331 lib/malloc/stats.c
2332         - make the accumulators in _print_malloc_stats be `unsigned long'
2333           instead of `int'
2334
2335 externs.h, sig.h
2336         - add `__noreturn__' gcc attribute to exit_shell and jump_to_top_level
2337           declarations
2338
2339 lib/sh/mailstat.c, support/bashversion.c
2340         - include <bashansi.h> for some string function declarations
2341
2342 lib/malloc/shmalloc.h
2343         - added extern declarations of functions that do malloc debugging
2344
2345 lib/readline/{isearch,readline,vi_mode}.c
2346         - make sure we index into _rl_keymap with a non-negative index
2347
2348 parse.y
2349         - make sure we index into sh_syntaxtab with a non-negative index
2350
2351 lib/readline/vi_mode.c
2352         - bound the vi_mark_chars array with the number of characters between
2353           'a' and 'z' rather than using a fixed amount
2354         - don't use _rl_lowercase_p when deciding whether the char read by
2355           rl_vi_set_mark is a valid mark; just use 'a' <= char <= 'z'
2356
2357 lib/readline/chardefs.h
2358         - conditionally include memory.h and strings.h as in general.h
2359         - replace ISASCII with IN_CTYPE_DOMAIN like other GNU software
2360         - add defines for ISPRINT(c), ISLOWER(c) and ISUPPER(c)
2361         - fix defines for _rl_lowercase_p, _rl_uppercase_p, _rl_digit_p,
2362           _rl_pure_alphabetic, ALPHABETIC, _rl_to_upper, _rl_to_lower,
2363           and _rl_isident to work on systems with signed chars
2364
2365 include/chartypes.h
2366         - replace ISASCII with IN_CTYPE_DOMAIN like other GNU software
2367
2368 lib/sh/{strcasecmp,strtod,strtol}.c
2369         - don't pass possibly-negative characters to tolower() or toupper()
2370
2371 lib/glob/strmatch.c
2372         - don't bother testing for isupper in FOLD; rely on TOLOWER macro
2373           from <chartypes.h> to do it
2374         - don't use local definitions of isblank, et al.; rely on macros
2375           from <chartypes.h>
2376
2377 lib/readline/{display,readline}.c, mksyntax.c
2378         - use new ISPRINT macro instead of isprint()
2379
2380 builtins/{kill.def,mkbuiltins.c},{error,execute_cmd,jobs,nojobs,subst}.c
2381         - don't assume that a pid_t fits into an int for printing and other
2382           uses
2383
2384 variables.[ch]
2385         - the unused put_gnu_argv_flags_into_env now takes a `long' pid
2386           argument
2387
2388 configure.in, config.h.in
2389         - call AC_STRUCT_ST_BLOCKS, define HAVE_STRUCT_STAT_ST_BLOCKS if found
2390         - check for strtoull(), define HAVE_STRTOULL if found
2391         - check for uintmax_t, define to `unsigned long' if not found
2392
2393 lib/sh/mailstat.c
2394         - don't use st_blocks member of struct stat unless
2395           HAVE_STRUCT_STAT_ST_BLOCKS is defined; otherwise use the st_nlink
2396           field to return the total number of messages in a maildir-style
2397           mail directory
2398
2399 general.h,{alias,expr,general,subst,variables}.c
2400 builtins/{printf,read}.def
2401 lib/readline/{bind,complete,nls}.c
2402 lib/sh/{pathcanon,pathphys,shquote,snprintf,strindex,strtod,strtol,strtrans}.c
2403         - cast args to ctype macros to unsigned char for systems with signed
2404           chars; other fixes for signed chars
2405
2406 lib/sh/{fmtullong,strtoull.c}
2407         - new files, more support for `long long'
2408
2409 Makefile.in, lib/sh/Makefile.in
2410         - make fmtullong.o and strtoull.o part of libsh
2411
2412 lib/sh/itos.c
2413         - remove local copy of fmtlong; use fmtulong instead
2414         - new functions: uitos, uinttostr work on `unsigned long'
2415
2416 lib/sh/snprintf.c
2417         - fixes to make `unsigned long long' work (%llu)
2418         - fixes to make unsigned formats not print the sign when given
2419           an unsigned long that is greater than LONG_MAX
2420
2421 externs.h
2422         - extern declarations for fmtulong, fmtulloing, strtoull
2423         - extern declarations for uitos, uinttostr
2424
2425                                    10/16
2426                                    -----
2427 configure.in
2428         - move header checks before function checks
2429         - move c compiler tests before header checks
2430         - check for <inttypes.h> with BASH_HEADER_INTTYPES
2431         - change type checks for intmax_t, uintmax_t to not attempt to
2432           include <stdint.h>
2433         - check for strtoimax, strtoumax, strtoll, strtol, strtoull, strtoul
2434           with BASH_CHECK_DECL (for declarations in header files) and
2435           AC_REPLACE_FUNCS (for availability and LIBOBJS substitution)
2436         - remove check for have_long_long around sizeof check for long long
2437           (since autoconf will give it a size of 0 if the type isn't found)
2438
2439 config.h.in
2440         - add a define for HAVE_INTTYPES_H
2441         - add a define for HAVE_UNSIGNED_LONG_LONG
2442         - add defines for HAVE_STRTOIMAX, HAVE_STRTOUMAX, HAVE_STRTOLL
2443
2444 aclocal.m4
2445         - new func, BASH_HEADER_INTTYPES, which just calls AC_CHECK_HEADERS
2446           on <inttypes.h>; separate so it can be AC_REQUIREd
2447         - AC_REQUIRE([BASH_HEADER_INTTYPES]) in BASH_CHECK_TYPE
2448         - include <inttypes.h> in BASH_CHECK_TYPE if HAVE_INTTYPES_H is
2449           defined
2450         - change AC_DEFINE to AC_DEFINE_UNQUOTED in BASH_CHECK_TYPE
2451         - new `long long' checking macros:  BASH_TYPE_LONG_LONG and
2452           BASH_TYPE_UNSIGNED_LONG_LONG
2453         - new BASH_CHECK_DECL 
2454
2455 lib/sh/{strto[iu]max,strtoll}.c, lib/sh/Makefile.in, Makefile.in
2456         - new files
2457
2458 externs.h
2459         - extern declarations for strtoll, strtoimax, strtoumax
2460
2461 lib/malloc/alloca.c
2462         - include <bashtypes.h> for size_t
2463
2464 builtins/printf.def
2465         - new functions: getllong, getullong, getintmax, getuintmax; return
2466           long long, unsigned long long, intmax_t, uintmax_t respectively
2467         - builtin printf now handles `ll' and `j' length modifiers directly
2468
2469 lib/sh/Makefile.in
2470         - use LIBOBJS to decide whether or not the strto* functions are
2471           needed
2472
2473                                    10/17
2474                                    -----
2475 configure.in
2476         - call AC_REPLACE_FUNCS(rename)
2477         - move getcwd, strpbrk, strcasecmp, strerror, strtod
2478           from AC_CHECK_FUNCS to AC_REPLACE_FUNCS
2479         - only call BASH_FUNC_GETCWD if $ac_func_getcwd == "yes"
2480         - call BASH_CHECK_SYS_SIGLIST
2481         - if we don't have vprintf but have _doprnt, call AC_LIBOBJ(vprint)
2482
2483 lib/sh/Makefile.in
2484         - remove rename, getcwd, inet_aton, strpbrk, strcasecmp, strerror,
2485           strtod, vprint from OBJECTS; picked up from LIBOBJS
2486
2487 aclocal.m4
2488         - change BASH_FUNC_GETCWD to call AC_LIBOBJ(getcwd) if the libc
2489           getcwd(3) calls popen(3)
2490         - change BASH_FUNC_INET_ATON to call AC_LIBOBJ(inet_aton) if it's
2491           not found in libc or as a #define even with the special includes
2492         - BASH_KERNEL_RLIMIT_CHECK -> BASH_CHECK_KERNEL_RLIMIT
2493         - BASH_DEFAULT_MAILDIR -> BASH_SYS_DEFAULT_MAILDIR
2494         - BASH_JOB_CONTROL_MISSING -> BASH_SYS_JOB_CONTROL_MISSING
2495         - BASH_REINSTALL_SIGHANDLERS -> BASH_SYS_REINSTALL_SIGHANDLERS
2496         - BASH_SIGNAL_CHECK -> BASH_SYS_SIGNAL_VINTAGE
2497         - BASH_DUP2_CLOEXEC_CHECK -> BASH_FUNC_DUP2_CLOEXEC_CHECK
2498         - BASH_PGRP_SYNC -> BASH_SYS_PGRP_SYNC
2499         - BASH_RLIMIT_TYPE -> BASH_TYPE_RLIMIT
2500         - BASH_FUNC_PRINTF -> BASH_DECL_PRINTF
2501         - BASH_FUNC_SBRK_DECLARED -> BASH_DECL_SBRK
2502         - BASH_MISC_SPEED_T -> BASH_CHECK_SPEED_T
2503         - BASH_CHECK_SOCKLIB -> BASH_CHECK_LIB_SOCKET
2504         - new macro, BASH_CHECK_SYS_SIGLIST, encapsulates all the checks for
2505           sys_siglist, _sys_siglist, and strsignal(), sets SIGLIST_O to
2506           siglist.o if appropriate
2507
2508 Makefile.in
2509         - use SIGLIST_O variable to decide whether or not we need siglist.o
2510
2511 {execute_cmd,subst}.c
2512         - change a couple of instances of ISDIGIT to DIGIT, where we really,
2513           really only want ascii digits
2514
2515 ansi_stdlib.h
2516         - don't need a declaration for atol()
2517
2518                                    10/18
2519                                    -----
2520
2521 aclocal.m4
2522         - new macro, BASH_FUNC_PRINTF_A_FORMAT, checks for printf support
2523           for %a, %A conversion specifiers, defines HAVE_PRINTF_A_FORMAT
2524           if successful
2525
2526 configure.in
2527         - call AC_CHECK_FUNCS for isascii
2528         - call BASH_FUNC_PRINTF_A_FORMAT
2529
2530 config.h.in
2531         - add a define for HAVE_ISASCII
2532         - add a define for HAVE_PRINTF_A_FORMAT
2533
2534 lib/sh/snprintf.c
2535         - for long double output, fall back to sprintf using ldfallback()
2536           function for floating point formats
2537         - support %a, %A using dfallback() or ldfallback() if
2538           HAVE_PRINTF_A_FORMAT is defined
2539         - fix bug in vasprintf that returned wrong value in its first
2540           argument if the buffer holding the result string got reallocated
2541         - fixed PUT_CHAR macro to increment the counter even if we've
2542           exceeded the buffer size, for the return value from
2543           vsnprintf/snprintf
2544         - fix vsnprintf_internal to not use counter < length as a loop
2545           condition, but always process the entire format string (for
2546           the return value from vsnprintf/snprintf)
2547
2548 builtins/printf.def
2549         - support %a, %A if HAVE_PRINTF_A_FORMAT is defined
2550
2551 include/typemax.h
2552         - new file, with the TYPE_MAXIMUM stuff that's duplicated in several
2553           files in lib/sh
2554
2555 lib/sh/{fmtulong,strtol,snprintf}.c
2556         - include <typemax.h> instead of having the definitions in each file
2557
2558 lib/sh/Makefile.in
2559         - updated dependencies for typemax.h
2560
2561                                    10/22
2562                                    -----
2563 configure.in
2564         - call AC_CHECK_FUNCS on ctype.h functions/macros that bash redefines
2565           in chartypes.h
2566
2567 config.h.in
2568         - defines for HAVE_IS{ASCII,BLANK,GRAPH,PRINT,SPACE,XDIGIT}
2569
2570 include/chartypes.h, lib/glob/strmatch.c, lib/readline/chardefs.h
2571         - don't redefine some is* ctype macros/functions if HAVE_ISXXX is
2572           defined (meaning that an appropriate function, but not a macro,
2573           exists)
2574
2575 lib/sh/strtrans.c
2576         - new function, ansic_shouldquote, returns 1 if argument string
2577           contains non-printing chars that should be quoted with $'...'
2578
2579 externs.h
2580         - new declaration for ansic_shouldquote()
2581
2582 variables.c
2583         - change print_var_value to ansi C quote the string if we're not in
2584           posix mode and the variable's value contains non-printing chars,
2585           to use the regular shell single quoting if the value contains
2586           shell meta-characters, and to just output the string otherwise
2587
2588 lib/sh/shquote.c
2589         - add `break' to `case '~':' to avoid fallthrough and extra test
2590
2591 doc/bashref.texi
2592         - note that in POSIX mode, `set' displays variable values that
2593           include nonprinting characters without quoting, unless they
2594           contain shell metacharacters
2595
2596 builtins/printf.def, lib/sh/snprintf.c
2597         - handle `F' conversion specifier as equivalent to 'f'
2598
2599 parse.y, {nojobs,variables}.c
2600         - a couple of cleanups for when building a minimal configuration
2601
2602 nojobs.c
2603         - new function: stop_making_children(), just sets
2604           already_making_children to 0 (like stop_pipeline)
2605
2606 subst.c
2607         - call stop_making_children from subst.c:command_substitute if
2608           JOB_CONTROL is not defined.  This fixes the bug where the wrong
2609           process is waited for (and its status returned) when using
2610           command substitution in a null command in a shell function
2611
2612 builtins/printf.def
2613         - new variable `tw' used to keep track of the total number of
2614           characters written by a single call to `printf' -- to be
2615           used for the `%n' conversion, which will be added later.  It
2616           gets reset each time we reuse the format string, which is what
2617           ksh93 seems to do
2618
2619                                    10/23
2620                                    -----
2621 variables.c
2622         - new function, bind_var_to_int (char *var, long val)
2623
2624 variables.h
2625         - extern declaration for bind_var_to_int
2626
2627 lib/sh/netopen.c
2628         - use gai_strerror() for error messages when getaddrinfo() fails
2629         - use PF_INET if DEBUG is defined, since IPv6 doesn't work for me
2630
2631 Makefile.in
2632         - pass DEBUG=${DEBUG} down to makes in some subdirectories
2633
2634 {builtins,lib{glob,sh}}/Makefile.in
2635         - append ${DEBUG} to LOCAL_CFLAGS value, passed by top-level Makefile
2636
2637 builtins/printf.def
2638         - added support for %n format conversion char (number of chars printed
2639           so far from current format string)
2640
2641                                    10/24
2642                                    -----
2643 variables.c
2644         - if posixly_correct is set, the default value of $MAILCHECK is 600
2645         - use legal_number instead of atoi in adjust_shell_level
2646         - treat non-numeric assignments to SECONDS as 0 in assign_seconds
2647         - new function, init_funcname_var; sets FUNCNAME as a dynamic variable
2648           if it's not set in the initial environment
2649         - new function, init_groups_var; sets GROUPS as a dynamic array
2650           variable if it's not set in the initial environment
2651         - new function, init_dirstack_var; sets DIRSTACK as a dynamic array
2652           variable if it's not set in the initial environment
2653         - new function, init_seconds_var; sets SECONDS as a dynamic
2654           variable using any valid integer value in the initial environment
2655           as the initial value, as if an assignment had been performed
2656         - call init_funcname_var, init_groups_var, init_dirstack_var,
2657           init_seconds_var from initialize_dynamic_variables
2658         - non-numeric values assigned to LINENO are treated as 0
2659         - change initialize_shell_variables to not auto-export PATH or TERM
2660         - change set_home_var to not auto-export HOME
2661         - change set_shell_var to not auto-export SHELL
2662         - broke the code that sets HOSTNAME, HOSTTYPE, MACHTYPE, OSTYPE
2663           out into a separate function, set_machine_vars; none of those
2664           variables are auto-exported
2665         - bash no longer un-exports SSH_CLIENT or SSH2_CLIENT
2666
2667 shell.c
2668         - changed isnetconn() to check SSH_CLIENT and SSH2_CLIENT only if
2669           SSH_SOURCE_BASHRC is defined in config-top.h
2670
2671 config-top.h
2672         - added a commented-out definition for SSH_SOURCE_BASHRC
2673
2674                                    10/25
2675                                    -----
2676
2677 Makefile.in
2678         - changed RELSTATUS to `rc1' (release candidate 1)
2679
2680                                    10/29
2681                                    -----
2682 locale.c
2683         - fixed an `=' vs. `==' typo in set_locale_var when parsing
2684           LC_NUMERIC
2685
2686 doc/{bash.1,bashref.texi}
2687         - document what bash does with $POSIXLY_CORRECT
2688
2689 doc/builtins.1
2690         - some updates
2691
2692 builtins/psize.sh
2693         - some mktemp(1) changes
2694
2695 lib/readline/readline.c
2696         - change rl_backward to check for rl_point < 0 and reset to 0 if so
2697
2698 lib/readline/util.c
2699         - don't compile in _rl_strpbrk if HAVE_STRPBRK is defined
2700
2701 lib/readline/rlprivate.h
2702         - remove extern declaration of _rl_strpbrk
2703
2704 lib/readline/rldefs.h
2705         - #define _rl_strpbrk as strpbrk if HAVE_STRPBRK is define, otherwise
2706           add extern declaration of _rl_strpbrk from rlprivate.h
2707
2708 {mailcheck,shell,variables}.c
2709         - make sure to include posixtime.h to get any prototype for time(3)
2710           in scope
2711
2712 {array,eval,execute_cmd,mksyntax,subst}.c, parse.y
2713 builtins/common.c
2714 lib/sh/pathcanon.c
2715         - a few changes as the result of `gcc -Wall' patches from solar
2716           designer
2717
2718 builtins/read.def, parse.y
2719         - change some calls to free() to xfree()
2720
2721 builtins/set.def
2722         - make sure unset_builtin() resets unset_array to 0 each time through
2723           the loop, because it's set (and used) depending on the current
2724           argument
2725
2726 shell.h
2727         - new define, USE_VAR, to force the compiler to not put a particular
2728           variable in a register -- helpful if registers are not restored
2729           by setjmp/longjmp
2730
2731 builtins/{evalfile.c,{read,wait}.def}, {eval,execute_cmd,shell,test}.c
2732         - use USE_VAR for some variables
2733
2734 subst.c
2735         - fixed a case in expand_word_internal where a NULL pointer could
2736           have been passed to free() (though free() should ignore it)
2737         - fixed a case at the end of expand_word_internal where LIST could
2738           have been used uninitialized (it makes gcc happy, though it
2739           doesn't happen in practice)
2740
2741 test.c
2742         - give test_syntax_error(), beyond(), and integer_expected_error()
2743           the `__noreturn__' attribute for gcc
2744
2745 unwind_prot.c
2746         - in clear_unwind_protect_list(), convert `flags' to `long' (via
2747           assignment to a `long' variable) before casting to `char *', in
2748           case pointers and longs are 64 bits and ints are 32 (makes no
2749           difference on 32-bit machines)
2750
2751                                    10/30
2752                                    -----
2753 print_cmd.c
2754         - fixed cprintf to avoid gcc warning about assigning const pointer
2755           to non-const (discarding type qualifier)
2756
2757 {make_cmd,pcomplete,test}.c,parse.y
2758         - some minor changes to shut up gcc warnings
2759
2760 lib/sh/tmpfile.c
2761         - fixed sh_mktmpfp to avoid file descriptor leaks in the case that
2762           sh_mktmpfd succeeds but fdopen fails for some reason
2763         - change sh_mktmpfd to use the same scheme for computing `filenum'
2764           as sh_mktmpname
2765         - change get_sys_tmpdir to prefer P_tmpdir if P_tmpdir is defined
2766         - changed sh_mktmpname and sh_mktmpfd to avoid trying to assign to
2767           `nameroot' if `nameroot == 0' (duh)
2768         - add code to sh_mktmpfd to use mkstemp(3) if USE_MKSTEMP is defined
2769         - add code to sh_mktmpname to use mktemp(3) if USE_MKTEMP is defined
2770
2771 support/{fixlinks,mkclone}
2772         - use mktemp if it's available for the symlink test
2773         - use $TMPDIR instead of hardcoding /tmp; default to /tmp
2774         - use a better filename for the symlink test instead of `z'
2775
2776 support/bashbug.sh
2777         - more changes inspired by a patch from solar designer
2778
2779 lib/malloc/Makefile.in
2780         - new target `alloca', which builds libmalloc.a with alloca.o only
2781           (for systems without alloca that are configured --without-bash-malloc)
2782
2783 configure.in
2784         - if we don't have a working alloca and are not configured to build
2785           the bash malloc library, make a malloc library containing only
2786           alloca.o
2787
2788 aclocal.m4
2789         - slight change to RL_LIB_READLINE_VERSION to deal with minor version
2790           numbers with a letter appended (like 4.2a)
2791
2792                                    10/31
2793                                    -----
2794 doc/{bash.1,bashref.texi}
2795         - slight change to note that only interactive shells resend a SIGHUP
2796           to all jobs before exiting
2797
2798 externs.h
2799         - declare strto[ui]max only if NEED_STRTOIMAX_DECL is defined.  This
2800           keeps picky compilers from choking because intmax_t is not defined
2801           (MacOS X 10.1)
2802
2803 builtins/printf.def
2804         - #define NEED_STRTOIMAX_DECL before including shell.h
2805
2806                                    11/1
2807                                    ----
2808 general.c
2809         - check in bash_tilde_expand() for an unquoted tilde-prefix; don't
2810           bother passing the string to tilde_expand unless the prefix is
2811           unquoted
2812
2813 shell.c
2814         - fix a problem with $LINENO when executing commands supplied with
2815           the -c invocation option when ONESHOT is defined
2816
2817 [bash-2.05a-rc1 frozen]
2818
2819 builtins/printf.def
2820         - fix the %n conversion to require that the variable name supplied
2821           be a valid shell identifier
2822
2823 variables.c
2824         - improve random number generator slightly by using the upper 16
2825           bits of the running random number instead of the lower 16, which
2826           are incrementally more random
2827
2828                                    11/2
2829                                    ----
2830 configure.in
2831         - if RL_INCLUDEDIR ends up being /usr/include, don't put
2832           -I$(RL_INCLUDEDIR) into CFLAGS
2833
2834                                    11/5
2835                                    ----
2836 doc/{bash.1,bashref.texi}
2837         - correct description of POSIXLY_CORRECT to note that the shell enters
2838           posix mode *before* the startup files are read if POSIXLY_CORRECT
2839           is in the initial environment
2840
2841 variables.c
2842         - fix function prologues for init_dirstack_var and init_groups_var
2843           to agree with caller (no arguments)
2844
2845 jobs.c
2846         - fix forward function declarations for pipe_read and pipe_close
2847
2848 subst.c
2849         - removed `inline' attribute from skip_double_quoted because it can
2850           potentially be called recursively
2851
2852 bashline.c
2853         - quick fix to bashline.c:attempt_shell_completion programmable
2854           completion code to just punt if the end of the command word found
2855           by find_cmd_end is <= the start found by find_cmd_start (the bug
2856           is probably in find_cmd_start -- fix later)
2857
2858 pcomplete.c
2859         - fix gen_matches_from_itemlist to return if the stringlist is null
2860           after any cleaning or initialization, before trying to use it
2861         - fix GEN_COMPS to only bother to try to append the STRINGLIST
2862           returned by gen_matches_from_itemlist to `glist' if it's non-NULL
2863
2864 lib/sh/stringlist.c
2865         - make copy_stringlist return NULL if the STRINGLIST * passed as an
2866           argument is NULL
2867         - make append_stringlist call copy_stringlist only if M2 is non-NULL;
2868           otherwise just return NULL if m1 is NULL
2869         - make word_list_to_stringlist return 0 immediately if the passed
2870           LIST argument is NULL
2871         - make realloc_stringlist call alloc_stringlist if the passed
2872           STRINGLIST argument (`sl') is 0, just like realloc calls malloc
2873
2874 subst.c
2875         - in skip_to_delim(), if we have an unclosed ${, and it's at the end
2876           of the string (string[i] == '{', string[i+1] == '{' and
2877           string[i+2] == 0, return si (i +2) immediately without bothering
2878           to call extract_dollar_brace_string or extract_delimited_string
2879         - in skip_to_delim(), if string[i] is 0 after a call to
2880           extract_dollar_brace_string or extract_delimited_string (meaning we
2881           have an unclosed ${ or other expansion, return i immediately without
2882           doing a `continue' (which will increment i past the end of string)
2883         - in split_at_delims, don't increment te by 1 if it's pointing to a
2884           delimiter.  this has the effect of skipping the first delimiter
2885           char in a possibly multi-character delimiter, and ignoring
2886           single-char delimiters like `>'
2887
2888 configure.in
2889         - use AC_CHECK_MEMBERS([struct stat.st_blocks]) instead of a call to
2890           AC_STRUCT_ST_BLOCKS to avoid configure changing LIBOBJS if the test
2891           fails
2892
2893 general.c
2894         - introduce two new variables: bash_tilde_{prefixes,suffixes}, set
2895           to the additional prefixes and suffixes bash wants to pass to the
2896           tilde expansion code (reserved for post-bash-2.05a fix)
2897
2898 aclocal.m4
2899         - add missing `test' in BASH_CHECK_SYS_SIGLIST
2900
2901                                    11/7
2902                                    ----
2903 lib/readline/vi_mode.c
2904         - fix rl_vi_goto_mark to explicitly check that the desired mark is
2905           between 'a' and 'z', since some locales have lowercase letters
2906           outside that range, which could cause a negative subscript
2907
2908 include/chartypes.h
2909         - remove superfluous `#undef ISASCII'
2910
2911 lib/sh/strto[iu]max.c
2912         - changes from Paul Eggert to work around buggy compilers and catch
2913           configuration errors at compile time
2914
2915 aclocal.m4
2916         - new macro, BASH_C_LONG_DOUBLE, identical to AC_C_LONG_DOUBLE but
2917           with a fix for Irix 5.3 (not called, since I'm not sure it's the
2918           right thing to do -- the C standard allows double and long double
2919           to be the same size)
2920
2921 lib/sh/snprintf.c
2922         - only try to write the trailing NUL in vsnprintf_internal if
2923           data->length is >= 0, since if it's not, we probably don't have
2924           a buffer
2925
2926 Makefile.in
2927         - changed RELSTATUS to `release'
2928
2929                                    11/8
2930                                    ----
2931 lib/sh/strtol.c
2932         - make sure chars passed to toupper are cast to unsigned
2933
2934 unwind_prot.c
2935         - change clear_unwind_protect_list to not require a cast from `int'
2936           to `char *'
2937
2938 lib/readline/chardefs.h
2939         - make _rl_digit_p succeed only for ascii digits, since that's what
2940           most callers assume