- 12/23/1996
- ----------
-[bash-2.0 released]
+ 2/14/2011
+ ---------
+[bash-4.2 released]
- 12/27
- -----
-configure.in
- - don't automatically use GNU malloc on FreeBSD, the builtin one
- is supposed to be better (but doesn't have the debugging hooks)
+ 2/15
+ ----
+lib/glob/gmisc.c
+ - fix wmatchlen and umatchlen to avoid going past the end of the
+ string on an incomplete bracket expression that ends with a
+ NUL. Partial fix for bug reported by Clark Wang <dearvoid@gmail.com>
-builtins/exec.def
- - check that full_pathname(command) doesn't return NULL because of
- inaccessible parent directories
+ 2/16
+ ----
+subst.h
+ - new string extract flag value: SX_WORD. Used when calling
+ extract_dollar_brace_string to skip over the word in
+ ${param op word} from parameter_brace_expand
-support/config.sub
- - recognize OpenBSD
+subst.c
+ - change parameter_brace_expand to add SX_WORD to flags passed to
+ extract_dollar_brace_string
+ - change parameter_brace_expand to use SX_POSIXEXP for all non-posix
+ word expansion operators that treat single quotes as special, not
+ just % and #
+ - change extract_dollar_brace_string to initialize dolbrace_state to
+ DOLBRACE_WORD if SX_WORD flag supplied and we shouldn't use
+ DOLBRACE_QUOTE. Fixes bug reported by Juergen Daubert <jue@jue.li>
-execute_cmd.c
- - broke the code that opens a file for output redirection when in
- noclobber mode out into a separate function: noclobber_open().
- This tries to avoid race conditions and file replacement between
- stat(2) and open(2)
+doc/{bash.1,bashref.texi}
+ - document the exact expansions here strings undergo
-subst.c
- - make sure pat_subst does not run off the end of its return
- string when copying the unmatched portion of the input string
+ 2/17
+ ----
+lib/readline/vi_mode.c
+ - make sure that `dd', `cc', and `yy' call vidomove_dispatch from
+ rl_domove_read_callback. Fixes bug reported by Clark Wang
+ <dearvoid@gmail.com>
- 12/30
- -----
-doc/Makefile.in
- - don't install readline.3 by default
+lib/readline/callback.c
+ - make sure _rl_internal_char_cleanup is called after the
+ vi-motion callbacks (rl_vi_domove_callback) in rl_callback_read_char.
+ Companion to above fix
-lib/tilde/tilde.c
- - removed an unnecessary check for string[i] being non-null in
- tilde_find_suffix
+doc/{bash.1,bashref.texi}
+ - make sure that the text describing the rhs of the == and =~
+ operators to [[ states that only the quoted portion of the pattern
+ is matched as a string
- 12/31
- -----
-support/config.{sub,guess}
- - merged in changes from config.sub in autoconf-2.12 distribution
+ 2/18
+ ----
+lib/glob/gmisc.c
+ - better fix for umatchlen/wmatchlen: keep track of the number of
+ characters in a bracket expression as the value to increase
+ matchlen by if the bracket expression is not well-formed. Fixes
+ bug reported by Clark Wang <dearvoid@gmail.com>
-lib/readline/readline.c
- - in rl_newline, only call _rl_vi_done_inserting and _rl_vi_reset_last
- if readline is currently in vi mode
+subst.c
+ - change expand_string_for_rhs so that it sets the W_NOSPLIT2 flag
+ in the word flags. We will not perform word splitting or quote
+ removal on the result, so we do not want to add quoted nulls if
+ we see "" or ''. Fixes bug reported by Mike Frysinger
+ <vapier@gentoo.org>
-lib/readline/display.c
- - corrected a misuse of inv_lbreaks where vis_lbreaks was wanted in
- the code that decides whether the cursor is at the beginning of
- an otherwise-empty line
+ 2/19
+ ----
+variables.c
+ - new function, int chkexport(name), checks whether variable NAME is
+ exported and remakes the export environment if necessary. Returns
+ 1 if NAME is exported and 0 if not
+ - call chkexport(name) to get tzset to look at the right variable in
+ the environment when modifying TZ in sv_tz. Don't call tzset if
+ chkexport doesn't indicate that the variable is exported
- 1/2
- ---
-support/bashbug.sh
- - fixed a typo, thanks to eggert@twinsun.com
+variables.h
+ - new extern declaration for chkexport
-aclocal.m4
- - new test, BASH_STRUCT_DIRENT_D_FILENO, testing for d_fileno member
- of struct dirent
-configure.in
- - call BASH_STRUCT_DIRENT_D_FILENO
+{parse.y,builtins/printf.def}
+ - call sv_tz before calling localtime() when formatting time strings
+ in prompt strings or using printf. Fixes bug reported by
+ Dennis Williamson <dennistwilliamson@gmail.com>
-config.h.in
- - new #define for STRUCT_DIRENT_HAS_D_FILENO
+execute_cmd.c
+ - modify fix of 2/9 to add casts when those variables are passed to
+ functions; some compilers throw errors instead of warnings. Report
+ and fix from Joachim Schmitz <jojo@schmitz-digital.de>
-lib/posixheaders/posixdir.h
- - only define d_fileno as d_ino if STRUCT_DIRENT_HAS_D_INO is defined
- and STRUCT_DIRENT_HAS_D_FILENO is not defined. This fixed the
- problem of compiling getcwd.c on SunOS4.1.4 with cc
+support/shobj-conf
+ - add a stanza for nsk on the Tandem from Joachim Schmitz
+ <jojo@schmitz-digital.de>
- 1/3
- ---
-lib/readline/complete.c
- - fix a memory-used-after-freed bug reported by Andreas Schwab
+{shell,lib/readline/shell}.c
+ - Tandem systems should use getpwnam (getlogin()); for some reason
+ they don't do well with using getuid(). Fix from Joachim Schmitz
+ <jojo@schmitz-digital.de>
-configure.in
- - call BASH_CHECK_SOCKLIB only if getpeername is not found in libc
- (ac_cv_func_getpeername = no)
+ 3/1
+ ---
+variables.c
+ - make sure that the return value from find_variable is non-null
+ before trying to use it in chkexport. Fixes bug reported by
+ Evangelos Foutras <foutrelis@gmail.com>
- 1/13
- ----
+ 3/3
+ ---
+parse.y
+ - when adding $$ to the current token buffer in read_token_word(),
+ don't xmalloc a buffer for two characters and then strcpy it, just
+ copy the characters directly into the token buffer. Fix from
+ Michael Whitten <mfwitten@gmail.com>
-builtins/getopt.h
- - change #define guard to _SH_GETOPT_H to avoid similar guards in
- /usr/include/getopt.h (Dec OSF/1 4.x, for example)
+execute_cmd.c
+ - fix expand_word_unsplit to add the W_NOSPLIT2 flag to the word to
+ be expanded, so "" doesn't add CTLNUL. Similar to fix of 2/18 to
+ expand_string_for_rhs. Fixes bug reported by Nathanael D. Noblet
+ <nathanael@gnat.ca> and Matthias Klose <doko@debian.org>
-variables.h
- - fix assign_array_from_string so that it rejects attempts to assign
- to readonly variables
+parse.y
+ - fix extended_glob case of read_token_word to allocate an extra
+ space in the buffer for the next character read after the extended
+ glob specification if it's a CTLESC or CTLNUL. Report and fix from
+ Michael Witten <mfwitten@gmail.com>
+ - fix shell expansions case of read_token_word to allocate an extra
+ space in the buffer for the next character read after the shell
+ expansion if it's a CTLESC or CTLNUL. Report and fix from
+ Michael Witten <mfwitten@gmail.com>
+ - TENTATIVE: fix read_token_word to reduce the amount of buffer space
+ required to hold the translated and double-quoted value of $"..."
+ strings. Report and fix from Michael Witten <mfwitten@gmail.com>
+ - change code around got_character and got_escaped_character labels to
+ make sure that we call RESIZE_MALLOCED_BUFFER before adding the
+ CTLESC before a CTLESC or CTLNUL, and before adding the character if
+ we're not adding a CTLESC. Report and fix from
+ Michael Witten <mfwitten@gmail.com>
subst.c
- - fix verify_substring_values to handle offsets that are past the
- end or before the beginning (in the case of a negative offset)
- of the expanded variable value
+ - new param flags value, PF_ASSIGNRHS, mirrors W_ASSIGNRHS, noting that
+ parameter expansion is on rhs of assignment statement. That inhibits
+ word splitting
+ - change param_expand to call string_list_dollar_at with quoted == 1
+ if PF_ASSIGNRHS is set, so it will quote IFS characters in the
+ positional parameter before separating them with the first char of
+ $IFS. This keeps the rhs from being split inappropriately. Fixes
+ bug reported by Andres Perera <andres.p@zoho.com>
- 1/14
- ----
-bashline.c
- - fix a problem where any completion after a `cmd` command
- substitution would inappropriately attempt command completion,
- even if the previous command substitution was correctly closed
+ 3/4
+ ---
+lib/readline/bind.c
+ - add a missing free of `names' in rl_function_dumper. Bug report
+ and fix from Michael Snyder <msnyder@vmware.com>
-builtins/evalstring.c
- - unwind_protect remember_on_history even if the shell is not
- interactive, since history can now be used in scripts, and
- `source' will turn off interactive_shell before calling
- parse_and_execute
+ 3/5
+ ---
+lib/readline/rltty.c
+ - change rl_deprep_terminal so it uses fileno (stdin) for the tty fd
+ if rl_instream is not set, like rl_prep_terminal
+
+ 3/6
+ ---
+lib/readline/display.c
+ - fix rl_message to use a dynamically-allocated buffer instead of a
+ fixed-size buffer of 128 chars for the `local message prompt'. Bug
+ report and fix from Micah Cowan <micah@cowan.name>
+ 3/7
+ ---
jobs.c
- - new function get_job_by_pid(pid, block) to translate a pid to
- a job number. The block argument says whether or not to block
- SIGCHLD
+ - add sentinel to wait_sigint_handler so it only sets wait_sigint_received
+ if waiting_for_child is non-zero; otherwise, it restores the old
+ SIGINT handler and sends itself the SIGINT
+ - set waiting_for_child around the calls to waitchld that use it to
+ synchronously wait for a process
+ - change logic that decides whether or not the child process blocked
+ or handled SIGINT based on whether or not waitpid returns -1/EINTR
+ and the shell receives a SIGINT and the child does not exit. If
+ the child later exits due to SIGINT, cancel the assumoption that it
+ was handled
+ - instead of testing whether or not the child exited due to SIGINT
+ when deciding whether the shell should act on a SIGINT it received
+ while waiting, test whether or not we think the child caught
+ SIGINT. If it did, we let it go (unless the shell has it trapped);
+ if it did not catch it, the shell acts on the SIGINT. Fix from
+ Linus Torvalds <torvalds@linux-foundation.org>, bug report originally
+ from Oleg Nesterov <oleg@redhat.com>
-jobs.h
- - new extern declaration for get_job_by_pid
+ 3/8
+ ---
+shell.c
+ - initialize no_line_editing to 1 if READLINE is not defined -- we
+ can't have line editing without readline
-builtins/jobs.def
- - call get_job_by_pid if an argument appears to be a pid rather
- than a jobspec
+ 3/12
+ ----
+lib/readline/signals.c
+ - add SIGHUP to the set of signals readline handles
-configure.in
- - configure --without-gnu-malloc automatically on MachTen 4.x
+lib/readline/doc/rltech.texi
+ - document that SIGHUP is now part of the set of signals readline
+ handles
-builtins/cd.def
- - change to mindist() so that a best guess of `.' returns 3,
- which means not reasonable
+lib/readline/input.c
+ - if _rl_caught_signal indicates that read() was interrupted by a
+ SIGHUP or SIGTERM, return READERR or EOF as appropriate
+ - call rl_event_hook, if it's set, if call to read in rl_getc
+ returns -1/EINTR. If rl_event_hook doesn't do anything, this
+ continues the loop as before. This handles the other fatal
+ signals
-lib/posixheaders/memalloc.h
- - changed hpux_9 to __hpux, since the new config stuff doesn't
- define hpux_9
+execute_cmd.c
+ - add a couple of QUIT; calls to execute_disk_command and
+ execute_simple_command to improve responsiveness to interrupts
+ and fatal signals
-subst.c
- - fix parameter_brace_patsub to handle null patterns (doesn't
- do anything)
+input.c
+ - rearrange getc_with_restart so that the return values from read()
+ are handled right
-oslib.c
- - slight change to bzero replacement
+parse.y
+ - don't need to set terminate_immediately in yy_stream_get, since
+ getc_with_restart checks for terminating signals itself
+ - since readline returns READERR on SIGHUP or SIGTERM, don't need
+ to set terminate_immediately. Still doesn't handle other
+ signals well -- will have to check that some more
-support/bashbug.sh
- - changed TEMP to be /tmp/bbug.$$ as a sop to systems with 14-char
- file names
+bashline.c
+ - new function, bash_event_hook, for rl_event_hook. Just checks for
+ terminating signals and acts on them using CHECK_TERMSIG.
+ - set rl_event_hook to bash_event_hook
-doc/bashref.texi
- - add note to POSIX Mode section that the output of `set' when
- invoked without arguments is sorted when in POSIX mode
+builtins/read.def
+ - take out setting terminate_immediately; add calls to CHECK_TERMSIG
+ after read calls
- 1/15
- ----
-support/recho.c
- - a couple of changes prompted by a `gcc -Wall'
+doc/{bash.1,bashref.texi}
+ - move the text describing the effect of negative subscripts used to
+ reference indexed array elements to the paragraphs describing
+ ${parameter[subscript]}, since that's where they are implemented.
+ Pointed out by Christopher F. A. Johnson <cfajohnson@gmail.com>
-subst.c
- - changed ASSIGN_RETURN macro to use the do...while(0) idiom to
- avoid problems with its multiple statements
+arrayfunc.[ch],subst.c
+ - array_expand_index now takes a new first argument: a SHELL_VAR *
+ of the array variable being subscripted. Can be used later to fully
+ implement negative subscripts
-builtins/setattr.def
- - a bad identifier given to readonly or export without an assignment
- statement (e.g. `readonly a[5]') is an error, but not an assignment
- error (i.e., return EXECUTION_FAILURE rather than EX_BADASSIGN)
+ 3/14
+ ----
+lib/glob/glob.c
+ - fix mbskipname to not turn the directory entry name into a wide char
+ string if the conversion of the pattern to a wide char string fails
+ - fix mbskipname to call skipname if either the pattern or the filename
+ can't be converted into a wide-char string
-tests/{{array,new-exp}.,tilde-}tests
- - added `set +o posix' at the beginning to disable POSIX mode, which
- causes some of the tests to fail. Some systems (e.g. LINUX-FT),
- set POSIXLY_CORRECT by default
+lib/glob/xmbsrtowcs.c
+ - fix xdupmbstowcs2 to handle return value of 0 from mbsnrtowcs and
+ short-circuit with failure in that case. Fixes bug reported by
+ Roman Rakus <rrakus@redhat.com>
-tests/test-tests
- - added a warning if $UID is 0 to the effect that the test suite
- should not be run as root
- - worked around the `noread' and `nowrite' tests failing when run
- as root
+ 3/15
+ ----
+bashline.c
+ - new variable, bash_filename_quote_characters to store the value
+ assigned to rl_filename_quote_characters so it can be restored
+ if changed.
+ - change bashline_reset and attempt_shell_completion to restore
+ rl_filename_quote_characters if not set to default
-test.c
- - began removing the remains of the STANDALONE code, since test is
- included in GNU shellutils
+ 3/22
+ ----
+lib/glob/glob.c
+ - wdequote_pathname falls back to udequote_pathname if xdupmbstowcs
+ fails to convert the pathname to a wide-character string
+
+lib/glob/xmbsrtowcs.c
+ - xdupmbstowcs2: change to fix problem with leading '\\' (results in
+ nms == 0, which causes it to short-circuit with failure right
+ away). Fixes bug pointed out by Werner Fink <werner@suse.de>
+ - xdupmbstowcs2: compensate for mbsnrtowcs returning 0 by taking the
+ next single-byte character and going on
+ - xdupmbstowcs2: change memory allocation to increase by WSBUF_INC
+ bytes; try to avoid calls to realloc (even if they don't actually
+ result in more memory being allocated)
- 1/16
+ 3/24
----
-lib/readline/{readline,display}.c
- - a couple of slight changes to build on Win95 using djgpp (reported
- by x-aes@telelogic.se)
+doc/{bash.1,bashref.texi}
+ - slightly modify BASH_SUBSHELL description based on complaint from
+ Sam Liddicott <sam@liddicott.com>
-Makefile.in
- - changed TERMCAP_LIBDIR to TERM_LIBDIR, so building the termcap
- library (if necessary) should work now
+ 3/25
+ ----
+trap.c
+ - change free_trap_strings to not call free_trap_string for signals
+ that are being ignored, like reset_or_restore_signal_handlers.
+ Fixes bug reported by Satoshi Takahashi <blue3waters@gmail.com>
-bashline.c
- - new function: quote_word_break_characters(), to backslash-quote
- characters in a filename that the readline completion code would
- treat as word breaks
- - change bash_quote_filename to call quote_word_break_characters if
- the completion quoting style says to use backslashes
- - add `:' to rl_filename_quote_characters, since it's part of
- filename_word_break_characters
-
-lib/posixheaders/posixjmp.h
- - new file, with half of bashjmp.h
- - posixjmp.h and lib/readline/posixjmp.h are symlinks to this file
-
-bashjmp.h
- - include "posixjmp.h" for possible redefinitions of setjmp/longjmp
- and procenv_t
+ 3/26
+ ----
+lib/readline/rltypedefs.h
+ - remove old Function/VFunction/CPFunction/CPPFunction typedefs as
+ suggested by Tom Tromey <tromey@redhat.com>
- 1/17
+lib/readline/rlstdc.h
+ - move defines for USE_VARARGS/PREFER_STDARG/PREFER_VARARGS from
+ config.h.in to here because declaration of rl_message in
+ readline.h uses the defines. This makes it hard for another packages
+ to use after the header files are installed, since config.h is not
+ one of the installed files. Suggested by Tom Tromey
+ <tromey@redhat.com>
+
+ 3/27
----
-shell.c
- - bad options now cause the standard shell usage message (a subset
- of what `bash --help' prints) to be displayed on stderr
+print_cmd.c
+ - change indirection_string from a static buffer to a dynamic one
+ managed by indirection_level_string(), so we don't end up truncating
+ PS4. Suggested by Dennis Williamson <dennistwilliamson@gmail.com>
-trap.c
- - don't free the trap command for a DEBUG trap in
- restore_default_signal if SIG_INPROGRESS is set -- there's already
- a pointer saved to the old value in _run_trap_internal. This
- makes bashdb run better, too
+lib/readline/shell.c
+ - change sh_set_lines_and_columns to use static buffers instead of
+ allocating the buffers to pass to setenv/putenv
+
+lib/readline/terminal.c
+ - change _rl_get_screen_size to not call sh_set_lines_and_columns if
+ ignore_env == 0
+ - _rl_sigwinch_resize_terminal: new function to just retrieve terminal
+ size, ignoring environment
-examples/bashdb/bashdb.{pre,fns}
- - a couple of minor fixes; it actually has a chance of working now
+lib/readline/rlprivate.h
+ - new external declaration for _rl_sigwinch_resize_terminal() (currently
+ unused)
- 1/21
+lib/readline/signals.c
+ - rl_sigwinch_handler: set _rl_caught_signal to SIGWINCH
+ - rl_sigwinch_handler: don't immediately call rl_resize_terminal; just
+ leave _rl_caught_signal set for RL_CHECK_SIGNALS to handle
+ - _rl_signal_handler: call rl_resize_terminal if sig == SIGWINCH.
+ Should fix hang when sending multiple repeated SIGWINCH reported by
+ Henning Bekel <h.bekel@googlemail.com>
+
+ 3/29
----
-config.h.in
- - add a define for <dlfcn.h>, HAVE_DLFCN_H
+lib/sh/snprintf.c
+ - include math.h for any defines for isinf/isnan
+ - use code from gnulib documentation to implement isinf/isnan if they
+ are not defined
configure.in
- - look for <dlfcn.h>, define HAVE_DLFCN_H if found
+ - don't check for isinf or isnan; c99 says they're macros anyway
+
+config.h.in
+ - remove defines for ISINF_IN_LIBC and ISNAN_IN_LIBC, no longer used
+ by snprintf.c
-builtins/enable.def
- - include <dlfcn.h> only if HAVE_DLFCN_H is defined
+ 4/2
+ ---
+braces.c
+ - brace_gobbler: fix to understand double-quoted command substitution,
+ since the shell understands unquoted comsubs. Fixes bug reported
+ by Michael Whitten <mfwitten@gmail.com>
lib/readline/display.c
- - renamed clear_to_eol to _rl_clear_to_eol and made it global, so
- other library files (readline.c) can use it
- - new function _rl_clear_screen, to clear the screen with the right
- termcap escape sequence
+ - include <pc.h> on MDOS
+ - get and set screen size using DJGPP-specific calls on MSDOS
+ - move cursor up clear screen using DJGPP-specific calls
+ - don't call tputs on DJGPP; there is no good terminfo support
-lib/readline/readline.c
- - call _rl_clear_to_eol and _rl_clear_screen instead of using tputs
- - extern declarations for _rl_clear_to_eol and _rl_clear_screen
+lib/readline/terminal.c
+ - include <pc.h> on MDOS
+ - get and set screen size using DJGPP-specific calls on MSDOS
+ - use DJGPP-specific initialization on MSDOS, zeroing all the
+ _rl_term_* variables
+ - don't call tputs on DJGPP; there is no good terminfo support
+ DJGPP support from Eli Zaretskii <eliz@gnu.org>
- 1/22
- ----
-mailcheck.c
- - fixed a problem in make_default_mailpath() where a slash was not
- added between the default mail directory and the username
+ 4/6
+ ---
- 1/23
+config-top.h
+ - change DEFAULT_PATH_VALUE to something more useful and modern
+
+ 4/8
+ ---
+tests/printf2.sub
+ - make sure LC_ALL and LC_CTYPE are set so LANG assignment takes effect.
+ Reported by Cedric Arbogast <arbogast.cedric@gmail.com>
+
+ 4/11
----
-stringlib.c
- - added a fourth parameter to ansicstr: the length of the returned
- string
+include/chartypes.h
+ - fix a couple of dicey defines (though ones that don't cause any
+ compiler warnings) in IN_CTYPE_DOMAIN
-externs.h
- - changed declaration of ansicstr
+doc/{bashref.texi,bash.1}
+ - add note referring to duplicating file descriptors in sections
+ describing redirecting stdout and stderr and appending to stdout
+ and stderr. Suggested by Matthew Dinger <mdinger.bugzilla@gmail.com>
-parse.y
- - changed call to ansicstr -- saves a call to strlen
+pcomplete.c
+ - it_init_helptopics: new function to support completing on help topics,
+ not just builtins
+ - it_helptopics: new programmable completion list of help topics
+ - build list of helptopic completions in gen_action_completions on
+ demand
-builtins/echo.def
- - changed call to ansicstr
- - if do_v9 is non-zero, use putchar to output the string instead
- of printf, since there may be embedded NULL characters
+pcomplete.h
+ - new extern declaration for it_helptopics
+
+builtins/complete.def
+ - the `helptopic' action now maps to CA_HELPTOPIC intead of CA_BUILTIN,
+ since there are more help topics than just builtins. Suggested by
+ Clark Wang <dearvoid@gmail.com>
-doc/{bash.1,bashref.texi}, builtins/trap.def
- - modified the `trap' documentation to make it clearer that trap
- takes multiple signal specs as arguments
+ 4/12
+ ----
+print_cmd.c
+ - fix print_arith_for_command to add a call to PRINT_DEFERRED_HEREDOCS
+ before ending the body of the command, so heredocs get attached to
+ the right command instead of to the loop. From gentoo bug 363371
+ http://bugs.gentoo.org/show_bug.cgi?id=363371
-jobs.c, nojobs.c, jobs.h
- - renamed initialize_jobs to initialize_job_control, added an
- argument (force)
+execute_cmd.c
+ - change coproc_pidchk to unset the appropriate shell variables when
+ the (currently single) known coproc pid terminates
+ - cleanup and new functions to fully support multiple coprocesses when
+ and if I decide to go there
-jobs.c
- - set shell_tty to fileno(stderr) in initialize_job_control if
- the shell is not interactive. This fixes the problem of bad
- tty pgrps when monitor mode is turned on in a non-interactive
- shell
+ 4/13
+ ----
+print_cmd.c
+ - fix print_group_command to add a call to PRINT_DEFERRED_HEREDOCS
+ after call to make_command_string_internal before printing closing
+ `}'
+ - fix make_command_string_internal to add a call to
+ PRINT_DEFERRED_HEREDOCS after recursive call to
+ make_command_string_internal in case cm_subshell before printing
+ closing `)'
-sig.c
- - made initialize_terminating_signals do only that; moved the rest
- of the code that used to be there into a new function:
- initialize_shell_signals, which calls initialize_terminating_signals
- if the shell is interactive
- - initialize_terminating_signals is now extern
- - made reset_terminating_signals return immediately if
- termsigs_intitialized is zero, meaning that
- initialize_terminating_signals has not been called
+ 4/14
+ ----
+print_cmd.c
+ - change overlapping strcpy in named_function_string to memmove
sig.h
- - new extern declaration for initialize_terminating_signals
+ - UNBLOCK_SIGNAL: convenience define, same as UNBLOCK_CHILD, just
+ restores an old signal mask
trap.c
- - call initialize_terminating_signals from set_signal if sig is
- EXIT_TRAP and the shell is not interactive. Since the terminating
- signals do not need to be initialized until a trap on exit is
- set, not doing that at startup should result in a speed increase
- for scripts
+ - set_signal: instead of setting the signal handler to SIG_IGN while
+ installing the new trap handler, block the signal and unblock it
+ after the new handler is installed. Fixes bug reported by Roman
+ Rakus <rrakus@redhat.com>
-execute_cmd.c
- - save and restore command->flags in time_command, so you can use
- `time command' in a loop
+ 4/15
+ ----
+doc/{bash.1,bashref.texi}
+ - make it clear that enabling monitor mode means that all jobs run in
+ separate process groups
- 1/24
+ 4/18
----
-lib/readline/display.c
- - fix redisplay code to wrap correctly if the prompt is longer than
- the screen width (reported by bos@Eng.Sun.COM)
+builtins/fc.def
+ - update fix of 4/15/2010 to not take saved_command_line_count into
+ account when stepping down the history list to make sure that
+ last_hist indexes something that is valid. Fixes bug reported by
+ <piuma@piumalab.org>
-lib/readline/undo.c
- - don't include <setjmp.h>, it's not needed
+ 4/19
+ ----
+builtins/fc.def
+ - fc_gethnum: make sure the calculation to decide the last history
+ entry is exactly the same as fc_builtin. Fixes bug uncovered by
+ fix of 4/18 to stop seg fault
-lib/readline/{util,readline}.c
- - include "posixjmp.h" instead of <setjmp.h>
- - readline_top_level is now a `procenv_t' instead of a `jmp_buf'
- (now readline uses the correct posix semantics for preserving
- the signal mask and other things across longjmp)
+ 4/22
+ ----
+lib/readline/terminal.c
+ - change _rl_enable_meta_key to set a flag indicating that it sent the
+ enable-meta sequence
+ - _rl_disable_meta_key: new function to turn off meta mode after we
+ turned it on with _rl_enable_meta_key
-parse.y
- - fixes to push_string/pop_string to make them more general -- they
- now can be used generally, instead of having to be associated
- with an alias being expanded
- - fixes to the parser so that it parses (( ls abc; ls def); ls ghi)
- as a nested subshell command for backwards compatibility. Broke
- the double-paren expression parsing off into a new function:
- parse_arith_cmd, called from read_token when a `((' is seen. If
- it looks like an arithmetic command, return `let' and set things
- up so that the expression is returned as a double-quoted string
- by the next call to read_token. If it's a nested subshell, push
- the text we parsed onto the list of strings for later consumption
- and return `('
+lib/readline/rlprivate.h
+ - extern declaration for _rl_disable_meta_key
-lib/glob/glob.c
- - fix glob_vector so it doesn't short-circuit checking a filename if
- it starts with a `.' and the pattern starts with `\.' (if
- noglob_dot_filenames is set). This makes `".junk2"*' match
- `.junk2.txt' correctly
+configure.in
+ - if not cross-compiling, set CFLAGS_FOR_BUILD from any CFLAGS inherited
+ from the environment. Fixes HP/UX build problem reported by
+ "Daniel Richard G." <skunk@iSKUNK.ORG>
- 1/27
+ 4/26
----
-support/bashbug.sh
- - ask for confirmation before sending the bug report
-
-builtins/fc.def
- - when editing and re-executing a multiline command, make sure
- current_command_line_count is initialized and then incremented
- for each line read from the file so that the lines added to
- the history list by fc_replhist and fc_addhist obey the `lithist'
- and `cmdhist' shopt options. Reported by tibbitts@pb.seflin.org
+config-top.h
+ - define MULTIPLE_COPROCS to 0 so the code is still disabled but easy
+ to enable via configure option or editing this file
- 1/28
+ 4/29
----
-lib/readline/readline.h
- - added a couple of extern declarations for variables described in
- the documentation but heretofore undeclared
+lib/sh/eaccess.c
+ - freebsd provides faccessat, with the same misfeature as their eaccess
+ and access implementations (X_OK returns true for uid==0 regardless
+ of the actual file permissions), so reorganize code to check the
+ file permissions as with eaccess. Report and fix from Johan Hattne
+ <johan.hattne@utsouthwestern.edu>
-builtins/ulimit.def
- - try to catch some classes of integer overflows before calling
- set_limit
+ 5/2
+ ---
+doc/{bash.1,bashref.texi}
+ - add forward reference to `Pattern Matching' from `Pathname
+ Expansion', suggested by Greg Wooledge <wooledg@eeg.ccf.org>
- 1/29
- ----
-parse.y
- - push and pop a `(' delimiter while parsing a $(...) construct, so
- the history code doesn't try to inappropriately add a `;' when
- a newline appears in the `...'
+ 5/5
+ ---
+pcomplib.c
+ - the bash_completion project now distributes over 200 completions
+ for various programs, with no end in sight, so increase the value
+ of COMPLETE_HASH_BUCKETS from 32 to 128
-aclocal.m4
- - new macro, BASH_STRUCT_WINSIZE, which looks for `struct winsize'
- in <sys/ioctl.h> (or one of the files it includes)
+pathexp.c
+ - quote_string_for_globbing: make sure CTLESC quoting CTLESC is
+ translated into \<CTLESC> even if the flags include QGLOB_REGEXP.
+ We don't want to process the second CTLESC as a quote character.
+ Fixes bug reported by Shawn Bohrer <sbohrer@rgmadvisors.com>
-configure.in
- - call BASH_STRUCT_WINSIZE
- - slightly reorganized the calls to bash-specific macros
+ 5/6
+ ---
+builtins/printf.def
+ - change PRETURN to not call fflush if ferror(stdout) is true
+ - if a call to one of the stdio functions or printstr leaves
+ ferror(stdout) true, and PRETURN is going to be called, let PRETURN
+ print the error message rather than doubling up the messages. Fixes
+ problem reported by Roman Rakus <rrakus@redhat.com>
-config.h.in
- - add an `#undef STRUCT_WINSIZE_IN_SYS_IOCTL'
+ 5/9
+ ---
+doc/{bash.1,bashref.texi}
+ - add note to the effect that lists inside compound command can be
+ terminated by newlines as well as semicolons. Suggested by
+ Roman Byshko <rbyshko@gmail.com>
-jobs.c, nojobs.c
- - only look in sys/ptem.h for struct winsize if
- STRUCT_WINSIZE_IN_SYS_IOCTL is not defined to cpp
+ 5/10
+ ----
+subst.c
+ - remove_quoted_nulls: fix problem that caused it to skip over the
+ character after a CTLNUL, which had the effect of skipping every
+ other of a series of CTLNULs. Fixes bug reported by
+ Marten Wikstrom <marten.wikstrom@keystream.se>
- 1/30
+ 5/11
----
-.{distribution,patchlevel}
- - renamed to _{distribution,patchlevel}
+subst.c
+ - extract_process_subst: add SX_COMMAND flag to call to
+ extract_delimited_string, since we're expanding the same sort of
+ command as command substitution. Fixes bug reported in Ubuntu
+ bug 779848
+ 5/12
+ ----
configure.in
- - create a variable BASHVERS, from the contents of _distribution,
- and a variable BASHPATCH, from the contents of _patchlevel,
- (using m4 magic so we don't have to distribute .distribution
- and .patchlevel) and substitute them into Makefile.in
+ - set the prefer_shared and prefer_static variables appropriately
+ depending on the value of $opt_static_link
-Makefile.in
- - use Version and PatchLevel variables instead of the contents of
- .distribution and .patchlevel, respectively. These are set by
- configure
- - removed `.machine' from targets and dependencies
+aclocal.m4
+ - AC_LIB_LINKFLAGS_BODY: change to not prefer shared versions of the
+ libraries it's searching for if the prefer_shared variable is "no".
+ Fixes problem reported by Cedric Arbogast <arbogast.cedric@gmail.com>
-support/mkversion.sh
- - new shell script to handle updating version.h, replaces mkversion.c
- (which is now overkill)
+ 5/13
+ ----
+lib/readline/readline.c
+ - _rl_internal_teardown: add call to _rl_disable_meta_key to make the
+ meta key active only for the duration of the call to readline()
+ - _rl_internal_setup: move call to _rl_enable_meta_key here from
+ readline_initialize_everything so the meta key is active only for
+ the duration of the call to readline(). Suggestion from Miroslav
+ Lichvar <mlichvar@redhat.com>
-support/mkdist
- - don't bother with writing .distribution and .patchlevel files,
- since they're no longer distributed
+builtins/help.def
+ - help_builtin: change strncmp to strcmp so that `help read' no longer
+ matches `readonly'. Suggested by Clark Wang <dearvoid@gmail.com>
-support/mknewvers.sh
- - simple bash script to make new version files. It can increment
- the major or minor version numbers or patchlevel, or take a
- completely new version number (e.g., 2.01) as an argument
+config.h.in
+ - add define for GLIBC21, checked using jm_GLIBC21 as part of the tests
+ for libintl
-doc/Makefile.in
- - added support for the `install-info' command to update the info
- directory file after installing bash.info
+lib/malloc/malloc.c
+ - internal_free: don't use the cached value of memtop when deciding
+ whether or not to adjust the break and give memory back to the kernel
+ when using the GNU C library, since glibc uses sbrk for its own
+ internal purposes. From Debian bug 614815, reported by Samuel
+ Thibault <samuel.thibault@gnu.org>
- 1/31
+aclocal.m4
+ - BASH_STRUCT_WEXITSTATUS_OFFSET: change AC_RUN_IFELSE to AC_TRY_RUN
+ to avoid warning about not using AC_LANG_SOURCE
+
+ 5/14
----
-builtins/help.def
- - fix core dump with `help --'
+bashline.[ch]
+ - two new functions, bashline_set_event_hook and bashline_reset_event_hook,
+ to set rl_event_hook to bash_event_hook and back to NULL, respectively
+ - don't set rl_event_hook unconditionally
-susbt.c
- - make call_expand_word_internal obey the convention that if
- expand_word_internal returns &expand_word_{fatal,error}, then
- w->word has already been freed
- - return &expand_word_fatal from expand_word_internal if the shell
- is not interactive and `set -u' has been executed
+sig.c
+ - termsig_sighandler: if the shell is currently interactive and
+ readline is active, call bashline_set_event_hook to cause
+ termsig_handler to be called via bash_event_hook when the shell
+ returns from the signal handler
-test.c, general.c
- - moved group_member from test.c to general.c
+ 5/15
+ ----
+lib/readline/display.c
+ - _rl_col_width: Mac OS X has a bug in wcwidth: it does not return 0
+ for UTF-8 combining characters. Added workaround dependent on
+ MACOSX. Fixes problem pointed out by Thomas De Contes
+ <d.l.tDecontes@free.fr>
-externs.h, general.h
- - moved extern declaration of group_member from externs.h to general.h
+ 5/16
+ ----
+lib/readline/rlmbutil.h
+ - WCWIDTH: wrapper for wcwidth that returns 0 for Unicode combining
+ characters on systems where wcwidth is broken (e.g., Mac OS X).
-general.c
- - broke the code that initializes the group array out into a new
- function, initialize_group_array()
- - initialize_group_array() now initializes an array even if the OS
- does not have getgroups(). If it does not, an array with one
- element (the real gid) is created
- - call sysconf(_SC_NGROUPS_MAX) if sysconf is available and
- _SC_NGROUPS_MAX is defined
- - new function, char **get_group_list(int *), to return an array
- of strings made from the groups list
+lib/readline/{complete,display,mbutil}.c
+ - use WCWIDTH instead of wcwidth
-variables.c
- - new dynamic array variable: GROUPS, expands to the group set as
- obtained with getgroups() (or whatever initialize_group_array()
- makes)
+ 5/17
+ ----
+lib/readline/display.c
+ - update_line: after computing ofd and nfd, see whether the next
+ character in ofd is a zero-width combining character. If it is,
+ back ofd and nfd up one, so the base characters no longer compare
+ as equivalent. Fixes problem reported by Keith Winstein
+ <keithw@mit.edu>
-doc/{bash.{1,html},bashref.texi}
- - added description of GROUPS variable
+lib/readline/nls.c
+ - _rl_utf8locale: new flag variable, set to non-zero if the current
+ locale is UTF-8
+ - utf8locale(): new function, returns 1 if the passed lspec (or the
+ current locale) indicates that the locale is UTF-8. Called from
+ _rl_init_eightbit
-test/test-tests
- - before modifying the setgid bit on /tmp/setgid, try to change its
- group to ${GROUPS[0]}
+lib/readline/rlprivate.h
+ - extern declaration for _rl_utf8locale
- 2/3
- ---
-aclocal.m4
- - new autconf macro, BASH_MISC_SPEED_T, to see if speed_t is defined
- in <sys/types.h>
+locale.c
+ - locale_utf8locale: new flag variable, set to non-zero if the current
+ locale is UTF-8 (currently unused)
+ - locale_isutf8(): new function, returns 1 if the passed lspec (or the
+ current locale) indicates that the locale is UTF-8. Should be called
+ whenever the locale or LC_CTYPE value is modified
-configure.in
- - call BASH_MISC_SPEED_T
+aclocal.m4
+ - BASH_WCWIDTH_BROKEN: new test for whether or not wcwidth returns
+ zero-width characters like unicode combining characters as having
+ display length 1; define WCWIDTH_BROKEN in this case
config.h.in
- - add `#undef SPEED_T_IN_SYS_TYPES'
+ - WCWIDTH_BROKEN: new define
-lib/readline/tcap.h
- - include `rltty.h' if HAVE_TERMCAP_H and __linux__ are defined, but
- SPEED_T_IN_SYS_STYPES is not, before including <termcap.h>
+lib/readline/rlmbutil.h
+ - change WCWIDTH macro to use _rl_utf8locale and the full range of
+ Unicode combining characters (U+0300-U+036F)
-support/mksignames.c, siglist.c
- - add support for 4.4 BSD SIGLOST
+ 5/19
+ ----
+lib/readline/rlprivate.h
+ - _rl_search_context: new member, prevc, will hold character read
+ prior to lastc
-support/config.guess
- - add support for recognizing QNX based on `uname' output
+lib/readline/isearch.c
+ - _rl_isearch_dispatch: if the character causes us to index into
+ another keymap, save that character in cxt->prevc
+ - _rl_isearch_dispatch: if we index into another keymap, but don't
+ find a function that's special to i-search, and the character that
+ caused us to index into that keymap would have terminated the
+ search, push back cxt->prevc and cxt->lastc to make it appear as
+ if `prevc' terminated the search, and execute lastc as a command.
+ We have to push prevc back so we index into the same keymap before
+ we read lastc. Fixes bug report from Davor Cubranic
+ <cubranic@stat.ubc.ca>
-Makefile.in
- - make sure recho and zecho are compiled with the same set of CC
- options as the rest of the sources
+ 5/20
+ ----
+expr.c
+ - expr_bind_variable: pay attention to the return value from
+ bind_variable and check whether or not we should error out due to
+ a readonly or noassign variable. Fixes bug reported by Eric
+ Blake <eblake@redhat.com>
-lib/readline/bind.c
- - change calls to rl_generic_bind to cast the third argument to
- (char *) where necessary
+ 5/26
+ ----
-command.h
- - two new flags: CMD_AMPERSAND (currently unused), and CMD_STDIN_REDIR,
- which means that this command should have its standard input
- redirected from /dev/null if there are not any explicit redirections
- to stdin
+lib/readline/search.c
+ - include histlib.h for ANCHORED_SEARCH defines
+ - rl_history_search_flags: new variable, holds ANCHORED_SEARCH flag for
+ the duration of a history search
+ - rl_history_search_reinit: takes a new flags variable, defines whether
+ or not the search is anchored; assigned to rl_history_search_flags
+ - rl_history_serarch_reinit: if ANCHORED_SEARCH flag passed, add ^ to
+ beginning of search string; otherwise search string is unmodified
+ - rl_history_search_internal: set rl_point appropriately based on
+ whether or not rl_history_search_flags includes ANCHORED_SEARCH
+ - rl_history_substr_search_forward: new function, for non-anchored
+ substring search forward through history for string of characters
+ preceding rl_point
+ - rl_history_substr_search_backward: new function, for non-anchored
+ substring search backward through history for string of characters
+ preceding rl_point. Original code from Niraj Kulkarni
+ <kulkarniniraj14@gmail.com>
-execute_cmd.c
- - a redirection of type r_inputa_direction is no longer added at the
- beginning of the redirection chain for an async command;
- CMD_STDIN_REDIR is set in the flags instead
- - new function: stdin_redirects: returns the number of redirections to
- stdin in a chain of redirections
- - new functions: async_redirect_stdin() to open /dev/null and make it
- file descriptor 0
- - changes to make CMD_STDIN_REDIR propagate to all of the necessary
- functions (like execute_simple_command)
- - execute_disk command now takes the flags from simple_command rather
- than just the CMD_NO_FORK flag as its last argument
- - various places after make_child is executed (in the child) check for
- CMD_STDIN_REDIRECT (and no stdin redirections or piping) and call
- async_redirect_stdin
- - stdin_redir is now global
+lib/readline/readline.h
+ - extern declarations for rl_history_substr_search_{for,back}ward
-eval.c
- - set stdin_redir to 0 just before calling execute_command so it
- gets reset to a known value and doesn't persist across commands
+lib/readline/funmap.c
+ - history-substring-search-forward: new bindable command, invokes
+ rl_history_substr_search_forward
+ - history-substring-search-backward: new bindable command, invokes
+ rl_history_substr_search_backward
- 2/4
- ---
-builtins/ulimit.def
- - add a stub function for ulimit(2) on systems without HAVE_RESOURCE
- or HAVE_ULIMIT that just sets errno to EINVAL and returns -1 --
- QNX is one such system
+lib/readline/doc/{rluser.texi,readline.3}
+ - document history-substring-search-forward and
+ history-substring-search-backward
-bashhist.c
- - pre_process_line needs to protect all occurrences of hist_verify
- with #ifdef READLINE
+ 5/27
+ ----
+{nojobs,jobs}.c
+ - add support for DONT_REPORT_SIGTERM so that the shell doesn't print
+ a message when a job exits due to SIGTERM since that's the default
+ signal sent by the kill builtin. Suggested by Marc Herbert
+ <mark.herbert@gmail.com>
-builtins/shopt.def
- - hist_verify needs to be protected with #ifdef READLINE, not
- #ifdef HISTORY
+config-top.h
+ - DONT_REPORT_SIGTERM: new user-modifiable setting. Commented out
+ by default
- 2/5
- ---
-support/config.{guess,sub}, configure.in
- - chages to better support the Harris Night Hawk
+ 5/28
+ ----
+lib/readline/bind.c
+ - _rl_skip_to_delim: skip to a closing double quote or other delimiter,
+ allowing backslash to quote any character, including the delimiter
+ - rl_parse_and_bind: call _rl_skip_to_delim instead of using inline
+ code
+ - rl_parse_and_bind: allow quoted strings as the values of string
+ variables. Variable values without double quotes have trailing
+ whitespace removed (which still allows embedded whitespace, for
+ better or worse). Fixes problem with string variables not matching
+ in `set' command if values happen to have trailing spaces or tabs
+ (debian bash bug #602762), but introduces slight incompatibility.
-[many files]
- - changes for things pointed out by gcc -Wall
+ 5/29
+ ----
+doc/{bash.1,bashref.texi}
+ - clarify unset description to specify that without options, a
+ variable, then a shell function if there is no variable by that
+ name, is unset. Fixes discrepancy reported by Mu Qiao
+ <qiaomuf@gentoo.org>
-lib/glob/Makefile.in
- - make sure -DSHELL is included in CCFLAGS so that globbing is
- interruptible
+ 6/4
+ ----
+doc/{bash.1,bashref.texi}
+ - clarify description of LINES and COLUMNS (and checkwinsize shopt
+ option) to make it clear that only interactive shells set a
+ handler for SIGWINCH and update LINES and COLUMNS. Original
+ report submitted by Jonathan Nieder <jrnieder@gmail.com>
+
+arrayfunc.c
+ - expand_compound_array_assignment: defer expansion of words between
+ parens when performing compound assignmnt to an associative array
+ variable
+ - assign_compound_array_list: perform the same expansions when doing
+ a compound array assignment to an associative array variable as
+ when doing a straight array index assignment. The idea is that
+ foo=( [ind1]=bar [ind2]=quux)
+ is the same as
+ foo[ind1]=bar ; foo[ind2]=quux
+
+ This fixes problems with double-expansion and quote removal being
+ performed on the array indices
+
+ 6/13
+ ----
+doc/{bash.1,bashref.texi}
+ - Add a little text to make it clear that the locale determines how
+ range expressions in glob patterns are handled.
-lib/malloc/malloc.c
- - extern declaration for botch: if botch is #defined, it should be
- the name of a void function
-configure.in,Makefile.in,builtins/Makefile.in,
-lib/{glob,malloc,readline,tilde}/Makefile.in
- - add a LOCAL_DEFS variable, substituted from configure into the
- various Makefiles. It's set to -DSHELL, so that define gets
- passed to all sub-makes without doing anything special
+ 6/21
+ ----
+builtins/read.def
+ - display a message and return error status if -a is used with an
+ existing associative array. Fixes bug reported by Curtis Doty
+ <curtis@greenkey.net>
-lib/readline/readline.c
- - change to rl_digit_loop to make it compatible with GNU emacs:
- if a key bound to `universal-argument' is read after reading
- some digits, it terminates the argument but is otherwise
- ignored. This is how people can insert repeated digits
+ 6/24
+ ----
+{jobs,nojobs}.c
+ - non-interactive shells now react to the setting of checkwinsize
+ and set LINES and COLUMNS after a foreground job exits. From a
+ suggestion by Leslie Rhorer <lrhorer@satx.rr.com>
+
+doc/{bash.1,bashref.texi}
+ - checkwinsize: remove language saying that only interactive shells
+ check the window size after each command
-doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo
- - changed description of `universal-argument' to describe how
- to terminate a numeric argument
+lib/readline/histfile.c
+ - history_backupfile: new file, creates a backup history file name
+ given a filename (appending `-')
+ - history_do_write: when overwriting the history file, back it up
+ before writing. Restore backup file on a write error. Suggested
+ by chkno@chkno.net
- 2/6
- ---
-jobs.c
- - changed kill_pid to diddle the job and process data structures
- if we're sending SIGCONT to a stopped job with `kill' so that
- the shell knows the job is running again. ksh93 does this
+bashline.c
+ - find_cmd_name: two new arguments, return the start and end of the
+ actual text string used to find the command name, without taking
+ whitespace into account
+ - attempt_shell_completion: small changes to make sure that completion
+ attempted at the beginning of a non-empty line does not find a
+ programmable completion, even if the command name starts at point
+ - attempt_shell_completion: small change to make sure that completion
+ does not find a progcomp when in whitespace before the command
+ name
+ - attempt_shell_completion: small change to make sure that completion
+ does not find a progcomp when point is at the first character of a
+ command name, even when there is leading whitespace (similar to
+ above). Fixes problems noted by Ville Skytta <ville.skytta@iki.fi>
- 2/7
- ---
-unwind_prot.c
- - changed bcopy to FASTCOPY
+subst.c
+ - brace_expand_word_list: since the individual strings in the strvec
+ returned by brace_expand are already allocated, don't copy them to
+ newly-allocated memory when building the WORD_LIST, just use them
+ intact
-builtins/enable.def
- - changed pointer arithmetic in delete_builtin to just subtract
- the head of the builtins list (shell_builtins) from a pointer
- to the builtin to be deleted (b) to find its index in the list
- on ANSI C systems
+locale.c
+ - locale_mb_cur_max: cache value of MB_CUR_MAX when we set or change
+ the locale to avoid a function call every time we need to read it
- 2/10
- ----
-lib/readline/bind.c
- - when using old-style keynames to bind to a new-style macro,
- pass an array of type (unsigned char *) to rl_macro_bind
+shell.h
+ - new struct to save shell_input_line and associated variables:
+ shell_input_line_state_t
+ - add members of sh_parser_state_t to save and restore token and the
+ size of the token buffer
-builtins/getopt.c
- - change sh_getopt to return EOF if nextchar is empty or NULL
- and sh_optind is greater than argc. This can happen if a
- script mixes calls to `getopts' with calls to `shift'
+parse.y
+ - {save,restore}_input_line_state: new functions to save and restore
+ shell_input_line and associated variables
+ - {save,restore}_parser_state: add code to save and restore the token
+ and token buffer size
+ - xparse_dolparen: call save_ and restore_input_line_state to avoid
+ problems with overwriting shell_input_line when we recursively
+ call the parser to parse a command substitution. Fixes bug
+ reported by Rui Santos <rsantos@grupopie.com>
+
+include/shmbutil.h
+ - use locale_mb_cur_max instead of MB_CUR_MAX in ADVANCE_CHAR and
+ similar macros
+
+lib/glob/smatch.c
+ - rangecmp,rangecmp_wc: change to take an additional argument, which
+ forces the use of strcoll/wscoll when non-zero. If it's 0, a new
+ variable `glob_asciirange' controls whether or not we use strcoll/
+ wscoll. If glob_asciirange is non-zero, we use straight
+ C-locale-like ordering. Suggested by Aharon Robbins
+ <arnold@skeeve.com>
- 2/11
+ 6/30
----
-print_cmd.c
- - fixed make_command_string_internal so that commands with the
- CMD_TIME_POSIX flag set print `time -p' instead of `time'
- - changed print_redirection_list so the here documents are
- printed after all the other redirections, and followed by a
- newline (rather than a possible semicolon)
- - added a new variable, was_heredoc, to avoid adding a semicolon
- at the beginning of an empty line after printing the heredoc
- ending delimiter
-
execute_cmd.c
- - don't put the gnu_argv_flags into the environment any more; it's
- proven to be a bad idea
+ - execute_pipeline: make sure the lastpipe code is protected by
+ #ifdef JOB_CONTROL. Fixes problem reported by Thomas Cort
+ <tcort@minix3.org>
-configure.in
- - set LOCAL_CFLAGS to `-DSunOS5' on Solaris 5.5[.x]
+ 7/2
+ ---
+lib/readline/complete.c
+ - EXPERIMENTAL: remove setting of _rl_interrupt_immediately around
+ completion functions that touch the file system. Idea from Jan
+ Kratochvil <jan.ktratochvil@redhat.com> and the GDB development
+ team
-builtins/echo.def
- - only call fflush() after printing each word on SunOS 5.5, since
- that's the system with the bug that prompted its inclusion in
- the first place
+lib/readline/signals.c
+ - rl_signal_handler: if we're in callback mode, don't interrupt
+ immediately on a SIGWINCH
-support/mksignames.c
- - added support for more system-specific signals from AIX 4.2,
- changed initialization order so that system-specific signals
- are done first, before the common signals
+ 7/3
+ ---
+bashline.c
+ - set_directory_hook: and its siblings are a new set of functions to
+ set, save, and restore the appropriate directory completion hook
+ - change callers to use {set,save,restore}_directory_hook instead of
+ manipulating rl_directory_rewrite_hook directly
+ - dircomplete_expand: new variable, defaults to 0, if non-zero causes
+ directory names to be word-expanded during word and filename
+ completion
+ - change {set,save,restore}_directory_hook to look at dircomplete_expand
+ and change rl_directory_completion_hook or rl_directory_rewrite_hook
+ appropriately
- 2/12
- ----
-execute_cmd.c
- - broke the code that creates a file containing the text of a
- here document out into a separate function: here_doc_to_fd
- - create the temp file used for a here document with mode 600
- - open the temp file used for a here document with O_EXCL
+bashline.h
+ - extern declaration for set_directory_hook so shopt code can use it
-shell.h
- - changed the uid members of struct user_info to be of type uid_t
- and the gid members to be of type gid_t
+ 7/6
+ ---
+builtins/shopt.def
+ - globasciiranges: new settable shopt option, makes glob ranges act
+ as if in the C locale (so b no longer comes between A and B).
+ Suggested by Aharon Robbins <arnold@skeeve.com>
-parse.y
- - changed the type of the `type' argument to init_yy_io() to be
- `enum stream_type', since that's what's always passed
+ 7/7
+ ---
+doc/{bash.1,bashref.texi}
+ - document new `globasciiranges' shopt option
-input.h
- - changed the function prototype for init_yy_io so the third arg is
- type `enum stream_type'
+ 7/8
+ ---
+builtins/shopt.def
+ - direxpand: new settable option, makes filename completion expand
+ variables in directory names like bash-4.1 did.
+ - shopt_set_complete_direxpand: new function, does the work for the
+ above by calling set_directory_hook
-externs.h
- - added a prototype for getcwd, if HAVE_GETCWD is not defined
+doc/{bash.1,bashref.texi}
+ - document new `direxpand' shopt option
-builtins/umask.def
- - changed all variables that are used as arguments to or save the
- return value from umask(2) to be of type mode_t
- - changed print_symbolic_umask to take an argument of type mode_t
+ 7/15
+ ----
+lib/readline/isearch.c
+ - _rl_isearch_dispatch: when adding character to search string, use
+ cxt->lastc (which we use in the switch statement) instead of c,
+ since lastc can be modified earlier in the function
- 2/13
+ 7/18
----
-jobs.c
- - if old_sigint_handler is set to SIG_DFL, as it will be in a script
- without a trap on SIGINT installed, call termination_unwind_protect()
- directly from waitchld()
+lib/readline/rlprivate.h
+ - _rl_search_context: add another member to save previous value of
+ (multibyte) lastc: pmb is to mb as prevc is to lastc
+
+lib/readline/isearch.c:
+ - _rl_isearch_dispatch: if a key sequence indexes into a new keymap,
+ but doesn't find any bound function (k[ind].function == 0) or is
+ bound to self-insert (k[ind].function == rl_insert), back up and
+ insert the previous character (the one that caused the index into a
+ new keymap) and arrange things so the current character is the next
+ one read, so both of them end up in the search string. Fixes bug
+ reported by Clark Wang <dearvoid@gmail.com>
+ - _rl_isearch_dispatch: a couple of efficiency improvements when adding
+ characters to the isearch string
- 2/14
+ 7/24
----
-configure.in
- - added a section before the call to BASH_CHECK_LIB_TERMCAP to
- set a variable prefer_curses on some systems (AIX, for one)
+lib/readline/isearch.c
+ - _rl_isearch_dispatch: save and restore cxt->mb and cxt->pmb
+ appropriately when in a multibyte locale
-aclocal.m4
- - in BASH_CHECK_LIB_TERMCAP, don't return -ltermcap if $prefer_curses
- is non-empty
+doc/{bash.1,bashref.texi}
+ - correct description of {x}>file (and other redirection operators
+ that allocate a file descriptor) to note the the fd range is
+ greater than or equal to 10. Fixes problem reported by
+ Christian Ullrich
-lib/readline/Makefile.in
- - redid the dependencies
+lib/readline/signals.c
+ - rl_signal_handler: don't interrupt immediately if in callback mode
- 2/17
- ----
-hashlib.c, getcwd.c
- - include `bashansi.h' instead of stdlib.h and string.h
+lib/readline/callback.c
+ - rl_callback_read_char: install signal handlers only when readline
+ has control in callback mode, so readline's signal handlers aren't
+ called when the application is active (e.g., between the calls to
+ rl_callback_handler_install and rl_callback_read_char). If the
+ readline signal handlers only set a flag, which the application
+ doesn't know about, the signals will effectively be ignored until
+ the next time the application calls into the readline callback
+ interface. Fixes problem of calling unsafe functions from signal
+ handlers when in callback mode reported by Jan Kratochvil
+ <jan.kratochvil@redhat.com>
-error.c, siglist.c, xmalloc.c, builtins/{common,evalfile,mkbuiltins,psize}.c,
-builtins/{exec,exit,fg_bg,hash,history}.def
- - include `bashtypes.h' instead of directly including <sys/types.h>
+execute_cmd.c
+ - fix_assignment_words: when in Posix mode, the `command' builtin
+ doesn't change whether or not the command name it protects is an
+ assignment builtin. One or more instances of `command'
+ preceding `export', for instance, doesn't make `export' treat its
+ assignment statement arguments differently. Posix interpretation
+ #351
-builtins/fc.def
- - include ../bashtypes.h and ../posixstat.h instead of bashtypes.h
- and posixstat.h
+doc/{bash.1,bashref.texi}
+ - document new Posix-mode behavior of `command' when preceding builtins
+ that take assignment statements as arguments
-builtins/mkbuiltins.c
- - include ../posixstat.h instead of <sys/stat.h>
+builtins/printf.def
+ - printstr: if fieldwidth or precision are < 0 or > INT_MAX when
+ supplied explicitly (since we take care of the `-' separately),
+ clamp at INT_MAX like when using getint(). Fixes issue reported
+ by Ralph Coredroy <ralph@inputplus.co.uk>
-general.h
- - include `bashtypes.h' if RLIMTYPE is defined, so we can fetch
- a definition of quad_t (or whatever) from <sys/types.h> before
- using it in a function prototype
+ 7/25
+ ----
+lib/readline/chardefs.h
+ - isxdigit: don't define if compiling with c++; declared as a c++
+ template function. Fixes bug reported by Miroslav Lichvar
+ <mlichvar@redhat.com>
-Makefile.in, builtins/Makefile.in
- - updated dependencies
+builtins/printf.def
+ - getint: if garglist == 0, return whatever getintmax returns (0).
+ Fixes bug reported by Ralph Coredroy <ralph@inputplus.co.uk>
- 2/18
+ 7/28
----
-builtins/set.def
- - new function, set_posix_mode, called when `set [-+]o posix'
- or `shopt -[su] -o posix' is executed. It sets or unsets
- $POSIXLY_CORRECT and calls sv_strict_posix
+doc/{bash.1,bashref.texi}
+ - minor changes to the descriptions of the cd and pushd builtins
-subst.c
- - in sv_strict_posix, call posix_readline_initialize only if
- the shell is interactive (interactive_shell != 0)
+lib/sh/zread.c
+ - zsyncfd: change variable holding return value from lseek to
+ off_t. Bug report and fix from Gregory Margo <gmargo@pacbell.net>
-shell.c
- - if we are acting like `sh', call posix_readline_initialize
- if the shell is interactive
- - moved the code that does posix.2 mode initialization after
- interactive_shell is set, and call posix_readline_initialize
- if interactive_shell is non-zero
+ 8/1
+ ---
+expr.c
+ - don't check for division by 0 when in a context where no evaluation
+ is taking place. Fixes bug reported by dnade.ext@orange-ftgroup.com
-bashwait.h
- - renamed to unionwait.h, since that is what it defines
+ 8/6
+ ---
+execute_cmd.c
+ - execute_command_internal: the parent branch of the subshell code
+ (where the child calls execute_in_subshell) should not close all
+ open FIFOs with unlink_fifo_list if it's part of a shell function
+ that's still executing. Fixes bug reported by Maarten Billemont
+ <lhunath@lyndir.com>
-posixwait.h
- - moved the POSIX 1003.1 job control defines here from jobs.h
+ 8/9
+ ---
+builtins/common.c
+ - get_exitstat: return EX_BADUSAGE (2) on a non-numeric argument
-jobs.h
- - include `posixwait.h'
+builtins/return.def
+ - return_builtin: just call get_exitstat to get the return status,
+ let it handle proper parsing and handling of arguments. Fixes
+ issue most recently raised by Linda Walsh <bash@tlinx.org>.
+ Reverses change from 9/11/2008 (see above)
- 2/19
+ 8/16
----
-braces.c
- - if SHELL is defined, pass the contents of new-style command
- substitution through without expanding brace constructs between
- the parens -- let the subshell do it
+doc/{bash.1,bashref.texi}
+ - clean up `set -e' language to make it clearer that any failure of
+ a compound command will cause the shell to exit, not just subshells
+ and brace commands
-subst.c
- - when brace-expanding words, preserve the flags (word->flags) if
- brace expansion does not change the word. This fixes the problem
- of things like
+ 8/17
+ ----
+configure.in
+ - make the various XXX_FOR_BUILD variables `precious' to autoconf to
+ avoid stale data
+ - change how CC_FOR_BUILD is initialized when cross-compiling and not,
+ but do not change behavior
+ - initialize CFLAGS_FOR_BUILD to -g when cross-compiling
+ - initialize LIBS_FOR_BUILD to $(LIBS) when not cross-compiling, empty
+ when cross-compiling
+ - create AUTO_CFLAGS variable to hold basic CFLAGS defaults; used when
+ CFLAGS not inherited from environment (like effect of old
+ auto_cflags variable)
+ - substitute LIBS_FOR_BUILD into output Makefiles
+ [changes inspired by bug report from Nathan Phillip Brink
+ <ohnobinki@ohnopublishing.net> -- gentoo bug 378941]
+
+builtins/Makefile.in
+ - substitute LIBS_FOR_BUILD from configure, not strictly initialized
+ to $(LIBS)
- local -a avar=( ${PATH//: } );
+ 8/27
+ ----
+doc/{bash.1,bashref.texi}
+ - minor changes to the here string description to clarify the
+ expansions performed on the word
-bashline.c
- - have shell_expand_line pass a copy of rl_line_buffer to expand_string
- in case there are substitution errors and the string gets freed
+support/shobj-conf
+ - handle compilation on Lion (Mac OS X 10.7/darwin11) with changes
+ to darwin stanzas. Fixes readline bug reported by Vincent
+ Sheffer <vince.sheffer@apisphere.com>
+
+lib/sh/strtrans.c
+ - ansic_wshouldquote: check a string with multi-byte characters for
+ characters that needs to be backslash-octal escaped for $'...'
+ - ansic_shouldquote: if is_basic fails for one character, let
+ ansic_wshouldquote examine the rest of the string and return what
+ it returns. From a patch sent by Roman Rakus <rrakus@redhat.com>
+
+ 8/30
+ ----
+lib/sh/strtrans.c
+ - ansic_quote: changes to quote (or not) multibyte characters. New
+ code converts them to wide characters and uses iswprint to check
+ valid wide chars. From a patch sent by Roman Rakus
+ <rrakus@redhat.com>
+
+ 9/7
+ ---
+lib/sh/shquote.c
+ - sh_backslash_quote: change to be table-driven so we can use a
+ different table if we want to
+ - sh_backslash_quote: takes a second char table[256] argument;
- 2/20
- ----
-expr.c
- - make sure that expland and explor set `lasttok' to LAND and LOR,
- respectively, if they parse `&&' or `||'. This makes the
- precedence code work right
+externs.h
+ - sh_backslash_quote: add second argument to function prototype
-subst.c
- - changes so that non-interactive shells exit immediately when a
- parameter that is unset is referenced after `set -u' has been
- executed causes the shell to exit immediately
+bashline.c,braces.c,parse.y,builtins/printf.def
+ - change callers of sh_backslash_quote to add second argument
- 2/21
- ----
-flags.c
- - if `set -r' is executed, call maybe_make_restricted so that $PATH
- and $SHELL are made read-only
+bashline.c
+ - filename_bstab: table of characters to pass to sh_backslash_quote;
+ characters with value 1 will be backslash-quoted
+ - set_filename_bstab: turn on characters in filename backslash-quote
+ table according to passed string argument
+ - call set_filename_bstab every time rl_filename_quote_characters is
+ assigned a value
+ - bash_quote_filename: call sh_backslash_quote with filename_bstab
+ as second argument. This allows other characters in filenames to
+ be quoted without quoting, for instance, a dollar sign in a shell
+ variable reference
-execute_cmd.c
- - if `set -e' has been executed, and we're inverting a pipeline's
- return status with `!', set CMD_IGNORE_RETURN so a failing
- command does not inadvertently cause the shell to exit before
- the exit status can be inverted. This is probably only a problem
- with the `eval' builtin.
+ 9/8
+ ---
+bashline.c
+ - complete_fullquote: new variable, controls table passed to
+ sh_backslash_quote. If non-zero (the default), the standard set
+ of shell metacharacters -- as in bash versions up to and including
+ bash-4.2 -- gets backslash-quoted by the completion code. If zero,
+ sh_backslash_quote gets the table with the characters in the
+ variable reference removed, which means they are removed from the
+ set of characters to be quoted in filenames
- 2/24
+ 9/10
----
-builtins/hash.def
- - add a missing argument of 0 to add_hashed_command
+bashline.c
+ - bash_filename_stat_hook: new function, designed to expand variable
+ references in filenames before readline passes them to stat(2)
+ to determine whether or not they are a directory
-builtins/kill.def
- - job identifiers can be used in non-interactive shells as long as
- job control has been turned on with `set -m'
+ 9/15
+ ----
+builtins/declare.def
+ - if assign_array_element fails due to a bad (or empty) subscript, mark
+ it as an assignment error and don't attempt any further processing
+ of that declaration. Fixes segfault bug reported by Diego Augusto
+ Molina <diegoaugustomolina@gmail.com>
-jobs.c
- - we want to be notified of stopped jobs if job_control is non-zero,
- even if the shell is not interactive
+ 9/19
+ ----
+expr.c
+ - exppower: replace the simple exponentiation algorithm with an
+ implementation of exponentiation by squaring. Inspired by report
+ from Nicolas ARGYROU <nargy@yahoo.com>
-execute_cmd.c
- - make sure shell_execve returns EX_NOTFOUND if execve fails and
- errno is set to ENOENT
- - makes sure execute_builtin saves the temporary environment to
- builtin_env for the `eval' builtin, since it can destroy the
- temporary environment when it calls parse_and_execute
+bashline.c
+ - bash_quote_filename: check for rtext being non-null before
+ dereferencing it
+ - set_saved_history: operate_and_get_next assumes that the previous
+ line was added to the history, even when the history is stifled and
+ at the max number of entries. If it wasn't, make sure the history
+ number is incremented properly. Partial fix for bug reported by
+ gregrwm <backuppc-users@whitleymott.net>
+
+doc/{bash.1,bashref.texi},lib/readline/doc/{hsuser,rluser}.texi
+ - minor editorial changes inspired by suggestions from
+ Roger Zauner <rogerx.oss@gmail.com>
-bashhist.c
- - new variable: hist_last_line_added, set to 1 if the last command
- line was added to the history successfully as a separate entry.
- Used by `history' and `fc'
+ 9/20
+ ----
+lib/intl/localealias.c
+ - read_alias_file: close resource leak (fp) when returning on error
- 2/25
+ 9/22
----
-trap.c
- - save line number before executing trap command, because
- parse_and_execute resets it to 1 and the trap command might
- want it
+execute_command.c
+ - execute_intern_function: implement Posix interpretation 383 by making
+ it an error to define a function with the same name as a special
+ builtin when in Posix mode.
+ http://austingroupbugs.net/view.php?id=383#c692
-execute_cmd.c
- - change to executing_line_number to return trap_line_number if
- the shell is currently running a trap
+ 9/25
+ ----
+doc/{bash.1,bashref.texi}
+ - formatting and some content changes from Benno Schulenberg
+ <bensberg@justemail.net>
+ - document new posix-mode behavior from interp 383 change of 9/22
- 2/26
+ 9/30
----
execute_cmd.c
- - change to time_command so that a `real' value of 0 does not
- cause a divide-by-zero error when computing cpu percentage
-
-lib/readline/signals.c
- - if MUST_REINSTALL_SIGHANDLERS is defined, reinstall the SIGWINCH
- handler in rl_handle_sigwinch
-
-builtins/set.def
- - `unset' now rejects attempts to unset names that are not valid
- shell identifiers as errors
- - add a description of `-o history' option to help text
+ - shell_execve: add strerror to error message about executable file
+ that shell can't execute as a shell script. From suggestion by
+ daysleeper <daysleeper@centrum.cz>
-subst.c
- - in parameter_brace_patsub, we want backslash removal done on
- the replacement if (mflags & MATCH_QUOTED), since the code
- in expand_word_internal will not do it. We need to call
- expand_string_unsplit directly, since maybe_expand_string does
- not do the right thing
-
- 2/28
+ 10/1
----
-execute_cmd.c
- - if execute_for_command finds that the iteration variable is readonly,
- decrement loop_level before returning
+bashhist.c
+ - maybe_add_history: act as if literal_history is set when parser_state
+ includes PST_HEREDOC, so we save the bodies of here-documents just
+ as they were entered. Fixes bug reported by Jonathan Wakely
+ <bugs@kayari.org>
+ - bash_add_history: make sure that the second and subsequent lines of
+ a here document don't have extra newlines or other delimiting
+ chars added, since they have the trailing newline preserved, when
+ `lithist' is set and history_delimiting_chars isn't called
-builtins/break.def
- - if the break count is <= 0, display an error message and break out
- of all loops
+execute_cmd.c
+ - execute_command_internal: avoid fd exhaustion caused by using
+ process substitution in loops inside shell functions by using
+ copy_fifo_list and close_new_fifos (). Fixes debian bash bug
+ 642504
-builtins/command.def
- - if PATH is unset, and we're using command -p, we don't want PATH
- to be set to the empty string when `command' completes
+lib/readline/complete.c
+ - new variable, rl_filename_stat_hook, used by append_to_match. If
+ filename completion is desired, and rl_filename_stat_hook points
+ to a function, call that function to expand the filename in an
+ application-specific way before calling stat.
-builtins/common.c
- - POSIX.2 says `kill -l signum' prints the signal name without the
- leading `SIG' prefix, so check for this_shell_builtin == kill_builtin
- in display_signal_list
+bashline.c
+ - bash_default_completion: if variable completion returns a single
+ match, use bash_filename_stat_hook and file_isdir to determine
+ whether or not the variable name expands to a directory. If it
+ does, set the filename_append_character to `/'. This is not
+ perfect, so we will see how it works out. Adds functionality
+ requested by Peter Toft <pto@linuxbog.dk> and Patrick Pfeifer
+ <patrick@pfeifer.de>
+ - rl_filename_stat_hook: assigned bash_filename_stat_hook, so things
+ like $HOME/Downloads (after completion) have a slash appended.
+ In general, this causes the stat hook to be called whenever
+ filename completion is appended. Adds functionality requested by
+ Patrick Pfeifer <patrick@pfeifer.de>
-builtins/getopts.def
- - when invoked without any arguments, `getopts' now prints a usage
- message
+lib/readline/readline.h
+ - new extern declaration for rl_filename_stat_hook
- 3/3
- ---
-builtins/common.c
- - add a second argument to get_numeric_arg: if non-zero, the shell
- exits on a bad argument; if not, the shell jumps to top_level
- with a DISCARD argument, which aborts the current command
+lib/readline/doc/rltech.texi
+ - rl_directory_rewrite_hook: now documented
+ - rl_filename_stat_hook: document
-builtins/{break,exit,history,return,shift}.def
- - change calls to get_numeric_argument
+pcomplete.c
+ - gen_action_completions: in the CA_DIRECTORY case, turn off
+ rl_filename_completion_desired if it was off before we called
+ rl_filename_completion_function and we didn't get any matches.
+ Having it on causes readline to quote the matches as if they
+ were filenames. Adds functionality requested by many,
+ including Clark Wang <dearvoid@gmail.com>
+
+assoc.[ch]
+ - assoc_replace: new function, takes the same arguments as
+ assoc_insert, but returns the old data instead of freeing it
+ - assoc_insert: if the object returned by hash_insert doesn't have
+ the same value for its key as the key passed as an argument, we
+ are overwriting an existing value. In this case, we can free the
+ key. Fixes bug reported by David Parks <davidparks21@yahoo.com>
-lib/readline/funmap.c
- - add `dump-macros' to list of bindable names
+ 10/5
+ ----
+print_cmd.c
+ - indirection_level_string: small change to only re-enable `x'
+ option after calling decode_prompt_string if it was on before. In
+ normal mode, it will be, but John Reiser <jreiser@bitwagon.com>
+ has a novel use for that code in conjunction with a pre-loaded
+ shared library that traces system call usage in shell scripts
-lib/readline/readline.h
- - added extern declaration for rl_prompt (it was apparently missing)
+ 10/10
+ -----
+Makefile.in
+ - Fix from Mike Frysinger <vapier@gentoo.org> to avoid trying to
+ build y.tab.c and y.tab.h with two separate runs of yacc if
+ parse.y changes. Problem with parallel makes
+ - Fix from Mike Frysinger <vapier@gentoo.org> to avoid subdirectory
+ builds each trying to make version.h (and all its dependencies)
-lib/readline/readline.c
- - new internal function, _rl_init_line_state, which sets rl_point
- and rl_end to 0, sets the_line to point to _rl_line_buffer, and
- clears the line
+lib/sh/Makefile.in
+ - remove some dependencies on version.h where it doesn't make sense
-lib/readline/callback.c
- - if a user's callback function does not clear the line, clear it
- for him by calling _rl_init_line_state
+variables.c
+ - initialize_shell_variables: while reading the environment, a shell
+ running in posix mode now checks for SHELLOPTS being readonly (it
+ gets set early on in main()) before trying to assign to it. It
+ saves an error message and the variable gets parsed as it should.
+ Fixes bug reported by Len Giambrone <Len.Giambrone@intersystems.com>
- 3/4
- ---
-alias.c
- - made the readline support functions #ifdef READLINE, so they're
- not compiled into the shell unless readline is
+ 10/14
+ -----
+doc/{bash.1,bashref.texi}
+ - add to the "duplicating file descriptors" description that >&word
+ doesn't redirect stdout and stderr if word expands to `-'
+ - add to the "appending standard output and standard error"
+ description a note that >&word, where word is a number or `-',
+ causes other redirection operators to apply for sh and Posix
+ compatibility reasons. Suggested by Greg Wooledge
+ <wooledg@eeg.ccf.org>
-lib/readline/bind.c
- - new function _rl_untranslate_macro_value, to expand meta-prefixes
- and other special characters in a macro value for printing by
- _rl_macro_dumper_internal
- - call _rl_untranslate_macro_value in _rl_macro_dumper_internal to
- get a printable version of the macro value
+ 10/15
+ -----
+pcomplete.c
+ - change pcomp_filename_completion_function to only run the filename
+ dequoting function in the cases (as best as it can figure) where
+ readline won't do it via rl_filename_completion_function. Based
+ on reports from <lolilolicon@gmail.com>
-lib/readline/readline.c
- - new variable, rl_dispatching, set to 1 when we call a function
- from _rl_dispatch
+ 10/19
+ -----
+bashline.c
+ - attempt_shell_completion: add call to set_directory_hook() to make
+ sure the rewrite functions are correct. It's cheap and doesn't
+ hurt
+ - command_word_completion_function: if completing a command name that
+ starts with `.' or `..', temporarily suppress the effects of the
+ `direxpand' option and restore the correct value after calling
+ rl_filename_completion_function. If it's enabled, the directory
+ name will be rewritten and no longer match `./' or `../'. Fixes
+ problem reported by Michael Kalisz <michael@kalisz.homelinux.net>
-lib/readline/readline.h
- - extern declaration for rl_dispatching
+ 10/22
+ -----
+builtins/history.def
+ - push_history: make sure remember_on_history is enabled before we
+ try to delete the last history entry -- the `history -s' command
+ might not have been saved. Fixes bug reported by
+ lester@vmw-les.eng.vmware.com
lib/readline/complete.c
- - make sure S_ISCHR and S_ISBLK are defined before using them
+ - rl_callback_read_char: add calls to a macro CALLBACK_READ_RETURN
+ instead of straight return; add same call at end of function.
+ Placeholder for future work in deinstalling signal handlers when
+ readline is not active
-lib/readline/terminal.c
- - add a new #define NEED_EXTERN_PC. Define this if the termcap
- or curses libraries need `extern' before declarations of PC,
- BC, and UP
+ 10/25
+ -----
+expr.c
+ - exp2: catch arithmetic overflow when val1 == INTMAX_MIN and val2 == -1
+ for DIV and MOD and avoid SIGFPE. Bug report and pointer to fix
+ from Jaak Ristioja <jaak.ristioja@cyber.ee>
+ - expassign: same changes for arithmetic overflow for DIV and MOD
-lib/readline/{readline,terminal,histfile}.c
- - changes to compile on OS/2 with OS/2 `EMX' port of gcc, originally
- sent by ilya@math.ohio-state.edu
+ 10/28
+ -----
+subst.c
+ - parameter_brace_expand: allow pattern substitution when there is an
+ expansion of the form ${var/} as a no-op: replacing nothing with
+ nothing
+ - parameter_brace_patsub: don't need to check for PATSUB being NULL;
+ it never is
-builtins/set.def
- - fixed a bug in set_shellopts that caused the shell to crash if
- there were no shell options set
+flags.c
+ - if STRICT_POSIX is defined, initialize history_expansion to 0, since
+ history expansion (and its treatment of ! within double quotes) is
+ not a conforming posix environment. From austin-group issue 500
- 3/5
- ---
-configure.in,Makefile.in
- - choose run-all or run-minimal as the test script based on whether
- the --enable-minimal-config option was given to configure
+lib/readline/histexpand.c
+ - history_expand: when processing a string within double quotes
+ (DQUOTE == 1), make the closing double quote inhibit history
+ expansion, as if the word were outside double quotes. In effect,
+ we assume that the double quote is followed by a character in
+ history_no_expand_chars. tcsh and csh seem to do this. This
+ answers a persistent complaint about history expansion
-builtins/setattr.def
- - fixed `export -p' and `readonly -p' so that they output `export'
- or `readonly' when in POSIX mode, as POSIX.2 specifies
+ 10/29
+ -----
+make_cmd.c
+ - make_arith_for_command: use skip_to_delim to find the next `;'
+ when breaking the string between the double parens into three
+ separate components instead of a simple character loop. Fixes
+ bug reported by Dan Douglas <ormaaj@gmail.com>
- 3/6
- ---
-builtins/setattr.def
- - make `readonly -a var=(...)' work just like `declare -ar var=(...)',
- since the two logically mean the same
- - `readonly -f' and `export -f' don't print the function definition
- for each readonly or exported function, respectively, when in
- POSIX mode
+ 11/2
+ ----
+Makefile.in
+ - make libbuiltins.a depend on builtext.h to serialize its creation
+ and avoid conflict between multiple invocations of mkbuiltins.
+ Fix from Mike Frysinger <vapier@gentoo.org>
-jobs.c, nojobs.c
- - don't report status for processes killed by SIGPIPE if
- DONT_REPORT_SIGPIPE is defined
+ 11/5
+ ----
+findcmd.c
+ - user_command_matches: if stat(".", ...) returns -1, set st_dev
+ and st_ino fields in dotinfo to 0 to avoid same_file matches
+ - find_user_command_in_path: check stat(2) return the same way
-config.h.top
- - added a commented-out define for DONT_REPORT_SIGPIPE
+lib/glob/glob.c
+ - glob_vector: don't call strlen(pat) without checking pat == 0
+ - glob_dir_to_array: make sure to free `result' and all allocated
+ members before returning error due to malloc failure
+ - glob_vector: make sure to free `nextname' and `npat' on errors
+ (mostly when setting lose = 1)
+ - glob_vector: if flags & GX_MATCHDIRS but not GX_ALLDIRS, make
+ sure we free `subdir'
+ - glob_filename: when expanding ** (GX_ALLDIRS), make sure we
+ free temp_results (return value from glob_vector)
+
+lib/glob/xmbsrtowcs.c
+ - xdupmbstowcs: fix call to realloc to use sizeof (char *) instead
+ of sizeof (char **) when assigning idxtmp
execute_cmd.c
- - `time' can now be used to time background pipelines, and reports
- the timing statistics when the pipeline completes
+ - print_index_and_element: return 0 right away if L == 0
+ - is_dirname: fix memory leak by freeing `temp'
+ - time_command: don't try to deref NULL `command' when assigning
+ to `posix_time'
+ - shell_execve: null-terminate `sample' after READ_SAMPLE_BUF so it's
+ terminated for functions that expect that
-[bash-2.01-alpha1 frozen]
+builtins/read.def
+ - read_builtin: don't call bind_read_variable with a potentially-null
+ string
- 3/12
- ----
-subst.c
- - move the parent end of the pipe file descriptor used for process
- substitution to a high, unused file descriptor to avoid clashes
- with redirections performed explicitly by a script
+pcomplete.c
+ - gen_command_matches: don't call dispose_word_desc with a NULL arg
+ - gen_compspec_completions: fix memory leak by freeing `ret' before
+ calling gen_action_completions (tcs, ...). happens when
+ performing directory completion as default and no completions
+ have been generated
+ - gen_progcomp_completions: make sure to set foundp to 0 whenever
+ returning NULL
+ - it_init_aliases: fix memory leak by freeing alias_list before
+ returning
-configure.in
- - added a `--with-curses' argument so curses can be forcibly chosen
- over libtermcap (some Unix versions ship lousy termcap databases)
+bashline.c
+ - command_word_completion_function: don't call restore_tilde with a
+ NULL directory_part argument
+ - bash_directory_expansion: bugfix: don't throw away results of
+ rl_directory_rewrite_hook if it's set and returns non-zero
+ - bind_keyseq_to_unix_command: free `kseq' before returning error
+
+arrayfunc.c
+ - assign_array_element_internal: make sure `akey' is freed if non-null
+ before returning error
+ - assign_compound_array_list: free `akey' before returning error
+ - array_value_internal: free `akey' before returning error
+ - unbind_array_element: free `akey' before returning error
-support/mkconffiles
- - new script to create _distribution and _patchlevel from values
- contained in `configure'
+subst.c
+ - array_length_reference: free `akey' before returning error in case
+ of expand_assignment_string_to_string error
+ - array_length_reference: free `akey' after call to assoc_reference
+ - skip_to_delim: if skipping process and command substitution, free
+ return value from extract_process_subst
+ - parameter_brace_substring: free `val' (vtype == VT_VARIABLE) before
+ returning if verify_substring_values fails
+ - parameter_brace_expand: remove two duplicate lines that allocate
+ ret in parameter_brace_substring case
+ - parameter_brace_expand: convert `free (name); name = xmalloc (...)'
+ to use `xrealloc (name, ...)'
+ - parameter_brace_expand: free `name' before returning when handling
+ ${!PREFIX*} expansion
+ - split_at_delims: fix memory leak by freeing `d2' before returning
-doc/bashref.texi
- - updated installation instructions
+redir.c
+ - redirection_error: free `filename' if the redirection operator is
+ REDIR_VARASSIGN by assigning allocname
- 3/13
- ----
-general.c
- - if `getgroups' returns 0, make sure we add the primary group id
- as GROUPS[0].
- - if we have getgroups, and the primary gid is not in the array
- getgroups returns, add it as group_array[0] and shuffle everything
- up one element. This ensures that current_user.gid == group_array[0]
- all the time
-
-tests/builtins.tests
- - changes to avoid stray variables in environment when the shell
- version of printenv is used with bash as /bin/sh, running the
- `exec -c' tests.
+eval.c
+ - send_pwd_to_eterm: fix memory leak by freeing value returned by
+ get_working_directory()
- 3/14
- ----
builtins/cd.def
- - spelling correction is no longer enabled by default
+ - change_to_directory: fix memory leak by freeing return value from
+ resetpwd()
+ - cd_builtin: fix memory leak by freeing value returned by dirspell()
+ - cd_builtin: fix memory leak by freeing `directory' if appropriate
+ before overwriting with return value from resetpwd()
-support/bashbug.sh
- - if the shell's release status is alpha or beta, offer the option
- of sending the bug report to the bash-testers mailing list as
- well as to chet
+builtins/type.def
+ - describe_command: free `full_path' before overwriting it with return
+ value from sh_makepath
- 3/17
- ----
-configure.in
- - configure --without-gnu-malloc by default on *-sgi-irix6* because
- their code needs 8-byte alignment
-
-support/bashbug.sh
- - ``' needs to be quoted with a backslash in double-quoted strings
-
-aclocal.m4
- - slight changes to the strcoll test, since AIX 4.2 returns -1, 0, or
- 1 from strcmp(3) but a numeric collation order difference from
- strcoll(3)
-
- 3/18
- ----
-command.h
- - new redirection error code: HEREDOC_REDIRECT
-
-execute_cmd.c
- - return HEREDOC_REDIRECT from do_redirection_internal when
- here_document_to_fd cannot create the temp file for a here document
- - changed redirection_error to print a meaningful message when
- here document temp file creation fails (HEREDOC_REDIRECT)
-
- 3/19
- ----
-subst.c
- - changes to match_pattern_char: return 1 if the first char of the
- pattern is `?' only if the string is non-null; just return 1 if
- the first char of the pattern is `[' and the string is non-empty
- rather than try to re-implement the brace matching code from fnmatch
-
-lib/glob/fnmatch.c
- - some changes from glibc-2.0.1 posix/fnmatch.c
-
- 3/21
- ----
-variables.c
- - only do the initialization of `ignoreeof' if the shell is
- interactive
- - reset values of $SHLVL > 1000 to 1 in adjust_shell_level, and
- don't call itos, since we don't need its generality
- - new function, initialize_shell_level, just calls adjust_shell_level
- with argument of 1. If $SHLVL is unset, adjust_shell_level will
- deal with it correctly
- - change initialize_shell_variables to not malloc a copy of each
- environment variable, just keep two pointers into the env string:
- one for the name, one for the value
- - broke the code that computes the value of $BASH out into a separate
- function: get_bash_name
- - get_bash_name special-cases shell_name with a `./' prefix when
- initializing $BASH
- - new function: set_home_var, sets $HOME to current_user.home_dir if
- it's not already set, calling get_current_user_info if
- current_user.home_dir is NULL
- - new function: set_shell_var, sets $SHELL to current_user.shell if
- it's not already set, calling get_current_user_info if
- current_user.shell is NULL
- - changed places that reference information in current_user to check
- for NULL values of the member they're interested in and call
- get_current_user_info if necessary
-
-shell.c
- - moved the code that sets up the information in current_user that
- comes from the password file into a new function,
- get_current_user_info
- - shell_initialize calls get_current_user_info only if the shell is
- interactive
-
-externs.h
- - new extern declaration for get_current_user_info(), so variables.c
- can use it
-
- 3/24
- ----
-lib/tilde/tilde.c
- - if SHELL is defined, user the current_user struct info to find
- the user's home directory rather than calling getpwuid
-
- 3/25
- ----
-nojobs.c
- - don't try to open /dev/tty when getting or setting the tty state
- and window size; use shell_tty instead
- - initialize shell_tty to standard error in initialize_job_control
- - only fetch the tty state initially if the shell is interactive
-
-general.c
- - open /dev/tty with the O_NONBLOCK flag
-
-variables.c
- - changed all_vars so that it sorts its output all the time, not
- just when in POSIX mode. This means that the output of `set'
- and `export' will be sorted
-
-builtins/set.def
- - in initialize_shell_options, only call parse_shellopts if we
- inherited $SHELLOPTS from the environment
- - make sure we call parse_shellopts from initialize_shell_options
- with a copy of the value of SHELLOPTS, in case one of the functions
- called while setting one of the variables modifies $SHELLOPTS
-
-lib/readline/readline.c
- - make sure that digit arguments don't change the state of
- rl_last_func
-
-support/printenv.c
- - new file, printenv(1) clone, used to avoid environment variables
- that might be set automatically when using printenv.sh
-
-lib/tilde/tilde.c
- - if SHELL is defined, don't call getenv to get the value of $HOME,
- call get_string_value () directly
-
- 3/26
- ----
-lib/readline/histexpand.c
- - abstracted the `#ifdef SHELL' stuff that checked for special cases
- that should not be history expanded ([!...], ${!...}) into a call
- to a function that is the value of the
- new history_inhibit_expansion_function variable
-
-lib/readline/history.h
- - extern declaration for history_inhibit_expansion_function
-
-bashhist.c
- - new function, bash_history_inhibit_expansion, which checks for
- the special cases in which history expansion should be inhibited
- - changes to the various history initialization functions to
- set history_inhibit_expansion_function
-
-lib/readline/doc/hstech.texinfo
- - documented history_inhibit_expansion_function
-
-lib/readline/shell.c
- - new file, containing versions of the functions that are provided
- by bash when readline is linked as part of bash
- - new function: get_env_value(). If SHELL is defined, this calls
- get_string_value(). If SHELL is not defined, this calls getenv()
-
-lib/readline/histexpand.c
- - moved single_quote() to shell.c
-
-lib/readline/util.c
- - moved savestring() to shell.c
-
-lib/readline/terminal.c
- - moved set_lines_and_columns() to shell.c
-
-lib/readline/Makefile.in, Makefile.in
- - added shell.c and shell.o to the appropriate variables that contain
- the files comprising the readline and history libraries
-
-lib/readline/signals.c
- - introduced two new cpp defines: HANDLE_JOB_SIGNALS and
- HANDLE_SIGTERM. When HANDLE_JOB_SIGNALS is defined, SIGTSTP,
- SIGTTIN, and SIGTTOU are caught and handled. When HANDLE_SIGTERM
- is defined, SIGTERM is caught and handled. These are both
- defined automatically if SHELL is not defined
-
-lib/readline/{bind,histfile,nls,readline,terminal}.c
- - call get_env_value instead of getenv(). This should remove the
- dependency on being able to redefine getenv() in oslib.c
-
-shell.c
- - added a missing argument of -1 to the call to list_minus_o_opts.
- Now `bash -o' lists all options, not just random ones depending
- on what's on the stack
-
- 3/28
- ----
-builtins/ulimit.def
- - change RLIM_INFINITY to the hard limit only if the hard limit is
- greater than the current (soft) limit
-
-hashlib.c
- - return immediately from flush_hash_table if the hash table passed
- is NULL
-
- 4/1
- ---
-shell.c
- - remove call to initialize_filename_hashing -- initialize the hash
- table the first time a hashed command has to be remembered
-
-hashcmd.c
- - new file, with functions to perform filename hashing and lookup
- taken from builtins/hash.def and builtins/common.c
- - change to remember_filename -- call initialize_filename_hashing
- if hashing_initialized is 0
-
-hashcmd.h
- - new file, mostly from builtins/hashcom.h, with extern function
- declarations added
-
-execute_cmd.c, builtins/{hash,type}.def
- - include hashcmd.h for hash function and type definitions
-
-builtins/{common.{c,h},hash.def}
- - moved hashing functions and declarations to hashcmd.c/hashcmd.h
-
-Makefile.in, builtins/Makefile.in
- - changed source and object file definitions and dependencies because
- of addition of hashcmd.h and hashcmd.c
+builtins/complete.def
+ - compgen_builtin: fix memory leak by calling strlist_dispose (sl)
+ before overwriting sl with return value from completions_to_stringlist
builtins/hash.def
- - return immediately from print_hashed_commands if hashed_commands
- is empty, indicating that the hash table has not been initialized
-
- 4/2
- ---
-lib/readline/bind.c
- - fixed translation of ESC in rl_untranslate_keyseq and
- rl_untranslate_macro_value
-
-lib/readline/{readline,kill}.c
- - added an argument to _rl_fix_point telling it whether or not to
- fix up the mark also; changed calls to _rl_fix_point to add the
- appropriate argument
-
-Makefile.in
- - changed the substitution delimiter in the `sed' commands that
- create bashbug from `:' to `%' to avoid conflicts with options
- containing `:'
-
- 4/3
- ---
-print_cmd.c
- - made the initial value and the default growth value for the
- printed command somewhat smaller -- we don't really need to
- allocate 4096 bytes for the printed command
- - added stdarg support to xprintf if PREFER_STDARG is defined
-
-stringlib.c
- - changed strip_trailing to take the index of the last character
- as the second argument, saving a (useless) call to strlen, since
- the caller already knows where the end of the string is
-
-subst.c
- - change call to strip_trailing in command_substitute to add the
- new second argument
-
-externs.h
- - changed extern declaration for strip_trailing
-
- 4/4
- ---
-Makefile.in, configure.in, lib/malloc/Makefile.in
- - changed the strategy for picking which `malloc' to include by
- having configure define a `malloc target' and the Makefile in
- lib/malloc implementing rules for that target
-
- 4/5
- ---
-Makefile.in
- - slightly changed the rules for remaking `parser-built': it is
- now a copy of y.tab.h, updated only when the contents of y.tab.h
- change
- - everything that used to depend on y.tab.h now depends on
- parser-built
+ - list_hashed_filename_targets: fix memory leak by freeing `target'
- 4/6
- ---
-execute_cmd.c, print_cmd.c
- - use #include <y.tab.h> so we pick up y.tab.h from the build
- directory instead of the source directory if it happens to be
- recreated in the build directory
-
- 4/7
- ---
-bashline.c
- - fixed another problem with `pwd`/[TAB] thinking that the `/
- started an unclosed command substitution, generating errors
-
- 4/8
- ---
-general.c
- - renamed bash_tilde_expansion_failure_hook to be
- bash_special_tilde_expansions, since that more accurately reflects
- its function
- - changed tilde_initialize so that there is no failure hook -- the
- special expansions are handled first with the preexpansion hook
-
-lib/tilde/tilde.c
- - new variable: tilde_expansion_preexpansion_hook -- if non-null, it
- points to a function that is called before standard tilde expansion
- is attempted
-
-lib/tilde/tilde.h
- - extern declaration for tilde_expansion_preexpansion_hook
-
-doc/{bash.{1,html},bashref.texi}
- - added optional open paren to description of `case' command syntax
+make_cmd.c
+ - make_arith_for_command: free `init', `test', and `step' before
+ returning error on parse error
- 4/9
- ---
-variables.c
- - on qnx, set and export a variable `NODE' which contains the QNX
- `node id'
+jobs.c
+ - initialize_job_control: don't call move_to_high_fd if shell_tty == -1
general.c
- - QNX system can now handle pathnames with a leading `//'
-
-configure.in
- - added `-Dqnx' to LOCAL_CFLAGS on QNX machines
+ - check_dev_tty: don't call close with an fd < 0
+ - legal_number: deal with NULL `string' argument, return invalid
-lib/malloc/getpagesize.h
- - some systems need sysconf(_SC_PAGE_SIZE) to obtain the page size;
- added code to check for it
+lib/sh/fmtulong.c
+ - fmtulong: if the `base' argument is invalid, make sure we index
+ buf by `len-1' at maximum
- 4/10
- ----
print_cmd.c
- - include the prototype for cprintf only if PREFER_STDARG is defined,
- otherwise just have a K&R-style forward function declaration
-
-hashlib.h
- - reduced the default number of buckets in a hash table to 53
+ - print_deferred_heredocs: don't try to dereference a NULL `cstring'
+ - cprintf: make sure to call va_end (args)
-lib/tilde/tilde.c
- - prime the result string in tilde_expand by allocating a new string
- that's as long as the input string (+16 if a tilde appears in
- the string to be expanded). This should reduce the number of
- reallocs
+variables.c
+ - push_dollar_vars: fix call to xrealloc to use sizeof (WORD_LIST *)
+ instead of sizeof (WORD_LIST **)
-subst.c
- - broke the code that reads the output of a command substitution
- through the pipe to the subshell out into a separate function:
- read_comsub(). This does not use stdio, but rather reads
- directly from the pipe into a local 128-character buffer
+lib/sh/zmapfd.c
+ - zmapfd: if read returns error, free result and return -1 immediately
+ instead of trying to reallocate it
- 4/11
+ 11/6
----
execute_cmd.c
- - some systems need both <sys/time.h> and <time.h>, so include both
- if it's possible, otherwise include <sys/time.h> (if present)
-
-lib/readline/rl{tty,defs}.h
- - moved includes of <sys/stream.h>, <sys/ptem.h>, etc. to rltty.h
-
-lib/readline/terminal.c
- - include rltty.h after rldefs.h
-
-variables.c
- - changes to make environment creation faster and use less memory
- (fewer malloc/free calls, too):
-
- o two new variables: export_env_index (how many environment
- strings are in export_env) and export_env_size (the
- number of slots for strings allocated in export_env)
- o added new function add_to_export_env, since adding the
- exported shell variables and shell functions does not
- need to search the export_env for a definition to supersede
- (we just cleared it out!)
- o renamed add_or_supersede to add_or_supersede_exported_var,
- since it always works on export_env, and changed the second
- argument to a flag saying whether or not to allocate a new
- copy of the string placed into the environment
- o changed calls to add_or_supersede to the new
- add_or_supersede_exported_var with the appropriate flags
- o don't free and reallocate export_env in maybe_make_export_env,
- just free the strings and start anew
- o prime the size of export_env from the total number of shell
- variables and shell functions -- this will always be enough
- for the exported shell functions and variables, and big
- enough most of the time for the entire environment
+ - cpl_reap: rewrote to avoid using pointer after freeing it; now builds
+ new coproc list on the fly while traversing the old one and sets the
+ right values for coproc_list when done
-builtins/cd.def
- - efficiency hack in bindpwd(): if PWD is exported, we will have to
- rebuild the entire exported environment after every time we change
- directories. What we do is see if array_needs_making changes value
- from 0 to 1 after bind_variable ("PWD", dirname) is called, and
- that PWD is exported. If that happens, we just replace the value
- of PWD in the exported environment with a call to
- add_or_supersede_exported_var
-
-bashline.c, parse.y
- - check calls to pre_process_line to make a fresh copy of the line
- if pre_process_line returns what it was passed, in preparation
- for future changes
+ 11/12
+ -----
+builtins/set.def
+ - if neither -f nor -v supplied, don't allow a readonly function to
+ be implicitly unset. Fixes bug reported by Jens Schmidt
+ <jens.schmidt35@arcor.de>
-bashhist.c
- - pre_process_line now returns its argument if it did not make
- any changes to it
+lib/readline/callback.c
+ - change CALLBACK_READ_RETURN to clear signal handlers before returning
+ from rl_callback_read_char so readline's signal handlers aren't
+ installed when readline doesn't have control. Idea from Jan
+ Kratochvil <jan.ktratochvil@redhat.com> and the GDB development
+ team
-alias.c
- - free the bucket entry holding the alias to be removed in
- remove_alias, as well as the data
+pcomplete.h
+ - COPT_NOQUOTE: new complete/compgen option value
- 4/14
- ----
-unwind_prot.c
- - if an unwind-protect frame is being discarded, and its cleanup
- function is `restore_variable', the `arg' member points to a
- SAVED_VAR that must be freed. This change is made in
- remove_unwind_protect_internal and unwind_frame_discard_internal
+builtins/complete.def
+ - noquote: new complete/compgen option; will be used to disable
+ filename completion quoting
-parse.y
- - need to free memory allocated by parse_arith_cmd if it is an
- arithmetic command, after using it to make a new word
+pcomplete.c
+ - pcomp_set_readline_variables: pay attention to COPT_NOQUOTE; turns
+ of rl_filename_quoting_desired if set; turns it on if unset (value
+ is inverted, since default is on)
-subst.c
- - fixed some memory leaks caused by not freeing the argument to
- make_bare_word, which duplicates its string argument
- - need to dispose list generated by list_rest_of_args in
- paramter_list_remove_pattern
- - make sure the return value from getpattern() is freed
- - make sure array_value_internal always returns newly-allocated
- memory
- - get_var_and_type returns a new type: VT_ARRAYMEMBER if the
- string passed is of the form var[index]
- - make sure parameter_brace_substring frees the memory allocated
- by get_var_and_type if verify_substring_values returns 0
-
-hashlib.c, hashlib.h
- - new function, dispose_hash_table (table), which frees the
- table's bucket array and the table itself
-
-alias.c
- - call dispose_hash_table from delete_all_aliases instead of just
- freeing the table
+doc/bash.1,lib/readline/doc/rluser.texi
+ - document new -o noquote option to complete/compgen/compopt
pathexp.c
- - make sure to free `newnames' (but *not* its contents) before
- returning from ignore_globbed_names
-
-builtins/exec.def
- - make sure the argv created to pass to shell_execve is freed if
- the execve fails and we're not exiting on failed execs
+ - quote_string_for_globbing: if QGLOB_REGEXP, make sure characters
+ between brackets in an ERE bracket expression are not inappropriately
+ quoted with backslashes. This is a pretty substantial change,
+ should be stressed when opening bash up for alpha and beta tests.
+ Fixes bug pointed out by Stephane Chazleas
+ <stephane_chazelas@yahoo.fr>
-expr.c
- - broke evalexp into two functions: evalexp, which sets up the
- jmp_buf that errors jump to, and subexpr, which does the
- evaluation and pushing and popping of contexts
- - readtok now calls subexpr to evaluate subexpressions in
- parentheses
- - evalexp now takes an additional paramter, a pointer to an int.
- If the expression contains errors, the location to which this
- points gets 0, otherwise it gets 1 to show that the value
- returned may be used. This plugs up memory leaks that were
- the result of evalexp() longjmping back to top_level
- - fixed a memory leak: expr_stack[0] was not being freed
+doc/{bash.1,bashref.texi}
+ - document that regexp matches can be inconsistent when quoting
+ characters in bracket expressions, since usual quoting characters
+ lose their meaning within brackets
+ - note that regular expression matching when the pattern is stored
+ in a shell variable which is quoted for expansion causes string
+ matching
-externs.h
- - changed extern declaration for evalexp
+redir.h
+ - RX_SAVEFD: new flag value; notes that a redirection denotes an
+ fd used to save another even if it's not >= SHELL_FD_BASE
-variables.c, subst.c, builtins/let.def
- - changed calls to evalexp appropriately. They either cause a
- longjmp (top_level, DISCARD) (which is what the old stuff in
- expr.c did) or are handled by returning an appropriate error
- value (e.g., &expand_word_error in subst.c)
+redir.c
+ - do_redirection_internal: when deciding whether or not to reset the
+ close-on-exec flag on a restored file descriptor, trust the value
+ of redirect->flags & RX_SAVCLEXEC even if the fd is < SHELL_FD_BASE
+ if the RX_SAVEFD flag is set
+ - add_undo_redirect: set the RX_SAVEFD flag if the file descriptor
+ limit is such that the shell can't duplicate to a file descriptor
+ >= 10. Fixes a limitation that tripped a coreutils test reported
+ by Paul Eggert <eggert@cs.ucla.edu>
- 4/16
- ----
-shell.c
- - make sure to free dollar_vars[0] before assigning it the first
- argument following `-c command'
+ 11/19
+ -----
+doc/{bash.1,bashref.texi},lib/readline/doc/hsuser.texi
+ - make it clear that bash runs HISTFILESIZE=$HISTSIZE after reading
+ the startup files
+ - make it clear that bash runs HISTSIZE=500 after reading the
+ startup files
+ - make it clear that setting HISTSIZE=0 causes commands to not be
+ saved in the history list
+ - make it clear that setting HISTFILESIZE=0 causes the history file
+ to be truncated to zero size
variables.c
- - if unsetting a local variable with a previous context, make sure
- to free the hash table element used to store the local variable
+ - sv_histsize: change so setting HISTSIZE to a value less than 0
+ causes the history to be `unstifled'
+ - sv_histsize: change so setting HISTFILESIZE to a value less than 0
+ results in no file truncation
+ - make it clear that numeric values less than 0 for HISTFILESIZE or
+ HISTSIZE inhibit the usual functions
-lib/readline/terminal.c
- - rearrange the includes so <sys/ioctl.h> is included before rltty.h,
- as it is in rltty.c
-
- 4/17
- ----
-flags.c
- - new function: reset_shell_flags, which resets all of the flags
- back to their initial values
-
-flags.h
- - extern declaration for reset_shell_flags
+ 11/23
+ -----
+parse.y
+ - save_input_line_state: add missing `return ls' at the end, since the
+ function is supposed to return its argument. Pointed out by
+ Andreas Schwab <schwab@linux-m68k.org>
-builtins/set.def
- - new function: reset_shell_options, which resets all of the -o
- options that are not also shell flags back to their initial values
+builtins/read.def
+ - skip over NUL bytes in input, as most modern shells seem to. Bug
+ report by Matthew Story <matt@tablethotels.com>
-builtins/shopt.def
- - new function: reset_shopt_options, which resets all of the shopt
- options that are not also shell flags or -o options back to their
- initial values
+lib/readline/vi_mode.c
+ - rl_vi_replace: set _rl_vi_last_key_before_insert to invoking key
-builtins/common.h
- - extern declarations for reset_shell_options and reset_shopt_options
+ 11/25
+ -----
+builtins/read.def
+ - read_builtin: if xrealloc returns same pointer as first argument,
+ don't bother with the remove_unwind_protect/add_unwind_protect pair
+ - read_builtin: set a flag (`reading') around calls to zread/zreadc
+ and readline()
+ - sigalrm: change to set flag (`sigalrm_seen') and only longjmp if
+ currently in read(2) (reading != 0)
+ - CHECK_ALRM: new macro, checks sigalrm_seen and longjmps if non-zero,
+ behavior of old SIGALRM catching function
+ - read_builtin: call CHECK_ALRM in appropriate places while reading
+ line of input. Fixes bug reported by Pierre Gaston
+ <pierre.gaston@gmail.com>
-execute_cmd.c
- - broke the code that reinitializes things when an executable script
- without a leading `#!' is found out into a new function:
- initialize_subshell
- - initialize_subshell now calls the reset_* functions that reset the
- shell flags and options
+lib/readline/vi_mode.c
+ - rl_vi_replace: initialize characters before printing characters in
+ vi_replace_keymap to their default values in vi_insertion_keymap,
+ since we're supposed to be in insert mode replacing characters
+ - rl_vi_replace: call rl_vi_start_inserting to set last command to
+ `R' for undo
+ - rl_vi_replace: set _rl_vi_last_key_before_insert to `R' for future
+ use by _rl_vi_done_inserting
+ - vi_save_insert_buffer: new function, broke out code that copies text
+ into vi_insert_buffer from _rl_vi_save_insert
+ - _rl_vi_save_replace: new function, saves text modified by
+ rl_vi_replace (using current point and vi_replace_count to figure
+ it out) to vi_replace_buffer
+ - _rl_vi_save_insert: call vi_save_insert_buffer
+ - _rl_vi_done_inserting: if _rl_vi_last_key_before_insert == 'R', call
+ _rl_vi_save_replace to save text modified in replace mode (uses
+ vi_save_insert_buffer)
+ - _rl_vi_replace_insert: new function, replaces the number of chars
+ in vi_insert_buffer after rl_point with contents ov vi_insert_buffer
+ - rl_vi_redo: call _rl_vi_replace_insert if last command == 'R' and
+ there's something in vi_insert_buffer. Fixes bug with `.' not
+ redoing the most recent `R' command, reported by Geoff Clare
+ <g.clare@opengroup.org> in readline area on savannah
+
+ 11/26
+ -----
+lib/readline/rlprivate.h
+ - RL_SIG_RECEIVED(): evaluate to non-zero if there is a pending signal
+ to be handled
+ - RL_SIGINT_RECEIVED(): evaluate to non-zero if there is a pending
+ SIGINT to be handled
-general.c, general.h
- - move_to_high_fd now takes a third argument: the highest fd at which
- to start looking. If that's less than 20, the maximum number of
- open files as returned by getdtablesize() is used (which is what
- it did before this)
+lib/readline/complete.c
+ - remove all mention of _rl_interrupt_immediately
+ - rl_completion_matches: check RL_SIG_RECEIVED after each call to
+ the entry function, call RL_CHECK_SIGNALS if true to handle the
+ signal
+ - rl_completion_matches: if RL_SIG_RECEIVED evaluates to true, free
+ and zero out the match_list this function allocated
+ - rl_completion_matches: if the completion entry function is
+ rl_filename_completion_function, free the contents of match_list,
+ because that function does not keep state and will not free the
+ entries; avoids possible memory leak pointed out by
+ Garrett Cooper <yanegomi@gmail.com>
+ - gen_completion_matches: if RL_SIG_RECEIVED evalutes to true after
+ calling rl_attempted_completion_function, free the returned match
+ list and handle the signal with RL_CHECK_SIGNALS; avoids
+ possible memory leak pointed out by Garrett Cooper
+ <yanegomi@gmail.com>
+ - gen_completion_matches: if RL_SIG_RECEIVED evaluates to true after
+ calling rl_completion_matches, free the returned match list and
+ handle the signal with RL_CHECK_SIGNALS
-jobs.c, shell.c, subst.c
- - changed calls to move_to_high_fd appropriately
+lib/readline/util.c
+ - rl_settracefp: new utility function to set the tracing FILE *
-[bash-2.01-beta1 frozen]
+lib/readline/signals.c
+ - _rl_sigcleanup: pointer to a function that will be called with the
+ signal and a void * argument from _rl_handle_signal
+ - _rl_sigcleanarg: void * that the rest of the code can set to have
+ passed to the signal cleanup function
+ - _rl_handle_signal: if _rl_sigcleanup set, call as
+ (*_rl_sigcleanup) (sig, _rl_sigcleanarg)
- 4/18
- ----
-general.c
- - itos now uses a local char buffer to do its conversion, but still
- returns newly-allocated memory
+lib/readline/rlprivate.h
+ - extern declarations for _rl_sigcleanup and _rl_sigcleanarg
- 4/21
- ----
-variables.c
- - be a little more careful when checking for backwards-compatibility
- with exported function definitions
+lib/readline/complete.c
+ - _rl_complete_sigcleanup: signal cleanup function for completion code;
+ calls _rl_free_match_list on _rl_sigcleanarg if signal == SIGINT
+ - rl_complete_internal: before calling display_matches if what_to_do
+ == `?', set _rl_sigcleanup to _rl_complete_sigcleanup so the match
+ list gets freed on SIGINT; avoids possible memory leak pointed out
+ by Garrett Cooper <yanegomi@gmail.com>
+ - rl_complete_internal: in default switch case, call _rl_free_match_list
+ before returning to avoid memory leak
- 4/22
- ----
-builtins/ulimit.def
- - translate RLIM_INFINITY to limit.rlim_max if the current limit is
- less than or equal to the hard limit, not just strictly less than
- (the change of 3/28 was too drastic)
+doc/bashref.texi
+ - start at a set of examples for the =~ regular expression matching
+ operator, touching on keeping the pattern in a shell variable and
+ quoting portions of the pattern to remove their special meaning
- 4/23
+ 12/1
----
-oslib.c
- - fixed definition of to_lower on machines without strcasecmp
+lib/glob/gmisc.c
+ - extglob_pattern: new function, returns 1 if pattern passed as an
+ argument looks like an extended globbing pattern
-trap.c
- - don't free the trap command in change_signal if the SIG_INPROGRESS
- is set in the signal's flags -- it will cause memory to be freed
- twice if a trap command resets the signal handler more than once,
- and _run_trap_internal keeps a pointer to the trap command so it
- can free it, so there will be no leaks
+lib/glob/glob.c
+ - skipname: return 0 immediately if extglob_pattern returns non-zero,
+ let the extended globbing code do the right thing with skipping
+ names beginning with a `.'
+ - mbskipname: return 0 immediately if extglob_pattern returns non-zero,
+ let the extended globbing code do the right thing with skipping
+ names beginning with a `.'. Fixes bug reported by Yongzhi Pan
+ <panyongzhi@gmail.com>
- 4/24
+ 12/2
----
-aclocal.m4,configure.in
- - removed BASH_CC_WORKS, since AC_PROG_CC now has the functionality
+lib/glob/smatch.c
+ - patscan, patscan_wc: no longer static so other parts of the glob
+ library can use them, renamed to glob_patscan, glob_patscan_wc
-shell.c, externs.h
- - get_current_user_info is now a void function
+lib/glob/glob.c
+ - extern declarations for glob_patscan, glob_patscan_wc
+ - wchkname: new function, does skipname on wchar_t pattern and dname,
+ old body of mbskipname after converting to wide chars
+ - extglob_skipname: new function, checks all subpatterns in an extglob
+ pattern to determine whether or not a filename should be skipped.
+ Calls skipname for each subpattern. Dname is only skipped if all
+ subpatterns indicate it should be. Better fix for bug reported by
+ Yongzhi Pan <panyongzhi@gmail.com>
+ - wextglob_skipname: wide-char version of extglob_skipname, calls
+ wchkname instead of calling back into mbskipname for each
+ subpattern to avoid problems with char/wchar_t mismatch
+ - skipname: call extglob_skipname if extglob_pattern returns non-zero
+ - mbskipname: call wextglob_skipname if extglob_pattern returns non-zero
+ - mbskipname: short-circuit immediately if no multibyte chars in
+ pattern or filename
-bashline.c
- - alias_expand_line_internal was removed
- - new function, alias_expand_line, performs alias expansion on
- rl_line_buffer and either replaces rl_line_buffer or signals
- an error
- - new bindable commands: alias-expand-line and
- history-and-alias-expand-line, available if ALIAS is defined
+execute_cmd.c
+ - execute_cond_node: added parens to patmatch assignment statement to
+ make intent clearer
- 4/25
+ 12/3
----
-Makefile.in, lib/malloc/malloc.c
- - changed the define that turns on malloc range checking from
- `rcheck' to `RCHECK'
+configure.in,config.h.in
+ - check for imaxdiv, define HAVE_IMAXDIV if present
-lib/readline/isearch.c
- - fixed a couple of places where rl_search_history would try to
- free a NULL pointer
+expr.c
+ - expassign, exp2: use imaxdiv if available. Doesn't help with checks
+ for overflow from 10/25
- 4/29
+ 12/6
----
-unwind_prot.c
- - fixed a problem with saving a variable that is a null pointer
- in unwind_protect_var. It happens only on machines where the
- size of a pointer is not the size of an int. The old FASTCOPY
- code would copy the eight bytes at memory location zero, which
- did not necessarily make a null pointer
+lib/readline/complete.c
+ - compute_lcd_of_matches: if we're ignoring case in the matches, only
+ use what the user typed as the lcd if it matches the first match
+ (after sorting) up to the length of what was typed (if what the
+ user typed is longer than the shortest of the possible matches, use
+ the shortest common length of the matches instead). If it doesn't
+ match, use the first of the list of matches, as if case were not
+ being ignored. Fixes bug reported by Clark Wang
+ <dearvoid@gmail.com>
- 4/30
+ 12/7
----
-shell.c
- - run_startup_files should turn off job control, since the startup
- files should be run without job control enabled -- this makes
- SIGINT interrupt startup file execution again
- - if we get a SIGINT or other longjmp to top_level while executing
- the startup files, re-enable job control for interactive shells
- before setting locally_skip_execution
-
- 5/2
- ---
-lib/readline/nls.c
- - if we have setlocale(3), don't bother with checking the
- environment variables for valid values; just use setlocale()
- to set the locale categories from the environment variables
- directly and go into eight-bit mode if the current locale is
- not C or POSIX
-
- 5/5
- ---
-sig.c
- - make sure that the handler for SIGPROF is not changed if it has
- been set to something other than SIG_IGN or SIG_DFL -- this makes
- profiling work after the terminating signals have been initialized
-
-bashline.c
- - if a filename containing `!' is completed, and the user has started
- the string with a `"', change the completion style to backslash-
- quoting, since there's no way to use `!' with double quotes (this
- requires more changes to readline to really work right)
-
- 5/6
- ---
-lib/readline/complete.c
- - changes to make_quoted_replacement, insert_all_matches, and
- insert_match and their callers to allow the application-specific
- filename quoting function to change the quote character (e.g., for
- bash to change a filename containing a `!' and started with a
- double quote by the user into a filename with the `!' quoted by
- a backslas and no double quote)
-
- 5/8
- ---
-jobs.c
- - new function: nohup_all_jobs(), calls nohup_job for each entry in
- the jobs list
- - delete_all_jobs is now global
+builtins/cd.def
+ - cd_builtin: add code to return error in case cd has more than one
+ non-option argument, conditional on CD_COMPLAINS define (which is
+ not defined anywhere)
-jobs.h
- - new extern declarations for delete_all_jobs() and nohup_all_jobs()
+doc/{bash.1,bashref.texi}
+ - note that additional arguments to cd following the directory name
+ are ignored. Suggested by Vaclav Hanzl <hanzl@noel.feld.cvut.cz>
-builtins/jobs.def
- - `disown' without any jobspec arguments means the current job. Fix
- a core dump printing the error message when there is no current job
+ 12/10
+ -----
+lib/readline/input.c
+ - rl_read_key: don't need to increment key sequence length here; doing
+ it leads to an off-by-one error
- 5/12
- ----
-subst.c
- - process an expansion like $((foo); bar) as a command substitution,
- not as an arithmetic expansion. An arithmetic expansion must have
- a closing `))'
+lib/readline/macro.c
+ - rl_end_kbd_macro: after off-by-one error with rl_key_sequence_length
+ fixed, can decrement current_macro_index by rl_key_sequence_length
+ (length of key sequence that closes keyboard macro)
- 5/14
- ----
-builtins/evalstring.c
- - the third argument to parse_and_execute() is now a flags word.
- The caller can control the value of `interactive' and whether
- or not history is disabled while parse_and_execute() runs
+lib/readline/readline.c
+ - _rl_dispatch_subseq: fix extra increment of rl_key_sequence_length
+ when ESC maps to a new keymap and we're converting meta characters
+ to ESC+key
+ - _rl_dispatch_subseq: better increment of rl_key_sequence_length
+ before we dispatch to a function in the ISFUNC case (where the
+ second increment above should have happened)
+ - rl_executing_keyseq: the full key sequence that ended up executing
+ a readline command. Available to the calling application, maintained
+ by _rl_dispatch_subseq, indexed by rl_key_sequence_length
+ - rl_executing_key: the key that was bound to the currently-executing
+ readline command. Same as the `key' argument to the function
-builtins/common.h
- - new #defines for the flag values for parse_and_execute()
+lib/readline/readline.h
+ - rl_executing_keyseq: extern declaration
+ - rl_executing_key: extern declaration
+ - rl_key_sequence_length: declaration moved here from rlprivate.h,
+ now part of public interface
-{bashline,jobs,shell,subst,trap,variables}.c, parse.y, builtins/evalfile.c,
-builtins/{eval,fc}.def
- - changed calls to parse_and_execute appropriately
+lib/readline/rlprivate.h
+ - new extern declaration for _rl_executing_keyseq_size, buffer size
+ for rl_executing_keyseq
-builtins/evalfile.c
- - if _evalfile() is passed FEVAL_HISTORY as part of the flags arg,
- don't pass SEVAL_NOHIST to parse_and_execute
- - new function: fc_execute_file, which sets FEVAL_HISTORY in the
- flags argument to _evalfile()
+lib/readline/doc/rltech.texi
+ - documented new variables: rl_executing_key, rl_executing_keyseq,
+ rl_key_sequence_length
+ 12/13
+ -----
bashline.c
- - call bash_add_history instead of add_history from
- vi_edit_and_execute_command so the bash state variables get
- updated properly. This keeps the `v' command from operating
- on an empty command when the history list is stifled
+ - bash_execute_unix_command: replace ad-hoc code that searches
+ cmd_xmap for correct command with call to rl_function_of_keyseq
+ using rl_executing_keyseq; now supports key sequences longer
+ than two characters. Fixes bug reported by Michael Kazior
+ <kazikcz@gmail.com>
-bashhist.c
- - bash_add_history is now global
-
-bashhist.h
- - extern declaration for bash_add_history
-
-builtins/fc.def
- - call fc_execute_file instead of maybe_execute_file in the
- edit-and-re-execute case (fc -e ...)
- - don't manually insert the commands from the file created by `fc -e'
- into the history list, just set remember_on_history and let
- fc_execute_file take care of telling parse_and_execute to do the
- right thing. This makes compound commands and the `cmdhist'
- and `lithist' settings work better. This supersedes the fix of
- 1/27. This was reported again by rchen@fractal.eng.yale.edu.
+ 12/15
+ -----
+make_cmd.c
+ - make_function_def: don't null out source_file before calling
+ make_command so it can be used later on when the function definition
+ is executed
-parse.y
- - the body of a `for' command (the commands between do...done or
- {...}) should be a `compound_list' instead of a `list'. Problem
- reported by cpg@research.bell-labs.com
+execute_cmd.c
+ - execute_intern_function: second argument is now FUNCTION_DEF *
+ instead of COMMAND *
+ - execute_command_internal: call execute_intern_function with the
+ new second argument (the entire FUNCTION_DEF instead of just the
+ command member)
+ - execute_intern_function: if DEBUGGER is defined, call
+ bind_function_def before calling bind_function, just like
+ make_function_def does (might be able to take out the call in
+ make_function_def depending on what the debugger does with it).
+ Fixes bug reported by <dethrophes@motd005>
- 5/19
- ----
-lib/readline/complete.c
- - in filename_completion_function, if we find that the directory
- pointer (return value from opendir(3)), is not null when state
- is 0 (indicating that this is the first time the completion
- function has been called for the current completion), call
- closedir on it, assuming that it was left open by a previous
- (interrupted) completion
+expr.c
+ - more minor changes to cases of INTMAX_MIN % -1 and INTMAX_MIN / 1;
+ fix typos and logic errors
-[bash-2.01-beta2 frozen]
+ 12/16
+ -----
+bashline.c
+ - find_cmd_start: change flags to remove SD_NOSKIPCMD so it skips over
+ command substitutions and doesn't treat them as command separators
+ - attempt_shell_completion: instead of taking first return from
+ find_cmd_name as command name to use for programmable completion,
+ use loop to skip over assignment statements. Fixes problem reported
+ by Raphael Droz <raphael.droz+floss@gmail.com>
+ - attempt_shell_completion: if we don't find a command name but the
+ command line is non-empty, assume the other words are all assignment
+ statements and flag that point is in a command position so we can
+ do command name completion
+ - attempt_shell_completion: if the word being completed is the first
+ word following a series of assignment statements, and the
+ command line is non-empty, flag that point is in a command position
+ so we can do command name completion
+
+lib/readline/history.c
+ - history_get_time: atol -> strtol
- 5/27
- ----
-Makefile.in
- - make sure that `make distclean' (and other clean targets) remove
- the `printenv' executable
-
-tests/execscript, tests/redir.tests
- - make sure to set LANG=C and LC_ALL=C so the messages show up in
- English
-
-tests/run-func
- - add a warning about exported functions in the environment
-
- 5/29
- ----
-builtins/hash.def
- - if one of the arguments passed to `hash' is an absolute pathname,
- just continue the loop, don't do list=list->next first. This
- fixes the `hash a/b' -> core dump bug
-
- 5/30
- ----
-general.c
- - change canonicalize_pathname to leave a leading `/' alone, as
- POSIX requires
-
- 6/2
- ---
-support/xenix-link.sh
- - shell script for linking bash under Xenix
-
- 6/3
- ---
-bashline.c
- - fixed a memory leak in command_word_completion_function, courtesy
- of a.pfaller@pop.gun.de
-
-hashcmd.c
- - fixed find_hashed_filename to always return a newly-allocated
- string
-
-execute_cmd.c
- - since find_hashed_filename returns newly-allocated memory, don't
- call savestring() on it, and free it if the data is stale (in
- search_for_command()). Another memory leak fixed courtesy of
- a.pfaller@pop.gun.de
-
-builtins/type.def
- - free the value returned by find_hashed_filename
-
-[bash-2.01-release frozen]
-
- 6/6
- ---
-configure.in
- - force shlicc2 and libc malloc for BSD/OS 3.0
-
- 6/9
- ---
-doc/Makefile.in
- - don't create ${man3dir}, since we're not installing the readline
- manual page
-
-lib/readline/readline.h
- - rl_dispatching should be declared `extern'
- [in bash-2.01.1]
-
- 6/10
- ----
-lib/malloc/Makefile.in
- - make sure ${ALLOCA_SOURCE} is preceded by ${srcdir} so that things
- work when building in a directory other than the source directory
- [in bash-2.01.1]
-
- 6/30
- ----
-lib/readline/examples/rltest.c
- - don't free the value returned by history_list()
-
-lib/readline/histfile.c
- - open the history file for writing with mode 0600 for better
- security
- [in bash-2.01.1]
-
-execute_cmd.c
- - select_query now uses legal_number to decide whether the user's
- selection is a valid number, and just executes the loop again if
- invalid input is entered
- [in bash-2.01.1]
-
- 7/1
- ---
-builtins/evalstring.c
- - fix to parse_and_execute so `bash -c 'time [-p] zzz'' works right
- [in bash-2.01.1]
-
-execute_cmd.c
- - fix to execute_command_internal so that `bash -c time [-p] (zzz)''
- works right
- [in bash-2.01.1]
- - print_formatted_time should pass a long as the fourth parameter
- to mkfmt
- [in bash-2.01.1]
-
-externs.h, shell.c
- - `exit_shell' is now a void function
-
-hashlib.c
- - print_table_stats is now a void function
-
-mailcheck.c
- - made add_mail_file check for the filename in the mail file list
- using the expanded filename, since that is what it puts into
- the list
- [in bash-2.01.1]
-
-variables.c
- - for the time being, PWD will be auto-exported, since some systems
- seem to expect it
-
-doc/bashref.texi, lib/readline/doc/{hist,rlman}.texinfo
- - added necessary `dircategory' and `direntry' commands to make
- `install-info' work correctly
-
-Makefile.in
- - move $(LDFLAGS) after $(BUILTINS_LDFLAGS) and $(LIBRARY_LDFLAGS) on
- the line that links bash
-
-doc/texinfo.tex
- - upgraded to version 2.185 from the texinfo-3.9 distribution
-
-lib/tilde/tilde.c
- - fixed a bug in tilde_expand so that enough space is allocated for
- the string and terminating null byte if a `~' does not appear.
- This was masked before by the bash malloc()
- [in bash-2.01.1]
-
- 7/3
- ---
-aclocal.m4
- - new test, BASH_TYPE_INT32_T, to check which builtin C type is
- 32 bits wide
- - new test, BASH_TYPE_PTRDIFF_T, to check which builtin C type is
- appropriate for pointer arithmetic
-
-configure.in
- - check sizes of int and long, and for the existence of an int32_t
- basic system type. Call BASH_TYPE_INT32_T if int32_t is not
- defined anywhere in the system header files
- - check size of (char *), and for the existence of a ptrdiff_t
- basic system type. Call BASH_TYPE_PTRDIFF_T if ptrdiff_t is not
- defined anywhere in the system header files
- - added a check for <stddef.h>
-
-config.h.in
- - add lines for SIZEOF_INT, SIZEOF_LONG, SIZEOF_CHAR_P, int32_t,
- u_int32_t, and ptrdiff_t
- - added line for HAVE_STDDEF_H
-
-lib/malloc/malloc.c
- - new version, with many changes and much better memory usage; old
- (bash-2.01) version is lib/malloc/omalloc.c
-
-lib/malloc/gmalloc.c
- - new version, with a number of changes and range checking included
- by default; old (bash-2.01) version is lib/malloc/ogmalloc.c
-
-execute_cmd.c
- - applied patch from 5/27 to make execute_simple_command fork early
- if it's part of a pipeline. This keeps assignment statements or
- other commands that don't require a builtin, function, or disk
- command to be executed from modifying the shell's environment
-
-tests/exec?.sub
- - renamed from tests/execscript.sub? because those filenames are
- too long for System V 14-char filename systems
-
-tests/source?.sub
- - renamed from tests/source.sub? because those filenames are bad
- for DOS/Windows
-
-tests/getopts?.sub
- - renamed from tests/getopts.sub? because those filenames are bad
- for DOS/Windows
-
-tests/histexp.{tests,right}
- - renamed from histexpand.{tests,right} because those filenames are
- too long for System V 14-char filename systems
-
-tests/trap1.sub
- - renamed from trap.sub1 because that filename was bad for DOS/Windows
-
-tests/ifs-[123].right
- - renamed from ifs.[123].right because those filenames were bad for
- DOS/Windows
-
-tests/ifs-[123].test
- - renamed from ifs-test-[123].sh because those filenames were bad
- for DOS/Windows
-
-examples/startup-files/Bashrc.bfox
- - renamed from examples/startup-files/Bashrc because that filename
- conflicts with examples/startup-files/bashrc on case-insensitive
- file systems
-
-tests/exec.right
- - renamed from execscript.right because that filename is too long
- for System V 14-char filename systems
-
-tests/run-set-e
- - renamed from run-set-e-test
-
-tests/misc/perftest
- - renamed from tests/misc/haertel.perftest because that filename is
- too long for System V 14-char filename systems
-
-lib/glob/fnmatch.c
- - new version with full POSIX.2 BRE matching (character classes,
- collating symbols, equivalence classes), full support for
- strcoll(3), and case-insensitive pattern matching
-
-lib/glob/fnmatch.h
- - new version, with necessary symbols for the new fnmatch.c
-
-tests/posixpat.{tests,right}, tests/run-posixpat
- - test suite for the POSIX.2 BRE pattern matching code
-
-variables.c
- - make sure that array assignment using the compound syntax empties
- the array before doing the assignment
- [in bash-2.01.1]
-
-trap.c
- - new function, trap_to_sighandler(sig), which returns the correct
- trap handler for SIG depending on the information in sigmodes[sig]
- [in bash-2.01.1]
-
-sig.h
- - extern declarations for trap_handler and trap_to_sighandler
- [in bash-2.01.1]
-
-jobs.c
- - if we get an interrupt while waiting for a command to complete,
- and there was a trap set on SIGINT that resets the handler to
- SIG_DFL, the value that waitchld uses for old_trap_handler will
- be wrong (it will be trap_handler, but trap_handler no longer
- knows anything about SIGINT). If old_signal_handler is trap_handler,
- but signal_is_trapped(SIGINT) returns 0, we need to call
- trap_to_sighandler to decide what to do
- [in bash-2.01.1]
-
- 7/7
- ---
-locale.c
- - fix to set_locale_var to handle an assignment to LC_ALL (e.g., as
- the result of `unset LANG') when default_locale is null
- [in bash-2.01.1]
-
- 7/8
- ---
-builtins/umask.def, doc/{bash.{1,html},bashref.texi}
- - added `-p' option for umask to print output in a reusable form
-
- 7/9
- ---
-doc/{bash.{1,html},bashref.texi}
- - removed descriptions of `-type', `-path', and `-all' options to
- the `type' builtin in preparation for removing them in the next
- release
-
-builtins/type.def
- - removed mention of `-type', `-path', and `-all' options from the
- long help description
-
-error.c, error.h
- - new function: internal_warning, for warning messages
-
-variables.c
- - changed a call to internal_error to use internal_warning
- - modified change of 7/3 so that arrays are not emptied until
- just before the shell is about to assign the new values, so
- the old value can be used to generate the rhs of the assignment,
- if necessary. This is how `normal' shell variables work
- [in bash-2.01.1]
-
-jobs.c, jobs.h
- - delete_job now takes a second int argument and prints a warning
- message when deleting a stopped job if the second argument is
- non-zero
-
-jobs.c, builtins/jobs.def
- - changed all calls to delete_job to provide a proper second arg
-
-lib/readline/bind.c
- - broke rl_read_init_file into an `upper' and `lower' half in
- preparation for adding file inclusion capability to inputrc
- parsing
- - handle_parser_directive now displays an error message if an
- unknown directive is encountered
- - parser_endif now prints an error message if an $endif without
- a matching $if is found
- - added `$include' parser directive to read bindings and commands
- from another file at that point
-
-lib/readline/doc/rluser.texinfo, doc/{bash.{1,html},readline.3}
- - documented new readline `$include' parser directive
-
-shell.c, parse.y
- - added a new invocation option, --dump-po-strings, and code to
- make it dump translatable strings ($"...") in GNU gettext
- `po' format
-
-doc/{bash.{1,html},bashref.texi}
- - documented new `--dump-po-strings' invocation option
-
-lib/readline/{{kill,funmap}.c,readline.h}
- - added `rl_paste_from_clipboard()', bound to `paste-from-clipboard'
- for CYGWIN32 users
-
-lib/readline/kill.c
- - incorporated bfox's patches for `iterative' yank-last-arg handling.
- This means that one can keep pressing M-. and move backwards in
- the history, yanking the last argument of successive history lines
-
-lib/readline/rlwinsize.h
- - new file, encapsulates various locations of the definition for
- `struct winsize'
-
-aclocal.m4
- - augmented BASH_STRUCT_WINSIZE to look in termios.h as well as
- sys/ioctl.h for definition of `struct winsize'
-
-lib/readline/rltty.h
- - include "rlwinsize.h" after including tty-driver-specific header
- file
-
- 7/10
- ----
-support/config.guess
- - add better support for SunOS on M68K (old Sun3 machines)
-
-parse.y
- - check for compound array assignment in read_token_word only if
- there are characters before the `=' (which would make it a legal
- assignment statement). This fixes the problem with defining a
- function named `=' with `=() { echo foo; }'
- [in bash-2.01.1]
-
-jobs.c, jobs.h
- - nohup_all_jobs and delete_all_jobs now take a parameter which
- says whether or not to restrict their operation to only running
- jobs
-
-jobs.c
- - changed all calls to delete_all_jobs
-
-builtins/jobs.def
- - added `-a' (all jobs) and `-r' (running jobs only) options to
- `disown'
-
-doc/{bash.{1,html},bashref.texi}
- - documented new `-a' and `-r' options to `disown'
-
-findcmd.c, findcmd.h
- - new files with command searching code from execute_cmd.c and
- function declarations from execute_cmd.h
-
-Makefile.in, builtins/Makefile.in
- - updated dependencies to account for new findcmd.[ch]
- - updated dependencies to account for new redir.[ch]
-
-redir.c, redir.h
- - new files with code that sets up lists and performs redirections
- from execute_cmd.c and execute_cmd.h
-
-execute_cmd.c
- - include new findcmd.h, redir.h
-
- 7/11
- ----
-Makefile.in, configure.in
- - PROFILE_FLAGS is now substituted into the Makefile by configure
-
- 7/14
- ----
-print_cmd.c
- - make sure single_quote is called from xtrace_print_word_list
- to correctly quote each word of trace output, especially those
- with embedded quotes
- [in bash-2.01.1]
-
-aclocal.m4
- - extended BASH_CHECK_GETPW_FUNCS so that it checks that getpwuid
- and getpwnam can also be declared, as well as getpwent
- [in bash-2.01.1]
- - in BASH_FUNC_PRINTF, cast printf to type `_bashfunc' before trying
- to assign it to `pf' to avoid any prototype problems in the
- declaration
- [in bash-2.01.1]
-
-trap.c
- - include <unistd.h> before any of the bash-specific header files,
- but after config.h
- [in bash-2.01.1]
-
-test.c
- - include <errno.h> and declare `extern int errno' before including
- any of the bash-specific include files, but after <unistd.h>
- [in bash-2.01.1]
-
-builtins/Makefile.in
- - PROFILE_FLAGS is now substituted into the Makefile by configure
-
-configure.in
- - new options, --enable-profiling and --enable-static-link, to turn
- on profiling with gprof and link bash statically (if using gcc)
- for use as a root shell. The former implies the latter. If
- we're linking statically, dynamic loading of new builtins is not
- available
-
-doc/bashref.texi
- - documented new --enable-profiling and --enable-static-link
- options in installation section; regenerated INSTALL
-
-lib/glob/glob.[ch]
- - new global variable, glob_ignore_case, turns on case-insensitive
- filename matching in fnmatch() using the FNM_CASEFOLD flag
-
-doc/{bash.{1,html},bashref.texi}
- - documented new shopt `nocaseglob' option
-
- 7/15
- ----
-bashline.c
- - when glob_complete_word is called with state == 0, make sure we
- set rl_filename_completion_desired so that proper quoting of
- the resultant filenames is performed
- [in bash-2.01.1]
-
- 7/16
- ----
-externs.h, oslib.c
- - strcasecmp and strncasecmp replacements should have `const char *'
- as the first two arguments, to match OS definitions
- [in bash-2.01.1]
-
- 7/17
- ----
-(many files)
- - changes for minix-2.0, mostly just adding #ifndef _MINIX around
- include files that minix doesn't provide, like <sys/param.h> and
- <sys/file.h>
-
-lib/readline/terminal.c
- - removed `outchar' function; use _rl_output_character_function in
- its place
-
-support/config.guess
- - changes to recognize HP_ARCH of `hppa2.0'
-
-test.c
- - new `-N' option: `test -N file' returns true if FILE exists and
- has been modified since it was last accessed
-
-doc/{bash.{1,html},bashref.texi}
- - documented new `test -N' option
-
- 7/22
- ----
-aclocal.m4
- - prefer /var/spool/mail to /usr/spool/mail in BASH_DEFAULT_MAIL_DIR
- [in bash-2.01.1]
-
-lib/readline/{complete,bind}.c
- - new readline variable, print-completions-horizontally, which causes
- matches to be printed across the screen (like `ls -x') rather than
- up-and-down (like `ls')
- - new readline variable, completion-ignore-case, which causes filename
- completion and matching to be performed case-insensitively
-
-doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo
- - documented new print-completions-horizontally variable
- - documented new completion-ignore-case variable
-
-_distribution, Makefile.in
- - bumped the version number up to 2.02-alpha1
-
-bracecomp.c
- - fixes so that the braces are not quoted by the filename quoting
- function when complete-into-braces is executed with M-{. The
- brace completion functions do filename quoting themselves
- [in bash-2.01.1]
-
-pathexp.c
- - changed quote_string_for_globbing so that it takes a flags word
- as its second argument
-
-pathexp.h
- - defines for flags passed to quote_string_for_globbing
-
-subst.c,execute_cmd.c
- - changed calls to quote_string_for_globbing to pass the correct
- flag arguments
-
-expr.c
- - added a `**' binary operator to do exponentiation (2**16 == 65536).
- precedence is lower than arithmetic operators, higher than unary
- operators (2**16-1 == 65535)
-
-doc/{bash.{1,html},bashref.texi}
- - documented new `**' arithmetic binary operator
-
- 7/24
- ----
-shell.c
- - added new (currently undocumented) `--wordexp' option to do the
- job required by POSIX.2 wordexp(). If -n is supplied along with
- --wordexp, command substitution is disallowed and the shell
- exits with a status of 125 if one is attempted. If there is an
- expansion error, the shell exits with a status of 127. If there
- is a shell parsing error, the shell exits with a status of 126.
- Otherwise, the exit status is 0. The current output is
-
- number of words\n
- number of bytes\n
- expanded words, one per line, separated by newlines
-
- This will have to be changed when an interface to glibc is coded
-
- 7/28
- ----
-hashcmd.h
- - reduced the default size of the filename hash table from 631
- to 107
-
-sig.c
- - don't call initialize_siglist if HAVE_UNDER_SYS_SIGLIST is defined
- [in bash-2.01.1]
-
-siglist.c
- - don't compile this file if HAVE_UNDER_SYS_SIGLIST is defined
- [in bash-2.01.1]
-
-variables.c
- - fix to make $RANDOM work better in subshells
- [in bash-2.01.1]
-
-aclocal.m4
- - new macro, BASH_DECL_UNDER_SYS_SIGLIST, looks for _sys_siglist in
- <signal.h> and <unistd.h>, defines UNDER_SYS_SIGLIST_DECLARED if
- found
- [in bash-2.01.1]
- - change BASH_UNDER_SYS_SIGLIST to require BASH_DECL_UNDER_SYS_SIGLIST,
- like BASH_SYS_SIGLIST requires AC_DECL_SYS_SIGLIST
- [in bash-2.01.1]
-
-config.h.in
- - add a line for UNDER_SYS_SIGLIST_DECLARED
- [in bash-2.01.1]
-
-configure.in
- - make sure that SVR4_2 is defined for machines that have $host_os
- sysv4.2* (e.g., sysv4.2MP) as well as $host == sysv4.2
- [in bash-2.01.1]
-
- 7/29
- ----
-command.h
- - new command type, ARITH_COM, used to create and execute a ((...))
- command without translating it into let "..."
-
-parse.y
- - changes to the grammar and lexer so that ((...)) is parsed as a
- command of type ARITH_CMD. An ARITH_CMD is a WORD_LIST, for
- future expansion, even though only the first word is used
-
-make_cmd.c, make_cmd.h
- - definition and declaration of a function to build an arithmetic
- command
-
-dispose_cmd.c
- - added code to dispose of arithmetic commands
-
-print_cmd.c
- - added code to print arithmetic commands, both `regularly' and
- when they're being traced with `set -x'
-
-externs.h
- - extern declaration for xtrace_print_arith_cmd
-
-copy_cmd.c
- - added code to copy arithmetic commands
-
-execute_cmd.c
- - added code to directly execute arithmetic commands -- they are
- a shell_control_structure, so just about everything like
- redirections and piping is taken care of by the boilerplate code.
- All that's needed is to expand the expression (which is within
- double quotes -- added by parse.y:parse_arith_cmd()), print it
- if tracing is enabled, call the expression evaluator, and return
- an appropriate result
-
- 7/30
- ----
-input.c
- - new function, set_buffered_stream(fd, bp), sets the buffered stream
- associated with FD to BP and returns the old buffered stream
-
-input.h
- - extern declaration for set_buffered_stream
-
-parse.y
- - call set_buffered_stream rather than manipulating the BUFFERS array
- directly
-
-shell.c
- - unset_bash_input now takes an argument, CHECK_ZERO. This tells it
- whether to check whether default_buffered_input is >= 0 or just > 0
-
-externs.h
- - changed extern declaration for unset_bash_input
-
-execute_cmd.c, jobs.c, nojobs.c
- - changed calls to unset_bash_input to add appropriate argument
-
-input.h
- - #undef B_* before defining them as flag values for b_flags. Some
- systems, like SVR4, have a B_ERROR define in a file included by
- jobs.c and nojobs.c, and it causes a warning
-
- 7/31
- ----
-fnmatch.c
- - rewrote most of fnmatch(), so that it now implements ksh-88 style
- pattern matching (`[@+*?!](patlist)') if the FNM_EXTMATCH flag
- is set
-
-fnmatch.h
- - added a define for FNM_EXTMATCH
-
- 8/4
- ---
-lib/readline/display.c
- - fixed _rl_redisplay_after_sigwinch () so that it really redisplays
- only the portion after the final newline of a multi-line prompt
- [in bash-2.01.1]
-
-bashline.c
- - attempt_shell_completion no longer returns matches if a glob pattern
- matches more than one filename -- it caused too many problems
- [in bash-2.01.1]
-
- 8/5
- ---
-lib/glob/glob.c
- - updated glob_pattern_p so that the extended matching operators
- are recognized
-
-pathexp.c
- - udpated unquoted_glob_pattern_p so that the extended matching
- operators are recognized
- - udpated quote_globbing_chars so that the extended matching
- operators are recognized and quoted appropriately
-
-subst.c
- - updated match_pattern_char so that the extended matching operators
- are recognized
-
-parse.y
- - updated read_token_word so that it parses an extended matching
- pattern as a single word
-
-jobs.c
- - if a job is suspended with SIGTSTP, and the user has set
- checkwinsize with `shopt', update the window size
- [in bash-2.01.1]
-
-pathexp.c, pathexp.h
- - new global variable, extended_glob, controls whether the extended
- pattern matching features are enabled
-
-pathexp.h
- - new define, FNMATCH_EXTFLAG, to be OR'd with other values for
- flags argument to fnmatch to enable the extended pattern matching
- features if extended_glob is set
-
-{pathexp,execute_cmd,bashhist,subst,test}.c, builtins/help.def
- - changed calls to fnmatch to add FNMATCH_EXTFLAG to the flags arg if
- extended_glob is non-zero
-
-lib/glob/glob.c
- - changed flags arg passed to fnmatch to include FNM_EXTMATCH if
- extended_glob is non-zero (#ifdef SHELL)
-
- 8/6
- ---
-builtins/shopt.def
- - added a new `extglob' shell option, controls the value of
- extended_glob
-
- 8/7
- ---
-doc/{bash.{1,html},bashref.texi}
- - documented new extended pattern matching operators and the `extglob'
- shell option
-
-tests/{extglob.{tests,right},run-extglob}
- - test suite for the new extended globbing features
-
- 8/8
- ---
-parse.y, pathexp.h, lib/glob/fnmatch.c
- - made the extended globbing code #ifdef EXTENDED_GLOB
-
-config.h.in
- - added a line for EXTENDED_GLOB, controlled by configure
-
-configure.in
- - new option, --enable-extended-glob, controls defining of
- EXTENDED_GLOB (on by default)
-
-doc/bashref.texi
- - documented new `configure' `--enable-extended-glob' option
-
- 8/11
- ----
-builtins/printf.def
- - new `printf' builtin, implemented according to POSIX.2 spec
- for printf(1)
-
-Makefile.in,builtins/Makefile.in
- - added necessary stuff for new printf builtin
-
- 8/12
- ----
-lib/readline/isearch.c
- - change to make ^G interrupt the incremental search correctly
- [in bash-2.01.1]
-
-configure.in, config.h.in
- - configure now checks for the availability of strtoul(3)
-
-builtins/printf.def
- - use strtoul for the `%o', `%u', `%x', and `%X' formats if it
- is available
-
- 8/13
- ----
-tests/{printf.{right,tests},run-printf}
- - extensive test suite for the new `printf' builtin
-
-builtins/Makefile.in
- - change so that `builtext.h' is not recreated every time the source
- file for a builtin is changed if the contents are the same. This
- keeps many files from being recompiled
-
- 8/14
- ----
-subst.c
- - changed verify_substring_values so that it returns -1 for substring
- range errors, 0 for expression errors, and 1 for success
- [in bash-2.01.1]
- - changed parameter_brace_substring to return an error if
- verify_substring_values returns 0, and a null string if it returns
- -1. This matches the ksh93 behavior
- [in bash-2.01.1]
-
-trap.c
- - changed decode_signal so that it makes sure the first three
- characters of a signal name are `SIG' before allowing the `SIG'
- prefix to be omitted. This is so a signal spec of `T' does not
- match `EXIT', for instance
- [in bash-2.01.1]
-
-builtins/trap.def
- - make sure that showtrap() displays traps for signals with unknown
- names using the signal number
- [in bash-2.01.1]
-shell.c
- - make sure that `bash -r' doesn't turn on the restricted mode until
- after the startup files are executed
- [in bash-2.01.1]
-
-doc/{bash.{1,html},bashref.texi}
- - documented printf builtin
-
- 8/15
- ----
-general.c
- - added \xNNN escape to ansicstr -- NNN are up to three hex digits.
- This affects $'...', `echo -e', and printf
-
-builtins/printf.def
- - added \xNNN escape to bexpand -- NNN are up to three hex digits.
- This affects printf's `%b' conversion specifier
-
-doc/{bash.{1,html},bashref.texi}
- - documented new \xNNN escape sequence for echo, $'...', and printf
-
-builtins/setattr.def
- - make sure that a variable found in the temp environment does not
- cause a null string to be assigned by bind_variable (e.g.,
- foo="" export foo
- )
- [in bash-2.01.1]
-
- 8/18
- ----
-subst.c
- - fixed a bug that sometimes caused bad memory (pointer into an
- allocated block) to be passed to free when doing arithmetic
- substitution. Bug report from stevet@myofb.org
- [in bash-2.01.1]
-
- 8/19
- ----
-subst.c
- - considerable changes: moved the code that expands a single
- $... parameter expansion into a separate function: param_expand()
- This function returns a string, which may contain characters
- quoted with CTLESC or CTLNUL without doing word splitting
- - changed expand_word_internal to not remove the expansion of "$*"
- if the number of positional parameters is > 0
- - changed the '"' case of expand_word_internal to remove quoted
- nulls from the resultant word if the expansion was not "$@", and
- the word is not a quoted null string ([] == CTLNUL, [1] == '\0')
-
-subst.c, variables.c
- - moved the code that handles special variables from subst.c to
- variables.c
-
- 8/20
- ----
-subst.c
- - rearranged the source a bit to group functions with similar
- operation together
- - fixed parameter_brace_expand so that it no longer allows
- indirect expansion of `special' variables
- - fixed parameter_brace_expand so taking the length of some of
- the shell's special parameters works again
- - moved all of the code that computes the length of a shell
- parameter (the ${#xxx} expansion) into parameter_brace_expand_length.
- Previously, the code that handled the lengths of the shell's
- special parameters was in parameter_brace_expand_word
- - valid indirect expansions are now only variable names or positional
- parameters
-
- 8/21
- ----
-subst.c
- - fixed param_expand to raise an expansion error if $! is being
- expanded and no asynchronous processes have been created
- - an expression error in a $((...)) arithmetic expansion now causes
- a non-interactive shell running in POSIX mode to exit
- - relaxed change of 8/20 to allow indirect references to $#, $@, $*
-
-builtins/bashref.texi
- - documented new posix-mode exit on invalid expressions in $((...))
-
-lib/readline/complete.c
- - don't call rl_strpbrk unless rl_filename_quote_characters is not
- NULL -- strpbrk requires non-NULL arguments
- [in bash-2.01.1]
-
- 8/22
- ----
-bashline.c
- - don't make `history-expand-line' a bindable command unless
- BANG_HISTORY is defined, and don't compile the code for that
- command in unless BANG_HISTORY is defined
- - make history_expand_line(), tcsh_magic_space(), alias_expand_line(),
- and history_and_alias_expand_line() int-returning functions that
- return 0 for success and non-zero on error. This allows
- tcsh_magic_space() to just call history_expand_line() and insert
- a space if that returns successfully
- - `magic-space' is now a bindable readline command
-
-doc/bash.{1,html}, lib/readline/doc/rluser.texinfo
- - documented new `magic-space' bindable readline command
-
- 8/25
- ----
-parse.y
- - fixed decode_prompt_string so that values of $PWD longer than
- PATH_MAX don't cause buffer overruns (char t_string[PATH_MAX])
- [in bash-2.01.1]
-
-general.c
- - fixed polite_directory_format so that values of $HOME longer
- than PATH_MAX don't cause buffer overruns (char tdir[PATH_MAX])
- [in bash-2.01.1]
-
-subst.c
- - fix to expansion of $* so that the positional parameters are
- separated by the first character of $IFS, even when the expansion
- is not within double quotes, so the correct split is still
- performed even when IFS does not contain a space. Works for
- ${*}, too
- - fix to expansion of $@ so that the positional parameters are
- separated by the first character of $IFS, even when the expansion
- is not within double quotes, so the correct split is still
- performed even when IFS does not contain a space. Works for
- ${@}, too
- - new function, string_list_dollar_at(), which is to $@ as
- string_list_dollar_star is to $*
- - fixed expansion of $@ so that splitting is still done even if
- IFS is unset or NULL, as POSIX.2 specifies (section 3.5.2)
- - fixed expansion of $* so that it expands to multiple words if there
- is more than one positional parameter, just like $@, even if
- IFS is unset or NULL
- - new function list_quote_escapes, quotes (with CTLESC) all
- CTLESC and CTLNUL characters in each member of the list
-
-tests/dollar-{at,star}.sh
- - combined into dollar-at-star, changed run-dollars accordingly
-
- 8/26
- ----
-Makefile.in
- - make the `tests' target use $(SHELL) instead of hardcoding `sh'
-
- 8/29
- ----
-subst.c
- - expand_word_list_internal now takes a flags word as the second
- argument, telling which expansions to perform on the WORD_LIST
- - broke expand_word_list_internal into several functions: one
- each to do brace expansion, glob expansion, and the `normal'
- shell expansions
- - new extern function: expand_words_shellexp() to perform the
- `normal' shell expansions on a WORD_LIST
-
-subst.h
- - extern declaration for expand_words_shellexp
-
-bashline.c
- - fixed a problem with attempt_shell_completion where it attempted
- to refer to rl_line_buffer[-1] (completion at the start of the
- line, which means that ti == -1, which means that the test for
- rl_line_buffer[ti] at line 715 was an array bounds error
- [in bash-2.01.1]
-
-eval.c
- - new function, parse_string_to_word_list(), which takes a string
- and runs it through the parser, returning the resultant word
- list
-
-externs.h
- - new extern declaration for parse_string_to_word_list()
-
-variables.c
- - change assign_array_var_from_string to first split the string
- between the parens on whitespace, then expand the resultant
- list of words with all the shell expansions before doing the
- assignment
-
- 9/4
- ---
-redir.c, redir.h
- - redirection_error is no longer a static function
-
-builtins/evalstring.c
- - changes to handle $( < filename ) (equivalent to $(cat filename))
- as in ksh
-
-lib/readline/bind.c
- - added two new functions: rl_unbind_function_in_map(func, map),
- which unbinds all keys that execute FUNC in MAP; and
- rl_unbind_command_in_map(command, map), which unbinds all keys
- bound to COMMAND in MAP
-
-lib/readline/readline.h
- - extern declarations for rl_unbind_{function,command}_in_map
-
-lib/readline/doc/rltech.texi
- - documented rl_unbind_{function,command}_in_map
-
-builtins/bind.def
- - added a new option, -u FUNCNAME, which unbinds all key sequences
- bound to FUNCNAME in the specified (or current) keymap
-
-doc/{bash.{1,html},bashref.texi}
- - documented new $( < filename ) command substitution
- - documented new bind -u FUNCNAME option
-
- 9/5
- ---
-shell.c
- - send SIGHUP to all jobs when an interactive login shell exits if
- the variable `hup_on_exit' is non-zero
- - modified run_startup_files so that if `NON_INTERACTIVE_LOGIN_SHELLS'
- is #define'd (perhaps in config.h.top, though there is nothing there
- for it), all login shells (interactive and non-interactive) run
- /etc/profile and one of the per-user login shell startup files
-
-builtins/shopt.def
- - new shopt option `huponexit' to control the value of hup_on_exit
-
-doc/{bash.{1,html},bashref.texi}
- - documented new `huponexit' shell option
-
- 9/8
- ---
-builtins/common.c
- - changed contains_shell_metas to return 1 if a tilde appears at the
- start of a string or after a `=' or `:'
- - changed backslash_quote to quote a tilde if it appears at the start
- of a string or after a `=' or `:'
-
-lib/readline/complete.c
- - moved rl_tilde_expand to util.c; it doesn't really have anything
- to do with completion
- - moved insert_text to readline.c, renamed it _rl_replace_text (since
- that's really what it does), changed callers
- - moved code that postprocesses the list of completion matches into
- a new function: postprocess_matches
- - new implementation of tcsh-like menu completion in a single new
- function: rl_menu_complete
-
-lib/readline/{funmap.c,readline.h}
- - necessary declarations for binding rl_menu_complete to the
- new `menu-complete' command
-
-doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo
- - documented new `menu-complete' bindable readline command
-
- 9/9
- ---
-jobs.c
- - delete_job should print a warning only if subshell_environment
- is 0, so we don't print bogus warnings when shell scripts without
- a leading #! are executed
-
- 9/10
- ----
-builtins/read.def
- - fixed the code so that the `read' is automatically restarted when
- it returns -1 with errno == EINTR. SIGINT is handled by the
- interrupt handler, since interrupt_immediately is set to 1, so
- this handles things like SIGCHLD
- [in bash-2.01.1]
-
- 9/11
- ----
-test.c
- - reorganized the code slightly to make it easier to add the ksh-like
- [[...]] compound command
-
-test.h
- - new file, with extern declarations for functions available in test.c
-
-externs.h
- - moved declaration of test_command to test.h
-
-builtins/test.def
- - include `test.h'
-
- 9/16
- ----
-{command,make_cmd,dispose_cmd,externs,subst}.h
-parse.y, subst.c
-{make,dispose,copy,print,execute}_cmd.c
- - changes to add the new ksh-93 compatible [[...]] conditional command
-
-configure.in
- - new enable option, --enable-cond-command, to compile in the [[...]]
- command code
-
-config.h.in
- - new #define, COND_COMMAND, to compile in the [[...]] command code
-
-tests/{run-cond,cond.{tests,right}}
- - test suite for the new [[...]] command
-
-{builtins,lib/{readline,glob,tilde}}/Makefile.in
- - explicit dependencies for .o files on .c files for losing makes
- like Solaris
-
-doc/{bash.{1,html},bashref.texi}
- - documented the new `[[' compound command
- - documented the test/[ builtin behavior based on the number of
- arguments in the description of the builtin
- - made a new section for conditional expressions that just lists
- the available primaries -- the connectives and other operators
- are listed in the description of the [[ command and the test/[
- builtin
-
- 9/18
- ----
-builtins/set.def
- - minus_o_option_commands is now a global function so the shopt
- code can use it
- - minus_o_option_commands now takes an argument telling it which
- options to print, just like list_minus_o_options
- - new function, print_minus_o_option, which prints the value of
- a `set -o' option either in the traditional format or in the
- format used by `set +o'
- - changed list_minus_o_opts and minus_o_option_commands to call
- print_minus_o_option
-
-builtins/shopt.def
- - `shopt -p' now causes output to be printed in a format reusable
- as input (the format is a series of shopt commands, like the
- output of `set +o')
- - fixed a bug that made `shopt -so' and `shopt -uo' not work
- - fixed list_shopt_o_options so that `shopt -op' acts like `set +o'
- - fixed list_shopt_o_options to that `shopt -op optname' prints the
- value of optname in a reusable format
- - fixed list_some_o_options so that `shopt -ops' and `shopt -opu'
- work and display output in a reusable format
-
- 9/19
- ----
-doc/{bash.{1,html},bashref.texi}
- - documented new `shopt -p' behavior
-
-shell.c
- - made `bash +o' display the same output as `set +o' and then
- start an interactive shell (previously `bash -o' and `bash +o'
- displayed the same thing)
-
-builtins/common.h
- - added prototypes to the extern function declarations
-
- 9/22
- ----
-builtins/evalstring.c
- - fixed the DISCARD case of the jump_to_top_level so that it
- doesn't try to call dispose_command(command) after the
- `pe_dispose' unwind frame gets run, since that disposes the
- command
-
- 9/23
- ----
-test.[ch]
- - test_eaccess is now a global function so that globbing code can
- use it
-
-lib/glob/glob.c
- - rewrote glob_vector to be slightly more efficient and to not
- read the directory if the filename pattern does not contain
- any globbing chars. This satisfies the POSIX requirement that
- read permission is not required for a directory when the
- pathname component does not contain a pattern character (bug
- reported by jsm28@cam.ac.uk)
-
-subst.c
- - fixed parameter_brace_expand so that ${array[@]} and ${array[*]}
- behave correctly when IFS is unset or set to something that does
- not contain a space (they should result in separate words, just
- like $@ and $*)
-
-tests/{run-array2,array-at-star,array2.right}
- - tests for the expansions of ${array[@]} and ${array[*]}, derived
- from the tests in dollar-at-star
-
- 9/24
- ----
-jobs.c
- - fixed cleanup_dead_jobs so that it doesn't remove the job
- containing last_asynchronous_pid from the job table. This
- fixes the POSIX.2 `wait' requirement problem
-
- 9/25
- ----
-parse.y
- - added `\r' escape sequence to the prompt expansion code
-
-lib/readline/chardefs.h
- - added defines for ISOCTAL, OCTVALUE, isxdigit (if not defined),
- and HEXVALUE
-
-lib/readline/bind.c
- - added `normal' echo/printf-like backslash escapes to the
- key sequence translation code, with the addition that \d
- expands to RUBOUT. This means that key sequence definitions
- (before the `:') and macro values may contain these special
- backslash-escape sequences
- - now that we can translate octal escape sequences in key bindings,
- change _rl_get_keyname so that it turns characters with values
- 128-159 inclusive into octal escape sequences (\200-\237), since
- those characters are not ASCII or ISO Latin 1
-
-doc/{bash.{1,html},readline.3}, lib/readline/doc/rluser.texinfo
- - documented new backslash escapes for readline key sequence and
- macro translation
-
-builtins/pushd.def
- - new function, get_dirstack_from_string(char *string), returns an
- element from the directory stack or null, treating the argument
- exactly as `dirs string' would, with the exception that if
- the first character of `string' is not `+' or `-', a `+' is
- assumed
-
-builtins/common.h
- - new extern declaration for get_dirstack_from_string
-
-general.c
- - added code to bash_special_tilde_expansions to get the expansion
- using get_dirstack_from_string() if the first character of the
- tilde-prefix is a digit or the first character is a `+' or `-'
- and the second is a digit
-
-tests/dstack.{tests,right}
- - renamed from dirstack.{tests,right}
-
-tests/dtack2.{tests,right}
- - new tests for the directory stack tilde expansion code
-
-tests/run-dirstack
- - now runs both dstack and dstack2
-
- 10/3
- ----
-trap.c
- - reordered header file inclusion for irix 4
-
-execute_cmd.c
- - fixed select_query so that a reply that is not a number is treated
- the same as a numeric reply that is out of range
-
-lib/readline/util.c
- - added a backwards-compatibility definition of _rl_savestring()
-
-builtins/set.def
- - initialize_shell_options now takes an argument saying whether or
- not we should parse $SHELLOPTS from the environment. The shell
- does not parse the value if it's restricted, running setuid, or
- running in `privileged mode'
-
-shell.c
- - change call to initialize_shell_options to add the correct argument
-
-builtins/common.h
- - changed extern declaration for initialize_shell_options
-
-doc/{bash.{1,html},bashref.texi}
- - added note that the shell ignores $SHELLOPTS in the environment at
- startup if running in privileged mode
- - added note that the restricted shell does not parse $SHELLOPTS from
- the environment at startup
-
- 10/6
- ----
-aclocal.m4
- - change BASH_RLIMIT_TYPE so that it looks for rlim_t in
- <sys/resource.h> as well as <sys/types.h>, for Solaris 2.6
- - new macro, BASH_LARGE_FILE_SUPPORT, to enable special compilation
- options for large files on Solaris 2.6 (from eggert@twinsun.com)
-
-mailcheck.c
- - the `file_size' member of the FILEINFO struct should be of
- type `off_t'
- - the `size' variable in file_has_grown should be of type `off_t'
- - the RESET_MAIL_FILE macro should initialize file_size to 0, not 0L
-
-builtins/Makefile.in
- - LDFLAGS and LOCAL_LDFLAGS are now set by configure
- - `mkbuiltins' is now created from `mkbuiltins.o' instead of directly
- from the source to the executable
-
-builtins/evalfile.c
- - fixed _evalfile so that it handles large files correctly on
- systems where the st_size member of `struct stat' will not fit
- into an `int'
-
-builtins/mkbuiltins.c
- - don't assume that st_size fits into an int
-
-input.[ch]
- - the `b_size' member of a struct BSTREAM is now of type `size_t'
- - changed third argument to make_buffered_stream to size_t; changed
- caller
- - changed `size' variable in fd_to_buffered_stream to type `size_t'
-
-general.h
- - include <sys/resource.h> if HAVE_SYS_RESOURCE_H and RLIMTYPE are
- both defined, for possible necessary definition of RLIMTYPE
- (e.g., on Solaris 2.6)
-
-{execute_cmd,jobs}.c, builtins/times.def
- - don't include <sys/resource.h> explicitly if RLIMTYPE is defined,
- since general.h will include it in that case
-
-lib/readline/bind.c
- - new function, char *_rl_read_file(filename, sizep), which reads
- FILENAME into a malloced buffer, returning the buffer and the
- size of the buffer in *SIZEP
-
-lib/readline/histfile.c
- - changed read_history_range and history_truncate_file to handle
- large files
-
-hashcmd.c
- - find_hashed_filename should not add `./' to the front of a pathname
- that already begins with `./'
-
- 10/8
- ----
-support/config.sub
- - recognize `hppa2.0' as a valid machine architecture
-
-aclocal.m4
- - changed BASH_CHECK_LIB_TERMCAP so that `gnutermcap' is not chosen
- if `$prefer_curses' is set to something
-
-bashhist.c
- - don't use HISTCONTROL or HISTIGNORE to remove lines from the
- second and subsequent lines of a multi-line command
- (current_command_line_count > 1). Old code did this only when
- command-oriented-history was enabled
-
-doc/{bash.{1,html},bashref.texi}
- - changed descriptions of HISTCONTROL and HISTIGNORE to state that
- these variables are not applied to the second and subsequent
- lines of a multi-line command
-
-builtins/hash.def, {copy,dispose}_cmd.c
- - include "bashtypes.h" -- cray machines need it because of their
- oddball definition of `word'
-
-configure.in
- - changed check of ${host_cpu} to check for `*cray*' and `*Cray*'
- when deciding whether to include the GNU malloc, since it
- seems that ${host_cpu} gets set to `CrayYMP'
-
- 10/9
- ----
-configure.in
- - look for strtod and strtol in libc
- - make lib/sh directory in build directory if not there
- - create lib/sh/Makefile
-
-config.h.in
- - added HAVE_STRTOD and HAVE_STRTOL
-
-Makefile.in
- - changes for lib/sh/libsh.a (shell library)
-
-builtins/printf.def
- - took out the `#ifdef STRTOUL' code, since strtoul is in libsh.a,
- and will be resolved from there if it's not in libc
-
-variables.c
- - call strtol() instead of string_to_long()
-
-general.c, general.h
- - removed string_to_long
- - changed legal_number to use strtol so it correctly sets errno
- to ERANGE on overflow
- - moved bash_getcwd_errstr here from lib/sh/oslib.c
-
-externs.h
- - moved extern declarations for functions defined in libsh to a
- separate section of the file, added extern declarations for
- other functions in libsh
-
-builtins/ulimit.def
- - changed macro definition for string_to_rlimtype to call strtol
- directly instead of string_to_long
-
-lib/sh/clktck.c
- - moved get_clock_tck to its own file, since it's compiled in
- unconditionally
-
- 10/10
- -----
-lib/sh/getenv.c
- - moved getenv() and __getenv() here from lib/sh/oslib.c
-
-lib/sh/{setlinebuf,strerror,strcasecmp}.c
- - moved {setlinebuf,strerror,strcasecmp}() from oslib.c to
- individual files
-
-lib/sh/Makefile.in, Makefile.in
- - changes for new files in lib/sh
-
-aclocal.m4
- - new macro BASH_SYS_RESTARTABLE_SYSCALLS, which does what
- AC_SYS_RESTARTABLE_SYSCALLS does, but using posix sigaction()
-
-configure.in
- - call BASH_SYS_RESTARTABLE_SYSCALLS if ac_cv_sys_restartable_syscalls
- is `no'
-
- 10/13
- -----
-builtins/jobs.def
- - catch out-of-range jobs better in disown_builtin
-
-configure.in
- - don't build with GNU malloc on cygwin32
-
-trap.c
- - change signal_name to handle the case where signal_names[sig] is
- NULL, which can happen on cygwin32
-
-execute_cmd.c
- - changes to do_piping to make pipes text mode (O_TEXT) on cygwin32
-
-cross-build
- - new directory with cache files and other stuff for cross-compiling
- bash (currently only for building for cygwin32 on a Unix machine)
-
-cross-build/cygwin32.cache
- - new file containing configuration variable assignments for
- cygwin32 that would otherwise require a default case for AC_TRY_RUN
-
-configure.in
- - source ${srcdir}/cross-build/cygwin32.cache on CYGWIN32 systems
- if we're cross-compiling on a unix machine
- - set $CC_FOR_BUILD for cygwin32 cross-compiling environment
-
-Makefile.in
- - CC_FOR_BUILD is now a variable set by configure
-
-builtins/mkbuiltins.c
- - only check for read(2) returning <= 0 in extract_info() (error
- and exit on < 0, warning and return on == 0)
-
-builtins/evalfile.c
- - only check for read(2) returning <= 0 in _evalfile() (error and
- and failure return on < 0, success on == 0 while short-circuting
- rest of operation)
-
- 10/14
- -----
-
-vprint.c
- - moved to lib/sh/vprint.c
-
-lib/sh/Makefile.in
- - added entries for vprint.[co] in the appropriate places
-
-cross-build/win32sig.h
- - a version of signames.h for cross-compiling for the CYGWIN32
- environment on a Unix machine (from noer@cygnus.com)
-
-aclocal.m4
- - made all cases of AC_TRY_RUN and AC_TRY_COMPILE have reasonable
- default cases for cross-compiling, and tell the user what they are
-
-Makefile.in
- - removed vprint.c from shell sources and vprint.o from shell
- objects
- - added a level of indirection for signames.h -- the variable
- SIGNAMES_H is set by configure to either `lsignames.h' or
- a file for a cross-compilation environment (currently only
- the cygwin32 stuff is supported). Then that file is copied
- to `signames.h'. `lsignames.h' is created by `mksignames' as
- was previously used to create signames.h directly
-
-configure.in
- - set SIGNAMES_H to either `$(srcdir)/cross-build/win32sig.h' or
- `lsignames.h' as appropriate, substitute into Makefile
-
- 10/15
- -----
-builtins/Makefile.in
- - CC_FOR_BUILD is now set by configure and used to build mkbuiltins
- and psize.aux
-
-variables.h
- - new variable attribute `att_tempvar', set if the SHELL_VAR * was
- constructed on the fly from the temporary environment
-
-variables.c
- - find_name_in_env_array now sets the `att_tempvar' attribute on
- the SHELL_VAR it creates
-
-findcmd.c
- - search_for_command now disposes the SHELL_VAR created by searching
- the temporary environment for $PATH, if it is found there
- - _find_user_command_internal also disposes of the SHELL_VAR if it
- has the `att_tempvar' attribute set
-
-builtins/setattr.c
- - show_name_attributes looks in the temporary environemnt, so it needs
- to dispose the SHELL_VAR if it has the att_tempvar attribute set
-
-subst.c
- - parameter_brace_expand_word now disposes of the SHELL_VAR returned
- by find_variable if it has the att_tempvar attribute set
- - ditto for param_expand and word_split
-
-builtins/kill.def
- - disallow null pid arguments instead of treating them as 0
- - display a usage message and return failure if no pid or job
- arguments are supplied
-
- 10/16
- -----
-builtins/declare.def
- - make `var=value declare -x var' behave the same as
- `var=value export var' and `var=value declare -r var' behave the
- same as `var=value readonly var', now that we have the `tempvar'
- attribute
-
- 10/22
- -----
-jobs.c
- - non-interactive shells shouldn't report jobs killed by a SIGINT,
- even if the standard output is to a terminal
- - pretty_print_job should add a CR at the end of its output if the
- shell is interactive and asynchronous notification is being
- performed. This fixes the problem with extra CRs in the output
- of $(jobs)
-
-general.c
- - changed canonicalize_pathname to change `//' into `/', but leave
- other pathnames starting with two consecutive slashes alone
-
- 10/27
- -----
-
-lib/readline/histexpand.c
- - fixed history_expand so that the appearance of the history
- comment character at the beginning of a word inhibits history
- expansion for the rest of the line
-
- 10/29
- -----
-jobs.c,variables.c
- - moved set_pipestatus_array to variables.c
-
-variables.c
- - new function, set_pipestatus_from_exit(int), which sets the
- PIPESTATUS variable from a command's exit status
-
-variables.h
- - extern declarations for set_pipestatus_from_exit and
- set_pipestatus_array
-
-execute_cmd.c
- - fixed execute_simple_command to call set_pipestatus_from_exit
- if a foreground builtin or function, or a foreground null
- command is executed
-
- 10/31
- -----
-shell.c
- - fixed run_startup_files to detect being run by sshd, and treat
- that case as equivalent to being run by rshd
-
- 11/3
- ----
-builtins/set.def
- - make sure `set -a' doesn't cause SHELLOPTS to be exported when
- a change is made to one of the shell options
-
- 11/4
- ----
-pathexp.c
- - fix to shell_glob_filename in the code that uses a POSIX glob
- library
-
- 11/5
- ----
-jobs.c
- - fix cleanup_dead_jobs to hang onto the job corresponding to
- last_asynchronous_pid only if the shell is not interactive
- (this still has the problem that until a new async process
- is started, the job will stay in the jobs table)
-
-configure.in,aclocal.m4
- - added a new macro, BASH_TYPE_U_INT32_T, to check for u_int32_t
- separately from int32_t, since there are systems (HP-UX 10.20)
- that have a define for the latter but not the former
-
- 11/6
- ----
-jobs.c
- - cleanup_dead_jobs no longer checks whether the job it is deleting
- corresponds to last_asynchronous_pid
- - notify_of_job_status and mark_dead_jobs_as_notified now will not
- mark the job corresponding to last_asynchronous_pid as notified
- if the shell is not interactive
- - wait_for_single_pid, if told to wait for last_asynchronous_pid,
- or the job of which it is a member, will take care of marking
- the job as notified after calling wait_for and collecting the
- status. This means that two successive `wait' calls for $! will
- succeed the first time and fail the second, as POSIX.2 specifies
- (take this code out if it causes problems)
-
- 11/7
- ----
-jobs.c
- - wait_for_job, if told to wait for the job corresponding to the
- last async pid, will mark the job as notified after waiting for
- it and collecting the status
-
-general.h
- - fixed MEMBER macro to avoid reading past end of S (it used to
- test s[1] before s[0], which is an error if s == "")
-
-subst.c
- - expand_word_internal should free ISTRING before returning if
- param_expand returns an error
- - parameter_brace_expand_word should free the memory it allocates
- and passes to param_expand
-
-execute_cmd.c
- - execute_arith_command should call dispose_words on the list
- returned by expand_words
-
-parse.y
- - after calling parse_arith_command, read_token needs to free the
- string value that parse_arith_command fills in, since make_word
- makes a copy of the string it's passed
-
- 11/10
- -----
-subst.c
- - cond_expand_word needs to free the value returned by string_list
- after it is run through quote_string_for_globbing
-
-parse.y
- - make sure cond_term frees yylval.word if it is just a `!' and
- it's parsed as a term negation operator
-
-variables.c
- - assign_array_var_from_string needs to free the word list returned
- by parse_string_to_word_list after calling expand_words_shellexp
- on it
-
-execute_cmd.c
- - changed execute_simple_command to avoid saving the_printed_command
- into command_line until just before it's needed. This should save
- time and prevent memory leaks on errors, but it must be watched
- closely to make sure that the_printed_command doesn't change out
- from under execute_simple_command before we copy it
-
- 11/12
- -----
-builtins/alias.def
- - alias and unalias should print error messages when passed an
- argument that is not an alias for printing or deletion,
- respectively, even if the shell is not interactive
-
-builtins/exit.def
- - `logout' will no longer exit a non-login non-interactive shell
-
- 11/17
- -----
-lib/readline/nls.c
- - add `koi8-r' as a legal LANG value
-
-builtins/alias.def
- - if `alias' or `alias -p' is executed when no aliases are defined,
- the return status should be 0, according to POSIX.2
-
- 11/18
- -----
-subst.c
- - changed a couple of calls to make_word_list (make_word(z), ...)
- to add_string_to_list (z, ...)
-
-execute_cmd.c
- - execute_cond_command now sets this_command_name to `[['
-
- 11/21
- -----
-variables.c
- - all_visible_{function,variable}s and the functions they call
- should be compiled in only if READLINE is defined
-
- 11/24
- -----
-aclocal.m4
- - remove some leading whitespace before preprocessor statements in
- BASH_KERNEL_RLIMIT_CHECK
-
-general.[ch]
- - fix declarations for group_member so the extern declaration in
- general.h agrees with the definition in general.c (fix from
- Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>)
-
-builtins/cd.def
- - print the new working directory if the shell is interactive
- and `cd -' succeeds
- - don't print the new working directory if it's found in $CDPATH
- if the shell is not interactive
-
- 11/25
- -----
-builtins/cd.def
- - fixes to bindpwd so that it copes with get_working_directory
- returning NULL (bug from schwab@issan.informatik.uni-dortmund.de)
-
- 12/2
- ----
-support/config.guess
- - add support for new OS name for SINIX SVR4 systems
-
- 12/3
- ----
-
-builtins/set.def
- - `unset' should check that a function it's trying to unset is a
- legal identifier only when in POSIX mode
-
-redir.c
- - changed here_document_to_fd to try and make sure the filename
- used for the here document is `more unique', since the old
- version would fail if two here documents were created in less
- than a second
-
- 12/4
- ----
-builtins/cd.def
- - POSIX.2 says that if CDPATH is used to find the new directory,
- and it's not relative to the current directory, the new directory
- name should be displayed on stdout even if the shell is not
- interactive
-
- 12/5
- ----
-parse.y
- - changes so that `time' is recognized as a reserved word only at
- the beginning of a pipeline (the last read token is one of 0,
- `;', `\n', `&&', `||', or `&'):
-
- o add clause to special_case_tokens that does the check
- and returns TIME if the conditions are met
- o take check for `TIME' out of CHECK_FOR_RESERVED_WORD, but
- leave it in the word_token_alist so that `type' still
- reports it as a `keyword'
- o new function, time_command_acceptable(), encapsulates the
- necessary conditions for `time' to be returned as a
- reserved word
-
-[bash-2.02-alpha1 frozen]
-
- 1/6/98
- ------
-lib/glob/fnmatch.c
- - fix define for isgraph so that it does not return success for space
- - fix strcompare() so that the call to strcoll is surrounded by
- #ifdef HAVE_STRCOLL
-
- 1/7
- ---
-lib/glob/fnmatch.c
- - the `test' argument to brackmatch() should be of type `unsigned char'
-
- 1/11
- ----
-execute_cmd.c
- - make sure execute_arith_command sets this_command_name to `(('
-
- 1/29
- ----
-parse.y
- - make sure the code for pushing and popping strings is compiled in
- if either ALIAS or DPAREN_ARITHMETIC is defined, because the ((
- code uses push_string in the case of a nested subshell
- - fix cond_skip_newlines so it resets the prompt to $PS2 while
- parsing an unfinished conditional command
-
-dispose_cmd.c, copy_cmd.c, builtins/hash.def
- - fixes to not use `word' as a variable name or the name of a
- function parameter to get around stuff in the Cray Unix include
- files
-
-builtins/printf.def
- - return failure immediately if an illegal format character is
- encountered
-
-redir.c
- - make the code that creates here-documents behave better if the
- file it's trying to create already exists for some reason
-
-lib/readline/complete.c
- - changed print_filename to return the number of characters it
- outputs; changed callers to use that value. This makes columns
- line up when printing completion listings with filenames
- containing control characters
-
-doc/bash.{1,html}
- - fixed a typo in the quote removal section
-
- 1/30
- ----
-parse.y
- - free_string_list() needs to check that t->expander is not NULL
- before trying to dereference it
- - reset_parser() doesn't need to set pushed_string_list to NULL
- after calling free_string_list(), since free_string_list does it
-
-configure.in,cross-build/cygwin32.cache
- - fixes from Geoff Noer for better cygwin32 cross-compilation
-
-tests/printf.{tests,right}
- - removed test for integer overflow, since error messages differ
- across systems
-
-pathexp.c
- - fixed a problem with unquoted_glob_pattern_p that made things
- like `x+*' not expand correctly
-
-lib/glob/glob.c
- - fixed a problem with glob_pattern_p that made things like `x+*'
- not expand correctly
-
-builtins/cd.def
- - if `cd -P' is executed, or `set -o physical' has been executed,
- the value of $PWD after a successful cd will not contain any
- symlinks, regardless of whether or not the shell is in posix mode
-
- 2/3
- ---
-lib/readline/shell.c
- - include <string.h> or <strings.h> as appropriate
-
- 2/4
- ---
-builtins/common.c
- - take out the code in backslash_quote() that looks for tildes to
- quote, for the time being
- - if getcwd() fails, get_working_directory now prints the error
- message corresponding to errno in addition to the rest of the
- information -- TENTATIVE CHANGE
-
-lib/sh/getcwd.c
- - fix from Paul Smith to make getcwd() behave better in the presence
- of lstat(2) failures
-
-stringlib.c
- - when copying the replacement string into the output string being
- constructed, strsub() needs to make sure enough space for the
- replacement string is allocated, not the length of the pattern
- (use REPLEN, not PATLEN)
-
-mailcheck.c
- - make sure make_default_mailpath() has a valid current_user struct
- before trying to construct the default mailpath
-
- 2/5
- ---
-execute_cmd.c
- - execute_builtin needs to call run_unwind_frame if the builtin is
- `source' or `eval' and we're not in a subshell rather than just
- calling dispose_builtin_env, because not all invocations copy
- the temporary_env to builtin_env, and nested calls to `.' require
- that the temporary env given to the first persist until that first
- call to `.' finishes
-
-parse.y
- - fix to history_delimiting_chars so that function definitions like
-
- function xyz
- {
- echo a
- }
-
- are saved to the history correctly when command_oriented_history
- is enabled, but literal_history is not
-
-bashhist.c
- - when calling internal_error from pre_process_line, use "%s" as
- the format with history_value as the argument to avoid the
- problem with the failed history event containing printf escape
- sequences
-
- 2/13
- ----
-shell.c
- - if shell_initialized is non-zero, don't line-buffer stderr and
- stdout in shell_initialize on SunOS5 -- see if this fixes the
- crashing problems for scripts without a leading `#! /bin/sh'
-
- 2/17
- ----
-bashline.c
- - added diffs to _ignore_completion_names from Andreas Schwab to
- complete names that would otherwise be ignored with FIGNORE if
- they are the only possible completions. Define NO_FORCE_FIGNORE
- if you want this; it is not defined by default
-
- 2/19
- ----
-support/bashbug.sh
- - changed the bug-bash address to bug-bash@gnu.org
-
-examples/loadables/Makefile.in
- - converted from `Makefile' with some boilerplate configure variables
- to find the source and build directories -- still requires some
- hand-editing to get the right CFLAGS and LDFLAGS for shared object
- creation
-
-Makefile.in
- - create examples/loadables/Makefile with `make makefiles'
-
-configure.in
- - create examples/loadables directory so `make makefiles' can write a
- makefile there
-
-general.c
- - make sure initialize_groups_array always sets things up so that
- ${GROUPS[0]} is the user's primary group (current_user.gid)
-
- 2/20
- ----
-lib/readline/parens.c
- - change the time delay when showing matching parens from 1.5 sec to
- 0.5 sec
-
- 2/23
- ----
-shell.c
- - isnetconn() should call getpeername(fd,...) instead of using 0
- (though fileno(stdin) should always be 0)
-
-support/config.guess
- - updates from master FSF copy
-
- 2/24
- ----
-support/man2html.c
- - modified version of man2html to convert bash.1 into bash.html
-
-support/Makefile.in
- - simple Makefile to create man2html
-
-configure.in
- - make sure support/Makefile is created
-
-Makefile.in
- - make sure support/Makefile is created and cleaned
-
-doc/Makefile.in
- - changes to suffix rules to say how to make .html from .1
- - `bash.html' is now a makefile target, created by man2html from
- bash.1 rather than being hand-modified
-
-lib/sh/itos.c, general.c
- - new file, itos() from general.c. This is here because the
- implementation of strerror in lib/sh/strerror.c uses itos()
-
-Makefile.in, lib/sh/Makefile.in
- - changes to add itos.c in libsh.a
-
-externs.h, general.h
- - moved extern declaration of itos() from general.h to externs.h
-
-aclocal.m4
- - changes to BASH_LARGE_FILE_SUPPORT for the LFS64_* variables in
- Solaris 2.6
-
-Makefile.in
- - make sure configure sets CPPFLAGS in this file
-
- 2/27
- ----
-
-builtins/command.def
- - make sure get_standard_path returns the value of
- STANDARD_UTILS_PATH if _CS_PATH is defined, but confstr(3)
- returns 0, indicating that _CS_PATH does not have a defined
- value
-
-bashhist.c
- - fixed bash_history_inhibit_expansion() so that extended globbing
- expressions like *.!(c) are not history expanded if extended_glob
- is non-zero (shopt -s extglob has been executed)
-
- 3/2
- ---
-Makefile.in
- - changed release status to `beta1'
-
-[bash-2.02-beta1 frozen]
-
- 3/17
- ----
-lib/readline/vi_mode.c
- - make sure _rl_vi_save_insert() gets a non-null UNDO_LIST pointer
- before trying to do anything with it
-
-jobs.c
- - add a call to internal_warning from wait_for_job if the job is
- stopped
- - changed notify_of_job_status to not report pipelines exiting due to
- SIGPIPE in non-interactive shells if the shell is compiled with
- -DDONT_REPORT_SIGPIPE
-
-builtins/psize.sh
- - some fixes to try to avoid /tmp file races and surreptitious
- substitutions
-
-version.c
- - changed the extended version info to show 1998 as the copyright year
-
-parse.y
- - fixes from Andreas Schwab <schwab@LS5.informatik.uni-dortmund.de>
- for compilation errors when the shell is configured --disable-alias
- but with dparen arithmetic enabled
-
-eval.c
- - fixes from Andreas Schwab <schwab@LS5.informatik.uni-dortmund.de> to
- make sure the input stream is popped correctly when performing an
- array assignment in the command argument to `bash -c', e.g.,
- `bash -c 'A=()''
-
-builtins/kill.def
- - make `kill' with no arguments print a usage message and return a
- failure status
-
-alias.c
- - fix so that rd_token doesn't dump core when trying to do alias
- expansion on a line containing an unclosed single quote (fix from
- Vasco Pedro <vp@di.fct.unl.pt>)
-
-builtins/cd.def
- - fix so that using a non-empty directory from CDPATH to construct
- the name of the directory to change to results in an absolute
- pathname of the new current working directory being displayed,
- as POSIX.2 specifies
-
-support/bashbug.sh
- - a couple of small fixes to minimize /tmp file races -- the script
- is still raceable, the window is just smaller
-
- 3/24
- ----
-variables.c
- - make sure assign_in_env passes a malloc'd string to
- expand_string_unsplit, because some of the error code assumes that
- it is malloc'd and frees it (bug reported by Marko.Makela@HUT.FI)
-
- 3/25
- ----
-doc/bashref.texi
- - changed the email addresses to use the @email texinfo tag
-
-trap.c
- - call reset_parser from the exit trap code before calling
- parse_and_execute, so reserved words are parsed correctly
-
-subst.c
- - make sure parameter_brace_patsub expands the pattern string as if
- the expression were not in double quotes, even if the entire
- expansion is enclosed in double quotes, so that quote removal
- on embedded double quotes is performed correctly (bug report from
- schwab@issan.informatik.uni-dortmund.de)
-
- 3/27
- ----
-support/config.guess
- - changes to allow Power PCs running Apple's Rhapsody to configure
-
- 3/31
- ----
-
-Makefile.in
- - changed release status to `beta2'
-
-[bash-2.02-beta2 frozen]
-
- 4/6
- ---
-subst.c
- - make sure command_substitute does not try to set the terminal's
- process group to a background job
-
-[bash-2.02 frozen]
-
- 4/18
- ----
-[bash-2.02 released]
-
- 4/20
- ----
-bashline.c
- - make sure that rl_defun is not called for
- history-and-alias-expand-line unless both ALIAS and BANG_HISTORY
- are defined
- [in bash-2.02.1]
-
- 4/22
- ----
-make_cmd.c
- - make sure that make_here_document allocates enough space for the
- first line of the here document, by using the line length +2
- (instead of 1000, which is what the old code did, and breaks if
- the first line of the here document is enough longer than 1000
- characters to cause other memory to be scribbled on)
- [in bash-2.02.1]
-
-builtins/cd.def
- - when in posix mode, a value of "" for CDPATH should be treated the
- same as the current directory, not result in an error
- [in bash-2.02.1]
-
-lib/malloc/malloc.c
- - change the mh_align member of `union mhead' to be of type double
- rather than a pointer, so that malloc will return (hopefully)
- 8-byte aligned memory
- [in bash-2.02.1]
-
- 4/23
- ----
-aclocal.m4
- - add a new macro to check whether or not off_t is 64 bits
-
- 4/24
- ----
-configure.in
- - fixed a typo so the bash malloc is not compiled in on mips-sgi-irix6
-
-lib/readline/display.c
- - fix for readline redisplay if the prompt string is longer than the
- screen width and includes invisible characters
- [in bash-2.02.1]
-
-jobs.c
- - make_child should not set the terminal's process group to
- pipeline_pgrp if pipeline_pgrp == shell_pgrp (indicating that we
- are forking a child for a command substitution)
- [in bash-2.02.1]
-
-subst.c
- - in execute_simple_command, in the child forked if there is a pipe
- or the command is asynchronous, set subshell_environment to
- SUBSHELL_ASYNC only if the command is asynchronous, SUBSHELL_FORK
- if there is a pipe in or out
- [in bash-2.02.1]
-
- 4/27
- ----
-support/texi2dvi
- - upgraded to version 0.8 (from 0.5)
-
-support/texi2html
- - upgraded to version 1.52 (from 1.51)
-
-support/config.sub
- - config.sub now recognizes all the permutations of the system name
- that config.guess produces for alphas
- [in bash-2.02.1]
-
-aclocal.m4
- - changed BASH_TYPE_INT32_T, BASH_TYPE_U_INT32_T, and
- BASH_TYPE_PTRDIFF_T to avoid compiling a program; instead use
- the values determined by the AC_CHECK_SIZEOF tests to determine
- the default values to supply to AC_CHECK_TYPE
-
-configure.in
- - don't call AC_CHECK_TYPE({int32_t,u_int32_t,ptrdiff_t}) from
- configure.in; use the updated BASH_TYPE macros instead
-
-builtins/exec.def
- - if shell_execve fails, set ARGS to null because the realloc() call
- by shell_execve may have caused it to be reallocated and freed --
- we don't want to free the memory twice
-
-lib/glob/fnmatch.c
- - fixes from ache@nagual.pp.ru to make fnmatch work for eight-bit
- characters when `isupper' and `islower' are used -- they were
- restricted to ASCII characters before, probably to work around
- some ancient, broken C libraries in which is{low,upp}er are valid
- only for ASCII characters and return bogus values otherwise
- [in bash-2.02.1]
-
- 4/29
- ----
-builtins/cd.def
- - fixed a problem with the shell displaying the old working directory
- instead of the new one after changing to a directory found via
- $CDPATH when in physical mode (set -o physical)
- [in bash-2.02.1]
-
-make_cmd.c
- - make make_cond_command initialize the line number from the cond_node
- that's passed as an argument (not that it's used right now)
-
-copy_cmd.c
- - make sure that copy_cond_command copies the type of the cond command,
- since execute_cond_command uses that to decide what kind of test
- to perform
- [in bash-2.02.1]
-
-builtins/printf.def
- - make sure the for loop that processes the format string actually
- consumes arguments; otherwise process it only once to avoid
- infinite loops (e.g., `printf " " abc def ghi')
- [in bash-2.02.1]
- - if the format string is empty after preprocessing by ansicstr,
- return immediately
- [in bash-2.02.1]
-
-tests/run-printf
- - use `diff -a' so the presence of a non-printing character in the
- output doesn't confuse diff into thinking the files are binary
- (test whether or not `diff' supports `-a' first)
-
-Makefile.in
- - keep $(LOCAL_LIBS) from being specified twice
-
- 4/30
- ----
-support/shobj-conf
- - a script to generate variables to do shared object configuration
- for the loadable builtin stuff
-
-configure.in
- - added a section for shared object configuration using an `eval'
- of the output of shobj-conf and substituting the generated values
- with AC_SUBST
-
-examples/loadables/Makefile.in
- - the system-specific shared object configuration variables are now
- substituted by configure
-
- 5/4
- ---
-builtins/ulimit.def
- - some changes for HPUX 9.x's peculiar handling of RLIMIT_FILESIZE
- - changed the limit retrieval functions to return an error code
- and the value in a reference argument to avoid use of RLIM_INVALID
-
-general.c
- - new function, get_group_array(), which returns an array of
- gids
-
-examples/loadables/{id,printenv,sync,uname,whoami,push}.c
- - new loadable builtins
-
-variables.c
- - moved code that initializes $PPID into a new function, set_ppid()
-
-variables.h
- - extern declaration for set_ppid()
-
- 5/6
- ---
-subst.c
- - make sure that the `"' (double-quoted string) case of
- expand_word_internal calls string_list_dollar_at if we've expanded
- a double-quoted $@ so correct splitting on $IFS is done when
- the expansion is complete. We can't simply call string_list
- because that forces a space separator, and $IFS may not contain
- a space
- [in bash-2.02.1]
-
- 5/7
- ---
-builtins/umask.def
- - broke the code that parses a symbolic mode out of symbolic_umask
- into a separate function that takes a symbolic mode and an initial
- set of bits to modify
-
-examples/loadables/mkdir.c
- - new loadable builtin
-
- 5/11
- ----
-builtins/printf.def
- - use the format string length provided by ansicstr() to process the
- format string, rather than testing for nullness, to handle NUL
- bytes in the expanded format string
-
-builtins/pushd.def
- - changes so it can be built as both a regular builtin and a loadable
- builtin from the same source
-
-examples/loadables/Makefile.in
- - changes to build pushd.c from ${topdir}/builtins/pushd.def and then
- compile it with the correct flags to make it a loadable builtin,
- even if PUSHD_AND_POPD is not defined in config.h
-
- 5/12
- ----
-lib/readline/complete.c
- - use rl_completer_quote_characters instead of #ifdef SHELL/#endif
- code in make_quoted_replacement. This means complete.c no longer
- has any #ifdef SHELL code
-
- 5/13
- ----
-builtins/Makefile.in
- - `make clean' should remove mkbuiltins.o
-
-Makefile.in
- - all of the various `clean' targets need to descend into lib/sh
- and run the appropriate target there
-
-builtins/type.def
- - changed to use the builtin getopt. The old long options are
- handled by prescanning the argument list looking for the long
- options, processing them, and taking them out of the list before
- passing it to internal_getopt()
-
-lib/readline/signals.c
- - removed #ifdef SHELL code -- job control signals and SIGTERM are
- always set in rl_set_signals, but are set to SIG_IGN if the old
- handler was SIG_IGN (as bash sets it)
- - new function rl_maybe_set_sighandler, which sets the signal
- disposition back to SIG_IGN if the old handler was SIG_IGN
- - removed #ifdef HANDLE_JOB_SIGNALS and #ifdef HANDLE_SIGTERM code
-
-lib/readline/rltty.c
- - removed #ifdef SHELL code -- set_winsize is always called
- to force the application to stop if it's not in the foreground
- before getting the tty attributes
-
- 5/14
- ----
-lib/readline/signals.c
- - readline now catches SIGQUIT and cleans up the tty before resending
- it to its container application (unless the calling application has
- set the disposition of SIGQUIT to be SIG_IGN)
- - rl_handle_sigwinch is now called rl_sigwinch_handler
- - rl_sigwinch_handler now calls rl_resize_terminal to fetch the
- screen size after a SIGWINCH
- - the sighandler_cxt struct for non-posix systems now includes
- sa_flags and sa_mask variables, for future use
- - new variable, rl_catch_signals, indicating that readline should
- install its own signal handlers for SIGINT, SIGTERM, SIGQUIT,
- SIGALRM, SIGTSTP, SIGTTIN, and SIGTTOU
- - new variable, rl_catch_sigwinch, indicating that readline should
- install its own SIGWINCH handler, which will chain to a calling
- application's SIGWINCH handler
- - new function, rl_free_line_state(), to free up variable state
- associated with the current line after receiving a signal
- - new function, rl_cleanup_after_signal(), to clean up the display
- and terminal state after receiving a signal
- - new function, rl_reset_after_signal(), to reinitialize the
- terminal state after a signal handler returns and readline
- continues
- - rl_set_signals and rl_clear_signals now look at the values of
- rl_catch_signals and rl_catch_sigwinch
-
-lib/readline/terminal.c
- - new function rl_resize_terminal (), to reset readline's idea of
- the screen size after a SIGWINCH
-
-lib/readline/readline.h
- - extern declarations for rl_resize_terminal(), rl_free_line_state(),
- rl_cleanup_after_signal(), rl_reset_after_signal()
- - extern declarations for rl_catch_signals and rl_catch_sigwinch
-
-variables.c
- - new functions, get_env_value(char *) and get_home_dir(void) to
- satisfy references from the tilde and readline libraries when
- they are compiled as part of bash
-
-lib/tilde/tilde.c
- - rely on extern declarations of get_env_value and get_home_dir;
- there is no more #ifdef SHELL code
-
-lib/readline/shell.c
- - implementation of get_home_dir that uses getpwuid() to satisfy
- references from tilde.c when not compiled as part of bash
- - removed savestring()
- - removed #ifdef SHELL/#endif pair -- all of these functions will be
- resolved from bash when readline is linked into bash
-
-lib/readline/savestring.c
- - new file, with function definition for savestring() for backwards
- compatibility
-
-Makefile.in, _distribution
- - bumped things up to bash-2.03-alpha
-
- 5/15
- ----
-lib/readline/rlconf.h
- - removed #ifdef SHELL/#endif pair, so the callback stuff will be
- compiled into libreadline, but never linked into bash (since it's
- not referenced)
-
-configure.in
- - added new `--with-installed-readline' option to allow readline to
- be linked with an already-installed version -- this will probably
- not work with versions of readline prior to 2.3 (libreadline.so.4)
- [THIS IS STILL UNDOCUMENTED]
-
-Makefile.in
- - changed necessary variables to allow the `--with-installed-readline'
- option to work; shared and static libraries are supported
-
- 5/18
- ----
-lib/readline/display.c
- - _rl_save_prompt is now rl_save_prompt; _rl_restore_prompt is now
- rl_restore_prompt
-
-lib/readline/readline.h
- - extern declarations for rl_save_prompt and rl_restore_prompt
-
-lib/readline/{search,isearch,readline,display}.c
- - converted calls to _rl_{save,restore}_prompt () to use new public
- versions
-
-lib/readline/doc/rltech.texinfo
- - documented new public functions rl_{save,restore}_prompt
-
- 5/19
- ----
-lib/readline/readline.c
- - new hook function variable, rl_pre_input_hook. If non-zero, it's
- called from readline_internal_setup just before it returns and
- readline starts reading input
-
-lib/readline/readline.h
- - extern declaration for rl_pre_input_hook
-
-lib/readline/doc/rltech.texinfo
- - documented new variable rl_pre_input_hook
-
- 5/20
- ----
-lib/readline/complete.c
- - new hook function variable, rl_completion_display_matches_hook.
- If non-null, this function is called when readline would normally
- display the list of completion matches
-
-lib/readline/readline.h
- - extern declaration for rl_completion_display_matches_hook
-
-lib/readline/doc/rltech.texinfo
- - documented rl_completion_display_matches_hook
-
-lib/readline/readline.c
- - if RL_LIBRARY_VERSION is not defined, define it to 4.0 to match
- the version number of the shared libraries
-
-lib/readline/doc/{hist,rlman}.texinfo
- - changed the version and edition to 4.0 to match the library version
-
-support/config.guess
- - added case clause for matching UnixWare 7 from SCO (SVR5) -- further
- work may be needed
- [These fixes were in a usenet posting from hops@sco.com]
-
-support/config.sub
- - added case clauses to recognize various aliases for SCO Open Server
- and Open Desktop
- [in bash-2.02.1]
- - broke the code that canonicalizes unixware into unixware2 and
- unixware7 clauses (multiple places)
- [in bash-2.02.1]
- - added clause to recognize `sysv5' for SVR5
- [These fixes were in a usenet posting from hops@sco.com]
- [in bash-2.02.1]
-
-configure.in
- - add `-b elf' to LOCAL_CFLAGS for sco3.2v5* to allow dynamic linking
- (and loadable builtins)
- - add AC_DEFINE(SVR5) on SVR5 (unixware 7)
-
-config.h.in
- - add #undef SVR5, set by configure
-
- 5/21
- ----
-shell.c
- - line-buffer stdout and stderr in shell_initialize only if
- shell_initialized is 0 on all systems, not just SunOS 5
- [in bash-2.02.1]
-
-support/rlvers.sh
- - script to print out the version number of any installed
- readline library
-
-configure.in
- - only allow --with-installed-readline if the version of the
- installed readline library is 4.0 or greater
-
- 5/22
- ----
-lib/readline/complete.c
- - broke the code that actually displays a list of completion
- matches on the output stream into a separate public function,
- rl_display_match_list, so it can be called from the hook
- function rl_completion_display_matches_hook.
-
-lib/readline/readline.h
- - new extern declaration for rl_display_match_list
-
-lib/readline/rltech.texinfo
- - documented rl_display_match_list
-
-configure.in,Makefile.in
- - --enable-static-link now creates a STATIC_LD variable in Makefile
- rather than adding to LDFLAGS directly. LDFLAGS now includes
- $(STATIC_LD)
-
- 6/2
- ---
-builtins/cd.def
- - OLDPWD is now auto-exported
- - broke the code out of bindpwd() that updated the value of PWD in
- the export environment in-place and made it general, so it can
- be used for OLDPWD, too (this should be made *more* general, and
- moved to variables.c)
-
- 6/3
- ---
-variables.c
- - moved builtins/cd.def:export_pwd_var to here, renamed it to
- update_export_env_inplace
- - converted put_command_name_into_env to just call
- update_export_env_inplace
- - made dummy variable for OLDPWD, marked as invisible and exported,
- in initialize_shell_variables
-
-variables.h
- - extern declaration for update_export_env_inplace
-
-builtins/cd.def
- - changed calls to export_pwd_var to update_export_env_inplace
-
-lib/readline/bind.c
- - added missing return in rl_unbind_function_in_map
- - changed _rl_read_file to check whether or not `read' returns
- < 0 rather than < file_size
- - _rl_read_init_file needs to free `openname' after calling
- _rl_read_file, since it's not used again
-
-lib/readline/callback.c
- - bogus extern declaration for `readline_internal_startup', should
- be readline_internal_setup
-
-lib/readline/histfile.c
- - read_history_range now checks whether read(2) returns < 0 rather
- than checking the return value against the file size
-
-lib/readline/parens.c
- - whoops -- timer.tv_usec is *micro* seconds, not milliseconds
-
-lib/readline/readline.c
- - initialize `eof' to 1 in readline_internal_charloop
-
- 6/5
- ---
-configure.in
- - if we're configuring with an installed version of readline, set and
- have configure substitute RL_INCLUDE to `-I$(includedir)', so the
- build process uses the installed readline include files as well as
- the libraries
-
-Makefile.in, builtins/Makefile.in
- - add @RL_INCLUDE@ in the appropriate places, substituted by configure
-
-lib/readline/{history,readline}.h
- - add `extern "C"' wrapper if `__cplusplus' is defined
-
-lib/glob/fnmatch.h
- - include stdc.h
- - add prototypes to extern declaration for fnmatch()
-
-lib/readline/rlstdc.h
- - link to ../posixheaders/stdc.h (in readline lib with different name
- for benefit of standalone readline library installation)
-
-lib/readline/{history,keymaps}.h
- - include rlstdc.h
- - add prototypes to all of the extern function declarations
-
-lib/readline/history.h
- - the `data' member of a HIST_ENTRY is now a histdata_t, which is
- either a void * (ansi c) or a char * (k&r c)
-
-lib/readline/readline.c
- - changed calls to replace_history_entry to pass a histdata_t as the
- third parameter
-
- 6/8
- ---
-copy_cmd.c
- - make sure that copy_cond_command doesn't blindly try to copy
- com->op, since that will be null for AND and OR nodes, at least
- [in bash-2.02.1]
-
-lib/readline/vi_mode.c
- - added missing second argument to rl_vi_[fbe][Ww]ord(), since
- they're used as pseudo-bindable commands (they appear in the
- default funmap) as well as utility functions
-
-lib/readline/readline.h
- - include rlstdc.h
- - added prototypes for functions from vi_mode.c, util.c, terminal.c,
- search.c, util.c, undo.c, readline.c, parens.c, macro.c, kill.c,
- keymaps.c, isearch.c, input.c, funmap.c, display.c, complete.c,
- callback.c,
- - added extern declarations for functions from rltty.c
-
-lib/readline/{readline,util}.c
- - rl_refresh_line now takes the standard two arguments for bindable
- commands; changed callers
-
-lib/readline/*.c
- - small cleanups for incorrect arguments, etc. uncovered by use of
- function prototypes
-
-bashline.c
- - small cleanups for incorrect arguments, etc. uncovered by use of
- function prototypes
-
- 6/11
- ----
-jobs.c
- - cast result of strsignal() to (char *) for the benefit of broken
- Cray UNICOS machines
- [in bash-2.02.1]
-
-configure.in,aclocal.m4
- - new test, BASH_TYPE_BITS64_T, used to find out what basic type is
- 64 bits long; defaults to `double'
- - call AC_CHECK_SIZEOF(double)
-
-config.h.in
- - #define for bits64_t, undef by default
-
- 6/24
- ----
-aclocal.m4
- - changed BASH_TYPE_BITS64_T so that it checks the size of a char *
- first, before trying sizeof(double)
-
-lib/readline/doc/rluser.texinfo,doc/{bash.1,readline.3}
- - changed default binding for tilde-expand to M-&, since bash
- overrides M-~ to force username completion
-
-bashline.c
- - fixed an off-by-one error in hostnames_matching that exhibited
- itself when an exact multiple of 16 hostnames matched (fix
- from <davidg@nikhef.nl>)
- [in bash-2.02.1]
-
- 6/30
- ----
-lib/readline/readline.c
- - the maximum numeric argument is now 1000000
-
-bashline.c
- - fixed a bug in bash_directory_completion_hook that caused memory
- to be freed twice if a directory name containing an unset
- variable was completed and `set -u' had been set
-
-configure.in
- - on LynxOS, add a -DRECYCLES_PIDS to LOCAL_CFLAGS
-
-execute_cmd.c
- - make sure that the changes to make the shell fork early when
- run in the background do not cause commands such as `%1 &'
- to fork
- [in bash-2.02.1]
- - if RECYCLES_PIDS is defined, execute_command_internal sets
- last_made_pid to NO_PID after waiting for a foreground process,
- if the return status is 0 (fix from plai@Lynx.COM (Paul Lai))
-
-lib/readline/kill.c
- - fixes from Andreas Schwab to rl_yank_last_arg that make it
- behave better
-
-lib/readline/input.c
- - fixes from Donald Beaudry <donb@sgi.com> to make the input buffering
- and rl_stuff_char work right when the input buffer is nearly full
- (probably not a problem with keyboard input, but maybe a problem
- with programmers attempting to use rl_stuff_char to preload the
- input buffer)
-
- 7/14
- ----
-parse.y
- - fix to decode_prompt_string so that the \$ expansion quotes the `$'
- so it won't be processed by subsequent parameter expansion
- - change read_token_word so a $$ appearing in a token is recognized
- and parsed immediately, so a single or double quote after the
- second `$' doesn't cause ANSI-C expansion or locale translation
- (bug report from haertel@ichips.intel.com)
-
- 7/16
- ----
-lib/readline/display.c
- - fixed a bug that caused core dumps in xrealloc if the prompt was
- longer than 1024 characters
-
- 7/21
- ----
-builtins/mkbuiltins.c
- - if the number of characters read from the .def file is less than
- the file size reported by `stat', and the read completed without
- errors, reset the file size to avoid writing garbage at the end
- of the generated .c file (needed on WIN32 systems, doesn't hurt
- on Unix)
-
- 7/22
- ----
-CWRU/empty-for-wordlist
- - patch from Brian Fox for parse.y to allow bash to accept an empty
- `wordlist' after the `in' keyword in a for statement
-
- 7/23
- ----
-doc/bash.1
- - corrected the synopsis of the `for' and `select' statements to
- indicate that the semicolon (or newline) after the optional
- `in words' is required
-
-[bash-2.02.1 released]
-
- 7/28
- ----
-lib/readline/display.c
- - make sure visible_length is initialized to 0 in rl_expand_prompt.
- Fix from Gerhard Niklasch <nikl@mathematik.tu-muenchen.de>.
-
-lib/glob/glob.c
- - make sure that quotes are removed from the filename being globbed
- in glob_vector() before calling the GLOB_TESTNAME macro if there
- are no globbing characters in the pattern
-
-doc/Makefile.in
- - make sure that builtins.1 is looked for in $(srcdir) when running
- `make install' (it's still commented out, though)
-
- 7/30
- ----
-config.h.bot
- - if PROMPT_STRING_DECODE is not defined, define PPROMPT (the primary
- prompt string) as "$ "
-
-variables.c
- - if PROMPT_STRING_DECODE is not defined, and current_user.euid == 0,
- PS1 defaults to "# ", otherwise it defaults to `primary_prompt'
-
-doc/bashbug.1
- - fixed email address prep.ai.mit.edu -> gnu.org
-
- 8/3
- ---
-support/shobj-conf
- - add `solaris2' as a possible OS name, treated the same as sunos5
-
- 8/4
- ---
-shell.c
- - changed maybe_make_restricted() so that $ENV and $BASH_ENV are
- read-only variables in a restricted shell
-
-doc/{bash.1,bashref.texi}
- - added ENV and BASH_ENV to the list of readonly variables in
- restricted mode
-
-parse.y
- - added `do', `then', `else', `{', and `(' to the list of keywords
- that may precede the `time' reserved word
-
-general.c
- - added sanity checks to timeval_to_secs and clock_t_to_secs so
- that if the fractional part is >= 1000, 1 is added to the
- seconds and 1000 is subtracted from the fractional seconds
-
- 8/6
- ---
-Makefile.in
- - use $(CC_FOR_BUILD) to build mksignames
-
-configure.in
- - changes to allow cross-building for BeOS as well as cygwin32
-
-cross-build/{beos-sig.h,x86-beos.cache}
- - new files for cross-compiling for BeOS
-
- 8/7
- ---
-Makefile.in
- - changed rule for version.h to use && instead of if-then-else-fi to
- make sure the recipe fails if mkversion.sh fails
-
-configure.in
- - beos does not use the GNU malloc
-
-lib/sh/itos.c
- - broke itos into inttostr(i, buf, len) and itos(i), which calls
- inttostr and returns a newly-allocated string with the result
-
-support/mksignames.c
- - define `SIGKILLTHR' if system include files define it
-
-externs.h
- - extern declaration for inttostr(int, char *, int)
-
- 8/13
- ----
-lib/sh/strtol.c
- - include stdc.h before bashansi.h
-
-execute_cmd.c
- - make sure that execute_cond_node treats `=' the same as `=='
-
- 8/25
- ----
-variables.c, print_cmd.c
- - changed some calls to itos to use inttostr instead
-
-cross-build/x86-beos.cache, {execute_cmd,general,shell,trap}.c
- - some changes for BeOS (from fnf@ninemoons.com)
-
-lib/posixheaders/memalloc.h
- - changes to handle case where we're using both gcc and the C
- version of alloca(), or if we have alloca.h and we're using
- the C version of alloca() (from fnf@ninemoons.com)
-
-lib/sh/oslib.c
- - if bcopy or bzero are #defines, #undef them before defining
- replacement functions
-
-support/config.guess
- - recognize AmigaOS (from fnf@ninemoons.com)
- - recognize BeOS running on various machines
- (from fnf@ninemoons.com)
-
-support/config.sub
- - change basic_machine definition for amiga; added amigaos
- (from fnf@ninemoons.com)
- - changed definitions for MIPS machines running Linux (from
- fnf@ninemoons.com)
- - recognize `beos' as a valid operating system
- (from fnf@ninemoons.com)
- - changed OS for *-cbm to `amigaos' rather than `amigados'
- (from fnf@ninemoons.com)
-
-examples/functions/autoload.v3
- - a new version, from Mark Kennedy <mtk@ny.ubs.com>
-
-lib/readline/readline.c
- - new function, rl_delete_or_show_completions, like tcsh editing
- function delete-char-or-list
-
-lib/readline/readline.h
- - new extern declaration for rl_delete_or_show_completions
-
-lib/readline/funmap.c
- - new bindable name `delete-char-or-list', like tcsh
-
-lib/readline/doc/rluser.texinfo, doc/{bash.1,readline.3}
- - documented new delete-char-or-list command
-
-general.c
- - fix full_pathname to keep it from generating things like
- //foo when the current directory is /
-
- 8/27
- ----
-builtins/fc.def
- - fixed the help text for the -e option
-
- 8/28
- ----
-support/shobj-conf
- - added a clause for AIX 4.2 systems running gcc -- just the
- standard gcc stuff for shared objects, but it has to come
- before the other AIX 4.2 clause
-
- 8/31
- ----
-shell.c
- - some changes so that `set -e' is turned off while executing
- the startup files
-
- 9/3
- ---
-flags.c
- - new variable, `restricted_shell', non-zero if the shell was
- started in restricted mode
-
-flags.h
- - extern declaration for restricted_shell
-
-shell.c
- - new function, shell_is_restricted, returns 1 if the shell is
- supposed to be restricted based on the basename of $0 or the
- -r option
- - set restricted_shell to the value returned by shell_is_restricted
- before executing the startup files
-
-externs.h
- - extern declaration for shell_is_restricted
-
-builtins/shopt.def
- - new shopt variable, restricted_shell, indicates whether the shell
- was restricted at startup -- useful in startup files
-
-doc/{bash.1,bashref.texi}
- - documented new restricted_shell shopt option
-
- 9/15
- ----
-lib/sh/rename.c
- - new file, replacement for rename(2) if the OS doesn't provide it
-
-configure.in,config.h.in,Makefile.in,lib/sh/Makefile.in
- - machinery for including rename.o in libsh.a
-
-nojobs.c
- - make sure that set_tty_state returns a value
-
-builtins/mkbuiltins.c
- - use a call to rename(2) instead of a link/unlink pair
-
-lib/glob/glob.c
- - don't #define bcopy if bcopy is already defined
-
-lib/readline/histfile.c
- - add a call to ftruncate for BeOS, which ignores the O_TRUNC flag
- to open
-
-lib/readline/input.c
- - make rl_getc loop if read returns -1/EINTR on BeOS
-
-configure.in
- - set ARFLAGS and substitute it into the Makefiles
-
-{,builtins,lib/{glob,malloc,readline,sh,termcap,tilde}}/Makefile.in
- - ARFLAGS is now substituted by configure
- - use ARFLAGS in rules that create libraries using $(AR)
-
-builtins/printf.def
- - fixed bug that caused a core dump when a modifier was supplied
- in the format string without a conversion character (e.g. `%h')
-
- 9/17
- ----
-lib/glob/glob.c
- - if filenames starting with a dot don't have to be matched
- explicitly (e.g., after a `shopt -s dotglob'), don't match
- `.' or `..' in any case
-
-eval.c
- - make sure that array assignments don't show up in the history list
- (fix from Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>)
-
-lib/readline/complete.c
- - fix to rl_menu_complete so it inserts a single completion properly
- when a word matches only one filename
-
- 9/24
- ----
-execute_cmd.c
- - difftimeval should zero out the tv_usec field if the tv_sec field
- is < 0
- - addtimeval should check for tv_usec being == 1000000 and add one
- to tv_sec if it is
-
- 9/25
- ----
-subst.c
- - fix to expand_word_internal to prevent non-whitespace IFS characters
- from causing word splitting if they are not the results of an
- expansion (not exactly right yet, but I think it's the result of a
- problem with the ${...} end-brace-matching code in the parser)
-
- 9/28
- ----
-parse.y
- - new flag for parse_matched_pair -- P_FIRSTCLOSE -- which makes it not
- count and match additional construct open characters
- - change calls to parse_matched_pair when matching braces in
- ${...} constructs (both unquoted and within double quotes) to
- specify the P_FIRSTCLOSE flag to match POSIX.2 requirements
-
-subst.c
- - changed fix from 9/25, now that the parser problem is fixed
-
- 9/30
- ----
-variables.c
- - change expansion of list of words between (...) in array assignments
- to include pathname generation in assign_array_var_from_string
-
-doc/{bash.1,bashref.texi}
- - clarified behavior of the shell at startup if running setuid, with
- and without the -p option supplied
+ 12/18
+ -----
+parse.y
+ - parser_in_command_position: external interface to the
+ command_token_position macro for use by other parts of the shell,
+ like the completion mechanism
- 10/7
- ----
-bashhist.c
- - change default open(2) mode to 0600 instead of 0666 for `privacy
- concerns'
+externs.h
+ - extern declaration for parser_in_command_position
- 10/13
+ 12/19
-----
-lib/readline/display.c
- - fixed a problem with displaying tabs after newlines, from
- <qrczak@knm.org.pl>
- - in update_line, if we are printing over existing material,
- only call space_to_eol or _rl_clear_to_eol if lendiff is non-zero
- - when moving the cursor in _rl_move_cursor_relative, only call
- _rl_backspace if the current cursor position is strictly greater
- than the desired cursor position
- 10/14
+builtins/read.def
+ - read_builtin: make sure all calls to bind_read_variable are passed
+ a non-null string. Fixes bug reported by Dan Douglas
+ <ormaaj@gmail.com>
+
+bashline.c
+ - attempt_shell_completion: mark that we're in a command position if
+ we're at the start of the line and the parser is ready to accept
+ a reserved word or command name. Feature most recently suggested
+ by Peng Yu <pengyu.ut@gmail.com>
+
+ 12/21
-----
-locale.c
- - LC_ALL is no longer set automatically when LANG is assigned a value
+lib/readline/bind.c
+ - _rl_escchar: return the character that would be backslash-escaped
+ to denote the control character passed as an argument ('\n' -> 'n')
+ - _rl_isescape: return 1 if character passed is one that has a
+ backslash escape
+ - _rl_untranslate_macro_value: new second argument: use_escapes, if
+ non-zero translate to backslash escapes where possible instead of
+ using straight \C-x for control character `x'. Change callers
+ - _rl_untranslate_macro_value: now global
-config.h.{top,bot}
- - renamed to config-{top,bot}.h, respectively
+lib/readline/rlprivate.h
+ - _rl_untranslate_macro_value: extern declaration
-config.h.in
- - include config-top.h and config-bot.h
+lib/readline/{macro.c,readline.h}
+ - rl_print_last_kbd_macro: new bindable function, inspired by patch
+ from Mitchel Humpherys
-Makefile.in
- - things now depend on config-top.h and config-bot.h
+lib/readline/funmap.c
+ - print-last-kbd-macro: new bindable command, bound to
+ rl_print_last_kbd_macro
-subst.c
- - minor changes to extract_dollar_brace_string and char_is_quoted to
- allow things like "${PIP[TAB] to perform correct variable completion
+lib/readline/doc/{rluser.texi,readline.3},doc/bash.1
+ - print-last-kbd-macro: document.
- 10/15
- -----
-builtins/Makefile.in
- - add $(PROFILE_FLAGS) to the make recipe that creates `mkbuiltins',
- so configuring with --enable-profiling works right
+lib/readline/text.c
+ - _rl_insert_next: if we're defining a macro, make sure the key gets
+ added to the macro text (should really audit calls to rl_read_key()
+ and make sure the right thing is happening for all of them)
- 10/20
- -----
-doc/bashref.texi
- - documented the new --with-installed-readline option
+bashline.[ch]
+ - print_unix_command_map: new function, prints all bound commands in
+ cmd_xmap using rl_macro_dumper in a reusable format
-[bash-2.03-alpha1 frozen]
+builtins/bind.def
+ - new -X option: print all keysequences bound to Unix commands using
+ print_unix_command_map. Feature suggested by Dennis Williamson
+ (2/2011)
- 10/21
- -----
-builtins/reserved.def
- - fixed help text for { ... } to make it clear that a semicolon is
- required before the closing brace
+doc/{bash.1,bashref.texi}
+ - document new `bind -X' option
- 10/22
+ 12/24
-----
-trap.c
- - in decode_signal, don't bother calling strcasecmp if
- signal_names[sig] is null or empty
-
- 11/2
- ----
-configure.in
- - make sure RL_LIBDIR and HIST_LIBDIR are assigned values even if
- readline or history is configured out of the shell, so the -L
- options have arguments in the link command
-test.c
- - make test_syntax_error cause test to return a status > 1, to
- conform to POSIX.2 4.62.8
+doc/{bash.1,bashref.texi}
+ - add a couple of sentences to the description of the case modification
+ operators making it clearer that each character of parameter is
+ tested against the pattern, and that the pattern should only attempt
+ to match a single character. Suggested by Bill Gradwohl
+ <bill@ycc.com>
-doc/readline.3
- - make sure the SYNOPSIS section indicates that programmers should
- include <stdio.h> before <readline.h>
+ 12/28
+ -----
+shell.c
+ - init_noninteractive: instead of calling set_job_control(0) to
+ unconditionally turn off job control, turn on job control if
+ forced_interactive or jobs_m_flag is set
+ - shell_initialize: call initialize_job_control with jobs_m_flag as
+ argument so `bash -m script' enables job control while running the
+ script
- 11/9
- ----
-Makefile.in
- - install with explicit mode of 0755
+jobs.c
+ - initialize_job_control: if the `force' argument is non-zero, turn on
+ job control even if the shell is not currently interactive
+ (interactive == 0)
- 11/10
+ 12/29
-----
-builtins/test.def
- - make sure that a missing `]' makes `[' exit with status 2, to
- conform to POSIX.2 4.62.8
-command.h
- - new word flag: W_NOGLOB, meaning to not perform globbing
+flags.h
+ - new extern declaration for jobs_m_flag
-execute_cmd.c
- - fix_assignment_statements now turns on the W_NOGLOB flag for
- arguments to `assignment builtins' that have W_ASSIGNMENT set
+builtins/{cd,set}.def,doc/{bash.1,bashref.texi}
+ - added text clarifying the descriptions of cd -L and -P, suggested by
+ Padraig Brady <p@draigbrady.com>
+ - slight change to the description of `set -P' about resolving symbolic
+ links
-subst.c
- - expand_word_internal needs to preserve the W_NOGLOB flag from
- the word being expanded to the word being returned
- - glob_expand_word_list does not call shell_glob_filename for a
- word with W_NOGLOB set
+lib/readline/doc/rluser.texi
+ - Added an example to the programmable completion section: _comp_cd,
+ a completion function for cd, with additional verbiage. Text
+ includes a reference to the bash_completion project
-builtins/shopt.def
- - print_shopt is now void
+ 1/1/2012
+ --------
+jobs.c
+ - set_job_status_and_cleanup: note that a job is stopped due to
+ SIGTSTP (any_tstped) if job_control is set; there's no need to
+ test interactive
-configure.in
- - machines running Rhapsody don't use the bash malloc
- - pass host_vendor to the Makefiles with AC_SUBST
+ 1/5
+ ---
+quit.h
+ - LASTSIG(): new macro, expands to signal number of last terminating
+ signal received (terminating_signal or SIGINT)
-support/config.guess
- - Rhapsody is really rhapsody, not nextstep
+trap.c
+ - first_pending_trap: returns lowest signal number with a trap pending
+ - trapped_signal_received: set to the last trapped signal the shell
+ received in trap_handler(); reset to 0 in run_pending_traps
-support/config.sub
- - add rhapsody to the list of supported configurations
+builtins/read.def
+ - read_builtin: changes to posix-mode (posixly_correct != 0) to make
+ `read' interruptible by a trapped signal. After the trap runs,
+ read returns 128+sig and does not assign the partially-read line
+ to the named variable(s). From an austin-group discussion started
+ by David Korn
-Makefile.in
- - pass CONF_HOSTTYPE, CONF_OSTYPE, and CONF_MACHTYPE as -D options
- in SYSTEM_FLAGS, to indicate that they came from the configuration
- process
- - set VENDOR variable from host_vendor configuration variable
- - pass CONF_VENDOR as part of SYSTEM_FLAGS
+ 1/11
+ ----
+doc/{bash.1,bashref.texi}
+ - slight changes to the descriptions of the compat32 and compat40 shell
+ options to clarify their meaning
-variables.c
- - define HOSTTYPE, OSTYPE, and MACHTYPE as CONF_HOSTTYPE, CONF_OSTYPE,
- and CONF_MACHTYPE, respectively
+ 1/12
+ ----
+lib/readline/{colors.[ch],parse-colors.[ch]}
+ - new files, part of color infrastructure support
- 11/11
- -----
-doc/{bashref.texi,bash.1}
- - updated description of `read' to clarify the -r option and its
- effect on backslash escaping
+Makefile.in,lib/readline/Makefile.in
+ - arrange to have colors.o and parse-colors.o added to readline
+ library
- 11/13
- -----
-examples/loadables/{ln,unlink}.c
- - new loadable builtins
+{configure,config.h}.in
+ - check for stdbool.h, define HAVE_STDBOOL_H if found
- 11/23
- -----
-lib/glob/fnmatch.c
- - some fixes to handle extended glob patterns immediately following
- a `*'
+ 1/14
+ ----
+lib/readline/bind.c
+ - colored_stats: new bindable variable, enables using colors to
+ indicate file type when listing completions
-tests/extglob.tests
- - updated with cases from bug report fixed today
+lib/readline/complete.c
+ - _rl_colored_stats: new variable, controlled by colored-stats bindable
+ variable
+ - colored_stat_start, colored_stat_end: new functions to set and reset
+ the terminal color appropriately depending on the type of the
+ filename to be printed
+ - print_filename: changes to print colors if `colored-stats' variable
+ set. Changes contributed by Raphael Droz
+ <raphael.droz+floss@gmail.com>
-support/shobj-conf
- - udpated stanza for aix 4.2 with gcc, based on information from
- jik@cisco.com
+lib/readline/readline.c
+ - rl_initialize_everything: add call to _rl_parse_colors to parse
+ color values out of $LS_COLORS. May have to add to rl_initialize
+ to make more dynamic if LS_COLORS changes (which doesn't happen
+ very often, if at all)
-configure.in
- - changes to add the correct linker options to allow dynamic linking
- when using gcc on AIX 4.2, instead of insisting on the AIX C
- compiler
+lib/readline/rlprivate.h
+ - _rl_colored_stats: new extern declaration
-examples/misc/aliasconv.{bash,sh}
- - changes to handle aliases with embedded single quotes
+lib/readline/doc/{readline.3,rluser.texi},doc/bash.1
+ - colored-stats: document new bindable readline variable
+
+lib/readline/colors.c
+ - _rl_print_color_indicator: call rl_filename_stat_hook before calling
+ lstat/stat so we can get color indicators for stuff like
+ $HOME/Applications
- 11/25
- -----
lib/readline/complete.c
- - postprocess_matches should call compute_lcd_of_matches with an
- argument of `t' instead of `text'
- - postprocess_matches should never call ding(); leave that for the
- callers
- - postprocess_matches no longer needs `text' as the first argument
- - rl_complete_internal needs to call ding() if postprocess_matches
- returns 0, since postprocess_matches no longer does it
- - rl_complete_internal can now free `text' immediately after calling
- gen_completion_matches, since it's no longer used
+ - stat_char: call rl_filename_stat_hook before calling lstat/stat
- 11/30
- -----
-print_cmd.c
- - make sure redirections following compound commands have a space
- separating them from the command
+findcmd.[ch],execute_cmd.c
+ - search_for_command: now takes a second `flags' argument; changed
+ header function prototype and callers
+ - search_for_command: if (flags & 1), put the command found in $PATH
+ into the command hash table (previous default behavior)
- 12/1
+execute_cmd.c
+ - is_dirname: call search_for_command with flags argument of 0 so it
+ doesn't try to put something in the command hash table
+
+bashline.c
+ - bash_command_name_stat_hook: a hook function for readline's
+ filename_stat_hook that does $PATH searching the same way that
+ execute_cmd.c:execute_disk_command() does it, and rewrites the
+ passed filename if found. Does not put names into command hash
+ table. This allows command name completion to take advantage
+ of `visible-stats' and `colored-stats' settings.
+ - executable_completion: new function, calls the directory completion
+ hook to expand the filename before calling executable_file or
+ executable_or_directory; change command_word_completion_function to
+ call executable_completion. This allows $HOME/bin/[TAB] to do
+ command completion and display alternatives
+
+ 1/17
----
-general.c
- - changed canonicalize_pathname so that if the result path begins
- with `//', it will be changed to `/' if and only if the original
- path did not begin with `//' (there has to be a non-slash after
- the leading `///' in the original path)
+pcomplete.c
+ - gen_command_matches: now takes a new second argument: the command
+ name as deciphered by the programmable completion code and used
+ to look up the compspec; changed callers (gen_compspec_completions)
+ - gen_shell_function_matches: now takes a new second argument: the
+ command that originally caused the completion function to be
+ invoked; changed callers (gen_compspec_completions))
+ - build_arg_list: now takes a new second argument: the command name
+ corresponding to the current compspec; changed callers
+ (gen_command_matches, gen_shell_function_matches)
+ - build_arg_list: now uses `cmd' argument to create $1 passed to
+ invoked command or shell function
+ - gen_compspec_completions: if we skipped a null command at the
+ beginning of the line (e.g., for completing `>'), add a new word for
+ it at the beginning of the word list and increment nw and cw
+ appropriately. This is all a partial fix for the shortcoming
+ pointed out by Sung Pae <sungpae@gmail.com>
- 12/2
+ 1/18
----
-builtins/evalstring.c
- - augment the test for turning on CMD_NO_FORK to make sure that
- parse_and_execute_level == 1. That takes care of things like
- bash -c 'for f in 1 2 3; do eval "/bin/echo \"$f\"" ; done'
+{configure,config.h}.in
+ - new check: check for AUDIT_USER_TTY defined in <linux/audit.h>,
+ define HAVE_DECL_AUDIT_USER_TTY if both are found
- only printing one line of output
+lib/readline/rlconf.h
+ - ENABLE_TTY_AUDIT_SUPPORT: new define, allows use of the Linux kernel
+ tty auditing system if it's available and enabled
- 12/8
- ----
-config-top.h
- - add commented-out #define for NON_INTERACTIVE_LOGIN_SHELLS so
- that users may, if they choose, make things like
+lib/readline/util.c
+ - _rl_audit_tty: new function, send a string to the kernel tty audit
+ system
- #! /bin/bash --login
+lib/readline/rlprivate.h
+ - _rl_audit_tty: new extern declaration
- work in shell scripts
+lib/readline/readline.c
+ - readline: call _rl_audit_tty with line to be returned before returning
+ it if the Linux tty audit system is available and it's been enabled
+ in rlconf.h Original patch from Miroslav Trmac; recent request
+ from Miroslav Lichvar <mlichvar@redhat.com>
- 12/10
- -----
-jobs.c
- - changes to the way jobs are reaped when the shell is not
- interactive:
-
- o notify_of_job_status no longer marks dead jobs as
- notified if they did not exit due to a signal;
- o changed mark_background_jobs_as_notified to take an
- argument `force': if zero, we only mark enough
- dead jobs as notified to keep CHILD_MAX jobs in the
- jobs list, as POSIX.2 specifies. If non-zero, mark
- all dead jobs as notified;
- o wait_for_background_pids marks all dead jobs as
- notified when it has finished waiting for everything,
- since the only thing that calls it is the `wait' builtin;
- o wait_for_single_pid marks a job as notified after it
- has completed, since the only things that call it are
- wait_for_background_pids and the `wait' builtin
- o wait_for_job marks the job as notified after the last
- pid completes
+ 1/21
+ ----
-execute_cmd.c
- - change execute_subshell_builtin_or_function to check
- subshell_environment and pipe_out to decide whether or not to fork
- if builtin == jobs_builtin, since the early-forking code added in
- bash-2.02 means that the piping has probably already been done
+lib/readline/readline.c:
+ - _rl_dispatch_subseq: add an inter-character timeout for multi-char
+ key sequences. Suggested by <rogerx.oss@gmail.com>. Still needs
+ work to make a user-settable variable
- 12/15
- -----
parse.y
- - changes to make avar=((...)) a syntax error instead of ignoring
- the nested parens and treating it as an array assignment
-
-shell.c
- - changed run_startup_files so that any shell, whether or not it is
- interactive, will run the login shell startup files when given the
- --login option. This happens only when not in posix mode.
+ - shell_getc: make code that uses the pop_alias dependent on ALIAS
+ define
-builtins/enable.def
- - changes to handle Tenon's MachTen, whose dlclose() does not return
- a value
+variables.h
+ - sv_tz: extern define should only depend on HAVE_TZSET
-lib/glob/fnmatch.c
- - changed gmatch so that when it calls extmatch, it removes FNM_PERIOD
- from the flags if it's not matching at the start of the string.
- This fixes the problem of `@' and `+' extended-glob subpatterns
- containing bracket expressions treating `.' specially when matching
- a portion of the string starting with `.'
+expr.c
+ - expr_streval: if ARRAY_VARS is not defined, set lvalue->ind to -1;
+ move assignment to `ind' inside define
+ - expr_bind_array_element: declaration and uses need to be #ifdef
+ ARRAY_VARS
-config-top.h
- - removed define for NON_INTERACTIVE_LOGIN_SHELLS, since it's no longer
- necessary
+arrayfunc.h
+ - AV_ALLOWALL, AV_QUOTED, AV_USEIND: define to 0 if ARRAY_VARS not
+ defined; used in subst.c unconditionally
- 12/17
- -----
-lib/readline/complete.c
- - change rl_complete_internal and rl_menu_complete to check
- rl_filename_completion_desired to decide whether or not we're
- completing filenames instead of checking whether the attempted
- completion function is filename_completion_function.
- filename_completion_function sets rl_filename_completion_desired,
- so this shouldn't break anything -- just allow postprocessing of
- matches for user-supplied filename completion functions that don't
- call filename_completion_function
+sig.h
+ - make the signal blocking functions not dependent on JOB_CONTROL
-lib/readline/display.c
- - new function, _rl_erase_entire_line, which erases the entire line,
- no matter where the cursor is, and puts the cursor at the beginning
- of the (newly-empty) line
+sig.c
+ - sigprocmask: make the replacement definition not dependent on
+ JOB_CONTROL
-lib/readline/readline.c
- - new application-level variable, rl_erase_empty_line, which, if
- non-zero, tells readline to erase the contents of the current line,
- prompt and all, if the only character typed to an otherwise-blank
- line is bound to rl_newline. Requested by the Cygnus GDB folks.
- - change to rl_newline to suppress the call to _rl_update_final if
- rl_erase_empty_line is non-zero, and rl_point == rl_end == 0, since
- _rl_update_final calls crlf()
- - change to readline_internal_charloop to call _rl_erase_entire_line
- if newline was the only thing typed on an otherwise-empty line
+trap.c
+ - use BLOCK_SIGNAL/UNBLOCK_SIGNAL instead of code dependent on
+ HAVE_POSIX_SIGNALS and BSD signals
-lib/readline/readline.h
- - extern declaration for rl_erase_empty_line
+ 1/24
+ ----
-lib/readline/doc/rltech.texinfo
- - documented new rl_erase_empty_line variable
+print_cmd.c
+ - print_redirection_list: change the conditions under which
+ r_duplicating_output_word is mapped to r_err_and_out to more or
+ less match those used in redir.c. Fixes bug pointed out by
+ Dan Douglas <ormaaj@gmail.com>
- 12/18
- -----
-Makefile.in
- - changed RELSTATUS to `beta1'
-[bash-2.03-beta1 frozen]
+ 1/29
+ ----
+lib/readline/signals.c
+ - _rl_block_sigwinch,_rl_release_sigwinch: don't compile in bodies
+ unless SIGWINCH is defined. Fixes bug reported by Pierre Muller
+ <pierre.muller@ics-cnrs.unistra.fr>
- 12/21
- -----
doc/{bash.1,bashref.texi}
- - added description of `test -h'; equivalent to `test -L'
+ - small modifications to the introduction to the REDIRECTION section
+ to describe how redirections can modify file handles
+ - small modification to the section describing base#n to make it
+ clearer that n can be denoted using non-numerics. From a posting
+ by Linda Walsh <bash@tlinx.org>
- 12/22
- -----
-support/shobj-conf
- - SHOBJ_LDFLAGS should be those options to ld which are common
- between building dynamically loadable shared objects and shared
- libraries
- - added two new variables: SHOBJ_XLDFLAGS, which are ld options
- specific to building dynamically loaded shared objects, and
- SHLIB_LIBS, which are other libraries against which shared libraries
- should be linked. These are for the benefit of AIX 4.2; other
- stanzas do not need to be changed.
+ 2/2
+ ---
+builtins/printf.def
+ - printf_builtin: make sure vbuf is intialized and non-null when -v
+ is supplied, since other parts of the code assume that it's not
+ null (e.g., bind_printf_variable()). Fixes bug reported by Jim
+ Avera <james_avera@yahoo.com>
-configure.in
- - add call to AC_SUBST for SHOBJ_XLDFLAGS
+ 2/4
+ ---
+lib/readline/undo.c
+ - _rl_free_undo_list: new function, old body of rl_free_undo_list,
+ frees undo entries in UNDO_LIST * passed as argument
+ - rl_free_undo_list: call _rl_free_undo_list
-examples/loadables/Makefile.in
- - SHOBJ_XLDFLAGS is now substituted by configure
- - $(SHOBJ_LDFLAGS) -> $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) in all
- recipes that build loadable builtins
+lib/readline/rlprivate.h
+ - _rl_free_undo_list: new extern declaration
+ - _rl_keyseq_timeout: new extern declaration (see below)
- 12/29
- -----
-support/config.{guess,sub}
- - changes for NEC SX4 machines running SUPER-UX (?). Info from
- Nicholas Clark <nick@flirble.org>
+lib/readline/misc.c
+ - rl_clear_history: new function. Clears the history list and frees
+ all associated data similar to history.c:clear_history(), but
+ takes rl_undo_list into account and frees and UNDO_LISTs saved as
+ `data' members of a history list entry
+
+lib/readline/doc/rltech.texi
+ - rl_clear_history: documented
+
+lib/readline/readline.c
+ - _rl_keyseq_timeout: new variable to hold intra-key timeout value
+ from 1/21 fix; specified in milliseconds. Default value is 500
+ - _rl_dispatch_subseq: change to use _rl_keyseq_timeout as intra-key
+ timeout if it's greater than 0; no timeout if <= 0
+ - _rl_dispatch_subseq: don't check for queued keyboard input if we have
+ pushed or pending input, or if we're reading input from a macro
lib/readline/bind.c
- - new bindable variable, `isearch-terminators', which is the list of
- characters that will terminate an incremental search without
- subsequently executing the character as a command
+ - keyseq-timeout: new bindable variable, shadows _rl_keyseq_timeout
+ - string_varlist: add keyseq-timeout
+ - sv_seqtimeout: new function to modify value of _rl_keyseq_timeout;
+ clamps negative values at 0 for now
+ - _rl_get_string_variable_value: return value for keyseq-timeout
+
+doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
+ - keyseq-timeout: documented
lib/readline/isearch.c
- - changes to incorporate the new isearch-terminators bindable variable;
- uses new private readline variable _rl_isearch_terminators
- (suggested by Brian Fox)
+ - _rl_isearch_dispatch: modification to fix from 7/18 to not use
+ cxt->keymap and cxt->okeymap, since by the time this code is
+ executed, they are equal. Use `f' to check for rl_insert or
+ unbound func
+ - _rl_isearch_dispatch: if we're switching keymaps, not in
+ callback mode, and don't have pending or pushed input, use
+ _rl_input_queued to resolve a potentially ambiguous key sequence.
+ Suggested by Roger Zauner <rogerx.oss@gmail.com>
+ - _rl_isearch_dispatch: if we have changed keymaps and resolved to
+ an editing function (not self-insert), make sure we stuff the
+ right characters back onto the input after changing the keymap
+ back so the right editing function is executed after the search
+ is terminated. Rest of fix for bug reported by Roger Zauner
+ <rogerx.oss@gmail.com>
-doc/{bash.1,readline.3}, lib/readline/doc/rluser.texinfo
- - documented new `isearch-terminators' settable variable
+ 2/5
+ ---
+builtins/gen-helpfiles.c
+ - new file: reads struct builtin and writes the long docs to files
+ in the `helpdirs' subdirectory. The filename is given in the
+ previously-unused `handle' member of the struct builtin. Links
+ with `tmpbuiltins.o', which is created by Makefile to have the
+ right long documentation. When not cross-compiling, gets the
+ right #defines based on configuration options from config.h instead
+ of trying to parse conditional parts of def files. Fixes
+ shortcoming pointed out by Andreas Schwab <schwab@linux-m68k.org>
-lib/readline/complete.c
- - new convenience function, free_match_list, called from
- rl_complete_internal
+builtins/Makefile.in
+ - tmpbuiltins.c: new generated file, created to enable creation of
+ separate helpfiles based on correct #defines instead of trying to
+ parse conditional parts of def files
+ - gen-helpfiles: new program to generate helpfiles, links with
+ tmpbuiltins.o
+ - HELPFILES_TARGET: new target, substituted by configure to `helpdoc'
+ if separate helpfiles requested
+ - targets: new target, libbuiltins.a and $(HELPFILES_TARGET)
+ - CREATED_OBJECTS: new variable, holds created object files for
+ make clean; changed make clean to remove created objects
+ - helpdoc: changed to call gen-helpfiles instead of mkbuiltins
- 12/30
- -----
-aclocal.m4
- - changed the calls to AC_MSG_ERROR in the cross-compiling sections
- to AC_MSG_WARN, since AC_MSG_ERROR can cause configure to abort
+Makefile.in
+ - when building libbuiltins.a, recursively call make with `targets'
+ argument to make sure separate helpfiles get built
-examples/functions/which
- - new function, emulation of `which' as it appears in FreeBSD
+configure.in
+ - substitute `helpdoc' as value of HELPFILES_TARGET if
+ --enable-separate-helpfiles supplied as configure argument
- 12/31
- -----
-lib/readline/readline.c
- - new bindable function: rl_rubout_or_delete. Does rl_rubout if
- rl_point is at the end of the line, or rl_delete if not. This
- is intended to mimic the Motif/Netscape/GNOME behavior of the
- DEL character, and can be bound to delete to get that behavior
+builtins/mkbuiltins.c
+ - `-nofunctions': new argument, causes mkbuiltins to not write value
+ for function implementing a particular builtin to struct builtin
+ and to write document file name to `handle' member of struct builtin
+ - no longer writes separate helpfiles; that is left to gen-helpfiles
-lib/readline/readline.h
- - new extern declaration for rl_rubout_or_delete
+ 2/8
+ ---
+subst.c
+ - make sure last_command_exit_value is set to a non-zero value before
+ any calls to report_error, since `-e' set will short-circuit
+ report_error. Fixes bug reported by Ewan Mellor
+ <Ewan.Mellor@eu.citrix.com>
-lib/readline/funmap.c
- - bound the name `forward-backward-delete-char' to
- rl_rubout_or_delete (currently not bound to any keys)
-
-lib/readline/doc/manvers.texinfo
- - new file with readline manual version information, to mantain
- consistent numbering between readline and history manuals
-
-lib/readline/doc/{rlman,hist}.texinfo
- - @include manvers.texinfo for version information
- - moved the @dircategory and and @direntry directives inside
- the @ifinfo block
- - changed copyrights to 1988-1999
-
-doc/Makefile.in, lib/readline/doc/Makefile.in
- - texi2html is now called with -menu (to handle the texinfo menus)
- and -monolithic (to include the table of contents in the generated
- HTML file instead of putting it in a separate file
- - changed recipes to remove references to TOC html files
-
-lib/glob/fnmatch.c
- - include <string.h> or <strings.h> as appropriate for strchr()
- declaration
-
- 1/4/99
- ------
-print_cmd.c
- - don't print bare words when printing conditional expressions in
- print_cond_node, use cprintf("%s", cond->op->word)
+variables.c
+ - make_local_array_variable: added second argument; if non-zero,
+ function will return an existing local associative array variable
+ instead of insisting on an indexed array
-subst.c
- - in separate_out_assignments, if VARLIST is non-null on function
- entry, free it up to clean up after a previous error longjmp
+variable.h,subst.c
+ - make_local_array_variable: changed prototype and caller
- 1/5
- ---
-configure.in
- - make sure the case clause that disables the bash malloc on alpha
- machines catches things like `alphaev56' as well as `alpha'
+builtins/declare.def
+ - declare_internal: add second arg to call to make_local_array_variable;
+ making_array_special, which indicates we're processing an
+ assignment like declare a[b]=c. Fixes seg fault resulting from
+ a being an already-declared local associative array variable in a
+ function. Ubuntu bash bug 928900.
- 1/12
+ 2/14
----
-lib/readline/histlib.h
- - new error message code: NO_PREV_SUBST
-lib/readline/histexpand.c
- - handle NO_PREV_SUBST with appropriate error message in hist_error
- - in history_expand_internal, if the `s' or `&' case results in a
- null or empty LHS, return NO_PREV_SUBST
+execute_cmd.c
+ - execute_command_internal: if redirections into or out of a loop fail,
+ don't try to free ofifo_list unless saved_fifo is non-zero. It's
+ only valid if saved_fifo is set
-error.c
- - new interface: command_error(func, code, e, flags); intended to
- collect command-related errors in one place
- - new interface: command_errstr(code); returns a string describing
- command error CODE
+ 2/15
+ ----
+{arrayfunc,braces,variables}.c
+ - last_command_exit_value: make sure it's set before any calls to
+ report_error, since -e will cause that to exit the shell
-error.h
- - extern declarations for command_error and command_errstr
+builtins/common.c
+ - get_job_by_name: call internal_error instead of report_error so this
+ doesn't exit the shell
-command.h
- - possible values for CODE in calls to command_error and command_errstr
+ 2/18
+ ----
+builtins/evalstring.c
+ - parse_and_execute: make sure the file descriptor to be redirected to
+ is 1 before calling cat_file. One fix for bug reported by Dan Douglas
+ <ormaaj@gmail.com>
-{shell,print_cmd,make_cmd,execute_cmd,dispose_cmd,eval}.c ,builtins/evalstring.c
- - changed some calls to programming_error to use command_error
+parse.y
+ - read_token_word: don't return NUMBER if a string of all digits
+ resolves to a number that overflows the bounds of an intmax_t.
+ Other fix for bug reported by Dan Douglas <ormaaj@gmail.com>
- 1/13
+ 2/19
----
-configure.in
- - if --enable-profiling is specified on a solaris2 machine, don't
- turn on enable-static-link, since it's very hard to build a
- static binary on solaris2 and gprof does not (apparently) require it
+lib/sh/strtrans.c
+ - ansicstr: use 0x7f as the boundary for characters that translate
+ directly from ASCII to unicode (\u and \U escapes) instead of
+ UCHAR_MAX, since everything >= 0x80 requires more than one byte.
+ Bug and fix from John Kearney <dethrophes@web.de>
-builtins/getopts.def
- - add calls to sh_getopt_restore_state so the state is restored each
- time getopts is called. This protects us against the behavior of
- some mallocs, which causes `nextchar' to be set to garbage in
- getopt.c when a function is called between calls to getopts
+builtins/printf.def
+ - tescape: ditto for printf \u and \U escape sequences
- 1/14
+ 2/20
----
-lib/readline/complete.c
- - if postprocess_matches returns 0 in rl_complete_internal, reset
- completion_changed_buffer to 0 before returning, since nothing
- has been changed
+lib/sh/unicode.c
+ - u32toutf8: fix to handle encodings up to six bytes long correctly
+ (though technically UTF-8 only has characters up to 4 bytes long).
+ Report and fix from John Kearney <dethrophes@web.de>
+ - u32toutf8: first argument is now an unsigned 32-bit quantity,
+ changed callers (u32cconv) to pass c instead of wc
+ - u32reset: new function, resets local static state to uninitialized
+ (locale information, currently)
- 1/20
+locale.c
+ - call u32reset whenever LC_CTYPE/LC_ALL/LANG is changed to reset the
+ cached locale information used by u32cconv. From a report from
+ John Kearney <dethrophes@web.de>
+
+ 2/21
----
-subst.c
- - fixed pat_subst so that null patterns with a `#' specifier prefix
- the string to be substituted on with the replacement, and null
- patterns with a `%' specifier append the replacement to the string
- to be substituted on
+doc/{bash,builtins}.1
+ - minor changes from Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
-doc/{bash.1,bashref.texi}
- - corrected a small error in the description of parameter pattern
- substitution
+lib/sh/unicode.c
+ - u32cconv: only assume you can directly call wctomb on the passed
+ value if __STDC_ISO_10646__ is defined and the value is <=
+ 0x7fffffff
+ - stub_charset: return locale as default instead of "ASCII", let
+ rest of code decide what to do with it
+
+lib/readline/parens.c
+ - _rl_enable_paren_matching: make paren matching work in vi insert
+ mode. Bug report from <derflob@derflob.de>
-support/mksignames.c
- - SIGINFO means something else on sequent systems
+ 2/22
+ ----
+lib/sh/shquote.c
+ - sh_backslash_quote: quote tilde in places where it would be
+ expanded. From a report from John Kearney <dethrophes@web.de>
- 1/26
+ 2/23
----
execute_cmd.c
- - fix to execute_simple_command to keep a child process from getting
- a bad value of last_asynchronous_pid when the shell forks early
+ - execute_pipeline: wrap the discard_unwind_frame call in #ifdef
+ JOB_CONTROL, since the frame is only created if JOB_CONTROL is
+ defined. Bug and fix from Doug Kehn <rdkehn@yahoo.com>
- 2/1
+ 2/25
+ ----
+error.c
+ - report_error: make sure last_command_exit_value is non-zero before
+ we call exit_shell, since the exit trap may reference it. Call
+ exit_shell with last_command_exit_value to allow exit statuses
+ other than 1
+
+unicode.c
+ - stub_charset: use local static buffer to hold charset, don't change
+ value returned by get_locale_var. Based on idea and code from
+ John Kearney <dethrophes@web.de>
+ - u32toutf16: function to convert unsigned 32-bit value (unicode) to
+ UTF-16. From John Kearney <dethrophes@web.de>
+ - u32cconv: call u32toutf16 if __STDC_ISO_10646__ defined and wchar_t
+ is two bytes, send result to wcstombs, return if not encoding error.
+ From John Kearney <dethrophes@web.de>
+ - u32cconv: return UTF-8 conversion if iconv conversion to local
+ charset is unsupported
+
+ 3/2
---
-Makefile.in
- - changed RELSTATUS to `beta2'
+lib/readline/complete.c
+ - print_filename: if there is no directory hook, but there is a stat
+ hook, and we want to append a slash to directories, call the stat
+ hook before calling path_isdir on the expanded directory name.
+ Report and pointer to fix from Steve Rago <sar@nec-labs.com>
- 2/2
+ 3/3
---
-[bash-2.03-beta2 released]
+builtins/evalstring.c
+ - parse_and_execute: fix to change of 2/18: make sure the file
+ descriptor being redirected to is 0 before calling cat_file when
+ we see something like $(< file). Real fix for bug reported by
+ Dan Douglas <ormaaj@gmail.com>
- 2/3
+subst.c
+ - parameter_brace_patsub: run the replacement string through quote
+ removal even if the expansion is within double quotes, because
+ the parser and string extract functions treat the quotes and
+ backslashes as special. If they're treated as special, quote
+ removal should remove them (this is the Posix position and
+ compatible with ksh93). THIS IS NOT BACKWARDS COMPATIBLE.
+
+ 3/4
---
-tests/{cprint.{tests,right},run-cprint}
- - new test to exercise the command printing and copying code --
- hopefully this will avoid things like the `conditional commands
- in functions make the shell abort' problem
+lib/readline/complete.c
+ - rl_menu_complete: fix to make show-all-if-ambiguous and
+ menu-complete-display-prefix work together if both are set. Fix
+ from Sami Pietila <sami.pietila@gmail.com>
- 2/4
+ 3/5
---
-version.c
- - if MACHTYPE is not defined, use CONF_MACHTYPE if it's defined
+bashline.c
+ - dircomplete_expand_relpath: new variable, if non-zero, means that
+ `shopt -s direxpand' should expand relative pathnames. Zero by
+ default, not user-settable yet
+ - bash_directory_completion_hook: if we have a relative pathname that
+ isn't changed by canonicalization or spell checking after being
+ appended to $PWD, then don't change what the user typed. Controlled
+ by dircomplete_expand_relpath
- 2/5
+ 3/7
---
-builtins/read.def
- - if READLINE is defined, we need an extra pair of braces around
- the `while' loop that reads from fd 0 if the -e option is
- supplied, otherwise the code erroneously tests the value of
- `retval', which is not set when using readline
+m4/timespec.m4
+ - new macros, cribbed from gnulib and coreutils: find out whether we
+ have `struct timespec' and what file includes it
+
+m4/stat-time.m4
+ - new macros, cribbed from gnulib and coreutils: find out whether the
+ mtime/atime/ctime/etctime fields of struct stat are of type
+ struct timespec, and what the name is
+
+include/stat-time.h
+ - new file, cribbed from gnulib, with additions from coreutils: include
+ the right file to get the struct timespec define, or provide our own
+ replacement. Provides a bunch of inline functions to turn the
+ appropriate members of struct stat into `struct timespec' values,
+ zeroing out the tv_nsec field if necessary
- 2/15
- ----
-builtins/fc.def
- - make sure that fc closes `stream' before calling fc_execute_file
+test.c
+ - include "stat-time.h" for the nanosecond timestamp resolution stuff
+ - stat_mtime: new function, returns struct stat and the mod time
+ normalized into a `struct timespec' for the filename passed as the
+ first argument
+ - filecomp: call stat_mtime instead of sh_stat for each filename
+ argument to get the mtime as a struct timespec
+ - filecomp: call timespec_cmp instead of using a straight arithmetic
+ comparison for the -nt and -ot operators, using timespec returned by
+ stat_mtime. Added functionality requested by by Werner Fink
+ <werner@suse.de> for systems that can support it
- 2/17
+ 3/10
----
-builtins/fc.def
- - don't bother opening and closing the file of commands before
- calling fc_execute_file, since parse_and_execute will write the
- commands to the history file for us
+include/posixdir.h
+ - REAL_DIR_ENTRY: remove dependency on _POSIX_SOURCE, only use feature
+ test macros to decide whether dirent.d_ino is present and usable;
+ define D_INO_AVAILABLE. Report and fix from Fabrizion Gennari
+ <fabrizio.ge@tiscali.it>
+ - D_FILENO_AVAILABLE: define if we can use dirent.d_fileno
-Makefile.in
- - changed release status to `release'
+lib/sh/getcwd.c
+ - use D_FILENO_AVAILABLE to decide whether or not to compile in
+ _path_checkino and whether or not to call it. Report and initial
+ fix from Fabrizion Gennari <fabrizio.ge@tiscali.it>
- 2/18
- ----
-parse.y
- - change to special_case_tokens so that `time' is not recognized
- as a reserved word while the parser is parsing a case statement
- pattern list (if `time' is the first pattern, the last read
- token will be newline, which time_command_acceptable says is OK
- to start a pipeline)
+lib/readline/signals.c
+ - make sure all occurrences of SIGWINCH are protected by #ifdef
-pathexp.c
- - some changes to the POSIX_GLOB_LIBRARY code (often unused)
+sig.c
+ - make sure all occurrences of SIGCHLD are protected by #ifdef
-shell.c
- - a couple of changes for Interix (nee OPENNT)
- - added code that handles systems without a third argument to main();
- initializing `env' from `environ', conditionalized on a cpp define
- NO_MAIN_ENV_ARG
+nojobs.c
+ - make sure SA_RESTART is defined to 0 if the OS doesn't define it
-configure.in, config.h.in
- - check for the presence of sbrk(2); define HAVE_SBRK if found
+version.c
+ - show_shell_version: don't use string literals in printf, use %s.
+ Has added benefit of removing newline from string to be translated
+
+trap.c
+ - queue_sigchld_trap: new function, increments the number of pending
+ SIGCHLD signals by the argument, which is by convention the number
+ of children reaped in a call to waitchld()
+
+trap.h
+ - queue_sigchld_trap: new extern declaration
-xmalloc.c
- - don't do the space allocated computation when malloc or realloc
- fails if HAVE_SBRK is not defined
+jobs.c
+ - waitchld: if called from the SIGCHLD signal handler (sigchld > 0),
+ then call queue_sigchld_trap to avoid running the trap in a signal
+ handler context. Report and original fix from Siddhesh Poyarekar
+ <siddhesh@redhat.com>
+
+lib/sh/unicode.c
+ - u32tocesc: take an unsigned 32-bit quantity and encode it using
+ ISO C99 string notation (\u/\U)
+ - u32cconv: call u32tocesc as a fallback instead of u32cchar
+ - u32cconv: call u32tocesc if iconv cannot convert the character.
+ Maybe do the same thing if iconv_open fails
+ - u32reset: call iconv_close on localconv if u32init == 1
+
+ 3/11
+ ----
+config-top.h
+ - CHECKWINSIZE_DEFAULT: new define, set to initial value of
+ check_window_size (shopt checkwinsize): 0 for off, 1 for on.
+ Default is 0
-configure.in
- - new configure variable, MAKE_SHELL, defaults to /bin/sh
+{jobs,nojobs}.c
+ - check_window_size: default initial value to CHECKWINSIZE_DEFAULT
-Makefile.in,{builtins,doc,support,lib/{glob,malloc,readline,sh,termcap,tilde},examples/loadables}/Makefile.in
- - set SHELL from @MAKE_SHELL@
+ 3/13
+ ----
+doc/bashref.texi
+ - change text referring to the copying restrictions to that
+ recommended by the FSF (no Front-Cover Texts and no Back-Cover
+ Texts)
-lib/posixheaders/posixjmp.h
- - Don't override defines for setjmp and longjmp in <setjmp.h> on
- Internix (nee OPENNT)
+lib/readline/doc/{history,rlman,rluserman}.texi
+ - change text referring to the copying restrictions to that
+ recommended by the FSF (no Front-Cover Texts and no Back-Cover
+ Texts)
-lib/readline/complete.c
- - Interix (OPENNT) doesn't do username completion
+ 3/15
+ ----
+array.c
+ - LASTREF_START: new macro to set the starting position for an array
+ traversal to `lastref' if that's valid, and to the start of the array
+ if not. Used in array_reference, array_insert, array_remove
+ - array_remove: try to be a little smarter with lastref instead of
+ unconditionally invalidating it
-configure.in
- - on Interix/OPENNT ($host_os == interix* or opennt*), add
- -DNO_MAIN_ENV_ARG to LOCAL_CFLAGS
- - on Interix/OPENNT, set MAKE_SHELL to $OPENNT_ROOT/bin/sh rather
- than a straight /bin/sh
+ 3/16
+ ----
+array.c
+ - array_insert: fix memory leak by deleting element to be added in the
+ case of an error
-cross-build/opennt.cache
- - a `configure' cache file for Interix/OPENNT; not necessarily
- for cross-compiling, but this is where the other system cache
- files are
+ 3/18
+ ----
+lib/sh/mbschr.c
+ - mbschr: don't call mbrlen unless is_basic is false; devolves to a
+ straight character-by-character run through the string
-[bash-2.03 released]
+ 3/19
+ ----
+stringlib.c
+ - substring: use memcpy instead of strncpy, since we know the length
+ and are going to add our own NUL terminator
- 2/19
+ 3/20
----
-configure.in
- - changed OPENNT_ROOT to INTERIX_ROOT for building on Interix
+subst.c
+ - parameter_brace_expand_rhs: if expand_string_for_rhs returns a quoted
+ null string (a list with one element for which
+ QUOTED_NULL(list->word->word) returns true), return the quoted null
+ and set the flags in the returned word to indicate it. Fixes bug
+ reported by Mark Edgar <medgar123@gmail.com>
-support/config.guess
- - added two stanzas for Interix running on alpha and intel hardware
+lib/sh/tmpfile.c
+ - use random(3) instead of get_random_number to avoid perturbing the
+ random sequence you get using $RANDOM. Bug report and fix from
+ Jurij Mihelic <jurij.mihelic@fri.uni-lj.si>
- 2/22
+ 3/21
----
-config-bot.h
- - if PROMPT_STRING_DECODE is not defined, #undef PPROMPT before
- redefining it, to avoid warning messages
+config-top.h
+ - OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT: define to 1 to optimize
+ sequential indexed array assignment patterns. Defined to 1 by
+ default
-execute_cmd.c
- - set jobs_hack in execute_subshell_builtin_or_function only if
- JOB_CONTROL is defined
+array.c
+ - array_insert: if OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT is defined,
+ start the search at lastref (see change from 3/15)
- 2/24
+ 3/27
----
-trap.c
- - fixed an obscure bug caused by a race condition in run_pending_traps.
- Read the comments in the source code for a full description of the
- problem and solution
+print_cmd.c
+ - debug_print_word_list: new debugging function, prints a word list
+ preceded by an optional string and using a caller-specified
+ separator
- 3/1
+ 4/1
---
-aclocal.m4
- - new test, BASH_STRUCT_TIMEVAL, which tries to compile a code
- fragment that includes <sys/time.h> and <time.h> as appropriate
- and defines HAVE_TIMEVAL if the compile succeeds
+command.h
+ - W_ASSNGLOBAL: new flag, set to indicate declare -g
-configure.in
- - call BASH_STRUCT_TIMEVAL rather than running a pair of
- AC_HEADER_EGREPs on sys/time.h and time.h
+execute_cmd.c
+ - fix_assignment_words: note that we have a -g argument to an assignment
+ builtin and set the W_ASSNGLOBAL flag in the variable word
-lib/readline/histfile.c
- - include "posixstat.h" rather than <sys/stat.h>
- - in history_truncate_file, only try to truncate if the history file
- is a regular file
+subst.c
+ - dump_word_flags: print out W_ASSNGLOBAL if present
+ - do_assignment_internal: only set ASS_MKLOCAL if W_ASSIGNARG is set
+ and W_ASSNGLOBAL is not. Don't want to create a local variable even
+ if variable_context is non-zero if ASSNGLOBAL is set. Fixes bug
+ reported by Bill Gradwohl <bill@ycc.com>
- 3/2
+ 4/7
---
-aclocal.m4
- - changed BASH_STRUCT_TIMEVAL back to using a pair of
- AC_EGREP_HEADERs instead of compiling a program fragment
-
lib/readline/readline.c
- - readline_internal_charloop should cast the first argument to
- _rl_dispatch to `unsigned char' to avoid problems with negative
- array indices on systems where signed chars are the default
-
-lib/readline/kill.c
- - instead of doing a sequence of next_history() calls in
- rl_yank_nth_arg_internal, save and restore the history
- position explicitly after finding the correct entry. This
- attempts to ensure that rl_yank_nth_arg leaves the history
- pointer set to the same position as when it was called.
- Fix from Vasco Pedro <vp@di.fct.unl.pt>
-
- 3/5
- ---
-redir.c
- - broke code that opens file for redirection in do_redirection_internal
- into a separate function: redir_open(path, flags, mode, ri)
-
-general.h
- - changed STREQN so that it evaluates to 1 (strings are equivalent)
- if N == 0, to match the behavior of strncmp
-
-lib/sh/zwrite.c
- - new file, zwrite() from builtins/evalstring.c
+ - _rl_dispatch_subseq: make the `keyseq-timeout' variable apply to
+ ESC processing when in vi mode. After hitting ESC, readline will
+ wait up to _rl_keyseq_timeout*1000 microseconds (if set) for
+ additional input before dispatching on the ESC and switching to
+ command/movement mode. Completes timeout work suggested by
+ <rogerx.oss@gmail.com>; this prompted by report from Barry Downes
+ <barry.downes@gmail.com>
+
+lib/sh/shmbchar.c
+ - sh_mbsnlen: new function, returns the number of (possibly multibyte)
+ characters in a passed string with a passed length, examining at most
+ maxlen (third argument) bytes
-builtins/evalstring.c
- - removed private definition of zwrite
+externs.h
+ - sh_mbsnlen: extern declaration for new function
-builtins/common.c
- - double_quote needs to protect newlines with backslashes as well
- - new function, un_double_quote, to remove backslashes proctecting
- characters that are special in double quotes
+shell.c
+ - exit_shell: call maybe_save_shell_history if remember_on_history is
+ set, not just in interactive shells. That means the history is
+ saved if history is enabled, regardless of whether or not the shell
+ is interactive
-builtins/common.h
- - new extern declaration for un_double_quote
+doc/{bash.1,bashref.texi}
+ - TMOUT: fix description to make it explicit that TMOUT is the timeout
+ period for a complete line of input, not just any input. Fixes
+ problem reported in Ubuntu bug 957303:
+ https://bugs.launchpad.net/ubuntu/+source/bash/+bug/957303
+ - HISTFILE: document change to write history list to history file in
+ any shell with history enabled, not just interactive shells. This
+ seems to be more logical behavior. Suggested by Greg Wooledge
+ <wooledg@eeg.ccf.org>
+
+ 4/12
+ ----
+lib/readline/colors.h
+ - only include stdbool.h if HAVE_STDBOOL_H is defined
+ - if HAVE_STDBOOL_H is not defined, provide enough definition for the
+ library to use `bool', `true', and `false'
+
+lib/readline/parse-colors.[ch]
+ - don't try to include <stdbool.h> at all; rely on colors.h to do it
+
+lib/sh/snprintf.c
+ - vsnprintf_internal: only treat '0' as a flag to indicate zero padding
+ if `.' hasn't been encountered ((flags&PF_DOT) == 0); otherwise treat
+ it as the first digit of a precision specifier. Fixes bug reported
+ by Petr Sumbera <petr.sumbera@sun.com>
-parse.y
- - changed read_token_word to requote the expanded value of $'...'
- using single_quote
- - added a new flag to parse_matched_pair: P_ALLOWESC. It allows
- backslashes to quote embedded single quotes, and is used by
- the $'...' translation code for better ksh93-compatibility
- - changed localeexpand to call mk_msgstr on the string passed
- before displaying it if all we're doing is displaying translatable
- strings in `po' format. mk_msgstr quotes backslashes and double
- quotes in the string passed with backslashes, and encloses the
- result in double quotes. If only -D is supplied, the string is
- not changed at all -- this is what ksh93 does
+ 4/15
+ ----
+lib/sh/snprintf.c
+ - vsnprintf_internal: if the '0' and '-' flags both occur, the '0'
+ flag is ignored -- Posix. Start of a series of fixes based on
+ tests and patches from Petr Sumbera <petr.sumbera@sun.com>
+ - PUT_PLUS: make sure PF_PLUS flag is specified before putting the `+'
+ - vsnprintf_internal: when '+' is read as a flag, don't set right-
+ justify flag if the LADJUST (`-') flag has already been supplied
+ - floating: make sure to output space padding before the `+', zero
+ padding after
+ - exponent: make sure to output space padding before the `+', zero
+ padding after
+ - exponent: only subtract one from the width for the decimal point
+ if we're really going to print one
+ - floating: use presence of PF_PLUS flag to decide whether to account
+ for the `+' in the padded field width. Ditto for exponent()
-lib/readline/rlconf.h
- - removed PAREN_MATCHING #define, paren matching is always compiled
- into readline
+ 4/16
+ ----
+lib/sh/snprintf.c
+ - vsnprint_internal: only reduce precision by 1 when processing the `g'
+ format if it's > 0. A precision of 0 should stay 0; otherwise it
+ gets set to -1 (NOT_FOUND) and converted to the default
+ - number, lnumber: if an explicit precision is supplied, turn off the
+ zero-padding flag and set the pad character back to space
+ - number, lnumber: only account for a `+' when performing the field
+ width calculation if the coversion is base 10; we don't add a `+'
+ for other bases
-lib/readline/parens.c
- - removed code that was active if PAREN_MATCHING was not defined
- - added _rl_enable_paren_matching, which is called when the readline
- variable `blink-matching-paren' is assigned a value and changes
- the appropriate key bindings in emacs_standard_keymap
+ 4/18
+ ----
+tests/printf3.sub
+ - try using "perl -e 'print time'" to get the current time in seconds
+ since the epoch if "date +%s" is not available (solaris 8-10)
-lib/readline/bind.c
- - no more PAREN_MATCHING defines, `blink-matching-paren' is always
- available
- - if `blink-matching-paren' is assigned a value, call
- _rl_enable_paren_matching (rl_blink_matching_paren)
+ 4/19
+ ----
+tests/run-printf
+ - use cat -v instead of relying on diff -a being available to convert
+ control characters to ascii and avoid the dreaded "Binary files
+ /tmp/xx and printf.right differ"
-lib/readline/emacs_keymap.c
- - removed PAREN_MATCHING defines; the default key bindings for
- ), ], and } are self-insert
+ 4/20
+ ----
+lib/sh/strftime.c
+ - incoporated new version from Aharon Robbins <arnold@skeeve.com>
- 3/7
- ---
-stringlib.c
- - added an extra argument to ansicstr so that `echo -e' will not
- convert \' to '
+ 4/22
+ ----
+doc/{bash.1,bashref.texi}
+ - slight change to the description of /dev/tcp and /dev/udp
-externs.h
- - changed extern declaration for ansicstr
+subst.c
+ - match_wpattern: logic fix to the calculation of `simple' (was |=,
+ needs to be &=). Bug report from Mike Frysinger <vapier@gentoo.org>,
+ fix from Andreas Schwab <schwab@linux-m68k.org>
-parse.y, builtins/{echo,printf}.def
- - changed calls to ansicstr() appropriately
+bashline.c
+ - bash_filename_stat_hook: add code from bash_directory_completion_hook
+ that performs pathname canonicalization in the same way that cd and
+ other builtins will do
-eval.c
- - in parse_string_to_word_list, if an unexpected token is encountered
- that causes the string to not parse to a simple command, or to
- completely consume the string, display an error message and jump
- back to the top level after restoring the parsing environment,
- returning an error status from the attempted assignment
+ 4/25
+ ----
+execute_cmd.c
+ - execute_pipeline: change the call to move_to_high_fd to make it use
+ getdtablesize() and to not stomp on existing open file descriptors,
+ like the fd the shell is using to read a script. Bug report from
+ Greg Wooledge <wooledg@eeg.ccf.org>
- 3/8
+ 5/6
---
-lib/glob/fnmatch.c
- - fixed patscan and extmatch to handle embedded [...](...) patterns
- better
-
-tests/{extglob2.{tests,right},run-extglob2}
- - an additional set of ksh extended globbing tests, cribbed from zsh
+subst.c
+ - expand_word_internal: case '$': after calling param_expand and
+ setting had_quoted_null, set TEMP to null. The code that builds the
+ returned string at the end of the function will take care of making
+ and returning a quoted null string if there's nothing else in
+ ISTRING. If there is, the quoted null should just go away. Part of
+ fix for bug reported by Ruediger Kuhlmann <RKuhlmann@orga-systems.com>
+ - expand_word_internal: when processing ISTRING to build return value,
+ only set W_HASQUOTEDNULL in the returned word flags if the word is
+ a quoted null string AND had_quoted_null is set. Rest of fix
+
+ 5/9
+ ---
+variables.c
+ - bind_variable_internal: if we get an array variable here (implicit
+ assignment to index 0), call make_array_variable_value, which
+ dummies up a fake SHELL_VAR * from array[0]. This matters when
+ we're appending and have to use the current value
+ - bind_variable_internal: after computing the new value, treat assoc
+ variables with higher precedence than simple array variables; it
+ might be that a variable has both attributes set
+
+arrayfunc.c
+ - bind_array_var_internal: break code out that handles creating the
+ new value to be assigned to an array variable index into a new
+ function, make_array_variable_value. This handles creating a
+ dummy SHELL_VAR * for implicit array[0] assignment. Fixes bug
+ reported by Dan Douglas <ormaaj@gmail.com>
+
+arrayfunc.h
+ - make_array_variable_value: new extern declaration
- 3/10
+ 5/19
----
-general.c
- - changed unset_nodelay_mode slightly to make sure it handles both
- O_NDELAY and O_NONBLOCK if they have different values; it now
- returns a value of 0 on success (or no action); -1 on failure
-
-general.h
- - changed extern declaration for unset_nodelay_mode
-
+variables.c
+ - bind_int_variable: if an assignment statement like x=y comes in
+ from the expression evaluator, and x is an array, handle it like
+ x[0]=y. Fixes bug reported by Dan Douglas <ormaaj@gmail.com>
-lib/readline/shell.c
- - new function: unset_nodelay_mode; identical to definition in
- general.c
+ 5/24
+ ----
-lib/readline/input.c
- - changed rl_getc to call unset_nodelay_mode if the read fails with
- errno == EWOULDBLOCK || errno == EAGAIN
+braces.c
+ - mkseq: handle possible overflow and break the sequence generating
+ loop if it occurs. Fixes OpenSUSE bug 763591:
+ https://bugzilla.novell.com/show_bug.cgi?id=763591
- 3/11
+ 5/25
----
-lib/termcap/termcap.c
- - minor changes from termutils-2.0
- - minor change to MS-DOS version of valid_filename_p so MS-DOS-specific
- code from tgetent() can be removed (from Michel@smr.nl)
-
-lib/readline/bind.c
- - in _rl_read_file, null-terminate the buffer at the number of
- characters actually read, not what stat() says the file size is
- - use ~/_inputrc as a last-ditch inputrc filename on MS-DOS
+Makefile.in
+ - LDFLAGS_FOR_BUILD: add to compilation recipes for build tools
+ buildversion, mksignames, mksyntax
+ - LDFLAGS_FOR_BUILD: add to compilation recipes for test tools
+ recho, zecho, printenv, xcase
-lib/readline/complete.c
- - change printable_part to handle MS-DOS `drive-letter:' pathname
- prefixes
- - removed __GO32__ code, since it's for DJGPP 1.x, which is not
- supported any more, and they don't work for DJGPP 2.x
- - added code to support MS-DOS drive letter prefixes and //X/...
- to filename_completion_function
- - _rl_completion_case_fold defaults to 1 on MS-DOS
+builtins/Makefile.in
+ - LDFLAGS_FOR_BUILD: add to compilation recipes for build tools
+ gen-helpfiles, psize.aux
-lib/readline/{display,input,readline,rltty,signals,terminal}.c
- - removed __GO32__ code
+variables.c
+ - bind_int_variable: if LHS is a simple variable name without an array
+ reference, but resolves to an array variable, call
+ bind_array_variable with index 0 to make x=1 equivalent to x[0]=1.
+ Fixes bug reported by Dan Douglas <ormaaj@gmail.com>
-lib/readline/histfile.c
- - make read_history_range and history_truncate_file work with the
- actual number of characters read from the file, not the file size
- as reported by stat()
+ 5/27
+ ----
+subst.c
+ - expand_word_internal: make sure has_dollar_at doesn't get reset before
+ recursive calls to param_expand or expand_word_internal, since it has
+ to save state of what came before. Use temp variable and make sure
+ has_dollar_at is incremented if recursive call processes "$@".
+ Fixes bug reported by gregrwm <backuppc-users@whitleymott.net> and
+ supplemented by Dan Douglas <ormaaj@gmail.com>
-lib/readline/readline.c
- - change bind_arrow_keys_internal to bind MS-DOS arrow keys to the
- appropriate functions if __MSDOS__ is defined
+doc/{bash.1,bashref.texi}
+ - changes to the description of substring expansion inspired by
+ suggestions from Bill Gradwohl <bill@ycc.com>
-lib/readline/rltty.c
- - make sure set_winsize is always defined, with a null body if
- TIOCGWINSZ is not defined
+doc/bashref.texi
+ - added substring expansion examples inspired by suggestions from
+ Bill Gradwohl <bill@ycc.com>
-lib/readline/shell.c
- - include <stdio.h>, since this file uses sprintf
+variables.c
+ - find_shell_variable: search for a variable in the list of shell
+ contexts, ignore the temporary environment
+ - find_variable_tempenv: search for a variable in the list of shell
+ contexts, force search of the temporary environment
+ - find_variable_notempenv: search for a variable in the list of shell
+ contexts, don't force search of the temporary environment
-support/shobj-conf
- - MS-DOS does not support shared objects
+variables.h
+ - find_shell_variable: extern declaration
+ - find_variable_tempenv: extern declaration
+ - find_variable_notempenv: extern declaration
-lib/tilde/tilde.c
- - change tilde_find_suffix and isolate_tilde_prefix to understand
- backslash as a pathname separator on MS-DOS
+arrayfunc.c
+ - bind_array_variable: call find_shell_variable instead of calling
+ var_lookup directly
- 3/12
- ----
-lib/readline/{bind,readline,terminal}.c
- - no longer need to include <signal.h>
+findcmd.c
+ - search_for_command: call find_variable_tempenv instead of
+ find_variable_internal directly
+ - _find_user_command_internal: call find_variable_tempenv instead of
+ find_variable_internal directly
-lib/readline/terminal.c
- - don't need to include <setjmp.h>
+builtins/setattr.def
+ - set_var_attribute: call find_variable_notempenv instead of
+ find_variable_internal directly
+ - show_name_attributes: call find_variable_tempenv instead of
+ find_variable_internal directly
-builtins/history.def
- - broke the code than handles deleting a particular history entry
- from the history list out into a separate function: delete_histent
- - added `-d offset' option to delete the history entry at position
- OFFSET, as displayed when the history is listed
+ 6/1
+ ---
+sig.c
+ - termsig_handler: don't try to save the shell history on a terminating
+ signal any more, since it just causes too many problems on Linux
+ systems using glibc and glibc malloc
-jobs.c, nojobs.c
- - new function, count_all_jobs(), returns the number of active jobs
- in the jobs list
+lib/readline/vi_mode.c
+ - rl_vi_change_to: change to correctly redo `cc', since `c' is not a vi
+ motion character. From Red Hat bug 813289
+ - rl_vi_delete_to: change to correctly redo `dd', since `d' is not a vi
+ motion character
+ - rl_vi_yank_to: change to correctly redo `yy', since `y' is not a vi
+ motion character
+
+ 6/4
+ ---
+lib/sh/mktime.c
+ - current versions of VMS do not need to include <stddef.h>. Fix from
+ John E. Malmberg <wb8tyw@qsl.net>
-jobs.h
- - extern declaration for count_all_jobs()
+ 6/5
+ ---
+lib/sh/eaccess.c
+ - sh_stat: instead of using a static buffer to do the DEV_FD_PREFIX
+ translation, use a dynamically-allocated buffer that we keep
+ resizing. Fixes potential security hole reported by David Leverton
+ <levertond@googlemail.com>
-configure.in
- - check for C library function ttyname()
+ 6/5
+ ---
+braces.c
+ - expand_seqterm: check errno == ERANGE after calling strtoimax for
+ rhs and incr. Part of a set of fixes from Scott McMillan
+ <scotty.mcmillan@gmail.com>
+ - expand_seqterm: incr now of type `intmax_t', which changes
+ arguments to mkseq
+ - mkseq: a better fix for detecting overflow and underflow since it's
+ undefined in C and compilers `optimize' out overflow checks. Uses
+ ADDOVERFLOW and SUBOVERFLOW macros
+ - mkseq: use sh_imaxabs (new macro) instead of abs() for intmax_t
+ variables
+ - mkseq: don't allow incr to be converted to -INTMAX_MIN
+ - mkseq: make sure that strvec_create isn't called with a size argument
+ greater than INT_MAX, since it only takes an int
-config.h.in
- - define HAVE_TTYNAME if configure finds ttyname(3)
+ 6/6
+ ---
+braces.c
+ - mkseq: try and be smarter about not overallocating elements in
+ the return array if the increment is not 1 or -1
+ 6/7
+ ---
parse.y
- - two new escape sequences for decode_prompt_string:
-
- \j number of active jobs in jobs list
- \l basename of shell's tty device name
-
-doc/{bash.1,bashref.texi}, lib/readline/doc/hsuser.texi
- - documented new `history -d' option
- - documented new \j and \l prompt string expansion sequences
-
-lib/readline/bind.c
- - new static state variable, currently_reading_init_file, set to
- 1 while _rl_read_init_file is operating on a file
- - changed _rl_init_file_error to include the name and line number
- from the init file only if currently_reading_init_file is non-zero
- (this is needed since applications like bash can call
- rl_parse_and_bind, and error messages from those calls would be
- misleading if they referred to the last inputrc file read
+ - history_delimiting_chars: if the parser says we're in the middle of
+ a compound assignment (PST_COMPASSIGN), just return a space to avoid
+ adding a stray semicolon to the history entry. Fixes bug reported
+ by "Davide Brini" <dave_br@gmx.com>
+ 6/8
+ ---
bashline.c
- - support for a `extended command keymap', which will allow
- readline key sequences to be bound to unix commands using an
- auxiliary keymap and a special function that knows how to execute
- commands from it
- - bind_keyseq_to_unix_command supports `bind -x'
- - bash_execute_unix_command is the readline callback that looks in
- an auxiliary keymap to find the shell command to execute for a
- particular key sequence
- - new variable, no_empty_command_completion, which suppresses $PATH
- searching for command completion when TAB is typed on an empty
- line
+ - bash_directory_completion_hook: don't attempt spelling correction
+ on the directory name unless the direxpand option is set and we are
+ going to replace the directory name with the corrected one in the
+ readline line. Suggested by Linda Walsh <bash@tlinx.org>
-bashline.h
- - extern declaration for new function bind_keyseq_to_unix_command
+lib/sh/shquote.c
+ - sh_backslash_quote: now takes a third argument: flags. If non-zero,
+ tildes are not backslash-escaped. Have to handle both printf %q,
+ where they should be escaped, and filename completion, where they
+ should not when used as usernames
-builtins/bind.def
- - added `-x' option to bind a key sequence to a shell command
+externs.h
+ - sh_backslash_quote: declaration now takes a third argument
-builtins/help.def
- - added `-s' option to just print a builtin's short_doc
+builtins/printf.def
+ - printf_builtin: call sh_backslash_quote with 1 as third argument
+ so tildes get escaped
-builtins/shopt.def
- - added new shell option, no_empty_cmd_completion', mirroring value
- of no_empty_command_completion
+{bashline,bracecomp}.c
+ - call sh_backslash_quote with 0 as third argument so tildes are not
+ escaped in completed words
-doc/{bash.1,bashref.texi}
- - documented new `bind -x' option
- - documented new shopt `no_empty_cmd_completion' option
- - documented new `help -s' option
+doc/bash.1
+ - add `coproc' to the list of reserved words. From a report by
+ Jens Schweikhardt <schweikh@schweikhardt.net>
-Makefile.in
- - changed RELSTATUS to `devel'
+ 6/10
+ ----
+execute_cmd.c
+ - line_number_for_err_trap: now global, so parse_and_execute can save
+ and restore it with unwind-protect
-_distribution
- - changed to `2.04'
+builtins/evalstring.c
+ - parse_prologue: save and restore line_number_for_err_trap along
+ with line_number
+ - restore_lastcom: new function, unwind-protect to restore
+ the_printed_command_except_trap
+ - parse_prologue: use restore_lastcom to save and restore the value
+ of the_printed_command_except_trap around calls to parse_and_execute
+ (eval/source/.)
- 3/15
+ 6/15
----
-support/shobj-conf
- - add `-h $@' to linking options on Solaris 2 with gcc
-
-expr.c
- - changes to add {pre,post}-{inc,dec}rement operators (++id, --id,
- id++, id--). These are somewhat more liberal than ksh93, and
- may require more strict syntax checking down the line
+lib/readline/complete.c
+ - complete_fncmp: change filename comparison code to understand
+ multibyte characters, even when doing case-sensitive or case-mapping
+ comparisons. Fixes problem reported by Nikolay Shirokovskiy
+ <nshyrokovskiy@gmail.com>
-tests/arith.{tests,right}
- - additional tests for {pre,post}-{inc,dec}rement operators
+ 6/20
+ ----
+builtins/mapfile.def
+ - mapfile: move the line count increment and check for having read
+ the specified number of lines to the end of the loop to avoid
+ reading an additional line with zgetline. Fixes bug reported by
+ Dan Douglas <ormaaj@gmail.com>
- 3/16
+ 6/21
----
-command.h
- - structures and types for ksh-93-style arithmetic `for' command
-configure.in
- - new `--enable-arith-for-command' option to compile arithmetic for
- command code into the shell
+execute_cmd.c
+ - execute_pipeline: make sure `lastpipe_flag' is initialized to 0 on
+ all systems, since it's tested later in the function. Fixes bug
+ reported by John E. Malmberg <wb8tyw@qsl.net>
-config.h.in
- - new define, ARITH_FOR_COMMAND, turned on by configure
+ 6/22
+ ----
+mailcheck.c
+ - file_mod_date_changed: return 0 right away if mailstat() does not
+ return success. Fixes bug with using uninitialized values reported
+ by szymon.kalasz@uj.edu.pl
-parse.y
- - changed read_token_word to parse a set of arithmetic for expressions
- between (( and )) as long as the last token read before the `(('
- was FOR
- - added grammar rules to build arithmetic for commands
+builtins/set.def
+ - the `monitor' option is not available when the shell is compiled
+ without job control, since the underlying `m' flag is not available
-make_cmd.c
- - functions to parse (( ... )) into the three sub-expressions needed
- for the arithmetic for command and create the command structures
- (done this way instead of in the grammar rules to avoid forcing
- users to quote special characters between the (( and )) )
+nojobs.c
+ - job_control: now declared as int variable, initialized to 0, never
+ modified
-make_cmd.h
- - extern declaration for make_arith_for_command
+jobs.h
+ - job_control: extern declaration no longer dependent on JOB_CONTROL
-copy_cmd.c
- - code to copy arithmetic for commands
+execute_cmd.c
+ - execute_pipeline: made necessary changes so `lastpipe' shell option
+ is now available in all shells, even those compiled without
+ JOB_CONTROL defined
-dispose_cmd.c
- - code to dispose of arithmetic for commands
+ 6/23
+ ----
+lib/glob/glob.c
+ - glob_filename: check for interrupts before returning if glob_vector
+ returns NULL or an error. Bug reported by Serge van den Boom
+ <svdb@stack.nl>, fix from Andreas Schwab <schwab@linux-m68k.org>
+ - call run_pending_traps after each call to QUIT or test of
+ interrupt_state, like we do in mainline shell code
+ - glob_vector: don't call QUIT; in `if (lose)' code block; just free
+ memory, return NULL, and let callers deal with interrupt_state or
+ other signals and traps
-print_cmd.c
- - code to print arithmetic for commands
+ 6/25
+ ----
+lib/readline/input.c
+ - rl_read_key: restructure the loop that calls the event hook a little,
+ so that the hook is called only after rl_gather_tyi returns no input,
+ and any pending input is returned first. This results in better
+ efficiency for processing pending input without calling the hook
+ on every input character as bash-4.1 did. From a report from
+ Max Horn <max@quendi.de>
-execute_cmd.c
- - code to execute arithmetic for commands and note that they are
- shell control structures for the piping code
+ 6/26
+ ----
+trap.c
+ - signal_is_pending: return TRUE if SIG argument has been received and
+ a trap is waiting to execute
-doc/{bash.1,bashref.texi}
- - documented new arithmetic for command
+trap.h
+ - signal_is_pending: extern declaration
-doc/bashref.texi
- - documented new configure --enable-arith-for-command option
+lib/glob/glob.c
+ - glob_vector: check for pending SIGINT trap each time through the loop,
+ just like we check for interrupt_state or terminating_signal, and
+ set `lose = 1' so we clean up after ourselves and interrupt the
+ operation before running the trap. This may require a change later,
+ maybe call run_pending_traps and do that if run_pending_traps returns?
+
+variables.c
+ - sv_histtimefmt: set history_comment_character to default (`#') if
+ it's 0 when we're turning on history timestamps. The history code
+ uses the history comment character to prefix timestamps, and
+ leaving it at 0 effectively removes them from the history. From a
+ report to help-bash by Dennis Williamson <dennistwilliamson@gmail.com>
- 3/17
+ 6/27
----
-builtins/read.def
- - added `-t timeout' option and code to support it
+lib/readline/signals.c
+ - rl_maybe_restore_sighandler: new function, sets handler for SIG to
+ HANDLER->sa_handler only if it's not SIG_IGN. Needs to be called
+ on same signals set using rl_maybe_set_sighandler, which does not
+ override an existing SIG_IGN handler (SIGALRM is ok since it does
+ the check inline; doesn't mess with SIGWINCH)
- 3/18
+ 6/30
----
-examples/loadables/Makefile.in
- - various clean targets need to descend into perl
+variables.h
+ - additional defines for the new `nameref' variable attribute
+ (att_nameref): nameref_p, nameref_cell, var_setref
-examples/loadables/perl/Makefile.in
- - added mostlyclean and maintainer-clean targets
+variables.c
+ - find_variable_nameref: resolve SHELL_VAR V through chain of namerefs
+ - find_variable_last_nameref: resolve variable NAME until last in a
+ chain of possibly more than one nameref starting at shell_variables
+ - find_global_variable_last_nameref: resolve variable NAME until last
+ in a chain of possibly more than one nameref starting at
+ global_variables
+ - find_nameref_at_context: resolve SHELL_VAR V through chain of namerefs
+ in a specific variable context (usually a local variable hash table)
+ - find_variable_nameref_context: resolve SHELL_VAR V through chain of
+ namerefs following a chain of varible contexts
+ - find_variable_last_nameref_context: resolve SHELL_VAR V as in
+ find_variable_last_context, but return the final nameref instead of
+ what the final nameref resolves to
+ - find_variable_tempenv, find_variable_notempenv, find_global_variable,
+ find_shell_variable, find_variable: modified to follow namerefs
+ - find_global_variable_noref: look up a global variable without following
+ any namerefs
+ - find_variable_noref: look up a shell variable without following any
+ namerefs
+ - bind_variable_internal: modify to follow a chain of namerefs in the
+ global variables table; change to handle assignments to a nameref by
+ following nameref chain
+ - bind_variable: modify to follow chain of namerefs when binding to a
+ local variable
+ - unbind_variable: changes to unset nameref variables (unsets both
+ nameref and variable it resolves to)
-include
- - new directory, with files from lib/posixheaders
+subst.c
+ - parameter_brace_expand_word: change to handle expanding nameref whose
+ value is x[n]
+ - parameter_brace_expand_indir: change to expand in ksh93-compatible
+ way if variable to be indirected is nameref and a simple (non-array)
+ expansion
+ - param_expand: change to expand $foo where foo is a nameref whose value
+ is x[n]
-lib/posixheaders
- - removed
+execute_cmd.c
+ - execute_for_command: changes to implement ksh93 semantics when index
+ variable is a nameref
-{posixwait,unionwait,maxpath}.h
- - moved from top src directory to include subdir
+builtins/setattr.def
+ - show_var_attributes: change to add `n' to flags list if att_nameref
+ is set
-Makefile.in,builtins/Makefile.in,lib/{glob,malloc,sh,tilde}/Makefile.in
- - updated dependencies and file lists for new include directory
- - added BASHINCDIR variable, added -I${BASHINCDIR} to cc's include path
+builtins/set.def
+ - unset_builtin: changes to error messages to follow nameref variables
-MANIFEST,support/SYMLINKS
- - updated for new include directory
+builtins/declare.def
+ - document new -n option
+ - declare_internal: new `-n' and `+n' options
+ - declare_internal: handle declare -n var[=value] and
+ declare +n var[=value] for existing and non-existant variables.
+ Enforce restriction that nameref variables cannot be arrays.
+ Implement semi-peculiar ksh93 semantics for typeset +n ref=value
+
+ 7/5
+ ---
+variables.c
+ - unbind_variable: unset whatever a nameref resolves to, leaving the
+ nameref variable itself alone
+ - unbind_nameref: new function, unsets a nameref variable, not the
+ variable it references
-lib/readline/{ansi_stdlib,posixdir,posixjmp,posixstat,rlstdc}.h
- - changed symlinks to point to ../../include rather than
- ../posixheaders
+variables.h
+ - unbind_nameref: extern declaration
-builtins/common.h
- - changed `#include "../stdc.h"' to `#include "stdc.h"'
+builtins/set.def
+ - unset_builtin: modify to add -n option, which calls unbind_nameref
+ leaving unbind_variable for the usual case. This required slight
+ changes and additions to the test suite
-builtins/{cd,exec,fc,history,pushd,source,type,umask,printf}.def
-builtins/{mkbuiltins,common,evalfile,evalstring,getopt}.c
- - changed include specifications:
- ../posixstat.h -> posixstat.h
- ../filecntl.h -> filecntl.h
- ../maxpath.h -> maxpath.h
- ../memalloc.h -> memalloc.h
+doc/{bash.1,bashref.texi}
+ - document namerefs and typeset/declare/local/unset -n
-include/shtty.h
- - new file, contents of bashtty.h and code from jobs.c that includes
- the appropriate terminal file
+ 7/13
+ ----
+lib/sh/casemod.c
+ - include shmbchar.h for is_basic and supporting pieces
+ - sh_casemod: use _to_wupper and _to_wlower to convert wide character
+ case instead of TOUPPER and TOLOWER. Fixes bug reported by
+ Dennis Williamson <dennistwilliamson@gmail.com>, fix from
+ Andreas Schwab <schwab@linux-m68k.org>
+ - cval: short-circuit and return ascii value if is_basic tests true
+ - sh_casemod: short-circuit and use non-multibyte case modification
+ and toggling code if is_basic tests true
-lib/sh/shtty.c
- - new file with some tty manipulation utility functions
+lib/readline/signals.c
+ - _rl_{block,release}_sigint: remove the code that actually blocks and
+ releases the signals, since we defer signal handling until calls to
+ RL_CHECK_SIGNALS()
-bashtty.h
- - removed
+lib/readline/{callback,readline,util}.c
+ - if HAVE_POSIX_SIGSETJMP is defined, use sigsetjmp/siglongjmp without
+ saving and restoring the signal mask instead of setjmp/longjmp
-jobs.c, nojobs.c
- - include shtty.h instead of bashty.h and other code that includes
- the correct system-dependent tty include file
+lib/readline/rltty.c
+ - prepare_terminal_settings: don't mess with IXOFF setting if
+ USE_XON_XOFF defined
-lib/sh/Makefile.in
- - added shtty.o as part of libsh.a
+doc/{bash.1,bashref.texi}
+ - add some text to the description of set -e clarifying its effect
+ on shell functions and shell function execution. Suggested by
+ Rainer Blome <rainer.blome@gmx.de>
-MANIFEST
- - added include/shtty.h and lib/sh/shtty.c, removed bashtty.h
+bashline.c
+ - edit_and_execute_command: increment current_command_line_count before
+ adding partial line to command history (for command-oriented-history
+ because of rl_newline at beginning of function), then reset it to 0
+ before adding the dummy history entry to make sure the dummy entry
+ doesn't get added to previous incomplete command. Partial fix for
+ problem reported by Peng Yu <pengyu.ut@gmail.com>
- 3/19
+ 7/24
----
-lib/readline/display.c
- - some more __MSDOS__ code to make readline work better with DJGPP:
- output \r instead of tputs(term_cr, ...)
-
-lib/readline/terminal.c
- - some changes for __DJGPP__ (one is of dubious value -- doesn't
- DJGPP have a termcap library?)
+configure.in
+ - interix: define RECYCLES_PIDS. Based on a report from Michael
+ Haubenwallner <michael.haubenwallner@salomon.at>
- 3/23
+ 7/26
----
-configure.in
- - make sure that the $CC argument to shobj-conf is quoted
+jobs.c
+ - make_child: call bgp_delete on the newly-created pid unconditionally.
+ Some systems reuse pids before cycling through an entire set of
+ CHILD_MAX/_SC_CHILD_MAX unique pids. This is no longer dependent
+ on RECYCLES_PIDS. Based on a report from Michael Haubenwallner
+ <michael.haubenwallner@salomon.at>
support/shobj-conf
- - changes to SGI SHOBJ_LDFLAGS from David Kaelbling <drk@sgi.com>
+ - Mac OS X: drop MACOSX_DEPLOYMENT_TARGET=10.3 from the LDFLAGS. We
+ can finally kill Panther
- 3/24
+ 7/28
----
-lib/sh/zread.c
- - interface to read(2) that restarts automatically if errno == EINTR
+subst.c
+ - command_substitute: make sure last_made_pid gets reset if make_child
+ fails
+
+execute_cmd.c
+ - execute_command_internal: case cm_simple: decide whether or not to
+ wait_for a child if already_making_children is non-zero, indicates
+ that there is an unwaited-for child. More of fix for bug report
+ from Michael Haubenwallner <michael.haubenwallner@salomon.at>
+
+jobs.c
+ - make_child: call delete_old_job (new_pid) unconditionally, don't
+ bother to check whether or not pid wrap occurred. Rest of fix for
+ bug report from Michael Haubenwallner
+ <michael.haubenwallner@salomon.at>
+
+ 7/29
+ ----
+shell.c
+ - subshell_exit: new function, exits the shell (via call to sh_exit())
+ after calling any defined exit trap
externs.h
- - new declarations for functions in lib/sh/{zread,zwrite}.c
+ - subshell_exit: new extern declaration
-lib/sh/Makefile.in, Makefile.in
- - add zread.c, zread.o to appropriate file lists
+execute_cmd.c
+ - execute_command_internal: make sure to call subshell_exit for
+ {} group commands executed asynchronously (&). Part of fix for
+ EXIT trap bug reported by Maarten Billemont <lhunath@lyndir.com>
-{subst,input}.c, builtins/{evalstring.c,read.def}
- - converted some loops around read() to call zread() instead
+sig.c
+ - reset_terminating_signals: make sure to set termsigs_initialized back
+ to 0, so a subsequent call to initialize_terminating_signals works
+ right. Rest of fix for bug reported by Maarten Billemont
+ <lhunath@lyndir.com>
-lib/readline/rltty.h
- - new struct _rl_tty_chars to save tty special characters
+{execute_cmd,general,jobs,mailcheck,mksyntax,test}.c
+builtins/{cd,fc,pushd,ulimit}.def
+lib/malloc/getpagesize.h
+lib/sh/{clktck,fpurge,inet_aton,mailstat,oslib,pathcanon,pathphys,spell,strerror}.c
+ - make inclusion of <sys/param.h> dependent on HAVE_SYS_PARAM_H
+ consistently
+
+ 8/6
+ ---
+lib/readline/histexpand.c
+ - history_expand_internal: now takes an additional argument saying
+ whether the history expansion occurs within a quoted string, set to
+ the open quote character
+ - history_expand_internal: use new argument instead of checking prev
+ char and initializing quoted_search_delimiter, pass qc directly to
+ get_history_event, where it allows a matching quote to terminate a
+ string defining an event
+ - history_expand: change single-quote handling code so that if
+ history_quotes_inhibit_expansion is 0, single quotes are treated
+ like double quotes
+ - history_expand: change call to history_expand_internal to pass new
+ argument of `"' if double-quoted string, `'' if single-quoted string;
+ this lets history_expand decide what is a quoted string and what
+ is not
+
+ 8/7
+ ---
+configure.in
+ - AC_CANONICAL_BUILD: invoke for later use
+
+lib/readline/macro.c
+ - _rl_prev_macro_key: new function, inverse of _rl_next_macro_key:
+ backs up the index into the current macro by 1
+
+lib/readline/rlprivate.h
+ - _rl_prev_macro_key: extern declaration
-lib/readline/rltty.c
- - new function save_tty_chars to save tty special characters
- (currently they're only saved -- nothing looks at them yet)
- - two new internal library functions, _rl_disable_tty_signals ()
- and _rl_restore_tty_signals (), intended to disable tty driver
- signal processing for readline's literal-next code, so users
- can do stuff like ^V^C and have ^C end up in the readline
- buffer even if ^C is the terminal's interrupt character
lib/readline/readline.c
- - changed rl_quoted_insert to disable and restore tty signal
- handling around the call to rl_read_key (), so users can put
- tty special chars into the readline buffer
+ - _rl_dispatch_subseq, _rl_subseq_result: don't call _rl_unget_char
+ if we're currently reading from a macro; call _rl_prev_macro_key
+ instead. Fixes bug reported by Clark Wang <clark.wang@oracle.com>
- 3/25
+ 8/13
----
-expr.c
- - added `,' operator (expr1 , expr2) -- both expr1 and expr2 are
- evaluated and the return value is the value of expr2. Precedence
- is higher than assignment (which makes it highest)
- - make `lasttp' (pointer to last token) part of the expression
- context that is saved and restored by {push,pop}_context. This
- is used only in error reporting
-
-doc/{bash.1,bashref.texi}
- - documented new `,' arithmetic operator
- - cleaned up some of the language concerning variables referenced
- by name within an arithmetic expression
+builtins/evalstring.c
+ - evalstring(): new function, wrapper around parse_and_execute.
+ make sure we handle cases where parse_and_execute can call `return'
+ and short-circuit without cleaning up properly. We call
+ parse_and_execute_cleanup() then jump to the previous-saved return
+ location
-lib/readline/readline.c
- - new application-settable variable, rl_num_chars_to_read, which, if
- set to a non-zero value, causes readline to return after reading
- that many characters (or at least that many characters, if
- rl_startup_hook is used to prime the input buffer) rather than
- when reading a character bound to accept-line
+builtins/common.h
+ - extern declaration for evalstring()
-lib/readline/readline.h
- - extern declaration for rl_num_chars_to_read
+builtins/eval.def
+ - eval_builtin: make sure we handle `eval " ... return"' in contexts
+ where `return' is valid by calling evalstring(). Fixes bug with
+ `eval return' in sourced files reported by Clark Wang
+ <dearvoid@gmail.com>
-builtins/read.def
- - added new `-n nchars' option to read NCHARS from stdin rather than
- a complete line. Works both with and without using readline
+trap.c
+ - run_pending_traps: call evalstring instead of parse_and_execute.
+ XXX - still needs to handle saving and restoring token state in the
+ presence of `return'; could use unwind_protects for that
-doc/{bash.1,builtins.texi}
- - documented new `read -n nchars' option
+builtins/mapfile.def
+ - run_callback: call evalstring instead of parse_and_execute
- 3/26
+ 8/15
----
-execute_cmd.c
- - make sure all uses of PIDs are of type pid_t
+bashline.c
+ - bash_filename_stat_hook: make sure we don't free local_dirname
+ before using it to canonicalize any expanded filename. Make sure
+ it always points to *dirname and only free it if we're replacing
+ it.
-redir.c
- - broke stdin_redirects into two functions: stdin_redirection, which
- checks a single redirection specification, and a new stdin_redirects,
- which does what it did before but calls stdin_redirection for each
- redirection in the chain
+lib/readline/complete.c
+ - append_to_match: make sure we call rl_filename_stat_hook with
+ newly-allocated memory to avoid problems with freeing it twice
- 3/29
+ 8/17
----
-aclocal.m4
- - new test, BASH_CHECK_DEV_STDIN, checks for /dev/stdin. If it's
- present HAVE_DEV_STDIN is defined and it's assumed that /dev/stdout
- and /dev/stderr are present as well
-
-configure.in
- - call BASH_CHECK_DEV_STDIN
+variables.c,config-top.h
+ - if ARRAY_EXPORT is defined to 1 when variables.c is compiled, the
+ code that allows indexed arrays to be exported is enabled and
+ included
-config.h.in
- - add HAVE_DEV_STDIN, initially undefined
+ 8/19
+ ----
+shell.c
+ - call start_debugger from main() only if dollar_vars[1] != 0 (close
+ enough to a non-interactive shell, since we can be interactive with
+ -i while running a shell script). Fixes oddity reported by
+ Techlive Zheng <techlivezheng@gmail.com>
-test.c
- - add /dev/std{in,out,err} to the special filenames that are handled
- by test_stat() if HAVE_DEV_STDIN is not defined
+ 8/20
+ ----
+arrayfunc.c
+ - quote_array_assignment_chars: don't bother quoting if the word has
+ not been marked as an assignment (W_ASSIGNMENT)
+ - quote_array_assignment_chars: turn on W_NOGLOB in the word flags
+ so assignment statements don't undergo globbing. Partial fix for
+ problems reported by Dan Douglas <ormaaj@gmail.com>
-doc/{bash.1,bashref.texi}
- - documented conditional expressions' handling of /dev/std{in,out,err}
+ 8/21
+ ----
+command.h
+ - W_NOBRACE: new word flag that means to inhibit brace expansion
-stringlib.c
- - new function, find_string_in_alist, to find (or match as an extended
- glob pattern) a string in a STRING_INT_ALIST and return the
- associated token value
+subst.c
+ - brace_expand_word_list: suppress brace expansion for words with
+ W_NOBRACE flag
-externs.h
- - extern declaration for find_string_in_alist
+ 8/22
+ ----
+builtins/read.def
+ - read_builtin: don't call dequote_string on what we've read, even if
+ we saw an escape character, unless (input_string && *input_string).
+ We may have escaped an IFS whitespace character. Fixes seg fault
+ reported by <armandsl@gmail.com>
-redir.c
- - new STRING_INT_ALIST list of filenames the redirection code handles
- specially (_redir_special_filenames)
- - new function, redir_special_open () to handle filenames found in
- _redir_special_filenames (framework for /dev/tcp and /dev/udp, but
- those are not implemented get)
+execute_cmd.c
+ - execute_command_internal: set the_printed_command_except trap when
+ about to execute a ( ... ) user subshell. For now, set it only if
+ ERR is trapped; can relax that later. Fixes bug reported by
+ Mike Frysinger <vapier@gentoo.org>
-doc/{bash.1,bashref.texi}
- - documented special filename handling in redirections
+ 8/23
+ ----
+jobs.c
+ - remove references to first_pid and pid_wrap, since we're not using
+ them for anything anymore
- 3/30
+ 8/24
----
-builtins/read.def
- - added `-d delim' option, like ksh93, to read until delim rather
- than newline
+subst.c
+ - changes for W_NOBRACE everywhere appropriate: so it can be displayed
+ for debugging, and passed out of expand_word_internal
doc/{bash.1,bashref.texi}
- - documented new read `-d delim' option
+ - small changes to make it clearer that the = and == operators are
+ equivalent, and will cause pattern matching when used with [[.
+ From a question from Michal Soltys <soltys@ziu.info>
-configure.in
- - look for gethostbyname(3), inet_aton(3)
- - look for <netdb.h> and <netinet/in.h>
- - call BASH_FUNC_GETHOSTBYNAME if gethostbyname(3) is not in libc
- - check for u_int and u_long types, default to `unsigned int' and
- `unsigned long' respectively
- - new enable option `--enable-net-redirections' to compile in the
- /dev/tcp and /dev/udp redirection code
+doc/bashref.texi
+ - some small formatting changes from Karl Berry <karl@freefriends.org>
-aclocal.m4
- - new macro, BASH_FUNC_GETHOSTBYNAME, looks for gethostbyname(3) in
- the socket libraries if it's not found in libc
+ 8/27
+ ----
+lib/readline/doc/{history,rlman,rluserman}.texi
+ - some small formatting changes from Karl Berry <karl@freefriends.org>
-config.h.in
- - new defines: HAVE_GETHOSTBYNAME, HAVE_INET_ATON, HAVE_NETDB_H,
- HAVE_NETINET_IN_H, NETWORK_REDIRECTIONS
- - new defines: u_int, u_long
+arrayfunc.c
+ - assign_array_element_internal, assign_compound_array_list,
+ unbind_array_element, array_value_internal: changes to make
+ assignment statements to negative indices (a[-1]=2) and unsetting
+ array elements using negative indices (unset 'a[-1]') work.
+ From suggestions by Dennis Williamson <dennistwilliamson@gmail.com>
+ and Chris F. A. Johnson <chris@cfajohnson.com>
-lib/sh/inet_aton.c
- - new file, from GNU libc, slightly modified to remove inet_addr()
+subst.c
+ - array_length_reference: changes to make length references to array
+ elements using negative indices (${#a[-1]}) work
-lib/sh/netopen.c
- - new file, functions to create tcp/udp network connections. Exports
- a single function: netopen(pathname)
+ 8/28
+ ----
+doc/{bash.1,bashref.texi}
+ - document new treatment of negative indices to indexed arrays when
+ assigning, referencing, calculating length, and unsetting
-externs.h
- - extern declaration for netopen()
+ 8/29
+ ----
+shell.c
+ - show_shell_usage: add -l to list of shell invocation options (short
+ for --login). From Red Hat bug 852469
-lib/sh/Makefile.in, Makefile.in, MANIFEST
- - added appropriate references to inet_aton.c and netopen.c
+configure.ac
+ - renamed from configure.in, as latest autoconf versions want. Patches
+ Stefano Lattarini <stefano.lattarini@gmail.com>
-config-bot.h
- - if HAVE_SYS_SOCKET_H, HAVE_GETPEERNAME, and HAVE_NETINET_IN_H are
- all defined, define HAVE_NETWORK
+MANIFEST,Makefile.in,doc/bashref.texi,support/mkconffiles
+ - configure.in -> configure.ac
-redir.c
- - call netopen for pathnames of the form /dev/(tcp|udp)/host/port
- if HAVE_NETWORK is defined; print a warning message otherwise
- - /dev/tcp and /dev/udp code is only compiled in if
- NETWORK_REDIRECTIONS is defined
+ 9/1
+ ---
- 3/31
- ----
-lib/sh/zread.c
- - new function, zsyncfd(fd) which syncs the kernel's seek pointer on
- FD with the last character returned by zreadc()
+parse.y
+ - read_token_word: allow words like {array[ind]} to be valid redirection
+ words for constructs like {x}<file
-externs.h
- - extern declaration for zsyncfd
+redir.c
+ - redir_varassign: bind_var_to_int already handles array assignments,
+ so don't need to do anything more for things like {a[i]}<file
+ - redir_varvalue: changes to allow references to {a[i]} when
+ performing redirections using valid_array_reference and
+ get_array_value. Adds functionality requested most recently by
+ <unknown@vmw-les.eng.vmware.com>
-builtins/read.def
- - use zreadc if the input is not unbuffered (this cuts the number
- of read(2) calls *way* down)
- - if input is not unbuffered, call zsyncfd before returning to make
- sure zreadc's buffering doesn't consume too much input
+lib/readline/display.c
+ - update_line: if the first difference between the old and new lines
+ is completely before any invisible characters in the prompt, we
+ should not adjust _rl_last_c_pos, since it's before any invisible
+ characters. Fixed in two places
+ - prompt_modechar: return a character indicating the editing mode:
+ emacs (@), vi command (:), or vi insert (+)
+ - _rl_reset_prompt: new function, just calls rl_expand_prompt. Will be
+ inlined, placeholder for more changes
+ - expand_prompt: if show-mode-in-prompt is enabled, add a character to
+ the front of the prompt indicating the editing mode, adjusting the
+ various variables as appropriate to keep track of the number of
+ visible characters and number of screen positions
- 4/1
- ---
-Makefile.in
- - install bashbug with mode 555
+lib/readline/bind.c
+ - show-mode-in-prompt: new bindable boolean variable, shadowed by
+ _rl_show_mode_in_prompt variable
+ - hack_special_boolean_var: call _rl_reset_prompt when toggling or
+ setting show-mode-in-prompt
- 4/2
- ---
-shell.c
- - make want_pending_command and read_from_stdin global rather than
- local variables
+lib/readline/readline.c
+ - readline_internal_setup: make sure the correct vi mode keymap is set
+ before expanding the prompt string for the first time
-flags.c
- - change which_set_flags to insert `c' and `s' if the `-c' and `-s'
- invocation options, respectively, were supplied at shell startup
+lib/readline/misc.c
+ - rl_emacs_editing_mode: make sure to call _rl_reset_prompt if we're
+ showing the editing mode in the prompt
-bashline.c
- - change bash_directory_completion_hook to change the logic for
- deciding whether or not to parameter expand the directory name --
- now we expand only if there's a `$' (still has problems if the
- user quoted the `$') or a `` pair. Fixes bug reported by
- chuckjr@sinclair.net. To fix the `$' problem, could possibly
- check what the user typed with rl_line_buffer and start, end
- parameters to gen_completion_matches
- - changed attempt_shell_completion to slightly adjust the logic for
- deciding whether or not a word is in a command position: if the
- word being completed has a single opening single or double quote
- before the command separator, treat it as a candidate for (quoted)
- command word completion
- - now that we understand partially-quoted strings as completion
- candidates, we can do command completion on certain unclosed
- uses of $(...
+lib/readline/rlprivate.h
+ - _rl_reset_prompt, _rl_show_mode_in_prompt: extern declarations
-subst.c
- - change extract_delimited_string to not return an error for an
- unclosed construct if DOING_COMPLETION is non-zero
+lib/readline/vi_mode.c
+ - rl_vi_insertion_mode: call _rl_reset_prompt
+ - rl_vi_movement_mode: call _rl_reset_prompt. Finishes changes for
+ showing mode in prompt string, originally requested by Miroslav
+ Koskar <mkoskar@gmail.com> and most recently by Jordan Michael
+ Ziegler <jziegler@bnl.gov>
- 4/5
+doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
+ - document new show-mode-in-prompt variable, off by default
+
+ 9/3
---
-expr.c
- - fixed `ss=09 ; let ss=10' bug by introducing one-token lookahead
- after a string token is parsed. If the next token is `=', we
- don't evaluate the variable's value as an expression, since it's
- not going to be used
-variables.h
- - added new member to struct variable: exportstr -- for the future
- caching of strings to be placed into the environment
- - extern declaration for bind_variable_value
+jobs.c
+ - set_childmax: new function, external mechanism for other parts of
+ the shell to set js.c_childmax, the number of saved exited child
+ statuses to remember
+jobs.h
+ - set_childmax: extern declaration
variables.c
- - make sure that the `exportstr' member of a struct variable is
- initialized correctly, and put code in to free it where appropriate
- (if non-null)
- - new function, bind_variable_value(VAR, VALUE); make shell variable
- VAR have value VALUE
- - make sure var->exportstr is invalidated when a variable or function
- is assigned a value
+ - CHILD_MAX: new special variable, with sv_childmax function to
+ run when it changes. Setting CHILD_MAX to a value greater than
+ zero but less than some maximum (currently 8192) sets the number of
+ exited child statuses to remember. set_childmax (jobs.c) ensures
+ that the number does not drop below the posix-mandated minimum
+ (CHILD_MAX)
-builtins/declare.def
- - call bind_variable_value instead of duplicating some of bind_variable
- inline
+doc/{bash.1,bashref.texi}
+ - CHILD_MAX: document new meaning and action when variable is set
- 4/6
+ 9/5
---
-variables.h
- - new macros, VSETATTR and VUNSETATTR to set and clear variable
- attributes
+redir.c
+ - redir_varassign: call stupidly_hack_special_variables after
+ assigning fd number to specified variable, so we can use constructs
+ like {BASH_XTRACEFD}>foo. Suggested by Pierre Gaston
+ <pierre.gaston@gmail.com>
-builtins{read,set,setattr,declare}.def,{execute_cmd,expr,shell,subst,variables}.c
- - change to use VSETATTR and VUNSETATTR
+ 9/8
+ ---
+expr.c
+ - readtok: invalidate previous contents of `curlval' before freeing
+ and reallocating tokstr (which, chances are, will get the same
+ pointer as before and render curlval inconsistent). Fixes other
+ bug reported by Dan Douglas <ormaaj@gmail.com>
- 4/7
+ 9/9
---
-doc/Makefile.in
- - if htmldir is set by configure, install the html files into that
- directory with `make install' and remove them with `make uninstall'
+lib/readline/complete.c
+ - rl_username_completion_function: protect call to setpwent() with
+ #ifdef (HAVE_GETPWENT)/#endif. Fixes bug reported by
+ Gerd Hofmann <gerd.hofmann.nbg@googlemail.com>
-Makefile.in,doc/Makefile.in
- - htmldir is set by configure and passed from the Makefile to the
- install in the doc subdirectory
+lib/readline/display.c
+ - rl_message: second and subsequent calls to rl_message can result in
+ local_prompt being overwritten with new values (e.g., from the
+ successive calls displaying the incremental search string). Need
+ to free before overwriting if it's not the same as the value saved
+ in saved_local_prompt. Fixes memory leak reported by
+ Wouter Vermaelen <vermaelen.wouter@gmail.com>
-configure.in
- - substitute `htmldir' into Makefiles
+lib/readline/{terminal.c,rlprivate.h}
+ - move CUSTOM_REDISPLAY_FUNC and CUSTOM_INPUT_FUNC defines from
+ terminal.c to rlprivate.h so other files can use them
-support/config.guess
- - some small changes for Apple's Rhapsody
+expr.c
+ - expr_streval: if noeval is non-zero, just return 0 right away,
+ short-circuiting evaluation completely. readtok will leave curtok
+ set correctly without re-entering the evaluator at all. Rest of
+ fix for bug reported by Dan Douglas <ormaaj@gmail.com>
-lib/termcap/Makefile.in
- - make the `distclean' and `maintainer-clean' targets remove Makefile
+ 9/11
+ ----
-lib/termcap/ltcap.h
- - new private library include file, for Rhapsody __private_extern__
- define
+parse.y
+ - parse_comsub: make sure the `reserved word ok in this context' flag
+ is preserved after we read `do' followed by whitespace. Fixes bug
+ reported by Benoit Vaugon <benoit.vaugon@gmail.com>
-lib/termcap/{termcap,tparam}.c
- - include "ltcap.h"
- - if HAVE_CONFIG_H is defined, include <stdlib.h> if HAVE_STDLIB_H is
- defined, otherwise declare getenv, malloc, realloc as extern
- - add __private_extern__ qualifier for extern data that Rhapsody
- requires
+ 9/13
+ ----
+configure.ac,config.h.in
+ - enable-direxpand-default: new configure option, turns the `direxpand'
+ shell option on by default
-shell.c
- - don't run the startup files in the rshd case if shell_level is >= 2
- This should catch the case of
- rsh machine bash -c 'echo a'
- running the .bashrc twice, once for the shell started by rshd and
- one for the shell running -c command
+bashline.c
+ - dircomplete_expand, dircomplete_expand_relpath: initialize to 1 if
+ DIRCOMPLETE_EXPAND_DEFAULT is defined and non-zero
- 4/8
- ---
-variables.c
- - in initialize_shell_variables, unset the export attribute from
- SSH_CLIENT if it exists and we got it from the initial environment
+doc/bashref.texi
+ - enable-direxpand-default: document new configure option
+ 9/14
+ ----
shell.c
- - don't bother unsetting export attribute from SSH_CLIENT, since we
- now do it in initialize_shell_variables
-
-lib/readline/display.c
- - don't check prompt_this_line[-2] in rl_redisplay if prompt_this_line
- isn't at least 2 characters after the start of rl_display_prompt
+ - --protected: make option valid only when wordexp is compiled into
+ the shell. Fix from Roman Rakus <rrakus@redhat.com>
-lib/readline/histfile.c
- - change the name of the default history file to _history on MS-DOS
-
-lib/readline/histlib.h
- - add an extern declaration for history_offset
+configure.ac
+ - HP NonStop (*-nsk*): compile --without-bash-malloc. Change from
+ Joachim Schmitz <jojo@schmitz-digital.de>
-lib/readline/hist{expand,search}.c
- - remove extern declaration for history_offset; now in histlib.h
+ 9/16
+ ----
+subst.c,execute_cmd.c,lib/glob/sm_loop.c,lib/sh/shquote.c
+ - minor code cleanups from Joachim Schmitz <jojo@schmitz-digital.de>
-lib/readline/xmalloc.h
- - new file, extern declarations for xmalloc, xrealloc, xfree
+lib/readline/colors.h
+ - workaround for HP NonStop compiler issue with <stdbool.h> from
+ Joachim Schmitz <jojo@schmitz-digital.de>
-lib/readline/rlprivate.h
- - new file, with extern declarations for `readline private' global
- variables and functions
+ 9/17
+ ----
+builtins/printf.def
+ - printf_builtin: handle localtime returning NULL, as can happen when
+ encountering overflow. Bug report and initial fix from
+ Eduardo A. Bustamante López <dualbus@gmail.com>
-lib/readline/rlshell.h
- - new file, with extern function declarations for stuff in shell.c
+doc/{bash.1,bashref.texi}
+ - emphasize that brace expansion using character ranges ({a..c}) acts
+ as if the C locale were in use. Prompted by message from
+ Marcel Giannelia <info@skeena.net>
-lib/readline/Makefile.in
- - add dependencies on xmalloc.h, rlshell.h
- - add xmalloc.h, rlprivate.h to list of header files
+ 9/20
+ ----
+lib/sh/wcsnwidth.c
+ - wcsnwidth: new function, variant of wcwidth, returns the number of
+ wide characters from a string that will be displayed to not exceed
+ a specified max column position
-MANIFEST
- - add lib/readline/xmalloc.h, lib/readline/rlprivate.h,
- lib/readline/rlshell.h
+ 9/21
+ ----
+builtins/help.def
+ - show_builtin_command_help: break code that displays the short-doc
+ for each builtin in two columns into a new function: dispcolumn
+ - wdispcolumn: multibyte-char version of dispcolumn; uses wide
+ chars and printf "%ls" format. Fixes problem reported by
+ Nguyá»n Thái Ngá»c Duy <pclouds@gmail.com>
-Makefile.in
- - add $(RL_LIBSRC)/xmalloc, $(RL_LIBSRC)/rlprivate.h,
- $(RL_LIBSRC)/rlshell.h to READLINE_SOURCE variable
+ 9/22
+ ----
+execute_cmd.c
+ - execute_disk_command: before running the command-not-found hook,
+ call kill_current_pipeline() to make sure we don't add processes
+ to an existing pipeline or wait for processes erroneously
-lib/readline/{bind,complete,display,funmap,histexpand,histfile,history,input,
-isearch,keymaps,kill,macro,readline,search,shell,util,vi_mode}.c
- - include "xmalloc.h" rather than extern declarations for xmalloc,
- xrealloc, xfree
+ 9/23
+ ----
+lib/readline/input.c
+ - rl_input_available_hook: new hook function, called from
+ _rl_input_available (or _rl_input_queued) to return whether or not
+ input is available wherever the input source is
-lib/readline/terminal.c
- - new function, used in two places, _emx_get_screensize for EMX
+lib/readline/doc/rltech.texi
+ - rl_input_available_hook: document
-lib/readline/readline.c
- - EMX apparently no longer needs _emx_build_environ
+ 9/27
+ ----
+lib/glob/sm_loop.c:
+ - GMATCH: after one or more `*', an instance of ?(x) can match zero or
+ 1 times (unlike ?, which has to match one character). The old code
+ failed if it didn't match at least once. Fixes `a*?(x)' bug.
+ - GMATCH: if we hit the end of the search string, but not the end of
+ the pattern, and the rest of the pattern is something that can
+ match the NUL at the end of the search string, we should successfully
+ match. Fixes `a*!(x)' bug reported by <hans1worst@gmail.com>
-lib/readline/signals.c
- - support for __EMX__ in rl_signal_handler
- - don't set the old handler passed to rl_set_sighandler to
- rl_signal_handler, because that would cause infinite recursion if
- that signal were generated
+ 10/2
+ ----
+command.h
+ - add c_lock member to coproc structure for future use to tell who is
+ manipulating it
-lib/readline/xmalloc.c
- - no longer the same as lib/malloc/xmalloc.c, which is no longer
- used by anyone
- - changes to include xmalloc.h, define READLINE_LIBRARY, change
- some of the argument types
+execute_cmd.c
+ - execute_coproc: block SIGCHLD while parent is forking coproc
+ process and adding pid to sh_coproc struct to avoid race condition
+ where child is reaped before the pid is assigned and the coproc is
+ never marked as having died. Fixes race condition identified by
+ Davide Baldini <baldiniebaldini@gmail.com>
+ - add assignments to c_lock member of struct coproc in various
+ functions that manipulate it; was used to identify race condition
+ - coproc_pidchk: don't call coproc_dispose to avoid using malloc and
+ other functions in a signal handler context
+ - coproc_dispose: call BLOCK_SIGNAL/UNBLOCK_SIGNAL for SIGCHLD while
+ manipulating the sh_coproc struct
-lib/tilde/tilde.c
- - add prototypes for extern function declarations if __STDC__
- defined
+ 10/6
+ ----
+lib/readline/complete.c
+ - rl_display_match_list: if printing completions horizontally, don't
+ bother with spacing calculations if limit == 1, which means we are
+ printing one completion per line no matter what. Fixes bug
+ reported by David Kaasen <kaasen@nvg.ntnu.no>
-lib/readline/{terminal,bind,readline,nls,histexpand}.c
- - include "rlshell.h" for function prototypes
+ 10/7
+ ----
+builtins/declare.def
+ - declare_internal: add error checking for nameref attribute and
+ variable assignments: self-references, attempts to make an array
+ variable a nameref
- 4/9
- ---
-lib/readline/{bind,callback,complete,display,input,isearch,kill,macro,nls,
-parens,readline,rltty,search,signals,terminal,util,vi_mode}.c
- - include "rlprivate.h"
- - remove extern declarations already in rlprivate.h
+subst.c
+ - parameter_brace_expand: handle parameter_brace_expand_word returning
+ &expand_param_fatal or &expand_param_error and return the appropriate
+ error value
+ - parameter_brace_expand_word: if a nameref variable's value is not a
+ valid identifier, return an error
+ - param_expand: if a nameref variable's value is not a valid identifier,
+ return an error
-xmalloc.c
- - xfree should take a PTR_T as its argument
+test.c
+ - unary_operator: add new -R variable, returns true if variable is set
+ and has the nameref attribute. From ksh93
-general.h
- - change prototype for xfree to use void * instead of char *
+builtins/test.def
+ - add -R to description of conditional commands for help test
-lib/malloc/malloc.c
- - define PTR_T like it is defined in general.h
- - malloc() returns a PTR_T
- - free() takes a PTR_T as its argument
- - realloc() returns a PTR_T and takes a PTR_T as its first argument
- - memalign returns a PTR_T
- - valloc returns a PTR_T
- - calloc returns a PTR_T
- - cfree() takes a PTR_T
+doc/{bash.1,bashref.texi}
+ - document new -R unary conditional operator
-variables.c
- - new function: char **all_variables_matching_prefix (char *prefix)
+ 10/13
+ -----
+trap.c
+ - check_signals_and_traps: new function, convenience function for the
+ rest of the shell to check for pending terminating and interrupt
+ signals, and to check for and process any pending traps
+ - any_signals_trapped: new function, returns non-zero if any signals
+ are trapped and -1 if not
-variables.h
- - extern declaration for all_variables_matching_prefix
+trap.h
+ - extern declaration for check_signals_and_traps
bashline.c
- - converted variable_completion_function to use
- all_variables_matching_prefix
+ - bashline_reset: make sure we reset the event hook
+ - bash_event_hook: call check_signals_and_traps instead of just
+ checking for terminating signals so we can run pending traps and
+ react to interrupts, and reset the event hook when we're done
-stringlib.c
- - new function, char **alloc_array(n), allocates an argv-style
- array of strings with room for N members
-externs.h
- - extern declaration for alloc_array
+ 10/14
+ -----
+trap.c
+ - trap_handler: if executing in a readline signal handler context,
+ call bashline_set_event_hook to install bash_event_hook to process
+ the signal (if bash cares about it)
- 4/13
- ----
-lib/readline/keymaps.c
- - include "readline.h"
- - remove extern function declarations
+sig.c
+ - sigint_sighandler: call bashline_set_event_hook to set the event
+ hook if we're executing in a readline signal handler context
-include/stdc.h
- - break the definition of __P out from a strict __STDC__ block,
- since __GNUC__ and __cplusplus also indicate that prototypes
- are available
+lib/readline/input.c
+ - rl_getc: call RL_CHECK_SIGNALS if read returns -1/EINTR and the caught
+ signal is SIGINT or SIGQUIT rather than waiting until the next time
+ around the loop
+ - rl_getc: call rl_event_hook after calling RL_CHECK_SIGNALS to allow
+ an application signal handler to set the event hook in its own
+ signal handler (e.g., like bash trap_handler or sigint_sighandler)
-lib/readline/readline.h
- - adjust conditional declaration of rl_message, since __cplusplus
- indicates that prototypes are available
-lib/readline/rlstdc.h
- - private copy, modified, no longer symlinked to ../../include/stdc.h
- - __P is defined if __GNUC__ or __cplusplus is defined
- - removed defines for __STRING, const, inline, signed, volatile, since
- readline does not use them
+parse.y
+ - yy_readline_get: don't set interrupt_immediately before we call
+ readline(). Inspired by report from lanshun zhou
+ <zls.sogou@gmail.com>
-lib/readline/{search,readline}.c
- - extern declaration for _rl_free_history_entry with prototypes,
- since it's not in rlprivate.h
+input.c
+ - getc_with_restart: add call to run_pending_traps after call to
+ CHECK_TERMSIG
-lib/readline/history.h
- - added some missing `extern's in function declarations
+lib/sh/zread.c
+ - zread: call check_signals_and_traps if read() returns -1/EINTR
+ instead of just ignoring the EINTR and deferring handling any
+ signal that generated it
-lib/readline/undo.c
- - include "rlprivate.h"
+builtins/mapfile.def
+ - mapfile: don't set interrupt_immediately before calling zgetline()
+ (which uses zread internally)
-lib/readline/shell.c
- - include "rlshell.h"
+builtins/read.def
+ - read_builtin: don't set interrupt_immediately before calling zread
+ (moved code around so that it was only being set right around calls
+ to zread to avoid signal handler conflicts). Inspired by report
+ from lanshun zhou <zls.sogou@gmail.com>
+ - edit_line: don't set interrupt_immediately around call to readline()
+ - include shmbutil.h
+ - read_builtin: don't call read_mbchar unless is_basic(c) returns
+ false for the character we just read
-lib/readline/Makefile.in
- - update dependencies for undo.c, shell.c
+ 10/15
+ -----
+sig.c
+ - throw_to_top_level: if interrupt_state is non-zero, make sure that
+ last_command_exit_value reflects 128+SIGINT if it's not already
+ greater than 128
-lib/tilde/tilde.h
- - add #define for __P if not already defined
- - use prototypes in extern function declarations with __P()
+ 10/20
+ -----
+builtins/wait.def
+ - WAIT_RETURN: set wait_signal_received back to 0 for the potential
+ next call to wait
-lib/readline/doc/rluserman.texinfo
- - new file, derived from rlman.texinfo
+quit.h
+ - CHECK_WAIT_INTR: macro to check whether trap_handler handled a
+ signal and set wait_signal_received; longjmp to wait_intr_buf in
+ that case
-{bashline,findcmd,general,pathexp}.c, builtins/getopts.def
- - call alloc_array(N) instead of (char **)xmalloc (N * sizeof (char *))
+jobs.c
+ - wait_for, waitchld: call CHECK_WAIT_INTR at the same places we call
+ CHECK_TERMSIG to check for terminating signals
+ - wait_sigint_handler: don't longjmp out of the wait builtin unless
+ interrupt_immediately is set; otherwise just SIGRETURN from the
+ handler
+ - wait_sigint_handler: if interrupt_immediately not set, but we are
+ executing in the wait builtin and SIGINT is not trapped, treat it
+ as a `normally received' SIGINT: restore the signal handler and
+ send SIGINT to ourselves
+ - waitchld: when in posix mode and running SIGCHLD traps, don't longjmp
+ to wait_intr_buf (and let wait be interrupted) if we're running from
+ a signal handler. Wait for CHECK_WAIT_INTR to do the longjmp.
+ run_pending_traps will run the SIGCHLD trap later
-subst.c
- - added code to implement ksh-93 ${!prefix*} expansion
+nojobs.c
+ - reap_zombie_children, wait_for_single_pid, wait_for: call
+ CHECK_WAIT_INTR where we call CHECK_TERMSIG
+ - wait_sigint_handler: don't longjmp out of the wait builtin unless
+ interrupt_immediately is set; otherwise just SIGRETURN from the
+ handler
-doc/{bash.1,bashref.texi}
- - documented new ${!prefix*} expansion
+trap.c
+ - trap_handler: make sure wait_signal_received is set if the wait
+ builtin is executing, and only longjmp if interrupt_immediately is
+ set. This whole set of fixes was prompted by report from
+ lanshun zhou <zls.sogou@gmail.com>
- 4/15
- ----
-execute_cmd.c
- - new variable, this_shell_function, points to SHELL_VAR of currently
- executing shell function
+ 10/24
+ -----
+lib/glob/glob.c
+ - glob_filename: only check directory_name for globbing chars if
+ it's of non-zero length
-variables.c
- - new dynamic variable, FUNCNAME -- invisible when not executing shell
- function
+lib/sh/strchrnul.c
+ - new simpler implementation
-doc/{bash.1,bashref.texi}
- - documented new FUNCNAME variable
+subst.c
+ - command_substitute: call set_shellopts after turning off errexit
+ in subshells so it's reflected in $SHELLOPTS
- 4/16
+ 11/7
----
-support/rlvers.sh
- - add -T option to specify correct termcap library
-
-configure.in
- - Irix 4.x still needs to link with -lsun if it contains a replacement
- getpwent function that works with NIS
- - if we're configuring with an already-installed readline library,
- call BASH_CHECK_LIB_TERMCAP and pass the resulting $TERMCAP_LIB to
- support/rlvers.sh
-
-lib/readline/readline.c
- - in rl_forward, if rl_point ends up being < 0, set it to 0
-
-lib/readline/exammples/excallback.c
- - new callback example code, from `Jeff Solomon <jsolomon@stanford.edu>'
-
-lib/sh/getcwd.c
- - define NULL as 0 if not defined by one of the standard include files
- - cast result of malloc and realloc to (char *) where appropriate
-
-variables.c
- - new functions for use by dynamic variables: null_assign and
- null_array_assign. Used as assign_func for a particular variable,
- they cause assignments to that variable to be silently ignored
- - FUNCNAME and GROUPS are no longer readonly
- - FUNCNAME changed to use null_assign
- - GROUPS changed to use null_array_assign. This means that the
- variable can be unset if desired (like for Oracle startup scripts),
- but cannot be assigned to
-
-doc/{bash.1,bashref.texi}
- - added text about assignments being silently discarded to descriptions
- of FUNCNAME and GROUPS
- - removed text saying that GROUPS is readonly
- - added standard text about GROUPS being unset and losing its special
- properties, even if reset
+builtins/evalstring.c
+ - parse_and_execute: treat ERREXIT case like reader_loop does: set
+ variable_context to 0 before longjmping back to top_level. Don't
+ run the unwind-protect context to avoid side effects from popping
+ function contexts. Part of fix for problem reported by Nikolai
+ Kondrashov <nikolai.kondrashov@redhat.com>
-command.h
- - new command type, cm_subshell, actually causes the shell to fork
- and then executes the command in the SUBSHELL_COM struct
+execute_cmd.c
+ - execute_simple_command: call unlink_fifo_list only if this is the
+ last element of a pipeline (or not in a pipeline), rather than for
+ every child. Fixes difference in behavior between /dev/fd and
+ FIFOs reported by Zev Weiss <zev@bewilderbeest.net>
+ - execute_null_command: do the same thing in the parent branch after
+ make_child
+
+ 11/14
+ -----
+subst.c
+ - parameter_brace_expand: a variable is null if it's special ($@, $*),
+ the expansion occurs within double quotes, and the expansion turns
+ into a quoted null. Fixes debian bug 692447 reported by
+ Matrosov Dmitriy <sgf.dma@gmail.com>
-parse.y
- - ( ... ) now creates a command of type cm_subshell, with the same
- flag CMD_WANT_SUBSHELL as previous
+jobs.c
+ - run_sigchld_trap: make sure `running_trap' sentinel is set
+ appropriately
+ - waitchld: only run the sigchld trap if we're not in a signal
+ handler, not running a trap, and executing the wait builtin.
+ Otherwise, queue for later handling. We still run one instance
+ of the trap handler per exited child. Bulk of fix for bug
+ reported by Elliott Forney <idfah@cs.colostate.edu>
-make_cmd.c
- - new function make_subshell_command
+trap.c
+ - queue_sigchld_trap: set catch_flag so run_pending_traps notices,
+ and set trapped_signal_received for completeness. Rest of fix
+ for bug reported by Elliott Forney <idfah@cs.colostate.edu>
-make_cmd.h
- - extern declaration for make_subshell_command
+lib/malloc/malloc.c
+ - block_signals: renamed to _malloc_block_signals, made public
+ - unblock_signals: renamed to _malloc_unblock_signals, made public
-dispose_cmd.c
- - code to destroy a SUBSHELL_COM
+lib/malloc/imalloc.h
+ - extern declarations for _malloc_{un,}block_signals
-copy_cmd.c
- - code to duplicate a SUBSHELL_COM
+lib/malloc/table.c
+ - mregister_alloc, mregister_free: block signals around table
+ manipulation
-print_cmd.c
- - code to print a SUBSHELL_COM
+ 11/15
+ -----
+trap.c
+ - run_pending_traps: set SIG_INPROGRESS flag around calls to
+ run_sigchld_handler so other parts of the shell know that the
+ SIGCHLD trap handler is executing
+ - run_pending_traps: if we get a situation where we are looking at
+ running a SIGCHLD trap but the trap string is IMPOSSIBLE_TRAP_HANDLER
+ and the SIG_INPROGRESS flag is set, just skip it. This is possible
+ if run_pending_traps is called from a SIGCHLD trap handler run by
+ run_sigchld_trap
+
+doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
+ - corrected description of the effect of `set history-size 0'. Report
+ from Vesa-Matti J Kari <vmkari@cc.helsinki.fi>
-execute_cmd.c
- - broke the code that handles executing commands in subshells out of
- execute_command_internal into a new function, execute_in_subshell,
- with the same arguments
- - executing a command of type cm_subshell is just a slightly special
- case, handled in execute_in_subshell
+include/stdc.h
+ - CPP_STRING: new define, replaces __STRING
- 4/18
- ----
-execute_cmd.c
- - changed code in execute_command_internal that executes subshell
- commands to check for command->type == cm_subshell in addition to
- checking that commmand->flags & CMD_WANT_SUBSHELL is non-zero
- - changed execute_in_subshell to set the CMD_NO_FORK flag on the
- command to be executed by a command of type cm_subshell
- (command->value.Subshell->command), if that command is a simple
- command (type == cm_simple) or a nested subshell (type == cm_subshell)
- and is not being timed
- - changed execute_command_internal to just call and return the value
- returned by execute_in_subshell if it gets a command of type
- cm_subshell with flags including CMD_NO_FORK
+lib/malloc/{malloc.c,imalloc.h}
+ - replace __STRING with CPP_STRING
-lib/malloc/malloc.c
- - morecore() should always return through morecore_done, not with a
- simple `return'
+ 11/16
+ -----
+lib/readline/bind.c
+ - sv_histsize: if argument evaluates to a value < 0, unstifle the
+ history
- 4/20
- ----
-variables.c
- - new function, quote_array_assignment_chars, backslash quotes all
- `[' and `]' before an `=' in a word that's part of the body of a
- compound array assignment. Needed because we run the list through
- the globbing code now. Don't bother if `=' does not appear in
- the string or if the first char is not `['
- - call quote_array_assignment_chars from assign_array_var_from_string
- now
+ 11/22
+ -----
+redir.c
+ - do_redirection_internal: if we have REDIR_VARASSIGN set in the
+ redirection flags and we set up `redirector' using fcntl or dup2,
+ don't add a redirect to make sure it stays open. Let the
+ script programmer manage the file handle. Fixes bug reported by
+ Sam Liddicott <sam@liddicott.com>
-eval.c
- - moved parse_string_to_word_list to parse.y
+ 11/24
+ -----
+jobs.c
+ - wait_for_any_job: new function, waits for an unspecified background
+ job to exit and returns its exit status. Returns -1 on no background
+ jobs or no children or other errors. Calls wait_for with new
+ sentinel value ANY_PID
+ - wait_for: changes to handle argument of ANY_PID: don't look up or
+ try to modify the child struct, only go through the wait loop once.
+ Return -1 if waitpid returns no children
-parse.y
- - moved parse_string_to_word_list here. Much simpler -- no longer
- tries to parse a command, but just reads tokens using read_token().
- Any token but a WORD or ASSIGNMENT_WORD causes a syntax error.
- Don't have to mess around with saving global_command or calling
- parse_command, but do need to save and restore the history stuff,
- so the array assignment doesn't get saved on the history list
+jobs.h
+ - ANY_PID: new define
- 4/21
- ----
-nojobs.c
- - changed to use functions in lib/sh/shtty.c (tt{get,set}attr) for
- the terminal attributes
- - added a `flags' field to struct proc_status, flags are PROC_RUNNING
- and PROC_NOTIFIED (status has been returned to `wait')
- - functions check flags & PROC_RUNNING to check whether or not a
- particular process is still alive; PROC_RUNNING is reset by
- set_pid_status
- - new function, mark_dead_jobs_as_notified, same function as the one
- in jobs.c
- - cleanup_dead_jobs reaps jobs only if they're dead and not marked
- as notified
- - wait_for_background pids marks all pids as notified and reaps them
- before it returns, since it's called by the `wait' builtin
- - wait_for_single_pid marks the pid being waited for as notified so
- its slot can be reclaimed -- it's only called by the `wait' builtin
- - new function, process_exit_status, to turn what wait(2) takes into
- an exit status
+builtins/wait.def
+ - new option: -n. Means to wait for the next job and return its exit
+ status. Returns 127 if there are no background jobs (or no
+ children). Feature most recently requested by Elliott Forney
+ <idfah@cs.colostate.edu>
- 4/22
- ----
-nojobs.c
- - add_pid takes a new second argument, async_p, which is non-zero if
- the process is in the background
- - new flag, PROC_ASYNC, set by add_pid
- - set_pid_status now sets the PROC_NOTIFIED flag if PROC_ASYNC is unset,
- so foreground jobs get cleaned up right away
- - changed mark_dead_jobs_as_notified to take a `force' argument; if
- non-zero, it marks only enough dead jobs to make the number of
- un-notified dead jobs < CHILD_MAX
- - new function, reap_dead_jobs, same as in jobs.c
+doc/{bash.1,bashref.texi}
+ - document new `wait -n' option
execute_cmd.c
- - don't need separate cases for REAP any more
+ - execute_command_internal: save make_command_string () result in a
+ temp variable before calling savestring() on it; avoids evaluating
+ make_command_string() result twice. Fix from John E. Malmberg
+ <wb8tyw@qsl.net>
- 4/23
- ----
-builtins/printf.def
- - new function, tescape, which processes a single backslash
- escape sequence and returns the number of characters consumed by
- the argument string (code taken from bexpand)
- - changed bexpand to call tescape rather than do backslash-escape
- sequence conversion itself
- - changed occurrences of `illegal' in error messages to `invalid'
- - printf no longer calls ansicstr to translate backslash-escape
- sequences; the mainline printf code now calls tescape whenever it
- hits a backslash
-
- 4/26
- ----
-subst.c
- - new variable, garglist, set to list of words to be expanded after
- leading assignment statements are removed
- - command_substitute now calls maybe_make_exported_env before making
- the child process if there are no variable assignments preceding
- the command currently being expanded, or if the command currently
- being expanded consists only of variable assignments
+ 11/28
+ -----
-execute_cmd.c
- - the `early fork' code in execute_simple_command now calls
- maybe_make_export_env before forking because execute_disk_command
- would do that in the vast majority of cases, and this will obviate
- the need to do it for subsequent commands if the environment does
- not change
+builtins/declare.def
+ - declare_internal: if an array variable is declared using `declare -a'
+ or `declare -A', but not assigned a value, set the `invisible'
+ attribute so the variable does not show up as set. Fix for bug
+ about variable initialization reported by Tim Friske <me@timfriske.com>
- 4/27
- ----
-variables.h
- - more macros to manipulate the exportstr member of a SHELL_VAR
- - changed initialize_shell_variables to cache the value from the
- environment as the initial exportstr for all imported variables
- - changed make_var_array to use exportstr if it exists, instead
- of computing the value
- - changed make_var_array to cache exportstr for exported functions,
- so they don't have to be deparsed every time the export env is
- remade
+builtins/{mapfile,read}.def
+ - after calling find_or_make_array_variable, make sure the invisible
+ flag is turned off, in case the variable was declared previously
+ using `declare -a' or `declare -A'. Side effect of above change to
+ declare_internal
- 4/28
- ----
-lib/readline/{histlib,rldefs}.h
- - changed STREQN macro to evaluate to 1 if the third argument is 0
+subst.c
+ - shell_expand_word_list: handle the W_ASSNGLOBAL flag and put -g into
+ the list of options passed to make_internal_declare as appropriate.
+ Fix for bug reported by Tim Friske <me@timfriske.com>
-lib/readline/search.c
- - changed rl_history_search_{for,back}ward so they leave point at
- the end of the line when the string to search for is empty, like
- previous-history and next-history
- - broke common code out of rl_history_search_{for,back}ward into
- a new function, rl_history_search_reinit
- - rewrote rl_history_search_internal to be more like the
- non-incremental search functions, use noninc_search_from_pos,
- and leave the last history line found in the current line buffer
- if the search fails
- - new function, make_history_line_current, takes care of making
- the current line buffer a copy of the history entry passed as an
- argument; used by rl_history_search_internal and noninc_dosearch
+ 11/30
+ -----
+test.c
+ - unary_op: make sure -v and -n check that the variable is not marked
+ as invisible before calling var_isset. Fix for bug reported by Tim
+ Friske <me@timfriske.com>
+ 12/2
+ ----
subst.c
- - make ${!prefix@} be the same as ${!prefix*} for (undocumented)
- ksh93 compatibility
+ - process_substitute: turn off the `expanding_redir' flag, which
+ controls whether or not variables.c:find_variable_internal uses the
+ temporary environment to find variables. We want to use the
+ temp environment, since we don't have to worry about order of
+ evaluation in a subshell. Fixes bug reported by Andrey Borzenkov
+ <arvidjaar@gmail.com>
- 4/30
+ 12/4
----
-lib/readline/doc/rltech.texinfo
- - added note about including <readline/readline.h>, and that <stdio.h>
- should be included before readline.h
+lib/glob/glob.c
+ - glob_filename: changes to avoid null filenames and multiple entries
+ returned for patterns like **/** (globstar enabled). Fixes bug
+ reported by Ulf Magnusson <ulfalizer@gmail.com>
-lib/readline/doc/hstech.texinfo
- - added note about including <readline/history.h>
+ 12/10
+ -----
+lib/glob/glob.c
+ - glob_filename: finish up a series of changes to make globstar-style
+ globbing more efficient, avoid more duplicate filenames, and be more
+ compatible with other shells that implement it
+ o collapse a sequence of **/**/** to one **
+ o note when the directory name is all ** or ends in ** so we
+ can treat it specially when the filename is **
+ All inspired by report from Andrey Borzenkov <arvidjaar@gmail.com>
-lib/readline/doc/manvers.texinfo
- - updated version to 4.1
+lib/sh/zread.c
+ - zreadn: new function, like zread, but takes an additional argument
+ saying how many bytes to read into the local buffer. Can be used to
+ implement `read -N' without so many one-byte calls to zreadc. Code
+ from Mike Frysinger <vapier@gentoo.org>
-lib/readline/{bind,complete,display,isearch,nls,parens,readline,signals,tilde,
-histexpand}.c
- - added prototypes with __P((...)) for forward static function
- declarations
+ 12/12
+ -----
+lib/glob/sm_loop.c
+ - PATSCAN (glob_patscan): if passed string already points to end of
+ pattern, return NULL immediately. Fixes problem with
+ extglob_skipname reported by Raphaël Droz <raphael.droz@gmail.com>
-lib/readline/display.c
- - broke the code that initializes VISIBLE_LINE and INVISIBLE_LINE out
- of rl_redisplay into a new function, init_line_structures, which
- takes an argument giving the minimum number of characters that the
- line must hold
- - new function for use by applications that want to display the
- initial prompt themselves rather than having the first call to
- readline do it: rl_on_new_line_with_prompt (modified from code in
- the CLISP distribution)
+ 12/13
+ -----
+execute_cmd.c
+ - execute_coproc: handle the command's exit status being inverted
+ (an oversight). Fixes bug reported by DJ Mills
+ <danielmills1@gmail.com> and Andreas Schwab <schwab@linux-m68k.org>
+ 12/14
+ -----
lib/readline/readline.c
- - new external variable, rl_already_prompted, to let readline know
- that the prompt string has already been displayed on the screen
- before the first call to readline
- - test rl_already_prompted before displaying the prompt in
- readline_internal_setup
- - if rl_already_prompted is non-zero, readline_internal_setup calls
- rl_on_new_line_with_prompt instead of rl_on_new_line
+ - bind_arrow_keys_internal: add MINGW key bindings for Home, End,
+ Delete, and Insert keys. Fix from Pierre Muller
+ <pierre.muller@ics-cnrs.unistra.fr>
-lib/readline/readline.h
- - extern declaration for rl_on_new_line_with_prompt
- - extern declaration for rl_already_prompted
+builtins/printf.def
+ - printf_builtin: '%()T' conversion: if there is no argument supplied,
+ behave as if -1 had been supplied (current time). ksh93-like feature
+ suggested by Clark Wang <dearvoid@gmail.com>
+
+doc/{bash.1,bashref.texi}
+ - document new printf %()T default argument behavior
-lib/readline/doc/rltech.texinfo
- - documented rl_on_new_line_with_prompt and rl_already_prompted
+ 12/15
+ -----
+lib/readline/display.c
+ - displaying_prompt_first_line: new variable, indicates whether or
+ not the first line of output is displaying the prompt. Always true
+ in normal mode, sometimes false in horizontal scrolling mode
+ - rl_redisplay: set displaying_prompt_first_line to true unless we
+ are in horizontal mode; set to false in horizontal mode if the left
+ margin of the displayed line is greater than the end of the prompt
+ string
+ - rl_redisplay: when in horizontal scroll mode, don't adjust
+ _rl_last_c_pos by the wrap offset unless the line is displaying
+ a prompt containing invisible chars
+ - update line: don't adjust _rl_last_c_pos by the wrap offset unless
+ the line is displaying a prompt containing invisible chars
+ - update_line: if shrinking the line by reducing the number of
+ displayed characters, but we have already moved the cursor to the
+ beginning of the line where the first difference starts, don't
+ try to delete characters
builtins/read.def
- - new -s option (silent mode). Input from a terminal is not echoed
+ - unbuffered_read: set to 2 if invoked as `read -N'
+ - if unbuffered_read is set to 2, compute the number of chars we
+ need to read and read that many with zreadn. Posix mode still
+ uses zreadintr. Code from Mike Frysinger <vapier@gentoo.org>
doc/{bash.1,bashref.texi}
- - documented new `-s' option to read builtin
+ - read: make it clear that if read times out, it saves any input
+ read to that point into the variable arguments. Report from
+ Fiedler Roman <Roman.Fiedler@ait.ac.at>
- 5/3
- ---
-lib/readline/vi_mode.c
- - replaced references to rl_getc with (*rl_getc_function)
+subst.c
+ - command_substitute: change direct assignment of exit_immediately_on_error
+ to use change_flag ('e', FLAG_OFF) instead
-[bash-2.04-devel frozen]
+flags.c
+ - use errexit_flag as the variable modified by changes to the -e
+ option, reflect those changes to exit_immediately_on_error
- 5/5
- ---
-subst.c
- - make sure that verify_substring_values always passes malloc'd
- memory to maybe_expand_string as the string to be expanded,
- since it gets freed on errors
+execute_cmd.c
+ - execute_builtin: new global variable, builtin_ignoring_errexit, set
+ to 0 by default and set to 1 if eval/source/command executing in a
+ context where -e should be ignored
+ - execute_builtin: set exit_immediately_on_error to errextit_flag
+ after executing eval/source/command in a context where -e should
+ be ignored
-support/shobj-conf
- - don't need -R option for shared libraries on Solaris
- - new stanza for OSF/1 machines with gcc
+flags.c
+ - if builtin_ignoring_errexit is set, changes to errexit_flag are
+ not reflected in the setting of exit_immediately_on_error. Fixes
+ bug reported by Robert Schiele <rschiele@gmail.com>
-lib/readline/readline.c
- - new variable, rl_gnu_readline_p, always 1. Available to allow
- readline users to test whether or not they're linking against
- the true readline, rather than some bogus replacement (from CLISP)
+ 12/23
+ -----
+include/posixjmp.h
+ - setjmp_nosigs: new define, call setjmp in such a way that it will
+ not manipulate the signal mask
-lib/readline/readline.h
- - extern declaration for rl_gnu_readline_p
+{expr,test,trap}.c
+ - setjmp_nosigs: call instead of setjmp; don't need to manipulate
+ signal mask
-hashlib.h, hashcmd.h
- - added prototypes to extern function declarations
+builtins/read.def
+ - read_builtin: setjmp_nosigs: call instead of setjmp; don't need
+ to manipulate signal mask
+
+builtins/evalstring.c:
+ - parse_and_execute: setjmp_nosigs: call instead of setjmp; don't need
+ to manipulate signal mask
+ - parse_string: setjmp_nosigs: call instead of setjmp; don't need
+ to manipulate signal mask
+ - parse_and_execute: save and restore the signal mask if we get a
+ longjmp that doesn't cause us to return or exit (case DISCARD)
+
+ 12/24
+ -----
+general.c
+ - bash_tilde_expand: only set interrupt_immediately if there are no
+ signals trapped; we want to jump to top level if interrupted but
+ not run any trap commands
-pcomplete.h
- - new file, declarations for the programmable completion stuff
+ 12/25
+ -----
+jobs.c
+ - run_sigchld_trap: no longer set interrupt_immediately before calling
+ parse_and_execute, even if this is no longer run in a signal handler
+ context
-pcomplib.c
- - new file, library functions for programmable completion
+input.c
+ - getc_with_restart: add call to QUIT instead of CHECK_TERMSIG
- 5/6
- ---
-builtins/complete.def
- - new file, interface to programmable completion management
+parse.y
+ - yy_stream_get: now that getc_with_restart calls QUIT, don't need to
+ set interrupt_immediately (already had call to run_pending_traps)
-configure.in
- - new enable argument --enable-progcomp, defines
- PROGRAMMABLE_COMPLETION
+execute_cmd.c
+ - execute_subshell_builtin_or_function,execute_function,execute_in_subshell:
+ setjmp_nosigs: call instead of setjmp when saving return_catch; don't
+ need to manipulate signal mask
+ - execute_subshell_builtin_or_function,execute_in_subshell:
+ setjmp_nosigs: call instead of setjmp where appropriate when saving
+ top_level; don't need to manipulate signal mask if we're going to
+ exit right away
-config.h.in
- - #define for PROGRAMMABLE_COMPLETION
+subst.c
+ - command_substitute: setjmp_nosigs: call instead of setjmp when saving
+ return_catch; don't need to manipulate signal mask
+ - command_substitute: setjmp_nosigs: call instead of setjmp where
+ appropriate when saving top_level; don't need to manipulate signal
+ mask if we're going to exit right away
-config-bot.h
- - if PROGRAMMABLE_COMPLETION is defined and READLINE is not,
- #undef PROGRAMMABLE_COMPLETION
+trap.c
+ - run_exit_trap: setjmp_nosigs: call instead of setjmp when saving
+ return_catch; don't need to manipulate signal mask
+ - run_exit_trap: setjmp_nosigs: call instead of setjmp where
+ appropriate when saving top_level; don't need to manipulate signal
+ mask if we're going to exit right away
+ - _run_trap_internal: setjmp_nosigs: call instead of setjmp when saving
+ return_catch; don't need to manipulate signal mask
-pcomplete.c
- - new file, placeholder for programmable completion generators and
- associated functions
+builtins/evalfile.c
+ - _evalfile: setjmp_nosigs: call instead of setjmp when saving
+ return_catch; don't need to manipulate signal mask
-Makefile.in, builtins/Makefile.in
- - changes to add pcomplete.c, builtins/complete.def
+builtins/evalstring.c
+ - evalstring: setjmp_nosigs: call instead of setjmp when saving
+ return_catch; don't need to manipulate signal mask
- 5/7
- ---
-subst.c
- - new function, #ifdef READLINE, skip_to_delim (s, i, delims).
- Starting at s[i], return the index of the first character in s
- that is contained in delims. Understands shell quoting.
- - added two arguments to list_string_with_quotes: an index to
- watch for, and a pointer to int to return the index into the
- created word list of the word containing the sentinel. Now
- compiled in all the time. The returned index starts at 1.
+shell.c
+ - main: setjmp_nosigs: call instead of setjmp where appropriate when
+ saving top_level; don't need to manipulate signal mask if we're
+ going to exit right away
+ - run_one_command: setjmp_nosigs: call instead of setjmp where
+ appropriate when saving top_level; don't need to manipulate signal
+ mask if we're going to exit right away
+ - run_wordexp: setjmp_nosigs: call instead of setjmp where
+ appropriate when saving top_level; don't need to manipulate signal
+ mask if we're going to exit right away
-subst.h
- - extern declarations for char_is_quoted, unclosed_pair, and
- skip_to_delim
- - changed extern declaration for list_string_with_quotes, moved
- it out of the #ifdef ARRAY_VARS section
+eval.c
+ - reader_loop: save and restore the signal mask if we get a longjmp
+ that doesn't cause us to return or exit (case DISCARD)
-bashline.c
- - removed extern declarations for char_is_quoted and unclosed_pair
+ 12/26
+ -----
+parse.y
+ - shell_input_line_{index,size,len}: now of type size_t; in some cases
+ the unsigned property makes a difference
+ - STRING_SAVER: saved_line_{size,index} now of type size_t
+ - shell_getc: don't allow shell_input_line to grow larger than SIZE_MAX;
+ lines longer than that are truncated until read sees a newline;
+ addresses theoretical buffer overflow described by Paul Eggert
+ <eggert@cs.ucla.edu>
+ - set_line_mbstate: size_t changes like shell_getc
+ - shell_getc: if shell_input_line is larger than 32K, free it and
+ start over to avoid large memory allocations sticking around
variables.c
- - new function, SHELL_VAR **all_exported_variables()
- = new function, SHELL_VAR **all_array_variables(), #ifdef ARRAY_VARS
+ - bind_global_variable: new function, binds value to a variable in
+ the global shell_variables table
variables.h
- - extern declaration for all_exported_variables, all_array_variables
+ - bind_global_variable: new extern declaration
-lib/sh/strpbrk.c
- - replacement if we don't have strpbrk(3)
+builtins/declare.def
+ - declare_internal: if -g given with name=value, but variable is not
+ found in the global variable table, make sure to call
+ bind_global_variable so the variable is created and modified at
+ global scope. Fixes a bug where declare -g x=y could modify `x'
+ at a previous function scope
-configure.in, config.h.in
- - check for strpbrk(3), define HAVE_STRPBRK if found
+command.h
+ - W_ASSIGNARRAY: new word flag, compound indexed array assignment
-builtins/shopt.def
- - new function, char **get_shopt_options (), returns an array of
- shopt option names
+subst.h
+ - ASS_MKGLOBAL: new assignment flag, forcing global assignment even in
+ a function context, used by declare -g
-builtins/set.def
- - new function, char **get_minus_o_opts (), returns an array of
- `set -o' option names
+execute_cmd.c
+ - fix_assignment_words: set W_ASSIGNARRAY flag if -a option given to
+ declaration builtin
-builtins/common.h
- - extern declarations for get_shopt_options, get_minus_o_opts
+subst.c
+ - do_assignment_internal: explicitly handle case where we are
+ executing in a function and we want to create a global array or
+ assoc variable
+ - shell_expand_word_list: call make_internal_declare if -a option
+ given to declaration builtin (W_ASSIGNARRAY); handle -g option with
+ it (W_ASSNGLOBAL). Fixes inconsistency noticed by Vicente Couce
+ Diaz <vituko@gmail.com>, where declare -ag foo=(bar) could modify
+ array variable foo at previous function scope, not global scope
- 5/10
- ----
-pathexp.c
- - make the POSIX_GLOB_LIBRARY code implement the GLOBIGNORE stuff
+ 12/27
+ -----
+bashline.c
+ - Minix needs the third argument to tputs to be a void funtion taking
+ an int argument, not an int-returning function. Fix from
+ John E. Malmberg <wb8tyw@qsl.net> as part of VMS bash port
- 5/11
- ----
-array.c
- - new convenience function, char **array_to_argv (ARRAY *),
- converts an array to a list of string values
+ 12/29
+ -----
+configure.ac,version.c,patchlevel.h
+ - bash-4.3-devel: new version, new shell compatibility level (43)
-array.h
- - extern declaration for array_to_argv
+subst.c
+ - parameter_brace_patsub: put the bash-4.2 code back in from the
+ change of 3/3 that runs the replacement string through quote
+ removal, make it dependent on shell_compatibility_level <= 42
-execute_cmd.c
- - new convenience function, int execute_shell_function (SHELL_VAR *,
- WORD_LIST *)
+builtins/shopt.def
+ - compat42: new shopt option
+ - set_compatibility_level: change logic to set and unset various
+ compat variables and shell_compatibility_level
-execute_cmd.h
- - extern declaration for execute_shell_function
+COMPAT
+ - new documentation for bash-4.3 compatibility changes
-builtins/evalstring.c
- - make parse_and_execute unwind_protect current_prompt_string
- if the shell is interactive
+doc/{bash.1,bashref.texi}
+ - compat42: document new shopt option
+
+builtins/shopt.def
+ - set_compatibility_opts: new function, sets the various shopt
+ compat variables based on the value of shell_compatibility_level
+
+builtins/common.h
+ - set_compatibility_opts: new extern declaration
- 5/12
- ----
variables.c
- - moved bind_int_variable from expr.c to here; it now returns a
- SHELL_VAR *, like the other variable binding functions
+ - BASH_COMPAT: new special variable; sets the shell compatibility
+ level. Accepts values in decimal (4.2) or integer (42) form;
+ Unsetting variable, setting it to empty string, or setting it to
+ out-of-range value sets the shell's compatibility level to the
+ default for the current version. Valid values are 3.1/31 through
+ the current version
+ - sv_shcompat: new function implementing logic for BASH_COMPAT
variables.h
- - extern declaration for bind_int_variable
+ - sv_shcompat: new extern declaration
- 5/14
- ----
-bashline.c, parse.y, general.c, make_cmd.c, subst.c, braces.c, execute_cmd.c
- - replaced some common code sequences with calls to substring()
+doc/{bash.1,bashref.texi}
+ - BASH_COMPAT: description of new variable
-lib/readline/doc/rltech.texinfo
- - fixed small typo in description of rl_completion_entry_function
+lib/readline/complete.c
+ - _rl_colored_stats: default back to 0 for 4.3 release branch
- 5/18
- ----
-stringlib.c
- - new function, strcreplace(char *string, int c, char *text, int do_glob)
- replaces all occurrences of C in STRING with TEXT. Backslash may
- be used to quote C. If DO_GLOB is non-zero, the replacement TEXT
- is quoted to protect globbing characters.
+ 1/5/2013
+ --------
+quit.h
+ - remove spurious call to itrace in CHECK_WAIT_INTR
-externs.h
- - extern declaration for strcreplace
+bashline.c
+ - bash_event_hook: if we're going to jump to top_level, make sure we
+ clean up after readline() by calling rl_cleanup_after_signal().
+ Fixes bug reported against devel branch by Raphaël Droz
+ <raphael.droz@gmail.com>
+ - bash_event_hook: reset the event hook before checking for signals
+ or traps in case we longjmp
-bashhist.c
- - use strcreplace in expand_histignore_pattern
+doc/{bash.1,bashref.texi}
+ - small additions to the set -e section to make it more clear that
+ contexts where -e is ignored extend to compound commands as well
+ as shell functions
-pcomplete.c
- - finished initial implementation of programmable completion
+lib/readline/readline.h
+ - rl_signal_event_hook: new extern declaration
-alias.c
- - code to set the aliases itemlist to dirty when an alias is added
- or removed, if PROGRAMMABLE_COMPLETION is defined
+lib/readline/input.c
+ - rl_signal_event_hook: new variable, hook function to call when a
+ function (currently just read(2)) is interrupted by a signal and
+ not restarted
+ - rl_getc: call rl_signal_event_hook instead of rl_event_hook
-variables.c
- - code to set the functions itemlist to dirty when a shell function
- is added or removed, if PROGRAMMABLE_COMPLETION is defined
+lib/readline/doc/rltech.texi
+ - rl_signal_event_hook: document new function
-builtins/enable.def
- - code to set the builtins itemlist to dirty when a shell builtin
- is added or removed, if PROGRAMMABLE_COMPLETION is defined
- - code to set the enabled and disabled itemlists to dirty when a
- builtin is enabled or disabled, if PROGRAMMABLE_COMPLETION is
- defined
+bashline.c
+ - changes to set rl_signal_event_hook instead of rl_event_hook
-builtins/shopt.def
- - new shell option, `progcomp', on if programmable_completion_enabled
- (from pcomplete.c) is non-zero
+lib/readline/readline.h
+ - change readline version numbers to 6.3
+ 1/6
+ ---
doc/{bash.1,bashref.texi}
- - note that `${' is not eligible for brace expansion to avoid
- conflicts with parameter expansion
+ - a couple of changes to the descriptions of the ERR trap and its
+ effects based on a message from Rob Nagler <nagler@bivio.biz>
- 5/19
+ 1/9
+ ---
+expr.c
+ - expassign: invalidate curlval before freeing and NULLing tokstr to
+ avoid aliasing issues. Fixes bug reported by Eduardo A. Bustamante
+ López<dualbus@gmail.com> and Dan Douglas <ormaaj@gmail.com>
+
+braces.c
+ - array_concat: don't be so aggressive in trying to short-circuit. We
+ can only short-circuit if we have a single-element array where the
+ element is an empty string (array[0] == "" array[1] = 0x0). Existing
+ practice requires us to replicate arrays and prefix or append empty
+ strings. Fixes bug reported by Eduardo A. Bustamante López
+ <dualbus@gmail.com>
+
+ 1/11
----
-builtins/complete.def
- - added a new `compgen' builtin for use by completion functions
+execute_cmd.c
+ - execute_builtin: since mapfile uses evalstring() to run its callbacks
+ internally, just like eval, so it needs to handle the case where the
+ temp environment given to mapfile persists throughout the entire
+ set of callback commands. This might be a problem with trap also, but
+ trap isn't run in the same way. Fixes bug reported by Dan Douglas
+ <ormaaj@gmail.com>
- 5/21
+ 1/13
----
-bashline.c
- - new function, void clear_hostname_list(void), to delete all the
- entries in the hostname completion list
+redir.c
+ - redirection_error: before expanding the redirection word (if
+ expandable_redirection_filename returns true), disable command
+ substitution during expansion. Fixes bug reported by Dan Douglas
+ <ormaaj@gmail.com>
-bashline.h
- - extern declaration for clear_hostname_list
+subst.c
+ - expand_word_internal: case '\\': if the next character is an IFS
+ character, and the expansion occurs within double quotes, and the
+ character is not one for which backslash retains its meaning, add
+ the (escaped) '\' and the (escaped) character. Fixes bug reported
+ by Dan Douglas <ormaaj@gmail.com>
-variables.c
- - changed sv_hostfile to clear the hostname list if $HOSTFILE is
- unset
+ 1/15
+ ----
+builtins/cd.def
+ - cd_builtin: make sure call to internal_getopt handles -e option.
+ Fixes bug reported by <mashimiao.fnst@cn.fujitsu.com>
-doc/{bash.1,bashref.texi}
- - documented new behavior of HOSTFILE when it's unset
- - added some awkwardly-worded text to make it clear that an
- interactive shell cannot be started with non-option arguments
- or with the -c option
+ 1/17
+ ----
+subst.c
+ - expand_word_list_internal: make sure tempenv_assign_error is
+ initialized to 0
-shell.c
- - restored NON_INTERACTIVE_LOGIN_SHELLS test, so that if it is
- defined, shells with argv[0][0] == '-' and not in posix mode
- run the startup files even if non-interactive
+execute_cmd.c
+ - execute_simple_command: make sure tempenv_assign_error is reset to 0
+ after it's tested to see if an error should force the shell to exit.
+ Fixes problem where a the failure of a tempenv assignment preceding
+ a non-special builtin `sticks' and causes the next special builtin
+ to exit the shell. From a discussion on bug-bash started by
+ douxin <wq-doux@cn.fujitsu.com>
-config-top.h
- - added commented-out #define for NON_INTERACTIVE_LOGIN_SHELLS
+ 1/20
+ ----
+subst.c
+ - parameter_brace_expand_rhs: call stupidly_hack_special_variables
+ after assigning with ${param[:]=word} even if IFS is changing.
+ Suggested by Dan Douglas <ormaaj@gmail.com> [TENTATIVE, needs work
+ on IFS side effects]
- 5/24
+command.h
+ - W_GLOBEXP (which was unused) is now W_SPLITSPACE (which isn't used
+ yet)
+
+{execute_cmd,subst,variables}.c
+ - removed all code that mentioned W_GLOBEXP
+ - removed mention of gnu_argv_flags and code that set it
+
+ 1/22
----
subst.c
- - make sure the characters in IFS are cast to unsigned before being
- indexed in ifscmap (expand_word_internal)
+ - param_expand: set W_SPLITSPACE if we expand (unquoted) $* and
+ IFS is unset or null so we can be sure to split this on spaces
+ no matter what happens with IFS later
+ - expand_word_internal: note that param_expand returns W_SPLITSPACE
+ in the returned word flags and keep track of that state with
+ `split_on_spaces'
- 5/25
+ 1/23
----
-parse.y
- - change grammar rule for arithmetic for expressions to handle a
- list_terminator after the `))' instead of requiring a newline_list
+subst.c
+ - expand_word_internal: if split_on_spaces is non-zero, make sure
+ we split `istring' on spaces and return the resultant word. The
+ previous expansions should have quoted spaces in the positional
+ parameters where necessary. Suggested by Dan Douglas
+ <ormaaj@gmail.com>
+
+execute_cmd.c
+ - execute_command_internal: make sure any subshell forked to run a
+ group command or user subshell at the end of a pipeline runs any
+ EXIT trap it sets. Fixes debian bash bug 698411
+ http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=698411
subst.c
- - fix so that variable indirection can reference the shell's special
- variables (like $0...$9, $$, $#, etc.)
+ - shell_expand_word_list: fix code that creates args for and calls
+ make_internal_declare to avoid calling it twice (missing `else'
+ in 12/26 change)
+ - do_assignment_internal: fix code from 12/26 change to fix problem
+ where an existing assoc variable could be converted to an array
+ without checking `mkassoc'
-pcomplete.c
- - changed gen_wordlist_matches to use split_at_delims to split the
- string at $IFS first, then expand each individual word
+ 1/24
+ ----
+builtins/evalfile.c
+ - _evalfile: add missing `close (fd)' calls before returning to
+ avoid fd leaks. Bug and fix from Roman Rakus <rrakus@redhat.com>
- 5/27
+ 1/25
----
-lib/readline/histfile.c
- - change things so that O_BINARY mode is used when reading and writing
- the history file on cygwin32 as well as OS/2 (__EMX__)
+builtins/read.def
+ - read_builtin: don't try to play tricks with the top of the unwind-
+ protect stack after read gets a SIGALRM; save input_string to new
+ memory, run the stack, then restore input_string and assign the
+ variables. Part of fix for bug reported by konsolebox
+ <konsolebox@gmail.com>; the rest of the fix is with the changes in
+ trap and signal handling and doing away with interrupt_immediately
-parse.y
- - add calls to push_delimiter and pop_delimiter around the call
- to parse_matched_pair when parsing $'...' and $"..." so the
- history entry is added correctly
+ 1/26
+ ----
+redir.c
+ - redirection_expand, write_here_string, write_here_document: before
+ calling any of the word expansion functions, after setting
+ expanding_redir to 1 (which bypasses the temp environment in the
+ variable lookup functions), call sv_ifs to reset the cached IFS-
+ related variables set by subst.c:setifs(). This ensures that
+ redirections will not get any IFS values that are set in the
+ temporary environment, as Posix specifies. Then, after the word
+ expansions, after resetting expanding_redir to 0, call sv_ifs
+ again to make sure the cached IFS values are set from any
+ assignments in the temporary environment. We force executing_builtin
+ to 1 to `fool' the variable lookup functions into using any temp
+ environment, then reset it to its old value after sv_ifs returns.
+ This is what allows read() to use the (cached) IFS variables set
+ in the temp environment. Fixes inconsistency reported by Dan Douglas
+ <ormaaj@gmail.com>
- 5/28
+ 1/29
----
-doc/{bash.1,bashref.texi}, lib/readline/doc/rluser.texinfo
- - documented new programmable completion facilities
+lib/readline/display.c
+ - update_line: fix off-by-one error when updating vis_lbreaks array
+ in a multibyte locale that occurs when moving multibyte chars from
+ one line down to another. Bug report and fix from Egmont
+ Koblinger <egmont@gmail.com>
-doc/bashref.texi
- - documented new configure `--enable-progcomp' option
+ 1/30
+ ----
+configure.ac
+ - changed version to 4.3-alpha
- 6/1
+redir.c
+ - redir_open: handle open returning -1/EINTR, which seems to happen
+ a lot with FIFOs and SIGCHLD, and call QUIT to handle other
+ signals that can interrupt open(2). Bug report and initial fix
+ from Mike Frysinger <vapier@gentoo.org>
+
+ 1/31
+ ----
+subst.c
+ - parameter_brace_expand: make sure to propagate the PF_ASSIGNRHS flag
+ to parameter_brace_expand_word
+ - parameter_brace_expand_word: make sure that if the PF_ASSIGNRHS flag
+ is set and we are expanding ${a[@]} or ${a[*]} we set quoted to
+ include Q_DOUBLE_QUOTES before calling array_value_internal, mirroring
+ what we do for $@ and $*. Fixes inconsistency reported by Dan
+ Douglas <ormaaj@gmail.com>
+
+configure.ac
+ - use AC_CHECK_TOOL instead of AC_CHECK_PROG to check for ar, since it
+ will find $host-prefixed versions of utilities. Report and fix from
+ Mike Frysinger <vapier@gentoo.org>
+
+builtins/setattr.def
+ - set_var_attribute: check whether bind_variable (called when the
+ variable whose attributes are being modified is found in the temp
+ environment) just modified a read-only global variable, and don't
+ bother marking the temporary variable for propagation if so. The
+ propagation is superfluous and will result in a strange error
+ message
+
+ 2/2
---
variables.c
- - if make_local_variable is being asked to make a local shadow
- variable of a read-only variable, print an error message and
- return NULL
- - if make_local_variable returns NULL to make_local_array_variable,
- just return it
-
-builtins/declare.def
- - if we're making local variables, and make_local_array_variable or
- make_local_variable returns NULL, just flag an error and go on
+ - initialize_shell_variables: don't try to import function definitions
+ with invalid names from the environment if already in posix mode,
+ but create them as (invisible) exported variables so they pass
+ through the environment. Print an error message so user knows
+ what's wrong. Fixes bug reported by Tomas Trnka <ttrnka@mail.muni.cz>
- 6/2
+ 2/9
---
-Makefile.in
- - changed release status to `alpha1'
-[bash-2.04-alpha1 frozen]
+builtins/read.def
+ - sigalrm_seen, alrmbuf: now global so the rest of the shell (trap.c)
+ can use them
+ - sigalrm: just sets flag, no longer longjmps to alrmbuf; problem was
+ longjmp without manipulating signal mask, leaving SIGALRM blocked
+
+quit.h
+ - move CHECK_ALRM macro here from builtins/read.def so trap.c:
+ check_signals() can call it
- 6/18
+trap.c
+ - check_signals: add call to CHECK_ALRM before QUIT
+ - check_signals_and_traps: call check_signals() instead of including
+ CHECK_ALRM and QUIT inline. Integrating check for read builtin's
+ SIGALRM (where zread call to check_signals_and_traps can see it)
+ fixes problem reported by Mike Frysinger <vapier@gentoo.org>
+
+ 2/12
----
-bashline.c
- - fixed find_cmd_start so that it doesn't spin-loop on commands with
- a command separator like `;' or `&'. Problem was not incrementing
- `os' past the delimiter found
+lib/glob/xmbsrtowcs.c
+ - xdupmbstowcs2: fixed but where end of string was not handled
+ correctly, causing loop to go past end of string in a bunch of cases.
+ Fixes bug reported by "Dashing" <dashing@hushmail.com>
- 6/21
+
+ 2/13
----
-variables.c
- - cosmetic change: introduced two macros to encapsulate initialization
- of dynamic variables
+builtins/pushd.def
+ - popd_builtin: treat any argument that isn't -n or of the form
+ [-+][[:digit:]]* as an error. Fixes problem reported by Bruce
+ Korb <bruce.korb@gmail.com>
- 6/23
+ 2/14
----
-pcomplib.c
- - new function: num_progcomps(void), returns the number of entries in
- the programmable completions hash table
+configure.ac
+ - add check for sig_atomic_t; already a placeholder for it in
+ config.h.in
-pcomplete.h
- - extern declaration for num_progcomps
+ 2/15
+ ----
+subst.c
+ - do_compound_assignment: don't call assign_compound_array_list with
+ a NULL variable in case make_local_xxx_variable returns NULL
+ (it will if you try to shadow a readonly or noassign variable).
+ Fixes bug reported by Richard Tollerton <rich.tollerton@ni.com>
-bashline.c
- - make sure some programmable completions have been defined before
- diving into the programmable completion code
+ 2/16
+ ----
+variables.c
+ - make_local_variable: print error messager if an attempt is made to
+ create a local variable shadowing a `noassign' variable. Previously
+ we just silently refused to do it
-shell.c
- - in open_shell_script, move the fd opened to the script to a high
- one with move_to_high_fd in all cases -- the buffered input code
- still has problems if fd == 0 and later on fd 0 is closed or
- redirected (cf. input.c:check_bash_input())
+trap.[ch]
+ - get_original_signal: now global so rest of the shell can use it
-builtins/printf.def
- - getlong() now calls strtol directly with a third argument of 0 so
- it can handle 0x (hex) and 0 (octal) prefixes, which legal_number
- does not -- this has implications for arguments to %d that begin
- with `0'
+sig.c
+ - initialize_shell_signals: install a signal handler for SIGTERM
+ that does nothing except set a sigterm_received flag instead of
+ ignoring it with SIG_IGN, as long as SIGTERM is not ignored when
+ the shell is started. Use get_original_signal early to get the
+ original handler, since we will do that later anyway
+ - set_signal_handler: if installing sigterm_sighandler as the SIGTERM
+ handler, make sure to add SA_RESTART flag to make it as close to
+ SIG_IGN as possible
-lib/sh/getenv.c
- - make sure that the variable found in the temporary environment has
- a non-null value before calling savestring() on it
+sig.h
+ - sigterm_sighandler: new extern declaration
-subst.c
- - make sure split_at_delims returns 0 in *nwp and *cwp if handed a
- null or empty string
+quit.h
+ - RESET_SIGTERM: set sigterm_receved to 0
+ - CHECK_SIGTERM: check sigterm_received; if it's non-zero, treat it
+ as a fatal signal and call termsig_handler to exit the shell
-pcomplete.c
- - make sure build_arg_list handles lwords == 0, as it will be if an
- empty command line is handed to the programmable completion code
- (like compgen -C xyz)
+jobs.c
+ - make_child: call RESET_SIGTERM just before fork() so we can detect
+ if the child process received a SIGTERM before it's able to change
+ the signal handler back to what it was when the shell started
+ (presumably SIG_DFL). Only has effect if the shell installed
+ sigterm_sighandler for SIGTERM, interactive shells that were not
+ started with SIG_IGN as the SIGTERM handler
+ - make_child: call RESET_SIGTERM in the parent after fork() so the
+ rest of the shell won't react to it
execute_cmd.c
- - make sure execute_shell_function passes a non-null bitmap of fds to
- close to execute_function, allocating and deallocating it locally
-
-sig.c
- - don't mess with SIGPROF in initialize_terminating_signals
+ - execute_simple_command: call CHECK_SIGTERM after make_child in child
+ to catch SIGTERM received after fork() and before restoring old
+ signal handlers
+ - execute_disk_command: call CHECK_SIGTERM after make_child in child
+ process after restoring old signal handlers and again just before
+ calling shell_execve. Fixes race condition observed by
+ Padraig Brady <p@draigbrady.com> when testing with his `timeout'
+ program
-jobs.c, nojobs.c
- - if the user has requested it with checkwinsize, check for a new
- window size after a job exits due to a signal as well as being
- stopped
+lib/readline/display.c
+ - open_some_spaces: new function, subset of insert_some_chars that just
+ opens up a specified number of spaces to be overwritten
+ - insert_some_spaces: now just calls to open_some_spaces followed by
+ _rl_output_some_chars
+ - update_line: use col_temp instead of recalculating it using
+ _rl_col_width in the case where we use more columns with fewer bytes
+ - update_line: use open_some_spaces and then output the right number
+ of chars instead of trying to print new characters then overwrite
+ existing characters in two separate calls. This includes removing
+ some dodgy code and making things simpler. Fix from Egmont
+ Koblinger <egmont@gmail.com>
+ - use new variable `bytes_to_insert' instead of overloading temp in
+ some code blocks (nls - nfd, bytes that comprise the characters
+ different in the new line from the old)
-lib/readline/kill.c
- - changed rl_kill_region to set the point to the beginning of the
- region after the kill is performed
+ 2/18
+ ----
+redir.c
+ - do_redirection_internal: add undoable redirection for the implicit
+ close performed by the <&n- and >&n- redirections. Fixes bug
+ reported by Stephane Chazelas <stephane.chazelas@gmail.com>
- 6/24
+ 2/19
----
-configure.in
- - make sure ranges ([1-9]*) are protected with [...] for m4 quoting
+sig.c
+ - termsig_handler: an interactive shell killed by SIGHUP and keeping
+ command history will try to save the shell history before exiting.
+ This is an attempt to preserve the save-history-when-the-terminal-
+ window-is-closed behavior
-variables.c
- - make sure that bind_variable_value honors `set -a' and that it
- marks the environment for recreation if necessary
+ 2/21
+ ----
+braces.c
+ - brace_expand: if a sequence expansion fails (e.g. because the
+ integers overflow), treat that expansion as a simple string, including
+ the braces, and try to process any remainder of the string. The
+ remainder may include brace expansions. Derived from SuSE bug
+ 804551 example (https://bugzilla.novell.com/show_bug.cgi?id=804551)
- 6/25
+ 2/23
----
-lib/readline/complete.c
- - if we're completing at the end of the line, find_completion_word
- shouldn't test whether the character is a special word break
- char and (possibly) advance rl_point past the end of the buffer
+{quit,sig}.h,sig.c
+ - sigterm_received declaration now in sig.h; type is sig_atomic_t
+ - sigwinch_received type now sig_atomic_t
+ - sig.h includes bashtypes.h and <signal.h> if SIG_DFL not defined
+ (same logic as trap.h) to pick up sig_atomic_t
-parse.y
- - change mk_msgstr to write embedded newlines as `\n"<NL>"', as the
- PO file format apparently requires
+unwind_prot.c
+ - include sig.h before quit.h (reverse order)
- 6/28
+ 2/27
----
-lib/readline/display.c
- - code to manage the growth of the inv_lbreaks and vis_lbreaks arrays
- beyond 256, since there are pathalogical command lines that can
- have more than 256 line breaks for redisplay
+builtins/shopt.def
+ - reset_shopt_options: make sure check_window_size is reset to the
+ default from config.h, not unconditionally to 0
+
+jobs.[ch]
+ - last_made_pid, last_asynchronous_pid: now volatile. Change from SuSE
+
+jobs.c
+ - wait_for: if we're using sigaction to install a handler for SIGCHLD,
+ make sure we specify SA_RESTART
- 6/30
- ----
-stringlib.c
- - include pathexp.h for extern declaration of quote_globbing_chars
+lib/{tilde,readline}/shell.c
+ - get_home_dir: instead of looking in the password file every time,
+ look once and cache the result
-variables.h
- - change CACHE_EXPORTSTR to savestring() the value and not set the
- att_importstr flag
+sig.[ch]
+ - sigwinch_received, sigterm_received: now `volatile' qualified
- 7/6
- ---
-support/bashbug.sh
- - bashbug now accepts --help and --version options
+sig.c,quit.h
+ - interrupt_state,terminating_signal: now sig_atomic_t
-bashline.c
- - change bash_quote_filename to use single quotes if the user
- does not specify an opening quote character and the filename being
- completed contains newlines
+ 3/1
+ ---
+MANIFEST,examples/*
+ - removed around 120 files without FSF copyrights; requested by
+ Karl Berry in early January
- 7/8
+ 3/2
---
-configure.in, aclocal.m4, config.h.in
- - BASH_TYPE_INT32_T --> BASH_TYPE_BITS32_T; int32_t --> bits32_t
- - BASH_TYPE_U_INT32_T --> BASH_TYPE_U_BITS32_T; u_int32_t --> u_bits32_t
+lib/malloc/malloc.c
+ - morecore: only check whether SIGCHLD is trapped if SIGCHLD is defined
-lib/malloc/{malloc,gmalloc}.c, lib/sh/inet_aton.c
- - int32_t --> bits32_t; u_int32_t --> u_bits32_t
+doc/bashref.texi
+ - Fixed most of the examples in the GNU Parallel section to use better
+ shell idioms following complaints on bug-bash; added a couple of
+ examples and smoothed out the text
-aclocal.m4
- - new tests: BASH_TYPE_BITS16_T, BASH_TYPE_U_BITS16_T
+quit.h
+ - include "sig.h" for sig_atomic_t
-configure.in
- - add check for sizeof short, sizeof char
- - call BASH_TYPE_BITS16_T, BASH_TYPE_U_BITS16_T
+lib/readline/display.c
+ - update_line: when inserting one or more characters at the end of
+ the display line in a non-multibyte environment, just write from the
+ first difference to the end of the line and return. We don't have
+ to adjust _rl_last_c_pos. This is needed to adjust from the old
+ two-part copy to a single call to _rl_output_some_chars (change of
+ 2/16)
-config.h.in
- - new #defines for bits16_t, u_bits16_t
+ 3/4
+ ---
+Makefile.in,doc/Makefile.in
+ - PACKAGE_TARNAME, docdir: new variables substituted by autoconf
+ - OTHER_DOCS,OTHER_INSTALLED_DOCS: new variables with auxiliary
+ documentation files to be installed into $(docdir)
+ - install: add new rule to install $(OTHER_DOCS)
+ - uninstall: add new rule to uninstall $(docdir)/$(OTHER_INSTALLED_DOCS)
-lib/malloc/malloc.c
- - use u_bits16_t for type of mi_magic2
+doc/bash.1
+ - add URL to `POSIX' file in `SEE ALSO' section; put pointer to that
+ section in --posix and set -o posix descriptions
+examples/
+ - removed around 110 examples at the request of the FSF due to copyright
+ issues
- 7/16
- ----
-lib/readline/display.c
- - new private library function, _rl_strip_prompt, to remove instances
- of RL_PROMPT_{START,END}_IGNORE from the passed prompt string
+ 3/5
+ ---
+builtins/setattr.def
+ - readonly: modified help text slightly to make it clearer that
+ functions aren't changed or displayed unless the -f option is given.
+ Report from <gotmynick@gmail.com>
-lib/readline/rlprivate.h
- - extern declaration for _rl_strip_prompt
+ 3/9
+ ---
+include/typemax.h
+ - SIZE_MAX: define to 65535 (Posix minimum maximum) if not defined
-lib/readline/readline.c
- - call _rl_strip_prompt before outputting the prompt if we're not
- doing any echoing of input chars (readline_echoing_p == 0)
+parse.y
+ - include "typemax.h" for possible SIZE_MAX definition, make sure we
+ include it after shell.h
-Makefile.in
- - tentative change to rule for parser-built: use $< instead of
- `y.tab.h' in recipe
+{braces,expr}.c
+ - include "typemax.h" for possible INTMAX_MIN and INTMAX_MAX definitions
- 7/19
+ 3/10
----
-support/config.{guess,sub}
- - add code to handle all versions of Mac OS (e.g., Mac OS X)
+bashline.c
+ - bash_default_completion: make sure completion type of `!' (same as
+ TAB but with show-all-if-ambiguous set) and glob-word-completion
+ sets rl_filename_completion_desired to 0 so extra backslashes don't
+ get inserted by `quoting' the completion. We can't kill all the
+ matches because show-all-if-ambiguous needs them. Bug report from
+ Marcel (Felix) Giannelia <info@skeena.net>
- 7/26
+[bash-4.3-alpha frozen]
+
+ 3/14
----
-lib/readline/bind.c
- - on cygwin32, treat \r\n as a line terminator when reading the
- inputrc file
+general.c
+ - trim_pathname: use memmove instead of memcpy since the source and
+ destination pathnames may overlap. Report and fix from Matthew
+ Riley <mattdr@google.com>
- 7/29
+ 3/18
----
-lib/sh/netopen.c
- - fixed problem in _getaddr with copying the address returned from
- gethostbyname to the `struct in_addr *' argument -- hostnames
- now work in /dev/(tcp|udp)/host/port
+configure.ac
+ - socklen_t is defined as `unsigned int' if configure can't find it
- 8/2
- ---
-configure.in
- - on Apple Rhapsody systems, set LOCAL_CFLAGS to -DRHAPSODY
+ 3/20
+ ----
+lib/readline/complete.c
+ - S_ISVTX: since it's not defined on all platforms (Minix), make sure
+ its use is protected with #ifdef
-variables.h
- - changes from Apple for building fat binaries on Rhapsody,
- setting HOSTYPE, OSTYPE, VENDOR, and MACHTYPE
+ 3/21
+ ----
+doc/{bash.1,bashref.texi}
+ - Added mention of ${!name[@]} and ${!name[*]} expansions to get all
+ indices of an array. Suggested by Jonathan Leffler
+ <jonathan.leffler@gmail.com>
-lib/readline/terminal.c
- - some work on the `dumb terminal' setup code in _rl_init_terminal_io
- to make sure it's complete for use by the redisplay code and some
- stuff in {readline,complete}.c
+ 3/24
+ ----
+subst.h
+ - SD_IGNOREQUOTE: new define for skip_to_delim; if set, means that
+ single quotes (for now) will be treated as ordinary characters
-lib/readline/display.c
- - new function, _rl_current_display_line, returns the number of
- lines down from the first `screen line' of the current readline
- line the cursor is
+subst.c
+ - skip_to_delim: handle SD_IGNOREQUOTE. no callers use it for now
-lib/readline/readline.c
- - make rl_refresh_line call _rl_current_display_line
+ 3/25
+ ----
+support/config.{guess,sub}
+ - updated to versions from autoconf-2.69
-lib/readline/rlprivate.h
- - extern declaration for _rl_current_display_line
+ 3/31
+ ----
+lib/sh/shquote.c
+ - sh_single_quote: short-circuit quoting a single "'" instead of
+ creating a long string with empty single-quoted strings
- 8/3
- ---
-doc/bashref.texi
- - reorganized slightly:
- o a new shell builtins chapter
- o a new shell variables chapter
- o a new special builtins section
- o bourne shell features chapter removed
- o alias builtins moved to the bash builtins section
- o bourne shell differences moved to appendix
- o order of readline and history chapters swapped
- o indices are now unnumbered appendices
- o some text cleaned up and some explanatory text added
+parser.h
+ - DOLBRACE_QUOTE2: new define, like DOLBRACE_QUOTE, but need to single-
+ quote results of $'...' expansion because quote removal will be
+ done later. Right now this is only done for ${word/pat/rep}
-lib/readline/terminal.c
- - if a calling application is using a custom redisplay function,
- don't call tgetent to get the terminal attributes, since those
- are used only by the redisplay code. Still get the window
- size, though
+parse.y
+ - parse_matched_pair: set state to DOLBRACE_QUOTE2 for pattern
+ substitution word expansion so we don't treat single quote specially
+ in the pattern or replacement string
+ - parse_matched_pair: if we're parsing a dollar-brace word expansion
+ (${...}) and we're not treating single quote specially within
+ double quotes, single-quote the translation of $'...' ansi-c
+ escaped strings. Original report and fix from Eduardo A.
+ Bustamante López <dualbus@gmail.com>
-lib/glob/fnmatch.c
- - range comparisons in bracket expressions no longer use strcoll(3),
- since in some locales (de, for example), [A-Z] matches all
- characters
+subst.c
+ - extract_dollar_brace_string: ${word/pat/rep} scanning now sets the
+ DOLBRACE_QUOTE2 flag instead of DOLBRACE_QUOTE so we don't treat
+ single quotes specially within a double-quoted string
-parse.y, print_cmd.c
- - some changes to make sure the shell compiles when
- DPAREN_ARITHMETIC is not defined but ARITH_FOR_COMMAND is
+execute_cmd.c
+ - fix_assignment_words: skip over assignment statements preceding a
+ command word before trying to figure out whether or not assignment
+ statements following a possible declaration command should be
+ treated specially. Fixes bug reported by Dan Douglas
+ <ormaaj@gmail.com>
- 8/5
+ 4/4
---
-redir.c
- - in the here document code in do_redirection_internal, check
- that the file descriptor returned by here_document_to_fd is not
- the same as a file descriptor specified as the redirector
- before closing it
+lib/readline/readline.c
+ - _rl_dispatch_subseq: only call _rl_vi_set_last (and check whether
+ the key is a text modification command) if the key sequence length
+ is 1. That keeps the arrow keys from setting the last command
+ when called in vi command mode. Fixes bug reported by Ian A.
+ Watson <watson_ian_a@lilly.com>
- 8/6
+ 4/6
---
-parse.y
- - make sure the pipline rule for `timespec BANG pipeline' sets the
- CMD_INVERT_RETURN flag for the pipeline command
-
-builtins/wait.def
- - use setjmp with a special jump buffer to take longjmps in the
- case that a SIGINT is received while waiting for jobs or processes
- it makes wait return with a status > 128, as POSIX.2 specifies
-
-{jobs,nojobs}.c
- - changed wait_sigint_handler to longjmp to wait_intr_buf if it's
- executing the wait builtin and SIGINT is trapped. It calls
- trap_handler to make sure a pending trap for SIGINT is set also,
- so the trap is taken when the wait builtin returns
+lib/readline/bind.c
+ - rl_parse_and_bind: when parsing a double-quoted string as the value
+ of a variable, make sure we skip past the leading double quote.
+ Fix from Andreas Schwab <schwab@linux-m68k.org>
- 8/9
- ---
-jobs.c
- - save and restore the value of errno in sigchld_handler
+variables.c
+ - hash_lookup: set new local variable last_table_searched to the table
+ a successful lookup appears in; tested in make_local_variable to
+ solve the problem below
+ - make_local_variable: if we find a variable with the tempenv flag
+ set at the same `level' as variable_context', but not found in the
+ temporary_env (temp environment preceding the builtin), return it.
+ The temp environment preceding the function call has already been
+ merged (in execute_function) into the list of variable contexts the
+ function sees as shell_variables by the time this is called. Fixes
+ inconsistency pointed out by Dan Douglas <ormaaj@gmail.com>
-trap.c
- - save and restore the value of errno in trap_handler
+subst.c
+ - expand_arith_string: expanded out contents of expand_string,
+ expand_string_internal, expand_string_if_necessary to create a
+ WORD_DESC and call call_expand_word_internal() on it directly.
+ We don't want process substitution to be performed ( 1<(2) ) should
+ mean something different in an arithmetic expression context.
+ It doesn't work to just turn on the DQUOTE flag, since that means
+ that things like ${x["expression"]} are not expanded correctly.
+ Fixes problem pointed out by Dan Douglas <ormaaj@gmail.com>
- 8/10
+ 4/13
----
-Makefile.in
- - changed release status to beta1
+subst.c
+ - process_substitute: run the EXIT trap before exiting, as other
+ shells seem to. Fixes problem pointed out by Dan Douglas
+ <ormaaj@gmail.com>
- 8/13
+lib/readline/readline.c
+ - readline_internal_setup: call rl_vi_insertion_mode to enter vi
+ mode instead of rl_vi_insert_mode to avoid resetting the saved last
+ command information. Posix says that `.' can repeat a command
+ that was entered on a previous line so we need to save the info.
+ Fixes bug reported by Ian A. Watson <watson_ian_a@lilly.com>
+
+ 4/14
----
-include/posixtime.h
- - new file to encapsulate the <time.h> and <sys/time.h> mess
+lib/readline/complete.c
+ - rl_completion_matches: make sure xrealloc returns something non-null
+ (can happen when interrupted by a signal) before trying to add
+ matches to match_list
-Makefile.in
- - add posixtime.h to list of include files in BASHINCFILES
- - update dependencies for general.o, execute_cmd.o
+subst.c
+ - array_remove_pattern: return NULL right away if array_variable_part
+ returns an invisible variable
+ - array_length_reference: handle array_variable_part returning an
+ invisible variable
+ - get_var_and_type: handle array_variable_part returning an invisible
+ variable
-general.c, execute_cmd.c, builtins/times.def
- - include posixtime.h instead of <time.h>, <sys/time.h>
+ 4/15
+ ----
+execute_cmd.c
+ - execute_command_internal: make sure to run the EXIT trap for group
+ commands anywhere in pipelines, not just at the end. From a point
+ raised by Andreas Schwab <schwab@linux-m68k.org>
-general.c
- - protect inclusion of <sys/times.h> with HAVE_SYS_TIMES_H check
+variables.c
+ - bind_int_variable: make sure invisible flag is unset. Fixes problems
+ like "declare -ai a; : $(( a[4]=4 ));"
-builtins/Makefile.in
- - update dependencies for times.o
+arrayfunc.c
+ - array_variable_part: return variable even if invisible flag set,
+ callers must handle invisible vars
- 8/16
+ 4/18
----
-lib/sh/timeval.c
- - moved functions dealing with struct timevals here from general.c
- and execute_cmd.c
+builtins/set.def
+ - unset_builtin: if -n flag given, call unset_nameref instead of
+ unset_variable
-lib/sh/clock.c
- - moved functions dealing with clock_ts here from general.c
- (print_time_in_hz renamed to print_clock_t)
+variables.c
+ - find_variable_nameref: print warning message if nameref circular
+ reference detected, return NULL and let caller deal with it
-externs.h
- - moved extern declarations for timeval_to_secs and print_timeval
- here from general.h
- - moved extern declarations for clock_t_to_secs and print_clock_t
- here from general.h
+builtins/declare.def
+ - declare_builtin: only disallow global references at this point if
+ we are at the global scope
-builtins/times.def
- - calls to print_time_in_hz changed to print_clock_t
+ 5/16
+ ----
+configure.ac
+ - update release status to beta
-Makefile.in
- - added references for lib/sh/timeval.c and lib/sh/clock.c
+ 5/23
+ ----
+trap.c
+ - run_pending_traps: save and restore pipeline around calls to
+ evalstring() in case we get a trap while running a trap. Have to
+ figure out the recursive running traps issue elsewhere. Fixes
+ bug reported by Roman Rakus <rrakus@redhat.com>
+ - run_pending_traps: make sure to set running_trap to the appropriate
+ signal value when running a trap command
+ - run_pending_traps: short-circuit immediately if running_trap set
+ when invoked. Could change this later to only skip if it would
+ run the same trap as currently being run (running_trap == sig + 1)
+
+configure.ac
+ - add warning if bison not found
-lib/sh/Makefile.in
- - clock.o and timeval.o are now included in libsh.a
+lib/readline/doc/rltech.texi
+ - new section with an example program illustrating the callback
+ interface. Suggested by Peng Yu <pengyu.ut@gmail.com>
- 8/23
+examples/loadables/Makefile.in
+ - remove references to `cut' and `getconf', which were removed in
+ early March
+
+ 5/28
----
-execute_cmd.c
- - make sure last_command_exit_value is updated before running a
- DEBUG trap in the cm_simple case of execute_command_internal
+lib/sh/pathphys.c
+ - sh_realpath: correct inverted two arguments to call to sh_makepath.
+ Report and fix from Julien Thomas <jthomas@exosec.fr>
-lib/readline/display.c
- - new function, static void redraw_prompt (char *), used to
- redraw the last line of a multiline prompt that possibly
- contains terminal escape sequences
- - call redraw_prompt from _rl_redisplay_after_sigwinch
+ 6/7
+ ---
+execute_cmd.c
+ - executing_line_number: the else clauses that are conditional on
+ various options being defined can simply be if clauses -- they are
+ mutually exclusive and all have `return' in the body. Fixes bug
+ reported by Flavio Medeiros <flaviomotamedeiros@gmail.com>
- 8/24
+ 6/25
----
-lib/readline/bind.c
- - new struct with names of string-valued readline variables and
- handler functions to call when the variable is set
- - changed rl_variable_bind to use functions to find boolean vars
- and string vars in their respective lists
- - new function, bool_to_int, to translate a boolean value that may
- appear as an argument to `set <boolean-var-name>' to 1 or 0
- - new function, hack_special_boolean_var, called if the element in
- the boolean_vars struct has the V_SPECIAL flag set, to provide
- any necessary other action when a boolean variable is set
- - new functions to be called when each string variable is set;
- called by rl_variable_bind
+lib/readline/readline.c
+ - readline_internal_setup: only sent the meta-key enable string to the
+ terminal if we've been told to use one and the terminal has been
+ successfully initialized (RL_ISSTATE (RL_STATE_TERMPREPPED) != 0).
+ Suggested by Dan Mick <dan.mick@inktank.com>
-execute_cmd.c
- - do_piping no longer sets pipes to O_TEXT mode if __CYGWIN32__
- is defined
+lib/readline/signals.c
+ - _rl_signal_handler: call any defined signal hook after calling
+ rl_resize_terminal when handling a SIGWINCH. We already have called
+ the original SIGWINCH handler but will not be resending the signal
+ to ourselves
- 8/25
+ 6/27
----
-subst.c
- - parameter_brace_patsub now mallocs a local copy of `patsub', because
- if it starts with a `/' we increment it, and functions down the call
- chain will free that on an error (and if we pass the incremented
- value, will try to free unallocated memory)
- - pos_params now short-circuits and returns a null string immediately
- if start == end, meaning we want 0 positional parameters
+lib/readline/doc/history.3, doc/bash.1
+ - fix description of the `$' modifier to note that it expands to the
+ last *word*, which is not always the last argument. Report from
+ ariyetz@gmail.com via gnu.org RT
- 8/26
+ 6/29
----
-subst.c
- - fixed pat_subst to correctly handle a null replacement string with
- a null pattern string prefixed with `%' or `#'
+lib/glob/smatch.c
+ - glob_asciiranges: initialize to value of GLOBASCII_DEFAULT instead
+ of 0 (0 if not defined)
+
+configure.ac,config.h.in
+ - --enable-glob-asciiranges-default: new option, controls the value of
+ GLOBASCII_DEFAULT; use it to turn globasciiranges shopt option on
+ by default
+
+doc/bashref.texi
+ - document new --enable-glob-asciiranges-default configure option
- 9/3
- ---
variables.c
- - don't import shell functions from the environment if the shell was
- started with -n
+ - assign_in_env: implement += value appending semantics for assignments
+ preceding command names
- 9/8
+ 7/4
---
-subst.c
- - if a command substitution is being performed inside a shell function,
- catch `return' in command_substitute so that a return inside the
- command substitution doesn't jump back to execute_function (or one
- of its brethren) and go on with the command
+expr.c
+ - set lasttok = NUM in all of the functions that result in a number,
+ even if it's a boolean, to avoid errors with constructs like
+ 1 * x = 1, which should be an asignment error. Fixes problem
+ pointed out by Dan Douglas <ormaaj@gmail.com>
parse.y
- - in history_delimiting_chars, if the first line is `for var' and
- command_oriented_history is active, we don't want a semicolon if
- the next token to be read is `in', but we do want one otherwise.
- All we can do is check shell_input_line and see if the next chars
- are `in' -- if so, we return " "
+ - decode_prompt_string: don't bother to call strcpy if
+ polite_directory_format returns its argument unchanged. It's not
+ necessary and Mac OS X 10.9 aborts because of a supposed overlapping
+ string copy. Bug and fix from simon@hitzemann.org
- 9/16
- ----
-builtins/hash.def
- - don't allow `hash -p /pathname/with/slashes name' if the shell
- is restricted
+subst.c
+ - parameter_brace_find_indir: new function, code from
+ parameter_brace_expand_indir that looks up the indirectly-referenced
+ variable, but does not expand it
+ - parameter_brace_expand_indir: call parameter_brace_find_indir to
+ look up indirected variable reference
+ - get_var_and_type: call parameter_brace_find_indir if it looks like we
+ are trying to manipulate an indirect variable reference like
+ ${!b%%foo}. This makes a difference if !b references an array
+ variable. Bug report from Dan Douglas <ormaaj@gmail.com>
-doc/{bash.1,bashref.texi}
- - updated description of restricted shell mode
+ 7/6
+ ---
+lib/sh/casemod.c
+ - sh_modcase: make sure argument passed to is_basic is <= UCHAR_MAX,
+ since cval can convert something to a wchar_t greater than UCHAR_MAX.
+ Fixes bug reported by Tomasz Tomasik <scx.mail@gmail.com>
-lib/readline/display.c
- - fixed a bug in _rl_update_final which used the inv_lbreaks array
- to index into visible_line
+ 7/8
+ ---
+lib/readline/history.c
+ - add_history_time: if history_length == 0, referencing history_length
+ - 1 will result in an array bounds error, so make history_length be
+ at least 1 before going on. Fixes bug reported by Geng Sheng Liu
+ <gsliu.tju@gmail.com>
-jobs.c
- - waitchld() need not go through the pain of setting up an environment
- to execute traps on SIGCHLD if children_exited == 0
- - waitchld returns -1 if waitpid() returns -1 with errno == ECHILD,
- indicating that there are no unwaited-for child processes, and it
- has not yet reaped any dead children
- - wait_for, wait_for_single_pid return -1 if waitchld() returns -1
- - new function, mark_all_jobs_as_dead
- - wait_for_background_pids calls mark_all_jobs_as_dead if
- wait_for_single_pid returns -1 with errno == ECHILD, since there are
- no unwaited-for child processes
+builtins/setattr.def
+ - show_func_attributes: display definition (if NODEFS argument is 0) and
+ attributes for a particular function; used by `declare -fp name'
-subst.c
- - tentative change: subshells started for command substitution no
- longer unconditionally disable job control
+builtins/declare.def
+ - declare_internal: call show_func_attributes if -f supplied with -p.
+ Fixes inconsistency observed by Linda Walsh <bash@tlinx.org>
- 9/17
+builtins/common.h
+ - new extern declaration for show_func_attributes
+
+builtins/read.def
+ - read_builtin: check the first supplied variable name for validity
+ before attempting to read any input, since we know we will have to
+ at least use that one. Don't check any other names yet. Suggested
+ by jidanni@jidanni.org
+
+ 7/10
----
-parse.y
- - new function: save_token_state(). Saves the value of last_read_token
- and the two previous tokens in an allocated array and returns the
- array
- - new function: restore_token_state(ts). TS is an array returned by
- save_token_state. last_read_token and the two previous tokens are
- set from the values in TS
+redir.c
+ - do_redirection_internal: when closing a file descriptor with
+ r_close_this ([n]<&-) count close errors as redirection errors if
+ errno ends up as EIO or ENOSPC. Originally reported back in April
+ 2012 by Andrey Zaitsev <jstcdr@gmail.com>
-trap.c
- - run_pending_traps calls save_token_state and restore_token_state
- around the call to parse_and_execute, which will call the parser
- and possibly leave it in a state where reserved words will not be
- recognized (_run_trap_internal, too)
+ 7/11
+ ----
+redir.c
+ - do_redirection_internal: before calling check_bash_input, make sure
+ that we don't call check_bash_input for an asynchronous process that
+ is replacing stdin with something else. The seek backwards affects
+ the parent process as well, since parents and children share the
+ file pointer. Fixes problem originally reported in March 2013 by
+ Martin Jackson <mjackson220.list@gmail.com>
- 9/20
+ 7/13
----
-support/bashbug.sh
- - if sendmail is used as $RMAIL, pass `-i -t' as arguments so changes
- made by the user to the recipient headers in the message are
- honored
+doc/{bash.1,bashref.texi}
+ - slight change to add a description of `shopt -o' suggested by Bruce
+ Korb <bruce.korb@gmail.com>
- 9/21
+ 7/19
----
-bashhist.c
- - if histverify has been set, make sure a `:p' modifier to a history
- expansion prints the result
+lib/readline/histfile.c
+ - history_do_write: if close returns < 0, make sure we restore the
+ backup history file and return a non-zero value
+ - history_truncate_file: if write or close return < 0, make sure we
+ return a non-zero value
-builtins/echo.def
- - new extern variable, xpg_echo, set to 1 if DEFAULT_ECHO_TO_USG is
- defined and 0 otherwise
- - echo_builtin now sets the initial value of do_v9 from xpg_echo
+[bash-4.3-beta frozen]
-builtins/shopt.def
- - new shopt option, `xpg_echo', turns backslash escape expansion by
- `echo' on and off at runtime
+ 7/21
+ ----
+lib/readline/isearch.c
+ - rl_display_search: now takes an entire search context flags word as
+ the second argument, instead of just reverse flag; changed callers
+ - rl_display_search: if the search has failed, add `failed ' to the
+ beginning of the search prompt
+ - _rl_isearch_dispatch: if the search has failed, display the entire
+ search string with an indication that the search failed but with the
+ last matching line. Suggested by jidanni@jidanni.org
-builtins/{bash.1,bashref.texi}
- - documented new `xpg_echo' shell option
+command.h
+ - W_ASSIGNINT: new word flag; used internally for make_internal_declare
+ and set by fix_assignment_words
-tests/{builtins.tests,builtins2.sub,shopt.tests}
- - changes for new `xpg_echo' shell option
+execute_cmd.c
+ - fix_assignment_words: set W_ASSIGNINT if compound assignment and -i
+ given as option. We don't do anything with the value yet
-configure.in
- - changes for FreeBSD-3.x ELF to add `-rdynamic' to LOCAL_LDFLAGS.
- This allows dynamic loading of builtins
+subst.c
+ - shell_expand_word_list: rework the way the option list that is
+ passed to make_internal_declare is created
-support/shobj-conf
- - changes to handle FreeBSD-3.x elf or a.out object file formats
+ 8/1
+ ---
+doc/{bash.1,bashref.texi}
+ - minor changes to description of $! based on a report from Chris
+ Down <chris@chrisdown.name>
- 9/23
- ----
-[bash-2.04-beta1 released]
+arrayfunc.c
+ - assign_array_element_internal: before trying to get an array's max
+ index to process a negative subscript, make sure the array exists.
+ Bug report from Geir Hauge <geir.hauge@gmail.com>
- 9/24
- ----
-jobs.c
- - wait_for returns -1 only if the shell is currently executing the
- `wait' builtin, since that's the only thing that cares
+ 8/2
+ ---
+arrayfunc.c
+ - assign_array_element_internal: before using array_max_index() when
+ processing a negative subscript, make sure the variable is an array.
+ if it's not, use 0 as array_max_index assuming it's a string.
+ Fixes bug report from Geir Hauge <geir.hauge@gmail.com>
-execute_cmd.c
- - moved cases of close_fd_bitmap to before calls to do_piping to
- handle some pathological cases
+ 8/3
+ ---
+Makefile.in
+ - pcomplete.o: add dependency on $(DEFDIR)/builtext.h. Suggested by
+ Curtis Doty <curtis@greenkey.net>
- 9/29
- ----
-execute_cmd.c
- - save the command line in execute_simple_command before making the
- export environment, since maybe_make_export_env clobbers
- the_printed_command if there are exported functions
+ 8/5
+ ---
+lib/glob/sm_loop.c
+ - strcompare: short-circuit and return FNM_NOMATCH if the lengths of the
+ pattern and string (pe - p and se - s, respectively) are not equal
+ - strcompare: don't bother trying to set *pe or *se to '\0' if that's
+ what they already are. Fixes bug reported by Geir Hauge
+ <geir.hauge@gmail.com>
- 9/30
- ----
-configure.in,config.h.in
- - check explicitly for setvbuf; define HAVE_SETVBUF if found
+ 8/6
+ ---
+doc/{bash.1,bashref.texi},builtins/hash.def,lib/readline/doc/rluser.texi
+ - minor typo changes from Geir Hauge <geir.hauge@gmail.com>
-configure.in
- - change opt_gnu_malloc to opt_bash_malloc, since the bash malloc
- is not really the gnu malloc anymore
- - new argument, --with-bash-malloc, identical to --with-gnu-malloc
- - AC_DEFINE(USING_BASH_MALLOC) if opt_bash_malloc is enabled
+bultins/help.def
+ - show_longdoc: avoid trying to translate the empty string because it
+ often translates to some boilerplate about the project and
+ translation. Report and fix from Geir Hauge <geir.hauge@gmail.com>
-config.h.in
- - new #define for USING_BASH_MALLOC
+ 8/8
+ ---
+builtins/help.def
+ - help_builtin: try two passes through the list of help topics for each
+ argument: one doing exact string matching and one, if the first pass
+ fails to find a match, doing string prefix matching like previous
+ versions. This prevents `help read' from matching both `read' and
+ `readonly', but allows `help r' to match everything beginning with
+ `r'. Inspired by report from Geir Hauge <geir.hauge@gmail.com>
-doc/bashref.texi
- - updated installation section to add --with-bash-malloc and
- change description of --with-gnu-malloc
+ 8/13
+ ----
+builtins/fc.def
+ - fc_builtin,fc_gethnum: calculate `real' end of the history list and
+ use it if -0 is specified as the beginning or end of the history
+ range to list. Doesn't work for fc -e or fc -s by design. Feature
+ requested by Mike Fied <micfied@gmail.com>
-lib/sh/setlinebuf.c
- - change name of function to sh_setlinebuf, just returns 0 if
- HAVE_SETVBUF and HAVE_SETLINEBUF are undefined
- - prefer setvbuf to setlinebuf if we have both
- - if we're using setvbuf, use a local buffer for stdin and stdout
- local buffer is BUFSIZ unless we're using the bash malloc
- (USING_BASH_MALLOC is defined), in which case it's 1008 (which
- the bash malloc rounds up to 1024)
+ 8/16
+ ----
+trap.c
+ - _run_trap_internal: use {save,restore}_parser_state instead of
+ {save,restore}_token_state. It's more comprehensive
- 10/4
+ 8/23
----
-input.c
- - if USING_BASH_MALLOC is defined, set the max buffer size to 8176,
- which the bash malloc rounds up to 8192
+doc/bash.1
+ - disown: remove repeated text. Report and fix from Thomas Hood
+ <jdthood@gmail.com>
- 10/5
+ 8/25
+ ----
+lib/readline/rltty.c
+ - set_special_char: fix prototype (last arg is rl_command_func_t *)
+
+sig.c
+ - set_signal_handler: return oact.sa_handler only if sigaction
+ succeeds; if it doesn't, return SIG_DFL (reasonable default). From
+ https://bugzilla.redhat.com/show_bug.cgi?id=911404
+
+bashline.c
+ - attempt_shell_completion: fix to skip assignment statements preceding
+ command name even if there are no programmable completions defined.
+ From https://bugzilla.redhat.com/show_bug.cgi?id=994659
+ - attempt_shell_completion: if still completing command word following
+ assignment statements, do command completion even if programmable
+ completion defined for partial command name entered so far
+
+ 8/26
----
pcomplete.c
- - new function, pcomp_filename_completion_function, a wrapper for
- filename_completion_function that dequotes the filename first
+ - pcomp_filename_completion_function: make sure rl_filename_dequoting_function
+ is non-NULL before trying to call it. Bug and fix from
+ Andreas Schwab <schwab@linux-m68k.org>
bashline.c
- - changed bash_directory_completion_matches to dequote the filename
- before passing it (indirectly) to filename_completion_function
+ - bash_command_name_stat_hook: if *name is not something we're going
+ to look up in $PATH (absolute_program(*name) != 0), just call the
+ usual bash_filename_stat_hook and return those results. This makes
+ completions like $PWD/exam[TAB] add a trailing slash
-execute_cmd.c
- - change execute_command to defer calling unlink_fifo_list until any
- shell function has finished executing (variable_context == 0)
+ 9/2
+ ---
+builtins/read.def
+ - read_builtin: before comparing what we read to the delim, make sure
+ we are not supposed to be ignoring the delimiter (read -N). We
+ set the delim to -1, but it's possible to read a character whose
+ int value ends up being between -1 and -128. Fixes bug
+ reported by Stephane Chazelas <stephane.chazelas@gmail.com>
-configure.in
- - added AC_CYGWIN, AC_MINGW32, AC_EXEEXT
+doc/{bash.1,bashref.texi}
+ - word splitting: crib some language from Posix to make it clear that
+ characters in IFS are treated as field *terminators*, not field
+ *separators*. Addresses issue raised by DJ Mills
+ <danielmills1@gmail.com>
- 10/8
- ----
-subst.c
- - expand_word_internal(): changes some things to avoid small (2 or 3
- byte) calls to xmalloc -- added a label and some gotos (BEWARE)
- - changed make_dev_fd_filename so it doesn't call sprintf anymore
+lib/readline/{util.c,rldefs.h}
+ - _rl_stricmp,_rl_strnicmp: now take const char * string arguments;
+ changed prototype declarations
- 10/27
- -----
-execute_cmd.c
- - make execute_select_command handle the effects of the `continue'
- builtin correctly
+ 9/5
+ ---
+doc/{bash.1,bashref.texi}
+ - [[: modify description of pattern matching to make it clear that the
+ match is performed as if the extglob option were enabled. From Red
+ Hat bug https://bugzilla.redhat.com/show_bug.cgi?id=1002078
- 11/5
+ 9/12
----
-Makefile.in
- - RELSTATUS changed to `beta2'
+lib/readline/isearch.c
+ - _rl_isearch_dispatch: if we read an ESC and it's supposed to
+ terminate the search, make sure we check for typeahead with
+ _rl_pushed_input_available, since installing a hook function causes
+ typeahead to be collected in `ibuffer' (input.c). If there is any,
+ make sure we still use the ESC as a prefix character. Bug and fix
+ from Mike Miller <mtmiller@ieee.org>
- 11/8
+ 9/16
----
-[bash-2.04-beta2 released]
+builtins/{caller,cd,kill,pushd,wait}.def
+ - builtin_usage(): make sure call to this sets return status to
+ EX_USAGE
- 11/9
+ 9/18
----
-shell.c
- - make run_startup_files check for ssh2 as well as ssh1
+terminal.c
+ - rl_change_environment: new application-settable variable; if non-
+ zero (the default), readline will modify LINES and COLUMNS in the
+ environment when it handles SIGWINCH
+ - _rl_get_screen_size: if rl_change_environment is non-zero, use setenv
+ to modify LINES and COLUMNS environment variables
- 11/19
- -----
-parse.y
- - make sure parsing conditional commands isn't confused by unexpected
- tokens (like `[[)]]')
+readline.h
+ - rl_change_environment: new extern declaration for applications
+
+ 9/22
+ ----
+configure.ac
+ - relstatus: bumped version to bash-4.3-beta2
-builtins/common.c
- - fix get_job_spec to return NO_JOB for numeric job specs that are
- beyond the size of the jobs table
+ 9/24
+ ----
-builtins/type.def
- - change describe_command to report `not found' if a path search
- returns the same string as the command name and the command name
- does not match an executable file. This has implications for
- `type' and `command -[vV]'.
- - if a command is not found in $PATH, but an executable file with the
- name supplied exists in the current directory, make the command
- into a full pathname for the `command' builtin. This has
- implications for `type' and `command -[vV]'
+lib/readline/readline.c
+ - bind_arrow_keys_internal: added more key bindings for the numeric key
+ pad arrow keys on mingw32. Patch from Pierre Muller
+ <pierre.muller@ics-cnrs.unistra.fr>
-subst.c
- - new function, expand_prompt_string, expands prompt string and
- returns the string passed if an error occurs
+ 10/19
+ -----
-subst.h
- - extern declaration for expand_prompt_string
+bashline.c
+ - maybe_restore_tilde: version of restore_tilde that honors `direxpand';
+ calls restore_tilde after saving directory expansion hook if
+ necessary. Report from Andreas Schwab <schwab@linux-m68k.org>
-parse.y
- - decode_prompt_string calls expand_prompt_string instead of
- expand_string_unsplit
+builtins/cd.def
+ - -@: new option, allows cd to use `extended attributes' present in
+ NFSv4, ZFS; idea taken from ksh93. Attributes associated with a
+ file are presented as a directory containing the attributes as
+ individual files. Original patch contributed by Cedric Blancher
+ <cedric.blancher@gmail.com>
- 11/22
+ 10/20
-----
-builtins/echo.def
- - return EXECUTION_FAILURE if ferror(stdout) is true
+aclocal.m4
+ - BASH_CHECK_MULTIBYTE: check for wcwidth being broken with unicode
+ combining characters needs a value to use when cross-compiling.
+ Bug report from Bert Sutherland <bertsutherland@gmail.com>
- 11/23
+doc/{bash.1,bashref.texi}
+ - document new -@ option to cd builtin
+
+ 10/28
-----
-locale.c
- - if LC_ALL is unset, call setlocale(LC_ALL, lc_all), because lc_all
- holds the default locale
+lib/glob/{{gmisc,glob}.c,glob.h}
+ - extglob_pattern renamed to extglob_pattern_p, declared in glob.h
+
+subst.c
+ - expand_word_internal: typo fix: case to fix " $@\ " bug in bash-4.2
+ had a typo (& isexp instead of &&)
- 11/29
+ 10/29
-----
-lib/readline/shell.c
- - define NULL as 0 if it's not defined
- - change single_quote to allocate 4 characters in new string for
- each character in the old one (like builtins/common.c:single_quote)
+input.c
+ - getc_with_restart: make sure local_index and local_bufused are
+ reset to 0 before returning EOF, in case we are running an interactive
+ shell without line editing and ignoreeof is set. Report and fix
+ from Yong Zhang <yong.zhang@windriver.com>
-locale.c
- - when a locale variable (LC_*) is unset, pass "" to setlocale()
- to get the default locale set, since value is NULL
+lib/readline/search.c
+ - _rl_nsearch_init: take out extra third argument to rl_message; it
+ only matches prototype (and maybe format) in cases where
+ PREFER_STDARG and USE_VARARGS are both undefined, which is rare
-lib/sh/makepath.c
- - new function, sh_makepath(char *path, char *dir, int flags)
+ 10/31
+ -----
+subst.c
+ - process_substitute: when opening the named pipe in the child, open
+ without O_NONBLOCK to avoid race conditions. Happens often on AIX.
+ Bug report and fix from Michael Haubenwallner
+ <michael.haubenwallner@salomon.at>
-Makefile.in
- - changed version to beta3
+builtins/ulimit.def
+ - RLIMIT_NTHR: if RLIMIT_PTHREAD is not defined, but RLIMIT_NTHR is,
+ use RLIMIT_NTHR (NetBSD)
-builtins/type.def
- - changed describe_command to use sh_makepath()
+ 11/5
+ ----
+locale.c
+ - set_default_locale_vars,set_locale_var: if TEXTDOMAINDIR has been
+ set, and default_dir has a non-null value, call bindtextdomain(3)
+ when TEXTDOMAIN is assigned a value. Fixes problem reported by
+ Michael Arlt <qwertologe@googlemail.com>
+ 11/6
+ ----
builtins/cd.def
- - removed private declaration of mkpath(), changed to use sh_makepath
+ - cdxattr: only create synthetic pathname in `buf' if NDIRP argument
+ is non-null
+ - change_to_directory: if we have specified -@ and cdxattr returns
+ failure, fail immediately. Fixes bug reported by Joshuah Hurst
+ <joshhurst@gmail.com>
-general.c
- - changed make_absolute to use sh_makepath
- - changed full_pathname to use sh_makepath
+ 11/12
+ -----
+redir.c
+ - print_redirection: change r_err_and_out (&>) and its append form,
+ r_append_err_and_out (&>>) cases to separate redirection operator
+ from filename by a space, in case we have a process substitution.
+ Fixes bug reported by admn ombres <admn.ombres@gmail.com>
-findcmd.c
- - removed private definition of make_full_pathname, changed to use
- sh_makepath
+ 11/15
+ -----
+execute_cmd.c
+ - execute_simple_command: don't close process substitution fds until
+ we are finished executing any current shell function. Partial fix
+ for bug reported by John Dawson <john.dawson@gmail.com>
-doc/{bashref.texi,bash.1}
- - added text to description of `getopts' to make it clear that getopts
- may be used to parse option characters other than letters, and
- that `:' and `?' may not be used as option characters
+support/shobj-conf
+ - add support for Darwin 13 (Mac OS X 10.9, Mavericks). Based on a
+ report by Ludwig Schwardt <ludwig.schwardt@gmail.com>
-eval.c
- - when processing a jump_to_top_level(EXITPROG), make sure the shell
- doesn't think it's still in a function by setting variable_context
- to 0
+ 11/20
+ -----
+[bash-4.3-rc1 frozen]
-doc/rbash.1
- - a skeletal man page for rbash, adapted from debian
+ 11/24
+ -----
+builtins/printf.def
+ - bind_printf_variable: make sure that the variable assigned to is
+ no longer marked as invisible. Fixes bug reported by NBaH
+ <nbah@sfr.fr>
-support/bashbug.sh
- - try to find a default editor if EDITOR is unset, rather than blindly
- using `emacs'
+ 11/28
+ -----
+jobs.c
+ - delete_old_job: fix off-by-one error in job index in call to
+ internal_warning. Bug report from Peter Cordes <peter@cordes.ca>
11/30
-----
-support/config.{guess,sub}
- - many changes from the latest `automake' distribution, from the
- Debian folks
+doc/bashref.texi
+ - add string to description of special parameters with name of
+ special parameter prefixed by a $, so you can search for $#,
+ for instance
12/2
----
-lib/readline/keymaps.h, lib/tilde/tilde.h
- - added support for C++ compilation (`extern "C" {...}')
-
- 12/3
- ----
-subst.c
- - in process_substitute, make sure the child resets the O_NONBLOCK
- flag on the file descriptor opened for read to a named pipe
-
-jobs.c
- - new function, raw_job_exit_status, returns exit status of last job
- in pipeline
- - change job_exit_status to call raw_job_exit_status and pass the
- result to process_exit_status
- - in notify_of_job_status, get termination status from call to
- raw_job_exit_status, rather than the first job in the pipeline
- (fixes debian bug #15165)
+lib/readline/{histexpand.c
+ - get_history_event: account for current_history() possibly returning
+ NULL. Report and fix from Pankaj Sharma <pankaj.s01@samsung.com>
-bashhist.c
- - changed bash_history to not add shell comment lines to the history
- file (fixes debian bug #21901). Uses new function shell_comment(L)
- which returns 1 if L is a shell comment line. Doesn't handle
- comments embedded in lines yet
-redir.c
- - when running in POSIX.2 mode, bash no longer performs word splitting
- on the expanded value of the word supplied as the filename argument
- to a redirection operator (fixes debian bug #30460)
+ 12/11
+ -----
-doc/bashref.texi
- - added new redirection stuff to POSIX Mode section (from previous fix)
+lib/readline/parse-colors.c
+ - get_funky_string: don't call abort if we see something we can't
+ parse; just return an error
+ - _rl_parse_colors: if we encounter an error while parsing $LS_COLORS
+ we need to leave _rl_color_ext_list as NULL after freeing its
+ elements, then turn off _rl_colored_stats. Report and fix from Martin
+ Wesdorp <mwesdorp@casema.nl>
- 12/6
- ----
-hashlib.h
- - removed extra semicolon at end of HASH_ENTRIES define
+ 12/13
+ -----
-redir.c
- - replaced toggling of disallow_filename_globbing flag with setting
- flags in redirection word to include W_NOGLOB if the shell is in
- POSIX mode and not interactive when expanding the filename argument
- to a redirection
+lib/readline/parse-colors.c
+ - _rl_parse_colors: if we encounter an unrecognized prefix, throw an
+ error but try to recover and go on to the next specification
- 12/7
- ----
-builtins/common.c
- - new function, backslash_quote_for_double_quotes(char *), quotes
- characters special when in double quotes in the string passed as
- an argument.
- #ifdef PROMPT_STRING_DECODE; called by decode_prompt_string
+variables.c
+ - make_local_variable: for new variables this function creates, set
+ the att_invisible attribute. All callers from declare_internal.
+ Indirectly, this is a fix for bug with `declare -n var; var=foo;'
+ reported by Pierre Gaston <pierre.gaston@gmail.com>
+ - bind_variable: if assigning to nameref variable that doesn't have
+ a value yet (e.g., with `declare -n var; var=foo'), don't try to
+ use the unset name. Fixes a segfault reported by Pierre Gaston
+ <pierre.gaston@gmail.com>
-builtins/common.h
- - extern declaration for backslash_quote_for_double_quotes
+execute_cmd.c
+ - execute_command_internal: make sure last_command_exit_value is set
+ to 0 after any command executed in the background. Fixes bug
+ reported by Martin Kealey <martin@kurahaupo.gen.nz>
-parse.y
- - call backslash_quote_for_double_quotes instead of backslash_quote
- in decode_prompt_string
+ 12/17
+ -----
+support/config.{guess,sub}
+ - updated to latest versions from git
- 12/9
- ----
+ 12/19
+ -----
parse.y
- - before expanding the \u prompt string escape sequence, make sure
- current_user.user_name is non-null and call get_current_user_info
- if it is
+ - struct STRING_SAVER: now has a new `flags' element, to identify the
+ caller: alias expansion, double-paren parsing, or parse_and_execute
+ - push_string: now sets flags to PSH_ALIAS if `ap' argument is non-NULL
+ - push_string: now doesn't attempt to call strlen on a NULL string to
+ set shell_input_line_size
+ - parser_expanding_alias, parser_save_alias, parser_restore_alias: new
+ functions to provide an external interface to push_string and
+ pop_string; parser_save_alias sets flags element to PSH_SOURCE (could
+ be renamed PSH_EXTERN someday)
+ - shell_getc: when yy_getc returns '\0', instead of just testing
+ whether the pushed_string_list is not-empty before popping it, don't
+ pop if if the saved string has flags PSH_SOURCE, indicating that
+ parse_and_execute set it before setting bash_input to the string.
+ We should continue reading to the end of that string before popping
+ back to a potential alias. Partial solution for the problem of aliases
+ with embedded newlines containing `.' commands being executed out of
+ order reported by Andrew Martin <andrew.martin@gmail.com>
+ - shell_getc: when yy_getc returns '\0' and there is a saved string of
+ type PSH_SOURCE, restart the read without popping the string stack
+ if we have not read to the end of bash_input.location.string. Rest
+ of fix for out-of-order execution problem
- 12/10
- -----
-support/mkversion.sh
- - changes to avoid relying on floating point output format, which
- can be locale-specific
+externs.h
+ - parser_expanding_alias, parser_save_alias, parser_restore_alias: new
+ extern function declarations
- 12/14
+builtins/evalstring.c
+ - pe_prologue: if the parser is expanding an alias, make sure to add
+ an unwind-protect to restore the alias; undoes the work that will be
+ performed by parse_and_execute/parse_string
+ - parse_and_execute,parse_string: after calling push_stream to save
+ bash_input, check whether or not the parser is currently expanding
+ an alias (parser_expanding_alias() != 0). If it is, we want to save
+ that string in the pushed_string_list, which we do with
+ parser_save_alias.
+
+ 12/23
-----
-print_cmd.c
- - changes to named_function_string (for normal function printing)
- and print_function_def (for printing function definitions embedded
- in other commands) to print redirections that should be attached
- to the function as a whole after the closing brace
+execute_cmd.c
+ - execute_for_command: make sure to set line_number before expanding
+ the word list, so expansion errors have the right line number.
+ From a report from Ben Okopnik <ben@okopnik.com>
-tests/func1.sub
- - tests for printing functions with attached redirections, called by
- func.tests
+expr.c
+ - exp2: save token pointer before calling readtok(), arrange to use
+ saved token pointer when printing error token on a division by 0
+ error
- 12/16
+ 12/27
-----
-lib/readline/complete.c
- - if we're completing files in the root directory and executing the
- visible-stats code, don't pass an empty pathname to
- rl_directory_completion_hook, because, for bash, that will be
- expanded to the current directory. Just pass `/' instead.
+lib/readline/display.c
+ - rl_redisplay: when calculating effects of invisible characters in a
+ prompt that is split across physical screen lines to set the indices
+ of linebreaks, don't bother testing local_prompt_prefix (line 751).
+ That prefix doesn't matter when calculating prompt visible and
+ invisible characters. Fixes problem reported by Jinesh Choksi
+ <jinesh@onelittlehope.com>
-lib/tilde/tilde.c
- - fix to tilde_expand_word for Cygwin to avoid creating pathnames
- beginning with `//' if $HOME == `/'
+Makefile.in
+ - install: make sure to use $(DESTDIR) when installing OTHER_DOCS.
+ Report and fix from Matthias Klose <doko@debian.org>
-variables.c
- - don't bother with the exportstr validation on cygwin systems,
- or even using exportstr at all, since that system has weird
- environment variables
+doc/texinfo.tex
+ - updated to version of 2013-09-11
- 12/17
+ 12/28
-----
-configure.in
- - new option, --enable-xpg-echo-default, new name for
- --enable-usg-echo-default (which is still present for backwards
- compatibility)
+lib/readline/undo.c
+ - rl_do_undo: if we are undoing from a history entry (rl_undo_list ==
+ current_history()->data), make sure the change to rl_line_buffer is
+ reflected in the history entry. We use the guts of
+ rl_maybe_replace_line to do the work. Fixes problem reported by
+ gregrwm <backuppc-users@whitleymott.net>
-configure.in, config.h.in, builtins/echo.def
- - DEFAULT_ECHO_TO_USG -> DEFAULT_ECHO_TO_XPG
+ 12/30
+ -----
+sig.c
+ - sigint_sighandler: if we get a SIGINT (and this signal handler is
+ installed) while the wait builtin is running, note that we received
+ it in the same way as jobs.c:wait_sigint_handler and return. The
+ various wait_for functions will look for that with CHECK_WAIT_INTR.
+ This fixes the wait builtin not being interruptible in an interactive
+ job control shell
- 12/29
+ 12/31
-----
-aclocal.m4
- - changed a couple of tests to avoid creating files with known
- names in /tmp
+trap.c
+ - set_signal_hard_ignored: rename set_signal_ignored to this, since it
+ both sets original_signals[sig] and sets the HARD_IGNORE flag
+ - set_signal_ignored: new function, now just sets original_signals[sig]
-support/rlvers.sh
- - changed to create files in /tmp/rlvers
+trap.h
+ - set_signal_hard_ignored: new external declaration
-support/mksignames.c
- - now understands the POSIX.1b real-time signal names on systems
- that support them
+sig.c
+ - initialize_terminating_signals: call set_signal_hard_ignored instead
+ of set_signal_ignored for signals with disposition SIG_IGN when the
+ shell starts
- 12/30
- -----
-[bash-2.04-beta3 released]
+execute_cmd.c
+ - setup_async_signals: make sure we get the original dispositions for
+ SIGINT and SIGQUIT before starting the subshell, and don't call
+ set_signal_ignored because that sets original_signals[sig]. If we
+ don't, subsequent attempts to reset handling using trap will fail
+ because it thinks the original dispositions were SIG_IGN. Posix
+ interpretation 751 (http://austingroupbugs.net/view.php?id=751)
+
+ 1/2/2014
+ --------
+lib/sh/stringvec.c
+ - strvec_mcreate, strvec_mresize: versions of create and resize that
+ use malloc and realloc, respectively, instead of xmalloc/xrealloc
- 12/31
- -----
-redir.c
- - try some more things to avoid race file replacements in
- here_document_to_fd
+braces.c
+ - expand_amble,mkseq: use strvec_mcreate/strvec_mresize so we can
+ catch and handle memory allocation failures instead of aborting
+ with the xmalloc/xrealloc interface
-parse.y
- - two new functions:
- get_current_prompt_level: returns 2 if current prompt is $PS2,
- 1 otherwise
- set_current_prompt_level: sets current prompt to $PS2 if arg
- is 2, $PS1 otherwise
+lib/sh/strdup.c
+ - strdup replacement function for ancient systems that don't have it
-copy_cmd.c
- - make sure to copy the `line' member in copy_arith_for_command
+lib/sh/itos.c
+ - mitos: new function, itos that uses strdup instead of savestring
-pcomplete.c
- - free up `lwords' and `line' after evaluating any command or shell
- function in gen_compspec_completions
- - after filtering any matches specified by cs->filterpat in
- gen_compspec_completions, free ret->list (the members have
- already been copied or freed by filter_stringlist)
+externs.h
+ - strvec_mcreate/strvec_mresize: new extern declarations
+ - mitos: new extern declaration
-bashline.c
- - free what find_cmd_name returns after calling the programmable
- completion code
+configure.ac
+ - bash version moved to 4.3-rc2
- 1/4/2000
- --------
-subst.c
- - make call_expand_word_internal set w->word to NULL if either
- expand_word_error or expand_word_fatal is returned
+ 1/6
+ ---
+doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
+ - separate the description of what happens when readline reads the
+ tty EOF character from the description of delete-char, leaving a
+ note in the delete-char description about common binding for ^D.
+ From suggestion by Parke <parke.nexus@gmail.com>
+
+lib/readline/doc/{version.texi,history.3,*.texi}
+ - updated email addresses and copyright dates
1/7
---
-parse.y
- - two new functions: set_current_prompt_level(int) and
- get_current_prompt_level() to set and get the `level' of
- current_prompt_string (1 if $PS1, 2 if $PS2)
+variables.c
+ - delete_var: new function, just removes a variable from a hash table
+ and frees it, without doing anything else
+ - make_variable_value: if we are trying to assign to a nameref variable,
+ return NULL if the value is null or the empty string or not a valid
+ identifier
-externs.h
- - extern declarations for {get,set}_current_prompt_level
+variables.h
+ - delete_var: new extern declaration
-builtins/evalstring.c
- - add an unwind_protect to save and restore the current prompt
- string pointers using {get,set}_current_prompt_level
+subst.h
+ - ASS_NAMEREF: new define for assignments, means assigning to a nameref
+ variable
+
+builtins/declare.def
+ - declare_internal: if we are creating and assigning to a nameref
+ variable, make sure the value is a valid variable name (checks done
+ by make_variable_value via bind_variable_value) and display an
+ error message, deleting the variable we just created, if it is not.
+ Fixes bug reported by Peggy Russell <prusselltechgroup@gmail.com>
1/9
---
-Makefile.in
- - changed release status to `beta4'
+builtins/declare.def
+ - declare_internal: turning on nameref attribute for an existing
+ variable turns off -i/-l/-u/-c attributes (essentially the ones
+ that cause evaluation at assignment time) for ksh93 compat
- 1/18
- ----
-[bash-2.04-beta4 released]
+builtins/setattr.def
+ - show_name_attributes: if asked to display attributes and values for
+ a nameref variable, don't follow the nameref chain to the end. More
+ ksh93 compat
- 1/19
+ 1/10
----
-configure.in
- - moved checks for non-unix variants to beginning of tests
+trap.c
+ - _run_trap_internal: use {save,restore}_parser_state instead of
+ {save,restore}_token_state, like in run_pending_traps(); don't
+ need to save and restore last_command_exit_value as a result
+ - _run_trap_internal: call {save,restore}_pipeline like in
+ run_pending_traps()
+ - run_pending_traps: since we no longer run traps in a signal handler
+ context, do not block and unblock the trapped signal while the
+ trap is executing
+ - run_pending_traps: allow recursive invocations (basically, running
+ traps from a trap handler) with only a warning if the shell is
+ compiled in debug mode. If a caller doesn't want this to happen,
+ it should test running_trap > 0. signal_in_progress (sig) only works
+ for the signals the shell handles specially
-Makefile.in, {builtins,support}/Makefile.in
- - added some $(EXEEXT) suffixes to generated programs for non-Unix
- systems
+bashline.c
+ - bash_event_hook: make sure we clean up readline if interrupt_state
+ is set, not only when SIGINT is not trapped. check_signals_and_traps
+ will call check_signals, which calls QUIT, which will longjmp back
+ to top_level, running the interrupt trap along the way. Fixes the
+ problem of signal handlers being reset out from under readline, and
+ not being set properly the next time readline is called, because
+ signals_set_flag is still set to 1. XXX - might need to do this
+ for other signals too?
- 1/20
+ 1/11
----
-parse.y
- - make get_current_prompt_level return 1 if current_prompt_string is
- NULL (as it would be while sourcing startup files)
+subst.h
+ - SD_GLOB: new define for skip_to_delim; means we are scanning a
+ glob pattern.
-support/rlvers.sh
- - rmdir $TDIR in the exit trap
- - move the exit trap after we successfully create $TDIR
+subst.c
+ - skip_to_delim: if flags include SD_GLOB, assume we are scanning a
+ glob pattern. Currently only used to skip bracket expressions
+ which may contain one of the delimiters
- 1/21
+ 1/12
----
subst.c
- - several changes to split_at_delims to make non-whitespace
- delimiters create separate fields containing those delimiters,
- like the shell parser does with meta characters. This allows
- redirection operators, for example, to be treated as separate
- words by the programmable completion code
-
-examples/complete/complete-examples
- - added new function: _redir_op, which return true if the word
- passed as an argument contains a redirection operator (just
- bare-bones for now)
- - changed set completion function to use _redir_op as an example
-
-parse.y
- - make parse_string_to_word_list save and restore the value of
- shell_input_line_terminator, since an assignment like
- COMPREPLY=() inside a shell function called by the programmable
- completion code can change shell_input_line_terminator out from
- underneath shell_getc(). shell_getc will set the input line
- terminator to EOF when it gets EOF from the getter function, and
- the string getter function returns EOF at EOS. parse_and_execute
- tests for EOS directly and never gets EOF from shell_getc, so it
- does not have this problem.
+ - parameter_brace_expand: when expanding $@ as part of substring
+ expansion, pattern substitution, or case modification, don't turn
+ on the QUOTED_NULL flag. The code that constructs the word to be
+ returned from expand_word_internal expects a different code path
+ when $@ is being expanded. Fixes bug reported by Theodoros
+ V. Kalamatianos <thkala@gmail.com>
- 1/24
+ 1/19
----
-lib/readline/funmap.c
- - #define QSFUNC like in complete.c
- - cast _rl_qsort_string_compare to a QSFUNC * in the call to qsort
-
-lib/readline/terminal.c
- - correct a typo in usage of the __EMX__ preprocessor define
- - fix a reversed usage of `#if defined (__DJGPP__)' in
- _rl_control_keypad
- - remove extern declarations for _rl_in_stream and _rl_out_stream
-
-lib/readline/rlprivate.h
- - add extern declaration for _rl_in_stream, since there's already
- one for _rl_out_stream
+subst.c
+ - list_dequote_escapes: new function; analogue of list_quote_escapes
-builtins/ulimit.def
- - if bash is using ulimit(2), make sure that getfilesize() returns
- the value multiplied by 512 to convert it from a number of blocks
- to a number of bytes
+pathexp.c
+ - quote_string_for_globbing: fix case where unescaped ^A is last char
+ in string; need to pass it through unaltered instead of turning it
+ into a bare backslash
+ - quote_string_for_globbing: when quoting for regexp matching in [[,
+ don't treat backslash as a quote character; quote the backslash as
+ any other character. Part of investigation into reports from
+ Eduardo A. Bustamante López <dualbus@gmail.com>
1/25
----
-execute_cmd.c
- - make sure execute_command_internal sets last_command_exit_value
- correctly when inverting the return value of a (...) subshell
- command
-
-tests/{run-invert,invert.{tests,right}}
- - new tests for return value inversion
+builtins/gen-helpfiles.c
+ - write_helpfiles: add prototype
+ - make sure to #undef xmalloc/xfree/xrealloc/free if USING_BASH_MALLOC
+ is defined. the code does not use them, and we don't link against
+ xmalloc.o. Report from Linda Walsh <bash@tlinx.org>
-configure.in
- - compile without bash malloc on m68k-motorola-sysv due to a file
- descriptor leak in closedir(3) -- the motorola implementation
- requires that freed memory be readable so it can free the dirent
- and then look back at it to find the file descriptor
-
-expr.c
- - fix negative exponents in v**e to return an eval error
-
- 2/1
- ---
Makefile.in
- - changed status to beta5
-
-jobs.c
- - fixed a problem with checking the wrong process when checking to
- see whether or not we need to reset the tty state. The old code
- checked the first process in a pipeline; the new code checks all
- processes in the pipeline to see whether any of them exited due
- to a signal or was stopped. If none were signalled or stopped,
- the code uses the exit status of the last process in the job's
- pipeline
+ - variables.o: add dependency on builtins/builtext.h; helps with
+ parallel builds. Report from Linda Walsh <bash@tlinx.org>
- 2/4
- ---
-[bash-2.04-beta5 released]
-
-eval.c
- - call set_current_prompt_level instead of setting prompt_string_pointer
- directly
+support/shobj-conf
+ - darwin: combine the stanzas into one that will not require them to
+ be updated on each Mac OS X release. Report and fix from Max Horn
+ <max@quendi.de>
- 2/10
+ 1/27
----
-[bash-2.04-beta5 re-released to net]
+support/shobj-conf
+ - darwin: changed the install_name embedded into the shared library
+ to contain only the major version number, not the minor one. The
+ idea is that the minor versions should all be API/ABI compatible,
+ and it is better to link automatically with the latest one. Idea
+ from Max Horn <max@quendi.de>
- 2/11
+ 1/29
----
-sig.c
- - make sure SIGCHLD is defined in initialize_shell_signals before
- trying to use it in sigdelset() (DJGPP fix)
+[bash-4.3-rc2 released]
- 2/14
+ 1/30
----
-lib/sh/shtty.c
- - include <unistd.h> before <shtty.h>
- - separate tests for ONLCR, ONOCR, ONLRET to cope with systems like
- DJGPP that don't implement the full POSIX termios option set
-
-builtins/psize.sh
- - set TMPDIR only if it's not already set
-
-lib/glob/glob.c
- - if a system doesn't define _POSIX_SOURCE but has a `struct dirent'
- without a d_ino member, define REAL_DIR_ENTRY to 1 so all entries
- are read
-
-configure.in
- - check for <arpa/inet.h> header file
-
-config.h.in
- - add HAVE_ARPA_INET_H define
+lib/readline/readline.h
+ - rl_clear_history, rl_free_keymap: add extern declarations. Report
+ from Hiroo Hayashi <hiroo.hayashi@computer.org>
-lib/sh/inet_aton.c
- - don't compile unless HAVE_NETWORK, HAVE_NETINET_IN_H, and
- HAVE_ARPA_INET_H are all defined in config.h or config-bot.h
+general.c
+ - include trap.h for any_signals_trapped() prototype
- 2/16
- ----
-subst.c
- - if we have a construct like "${@:-}", we need to note that we're
- not using whatever is in $@ (we're using the rhs), so the special
- double-quoting $@ rules do not apply
+lib/sh/unicode.c
+ - include <stdio.h> for sprintf prototype
- 2/21
+ 1/31
----
-lib/readline/signals.c
- - declare SigHandler before using it on non-POSIX systems
-
-lib/sh/{zread,zwrite}.c
- - include <sys/types.h> unconditionally
+execute_cmd.c
+ - execute_simple_command: only posix-mode shells should exit on an
+ assignment failure in the temporary environment preceding a special
+ builtin. This is what the documentation and code comments have
+ always said
+ - execute_simple_command: make sure redirection errors, word expansion
+ errors, and assignment errors to Posix special builtins cause a
+ non-interactive posix mode shell to exit. Previously the shell
+ would not exit if the failed special builtin was on the LHS of ||
+ or &&
-configure.in
- - m68k-motorola-sysv should be m68k-sysv in the section that sets
- opt_bash_malloc to no for certain systems
+pathexp.c
+ - quote_string_for_globbing: when quoting a regular expression
+ (QGLOB_REGEXP), allow an unquoted backslash to pass through
+ unaltered. Don't use it as a quote character or quote it. More
+ investigation from 1/24 and report by Mike Frysinger
+ <vapier@gentoo.org>
+ - quote_string_for_globbing: when quoting a regular expression
+ (QGLOB_REGEXP), turn CTLESC CTLESC into CTLESC without adding a
+ backslash to quote it. We should not have to quote it because it is
+ not a character special to EREs. More investigation from 1/24
-builtins/complete.def
- - fixed a typo (stoppped) when printing out completion actions
+lib/glob/glob.c
+ - glob_testdir: now takes a second flags argument (currently unused);
+ changed prototype and callers
- 2/22
- ----
-lib/sh/netopen.c
- - include <arpa/inet.h> if it's present
+ 2/1
+ ---
+lib/glob/glob.c
+ - glob_testdir: if flags argument includes GX_ALLDIRS (globstar), use
+ lstat so we skip symlinks when traversing the directory tree.
+ Originally reported by Chris Down <chris@chrisdown.name>
-aclocal.m4
- - new macro, BASH_FUNC_INET_ATON, checks for inet_aton(3) including
- <netinet/in.h> and <arpa/inet.h>, which some systems require to
- resolve the function
+ 2/2
+ ---
+lib/readline/undo.c
+ - rl_do_undo: make sure CUR is non-zero before dereferencing it to
+ check cur->data against rl_undo_list. Report and fix from
+ Andreas Schwab <schwab@linux-m68k.org>
-configure.in
- - if autoconf can't fund inet_aton on its own, try BASH_FUNC_INET_ATON
+doc/{bash.1,bashref.texi}
+ - added slight clarifying language to the description of $*,
+ describing what happens when the expansion is not within double
+ quotes
-pcomplete.c
- - fixed a memory leak in gen_wordlist_completions
- - changed gen_wordlist_completions to do prefix-matching against the
- word being completed
+ 2/4
+ ---
+test.c
+ - unary_test: add code to -v case so that it interprets `bare' array
+ references (foo[1]) and returns true if that index has a value
-doc/bash.1, lib/readline/doc/rluser.texinfo
- - documented the change in behavior of the -W option to complete and
- compgen
+ 2/5
+ ---
+trap.c
+ - restore_default_signal: fix SIGCHLD special case for SIG_TRAPPED flag
+ off but SIG_INPROGRESS mode set and handler IMPOSSIBLE_TRAP_HANDLER;
+ continue with resetting handler in this case. maybe_set_sigchld_trap
+ will check these things before resetting sigchld trap from
+ run_sigchld_trap. Fixes (apparently long-standing?) problem reported
+ by Alexandru Damian <alexandru.damian@intel.com>
-builtins/umask.def
- - if parse_symbolic_mode() returns -1, symbolic_umask needs to return
- -1 as well, otherwise the umask will be changed inappropriately
+ 2/6
+ ---
+lib/sh/strtrans.c
+ - ansic_quote: fixed a bug when copying a printable character that
+ consumes more than one byte; byte counter was not being incremented.
+ Bug report from jidanni@jidanni.org
+ 2/7
+ ---
input.c
- - always compile in getc_with_restart and ungetc_with_restart
-
-parse.y
- - yy_stream_get and yy_stream_unget now call getc_with_restart and
- ungetc_with_restart, respectively, to avoid problems with some
- systems not restarting the read(2) when signals that bash handles
- are received during the read (since bash installs its signal
- handlers without the SA_RESTART flag)
+ - getc_with_restart: if read(2) returns -1/EINTR and interrupt_state or
+ terminating_signal is set (which means QUIT; will longjmp out of this
+ function), make sure the local buffer variables are zeroed out to
+ avoid reading past the end of the buffer on the next call. Bug report
+ from Dan Jacobson <jidanni@jidanni.org>
-lib/readline/complete.c
- - don't default rl_completion_case_fold to 1 if __DJGPP__ is defined
+ 2/9
+ ---
+bashline.c
+ - command_word_completion_function: if a directory in $PATH contains
+ quote characters, we need to quote them before passing the candidate
+ path to rl_filename_completion_function, which performs dequoting on
+ the pathname it's passed. Fixes bug reported by Ilyushkin Nikita
+ <ilyushkeane@gmail.com>
- 2/25
+ 2/11
----
-subst.c
- - renamed `varlist' to `subst_assign_varlist' and made it global
-
-jobs.c
- - when running a SIGCHLD trap, need to unwind-protect
- subst_assign_varlist and set it to NULL before running the trap
- command (fix from ericw@bestnet.org and doogie@debian.org)
+parse.y
+ - xparse_dolparen: save and restore shell_eof_token around call to
+ parse_string, intead of just leaving it set to ')'
+ - shell_getc: when -v is set, only print the command line when
+ shell_eof_token is 0, so we don't print it multiple times when
+ recursively entering the parser to parse $(...) commands. Fixes
+ bug reported by Greg Wooledge <wooledg@eeg.ccf.org>
- 2/28
- ----
-lib/readline/doc/rltech.texinfo
- - document rl_funmap_names()
+[changed release status to 4.3-release]
- 2/29
+ 2/13
----
-subst.c
- - change split_at_delims to set the current word more appropriately
- when the cursor is between two words. Should probably change this
- again to set the current word like this only when the cursor is at
- whitespace or another delim just before the word start
-
- 3/1
- ---
-lib/sh/shtty.c
- - more checks for flag bits being defined before using them
+lib/sh/strtrans.c
+ - ansic_quote: handle case where mbrtowc reports that the multibyte
+ sequence is incomplete or invalid. Fixes bug reported by
+ Eduardo A. Bustamante López <dualbus@gmail.com>
- 3/7
- ---
-variables.h
- - fix typo in COPY_EXPORTSTR definition
-
- 3/14
+ 2/14
----
-subst.c
- - changed split_at_delims so that if the cursor is at whitespace
- between words, and we're interested in the current word (cwp != NULL),
- make a new empty word and set the cwp to that word
-
-locale.c
- - support for setting LC_NUMERIC locale category based on value of
- LC_NUMERIC shell variable
-
variables.c
- - LC_NUMERIC is now treated specially
-
-doc/{bash.1,bashref.texi}
- - LC_NUMERIC updates
-
- 3/15
- ----
-pcomplete.c
- - fix to avoid freeing memory twice
+ - find_variable_nameref_context: fix a problem that caused the loop
+ to go one context too close to the global context. In some cases,
+ simple variable assignment would set a variable in the global
+ context instead of a local context. Bug report from
+ Geir Hauge <geir.hauge@gmail.com>