8 - check return value of fclose() in write_here_document() for error
9 returns; don't just rely on fwrite() failing
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
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)
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
30 - add -DBROKEN_DIRENT_D_INO to interix LOCAL_CFLAGS
33 - if BROKEN_DIRENT_D_INO is defined, define REAL_DIR_ENTRY to 1
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'
41 - update copyright date to 2001
44 - prog_complete_return needs to take a `const char *' as its first
46 - history_completion_generator needs to take a `const char *' as
47 its first argument, and `text' needs to be a `const char *'
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
57 - produce an error message in redirection_error for out-of-range
59 - change allocation strategy in redirection_error so we don't have to
60 malloc scratch memory if redirection_expand() fails
63 - added defines for `running' member of a struct process
66 - fix legal_number to return 0 when strtol(3) reports overflow or
70 - changed read_token_word to call legal_number instead of atoi(3)
73 - return -1/EBADF from close_buffered_fd if fd is < 0
76 - fixed bogus comment about IS_DESCRIPTOR in description of the
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
85 - need to include config.h to get a possible value for
90 lib/readline/doc/rluser.texinfo
91 - corrected a small error in one description of M-DEL
96 - need to initialize `ind' before calls to RESIZE_MALLOCED_BUFFER
100 - new file, prints bash version information
103 - rules for building bashversion and linking it to version.o
108 - new file with HOSTTYPE, OSTYPE, MACHTYPE, etc. defines from
111 variables.h, version.c
112 - include conftypes.h
115 - new file, contains define for PATCHLEVEL. Doing away with the old
116 scheme of having the information in configure.in
119 - include patchlevel.h
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
127 - don't put PATCHLEVEL define into version.h, but accept and ignore
129 - take a new -S srcdir option
130 - find the patch level by parsing it out of patchlevel.h
133 - hard-code BASHVERS assignment instead of reading it from a file
134 - remove BASHPATCH; don't substitute it
136 _distribution,_patchlevel
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
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)
154 - added CMD_COMMAND_BUILTIN for use by the `command' builtin and the
155 code in execute_cmd.c
158 - add CMD_COMMAND_BUILTIN to the created command's flags
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
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
173 - remove code that defines or undefines `const' and `inline'
174 - change the __STRING macro to be defined depending on the value
178 - change the __STRING macro to be defined depending on the value
181 lib/readline/{readline,rlprivate}.h
182 - moved rl_get_termcap to readline.h, making it a public function
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
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
194 lib/readline/doc/rltech.texinfo
195 - documented rl_get_termcap
196 - documented rl_readline_version
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)
203 - added FEVAL_REGFILE (file must be a regular file) to accepted
205 - fc_execute_file() adds FEVAL_REGFILE to _evalfile flags. This
206 means that startup files and files read with `.' no longer need
212 lib/termcap/Makefile.in
213 - fix target for installed termcap library (normally unused)
215 lib/tilde/Makefile.in
216 - fix install target to install in $(libdir) (normally unused)
219 - don't make $(man3dir) since there's nothing installed there
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)
229 - new function int get_exitstat(WORD_LIST *list) returns an eight-bit
230 exit status value for use in return, exit, logout builtins
233 - extern declaration for get_exitstat()
235 builtins/{exit,return}.def
236 - call get_exitstat where appropriate
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
249 - change var in add_host_name to type `size_t' for passing to xrealloc
254 - change restore_signal_mask to accept a sigset_t *, since a sigset_t
255 may not fit into a pointer, change call
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
263 - use a #define LENMODS containing the length modifiers instead of
264 testing against each possible modifier character, save any mod
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
270 configure.in,config.h.in
271 - call AC_C_LONG_DOUBLE to check for `long double'; define
272 HAVE_LONG_DOUBLE if supported
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
279 {make_cmd,execute_cmd,shell,subst,trap,variables,input,unwind_prot,test,
281 - removed some declared-but-unused variables
283 builtins/{cd,enable,fc,set,setattr,type,umask,printf,complete}.def
284 - removed some declared-but-unused variables
286 lib/sh/{zread,netopen}.c
287 - removed some declared-but-unused variables
290 - in execute_arith_command, use a long variable to hold the result
291 of evalexp(), since that's what it returns
293 builtins/evalstring.c
294 - make cat_file return -1 on a read or write error
297 - make merge_stringlists() return the right value
302 - remove typo that caused empty declaration (;;)
305 - fix yyerror() to accept a single string argument; fix callers
308 - cast pointer to long instead of int when printing message with
309 internal_warning() in run_pending_traps()
312 - fix process_substitute to handle stdin being closed
315 - change `while' to `if' in and() and or(), since the loop isn't
316 actually performed -- there's an unconditional `return' in the
318 - check for integer overflow of arguments to `-t'
321 - change _getserv() to reject negative port/service numbers
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
328 builtins/{jobs,kill,wait}.def
329 - use legal_number instead of atoi when converting strings to pid_t;
330 check for numeric overflow
333 - fix for cygwin in b_fill_buffer -- off-by-one error when checking
334 buffer for \r\n termination
337 - new #define INT_STRLEN_BOUND(t), computes max length of string
338 representing integer value of type T, possibly including a sign
340 - include <limits.h> if it's present
342 {execute_cmd,findcmd,test}.c
343 - don't include <limits.h>, since general.h does it now
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
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'
354 - FD_BITMAP_DEFAULT_SIZE is now 32, not 32L
355 - new_fd_bitmap takes an `int' size parameter, not a `long'
358 - change prototype for new_fd_bitmap()
361 - fix test_stat to check for overflow when parsing the integer file
362 descriptor number; return ENOENT instead of EBADF for files that
366 - don't discard the upper 32 bits of the random value, if present
369 - use the same INT_STRLEN_BOUND mechanism to decide how much space to
370 allocated in sh_set_lines_and_columns
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
382 - call RL_LIB_READLINE_VERSION instead of support/rlvers.sh
385 - fix execute_shell_script and the WHITECHAR and STRINGCHAR macros
386 to check array bounds before indexing into the sample string
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
394 - use unwind_protect_var on last_made_pid in run_sigchld_trap
397 - use unwind_protect_var on rl_outstream
400 - rework print_rlimtype to use INT_STRLEN_BOUND and handle the
401 most negative number correctly
404 - `tokval' should have been a `long', since all arithmetic is done
408 - consolidate tests for valid history position in one block to
409 avoid duplicate code and strings
412 - fix check for overflow when setting limit to work when int is 32
413 bits and RLIMTYPE is 64
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'
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
427 - recognize `set [-+]o nolog' if HISTORY is defined
430 - new variable `dont_save_function_defs', set by `set -o nolog';
434 - the `dest' member of a REDIRECTEE is now an `int'
437 - changed uses of `redir.test' (where redir is a REDIRECTEE) since
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
445 - include <config.h> if HAVE_CONFIG_H is defined
446 - don't mess around with `const', rely on configure
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
455 - new extern declaration for set_login_shell
458 - call set_login_shell after setting value of login_shell (in
459 main() and set_shell_name())
462 - added new `\A' prompt string escape sequence: time in 24-hour
465 configure.in, config.h.in
466 - check for <grp.h>, define HAVE_GRP_H if found
468 builtins/complete.def
469 - add new `-A group/-g' option to complete group names
472 - new define for CA_GROUP, used with group name completion
475 - add code to support CA_GROUP group name completion
478 - new function, bash_groupname_completion_function(), supports
479 programmable completion of group names
482 - extern declaration for bash_groupname_completion_function
485 - new inputrc variable, `match-hidden-files', controls completion
486 matching files beginning with a `.' (on Unix)
488 lib/readline/complete.c
489 - new variable, _rl_match_hidden_files, mirrors `match-hidden-files'
492 lib/readline/rlprivate.h
493 - extern declaration for _rl_match_hidden_files
496 - new `-t' option to list hash values for each filename argument
499 - alarm(3) takes an `unsigned int' argument, not int
500 - check for arithmetic overflow with -t and -n options
503 - check for read error before doing \r\n translation on cygnus in
505 - reset bp->b_used to 0 instead of leaving it at -1 on read error
509 - new functions, shopt_setopt(name, mode) and
510 shopt_listopt(name, mode) to give the rest of the shell an easy
514 - extern declarations for shopt_setopt and shopt_listopt
517 - new invocation options -O and +O, to list or set/unset shopt
518 options like +o/-o sets and unsets `set -o' options
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
528 - add text to `Invoking Bash' section defining a login shell; text
531 doc/bash.1, lib/readline/doc/rluser.texinfo
532 - documented new complete/compgen `-A group/-g' option
534 lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
535 - documented new `match-hidden-files' inputrc variable
540 - fix AC_CHECK_PROG(ar, ...)
541 - add AC_CHECK_TYPE for ssize_t
544 - new #undef for ssize_t
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
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
553 - lind and lused are now size_t, since they index into a buffer
554 - set lused to 0 on read error
557 - change second argument to type `char *', since ISO C says you have
558 to pass a `char *' to `write'
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
566 - b_used and b_inputp members ofr struct BSTREAM are now size_t
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
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
583 - the number of chars read with zread in read_comsub should be
584 assigned to a variable of type ssize_t
587 - instead of casting to unsigned char * in addcstr, use a variable
588 of type unsigned char and let the compiler do the work
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)
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
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
604 builtins/evalstring.c
605 - remove extern declarations for zwrite and run_trap_cleanup; they're
607 - prototype cat_file forward declaration
610 - remove -I$(includedir) from INCLUDES and SUBDIR_INCLUDES
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
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
635 Makefile.in, builtins/Makefile.in
636 - have configure substitute RL_INCLUDEDIR, set RL_INCLUDEDIR variable
639 - updated description of --with-installed-readline configure option
642 - moved QSFUNC typedef here from builtins/common.c
644 {alias,bashline,variables,lib/sh/stringvec}.c
645 - cast fourth argument to qsort to (QSFUNC *)
648 - prototype forward declaration of qsort_alias_compare
651 - include <glob/glob.h> for extern declaration of glob_pattern_p
652 - remove extern declaration of history_delimiting_chars; it's now
654 - prototype forward declarations of histignore_item_func,
655 maybe_add_history, and bash_add_history
658 - remove extern declaration for sh_backslash_quote; it's in externs.h
661 - remove extern declaration for extract_command_subst; it's in subst.h
662 - prototype forward declarations for expand_amble, array_concat, and
666 - prototype extern declaration of give_terminal_to, fix bad call
668 {execute_cmd,expr,findcmd,jobs,mailcheck,nojobs,pcomplete,print_cmd,redir,
670 - prototype all static forward function declarations
673 - changed some function parameters to `const char *' to avoid discarding
677 - make_bare_word, make_word_flags, and make_word now take a
678 `const char *' string argument
681 - changed extern declarations for make_bare_word and make_word
684 - cprintf now takes a `const char *' as its first argument, like
686 - the conditional define for xprintf should have been HAVE_VPRINTF,
690 - in isnetconn(), the return value of sizeof() is size_t
693 - add inclusion of stddef.h if STDC_HEADERS is defined to 1 in
697 - add a call to BASH_CHECK_TYPE for socklen_t (type of third argument
703 - make `useq' a char array to pass to rl_macro_bind in
706 lib/readline/{{bind,isearch}.c,rlprivate.h}
707 - _rl_isearch_terminators is now a char *, not unsigned char *
709 {subst,variables,lib/sh/tmpfile}.c
710 - dollar_dollar_pid is now a `pid_t' instead of `int'
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
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()
721 - don't cast last_asynchronous_pid when passing to itos()
724 - prototype all static forward function declarations
728 {test,trap,variables}.c
729 - prototype all static forward function declarations
732 - free_variable_hash_data() now takes a PTR_T, a `generic pointer'
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
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
743 lib/readline/{histsearch,input,kill,rltty,search,vi_mode}.c
744 - prototype all static forward function declarations
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
752 configure.in,config.h.in
753 - check for vsnprintf, define HAVE_VSNPRINTF if found
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
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
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
779 - change to use strerror() for error message when kill(2) fails
782 - new macro, BASH_C_LONG_LONG, check for `long long'
784 configure.in, config.h.in
785 - call BASH_C_LONG_LONG, define HAVE_LONG_LONG if found
788 - new file, with implementations of snprintf, vsnprintf, asprintf,
789 and vasprintf, derived from inetutils version
791 Makefile.in, lib/sh/Makefile.in
792 - add snprintf.c/snprintf.o
794 configure.in, config.h.in
795 - add checks for snprintf, asprintf, vasprintf, with appropriate
798 lib/readline/{rldefs,xmalloc}.h, lib/readline/xmalloc.c
799 - xmalloc and xrealloc now take `size_t' arguments, like their bash
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
806 {expr,lib/malloc/malloc,variables,general}.c
807 - fixed calls to itos() by removing casts, etc.
810 - get_dollar_var_value now takes a long, not an int
811 - sub_append_number now takes a long, not an int
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
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
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
834 - array_expand_index now returns an `arrayind_t'
837 - array_subrange now takes arrayind_t arguments, not `int'
838 - dup_array_subrange now uses arrayind_t local variable to do
840 - use long to print array indices in print_element
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
850 - change extern declaration of bind_array_variable
853 - get_numeric_arg now returns a `long', since it usually returns
854 the value of legal_number()
856 builtins/{shift,break}.def
857 - use long variables for the return value of get_numeric_arg
860 - convert string argument to int only if it's in range
863 - set_dirstack_element and get_dirstack_element now take `long'
865 - get_dirstack_index now takes a `long' index argument, since it's
866 passed the converted value from legal_number
869 - in print_timeval, don't assume that the number of minutes fits into
870 an int, since it's just seconds/60.
873 - ditto for print_clock_t
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)
886 - new define, BASH_NSIG, all system signals plus special bash traps
888 trap.c, builtins/trap.def
889 - use BASH_NSIG for array bounds and loops where appropriate
892 - change decode_signal to disallow numeric signal numbers above
893 NSIG -- this means you can only reference special traps like
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
903 - add extra "ERR" signal name, value NSIG+1, allocate space for it
904 and write it out in signal_names[]
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
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
920 - add case to call run_error_trap in maybe_call_trap_handler
923 - in execute_command_internal, keep track of ERR trap and call it if
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
929 doc/{bash.1,bashref.texi}
930 - documented new ERR trap
932 tests/{trap.{tests,right},trap2.sub,trap2a.sub}
933 - added ERR trap tests
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
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
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
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)
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
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
980 - removed definition of BASH_LARGE_FILE_SUPPORT
983 - document new `--enable-largefile' configure option
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
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
999 - new function, hash_table_nentries (table), returns the number of
1003 - extern declaration for hash_table_nentries
1006 - configure without bash malloc on openbsd; they claim it needs
1007 eight-bit alignment (which the bash malloc provides, but...)
1012 - only call RESIZE_MALLOCED_BUFFER from strsub() if the replacement
1013 string length is > 0, avoid possible hangs if replacement is null
1016 - don't include input.h; no longer needed
1019 - remove calls to AC_SYS_RESTARTABLE_SYSCALLS and
1020 BASH_SYS_RESTARTABLE_SYSCALLS; the results are no longer used
1023 - remove define for HAVE_RESTARTABLE_SYSCALLS
1026 - removed definition of BASH_SYS_RESTARTABLE_SYSCALLS; no longer used
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
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'
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
1047 - fix the code that processes **(pattern) to short-circuit if the
1048 pattern is ill-formed or lacks a trailing `)' -- this fixes the
1051 Makefile.in, builtins/Makefile.in
1052 - split CCFLAGS into CCFLAGS_FOR_BUILD and CFLAGS, to aid in
1054 - build programs that use $(CC_FOR_BUILD) using $(CCFLAGS_FOR_BUILD)
1056 configure.in, config.h.in
1057 - check for getaddrinfo(3), define HAVE_GETADDRINFO if found
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
1068 - don't source ~/.bash_logout if subshell_environment is non-zero
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
1080 - in execute_in_subshell, make sure a command of type cm_subshell
1081 inherits its `enclosing' command's CMD_IGNORE_RETURN flag
1084 - in maybe_make_export_env, don't allow restricted shells to put
1085 exported functions in the export environment
1090 - renamed old fnmatch.h
1091 - changed guard #ifdef to _STRMATCH_H
1092 - include system <fnmatch.h> if HAVE_LIBC_FNM_EXTMATCH is defined
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)
1101 - include "strmatch.h"
1102 - fnmatch -> strmatch
1104 Makefile.in, lib/glob/Makefile.in
1105 - fnmatch -> strmatch
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
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
1121 lib/readline/isearch.c
1122 - the last isearch string is now remembered in a new static variable,
1124 - if ^R^R is typed, readline now searches for the remembered isearch
1125 string, if one exists
1130 - extern declaration for completions_to_stringlist()
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
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)
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
1155 - new check for FNM_EXTMATCH being defined in <fnmatch.h>, as Ullrich
1156 Drepper intends to do for new versions of GNU libc
1159 - new definition for HAVE_LIBC_FNM_EXTMATCH
1162 - check for fnmatch, but don't define anything in config.h
1163 - call BASH_FUNC_FNMATCH_EXTMATCH to check for FNM_EXTMATCH
1168 - remove bogus extern declaration for xmalloc()
1170 - add prototype declarations for all extern function declarations
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
1176 include/ansi_stdlib.h
1177 - extern declarations for malloc and realloc have them return PTR_T
1180 - new file, with extern declarations for functions in xmalloc.c
1183 - removed extern declarations for functions in xmalloc.c
1186 Makefile.in,builtins/Makefile.in
1187 - update dependencies to include xmalloc.h
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,
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
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
1209 lib/sh/{netopen,setlinebuf,shquote,snprintf}.c, lib/tilde/tilde.c
1210 - include xmalloc.h, remove extern declaration of xmalloc
1212 lib/readline/xmalloc.h
1213 - xmalloc and xrealloc should return PTR_T
1215 lib/readline/rldefs.h
1216 - don't include an extern declaration for xmalloc
1221 - fixed up commented-out stanzas for HP's unbundled C compiler on
1225 - force the subject to be changed from the default
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
1234 - fix possible infinite recursion problem with null pattern in
1238 - new function copy_hash_table to copy a hash table using a caller-
1239 supplied function to copy item data (defaults to savestring())
1242 - new extern declaration for copy_hash_table
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
1253 - new file, for miscellaneous array functions
1256 - new file, extern declarations for functions in arrayfunc.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
1266 - include arrayfunc.h after variables.h
1269 - remove above extern function declarations moved to arrayfunc.h
1270 - add extern declaration for var_lookup
1273 - add arrayfunc.c, arrayfunc.h in appropriate places
1274 - add arrayfunc.h to dependencies
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
1282 - extern declarations for functions above moved to arrayfunc.h
1285 - extern declarations for above functions from subst.c
1288 - string_list_dollar_star and string_list_dollar_at are now global
1290 - quote_escapes is now a global function
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
1301 - change array_expand_index to call expand_string_to_string instead
1302 of maybe_expand_string
1307 - in execute_env_file, call expand_string_unsplit_to_string
1310 - in check_mail, call expand_string_to_string
1313 - in assign_in_env, call expand_string_unsplit_to_string
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
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
1329 arrayfunc.[ch], subst.c, builtins/{declare,read}.def
1330 - do_array_element_assignment -> assign_array_element
1335 - changed `for' command grammar to allow missing word list after `IN'
1336 token, like latest POSIX drafts require
1339 - in sh_mktmpname(), check for filenum == 0 and init to non-zero number
1340 in this case. it can happen on arithmetic overflow
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
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'
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
1359 lib/tilde/tilde.[ch]
1360 - changed __P to PARAMS
1362 {Makefile,configure}.in
1363 - changed the version number to 2.05a
1364 - changed the release status to `alpha1'
1369 - support for building shared libraries on Darwin/MacOS X
1372 - extern declaration for strsignal() to compensate for lack of
1373 a definition in some system include files
1376 - remove casts from strsignal() calls
1378 [bash-2.05a-alpha1 frozen]
1382 [bash-2.05a-alpha1 released]
1387 - fix eval_arith_for_expr to handle the case where the expanded
1388 word list is NULL, returning 0 in this case
1391 - in print_function_def, make sure that func_redirects is assigned
1392 a value before being used
1397 - include <ctype.h> for definition of isalpha()
1400 - add prototypes for extern function declarations
1403 - include bashhist.h for extern function declarations
1406 - include <unistd.h> if HAVE_UNISTD_H is defined in config.h
1409 - include test.h for extern function declarations
1412 - change extern declaration for setlinebuf to sh_setlinebuf
1415 - include <glob/glob.h> for extern function declarations
1418 - add function prototypes for all of the sv_* functions
1421 - add extern declarations for set_shellopts() and parse_shellopts()
1422 from builtins/set.def
1425 - include "hashcmd.h" for extern declaration for flush_hashed_filenames
1426 - include "pathexp.h" for extern declaration for setup_glob_ignore
1429 - cast to `long' instead of `int' in memalign for 64-bit machines
1432 - changed printf escape sequences used to print pointers to %p
1435 - include "xmalloc.h" for extern function declaration
1438 - add function prototypes to extern declarations for getc_with_restart
1439 and ungetc_with_restart
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 *'
1447 - start of a set of function pointer typedefs like those in
1448 lib/readline/rltypedefs.h
1451 - second paramter to flush_hash_table is now an `sh_free_func_t *'
1454 - parameter to reset_or_restore_signal_handlers is now an
1455 `sh_resetsig_func_t *'
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 *'
1464 - `j_cleanup' member of a JOB is now an `sh_vptrfunc_t *'
1467 - map_over_aliases now takes an `sh_alias_map_func_t *'
1468 - free_alias_data now takes a `PTR_T'
1471 - function pointer argument to ignore_globbed_names is now an
1472 `sh_ignore_func_t *'
1475 - function pointer argument to _ignore_completion_names is now an
1476 `sh_ignore_func_t *'
1478 pathexp.h,{bashhist,bashline.c
1479 - `item_func' member of a `struct ignorevar' is now an
1480 `sh_iv_item_func_t *'
1483 - `errfunc' is now an `sh_vmsg_func_t *'
1486 - map_over_job now takes an `sh_job_map_func_t *' as its first argument
1489 - function pointer argument to array_walk is now an
1490 `sh_ae_map_func_t *'
1493 - tilde_expansion_preexpansion_hook has type `tilde_hook_func_t *',
1494 and so the assignment in tilde_initialize doesn't need a cast
1497 - map_over_words now takes an `sh_icpfunc_t *' as its second argument
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
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
1512 builtins/mkbuiltins.c
1513 - make the extern function definitions written to builtext.h have
1514 prototypes with __P((...))
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((...))
1521 - the `function' member of a struct builtin is now of type
1522 `sh_builtin_func_t *'
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 *'
1530 builtins/exit.def, {execute_cmd,jobs,nojobs,variables}.c, parse.y
1531 - changed all declarations of last_shell_builtin and this_shell_builtin
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 *'
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 *)
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
1550 - set_func member of shopt_vars is now of type `shopt_set_func_t *'
1553 - enable_hostname_completion now returns `int' (the old value of
1554 perform_hostname_completion)
1556 [The only use of Function and VFunction now is for unwind-protects]
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
1566 {general,mailcheck}.c, lib/sh/{pathcanon,pathphys}.c
1567 - don't include maxpath.h directly; it's already included by shell.h
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
1575 - add mailstat.c and mailstat.o in the appropriate places
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
1582 lib/malloc/shmalloc.h
1583 - new file, extern declarations for allocation wrapper functions for
1584 use by the shell (and others, I guess)
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
1593 lib/malloc/gmalloc.c
1594 - removed; no longer part of distribution
1596 lib/malloc/Makefile.in
1597 - removed references to gmalloc.[co]
1599 configure.in, doc/bashref.texi
1600 - removed references to `--with-glibc-malloc' configure option
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
1609 lib/malloc/imalloc.h
1610 - new file, some internal malloc definitions
1613 - new file, definitions for malloc statistics structs and functions
1616 - new file, malloc tracing functions (currently just print messages
1617 to stderr), code is #ifdef MALLOC_TRACE
1620 - new file, moved malloc stats code from malloc.c to here
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
1628 lib/malloc/Makefile.in, Makefile.in
1629 - added {imalloc,mstats}.h, {trace,stats}.c
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 $?
1637 - a couple more arrayind_t fixes from Paul Eggert
1640 - remove redundant check for wait3(2)
1643 - fixed a typo (stdin_redirs -> stdin_redirects)
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
1653 - fix typo in forward declaration for `initialize_subshell'
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
1660 builtins/evalfile.c, shell.c
1661 - buffer passed to check_binary_file is char, not unsigned char
1664 - fix extern declaration for yyerror()
1665 - yyerror now takes a `const char *' as first arg
1668 - fixes to printf-style functions to handle pids wider than an int
1670 lib/readline/{isearch,vi_mode}.c
1671 - fix call to rl_message in rl_display_search (remove extra arg)
1674 - fix missing argument to builtin_error in make_local_variable
1676 builtins/getopts.def
1677 - since getopts takes no options, change while loop calling
1678 internal_getopts to a simple `if' check
1681 - since printf takes no options, change while loop calling
1682 internal_getopts to a simple `if' check
1685 - remove _SET_BELL macro, expand code inline
1687 lib/readline/input.c
1688 - change _rl_input_available to use either select or FIONREAD,
1691 lib/readline/readline.c
1692 - fix rl_digit_loop to remove unreachable code at end of loop
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
1699 - remove #ifdef'd code that allowed `return' to terminate a select
1703 - remove some extraneous tests from strlong()
1706 - arrayind_t is now a long, since shell arithmetic is performed as
1708 - remove second declaration of new_array_element
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
1715 - remove `foundmod', since its value mirrors `modchar != 0'
1716 - include "common.h" for builtin_{error,usage} declarations
1718 Makefile.in,builtins/Makefile.in
1719 - updated some dependencies due to new include files
1722 - include "execute_cmd.h" for declaration of execute_shell_function
1725 - include <stdio.h> for printf
1726 - include "builtins/common.h" for builtin_error declaration
1728 builtins/evalstring.c
1729 - include "../trap.h" for run_trap_cleanup declaration
1732 - include "common.h" instead of locally declaring builtin_error
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
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()
1746 - add NEED_SH_SETLINEBUF_DECL before including shell.h
1748 lib/readline/callback.c
1749 - include <stdlib.h> or "ansi_stdlib.h" for abort declaration
1752 - remove declaration of throw_to_top_level
1755 - remove unused extern declaration for getopts_reset
1758 - include <shell.h> for legal_number, etc.
1759 - add prototype for inet_aton extern declaration
1762 - include <stdc.h> for __P declaration
1763 - add extern declaration for get_clk_tck
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
1773 - various `char *' version variables are now `const char *'
1776 - add prototype for same_file, bracketed with _POSIXSTAT_H
1777 #ifdef, since that's what include/posixstat.h defines
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
1784 - removed extern declaration of yyparse; it's in externs.h
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
1792 {bashhist,copy_cmd,make_cmd,hashlib,mailcheck}.c
1793 - added prototypes for static function declarations
1796 - add extern declarations for interactive, interactive_shell,
1797 changed c files with extern declarations
1800 - changed it_init_aliases to avoid shadowing global variable
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
1808 - test for <strings.h>
1811 - add #undef HAVE_STRINGS_H
1814 - change like recommended in autoconf manual
1818 [a date which will live in infamy. prayers for the victims.]
1821 - don't use an absolute index into abuf in mkfmt, use
1822 sizeof(abuf) to compute last index
1825 - fix read_octal to do a better job of detecting overflow while
1826 iterating through the string
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)
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)
1840 - changed use of `modchar' to handle more than a single modifier
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.
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
1854 - include "posixtime.h" instead of <sys/time.h>
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
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
1867 xmalloc.c, lib/malloc/malloc.c
1868 - change check of SBRK_DECLARED to HAVE_SBRK_DECL
1871 - change PRINTF_DECLARED to HAVE_DECL_PRINTF
1873 builtins/evalstring.c, builtins/common.h
1874 - parse_and_execute now takes a `const char *' as its second argument
1877 - with_input_from_* functions now take a `const char *' as their
1879 - init_yy_io now takes a `const char *' as its fourth argument
1882 - parse_string_to_word_list now takes a `const char *' as its second
1885 tests/builtins.right
1886 - change output to account for extra digit in umask output
1889 - free_progcomp now takes a PTR_T argument
1891 builtins/bashgetopt.h
1893 - add prototypes to extern declarations
1896 - add prototypes to static function declarations
1898 builtins/{fc,umask,wait}.def, builtins/{bashgetopt,common}.c
1899 - include <ctype.h> for isdigit macro (referenced by `digit(x)')
1901 lib/readline/complete.c
1902 - added more static function declarations with prototypes
1907 - use `^' instead of `*' in sh_mktmpname to make filenames a bit
1910 include/stdc.h,lib/readline/rldstdc.h
1911 - add __attribute__ definition
1914 - add printf __attribute__ to declaration of builtin_error
1917 - add printf __attribute__ to declaration of programming_error,
1918 report_error, parser_error, fatal_error, sys_error, internal_error,
1921 lib/readline/readline.h
1922 - add printf __attribute__ to declaration of rl_message
1925 - add printf __attribute__ to declaration of debug_printf
1928 - add printf __attribute__ to declarations of cprintf, xprintf
1931 - new file, includes <ctype.h> and defines macros that check for
1932 safe (ascii) arguments before calling the regular ctype macros
1934 {alias,bashline,execute_cmd,expr,findcmd,general,locale,mksyntax,stringlib,subst,variables}.c
1936 builtins/{bashgetopt,common}.c
1937 builtins/{fc,printf,umask,wait}.def
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>
1943 Makefile.in,{builtins,lib/{glob,sh}}/Makefile.in
1944 - update dependencies to include chartypes.h
1947 - use `unsigned char' instead of `char' to pass to ctype.h functions
1950 - check for '0' <= host[0] <= '9' in _getaddr instead of using
1953 subst.c,lib/sh/shquote.c
1954 - change array subscripts into sh_syntaxtab from `char' to
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
1965 - remove definition of isletter, ISOCTAL, digit, digit_value
1966 - change legal_variable_starter and legal_variable_char to use
1968 - change ABSPATH to use chartypes.h macros
1971 - change to use Paul Eggert's FUNCTION_FOR_MACRO define to define
1972 function replacements for macros in chardefs.h
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
1980 lib/readline/{bind,complete,nls}.c
1981 - change to use some of the new macros from chardefs.h
1983 lib/readline/vi_mode.c
1984 - isident -> _rl_isident
1985 - remove local defines of macros in chardefs.h
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
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'
2022 doc/{bash.1,bashref.texi}
2023 - documented new `hard' and `soft' limit arguments to `ulimit'
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
2031 - removed cast from first argument to find_hash_item in find_compspec
2034 - absolute_program now takes a `const char *' as its argument
2035 - absolute_pathname now takes a `const char *' as its argument
2038 - glob_pattern_p now takes a `const char *' as its argument
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
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
2055 lib/sh/makepath.c, externs.h
2056 - changed sh_makepath so it takes `const char *' for its first
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
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
2076 - skipsubscript now takes a `const char *' as its argument
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
2084 builtins/{let,pushd}.def,{execute_cmd,expr}.c
2085 - change some 0L constants to 0 and let the compiler sort it out
2090 - alloca now takes a `size_t' argument
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
2101 - do_assignment_internal, do_assignment, and do_assignment_no_expand
2102 now take a `const char *' as their first argument
2105 - a `sh_assign_func_t' is now a function taking a `const char *' and
2109 - free_filename_data now takes a `PTR_T' argument to agree with the
2110 typedef for `sh_free_func_t'
2113 - use TYPE_MAXIMUM define like strtol.c instead of huge constants
2118 - don't bother to compile the bulk of the body unless HAVE_SNPRINTF
2119 or HAVE_ASPRINTF is not defined
2124 - ignore `set -n' if the shell was started interactively
2126 lib/readline/readline.c
2127 - initialize readline_echoing_p to 0; let the terminal-specific code
2128 in rltty.c set it appropriately
2131 - changed internal_memalign() slightly to avoid compiler warnings about
2132 negating an unsigned variable (-alignment -> (~alignment + 1))
2136 lib/readline/readline.c
2137 - changed rl_newline to set _rl_history_saved_point appropriately
2138 for the {previous,next}_history code
2140 lib/readline/rlprivate.h
2141 - extern declaration for _rl_history_preserve_point
2144 - new bindable variable, `history-preserve-point', sets value of
2145 _rl_history_preserve_point
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
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())
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
2177 - changed BASH_TYPE_BITS64_T to check `long long' before `long', but
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
2189 - fixed time_command() to use `time_t' instead of `long' to hold
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
2197 - fixed print_timeval to make `minutes' a `long' and make its
2198 structure identical to print_clock_t
2201 - changed redirection_error to check for EBADF and use the file
2202 descriptor being redirected from in the error message if it
2206 - changed release status to `beta1'
2209 - added a few ASCII symbols to the posix_collsyms array
2214 - fixed typo in BASH_TYPE_BITS64_T
2217 - added check for unsigned chars with AC_C_CHAR_UNSIGNED
2220 - added PROTOTYPES and __CHAR_UNSIGNED__ #defines
2223 - if CHAR_MAX is not define by <limits.h>, provide a definition
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'
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
2235 - changed rl_translate_keyseq() to process at most two hex digits
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
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
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
2261 - call AC_CHECK_DECLS([strsignal])
2264 - add HAVE_DECL_STRSIGNAL
2267 - make declaration of strsignal() dependent on !HAVE_DECL_STRSIGNAL
2272 - upgraded to version 1.64
2277 - added check for `long long' to BASH_TYPE_PTRDIFF_T
2280 - replaced call to BASH_HAVE_TIOCGWINSZ with AC_HEADER_TIOCGWINSZ
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, ...)
2288 [bash-2.05a-beta1 frozen]
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)
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
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
2311 - new file, converts unsigned long to string. hooks for `unsigned
2312 long long' in the future. unused as yet
2316 lib/readline/rltty.c
2317 - change the SET_SPECIAL macro to avoid possible (but highly
2318 unlikely) negative array subscripts
2321 - add __attribute__ to extern declaration of itrace (even though the
2322 function isn't defined in released versions of bash)
2325 - include <strings.h> if HAVE_STRINGS_H is defined, to get any extra
2326 function declarations provided therein
2329 - fix typo in forward declaration for copy_arith_for_command
2332 - make the accumulators in _print_malloc_stats be `unsigned long'
2336 - add `__noreturn__' gcc attribute to exit_shell and jump_to_top_level
2339 lib/sh/mailstat.c, support/bashversion.c
2340 - include <bashansi.h> for some string function declarations
2342 lib/malloc/shmalloc.h
2343 - added extern declarations of functions that do malloc debugging
2345 lib/readline/{isearch,readline,vi_mode}.c
2346 - make sure we index into _rl_keymap with a non-negative index
2349 - make sure we index into sh_syntaxtab with a non-negative index
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'
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
2366 - replace ISASCII with IN_CTYPE_DOMAIN like other GNU software
2368 lib/sh/{strcasecmp,strtod,strtol}.c
2369 - don't pass possibly-negative characters to tolower() or toupper()
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
2377 lib/readline/{display,readline}.c, mksyntax.c
2378 - use new ISPRINT macro instead of isprint()
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
2385 - the unused put_gnu_argv_flags_into_env now takes a `long' pid
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
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
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
2406 lib/sh/{fmtullong,strtoull.c}
2407 - new files, more support for `long long'
2409 Makefile.in, lib/sh/Makefile.in
2410 - make fmtullong.o and strtoull.o part of libsh
2413 - remove local copy of fmtlong; use fmtulong instead
2414 - new functions: uitos, uinttostr work on `unsigned long'
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
2422 - extern declarations for fmtulong, fmtulloing, strtoull
2423 - extern declarations for uitos, uinttostr
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
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)
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
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
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
2455 lib/sh/{strto[iu]max,strtoll}.c, lib/sh/Makefile.in, Makefile.in
2459 - extern declarations for strtoll, strtoimax, strtoumax
2462 - include <bashtypes.h> for size_t
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
2470 - use LIBOBJS to decide whether or not the strto* functions are
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)
2484 - remove rename, getcwd, inet_aton, strpbrk, strcasecmp, strerror,
2485 strtod, vprint from OBJECTS; picked up from LIBOBJS
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
2509 - use SIGLIST_O variable to decide whether or not we need siglist.o
2511 {execute_cmd,subst}.c
2512 - change a couple of instances of ISDIGIT to DIGIT, where we really,
2513 really only want ascii digits
2516 - don't need a declaration for atol()
2522 - new macro, BASH_FUNC_PRINTF_A_FORMAT, checks for printf support
2523 for %a, %A conversion specifiers, defines HAVE_PRINTF_A_FORMAT
2527 - call AC_CHECK_FUNCS for isascii
2528 - call BASH_FUNC_PRINTF_A_FORMAT
2531 - add a define for HAVE_ISASCII
2532 - add a define for HAVE_PRINTF_A_FORMAT
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
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)
2549 - support %a, %A if HAVE_PRINTF_A_FORMAT is defined
2552 - new file, with the TYPE_MAXIMUM stuff that's duplicated in several
2555 lib/sh/{fmtulong,strtol,snprintf}.c
2556 - include <typemax.h> instead of having the definitions in each file
2559 - updated dependencies for typemax.h
2564 - call AC_CHECK_FUNCS on ctype.h functions/macros that bash redefines
2568 - defines for HAVE_IS{ASCII,BLANK,GRAPH,PRINT,SPACE,XDIGIT}
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,
2576 - new function, ansic_shouldquote, returns 1 if argument string
2577 contains non-printing chars that should be quoted with $'...'
2580 - new declaration for ansic_shouldquote()
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
2589 - add `break' to `case '~':' to avoid fallthrough and extra test
2592 - note that in POSIX mode, `set' displays variable values that
2593 include nonprinting characters without quoting, unless they
2594 contain shell metacharacters
2596 builtins/printf.def, lib/sh/snprintf.c
2597 - handle `F' conversion specifier as equivalent to 'f'
2599 parse.y, {nojobs,variables}.c
2600 - a couple of cleanups for when building a minimal configuration
2603 - new function: stop_making_children(), just sets
2604 already_making_children to 0 (like stop_pipeline)
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
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
2622 - new function, bind_var_to_int (char *var, long val)
2625 - extern declaration for bind_var_to_int
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
2632 - pass DEBUG=${DEBUG} down to makes in some subdirectories
2634 {builtins,lib/{glob,sh}}/Makefile.in
2635 - append ${DEBUG} to LOCAL_CFLAGS value, passed by top-level Makefile
2638 - added support for %n format conversion char (number of chars printed
2639 so far from current format string)
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
2668 - changed isnetconn() to check SSH_CLIENT and SSH2_CLIENT only if
2669 SSH_SOURCE_BASHRC is defined in config-top.h
2672 - added a commented-out definition for SSH_SOURCE_BASHRC
2678 - changed RELSTATUS to `rc1' (release candidate 1)
2683 - fixed an `=' vs. `==' typo in set_locale_var when parsing
2686 doc/{bash.1,bashref.texi}
2687 - document what bash does with $POSIXLY_CORRECT
2693 - some mktemp(1) changes
2695 lib/readline/readline.c
2696 - change rl_backward to check for rl_point < 0 and reset to 0 if so
2699 - don't compile in _rl_strpbrk if HAVE_STRPBRK is defined
2701 lib/readline/rlprivate.h
2702 - remove extern declaration of _rl_strpbrk
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
2708 {mailcheck,shell,variables}.c
2709 - make sure to include posixtime.h to get any prototype for time(3)
2712 {array,eval,execute_cmd,mksyntax,subst}.c, parse.y
2715 - a few changes as the result of `gcc -Wall' patches from solar
2718 builtins/read.def, parse.y
2719 - change some calls to free() to xfree()
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
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
2731 builtins/{evalfile.c,{read,wait}.def}, {eval,execute_cmd,shell,test}.c
2732 - use USE_VAR for some variables
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)
2742 - give test_syntax_error(), beyond(), and integer_expected_error()
2743 the `__noreturn__' attribute for gcc
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)
2754 - fixed cprintf to avoid gcc warning about assigning const pointer
2755 to non-const (discarding type qualifier)
2757 {make_cmd,pcomplete,test}.c,parse.y
2758 - some minor changes to shut up gcc warnings
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'
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
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'
2777 - more changes inspired by a patch from solar designer
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)
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
2789 - slight change to RL_LIB_READLINE_VERSION to deal with minor version
2790 numbers with a letter appended (like 4.2a)
2794 doc/{bash.1,bashref.texi}
2795 - slight change to note that only interactive shells resend a SIGHUP
2796 to all jobs before exiting
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
2804 - #define NEED_STRTOIMAX_DECL before including shell.h
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
2814 - fix a problem with $LINENO when executing commands supplied with
2815 the -c invocation option when ONESHOT is defined
2817 [bash-2.05a-rc1 frozen]
2820 - fix the %n conversion to require that the variable name supplied
2821 be a valid shell identifier
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
2831 - if RL_INCLUDEDIR ends up being /usr/include, don't put
2832 -I$(RL_INCLUDEDIR) into CFLAGS
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
2842 - fix function prologues for init_dirstack_var and init_groups_var
2843 to agree with caller (no arguments)
2846 - fix forward function declarations for pipe_read and pipe_close
2849 - removed `inline' attribute from skip_double_quoted because it can
2850 potentially be called recursively
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)
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
2865 - make copy_stringlist return NULL if the STRINGLIST * passed as an
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
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 `>'
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
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)
2899 - add missing `test' in BASH_CHECK_SYS_SIGLIST
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
2909 - remove superfluous `#undef ISASCII'
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
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)
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
2927 - changed RELSTATUS to `release'
2932 - make sure chars passed to toupper are cast to unsigned
2935 - change clear_unwind_protect_list to not require a cast from `int'
2938 lib/readline/chardefs.h
2939 - make _rl_digit_p succeed only for ascii digits, since that's what
2945 - added `ERR' trap and [-+]O invocation option to section listing
2946 differences from the Bourne shell
2950 [bash-2.05a released]
2955 - new define, INLINE, defined as `inline' for gcc and empty otherwise
2958 - make skip_double_quoted, sub_append_string have INLINE attribute
2961 - use BASH_NSIG as upper limit for signal names in signal_name()
2964 - use RL_COMMENT_BEGIN_DEFAULT in output for rl-comment-begin value
2967 - fix sys_error to save value of errno around calls to fprintf
2970 - added rules to create PDF files from postscript and dvi input
2973 - added {article,bash,bashref,rose94}.pdf
2976 - rearranged some `.PD 0' and `.TP' directives so man2html will
2977 handle them better (shouldn't affect groff output)
2980 - small fix to handle quoted string arguments to directives like
2981 `.BR' without mangling the output
2985 {arrayfunc,variables}.c
2986 - changed calling sequence for dynamic array variable `assign'
2987 functions to (SHELL_VAR *self, char *value, arrayind_t ind)
2988 - changed calling sequence for dynamic variable assign functions
2989 to the same as array variable assign_func. Now this can be
2993 - the assign_func member of a `struct variable' is now of type
2994 `sh_var_assign_func_t', which is prototyped
2995 - the dynamic_value member of a `struct variable' is now of type
2996 `sh_var_value_func_t', which is prototyped
2999 - changed to use `sh_var_assign_func_t' and `sh_var_value_func_t'
3002 - when in posix mode, if the new directory name formed by PWD and
3003 the argument passed by the user cannot be canonicalized, and the
3004 -P option has not been supplied, return failure immediately
3005 - if canonicalization failed, but the fallback to the directory
3006 name specified by the user succeeds, reset the current working
3009 lib/readline/{input.c,rlprivate.h}
3010 - renamed rl_unget_char to _rl_unget_char; made library global
3012 lib/readline/{{bind,readline}.c,{keymaps,rlprivate}.h}
3013 - support for `key subsequences'; allows a key sequence and a function
3014 mapped to a subsequence of that key sequence. Primarily to allow
3015 arrow keys to be bound in readline vi insert mode, while preserving
3016 the ESC function to switch to command mode.
3018 lib/readline/{input.c,rlprivate.h}
3019 - new function, _rl_input_queued(T), does a check with select or
3020 FIONREAD with a timeout of `T' (which is generally 0)
3022 lib/readline/readline.c
3023 - change _rl_dispatch_subseq to test for input in the queue if we
3024 get ESC while in vi insertion mode if the keymap entry type for
3025 ESC is ISKMAP. If _rl_input_queued returns non-zero, we assume
3026 that an arrow key sequence has been pressed and go ahead with the
3027 subsequence. If it returns zero, we assume that the user pressed
3028 ESC to switch into command mode, and dispatch to that right away.
3029 This avoids forcing the user to press another key before switching
3034 lib/readline/readline.c
3035 - bind common arrow key sequences in vi insertion keymap
3037 lib/readline/terminal.c
3038 - bind termcap definition's arrow keys in vi insertion keymap
3041 - check for rl_vi_movement_mode in _rl_bind_if_unbound, so
3042 binding the arrow keys can work
3044 lib/readline/readline.c
3045 - since _rl_bind_if_unbound does the check of what's currently
3046 bound to the key sequence, the check in bind_arrow_keys_internal
3048 - bind_arrow_keys_internal now takes a Keymap argument and handles
3049 saving and restoring _rl_keymap; changed bind_arrow_keys
3053 - fix from Paul Eggert to substitute the nearest history number in
3054 range if an out-of-range value is supplied. POSIX requires this
3057 - fix from Corrina Vinschen for the special `cygdrive' prefix on
3061 - split the history adding code into more pieces:
3062 check_history_control (char *line) checks LINE against the value
3063 of HISTCONTROL, returning 1 if LINE should be saved and 0 if not
3065 check_add_history (char *line) calls check_history_control and
3066 history_should_ignore (line) and saves the line with
3067 bash_add_history if the checks indicate that it should be saved
3069 maybe_add_history just calls check_add_history to set the value
3073 - extern declaration for check_add_history()
3076 - don't call load_history() from the interactive shell startup
3077 code if history_lines_this_session is > 0, indicating that we've
3078 already saved some lines in the history and that we probably
3079 don't want to overwrite them
3081 builtins/history.def
3082 - call check_add_history from push_history, so `history -s xx'
3083 works even when in a compound command whose first line has not
3084 been saved. (Caveat: in a compound command when the first
3085 line has been saved, the line supplied to history -s will become
3086 part of the compound command's history entry. Of course, the
3087 delete_history call could remove the compound command from the
3091 - use sh_makepath instead of xmalloc/sprintf in
3092 command_word_completion_function
3094 lib/readline/complete.c
3095 - get_y_or_n now takes an int FOR_PAGER argument; caller changed
3096 If FOR_PAGER is non-zero, get_y_or_n returns appropriate values
3097 for a more-like pager: `newline' or `return' return 2; `q' or
3099 - there is now a mini internal more-like pager for displaying a
3100 list of completions that exceeds the screen height (new function
3101 _rl_internal_pager, called from rl_display_match_list)
3106 - new flag, W_TILDEEXP, says to do tilde expansion on an
3110 - fix_assignment_words now sets W_TILDEEXP for assignment word
3111 arguments to `assignment builtins'
3114 - bash_tilde_expand now takes a second argument indicating whether
3115 or not it's being invoked in an `assignment context'
3118 - change extern declaration for bash_tilde_expand
3120 {bashline,execute_cmd,findcmd,general,variables}.c
3123 - fix callers of bash_tilde_expand appropriately
3126 - fix callers of bash_tilde_expansion appropriately
3127 - add (currently commented-out) code that would tilde expand assignment
3128 statement arguments to assignment builtins (W_TILDEEXP flag set)
3129 even when the shell is in posix mode
3132 - fix attempt_shell_completion to turn off
3133 rl_filename_completion_desired when doing command name completion,
3134 so no slash gets appended to the name if there happens to be a
3135 directory with the same name in the current directory
3139 lib/readline/rltech.texinfo
3140 - a couple of additions to the rl_stuff_char description
3143 - turn off echo_input_at_read in parse_string_to_word_list, so `set -v'
3144 doesn't give extra lines of output when doing compound array
3148 - fix split_at_delims to handle skipping over a `\n' if it's a
3149 delimiter (use spctabnl(c) instead of whitespace(c))
3153 support/config.{guess,sub}
3154 - updated (with bash changes) to latest version from gnu.org
3157 - add prototype for set_signal_handler declaration
3159 builtins/setattr.def
3160 - add prototype to extern declaration of declare_builtin
3163 - add no_options call, since times takes no options
3166 - add prototypes to forward declarations for midist and spdist
3169 - add explicit int return type to ansic_shouldquote declaration
3171 lib/readline/rldefs.h, lib/readline/{macro,readline,util,undo}.c
3172 - move define for SWAP to rldefs.h, removed from various C files
3174 lib/readline/vi_mode.c
3175 - removed define for exchange(), changed to use SWAP instead
3178 - added some static forward function declarations
3179 - find_boolean_var, find_string_var now take a `const char *' argument
3181 lib/readline/signals.c
3182 - added static forward declaration for rl_maybe_set_sighandler
3184 lib/readline/readline.c
3185 - add some common key bindings for the HOME and END keys in
3186 bind_arrow_keys_internal
3188 lib/readline/terminal.c
3189 - fetch the `@7' termcap string; it's sent by the END key
3190 - attempt to bind the terminal's END key to rl_end_of_line in
3191 bind_termcap_arrow_keys; I don't know why I was using `kH'
3195 - remove `case', `for', `if', `until', `while' from NAME section;
3196 those are not shell builtins
3201 - new function, find_token_in_alist, takes a token value and an
3202 ALIST argument, and returns the string correspoinding to the
3203 token if found in the alist
3206 - new extern declaration for find_token_in_alist()
3209 - string_list_internal is no longer static
3212 - new extern declaration for string_list_internal()
3215 - new alist array of other tokens returned by read_token which are
3216 not reserved words in word_token_alist[]
3217 - reworked error reporting: new functions print_offending_line,
3218 which prints the line containing the syntax error,
3219 error_token_from_token, which takes the current token and tries to
3220 figure out its textual representation, and error_token_from_text,
3221 which does the old job of finding the bad token by analyzing the
3222 text of shell_input_line at the current index
3223 - report_syntax_error now tries to figure out the token that caused
3224 the syntax error by first looking at current_token and falling
3225 back to the old method of textual analysis if that fails
3226 - report_syntax_error doesn't say the token resulting from the textual
3227 analysis of the input line is an `unexpected token'; it just
3228 says there is a `syntax error near xxx'
3229 - changed conditional command error reporting to use the value
3230 returned by error_token_from_token if it's not null instead of
3231 just using the token value in the message, since current_token
3232 ends up being set to -1, and the text of the message from
3233 report_syntax_error might not be exactly right
3234 - change parse_string_to_word_list to set current_token to the
3235 offending token returned by read_token before calling yyerror()
3236 to make the error reporting do the right thing
3239 - fixed typo in BASH_CHECK_LIB_TERMCAP
3242 - add check for isinf(3); define HAVE_ISINF_IN_LIBC if found
3245 - add define for HAVE_ISINF_IN_LIBC
3248 - check for Inf and NaN, using isinf and isnan if they're found in
3250 - use the current locale for thousands separator and decimal point
3251 - recognize "'" flag; not implemented yet
3252 - fix for snprintf/vsnprintf with length of 0 and string argument of
3253 0 with non-zero length
3256 - TMOUT is now the default timeout for `read' (and select) if set,
3257 like ksh93 when reading from the terminal
3258 - edit_line (called by read -e) now just does readline's filename
3259 completion by setting rl_attempted_completion_function to NULL,
3260 since e.g., doing command completion for the first word on the
3261 line wasn't really useful
3264 - changed select_command to return failure status if select_query
3265 returns NULL, indicating that read_builtin returned
3268 doc/{bash.1,bashref.texi}
3269 - documented new TMOUT behavior
3270 - slight change to the description of the test `-ef' option
3273 - added item to posix mode section describing failure behavior of
3274 cd when invoked in logical mode and the pathname formed by
3275 combining $PWD and the directory argument does not refer to an
3281 - fix execute_function to call dispose_function_env after
3282 merge_function_env if the shell is in posix mode (fixes debian
3285 lib/readline/readline.c
3286 - rl_forward -> rl_forward_char; rl_forward function for compatibility
3287 - rl_backward -> rl_backward_char; rl_forward function for
3289 - new functions, rl_forward_byte, rl_backward_byte, for future use
3291 lib/readline/readline.h
3292 - extern declarations for rl_forward_char, rl_backward_char,
3293 rl_forward_byte, rl_backward_byte
3295 lib/readline/{emacs_keymap,funmap,vi_keymap,vi_mode
3296 - rl_forward -> rl_forward_char
3297 - rl_backward -> rl_backward_char
3299 lib/readline/funmap.c
3300 - new bindable names, `backward-byte' and `forward-byte'
3303 - new function, BASH_CHECK_MULTIBYTE, encapsulates checks for
3307 - add necessary defines for multibyte include files and functions
3310 - add call to BASH_CHECK_MULTIBYTE
3313 - add code to define HANDLE_MULTIBYTE if prerequisites are met
3316 - new file, xstrchr() is strchr(3) that handles multibyte characters
3319 - first_line_saved -> current_command_first_line_saved; variable is
3323 - extern declaration for current_command_first_line_saved
3328 - break the code that actually calls add_history out of
3329 bash_add_history into a new function, really_add_history;
3330 bash_add_history now calls really_add_history
3331 - check_add_history takes a second `force' argument telling it
3332 whether to call bash_add_history (force == 0) or really_add_history
3335 builtins/history.def
3336 - in push_history, call delete_last_history if the current command
3337 has more than one line, the first line was saved, and
3338 command-oriented history is active. This takes care of deleting
3339 the right history element if `history -s' is used within a
3340 compound or multiline command
3341 - in push_history, call check_add_history with second argument of 1
3342 to skip check of current_command_line_count and add the arguments
3343 to history -s as a single separate history entry
3347 lib/readline/complete.c
3348 - append a slash to completed names which are symlinks to directories
3349 if the new variable _rl_complete_mark_symlink_dirs is non-zero
3351 lib/readline/rlprivate.h
3352 - extern declaration for _rl_complete_mark_symlink_dirs
3355 - new bindable variable, `mark-symlinked-directories', mirrors the
3356 value of _rl_complete_mark_symlink_dirs
3358 doc/bash.1, lib/readline/doc/{readline.3,rluser.texinfo}
3359 - documented new `mark-symlinked-directories' variable
3364 - set_pipestatus_array now takes a second argument with the number
3365 of processes in the array
3366 - changed set_pipestatus_array to just modify the value in place if
3367 the existing array has one element and the new array has one
3368 element, and to modify existing values in place if new array has
3369 more elements than existing array
3372 - changed set_pipestatus_array callers
3375 - moved call to setjstatus() from set_job_status_and_cleanup to
3376 wait_for, since set_job_status_and_cleanup is part of the SIGCHLD
3377 signal handler call path, and race conditions accessing the
3378 PIPESTATUS array will result for things like
3380 while true; do date; done | cat > /dev/null
3385 - don't redefine xmalloc, xrealloc, and xfree if DISABLE_MALLOC_WRAPPERS
3389 - #undef for DISABLE_MALLOC_WRAPPERS
3392 - define DISABLE_MALLOC_WRAPPERS if the --with-purify option is
3396 - new function, malloc_trace_bin(N), traces allocations and frees
3397 to bucket N (uses the same type of bitmap as `busy')
3400 - fix wraparound search problem in find_entry when searching for a
3401 free entry when the table is full
3406 - keep an `overflow bucket' around to use when the table is full,
3407 so find_entry always returns a valid pointer when FIND_ALLOC
3409 - new static variable to keep a count of the number of MT_ALLOC
3410 entries in the mem_table
3412 lib/sh/{oslib,clktck}.c
3413 - if HAVE_LIMITS_H is defined, include <limits.h>
3416 - new function, getmaxgroups() returns max number of simultaneous
3418 - new function, getmaxchild(), returns max number of simultaneous
3422 - removed forest of #defines for getmaxgroups()
3425 - new extern declaration for getmaxgroups()
3426 - new extern declaration for getmaxchild()
3427 - new extern declaration for isnetconn()
3429 lib/sh/netconn.c,shell.c
3430 - new file, isnetconn() from shell.c moved here
3432 Makefile.in, lib/sh/Makefile.in
3433 - necessary changes for netconn.c
3436 - changed getmaxuprc() to just call getmaxchild() and massage the
3437 return value appropriately
3440 - use the value returned by getmaxchild() in
3441 mark_dead_jobs_as_notified instead of static CHILD_MAX
3444 - new function, compact_jobs_list, removes some number of jobs from
3445 the jobs table and reallocates the table, copying the jobs that
3446 are left from the old table to the new. Compaction happens from
3447 the beginning of the list and removes dead jobs, and we make sure
3448 to keep the last CHILD_MAX jobs as POSIX.2 requires
3449 - call compact_jobs_list from stop_pipeline if we're in a subshell,
3450 there are no free jobs in the jobs table, and the jobs table is
3451 at or above some maximum limit
3454 - change eval_arith_for_expr to set this_command_name to `((' before
3455 calling evalexp, since it might be changed by evaluating the
3456 loop body between evalexp calls
3459 - change reset_signal to turn off the SIG_TRAPPED flag for the
3460 given signal, so shell builtins and functions running in command
3461 substitutions don't run the signal handlers (traps are not supposed
3462 to be inherited by command substitutions)
3465 - changed parse_string_to_word_list to turn off alias expansion
3466 while parsing the array assignment
3471 - fix add_alias so that redefining an alias's value also resets the
3477 - new function, token_is_assignment, called to check whether the text
3478 before `=' makes up a valid assignment token before trying to parse
3479 a compound assignment statement
3480 - new function, parse_compound_assignment, to parse a compound
3481 assignment statement instead of using parse_matched_pair; handles
3482 comments and error reporting in the parser instead of waiting until
3484 - changed parse_compound_assignment and parse_string_to_word_list to
3485 allow reserved words in compound array assignments
3487 lib/readline/doc/rltech.texinfo
3488 - changed the documentation for rl_callback_read_char and
3489 rl_callback_handler_remove to say what happens to the terminal
3490 settings and what needs to be done to reset them
3495 - add emacs_edit_and_execute_command, bound to C-xC-e, like vi-mode
3497 - add bindable command name `edit-and-execute-command', bound to
3498 run emacs_edit_and_execute_command()
3501 - add support for ksh93-like [:word:] character class (isalnum + `_')
3503 doc/{bash.1,bashref.texi}
3504 - add note to section describing lists to clarify that a sequence of
3505 one or more newlines may be used to delimit a command, equivalent
3507 - document new [:word:] pattern matching character class
3509 doc/bash.1, lib/readline/doc/rluser.texinfo
3510 - document `edit-and-execute-command' and its default emacs-mode
3514 - add defines for TOCTRL and UNCTRL if they're not already defined
3516 lib/readline/chardefs.h
3517 - #undef UNCTRL if it's defined to avoid cpp redefinition warnings
3520 - add \cX (Control-X) escape for $'...' to ansicstr()
3521 - change ansic_quote() to allocate at least four chars for each char
3522 in the string argument, to account for \0xx octal values
3523 - change ansic_quote() to no longer call sprintf for non-printable
3524 characters; just translate the string to octal directly
3527 - change xtrace_print_word_list to call ansic_quote() if
3528 ansic_shouldquote() indicates that there are nonprinting characters
3532 - changed deprecated long option parsing to just replace the word
3533 in the list with the equivalent short option (-type -> -t) instead
3534 of removing words from the list
3535 - changed describe_command to take a single flags argument instead
3536 of two int args; changed caller
3537 - type now has two new options: -f suppresses function lookup (like
3538 command), and -P forces a PATH search for the name(s)
3541 - flags for describe_command are here
3542 - changed extern declaration of describe_command
3544 builtins/command.def
3545 - changed call to describe_command to use flags from common.h, and
3546 the right number of arguments
3548 doc/{bash.1,bashref.texi}
3549 - documented new -f and -P options to `type'
3553 lib/readline/rldefs.h
3554 - fixed prototype for _rl_strnicmp
3557 - select_query now takes a new argument, an int flag saying whether
3558 or not to print the menu the first time through the loop. An
3559 empty line in response to the prompt will always cause the menu
3561 - changed execute_select_command to cause select_query to reprint
3562 the menu only if REPLY is set to NULL, if KSH_COMPATIBLE_SELECT
3566 - define KSH_COMPATIBLE_SELECT, with a comment about its meaning
3568 lib/readline/readline.c
3569 - change rl_insert_comment to toggle if given an explicit numeric
3570 argument: if the first characters on the line don't specify a
3571 comment, insert one; if they do, delete the comment text
3573 doc/bash.1, lib/readline/doc/{readline.3,rluser.texinfo}
3574 - documented new behavior of insert-comment with a numeric argument
3579 - new file, implements watchpoint functions
3582 - new file, define some `events' for watchpoints and extern function
3583 and variable declarations for watchpoint code
3585 lib/malloc/imalloc.h
3586 - #define MALLOC_WATCH if MALLOC_DEBUG is defined
3587 - add __P define as in include/stdc.h if not already defined
3590 - remove __P define, now in imalloc.h
3591 - include watch.h if MALLOC_WATCH is defined
3592 - added calls to _malloc_ckwatch in internal_malloc, internal_free,
3593 and internal_realloc
3596 - augment __P define to allow prototypes if PROTOTYPES is defined
3598 lib/readline/rlstdc.h
3599 - augment PARAMS define to allow prototypes if PROTOTYPES is defined
3601 lib/malloc/Makefile.in, Makefile.in
3602 necessary changes to include watch.c in libmalloc
3604 lib/readline/readline.c
3605 - fix rl_delete_text to make sure that the starting position is >= 0
3606 - _rl_init_line_state (called by readline via readline_initialize)
3607 now sets rl_mark to 0
3608 - rl_get_{next,previous}_history set rl_mark to 0 if rl_point is at
3609 the end of the line and rl_end otherwise in emacs mode
3612 - rl_yank_nth_arg_internal and rl_paste_clipboard now set the mark
3613 at point before calling rl_insert_text, like rl_yank
3614 - rl_kill_full_line now resets rl_mark to 0
3615 - rl_kill_line and rl_backward_kill_line now set rl_mark to the
3616 point after the kill in emacs mode
3617 - rl_kill_word and rl_backward_kill_word now set rl_mark to the
3618 point after the kill in emacs mode
3619 - rl_unix_word_rubout and rl_unix_line_discard now set rl_mark to
3620 the point after the kill in emacs mode
3622 lib/readline/search.c
3623 - noninc_search saves and restores the mark, since it can be changed
3624 while reading the search string
3625 - noninc_dosearch sets the mark at the end of the line, making the
3626 region bound the `inserted' text since rl_point is set to 0
3627 - rl_history_search_internal sets the mark at the end of the line,
3630 lib/readline/isearch.c
3631 - rl_search_history now saves and restores the mark
3632 - if no matching lines are found at all when doing an isearch, leave
3633 point where it was instead of moving it to the end of the line
3637 lib/readline/rlmbutil.h
3638 - new file, place for multi-byte character defines and extern
3641 lib/readline/{bind.c,readline.c,rlprivate.h}
3642 - new bindable variable, `byte-oriented', tracks value of
3643 rl_byte_oriented variable
3645 lib/readline/mbutil.c
3646 - new file, with multibyte char utility functions
3648 lib/readline/{complete,display,readline,util,vi_mode}.c
3649 - new code for multibyte characters, derived from IBM patch
3654 - include posixtime.h for time() extern declaration
3656 support/bashversion.c
3657 - include <unistd.h> if it's available
3659 lib/readline/{histexpand,input,isearch,search}.c
3660 - new code for multibyte characters, derived from IBM patch
3662 lib/readline/readline.h
3663 - include rltypedefs.h
3667 lib/readline/complete.c
3668 - slight change to mark-directories code to avoid adding a slash if
3669 point is at the end of the line (rl_line_buffer[rl_point] == '\0')
3670 and the previous character was a slash
3671 - change printable_part to not return empty pathnames, which could
3672 happen when completing filenames and a filename with a trailing
3673 slash was passed as the argument. If the portion following the
3674 trailing slash is NULL, ignore it and look for a previous slash.
3675 If there's no previous slash, just return the filename argument
3676 - new variable, rl_completion_mark_symlink_dirs, mirrors the value
3677 of (user-settable with a variable) _rl_complete_mark_symlink_dirs
3678 but may be modified by application-specific completion functions
3679 when appropriate (set in rl_complete_internal and rl_menu_complete)
3681 lib/readline/readline.h
3682 - extern declaration for rl_completion_mark_symlink_dirs
3685 - if one of the actions is CA_DIRECTORY, set
3686 rl_completion_mark_symlink_dirs to indicate that we want the
3687 trailing slash (might have to relax this)
3689 lib/readline/doc/rltech.texinfo
3690 - documented rl_completion_mark_symlink_dirs variable
3692 lib/readline/doc/rluser.texinfo, doc/bash.1
3693 - documented the fact that `complete -d' and `complete -o dirnames'
3694 force readline to append a slash to symlinks to directories
3697 - changed enable_shell_builtin to disallow enabling disabled
3698 builtins in a restricted shell
3700 doc/{bash.1,bashref.texi}
3701 - documented new enable behavior in restricted shells
3704 - new rule to make an `RBASH' file documenting the restrictions
3705 imposed by a restricted shell
3708 - broke the code that evaluates variables and returns results out
3709 of readtok() into a new function: expr_streval()
3710 - expr_streval() now performs the standard unset variable error
3711 behavior if `set -u' has been executed and it's asked to look
3712 up an unset variable
3713 - broke the code that frees up the expression context stack into
3714 a new function: expr_unwind()
3717 - fixed bind_int_variable so it handles array element assignment,
3718 so expressions like `b[7]++' and `b[0] = 42' work right
3719 - new function, get_variable_value, returns the string value of
3720 the SHELL_VAR * passed as an argument
3721 - get_string_value now calls get_variable_value with a non-null
3722 result from find_variable
3726 lib/readline/rlmbutil.h, mbutil.c
3727 - combined _rl_find_next_mbchar and _rl_find_next_nonzero_mbchar into
3729 - combined _rl_find_prev_mbchar and _rl_find_prev_nonzero_mbchar into
3732 lib/readline/{display,readline,vi_mode}.c
3733 - changed callers of _rl_find_next_mbchar and
3734 _rl_find_next_nonzero_mbchar
3736 lib/readline/{complete,display,histexpand,readline,vi_mode}.c
3737 - changed callers of _rl_find_prev_mbchar and
3738 _rl_find_prev_nonzero_mbchar
3743 - new file, from glibc/gawk, compiled in if system doesn't have a
3747 - new file, from gawk, compiled in if system doesn't have a
3750 lib/sh/Makefile.in, Makefile.in
3751 - changes for mktime.c, strftime.c
3754 - call AC_FUNC_MKTIME, AC_STRUCT_TM, AC_STRUCT_TIMEZONE
3755 - call AC_REPLACE_FUNC(strftime)
3758 - add defines for TM_IN_SYS_TIME, HAVE_TZSET, HAVE_TM_ZONE,
3759 HAVE_STRUCT_TM_TM_ZONE, HAVE_STRFTIME
3762 - provide an extern declaration for strftime if HAVE_STRFTIME is
3763 not defined and NEED_STRFTIME_DECL is
3766 - header files should not include <config.h>
3769 - replace code in decode_prompt_string that chops up value returned
3770 by ctime(3) with calls to strftime -- as a result, the expansion
3771 of \@ has changed slightly (since it depends on the locale)
3772 - added new \D{format} prompt string escape; `format' is passed to
3773 strftime(3). Empty format is the same as `%X' (locale-specific
3774 representation of the current time)
3775 - combined cases for '\\', '\a', '\e', and '\r' in same case branch
3776 in decode_prompt_string
3778 doc/{bash.1,bashref.texi}
3779 - documented new \D{format} prompt string expansion
3782 - use ISO C PRIdMAX instead of INTMAX_CONV
3783 - pass length of format modifiers to mklong instead of computing it
3786 lib/sh/{fmtulong,fmtullong}.c
3787 - changes from Paul Eggert to make more general
3790 - when converting a variable to an array, make sure to unset the
3791 dynamic_value and assign_func members of the struct variable,
3792 since they're not valid anymore
3797 - use AC_HELP_STRING in AC_ARG_WITH and AC_ARG_ENABLE
3798 - remove AC_ARG_ENABLE for largefile, since AC_SYS_LARGEFILE adds
3803 {alias,bashline,execute_cmd,general,shell,subst,variables,arrayfunc}.c,general.h
3804 - changed some calls to strchr to calls to xstrchr for multibyte
3808 - add extern declaration for xstrchr to avoid including externs.h
3809 where it's not appropriate
3811 {braces,make_cmd,pathexp,subst,arrayfunc}.c, lib/sh/xstrchr.c
3812 - include shmbutil.h
3814 {stringlib,subst}.c, {externs,subst}.h
3815 - moved substring() from subst.c to stringlib.c, moved declaration
3816 from subst.h to externs.h
3819 - new file, replacement function for mbsrtowcs
3822 - add entries for xmbsrtowcs.c
3825 - add dependencies on shmbutil.h to appropriate object files
3828 - break character-class testing out into separate function:
3829 is_cclass, in prep for multibyte changes
3832 - changes for multibyte characters
3835 - changes from Paul Eggert to just use intmax_t everywhere an
3836 int/long/quad is needed and print with "%ld" if the number
3837 fits in a long and %PRIdMAX otherwise
3838 - remove getlong, getulong, getllong, getullong, since they're
3840 - use a new type `floatmax_t' to print floating point numbers, the
3841 widest-available floating point type (like `intmax_t'); new
3842 function `getfloatmax' that calls strtold or strtod as appropriate
3843 - remove getdouble, getldouble, since they're no longer needed
3846 - new file, string-to-[u]intmax_t conversion, just includes
3847 fmtulong.c with the right defines
3849 Makefile.in, lib/sh/Makefile.in
3850 - additions for fmtumax.c
3853 - include <inttypes.h> if it's available
3856 - arithmetic is now in intmax_t instead of long
3859 - extern declaration for fmtumax
3860 - change extern declarations for evalexp, itos, inttostr,
3861 uitos, uinttostr since they now return or use intmax_t instead
3864 {execute_cmd,general,mailcheck,subst,variables}.c, parse.y
3865 {array,general,subst,test,variables}.h
3866 lib/sh/{itos,netopen}.c
3867 builtins/{bashgetopt,common}.c, builtins/common.h
3868 builtins/{break,fc,history,jobs,let,printf,pushd,read,shift,wait}.def
3869 - changes for intmax_t shell arithmetic conversion
3871 doc/{bashref.texi,bash.1}
3872 - documented long->intmax_t shell arithmetic conversion
3875 - in initialize_terminating_signals, if we've already trapped a
3876 terminating signal, don't reset the signal handler for it
3880 {arrayfunc,pathexp}.c, parse.y
3881 - changes for multibyte chars
3883 parse.y, lib/sh/strtrans.c
3884 - moved ansiexpand from parse.y to lib/sh/strtrans.c
3887 - moved mk_msgstr and localeexpand from parse.y to locale.c
3890 - new function, yy_input_name, returns name of input file from
3892 - broke the code that parses ((...)) constructs out of read_token
3893 into a new function, parse_dparen()
3896 - new extern declaration for ansiexpand(), mk_msgstr(), and
3900 - new extern declaration for yy_input_name()
3903 - use yy_input_name for error and other messages
3906 - change shell_execve to make sure that the file is executable
3907 before looking at the interpreter to find out why the execve()
3908 failed (avoids misleading error message)
3911 - move code that matches leading `.' and skips those filenames into
3912 a separate function: skipname(), so there can be unibyte and
3913 multibyte versions of that function
3918 - more changes for multibyte characters
3921 - change semicolon() so it doesn't output a `;' immediately after a
3922 newline, since that results in a null command, which is a syntax
3926 - fix indirection_level_string to turn off set -x while evaluating
3932 - make -o options into one struct, instead of separate structs for
3933 option names corresponding to flags and non-flag option names.
3934 This has the side effect of sorting the option names in output
3937 - new function, mbskipname(), multibyte char version of skipname()
3938 - removed all #ifndef SHELL code, this will never be used outside
3942 - move REAL_DIR_ENTRY define here from lib/glob/glob.c
3944 lib/glob/glob_loop.c
3945 - new file, included in glob.c for unibyte and multibyte versions of
3947 - added some forward static function declarations with prototypes
3948 - more changes for multibyte character handling
3950 lib/glob/Makefile.in
3951 - make glob.c depend on glob_loop.c
3952 - changes for xmbsrtowcs.[co]
3954 lib/glob/xmbsrtowcs.c
3955 - moved here from lib/sh, since the matching functions use it, and
3956 libglob.a is linked after libsh.a
3961 - new file, with strmatch (now xstrmatch) and associated functions,
3962 with changes for multibyte chars
3965 - new file, included by smatch.c, with `generic' versions of matching
3966 functions that are compiled twice: once each for single-byte and
3967 multibyte characters
3970 - strip out everything except strmatch(), which either calls fnmatch
3971 (if HAVE_LIBC_FNM_EXTMATCH is defined) or xstrmatch
3974 - changes for multibyte chars
3976 lib/glob/Makefile.in, Makefile.in
3977 - changes for new source files
3981 lib/readline/complete.c
3982 - new function, rl_completion_mode (rl_command_func_t *func), returns
3983 the appropriate value to pass to rl_complete_internal depending on
3984 FUNC and the value of `show-all-if-ambiguous'. This allows
3985 application completion functions to present the same interface as
3988 lib/readline/readline.h
3989 - new extern declaration for rl_completion_mode()
3991 lib/readline/doc/rltech.texinfo
3992 - documented rl_completion_mode
3994 lib/readline/readline.[ch]
3995 - bumped the version number to 4.3, changing the relevant cpp defines
3998 - require that an installed readline version be at least readline-4.3
4001 - converted bash-specific completion functions to use
4002 rl_completion_mode instead of passing TAB unconditionally
4004 builtins/bashgetopt.c
4005 - the `#' option specifier now means a required numeric argument,
4009 - when converting [-]-{path,type,all} to -[pta], don't bother
4010 freeing and reallocating the option string; just change opt[1]
4014 - support %ls/%S and %lc/%C for wide strings and characters,
4015 respectively, if HANDLE_MULTIBYTE is defined
4018 - don't print a message about new mail if the file has not grown,
4019 even if the access time is less than the modification time
4023 lib/readline/readline.c
4024 - new function, rl_replace_line, to replace the readline line buffer
4025 with the text supplied as an argument
4026 - new function, rl_replace_from_history, replaces readline line
4027 buffer with text from history entry passed as argument (undocumented,
4028 not in readline.h because it requires a definition of
4029 HIST_ENTRY for the prototype)
4031 lib/readline/readlne.h
4032 - new extern declaration for rl_replace_line
4034 lib/readline/doc/rltech.texinfo
4035 - documented rl_replace_line
4037 lib/readline/{isearch,readline,search}.c
4038 - use rl_replace_line and rl_replace_from_history where appropriate
4040 lib/readline/readline.c
4041 - broke the code that sets point after moving through the history
4042 (_rl_history_preserve_point and _rl_history_saved_point) out
4043 into a separate function, _rl_history_set_point()
4045 lib/readline/{complete.c,rlprivate.h}
4046 - find_completion_word -> _rl_find_completion_word
4047 - free_match_list -> _rl_free_match_list
4049 lib/readline/complete.c
4050 - postprocess_matches and _rl_free_match_list now return immediately
4051 if passed a null match list
4054 - new function, find_local_variable, finds a local variable by name
4055 at the current variable context
4056 - in find_variable_internal, call find_local_variable before searching
4057 any of the temporary environments if variable_context > 0 (meaning
4058 we're in a shell function). This lets a local variable
4059 override a variable whose value was passed in the `function
4064 variables.h, execute_cmd.c
4065 - declare variables describing the temporary environments in
4066 variables.h instead of in C files
4068 findcmd.c, builtins/setattr.def
4069 - instead of calling find_tempenv_variable, use find_variable_internal
4070 and check whether the returned SHELL_VAR * has the tempvar
4074 - tentative change to lookup order in find_variable_internal so that
4075 function local variables are found before variables in
4076 function_env when executing a shell function
4077 - change make_local_variable to handle making a local variable when
4078 a variable with the same name already appears in one of the
4079 temporary environments
4080 - broke the body of make_var_array out into a new function:
4081 static char **make_env_array_from_var_list (SHELL_VAR **vars)
4082 - new function, make_var_array_internal, takes a hash table to look
4083 in and a pointer to a mapping function and returns a char **
4084 environment-style list
4085 - make_var_array now just calls make_var_array_internal
4086 - new mapping function, local_and_exported, returns all local variables
4087 in the current variable context with the export attribute set
4088 - new function, make_local_export_array, returns an environment-style
4089 char ** array of exported local variables in current context
4090 - change environment creation order in maybe_make_export_env to
4091 add variables to the environment in opposite order that
4092 find_variable_internal uses. This means that local variables in
4093 shell functions override variables with the same name in the
4095 - change make_local_variable to set the initial value of the
4096 variable it creates to NULL to make the `is set' and `is null'
4097 tests that the expansion code does work right
4098 - change make_local_variable to inherit the value of a variable with
4099 the same name from the temporary enviroment
4104 - link bashversion with buildversion.o instead of version.o, for
4105 cross-compiling. version.o is for the target system;
4106 buildversion.o is for the build system
4109 - add line numbers to internal_error() messages if the shell is
4110 not interactive and running a shell script or a -c command
4111 - report_error now prints non-zero line numbers for non-interactive
4115 - test_syntax_error now calls builtin_error() instead of printing
4119 - builtin_error now prints line numbers if a non-interactive shell
4120 is running a shell script or a -c command
4123 - in cprintf, remove free_argp, since it's not used
4125 builtins/history.def
4126 - make `history -n' increment the number of history lines in this
4127 session by the number of lines read from the history file
4130 - fix array_value_internal to expand the subscript even if the
4131 variable is unset, so side effects produced by the arithmetic
4132 evaluation will take place
4134 lib/readline/doc/{rluser,rltech}.texinfo
4135 - some fixes for printing in @smallbook format from Brian
4141 - new PRUNNING, PSTOPPED, PDEADPROC defines for PROCESSes, analogous
4142 to RUNNING, STOPPED, and DEADJOB defines for jobs
4145 - use PS_RUNNING, PS_DONE, PS_STOPPED values for `running' field
4147 - find_pipeline and find_job now take an additional flags argument
4148 that, if non-zero, means to find only running processes; changed
4150 - changed calls to find_pipeline and find_job made from waitchld
4151 to find only running processes
4152 - find_pipeline takes a third argument: an int *. If it looks in
4153 the jobs list to find the pid, and the arg is non-null, it passes
4154 the job index back to the caller. Used to avoid calls to
4155 find_pipeline immediately followed by find_job with the same PID
4158 - a couple of changes to make sure that set_pid_status is never
4159 called with a pid argument of 0 or -1
4162 - change trap_handler to longjmp to wait_intr_buf (set by wait_builtin)
4163 if a signal is received for which a trap has been set during
4164 execution of the wait builtin (need to include builtins.h and
4165 builtins/builtext.h and declare some extern variables for the
4166 right things to check)
4167 - new variable to keep track of which signal caused the longjmp to
4168 wait_intr_buf, set by trap_handler (wait_signal_received)
4171 - set the return value of wait when a longjmp(wait_intr_buf, 1) is
4172 done to 128 + wait_signal_received
4175 - set wait_signal_received to SIGINT in wait_sigint_handler before
4176 the longjmp(wait_intr_buf, 1)
4181 - turn off rl_filename_completion_desired when completing a command
4182 name with a single match only if the first char of that match is
4184 - if there are multiple identical matches for a command name in
4185 attempt_shell_completion, turn off rl_filename_completion_desired
4186 if the first char is not a `/' to avoid readline appending a
4187 slash if there's a directory with the same name in the current
4192 lib/readline/complete.c
4193 - new variable, _rl_page_completions, to control whether we want to
4194 run the internal pager when listing completions (defaults to 1)
4196 lib/readline/rlprivate.h
4197 - extern declaration for _rl_page_completions
4200 - new bindable variable, `page-completions', controls value of
4201 _rl_page_completions
4203 lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
4204 - documented `page-completions' variable
4207 - use $(INSTALL_SCRIPT) instead of $(INSTALL_PROGRAM) to install
4211 - fix small quoting problem in RL_LIB_READLINE_VERSION macro
4213 lib/readline/terminal.c
4214 - fetch and save terminal's `vs' and `ve' cursor control attributes
4215 - fetch and save terminal's `kI' attribute (string sent by Insert)
4216 - new function, _rl_set_cursor, sets cursor to normal (insert mode)
4217 or very visible (overwrite mode)
4219 lib/readline/readline.c
4220 - new global variable, rl_insert_mode
4221 - new function to toggle overwrite mode, rl_overwrite_mode
4222 - each new line starts in insert mode
4223 - switching to vi mode or emacs mode resets to insert mode
4224 - reset cursor to normal before returning line
4225 - _rl_replace_text now returns the number of characters inserted,
4226 the return value from rl_insert_text
4227 - new function, _rl_insert_or_replace_text (const char *string, int insert),
4228 either inserts STRING or replaces the number of chars in STRING
4229 with STRING starting at rl_point, depending on value of INSERT
4230 - renamed rl_insert to _rl_insert_char, rl_insert just calls
4231 _rl_insert_char with the same arguments when in insert mode
4232 - new function, _rl_overwrite_char, handles self-insert in overwrite
4233 mode. Does multibyte chars by reading an entire multibyte character
4234 before entering overwrite loop
4235 - new function, _rl_overwrite_rubout, handles RUBOUT when in
4236 overwrite mode, called from rl_rubout
4237 - new function, _rl_rubout_char, old body of rl_rubout; rl_rubout
4238 calls this when not in overwrite mode
4240 lib/readline/readline.h
4241 - extern declarations for rl_insert_mode and rl_overwrite_mode()
4243 lib/readline/rldefs.h
4244 - define constants for values of rl_insert_mode
4246 lib/readline/rlprivate.h
4247 - extern declarations for _rl_set_cursor and _rl_set_insert_mode
4248 - change type of _rl_replace_text to return int
4249 - extern declarations for _rl_insert_char, _rl_rubout_char
4251 lib/readline/funmap.c
4252 - new bindable name `overwrite-mode', bound to rl_overwrite_mode
4254 lib/readline/rlconf.h
4255 - define CURSOR_MODE if you want the cursor to show insert or
4256 overwrite mode (only available if both `vs' and `ve' capabilities
4259 lib/readline/{complete,parens,readline,search,vi_mode}.c
4260 - change calls to rl_insert to _rl_insert_char
4262 lib/readline/{readline,search}.c
4263 - change calls to rl_rubout to _rl_rubout_char to avoid overwrite
4266 lib/readline/vi_mode.c
4267 - fix rl_vi_overstrike to just call _rl_overwrite_char, which
4268 handles multibyte chars
4270 lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
4271 - document new `overwrite-mode' command
4275 lib/readline/readline.c
4276 - return 0 immediately from rl_insert_text if the string to insert
4280 - if a numeric argument is given to one of the bash-specific glob
4281 pattern completion functions (including TAB), append a `*' to
4282 the word before generating matches
4283 - in attempt_shell_completion, when doing glob completion, only
4284 set the match list to NULL if rl_completion_type == TAB and
4285 there is more than one completion. This permits listing completions
4286 with double tabs and displaying ambiguous completions
4287 - new function, bash_glob_complete_word, appends a `*' to the word
4288 to be completed and then globs it. It uses a new filename
4289 quoting function (bash_glob_quote_filename) to avoid quoting
4290 globbing characters in the filename if there are no matches or
4293 lib/readline/complete.c
4294 - set completion_changed_buffer to 0 in rl_complete_internal if
4295 no matches were produced by the completion generator function
4296 - new variable, rl_completion_suppress_append, suppresses appending
4297 of rl_completion_append_character. Settable by application
4298 completion functions, always 0 when application completion
4299 functions are called (set to 0 by rl_complete_internal and
4301 - broke the code that assigns default values to readline completion
4302 variables out of rl_complete_internal and rl_menu_complete into
4303 a new function, set_completion_defaults (int what_to_do)
4305 lib/readline/readline.h
4306 - extern declaration for rl_completion_suppress_append
4308 lib/readline/doc/rluser.texinfo, doc/bash.1
4309 - documented behavior of glob-expand-word and glob-list-expansions
4310 when supplied a numeric argument
4311 - documented glob-complete-word
4313 lib/readline/doc/rltech.texinfo
4314 - documented rl_completion_suppress_append
4319 - new file, text and character handling functions from readline.c
4322 - new file, miscellanous bindable functions and their supporting
4323 code from readline.c
4325 Makefile.in, lib/readline/Makefile.in
4326 - changes for text.c, misc.c
4329 - change ISKMAP case of rl_invoking_keyseqs_in_map to output
4330 ESC as "\M-" instead of "\e" -- it's closer to the documentation
4331 - change _rl_get_keyname to output ESC as \e instead of \C-[
4332 (it's easier to understand)
4335 - new flag, COPT_NOSPACE
4337 builtins/complete.def
4338 - new `-o nospace' option for complete and compgen (though it doesn't
4339 really do anything for compgen, since that doesn't hand anything
4343 - if a programmable completion specifies COPT_NOSPACE, set
4344 rl_completion_suppress_append = 1
4346 lib/readline/doc/rluser.texinfo
4347 - documented new `-o nospace' option to complete and compgen
4349 doc/{bash.1,bashref.texi}
4350 - documented $'\cX' escape sequence (forgot to before)
4355 - make_new_variable now takes the HASH_TABLE * as its second
4356 argument; changed callers
4357 - new function, bind_variable_in_table, takes the HASH_TABLE * as
4358 its third paramter; bind_variable calls bind_variable_in_table
4359 with shell_variables as third argument
4362 - new struct var_context, variable context (per-scope -- global,
4363 function local, etc.)
4365 variables.[ch],builtins/common.[ch]
4366 - moved functions that push and pop a variable context from
4367 builtins/common.c to variables.c; move extern function
4368 declarations to variables.h
4369 - new function, all_local_variables
4370 - variable_in_context is now static, used only by all_local_variables
4372 variables.[ch],execute_cmd.c
4373 - push_context now takes the function name as an argument for
4375 - push_context takes an indication of whether or not the function is
4376 executing in a subshell and saves the positional parameters only
4377 if not in a subshell
4378 - new functions for managing a stack of variable contexts and
4379 scopes: new_var_context, dispose_var_context, push_var_context,
4380 pop_var_context, push_scope, pop_scope
4382 builtins/declare.def
4383 - call all_local_variables instead of map_over (...) in declare_internal
4384 - don't call make_local_variable if we're looking at functions
4385 ((flags_on & att_function) != 0), since it's wasted
4386 - make sure VAR is set to NULL if check for variable_context fails
4387 and we didn't just create or fetch a local variable in
4389 - in non-function branch of declare_internal, only call find_variable
4390 if VAR is NULL -- if it's not null, we just created or fetched a
4391 local variable and don't need to do it again
4396 - the temporary environments (temporary_env, builtin_env, function_env)
4397 are now HASH_TABLEs instead of argv-style arrays of strings (this
4398 is an intermediate step on the way to the new lcc-inspired symbol
4399 table scope structure)
4400 - new internal attribute for variables: att_propagate. This means
4401 to propagate the value out of the temporary environment up the
4402 (for now implicit) chain of variable scopes when the containing
4403 temporary environment is deleted
4406 - assign_in_env now adds to the HASH_TABLE temporary_env instead
4407 of making environment-style strings in an array of strings
4408 - changed the way the temporary environments are merged into the
4409 shell variable table to account for the new HASH_TABLE temp
4411 - changed the way the export environment is created due to the new
4412 structure of the temporary environments
4413 - new function, bind_variable_internal (name, value, table), binds
4414 NAME to have VALUE in TABLE without searching the temporary
4416 - removed: shell_var_from_env_string, bind_name_in_env_array
4417 - variable_in_context now checks the att_local attribute and makes
4418 sure the variable is not invisible
4419 - local_and_exported now makes sure the variable is not invisible
4422 - we no longer need to copy the temporary environment to function_env
4423 or builtin_env, we can simply use variable assignments
4425 {findcmd,subst,variables}.c, builtins/{declare,setattr}.def
4426 - since variables from the temporary environments are no longer turned
4427 into SHELL_VARs on the fly, don't dispose the SHELL_VAR returned
4428 by find_variable or find_variable_internal
4429 - need to savestring() the value returned by find_variable if it has
4430 the tempvar attribute before calling bind_variable on it, because
4431 bind_variable will search and bind into the temporary environments
4432 and will free the old value before binding the new. For temporary
4433 environments, these two pointers will be the same, and
4434 bind_tempenv_variable will end up using freed memory
4436 builtins/{declare,setattr}.def
4437 - set the att_propagate attribute when exporting or making readonly
4438 variables from the temp environment (i.e., `var=value declare -x var'
4439 or `var=value export var' sets the propagate attribute on the entry
4440 for `var' in the temporary environment HASH_TABLE)
4442 lib/readline/isearch.c
4443 - ^W when reading isearch string yanks the current word out of the
4444 current line into the search string, skipping the portion already
4446 - ^Y when reading isearch string yanks the rest of the current line
4447 into the search string, skipping the portion already matched
4451 {print_cmd,variables}.c
4452 - moved indirection_level_string() from variables.c to print_cmd.c
4454 {externs,variables}.h
4455 - moved extern declaration of indirection_level_string to externs.h
4457 {general,variables}.c
4458 - moved assignment() from variables.c to general.c
4460 {general,variables}.h
4461 - moved extern declaration of assignment() to general.h
4464 - moved extern declaration of decode_prompt_string to externs.h
4467 - include flags.h, don't include stdc.h
4470 - moved some functions around to group functions better
4471 - changed new_shell_variable to explicitly initialize each member
4472 of the created struct variable instead of calling bzero()
4473 - make_new_variable now just calls new_shell_variable instead
4474 of duplicating what it does
4475 - removed some code in bind_function that duplicated what
4476 new_variable does on the newly-created SHELL_VAR
4477 - since there are no local function variables (functions are always
4478 made at the global scope), kill_all_local_variables() doesn't
4479 need to consider functions
4484 - sort the array of special variables
4485 - short-circuit the search in stupidly_hack_special_variables if
4486 the passed name can't be found in the rest of the array
4487 (that is, if name[0] < special_vars[i].name[0])
4489 lib/readline/history.c
4490 - unstifle_history() was returning values exactly opposite of
4493 lib/readline/doc/{hsuser.texinfo,history.3}
4494 - clarified the unstifle_history() documentation a little
4499 - in bind_variable, don't call bind_tempenv_variable after a
4500 find_tempenv_variable succeeds -- just change the value inline.
4501 There's no reason to look it up twice
4502 - change makunbound to only call stupidly_hack_special_variables
4503 if we're not unsetting a function
4506 - new function, unbind_function, like makunbound but doesn't mess
4507 with previous contexts or calling stupidly_hack_special_variables
4510 - change unset_builtin to call either unbind_func or unbind_variable
4512 builtins/getopts.def
4513 - call unbind_variable(name) instead of makunbound(name, shell_variables)
4518 - use malloc instead of xmalloc in BRACKMATCH and handle failures
4521 - add extern declaration of executing_line_number with prototype,
4522 since execute_cmd.h can't be included without including other
4525 lib/readline/parens.c
4526 - include <unistd.h>
4529 - include <unistd.h>
4530 - add extern declaration of malloc_free_blocks() with prototype
4533 - added some forward declarations with prototypes for static functions
4535 lib/readline/rlprivate.h
4536 - removed declarations of rl_untranslate_keyseq, rl_discard_argument,
4537 rl_stop_output, rl_alphabetic since they appear in readline.h
4541 {arrayfunc,execute_cmd,pcomplete,shell}.c
4542 - change calls to makunbound(name, shell_variables) to
4543 unbind_variable (name)
4548 - don't defer incrementing of OPTIND when an invalid option is
4549 encountered until the next call to sh_getopt() -- what if OPTIND
4550 is reset before that next call? This means that OPTIND is always
4551 incremented to the next option to be handled when an option is
4552 returned, whether it's valid or not. This is what POSIX-2002
4556 - new #define, CSUBSTOP
4559 - add "-=?+" with value CSUBSTOP to the syntax table. These are the
4560 valid expansion operators OP in ${param[:]OPword}
4563 - use table lookup for CSUBSTOP in VALID_PARAM_EXPAND_CHAR
4564 - new flags for the string extraction functions: EX_NOALLOC. This
4565 indicates that the functions are being used only to skip over
4566 strings and the result won't be used, so the substring shouldn't
4567 be allocated, copied, and freed
4568 - new flag for string_extract: EX_VARNAME. This serves the same
4569 purpose as the old `varname' parameter. parameter_brace_expand()
4570 changed appropriately
4571 - extract_delimited_string and extract_dollar_brace_string now take
4572 an additional `flags' argument, which may include EX_NOALLOC
4573 - changed callers of extract_delimited_string and
4574 extract_dollar_brace_string appropriately
4575 - string_extract now understands EX_NOALLOC; callers changed
4576 - some smaller code cleanups
4577 - converted char_is_quoted(), unclosed_pair(), and skip_to_delim()
4578 to understand multibyte characters
4583 - moved to a symbol organization inspired by lcc. The basic structure
4584 is no longer a HASH_TABLE, but a VAR_CONTEXT, which includes a hash
4585 table as one of its members. VAR_CONTEXTs are linked together to do
4586 variable scoping. One nice thing about this is that the entire
4587 symbol table doesn't need to be searched at function scope exit to
4588 remove local variables. Fixes problems with only one instance of
4589 builtin_env and function_env, even though it really is a stack
4590 - shell_variables is now a VAR_CONTEXT *, with a global_variables
4591 variable that points to the bottom of the stack for fast access
4592 - function-scope local variables (assignments specified on the command
4593 line before a function call) and function-local variables (declared
4594 with the `local' builtin) have been unified in the same variable
4595 context, replacing function_env
4596 - assignment statements preceding the `.' and `eval' builtins are now
4597 a separate variable scope VAR_CONTEXT, replacing builtin_env
4598 - temporary_env (a HASH_TABLE) is now the only separate environment
4599 - changes to export environment creation, variable binding, variable
4600 lookup, local variable propagation all changed to work with the
4601 new symbol table/scope structure
4602 - a SHELL_VAR no longer has a `prev_context' member; it's not needed
4605 - changes to push_context calls to include any temporary variables in
4606 temporary_env; pop_context takes care of propagating any temporary
4607 variables if necessary
4608 - calls to push_scope if `eval' or `.' is called with a list of
4609 preceding variable assignments, and pop_scope called at end of
4610 builtin's execution. pop_scope takes care of merging temporary
4611 variables into the shell environment when appropriate
4613 builtins/{setattr,declare}.def
4614 - changes to account for variable assignments preceding `local',
4615 `export', `readonly', `declare', etc. to work with the new
4616 variable scoping implementation
4619 - since shell_variables is now a VAR_CONTEXT, call
4620 delete_all_contexts() when the shell is reinitializing instead of
4621 delete_all_variables()
4624 - new function, get_job_by_name(), used by execute_simple_command()
4625 for the `auto_resume' stuff and get_job_spec()
4628 - new set of #defined constants for flags argument to
4634 - new redirection operator: r_reading_string for `here strings'
4637 - new token, LESS_LESS_LESS, for new redirection `here string'
4638 operator: [N]<<< word
4639 - recognize LESS_LESS_LESS and create the appropriate redirection
4641 {dispose_cmd,copy_cmd,make_cmd,print_cmd}.c
4642 - recognize r_reading_string and do the right thing (dispose_redirects,
4643 copy_redirect, print_redirection, and make_redirection, respectively)
4646 - here_document_to_fd now takes the redirection operator as its
4648 - new function, write_here_string, expands a here string and writes it
4649 to the here document file descriptor
4650 - here_document_to_fd calls write_here_string for r_reading_string
4652 - handle r_reading_string in do_redirection_internal() and
4657 doc/{bash.1,bashref.texi}
4658 - documented here strings
4660 {configure,Makefile}.in
4661 - bumped version number up to bash-2.05b and the release status
4665 - make expr_streval understand that variables with the `invisible'
4666 attribute are really unset, and accessing such a variable when
4667 `set -u' is set should be an error
4670 - new accessor macros: var_isset(var) and var_isnull(var), test
4671 whether var->value is NULL
4673 {eval,subst,variables}.c, builtins/{declare,setattr}.def
4674 - be more consistent about using value_cell(var) instead of
4675 directly referencing var->value
4676 - use var_isset and var_isnull where appropriate
4679 - augmented a couple of help strings with pointers to `info' and
4685 - new macros to use when setting variable values directly instead of
4686 through bind_variable and its siblings
4688 {arrayfunc,variables}.c
4689 - use var_setarray and other lvalue macros instead of assigning to
4692 builtins/setattr.def
4693 - change show_var_attributes to show function definitions separately
4694 from function attributes. This allows the output of `declare -f'
4695 (with other flags), `export -f', and `readonly -f' to be reused as
4696 shell input, instead of the old
4698 declare -f[flags] func()
4703 which has syntax errors. When in posix mode, `export -fp' and
4704 `readonly -fp' still don't print function definitions
4709 - comment out calls to discard_parser_constructs; no need to call
4715 - replacement function for memset(3)
4717 lib/sh/Makefile.in, Makefile.in
4718 - additions for memset.c
4720 configure.in,config.h.in
4721 - check for memset, define HAVE_MEMSET if found, add memset.o to
4725 - removed zmemset(), replaced with calls to memset(3)
4727 {subst,execute_cmd,lib/sh/netopen}.c
4728 - replaced calls to bzero with calls to memset
4731 - word_split() now takes a second argument: the value of $IFS, so
4732 it doesn't have to look up IFS every time
4733 - word_list_split() now calls getifs() and passes the result to
4734 each call to word_split() as its second arg
4735 - do a quick scan for CTLNUL in remove_quoted_nulls before allocating
4736 new string, copying old string to it, copying over original string
4737 and freeing new string
4740 - don't bother calling dispose_used_env_vars if temporary_env is NULL
4743 - fix fix_assignment_words to only look up the builtin corresponding
4744 to the first word if one of the words in the list is marked as
4748 - renamed hash_string to hash_bucket, which better reflects what it
4750 - extracted the portion of hash_bucket that computes the hash out
4751 into a new hash_string()
4752 - made new body of hash_bucket into a macro HASH_BUCKET; function
4753 just calls the macro
4754 - calls to hash_bucket in this file now call HASH_BUCKET macro
4755 - in add_hash_item, just add a new item at the front of the appropriate
4756 bucket list instead of at the end
4759 - reduced FILENAME_HASH_BUCKETS to 53 from 107
4764 - find_hash_item, remove_hash_item, add_hash_item all take a new
4765 third `flags' argument
4766 - add_hash_item doesn't call find_hash_item if HASH_NOSRCH passed in
4768 - find_hash_item will create a new hash table entry if HASH_CREATE is
4770 - new function, hash_walk, takes a pointer to a function and a table
4771 and calls the function for each item in the table. If the function
4772 returns < 0, the walk is terminated
4773 - fixed flush_hash_table to set table->nentries to 0 after freeing
4775 - BUCKET_CONTENTS now has a new `khash' member, what key hashes to;
4776 set by HASH_BUCKET macro (which calls hash_string), assigned in
4777 find_hash_item (HASH_CREATE) and add_hash_item
4778 - find_hash_item and remove_hash_item check `khash' against the
4779 hash of the string argument before calling strcmp
4781 {alias,hashlib,hashcmd,pcomplib,variables}.c
4782 - changed all calls to {find,remove,add}_hash_item
4785 - return immediately from print_hashed_commands if there are no
4786 entries in the hash table (this eliminates need for `any_printed'
4788 - change print_hashed_commands to use hash_walk
4791 - short-circuit all_aliases and map_over_aliases if
4792 HASH_ENTRIES(aliases) == 0
4793 - simplify map_over_aliases by just allocating enough room in the
4794 returned list for all entries in the aliases hash table, instead
4795 of doing the check and xrealloc
4796 - add_alias now calls add_hash_item with HASH_NOSRCH argument
4799 - sh_csprint_func_t is no more; use hash_wfunc instead
4802 - short-circuit print_all_compspecs if HASH_ENTRIES(prog_completes)
4804 - print_all_compspecs now takes a `hash_wfunc *' argument
4805 - print_all_compspecs now just calls hash_walk
4807 builtins/complete.def
4808 - new function, print_compitem, takes a BUCKET_CONTENTS *, extracts
4809 the right info, and calls print_one_completion
4812 - short-circuit map_over_funcs if HASH_ENTRIES(shell_functions) == 0
4813 - short-circuit flatten if the passed table has no entries
4814 - bind_variable_internal takes a new fourth argument: `hflags',
4815 to pass to hash table functions
4816 - make_new_variable now passes HASH_NOSRCH flag to add_hash_item
4817 - set_if_not now calls bind_variable_internal and passes
4818 HASH_NOSRCH as flags argument
4819 - bind_function now calls add_hash_item with HASH_NOSRCH argument
4820 - fixed make_local_variable: old_var == 0 && was_tmpvar can never
4822 - if we didn't find an old variable in make_local_variable, call
4823 bind_variable_internal with HASH_NOSRCH argument
4824 - fix push_temp_var to reset variable context to 0 if binding into
4825 global_variables->table
4828 - fix to parse_compound_assignment to avoid core dumps on empty
4829 compound array assignments
4832 - getifs() is now global so read_builtin can call it
4835 - extern declaration for getifs()
4840 - changed hash_string to use a better hash function
4841 - changed HASH_BUCKET to use masking rather than modulus to hash a
4842 string to a bucket -- HASH TABLES MUST NOW BE SIZED BY POWERS
4846 - DEFAULT_HASH_BUCKETS is now 64
4849 - FILENAME_HASH_BUCKETS is now 64
4852 - COMPLETE_HASH_BUCKETS is now 32
4855 - TEMPENV_HASH_BUCKETS is now 4
4858 - new define, ALIAS_HASH_BUCKETS, set to 16, used to size alias table
4861 - removed initialize_hash_table; folded code into make_hash_table
4862 - fixed copy_bucket_array to copy the `khash' member of an item
4863 - renamed functions to be more systematic and easier for me:
4864 make_hash_table -> hash_create
4865 hash_table_nentries -> hash_size
4866 copy_hash_table -> hash_copy
4867 find_hash_item -> hash_search
4868 remove_hash_item -> hash_remove
4869 add_hash_item -> hash_insert
4870 flush_hash_table -> hash_flush
4871 dispose_hash_table -> hash_dispose
4872 print_table_stats -> hash_pstats
4873 get_hash_bucket -> hash_items
4874 - changed hash_search to short-circuit if table->nentries == 0 and
4875 HASH_CREATE has not been passed in the flags argument
4877 {alias,variables,hashcmd,pcomplib}.c
4878 - renamed calls to all renamed functions from hashlib.c
4881 - don't drop a leading `-' in a pid argument
4882 - call kill_pid with an explicit third argument of 1 if the pid
4883 argument to kill is < -1, rather than rely on the behavior of
4889 - quoted_strchr is no longer declared `inline'
4890 - skip_double_quoted is no longer declared `inline'
4891 - string_extract_double_quoted is no longer declared `inline'
4893 lib/readline/input.c
4894 - rl_gather_tyi is now an `int' valued function; returns the number
4895 of characters read (0 or 1) or -1 on error
4896 - if rl_gather_tyi() returns -1 to rl_read_key(), set rl_done to 1
4897 and return a newline; something is wrong with the input fd
4902 - IFS is now a special variable
4903 - new special var function, sv_ifs(), called when IFS is set or unset
4904 - call setifs() when IFS is first set in initialize_shell_variables
4905 - call setifs() from make_local_variable and assign_in_env if
4907 - if assign_in_env() is called with a var assignment like `VAR=',
4908 make the value in the new SHELL_VAR created be "" like
4909 do_assignment_internal does, since certain parts of the shell use
4910 a NULL value as evidence that the variable is unset (though
4911 attributes may have been assigned)
4912 - if push_temp_var pushes something up to the global_variables table,
4913 make sure that the context is set to 0
4914 - new function dispose_temporary_env, called by both
4915 dispose_used_env_vars and merge_temporary_env with different `free
4916 func' function pointers; calls sv_ifs after disposing the temporary
4918 - push_exported_var now calls bind_variable_internal instead of
4920 - pop_scope and pop_context now call sv_ifs
4923 - new global variables used to keep track of IFS state, to avoid
4924 having to call find_variable("IFS") all the time:
4926 ifs_var the SHELL_VAR for IFS
4927 ifs_value ifs_var ? value_cell (ifs_var) : " \t\n"
4928 ifs_cmap bitmap of characters in ifs_value
4929 ifs_firstc first character in ifs_value
4931 - new function setifs(), sets the aforementioned ifs variables each
4932 time IFS is set or unset, and at nested scope exit
4933 - instead of calling getifs() from inside subst.c, use ifs_value
4934 - getifs() now just returns ifs_value
4935 - use ifs_firstc in string_list_dollar_star()
4936 - only call member() in issep() if separators is more than one char
4937 - don't cache a bitmap every time expand_word_internal() is called;
4938 use ifs_cmap instead
4939 - new macro, isifs(c), checks whether C is in ifs_cmap
4942 - use issep() and isifs() macros instead of looking at $IFS directly
4945 - make sure macros that access sh_syntaxtab cast the argument to
4946 `unsigned char' before array access
4947 - new macros: issyntype(c, type) and notsyntype(c, type), check
4948 sh_syntaxtab[c] for a particular flag value `type'
4953 - the `data' member of a `BUCKET_CONTENTS' is now a PTR_T
4955 {hashlib,alias,variables,hashcmd,pcomplib}.c
4956 - removed some casts when assigning to and using `data' member of a
4960 - in split_at_delims, call make_word_list instead of allocating and
4961 initializing a WORD_LIST * directly
4964 - add_string_to_list is now just a macro that calls make_word_list
4965 - make_simple_command now calls make_word_list instead of allocating
4966 a WORD_LIST * directly
4971 - copy_word now calls make_bare_word to allocate the copy
4972 - copy_word_list now calls make_word_list to allocate the copy
4975 - include `ocache.h' for simple object caching
4976 - call cmd_init() to initialize the WORD_DESC and WORD_LIST object
4979 {make,dispose}_cmd.c
4980 - allocate WORD_DESC * and WORD_LIST * vars from their respective
4981 ocaches, and return them to the cache when disposing
4984 - renamed old `waiting_for_job' variable to `queue_sigchld', which
4985 better reflects its intent: sigchld_handler does not call waitchld
4986 if `queue_sigchld' is non-zero, it simply increments the count of
4988 - cleanup_dead_jobs now just sets and clears queue_sigchld instead of
4989 blocking and unblocking SIGCHLD; it calls waitchld at the end if
4990 `sigchld' is non-zero, but that's not really necessary
4991 - in setjstatus, only call xrealloc if `statsize' is less than the
4992 number of processes passed -- no reason to do it if they're the
4998 - reinitialize_signals is no more; initialize_signals takes an
4999 argument saying whether or not we are reinitializing
5002 - reinitialize_signals() -> initialize_signals(1)
5005 - fix filecomp() to work right when one file has a non-positive
5006 timestamp and the other file does not exist
5008 doc/{bash.1,bashref.texi}
5009 - document what happens for test's -nt and -ot operators when one
5010 file operand exists and the other does not
5013 - if we haven't messed with SIGTTOU, just manipulate queue_sigchld
5014 in notify_of_job_status instead of calling sigprocmask()
5015 - list_one_job now calls pretty_print_job directly instead of going
5017 - pretty_print_job now must be called with SIGCHLD blocked or held
5018 instead of blocking SIGCHLD itself
5019 - changed start_job so that it doesn't call UNBLOCK_CHILD and then
5020 immediately call BLOCK_CHILD again (explicitly or via last_pid()),
5021 call find_last_pid instead of last_pid and then UNBLOCK_CHILD
5022 - changed wait_for_job the same way
5023 - find_last_pid now takes a second argument: block; uses BLOCK_CHILD
5024 if `block' is 1, not otherwise. Changed existing calls:
5025 find_last_pid(j) -> find_last_pid(j, 0)
5026 last_pid(j) -> find_last_pid(j, 1)
5027 `last_pid()' is now gone
5028 - rewrote wait_for_background_pids(); it was a little strange
5031 - copy_if_command: don't copy null false_case commands
5032 - copy_simple_command: don't copy a null redirection list
5035 - in get_word_from_string and list_string, just check for " \t\n"
5036 directly rather than calling strcmp
5037 - in get_word_from_string and strip_trailing_ifs_whitespace, use
5038 isifs() instead of issep(), since they're never called with
5040 - change issep() to call isifs if separators is longer than one
5041 character, since it's never called with anything but "", " ",
5047 - enclose the BLOCK_SIGNAL macro in a do {...} while (0) loop, at it
5048 should have been all along
5050 lib/readline/doc/rltech.texinfo
5051 - document that readline defaults to stdin/stdout if rl_instream/
5052 rl_outstream are NULL
5054 lib/readline/terminal.c
5055 - if an application is using a custom redisplay function,
5056 rl_resize_terminal just calls rl_forced_update_display to tell
5057 (*rl_redisplay_func) to update the display, otherwise call
5058 _rl_redisplay_after_sigwinch
5060 lib/readline/readline.c
5061 - change readline_internal_setup() so the change to vi insertion mode
5062 happens even if readline_echoing_p is 0
5063 - don't print the prompt to rl_outstream in readline_internal_setup
5064 if we're not echoing and the caller has defined a custom redisplay
5065 function -- let the redisplay function deal with it
5068 - new option: --enable-mem-scramble, controls memory scrambling on
5069 free() (on by default; only affects use of bash malloc)
5072 - new option MEMSCRAMBLE, controlled by --enable-mem-scramble
5077 - added ksh-like behavior of [...] to read_token_word: if a `[' is
5078 seen in an assignment context and the previous characters in the
5079 token form a valid identifier, parse the [...] with
5080 parse_matched_pair to allow spaces (and newlines) in the subscript
5083 - new function bash_servicename_completion_function, for completing
5084 service names from /etc/services
5087 - new extern declaration for bash_servicename_completion_function
5089 builtins/complete.def
5090 - allow new `-s/-A service' option to complete and compgen builtins
5093 - new CA_SERVICE define, new ITEMLIST variable it_services
5096 - add callback to bash_servicename_completion_function to generate
5097 list of matching service names for completion
5099 doc/bash.1,lib/readline/doc/rluser.texinfo
5100 - documented new `-s/-A service' option to complete and compgen
5105 - change hard-coded `0' to new variable `fd' (initially 0) in
5106 preparation for adding `-u fd' option
5109 - bash_directory_completion_hook calls expand_prompt_string instead
5110 of expand_string (it does the right thing). This keeps expansion
5111 errors from causing a longjmp, which shouldn't happen because of
5113 - command_subst_completion_function was augmented very slightly to
5114 do filename completion on a non-command-word in a command
5116 - command_subst_completion_function now skips over the lcd that
5117 rl_completion_matches puts in matches[0] if there is more than
5118 one possible completion
5123 - only add the unwind_protect to free `rlbuf' if `edit' is non-zero,
5124 since we won't be using readline otherwise
5127 - renamed zread1 -> zreadintr
5130 - small change to redirection_error() to make a slightly better
5131 guess about the invalid file descriptor if the redirection op is
5132 r_duplicating_input or r_duplicating_output
5135 - new macro, SH_VA_START, to encapsulate the difference between
5136 stdarg va_start and varargs va_start
5138 {error,pcomplete,print_cmd}.c,builtins/common.c,lib/sh/snprintf.c
5144 - support for the ksh-like `-u fd' option
5147 - new function sh_validfd(fd), returns 1 if fd is a valid open file
5151 - extern decl for sh_validfd
5154 - don't call posix_readline_initialize() from initialize_readline();
5155 sv_strict_posix() should already have taken care of it
5159 {error,pcomplete,print_cmd}.c, builtins/common.c
5160 - removed non-varargs versions of functions
5163 - if the string argument to %q has non-printing characters, call
5164 ansic_quote to quote it rather than sh_backslash_quote
5167 - new attribute: att_trace (and corresponding trace_p() macro).
5168 Functions with this attribute will inherit the DEBUG trap.
5169 Currently ignored for variables
5171 builtins/declare.def
5172 - new `-t' option to declare/typeset toggle the `att_trace' attribute
5174 builtins/setattr.def
5175 - check for att_trace and output `-t' flag in show_var_attributes
5178 - if a function is being traced (it has the `-t' attribute set),
5179 don't turn off the DEBUG trap when it executes
5181 doc/{bash.1,bashref.texi}
5182 - document the new `-t' option to declare/typeset
5187 - don't execute the debug trap in the `cm_simple:' case of
5188 execute_command_internal; run it in execute_simple_command so we
5189 get the line number information right when executing in a shell
5191 - run a DEBUG trap before executing ((...)) arithmetic commands,
5193 - run a DEBUG trap before executing [[...]] conditional commands,
5197 - add a static forward declaration for alrm_catcher()
5200 - add static forward declarations for bash_special_tilde_expansions,
5201 unquoted_tilde_word, initialize_group_array
5204 - add extern declarations for sh_get_env_value, map_over_funcs,
5205 local_exported_variables
5208 - add static forward declarations for dispose_temporary_env,
5209 make_func_export_array
5212 - add static forward declaration for check_history_control
5215 - add a call to AC_CHECK_DECLS for strcpy
5218 - add placeholder for HAVE_DECL_STRCPY define, set by configure
5221 - don't declare strcpy if HAVE_DECL_STRCPY is defined with a non-zero
5225 - add prototype to typedef of SigHandler
5227 lib/readline/histlib.h
5228 - removed extern declaration of strcpy()
5229 - include string.h/strings.h directly in histlib.h instead of source
5232 lib/readline/{histexpand,histfile,history,histsearch}.c
5233 - don't include string.h/strings.h now that histlib.h includes it
5236 - removed extern declaration of strcpy(), rely on string.h/strings.h
5239 - four new redirection types: r_move_input, r_move_output,
5240 r_move_input_word, r_move_output_word, for
5241 [N]<&word- and [N]>&word- from ksh93
5244 - changes to print r_move_input[_word] and r_move_output[_word]
5247 - changes to copy r_move_input[_word] and r_move_output[_word]
5250 - changes to dispose r_move_input_word and r_move_output_word
5253 - changes to make r_move_input[_word] and r_move_output[_word] from
5254 r_duplicating_{input,output}_word, which is how the new redirs
5255 are passed by the parser
5258 - changes to make r_move_input[_word] and r_move_output[_word] do
5259 the right thing when executed
5262 - print an error message and return failure immediately if zread/zreadc
5265 doc/{bash.1,bashref.texi}
5266 - documented new [n]<&word- and [n]>&word- redirections
5270 lib/readline/isearch.c
5271 - enabled code to allow chars bound to rl_rubout to delete characters
5272 from the incremental search string
5275 - add `-l' invocation option to parse_shell_options; equivalent to
5277 - fixed set_login_shell to check first char of base pathname of argv0
5278 for `-', like other shells
5279 - move the check for make_login_shell after the call to
5280 parse_shell_options because the `-l' option might set it
5282 doc/{bash.1,bashref.texi}
5283 - documented new `-l' invocation option
5286 - new function, array_shift, shifts an array left by a specified
5288 - array_walk is now compiled in by default
5289 - array_to_assignment_string now takes a second argument: int quoted.
5290 If non-zero, the result is single-quoted before being returned
5291 - quoted_array_assignment_string has been removed
5294 - renamed most of the array functions so that all have an array_
5295 prefix and are more systematically named
5296 - array_slice now preserves the indicies from the original array
5297 - change array_to_assign to use a static buffer for expanding the
5298 array indices, instead of malloc/free
5300 {arrayfunc,subst,variables}.c, builtins/read.def
5301 - changed calls to various array functions to use new names
5303 lib/sh/stringvec.c, externs.h
5304 - renamed all of the functions to have a strvec_ prefix and to have
5305 a more sensible name scheme
5306 - strvec_search's arguments are now supplied in reverse order, so
5307 the char **array is first, like the other functions
5308 - new function, strvec_resize, xrealloc for strvecs
5310 {alias,array,bracecomp,braces,bashline,execute_cmd,findcmd,general,pathexp,
5311 pcomplete,variables}.c
5313 builtins/{bind,complete,exec,getopts,pushd,set}.def
5314 - change calls to all functions from lib/sh/stringvec.c
5315 - use strvec_resize where appropriate
5318 - only declare dup2() if HAVE_DUP2 is undefined or DUP2_BROKEN is
5321 lib/readline/{macro,readline,util}.c, lib/readline/rlprivate.h
5322 - _rl_defining_kbd_macro is gone, use RL_ISSTATE(RL_STATE_MACRODEF)
5324 lib/readline/readline.h
5325 - new struct readline_state, encapsulates most of readline's internal
5326 state in case you need reentrancy or nested calls to readline()
5327 - extern declarations for rl_save_state, rl_restore_state
5329 lib/readline/readline.c
5330 - add (undocumented) int rl_save_state (struct readline_state *),
5331 int rl_restore_state (struct readline_state *)
5336 - new function, array_rshift, shifts an array right by a specified
5337 number of elements, optionally inserting a new element 0
5339 examples/bashdb/bashdb
5340 - new single-file version of bash debugger, originally modified from
5341 version in bash-2.04 by Gary Vaughan (the old debugger still
5342 appears in examples/obashdb). This version has a more gdb-like
5345 examples/bashdb/bashdb.el
5346 - new emacs bashdb debugger mode from Masatake YAMATO <jet@gyve.org>
5349 - don't make $LINENO relative to function start unless the shell is
5350 currently interactive -- this is what ksh93 does and what I
5351 believe to be the intent of POSIX.2 (this required changing some
5352 of the test checks because the output has changed)
5353 - run the debug trap for each command in an arithmetic for expression,
5356 lib/readline/vi_mode.c
5357 - redid rl_vi_subst (binding func for `s' and `S') in terms of
5358 rl_vi_change_to: `S' == `cc' and `s' == `c '. This makes undo
5364 - fixed hash_walk to return if the item function returns < 0, instead
5365 of breaking out of the current hash chain
5368 - fixed array_walk to return if the item function returns < 0, like
5371 lib/sh/stringlist.c, externs.h
5372 - new function: strlist_walk, takes a stringlist and a pointer to an
5373 item func. Like other _walk funcs, if item func returns < 0 the
5375 - new function: strlist_flush, frees items in the contained list
5377 - renamed functions to have a strlist_ prefix and be more systematic
5379 pcomplib.c,pcomplete.h
5380 - removed redundant `progcomp_initialized' variable
5381 - renamed functions to have `progcomp_' or `compspec_' prefixes
5382 like the hash library
5384 {bashline,pcomplete}.c,builtins/complete.def
5385 - fixed calls to stringlist functions to use new names
5386 - fixed calls to functions in pcomplib.c to use new names
5389 - made the debugging code #ifdef DEBUG -- it should be mature enough
5391 builtins/hash.def,parse.y
5392 - use REVERSE_LIST(x, t) instead of (t)reverse_list(x)
5394 list.c,{externs,general}.h
5395 - renamed the list functions to have a list_ prefix, changed callers
5397 externs.h,{execute_cmd,stringlib,subst}.c,builtins/common.c,lib/sh/stringvec.c
5398 - word_list_to_argv -> strvec_from_word_list
5399 - argv_to_word_list -> strvec_to_word_list
5400 - moved functions to lib/sh/stringvec.c
5403 - changed name of second argument to strvec_from_word_list from `copy'
5404 to `alloc' so the use of `copy' between strvec_from_word_list and
5405 strvec_to_word_list isn't as confusing
5406 - changed name and sense of second argument to
5407 strvec_to_word_list from `copy' to `alloc' for the same reason --
5408 now both functions agree on semantics of second argument
5411 - ditto for strlist_from_word_list and strlist_to_word_list
5414 - changed callers of strvec_to_word_list
5419 - added `-l' option to list table or individual targets in reusable
5421 - added `-d' option to remove one or more names from the table of
5422 hashed commands (provides `unhash' or `unalias -t' functionality)
5424 doc/{bash.1,bashref.texi}
5425 - documented new `-l' and `-d' options to `hash'
5428 - renamed functions to have a `phash_' prefix and follow new naming
5430 - phash_remove now returns an int: 1 if command not in hash table,
5431 0 if filename removed OK
5433 {findcmd,variables}.c, builtins/{hash,type}.def
5434 - changed callers to use new names from hashcmd.c
5436 builtins/common.[ch]
5437 - new function, sh_notfound(s), prints standard `not found' message
5438 - new function, sh_invalidid(s), prints standard `invalid identifier'
5440 - new function, sh_restricted(s), prints standard `restricted' message
5441 for restricted shells
5442 - new function, sh_invalidnum(s), prints standard `invalid number'
5444 - renamed bad_option to sh_invalidopt, changed to print
5445 `invalid option' instead of `unknown option'
5446 - new function, sh_invalidoptname, prints standard `invalid option
5447 name' for long options
5448 - new function, sh_badjob (s), prints standard `no such job' message
5449 - new function, sh_invalidsig (s), prints standard `invalid signal
5450 specification' message
5451 - new function, sh_nojobs (s), prints standard `no job control' message
5452 - new function, sh_needarg (s), prints standard `option requires an
5454 - new function, sh_neednumarg (s), prints standard `numeric
5455 argument required' message
5456 - new function, sh_badpid(s), prints standard `not a pid...' message
5457 - new function, sh_erange (s, desc) prints standard `out of range'
5458 message, optionally using `desc' to say what the argument is
5460 builtins/{alias,command,declare,exec,hash,type}.def
5461 - call sh_notfound() instead of calling builtin_error directly
5463 builtins/{declare,getopts,read,set,setattr}.def
5464 - call sh_invalidid() instead of calling builtin_error directly
5466 builtins/{cd,command,enable,exec,hash,source}.def
5467 - call sh_restricted() instead of calling builtin_error directly
5469 builtins/{printf,read,ulimit}.def, builtins/common.c
5470 - call sh_invalidnum instead of calling builtin_error directly
5472 builtins/{complete,declare,pushd,set}.def, builtins/bashgetopt.c
5473 - call sh_invalidopt instead of bad_option or builtin_error directly
5475 builtins/{complete,set,shopt}.def
5476 - call sh_invalidoptname instead of builtin_error directly
5478 builtins/{fg_bg,jobs,kill,wait}.def
5479 - call sh_badjob instead of calling builtin_error directly
5481 builtins/common.c, builtins/{kill,signal}.def
5482 - call sh_invalidsig instead of calling builtin_error directly
5484 builtins/{fg_bg,suspend,wait}.def
5485 - call sh_nojobs instead of calling builtin_error directly
5487 builtins/{common,bashgetopt}.c, builtins/{hash,kill}.def
5488 - call sh_neednumarg and sh_needarg where required
5490 builtins/{kill,wait}.def
5491 - call sh_badpid where required
5493 builtins/{break,fc,history,pushd,shift,ulimit,umask}.def
5494 - call sh_erange where appropriate
5497 - new static function, printf_erange, prints standard out-of-range
5501 - changed so that calls to sh_invalidopt always include the leading
5505 - changed SHOPT_ERROR macro to shopt_error function
5508 - regularized error messages to `bind: object: error string' like
5509 other error messages
5512 - the `short_doc' member of a `struct builtin' is now of type
5514 - the strings in `long_doc' array of a struct builtin are now const
5516 builtins/mkbuiltins.c
5517 - changes for new `const' members of struct builtin
5521 lib/readline/histfile.c
5522 - use pointers instead of indexing into buffer when reading the
5523 contents of the history file in read_history_range and
5524 history_truncate_file
5528 lib/readline/histfile.c
5529 - new file, with code to mmap the history file for reading and
5530 writing (depends on HAVE_MMAP, currently nothing checks for that)
5535 - new function, err_badarraysub(s), calls report_error with standard
5536 `bad array subscript' message
5537 - new function, err_unboundvar(s), calls report_error with standard
5538 `unbound variable' message
5539 - new function, err_readonly(s), calls report_error with standard
5540 `readonly variable' message
5543 - call err_badarraysub where appropriate
5546 - call err_unboundvar where appropriate
5548 {arrayfunc,variables}.c
5549 - call err_readonly where appropriate
5552 - changed text of bad option error messages to be the same as that
5553 printed for builtin errors
5556 - changed sh_invalidopt to print the invalid option before the rest
5557 of the error message (required some tests to be modified)
5558 - new function, sh_readonly, calls builtin_error with standard
5559 `readonly variable' message
5561 variables.c,builtins/declare.def
5562 - call sh_readonly where appropriate
5565 - added strvec_remove (sv, s), removes S from SV and shuffles rest of
5569 - added strlist_remove(sl, s), just calls strvec_remove on the
5573 - new extern declarations for strvec_remove and strlist_remove
5574 - fixed extern declaration for strvec_search; the arguments were
5575 reversed (unimportant, it's not compiled into the shell)
5578 - change param_expand to call quote_escapes on values retrieved when
5579 expanding the positional parameters
5580 - change parameter_brace_expand_word to quote escapes on values
5581 retrieved when expanding the positional parameters
5582 - fix parameter_brace_substring to quote escape characters on unquoted
5583 substrings extracted from variable values (needed to separate case
5584 VT_VARIABLE from VT_ARRAYMEMBER for this, since, because
5585 get_var_and_type calls array_value for VT_ARRAYMEMBER, we need to
5586 skip over quoted characters in an already-appropriately-quoted
5587 string to find the substring we want)
5588 - fix parameter_brace_substring to quote escape characters in the
5589 value returned by pos_params when expanding subsets of the
5590 positional parameters and not within double quotes (in which case
5591 pos_params() quotes the string for us)
5592 - fix parameter_brace_substring to quote escape characters in the
5593 value returned by array_subrange when expanding subsets of an
5594 array and not within double quotes (in which case
5595 array_subrange() quotes the string for us)
5596 - new function, quoted_strlen(s), does strlen(s) while skipping over
5597 characters quoted with CTLESC (#ifdef INCLUDE_UNUSED, since it's
5599 - changed pos_params() so it always returns a list whose members are
5600 quoted strings if (quoted&(Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) != 0
5603 - fix array_value to consistently call quote_escapes, even when a
5604 non-array variable is being subscripted with element 0, in which
5605 case we return the variable value
5608 - make the for_echo parameter to ansicstr a `flags' parameter that
5609 has its old `for echo' meaning if flags&1 is non-zero (which is
5610 consistent with the old code)
5611 - Added code to the `flags' parameter to ansicstr so that if flags&2
5612 is non-zero, CTLESC and CTLNUL are escaped with CTLESC in the
5614 - change ansiexpand() to call ansicstr with a `flags' parameter of 2
5618 lib/readline/histfile.c
5619 - when reading and writing the history file, use malloc instead of
5620 xmalloc and handle failures gracefully, so the application doesn't
5621 abort if the history file or history list is too big
5626 - changed array_value_internal to take an additional `int *'
5627 parameter, in which is returned the type of array indexing
5628 performed (array[@] vs. array or array[index])
5629 - changed array_value and get_array_value to take a corresponding
5630 extra parameter and pass it to array_value_internal
5631 - changed array_value_internal to no longer return newly-allocated
5632 memory or quote CTLESC and CTLNUL in the returned string if
5633 `simple' array indexing (subscript not `@' or `*') is being
5634 performed. This makes it more like a variable lookup
5637 - changed prototypes for array_value and get_array_value
5640 - added new parameter to call to get_array_value in expr_streval
5641 - don't need to free memory returned by get_array_value any more
5644 - quote_escapes now works with multibyte characters
5645 - dequote_string now works with multibyte characters
5646 - dequote_escapes is now needed, so it's compiled in, and it
5647 now works with multibyte characters
5648 - remove_quoted_escapes now just calls dequote_escapes and copies the
5649 result over the argument string
5650 - remove_quoted_nulls now returns its char * argument, parallels
5651 remove_quoted_escapes
5652 - parameter_brace_expand_word now passes the new argument to
5653 array_value and quotes CTLESC and CTLNUL in the result if it's a
5654 `simple' array expansion by calling quote_escapes
5655 - get_var_and_type now returns VT_ARRAYMEMBER for references like
5656 ${array} where `array' is an array variable (just like ${array[0]}).
5657 Documented (in comment) that a VT_VARIABLE return value means that
5658 quote_escapes has been called at some point
5659 - changed callers of get_var_and_type to no longer free value if
5660 VT_ARRAYMEMBER is returned as type
5661 - changed parameter_brace_substring and parameter_brace_patsub to
5662 call dequote_escapes on the value from get_var_and_type if the
5663 type is VT_VARIABLE, since the substring and pattern substitution
5664 code doesn't understand CTLESC quoting
5665 - parameter_brace_substring no longer needs to call quoted_substring
5666 for the VT_ARRAYMEMBER case
5667 - changed parameter_brace_patsub to call quote_escapes on the result
5668 of pat_subst for the VT_VARIABLE and VT_ARRAYMEMBER cases, and to
5669 quote the returned string in the VT_ARRAYVAR and VT_POSPARAMS cases
5670 if the `MATCH_QUOTED' flag isn't set (if it is, the pattern
5671 substitution functions perform any necessary quoting)
5672 - quoted_substring is no longer used; it's now #ifdef INCLUDE_UNUSED
5675 - new member in _malstats: u_bits32_t bytesreq, the total number of
5676 bytes requested by the caller via calls to malloc() and realloc()
5679 - print bytesreq member in _print_malloc_stats
5680 - don't print statistics for buckets for which nmal == 0 (no mallocs)
5683 - modified internal_malloc, internal_realloc to keep running total of
5684 number of bytes requested by calling application
5687 - sh_exit is now compiled in; exit_shell calls sh_exit
5690 - changed fatal_error, report_error, parser_error to call sh_exit
5695 - changed Q_NOQUOTE to Q_PATQUOTE; it makes the intent more clear
5698 - moved code from parameter_brace_expand into a new function that
5699 dispatches for pattern substitution: parameter_brace_remove_pattern
5700 - changed structure of parameter_brace_remove_pattern to be like
5701 parameter_brace_patsub and its ilk: call get_var_and_type to
5702 isolate the variable name, move the pattern isolation code out of
5703 the various *_remove_pattern functions into
5704 parameter_brace_remove_pattern and pass the results to the various
5705 functions, use a switch on the return value from get_var_and_type
5706 to decide which function to call, regularized the arguments to the
5707 separate pattern removal functions
5708 - parameter_brace_remove_pattern now properly quotes escape chars in
5710 - changed get_var_and_type to call dequote_escapes on the `value'
5711 parameter for case VT_VARIABLE and return the result in *valp,
5712 so the calling functions don't have to do it themselves; changed
5713 callers appropriately
5714 - fixed getpattern() where it broke posix compliance: if you enclose
5715 a pattern removal spec in double quotes, the outer double quotes
5716 have no effect on the pattern (POSIX.1-200x 2.6.2). This uncovered
5717 a bug in the test suite (!)
5720 - fixed a problem with quote_string_for_globbing where it would change
5721 consecutive CTLESC chars all to \ instead of changing every other
5726 lib/malloc/{malloc,stats}.c
5727 - moved declaration of _mstats to malloc.c so stats.o doesn't get
5728 linked into the shell if the stats functions aren't called
5733 - introduce `XCHAR' define, which is the type of arguments passed to
5734 strcoll/strcmp/strlen and their wide-character equivalents, added
5736 - static arrays in single-byte version of rangecmp() are `char', not
5737 `unsigned char', so compilers don't complain about calls to strcoll
5740 - casts for `XCHAR' and `XCHAR *' arguments to libc functions
5741 - use prototype declaration for BRACKMATCH if `PROTOTYPES' is defined
5742 to avoid problems with type promotion (unsigned char -> int)
5745 - `name' member of struct _COLLSYM is now of type `XCHAR *', since
5746 some compilers don't like `unsigned char *' initializers from
5749 [bash-2.05b-alpha1 released]
5753 builtins/{evalstring.c,common.h}
5754 - new flag for parse_and_execute, SEVAL_NOFREE, means to not free
5755 the argument string when finished
5758 - fixed a trivial typo in _rl_insert_char when reading multibyte
5760 - replace calls to ding() with rl_ding()
5763 - remove SIGN_EXTEND_CHAR and TOASCII macros; they're unused
5766 - include dispose_cmd.h for extern function declarations
5769 - include `shmbutil.h' and `xmalloc.h' for extern function declarations
5772 - include `xmalloc.h' for extern function declarations
5775 - fix maybe_make_restricted to use its argument instead of global
5779 - update copyright message to include this year
5781 lib/readline/display.c
5782 - fixes from Jiro SEKIBA <jir@yamato.ibm.com> to fix autowrapping
5783 when using multibyte characters
5786 - fixed a problem in BRACKMATCH where not enough memory was allocated
5787 to hold a multibyte character when parsing POSIX.2 char class names
5789 support/config.{guess,sub}
5790 - updated via patch from Paul Eggert with latest GNU additions
5793 - var_lookup should use its `vcontext' argument instead of
5794 unconditionally using `shell_variables'
5798 builtins/bind.def,doc/{bash.1,bashref.texi}
5799 - changed the usage summary and help text to make it clear that any
5800 readline command that may appear in ~/.inputrc may be supplied as
5801 one of the non-option arguments to `bind'
5803 builtins/mkbuiltins.c
5804 - added support for `-H' option, which means to write long documentation
5805 for each builtin to a separate file in the `helpfiles' directory
5807 builtins/Makefile.in
5808 - new target `helpdoc', just creates long doc files in helpfiles
5812 - new file, with zcatfd(int fd, int ofd, char *fn); dumps data from
5815 Makefile.in,lib/sh/Makefile.in
5816 - added zcatfd.c, zcatfd.o member of libsh.a
5818 builtins/evalstring.c
5819 - changed cat_file to call zcatfd(fd, 1, fn)
5821 builtins/{shopt,colon}.def
5822 - removed the $DOCNAME directive for `shopt', `true', and `false';
5824 - changed $DOCNAME for `:' to just be `colon' instead of
5827 builtins/reserved.def
5828 - added help entries for ((, [[, `for (('
5831 - add id++, id--, ++id, --id, ** to help text
5835 builtins/bashgetopt.[ch]
5836 - changed to allow options beginning with `+', enabled by a leading
5837 `+' in the option string
5838 - new variable, list_opttype, set to `-' or `+'
5840 builtins/{common.c,{builtin,eval,exit,fg_bg,let,printf,pushd,return,source,wait}.def
5841 - changes to allow a `--' option for every builtin that accepts
5842 operands but not options, as per posix.1-2001
5844 builtins/{declare,setattr}.def
5845 - use internal_getopt for parsing options, now that it supports `+'
5848 - use internal_getopt for initial option parse, now that it supports
5852 {configure,Makefile}.in, builtins/{Makefile.in,help.def,mkbuiltins.c}
5853 - support for a new configure option, ``--enable-separate-helpfiles'',
5854 moves the `long' help text to separate help files, installed by
5855 default into ${datadir}/bash, one file per builtin. Off by
5856 default -- it saves 47K, but it's only 47K, and it's in the text
5860 - build internal_getopt() option string argument from flags array at
5864 - new variable to control writing malloc stats at exit:
5865 malloc_trace_at_exit, 0 by default
5869 o partial page allocated on first call to malloc to make
5870 subsequent sbrks page-aligned no longer wasted
5871 o begin and end range guards are now the same value: the chunk
5873 o coalescing code was changed to attempt to coalesce first two
5874 adjacent blocks on the free list; enabled by default
5875 o blocks of size 32 are now candidates for larger block
5876 splitting, since 32 is the most popular size
5877 o blocks of size 32 are now candidates for smaller block
5879 o the IN_BUCKET check was changed to just make sure that the
5880 size isn't too big for the bucket, since the `busy block'
5881 checking code may increase the bucket by one or more,
5882 meaning that the old check would fail and cause a panic when
5883 a chunk allocated in such a way was freed
5884 o bin sizes are now precomputed and looked up in an array
5885 rather than being computed at runtime
5886 o moved the _mstats declaration here to avoid the stats code
5887 being linked in even when no stats functions were called
5888 (only matters if MALLOC_DEBUG is defined)
5889 o malloc now keeps track of the address of the top of the heap
5890 and will return large chunks to the system with calls to
5891 sbrk with a negative argument when freeing the top chunk.
5892 Two thresholds: LESSCORE_FRC means to unconditionally return
5893 memory to the system; LESSCORE_MIN means to return memory if
5894 there's at least one block already on the free list
5897 - stats struct now keeps track of number of block coalesces by bin,
5898 and the number of times memory was returned to the system by bin
5901 - trace_malloc_stats now takes a second argument: the name of the file
5902 to write to. The first `%p' in the template file name is replaced
5907 lib/malloc/imalloc.h
5908 - added some macros derived from dlmalloc and glibc malloc to inline
5909 memcpy and memset if the requested size is <= 32 bytes
5912 - use MALLOC_MEMSET instead of memset in internal_{malloc,free}
5915 - use OC_MEMSET (variant of MALLOC_MEMSET) in ocache_free
5917 configure.in, config.h.in
5918 - check for getservent(), define HAVE_GETSERVENT if found
5921 - punt immediately from bash_servicename_completion_function if
5922 HAVE_GETSERVENT is not defined (cygwin seems to not define it)
5923 - include "input.h" for extern save_token_state() and
5924 restore_token_state() declarations
5925 - change bash_execute_unix_command to call parse_and_execute with
5926 SEVAL_NOHIST flag so the command doesn't get saved on the history
5928 - change bash_execute_unix_command to save and restore the current
5929 command line count and the token state (last_read_token, etc.).
5930 Everything else is saved by either parse_and_execute directly or
5931 the call it makes to push_stream(). The shell_input_line stuff
5932 doesn't need to be saved and restored; it's not computed until
5938 - glob_filename and glob_vector now take an additional `flags' arg
5939 - define GX_MARKDIRS as possible flag value for glob_filename and
5943 - fixed some bugs with handling of `g' and `G' formats
5944 - make sure numtoa returns the fractional part correctly when passed 0
5945 - implemented thousands grouping for `'' flag character
5948 - a few changes to make it more bulletproof
5953 - added the couple of dozen lines of code to glob_dir_to_array to
5954 finish implementing GX_MARKDIRS
5957 - changed unset builtin so that it no longer considers unsetting an
5958 unset variable or function to be an error
5960 lib/readline/display.c
5961 - fix to rl_redisplay for a problem which caused display to be messed
5962 up when the last line of a multi-line prompt (possibly containing
5963 invisible characters) was longer than the screen width
5968 - use AC_DEFINE_UNQUOTED in BASH_SYS_DEFAULT_MAIL_DIR instead of
5969 enumerating all of the possible values and using AC_DEFINE
5973 Makefile.in, {builtins,support}/Makefile.in
5974 - new variables, CFLAGS_FOR_BUILD and CPPFLAGS_FOR_BUILD, substituted
5976 - changed CCFLAGS_FOR_BUILD to BASE_CCFLAGS, removing $(CPPFLAGS);
5977 CCFLAGS and CCFLAGS_FOR_BUILD now include $(BASE_CCFLAGS) with
5978 (possibly) different values for CPPFLAGS and CFLAGS
5979 - GCC_LINT_CFLAGS now includes $(BASE_CCFLAGS) and $(CPPFLAGS)
5980 instead of CCFLAGS_FOR_BUILD
5981 - new variable, LDFLAGS_FOR_BUILD, right now equivalent to LDFLAGS
5982 - remove $(CPPFLAGS) from recipes for buildversion, mksignames, and
5986 - compute and substitute CFLAGS_FOR_BUILD, CPPFLAGS_FOR_BUILD, and
5988 - changed qnx to use LOCAL_LDFLAGS and LOCAL_LIBS instead of putting
5989 everything in LOCAL_LDFLAGS
5991 builtins/Makefile.in
5992 - remove $(PROFILE_FLAGS) from recipe for building `mkbuiltins'
5993 - use LDFLAGS_FOR_BUILD instead of LDFLAGS in recipe for building
5997 - use $(CC_FOR_BUILD) and $(CCFLAGS_FOR_BUILD) to build auxiliary
5998 test programs (printenv, recho, zecho)
6001 - use CC_FOR_BUILD and CCFLAGS_FOR_BUILD in recipe for building
6004 lib/tilde/Makefile.in
6005 - substitute PROFILE_FLAGS, use PROFILE_FLAGS in $(CCFLAGS)
6009 Makefile.in, configure.in
6010 - moved RELSTATUS to configure.in; configure substitutes it into
6011 the generated Makefile
6014 - fix wchars() to deal with systems where MB_CUR_MAX is not a
6020 - add `,' to list of chars that are backslash-quoted. It doesn't
6021 hurt normal usage and prevents filenames with commas from being
6022 inappropriately split by brace expansion after using
6023 complete-into-braces
6028 - we only need the check of MB_CUR_MAX and the slow code for a
6029 few encodings, and even then only for a subset of the charset
6032 - some speedups for skipsubscript and multibyte chars from Bruno Haible
6035 - changed set_lang to call setlocale(LC_ALL, ...) if LC_ALL doesn't
6036 already have a value, but doesn't change any shell variables
6039 - major speedups from Bruno Haible, mostly concerned with reducing
6040 the number of strlen(3) calls
6043 - change callers of macros in shmbutil.h to add extra argument as
6045 - skip_single_quoted and skip_double_quoted take another argument:
6046 the length of the string; mostly useful when using multibyte chars
6047 - many speedups from precomputing string lengths at function start
6048 - fixed a small bug in de_backslash in the midst of rewriting for
6051 {braces,make_cmd,pathexp}.c
6052 - change callers of macros in shmbutil.h to add extra argument as
6056 - fix a one-too-far problem with multibyte chars in
6057 unquoted_glob_pattern_p
6060 - brace_gobbler takes a new argument, the length of the passed string
6061 - expand_amble takes a new argument, the length of the passed string
6066 - modified remove_quoted_nulls to eliminate the memory allocation and
6067 do the copy in place using the same strategy as de_backslash
6069 lib/readline/{rldefs.h,complete.c}
6070 - new define RL_QF_OTHER_QUOTE, so _rl_find_completion_word can note
6071 that it found a quoting character other than \'" that appears in
6072 rl_completer_quote_characters
6077 - save and restore old value of jobs_list_frozen when calling trap
6078 handlers from set_job_status_and_cleanup to avoid seg faults when
6079 running recursive trap handlers
6084 - new #defines to use for value of changed_dollar_vars (provides
6085 information about the caller who wants to blow away the old dollar
6089 - changed set_dollar_vars_changed to set changed_dollar_vars to one
6090 of the ARGS_* values depending on the caller and environment
6093 - source restores the positional parameters unless the `set' builtin
6094 was called to specify a new set while not executing a shell function
6099 - new file, was in CWRU/POSIX.NOTES
6101 doc/{Makefile.in,Makefile}
6102 - changed `posix' rule to modify ../POSIX
6105 - write to `POSIX' by default
6108 - when ansicstr is parsing a format string for `echo -e' (or the
6109 equivalent xpg_echo option is enabled), obey the POSIX-2001/SUSv3
6110 standard and accept 0-3 octal digits after a leading `0'
6112 doc/{bash.1,bashref.texi}
6113 - updated `echo' description to note that up to three octal digits
6114 are now accepted following `\0'
6119 - remove the generated documentation on `make distclean' if the
6120 build directory and source directory are not the same
6123 - descend into `support' subdirectory on a `make clean' and
6125 - remove parser-built, y.tab[ch] on a `make distclean' if the build
6126 directory and source directory are not the same
6129 - support various `clean' targets and remove man2html.o and man2html
6131 {configure,Makefile}.in
6132 - move values for DEBUG and MALLOC_DEBUG into configure.in; on by
6133 default for development versions; off by default for releases
6134 (off for profiling, too)
6139 - modified the grammar to allow a simple_list followed by yacc_EOF
6140 to terminate a command. This fixes problems with things like
6141 a backslash-newline at the end of an `eval'd string
6142 - change handle_eof_input_unit() to reset the token state before
6143 calling prompt_again(), in case the prompt to be evaluated contains
6144 a command substitution
6148 lib/readline/vi_mode.c
6149 - fix `r' command (rl_vi_change_char) when HANDLE_MULTIBYTE is defined
6155 - don't try to print `file' argument to _watch_warn if it's null
6158 - changed guard checking code in internal_{malloc,free,realloc} to
6159 access memory as (char *) and copy into a union instead of
6160 casting and dereferencing a pointer to u_bits32_t, since that
6161 results in unaligned accesses which will cause Sparcs to upchuck
6165 [bash-2.05b-beta1 released]
6168 - fixed a problem with rl_transpose_chars on systems supporting
6169 multibyte characters with a locale that doesn't have any multibyte
6175 - fix a/=0 and a%=0 to throw evaluation errors rather than core dumps
6177 lib/readline/display.c
6178 - fix core dump when line wrapping a multibyte character (line
6179 accidentally dropped from the original patch)
6181 lib/readline/mbutil.c
6182 - fix reversed return value from _rl_is_mbchar_matched; fixes problem
6183 with backward-char-search
6188 - fix getenv to not free value returned by find_tempenv_variable
6189 - add setenv, putenv, unsetenv for completeness
6194 - change init_noninteractive to init expand_aliases to the value of
6196 - don't initialize expand_aliases to posixly_correct anywhere else.
6197 This allows the -O expand_aliases invocation option to work correctly
6200 - fix move_to_high_fd to not try the dup2 unless the fd loop results
6201 in an fd > 3; just return the passed file descriptor otherwise
6202 - use HIGH_FD_MAX, defined in general.h, instead of hard-coded 256
6203 as highest file descriptor to try
6206 - in process_substitute, call move_to_high_fd with `maxfd' parameter
6207 of -1 instead of 64, so move_to_high_fd will use its maximum
6212 - don't bother calling MALLOC_MEMSET if the requested size is 0
6214 builtins/setattr.def
6215 - note in short doc that export and readonly can take assignment
6216 statements as arguments
6219 - new function, error_prolog(), to capture common error message
6220 prefix code (except for parser errors)
6225 - add tests for standard-conforming declarations for putenv and
6226 unsetenv in system header files
6228 {configure,config.h}.in
6229 - call BASH_FUNC_STD_PUTENV and BASH_FUNC_STD_UNSETENV, define
6230 HAVE_STD_GETENV and HAVE_STD_UNSETENV, respectively, if they
6234 - change putenv and unsetenv to take differing prototypes in
6235 stdlib.h into account
6239 [bash-2.05b-beta2 released]
6244 - fix get_job_spec so that %N works when N is the size of the jobs
6245 list (%8 means job 8, but the 7th member of the jobs array, so
6246 it's OK if N == job_slots because the function returns N-1)
6251 - turn off line editing if $EMACS is set to `t'
6256 - remove mention of `-i' from long help doc, since it has no effect