- 4/9/2001
- --------
-[bash-2.05 released]
+ 2/14/2011
+ ---------
+[bash-4.2 released]
- 4/10
+ 2/15
----
-redir.c
- - check return value of fclose() in write_here_document() for error
- returns; don't just rely on fwrite() failing
+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>
-support/bashbug.sh
- - set TMPDIR to /tmp if it's null or unset
- - use $TMPDIR in the TEMP tempfile name template
- - fixed the call to `mktemp', if it exists, to make it more portable
-
-jobs.c
- - if WCONTINUED is not defined, define it to 0 and add a define for
- WIFCONTINUED(wstatus) which expands to 0
- - add WCONTINUED to the flags passed to waitpid(2) in waitchld()
- - don't increment children_exited if waitpid's status is WIFCONTINUED,
- since we don't want to call a SIGCHLD trap handler in this case
- - in waitchld(), we set child->running to 1 if WIFCONTINUED(status)
- is non-zero
- - make sure pretty_print_job doesn't check for the core dump bit if
- the process has been continued; it's only valid if the job is dead
- - in set_job_status_and_cleanup, set the job to JRUNNING if job_state
- is non-zero and the job was previously marked as JSTOPPED
+ 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
-configure.in
- - add -DBROKEN_DIRENT_D_INO to interix LOCAL_CFLAGS
+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>
-lib/glob/glob.c
- - if BROKEN_DIRENT_D_INO is defined, define REAL_DIR_ENTRY to 1
+doc/{bash.1,bashref.texi}
+ - document the exact expansions here strings undergo
-jobs.c
- - in kill_pid, we only need to block and unblock SIGCHLD if the
- `group' argument is non-zero, since otherwise we just call `kill'
- on the pid argument
+ 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>
-version.c
- - update copyright date to 2001
+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
-bashline.c
- - prog_complete_return needs to take a `const char *' as its first
- argument
- - history_completion_generator needs to take a `const char *' as
- its first argument, and `text' needs to be a `const char *'
+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
- 4/11
+ 2/18
----
-redir.c
- - fixed a weird typo in redir_special_open, case RF_DEVFD, added
- call to all_digits before call to legal_number
- - fixed do_redirection_internal to call legal_number instead of atol(3)
- when translating r_duplicating_{in,out}put_word, so it handles
- overflow better
- - produce an error message in redirection_error for out-of-range
- file descriptors
- - change allocation strategy in redirection_error so we don't have to
- malloc scratch memory if redirection_expand() fails
+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>
-jobs.h
- - added defines for `running' member of a struct process
-
-general.c
- - fix legal_number to return 0 when strtol(3) reports overflow or
- underflow
+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>
-parse.y
- - changed read_token_word to call legal_number instead of atoi(3)
+ 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
-input.c
- - return -1/EBADF from close_buffered_fd if fd is < 0
+variables.h
+ - new extern declaration for chkexport
-command.h
- - fixed bogus comment about IS_DESCRIPTOR in description of the
- REDIRECTEE struct
-print_cmd.c
- - change cprintf's 'd' modifier code to display negative numbers as
- an out-of-range value. We can do this only because the only use
- of %d is to output file descriptor numbers in redirections
+{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>
-support/mksignames.c
- - need to include config.h to get a possible value for
- UNUSABLE_RT_SIGNALS
+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>
- 4/16
- ----
-lib/readline/doc/rluser.texinfo
- - corrected a small error in one description of M-DEL
+support/shobj-conf
+ - add a stanza for nsk on the Tandem from Joachim Schmitz
+ <jojo@schmitz-digital.de>
- 4/17
- ----
-stringlib.c
- - need to initialize `ind' before calls to RESIZE_MALLOCED_BUFFER
- in strcreplace()
+{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>
-support/bashversion.c
- - new file, prints bash version information
+ 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>
-Makefile.in
- - rules for building bashversion and linking it to version.o
+ 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>
- 4/24
- ----
-conftypes.h
- - new file with HOSTTYPE, OSTYPE, MACHTYPE, etc. defines from
- variables.h
+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, version.c
- - include conftypes.h
+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>
-patchlevel.h
- - new file, contains define for PATCHLEVEL. Doing away with the old
- scheme of having the information in configure.in
+subst.c
+ - 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>
-version.c
- - include patchlevel.h
+ 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>
-Makefile.in
- - run bashversion -p to find patch level rather than have configure
- substitute in a value
- - pass -S ${top_srcdir} to support/mkversion.sh
+ 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
-support/mkversion.sh
- - don't put PATCHLEVEL define into version.h, but accept and ignore
- a -p option
- - take a new -S srcdir option
- - find the patch level by parsing it out of patchlevel.h
+ 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>
-configure.in
- - hard-code BASHVERS assignment instead of reading it from a file
- - remove BASHPATCH; don't substitute it
+ 3/7
+ ---
+jobs.c
+ - 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>
-_distribution,_patchlevel
- - removed
+ 3/8
+ ---
+shell.c
+ - initialize no_line_editing to 1 if READLINE is not defined -- we
+ can't have line editing without readline
- 4/26
+ 3/12
----
-shell.c
- - call init_noninteractive() in open_shell_script if forced_interactive
- is non-zero (the shell was started with -i) and fd_is_tty is 0
- (the script file is a real file, not something like /dev/stdin),
- since it wasn't done earlier
+lib/readline/signals.c
+ - add SIGHUP to the set of signals readline handles
-builtins/printf.def
- - change for POSIX.2 compliance when conversion errors are encountered
- when processing %d, %u, and floating point conversion operators
- (print a warning message, return the value accumulated at the time
- of the error -- which is always 0 -- and exit with a non-zero status)
+lib/readline/doc/rltech.texi
+ - document that SIGHUP is now part of the set of signals readline
+ handles
-command.h
- - added CMD_COMMAND_BUILTIN for use by the `command' builtin and the
- code in execute_cmd.c
+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
-builtins/command.def
- - add CMD_COMMAND_BUILTIN to the created command's flags
+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
- 5/1
- ---
-configure.in
- - add call to AC_C_CONST to test `const' compiler behavior
- - add call to AC_C_INLINE to test `inline' compiler behavior
- - add call to AC_C_STRINGIZE to test cpp #x stringizing operator
+input.c
+ - rearrange getc_with_restart so that the return values from read()
+ are handled right
-config.h.in
- - add `#undef const' for configure to substitute
- - add `#undef inline' for configure to substitute
- - add `#undef HAVE_STRINGIZE' for configure to substitute
+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
-include/stdc.h
- - remove code that defines or undefines `const' and `inline'
- - change the __STRING macro to be defined depending on the value
- of HAVE_STRINGIZE
+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
-lib/malloc/malloc.c
- - change the __STRING macro to be defined depending on the value
- of HAVE_STRINGIZE
+builtins/read.def
+ - take out setting terminate_immediately; add calls to CHECK_TERMSIG
+ after read calls
-lib/readline/{readline,rlprivate}.h
- - moved rl_get_termcap to readline.h, making it a public function
+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>
-lib/readline/readline.h
- - new #define, RL_READLINE_VERSION, hex-encoded library version
- number, currently set to 0x0402
- - new public int variable, rl_readline_version
+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
-lib/readline/readline.c
- - #define RL_READLINE_VERSION if it is not already defined (which it
- should be in readline.h)
- - initialize rl_readline_version to RL_READLINE_VERSION
+ 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
-lib/readline/doc/rltech.texinfo
- - documented rl_get_termcap
- - documented rl_readline_version
+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>
-jobs.c
- - job_exit_status should return an int, not a WAIT (undetected
- before because on most POSIX-like systems a WAIT is really an int)
+ 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
-builtins/evalfile.c
- - added FEVAL_REGFILE (file must be a regular file) to accepted
- _evalfile flags
- - fc_execute_file() adds FEVAL_REGFILE to _evalfile flags. This
- means that startup files and files read with `.' no longer need
- to be regular files
+ 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
- 5/2
- ---
+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)
-lib/termcap/Makefile.in
- - fix target for installed termcap library (normally unused)
+ 3/24
+ ----
+doc/{bash.1,bashref.texi}
+ - slightly modify BASH_SUBSHELL description based on complaint from
+ Sam Liddicott <sam@liddicott.com>
-lib/tilde/Makefile.in
- - fix install target to install in $(libdir) (normally unused)
+ 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>
-Makefile.in
- - don't make $(man3dir) since there's nothing installed there
+ 3/26
+ ----
+lib/readline/rltypedefs.h
+ - remove old Function/VFunction/CPFunction/CPPFunction typedefs as
+ suggested by Tom Tromey <tromey@redhat.com>
-Makefile.in,doc/Makefile.in
- - change `man1ext' to `.1', `man3ext' to `.3'
- - change appropriate install targets to use new values of man[13]ext
- - use `test ...' instead of `[...]'
- - add support for DESTDIR root installation prefix, for package
- building (installdirs, install, install-strip, uninstall targets)
+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>
-builtins/common.c
- - new function int get_exitstat(WORD_LIST *list) returns an eight-bit
- exit status value for use in return, exit, logout builtins
+ 3/27
+ ----
+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>
-builtins/common.h
- - extern declaration for get_exitstat()
+lib/readline/shell.c
+ - change sh_set_lines_and_columns to use static buffers instead of
+ allocating the buffers to pass to setenv/putenv
-builtins/{exit,return}.def
- - call get_exitstat where appropriate
+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
-builtins/printf.def
- - add support for "'" flag character as posix 1003.2-200x d6 says
- - fix core dump when user-supplied field width or precision is 0
- - fix to printstr() to handle zero-length precision with `%b' format
- specifier (printf '%.0b-%.0s\n' foo bar)
- - fix to printstr() to treat a negative field width as a positive
- field width with left-justification
- - fix to mklong to avoid static buffers, which can always be overrun
- by someone sufficiently motivated
+lib/readline/rlprivate.h
+ - new external declaration for _rl_sigwinch_resize_terminal() (currently
+ unused)
-bashline.c
- - change var in add_host_name to type `size_t' for passing to xrealloc
+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>
- 5/3
- ---
-execute_cmd.c
- - change restore_signal_mask to accept a sigset_t *, since a sigset_t
- may not fit into a pointer, change call
+ 3/29
+ ----
+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
-unwind_prot.c
- - use a union UWP in restore_variable when restoring a variable whose
- size is the same as sizeof(int), the reverse of the method used to
- store it in unwind_protect_int
+configure.in
+ - don't check for isinf or isnan; c99 says they're macros anyway
-builtins/printf.def
- - use a #define LENMODS containing the length modifiers instead of
- testing against each possible modifier character, save any mod
- character found
- - add support for ISO C99 length specifiers `j', `t', and `z'
- - if `L' modifier is supplied with a floating point conversion char,
- pass a `long double' to printf if HAVE_LONG_DOUBLE is defined
+config.h.in
+ - remove defines for ISINF_IN_LIBC and ISNAN_IN_LIBC, no longer used
+ by snprintf.c
-configure.in,config.h.in
- - call AC_C_LONG_DOUBLE to check for `long double'; define
- HAVE_LONG_DOUBLE if supported
+ 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>
-bashline.c
- - fix an inadvertantly-unclosed comment in attempt_shell_completion
- - make set_saved_history return a value
- - make dynamic_complete_history return a useful value
+lib/readline/display.c
+ - 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
-{make_cmd,execute_cmd,shell,subst,trap,variables,input,unwind_prot,test,
-pcomplete}.c
- - removed some declared-but-unused variables
+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>
-builtins/{cd,enable,fc,set,setattr,type,umask,printf,complete}.def
- - removed some declared-but-unused variables
+ 4/6
+ ---
-lib/sh/{zread,netopen}.c
- - removed some declared-but-unused variables
+config-top.h
+ - change DEFAULT_PATH_VALUE to something more useful and modern
-execute_cmd.c
- - in execute_arith_command, use a long variable to hold the result
- of evalexp(), since that's what it returns
+ 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>
-builtins/evalstring.c
- - make cat_file return -1 on a read or write error
+ 4/11
+ ----
+include/chartypes.h
+ - fix a couple of dicey defines (though ones that don't cause any
+ compiler warnings) in IN_CTYPE_DOMAIN
-lib/sh/stringlib.c
- - make merge_stringlists() return the right value
+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>
- 5/7
- ---
pcomplete.c
- - remove typo that caused empty declaration (;;)
+ - 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
-parse.y
- - fix yyerror() to accept a single string argument; fix callers
+pcomplete.h
+ - new extern declaration for it_helptopics
-trap.c
- - cast pointer to long instead of int when printing message with
- internal_warning() in run_pending_traps()
+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>
-subst.c
- - fix process_substitute to handle stdin being closed
+ 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
-test.c
- - change `while' to `if' in and() and or(), since the loop isn't
- actually performed -- there's an unconditional `return' in the
- loop body
- - check for integer overflow of arguments to `-t'
+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
-lib/sh/netopen.c
- - change _getserv() to reject negative port/service numbers
+ 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 `)'
-expr.c
- - fix strlong() to not convert the base specification from long to
- int before checking for overflow, since truncation on machines
- where sizeof(int) != sizeof(long) may mask errors
+ 4/14
+ ----
+print_cmd.c
+ - change overlapping strcpy in named_function_string to memmove
-builtins/{jobs,kill,wait}.def
- - use legal_number instead of atoi when converting strings to pid_t;
- check for numeric overflow
+sig.h
+ - UNBLOCK_SIGNAL: convenience define, same as UNBLOCK_CHILD, just
+ restores an old signal mask
-input.c
- - fix for cygwin in b_fill_buffer -- off-by-one error when checking
- buffer for \r\n termination
+trap.c
+ - 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>
-general.h
- - new #define INT_STRLEN_BOUND(t), computes max length of string
- representing integer value of type T, possibly including a sign
- character
- - include <limits.h> if it's present
+ 4/15
+ ----
+doc/{bash.1,bashref.texi}
+ - make it clear that enabling monitor mode means that all jobs run in
+ separate process groups
-{execute_cmd,findcmd,test}.c
- - don't include <limits.h>, since general.h does it now
+ 4/18
+ ----
+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>
-{execute_cmd,lib/sh/itos,pcomplete,print_cmd,subst,variables}.c
- - use INT_STRLEN_BOUND instead of static array sizes when converting
- various strings to integer values
+ 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
-shell.h
- - struct fd_bitmap now uses an `int' size, since it's bounded by
- the number of file descriptors, which must fit into an `int'
+ 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
-execute_cmd.c
- - FD_BITMAP_DEFAULT_SIZE is now 32, not 32L
- - new_fd_bitmap takes an `int' size parameter, not a `long'
+lib/readline/rlprivate.h
+ - extern declaration for _rl_disable_meta_key
-execute_cmd.h
- - change prototype for new_fd_bitmap()
+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>
-test.c
- - fix test_stat to check for overflow when parsing the integer file
- descriptor number; return ENOENT instead of EBADF for files that
- are not open
+ 4/26
+ ----
+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
-hashlib.c
- - don't discard the upper 32 bits of the random value, if present
+ 4/29
+ ----
+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>
-lib/readline/shell.c
- - use the same INT_STRLEN_BOUND mechanism to decide how much space to
- allocated in sh_set_lines_and_columns
+ 5/2
+ ---
+doc/{bash.1,bashref.texi}
+ - add forward reference to `Pattern Matching' from `Pathname
+ Expansion', suggested by Greg Wooledge <wooledg@eeg.ccf.org>
- 5/8
+ 5/5
---
-aclocal.m4
- - add check for libtinfo (termcap-specific portion of ncurses-5.2) to
- BASH_CHECK_LIB_TERMCAP
- - new macro, RL_LIB_READLINE_VERSION, checks version of installed
- readline library and (optionally) writes version #defines to
- config.h. Bash doesn't use the version defines
+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
-configure.in
- - call RL_LIB_READLINE_VERSION instead of support/rlvers.sh
+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>
-execute_cmd.c
- - fix execute_shell_script and the WHITECHAR and STRINGCHAR macros
- to check array bounds before indexing into the sample string
+ 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>
-unwind_prot.[ch]
- - import new versions submitted by Paul Eggert <eggert@twinsun.com>
- with a couple of changes for backwards compatibility, so the rest
- of the source doesn't need to be changed yet
+ 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
- - use unwind_protect_var on last_made_pid in run_sigchld_trap
+ 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>
-builtins/bind.def
- - use unwind_protect_var on rl_outstream
+ 5/11
+ ----
+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
-general.c
- - rework print_rlimtype to use INT_STRLEN_BOUND and handle the
- most negative number correctly
+ 5/12
+ ----
+configure.in
+ - set the prefer_shared and prefer_static variables appropriately
+ depending on the value of $opt_static_link
-expr.c
- - `tokval' should have been a `long', since all arithmetic is done
- as longs
+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>
-builtins/history.def
- - consolidate tests for valid history position in one block to
- avoid duplicate code and strings
+ 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>
-builtins/ulimit.def
- - fix check for overflow when setting limit to work when int is 32
- bits and RLIMTYPE is 64
+builtins/help.def
+ - help_builtin: change strncmp to strcmp so that `help read' no longer
+ matches `readonly'. Suggested by Clark Wang <dearvoid@gmail.com>
-lib/sh/tmpfile.c
- - don't truncate the result of time(3) to int; just use time_t,
- since it's being assigned to an `unsigned long'
+config.h.in
+ - add define for GLIBC21, checked using jm_GLIBC21 as part of the tests
+ for libintl
-mailcheck.c
- - use legal_number instead of atoi in time_to_check_mail() to catch
- more numeric errors; consolidate error checking in one block
- - last_time_mail_checked should be a time_t
+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>
- 5/9
- ---
-builtins/set.def
- - recognize `set [-+]o nolog' if HISTORY is defined
+aclocal.m4
+ - BASH_STRUCT_WEXITSTATUS_OFFSET: change AC_RUN_IFELSE to AC_TRY_RUN
+ to avoid warning about not using AC_LANG_SOURCE
-bashline.c
- - new variable `dont_save_function_defs', set by `set -o nolog';
- currently ignored
+ 5/14
+ ----
+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
-command.h
- - the `dest' member of a REDIRECTEE is now an `int'
+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
-parse.y,redir.c
- - changed uses of `redir.test' (where redir is a REDIRECTEE) since
- it's now an int
+ 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>
-lib/readline/rlstdc.h
- - don't mess around with `const', rely on configure to supply a
- proper definition if the compiler doesn't support it
+ 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).
-lib/tilde/tilde.h
- - include <config.h> if HAVE_CONFIG_H is defined
- - don't mess around with `const', rely on configure
+lib/readline/{complete,display,mbutil}.c
+ - use WCWIDTH instead of wcwidth
-builtins/shopt.def
- - new read-only `shopt' option, login_shell, non-zero if shell is a
- login shell (as decided by shell.c)
- - new function set_login_shell(), sets shopt private value of
- login_shell
-
-builtins/common.h
- - new extern declaration for set_login_shell
-
-shell.c
- - call set_login_shell after setting value of login_shell (in
- main() and set_shell_name())
+ 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>
-parse.y
- - added new `\A' prompt string escape sequence: time in 24-hour
- HH:MM format
+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
-configure.in, config.h.in
- - check for <grp.h>, define HAVE_GRP_H if found
+lib/readline/rlprivate.h
+ - extern declaration for _rl_utf8locale
-builtins/complete.def
- - add new `-A group/-g' option to complete group names
+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
-pcomplete.h
- - new define for CA_GROUP, used with group name completion
+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
-pcomplete.c
- - add code to support CA_GROUP group name completion
+config.h.in
+ - WCWIDTH_BROKEN: new define
-bashline.c
- - new function, bash_groupname_completion_function(), supports
- programmable completion of group names
+lib/readline/rlmbutil.h
+ - change WCWIDTH macro to use _rl_utf8locale and the full range of
+ Unicode combining characters (U+0300-U+036F)
-bashline.h
- - extern declaration for bash_groupname_completion_function
+ 5/19
+ ----
+lib/readline/rlprivate.h
+ - _rl_search_context: new member, prevc, will hold character read
+ prior to lastc
-lib/readline/bind.c
- - new inputrc variable, `match-hidden-files', controls completion
- matching files beginning with a `.' (on Unix)
+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>
+
+ 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/complete.c
- - new variable, _rl_match_hidden_files, mirrors `match-hidden-files'
- inputrc variable
+ 5/26
+ ----
-lib/readline/rlprivate.h
- - extern declaration for _rl_match_hidden_files
+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>
-builtins/hash.def
- - new `-t' option to list hash values for each filename argument
+lib/readline/readline.h
+ - extern declarations for rl_history_substr_search_{for,back}ward
-builtins/read.def
- - alarm(3) takes an `unsigned int' argument, not int
- - check for arithmetic overflow with -t and -n options
+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
-input.c
- - check for read error before doing \r\n translation on cygwin in
- b_fill_buffer
- - reset bp->b_used to 0 instead of leaving it at -1 on read error
- in b_fill_buffer
+lib/readline/doc/{rluser.texi,readline.3}
+ - document history-substring-search-forward and
+ history-substring-search-backward
-builtins/shopt.def
- - new functions, shopt_setopt(name, mode) and
- shopt_listopt(name, mode) to give the rest of the shell an easy
- interface
+ 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/common.h
- - extern declarations for shopt_setopt and shopt_listopt
+config-top.h
+ - DONT_REPORT_SIGTERM: new user-modifiable setting. Commented out
+ by default
-shell.c
- - new invocation options -O and +O, to list or set/unset shopt
- options like +o/-o sets and unsets `set -o' options
+ 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.
+ 5/29
+ ----
doc/{bash.1,bashref.texi}
- - document `set -o nolog'
- - document `login_shell' shopt option
- - document new `\A' prompt string escape sequence
- - document new `-t' option to `hash'
- - document new `[+-]O' invocation option
+ - 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>
-doc/bashref.texi
- - add text to `Invoking Bash' section defining a login shell; text
- taken from man page
+ 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>
-doc/bash.1, lib/readline/doc/rluser.texinfo
- - documented new complete/compgen `-A group/-g' option
+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
-lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
- - documented new `match-hidden-files' inputrc variable
+ This fixes problems with double-expansion and quote removal being
+ performed on the array indices
- 5/10
+ 6/13
----
-configure.in
- - fix AC_CHECK_PROG(ar, ...)
- - add AC_CHECK_TYPE for ssize_t
+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.
-config.h.in
- - new #undef for ssize_t
-lib/sh/zread.c
- - int -> ssize_t fixes to mirror modern declarations of read and write
- - the `off' variable in zsyncfd should be an off_t since it computes
- a file offset
- - the local buffer `lbuf' is now char, since it's not nice to pass
- unsigned char * to read(2), and the values from it are assigned to
- a char anyway
- - lind and lused are now size_t, since they index into a buffer
- - set lused to 0 on read error
-
-lib/sh/zwrite.c
- - change second argument to type `char *', since ISO C says you have
- to pass a `char *' to `write'
+ 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>
-externs.h
- - fix extern declarations of zread, zread1, zreadc, and zwrite
- - prototype extern declaration of qsort_string_compare
- - add extern declaration for history_delimiting_chars() from parse.y
+ 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>
-input.h
- - b_used and b_inputp members ofr struct BSTREAM are now size_t
+doc/{bash.1,bashref.texi}
+ - checkwinsize: remove language saying that only interactive shells
+ check the window size after each command
-builtins/evalstring.c
- - the number of chars read with zread in cat_file should be assigned
- to a variable of type ssize_t
+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
-input.c
- - the number of chars read with zread in b_fill_buffer should be
- assigned to a variable of type ssize_t
- - `localbuf' is now type char[], since POSIX says you shouldn't pass
- unsigned char * to read(2)
- - in getc_with_restart(), use a variable of type unsigned char to
- get a value from the local buffer and return it
- - in ungetc_with_restart, explicitly return the character arg passed
- to avoid relying on localbuf being unsigned char
+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>
subst.c
- - the number of chars read with zread in read_comsub should be
- assigned to a variable of type ssize_t
+ - 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
+
+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
-mksyntax.c
- - instead of casting to unsigned char * in addcstr, use a variable
- of type unsigned char and let the compiler do the work
+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
parse.y
- - instead of casting to unsigned char * in yy_readline_get, use a
- variable of type unsigned char and let the compiler do the work
- - ditto for yy_string_get and shell_getc (cast to unsigned char)
+ - {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>
-subst.c
- - instead of casting to unsigned char when assigning to ifscmap in
- expand_word_internal, use a variable of type unsigned char and
- let the compiler do the work
+include/shmbutil.h
+ - use locale_mb_cur_max instead of MB_CUR_MAX in ADVANCE_CHAR and
+ similar macros
-lib/sh/strtrans.c
- - instead of casting to unsigned char in ansic_quote, use a variable
- of type unsigned char and let the compiler do the work
+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>
-builtins/evalstring.c
- - remove extern declarations for zwrite and run_trap_cleanup; they're
- in externs.h
- - prototype cat_file forward declaration
+ 6/30
+ ----
+execute_cmd.c
+ - execute_pipeline: make sure the lastpipe code is protected by
+ #ifdef JOB_CONTROL. Fixes problem reported by Thomas Cort
+ <tcort@minix3.org>
-Makefile.in
- - remove -I$(includedir) from INCLUDES and SUBDIR_INCLUDES
+ 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
-aclocal.m4
- - change RL_LIB_READLINE_VERSION to set RL_PREFIX, RL_LIBDIR,
- and RL_INCLUDEDIR to what it used to test the installed readline
- library version for use by the caller
- - change RL_LIB_READLINE_VERSION to not compute ac_cv_rl_prefix if
- the caller has already assigned it a value
- - rename _rl_prefix -> ac_cv_rl_prefix, _rl_libdir -> ac_cv_rl_libdir,
- _rl_includedir -> ac_cv_rl_includedir
+lib/readline/signals.c
+ - rl_signal_handler: if we're in callback mode, don't interrupt
+ immediately on a SIGWINCH
-configure.in
- - change testing of whether to use the value of
- $opt_with_installed_readline to be != no, to allow the user to
- specify a prefix where the installed readline library may be found
- - if --with-installed-readline=PREFIX is supplied, set ac_cv_rl_prefix
- to PREFIX before calling RL_LIB_READLINE_VERSION
- - if --with-installed-readline[=PREFIX] is supplied, don't set
- RL_LIBDIR and RL_INCLUDEDIR; let RL_LIB_READLINE_VERSION take care
- of it, set RL_INCLUDE=-I${RL_INCLUDEDIR}
- - if --with-installed-readline[=PREFIX] is supplied, and we're
- linking with the history library, assign $RL_LIBDIR to HIST_LIBDIR
- so we use the same version of the installed readline and history
- libraries
-
-Makefile.in, builtins/Makefile.in
- - have configure substitute RL_INCLUDEDIR, set RL_INCLUDEDIR variable
+ 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
-doc/bashref.texi
- - updated description of --with-installed-readline configure option
+bashline.h
+ - extern declaration for set_directory_hook so shopt code can use it
-general.c
- - moved QSFUNC typedef here from builtins/common.c
+ 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>
-{alias,bashline,variables,lib/sh/stringvec}.c
- - cast fourth argument to qsort to (QSFUNC *)
+ 7/7
+ ---
+doc/{bash.1,bashref.texi}
+ - document new `globasciiranges' shopt option
-alias.c
- - prototype forward declaration of qsort_alias_compare
+ 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
-bashhist.c
- - include <glob/glob.h> for extern declaration of glob_pattern_p
- - remove extern declaration of history_delimiting_chars; it's now
- in externs.h
- - prototype forward declarations of histignore_item_func,
- maybe_add_history, and bash_add_history
+doc/{bash.1,bashref.texi}
+ - document new `direxpand' shopt option
-bracecomp.c
- - remove extern declaration for sh_backslash_quote; it's in externs.h
+ 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
-braces.c
- - remove extern declaration for extract_command_subst; it's in subst.h
- - prototype forward declarations for expand_amble, array_concat, and
- brace_gobbler
+ 7/18
+ ----
+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
-error.c
- - prototype extern declaration of give_terminal_to, fix bad call
+ 7/24
+ ----
+lib/readline/isearch.c
+ - _rl_isearch_dispatch: save and restore cxt->mb and cxt->pmb
+ appropriately when in a multibyte locale
-{execute_cmd,expr,findcmd,jobs,mailcheck,nojobs,pcomplete,print_cmd,redir,
-shell}.c
- - prototype all static forward function declarations
+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
-pcomplete.c
- - changed some function parameters to `const char *' to avoid discarding
- const qualifier
+lib/readline/signals.c
+ - rl_signal_handler: don't interrupt immediately if in callback mode
-make_cmd.c
- - make_bare_word, make_word_flags, and make_word now take a
- `const char *' string argument
+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>
-make_cmd.h
- - changed extern declarations for make_bare_word and make_word
+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
-print_cmd.c
- - cprintf now takes a `const char *' as its first argument, like
- xprintf and printf
- - the conditional define for xprintf should have been HAVE_VPRINTF,
- not HAVE_VFPRINTF
+doc/{bash.1,bashref.texi}
+ - document new Posix-mode behavior of `command' when preceding builtins
+ that take assignment statements as arguments
-shell.c
- - in isnetconn(), the return value of sizeof() is size_t
+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>
-aclocal.m4
- - add inclusion of stddef.h if STDC_HEADERS is defined to 1 in
- BASH_CHECK_TYPE
+ 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>
-configure.in
- - add a call to BASH_CHECK_TYPE for socklen_t (type of third argument
- to getpeername(2))
+builtins/printf.def
+ - getint: if garglist == 0, return whatever getintmax returns (0).
+ Fixes bug reported by Ralph Coredroy <ralph@inputplus.co.uk>
- 5/11
+ 7/28
----
-lib/readline/bind.c
- - make `useq' a char array to pass to rl_macro_bind in
- rl_parse_and_bind
+doc/{bash.1,bashref.texi}
+ - minor changes to the descriptions of the cd and pushd builtins
-lib/readline/{{bind,isearch}.c,rlprivate.h}
- - _rl_isearch_terminators is now a char *, not unsigned char *
+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>
-{subst,variables,lib/sh/tmpfile}.c
- - dollar_dollar_pid is now a `pid_t' instead of `int'
+ 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
-variables.c
- - sbrand() now takes an `unsigned long' to set the seed value
- - changed last_random_value to type int, since it's always between
- 0 and 32767
- - use strtoul to convert the value in assign_random instead of atoi
- - take out casts in any arguments to sbrand()
- - take out cast to int in call to inttostr in set_ppid()
+ 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>
-subst.c
- - don't cast last_asynchronous_pid when passing to itos()
+ 8/9
+ ---
+builtins/common.c
+ - get_exitstat: return EX_BADUSAGE (2) on a non-numeric argument
-{sig,subst}.c
- - prototype all static forward function declarations
+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)
- 5/14
+ 8/16
----
-{test,trap,variables}.c
- - prototype all static forward function declarations
+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
-variables.c
- - free_variable_hash_data() now takes a PTR_T, a `generic pointer'
+ 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)
-builtins/{alias,bind,break,cd,complete,declare,enable,exit,fc,fg_bg,help,
-history,jobs,pushd,read,set,trap,umask,
- - prototype all static forward function declarations
+ 8/27
+ ----
+doc/{bash.1,bashref.texi}
+ - minor changes to the here string description to clarify the
+ expansions performed on the word
-builtins/read.def
- - reset_eol_delim now takes a `char *' arg, since that's what the
- unwind_protect functions pass it, and it ignores its arguments
- anyway
+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/readline/{histsearch,input,kill,rltty,search,vi_mode}.c
- - prototype all static forward function declarations
+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>
-lib/tilde/tilde.c
- - prototype all static forward function declarations
- - tilde_find_prefix, tilde_find_suffix, isolate_tilde_prefix, and
- glue_prefix_and_suffix now take `const char *' arguments where
- appropriate
+ 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>
-configure.in,config.h.in
- - check for vsnprintf, define HAVE_VSNPRINTF if found
+ 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;
-lib/readline/display.c
- - use vsnprintf() in rl_message if it's available; if we don't, at
- least set the last character in msg_buf to 0 to avoid overrun --
- we really can't do anything about overflow at this point. if it's
- available, this fixes buffer overflow problems in rl_message
+externs.h
+ - sh_backslash_quote: add second argument to function prototype
- 5/15
+bashline.c,braces.c,parse.y,builtins/printf.def
+ - change callers of sh_backslash_quote to add second argument
+
+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
+
+ 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
+
+ 9/10
----
-lib/readline/histexpand.c
- - in get_history_word_specifier, allow any character to terminate
- a `:first-' modifier, not just `:' and null. This is what csh
- appears to do. This allows things like `!:0- xyzzy' to replace the
- last argument with xyzzy
+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
- 5/18
+ 9/15
----
-configure.in, config.h.in
- - check for <stdint.h>, define HAVE_STDINT_H if found
- - check for intmax_t in <stdint.h>, define intmax_t as long if not
- found
+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>
- 5/21
+ 9/19
----
-builtins/kill.def
- - change to use strerror() for error message when kill(2) fails
+expr.c
+ - exppower: replace the simple exponentiation algorithm with an
+ implementation of exponentiation by squaring. Inspired by report
+ from Nicolas ARGYROU <nargy@yahoo.com>
-aclocal.m4
- - new macro, BASH_C_LONG_LONG, check for `long long'
+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>
-configure.in, config.h.in
- - call BASH_C_LONG_LONG, define HAVE_LONG_LONG if found
+ 9/20
+ ----
+lib/intl/localealias.c
+ - read_alias_file: close resource leak (fp) when returning on error
-lib/sh/snprintf.c
- - new file, with implementations of snprintf, vsnprintf, asprintf,
- and vasprintf, derived from inetutils version
+ 9/22
+ ----
+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
-Makefile.in, lib/sh/Makefile.in
- - add snprintf.c/snprintf.o
+ 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
-configure.in, config.h.in
- - add checks for snprintf, asprintf, vasprintf, with appropriate
- cpp defines
+ 9/30
+ ----
+execute_cmd.c
+ - 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>
-lib/readline/{rldefs,xmalloc}.h, lib/readline/xmalloc.c
- - xmalloc and xrealloc now take `size_t' arguments, like their bash
- counterparts
+ 10/1
+ ----
+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
-externs.h,lib/sh/itos.c
- - inttostr and itos now take `long' arguments
- - inttostr takes a `size_t' argument for the buffer size
+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
-{expr,lib/malloc/malloc,variables,general}.c
- - fixed calls to itos() by removing casts, etc.
+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.
-subst.[ch]
- - get_dollar_var_value now takes a long, not an int
- - sub_append_number now takes a long, not an int
+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>
-subst.c
- - in parameter_brace_expand_word, use a long and legal_number to
- translate ${N}, to avoid overflow
- - in parameter_brace_expand_length, use a long and legal_number to
- translate ${#N}, to avoid overflow
- - in do_array_element_assignment, array_expand_index,
- array_value_internal, use arrayind_t instead of int
- - let verify_substring_values take long * arguments for the return
- value of evalexp()
- - pass long * arguments to verify_substring_values in
- parameter_brace_substring
- - parameter_brace_expand_length now returns `long'
- - parameter_brace_expand now uses a long variable for the return
- value of parameter_brace_expand_length
- - param_expand now uses a long variable for the return value from
- evalexp
- - array_length reference now returns an `arrayind_t', since it can
- return the num_elements member of an array, which is of type
- arrayind_t
+lib/readline/readline.h
+ - new extern declaration for rl_filename_stat_hook
-subst.h
- - array_expand_index now returns an `arrayind_t'
+lib/readline/doc/rltech.texi
+ - rl_directory_rewrite_hook: now documented
+ - rl_filename_stat_hook: document
+
+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>
+
+ 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
-array.[ch]
- - array_subrange now takes arrayind_t arguments, not `int'
- - dup_array_subrange now uses arrayind_t local variable to do
- array indexing
- - use long to print array indices in print_element
+ 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/sh/Makefile.in
+ - remove some dependencies on version.h where it doesn't make sense
variables.c
- - null_array_assign, assign_dirstack, bind_array_variable
- now take arrayind_t arguments as array indices
- - assign_array_var_from_word_list, assign_array_var_from_string,
- unbind_array_element now use arrayind_t local variables for
- array indexing
+ - 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>
-variables.h
- - change extern declaration of bind_array_variable
+ 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>
-builtins/common.[ch]
- - get_numeric_arg now returns a `long', since it usually returns
- the value of legal_number()
+ 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>
-builtins/{shift,break}.def
- - use long variables for the return value of get_numeric_arg
+ 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>
+ 10/22
+ -----
builtins/history.def
- - convert string argument to int only if it's in range
+ - 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
-builtins/pushd.def
- - set_dirstack_element and get_dirstack_element now take `long'
- index arguments
- - get_dirstack_index now takes a `long' index argument, since it's
- passed the converted value from legal_number
+lib/readline/complete.c
+ - 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
+
+ 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
+
+ 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
+
+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
-lib/sh/timeval.c
- - in print_timeval, don't assume that the number of minutes fits into
- an int, since it's just seconds/60.
+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
-lib/sh/clock.c
- - ditto for print_clock_t
+ 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>
- 5/22
+ 11/2
----
-shell.c
- - since the -O option settings may possibly be overridden by the
- normal shell initialization or posix initialization, save the
- invocation options on an alist (with add_shopt_to_alist) and
- process them after basic initialization (with run_shopt_alist)
+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>
- 5/23
+ 11/5
----
-trap.h
- - new define, BASH_NSIG, all system signals plus special bash traps
+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
-trap.c, builtins/trap.def
- - use BASH_NSIG for array bounds and loops where appropriate
+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)
-trap.c
- - change decode_signal to disallow numeric signal numbers above
- NSIG -- this means you can only reference special traps like
- DEBUG by name
- - new SPECIAL_TRAP(s) macro to test whether s is one of the special
- bash traps (currently DEBUG and EXIT)
- - change reset_or_restore_signal_handlers so command substitution
- doesn't inherit the debug trap (like ksh93), and child processes
- don't have to rely on initialize_traps being run to get rid of
- any debug trap
-
-support/mksignames.c
- - add extra "ERR" signal name, value NSIG+1, allocate space for it
- and write it out in signal_names[]
+lib/glob/xmbsrtowcs.c
+ - xdupmbstowcs: fix call to realloc to use sizeof (char *) instead
+ of sizeof (char **) when assigning idxtmp
-trap.h
- - new define: ERROR_TRAP == NSIG+1, change BASH_NSIG to NSIG+2
- - extern declarations for set_error_trap, run_error_trap
- - new define: TRAP_STRING(s), expands to trap_list[s] if signal S
- is trapped and not ignored, NULL otherwise
+execute_cmd.c
+ - 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
-trap.c
- - add ERROR_TRAP to SPECIAL_TRAPS define
- - initialize ERROR_TRAP stuff in initialize_traps
- - new function: set_error_trap(command), sets the ERR trap string
- - new function: run_error_trap(command), runs the ERR trap string
- - set trap string for ERROR_TRAP to NULL in free_trap_strings
- - change reset_or_restore_signal_handlers so child processes don't
- inherit the ERR trap
- - add case to call run_error_trap in maybe_call_trap_handler
+builtins/read.def
+ - read_builtin: don't call bind_read_variable with a potentially-null
+ string
-execute_cmd.c
- - in execute_command_internal, keep track of ERR trap and call it if
- necessary
- - use TRAP_STRING to get the value of debug and error traps
- - in execute_function, arrange things so the ERR trap is not inherited
- by shell functions, and is saved and restored like the DEBUG trap
+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
-doc/{bash.1,bashref.texi}
- - documented new ERR trap
+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
-tests/{trap.{tests,right},trap2.sub,trap2a.sub}
- - added ERR trap tests
+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
subst.c
- - on machines without /dev/fd, change the named pipe fifo list to a
- list of structs containing pathname and proc information
- - change unlink_fifo_list to kill the proc in the fifo list with
- signal 0 and not remove the fifo if the proc is still alive. This
- should fix the problem on those backward systems without /dev/fd
- where fifos were removed when a job using process substitution was
- suspended
+ - 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
- 5/24
- ----
-examples/loadables/getconf.h
- - new file, with basic defines needed to make getconf work minimally
- on POSIX systems without the necessary definitions
+redir.c
+ - redirection_error: free `filename' if the redirection operator is
+ REDIR_VARASSIGN by assigning allocname
+
+eval.c
+ - send_pwd_to_eterm: fix memory leak by freeing value returned by
+ get_working_directory()
-examples/loadables/getconf.c
- - replacement functions for confstr, sysconf, pathconf for systems
- that lack them, providing a minimal posix interface
- - heavily augmented getconf, now supports all POSIX.1-200x,
- POSIX.2-200x, Solaris 7, AIX 4.2 getconf variables
+builtins/cd.def
+ - 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()
- 5/29
- ----
-builtins/setattr.def
- - make `readonly', `export', and `declare' print `invisible' variables
- as just a command and variable name, without a value, when listing
- all variables (as POSIX.2-200x d6 requires)
+builtins/type.def
+ - describe_command: free `full_path' before overwriting it with return
+ value from sh_makepath
+
+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
+ - list_hashed_filename_targets: fix memory leak by freeing `target'
+
+make_cmd.c
+ - make_arith_for_command: free `init', `test', and `step' before
+ returning error on parse error
+
+jobs.c
+ - initialize_job_control: don't call move_to_high_fd if shell_tty == -1
+
+general.c
+ - check_dev_tty: don't call close with an fd < 0
+ - legal_number: deal with NULL `string' argument, return invalid
- 5/30
+lib/sh/fmtulong.c
+ - fmtulong: if the `base' argument is invalid, make sure we index
+ buf by `len-1' at maximum
+
+print_cmd.c
+ - print_deferred_heredocs: don't try to dereference a NULL `cstring'
+ - cprintf: make sure to call va_end (args)
+
+variables.c
+ - push_dollar_vars: fix call to xrealloc to use sizeof (WORD_LIST *)
+ instead of sizeof (WORD_LIST **)
+
+lib/sh/zmapfd.c
+ - zmapfd: if read returns error, free result and return -1 immediately
+ instead of trying to reallocate it
+
+ 11/6
----
+execute_cmd.c
+ - 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
-configure.in
- - upgraded to autoconf-2.50 on main development machine, so require
- autoconf-2.50 in preparation for using some if its new features
- - call AC_C_PROTOTYPES
- - remove call to AC_EXEEXT, which now does the wrong thing
- - changed AC_INIT to new flavor
- - added call to AC_CONFIG_SRCDIR
- - AC_CONFIG_HEADER -> AC_CONFIG_HEADERS
- - AC_RETSIGTYPE -> AC_TYPE_SIGNAL
-
-configure.in, aclocal.m4, config.h.in
- - removed call to BASH_LARGE_FILE_SUPPORT, use AC_SYS_LARGEFILE
- standard support, with new macros _FILE_OFFSET_BITS and
- _LARGE_FILES
- - removed definition of BASH_LARGE_FILE_SUPPORT
+ 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>
-doc/bashref.texi
- - document new `--enable-largefile' configure option
+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
-lib/readline/readline.c
- - change rl_set_prompt to call rl_expand_prompt unconditionally, so
- local_prompt and local_prompt_prefix get set correctly
+pcomplete.h
+ - COPT_NOQUOTE: new complete/compgen option value
- 6/6
- ---
-lib/readline/complete.c
- - don't append `/' or ` ' to a match when completing a symlink that
- resolves to a directory, unless the match doesn't add anything
- to the word. This means that a tab will complete the word up to
- the full name, but not add anything, and a subsequent tab will add
- a slash. Change to append_to_match; callers changed
+builtins/complete.def
+ - noquote: new complete/compgen option; will be used to disable
+ filename completion quoting
-hashlib.c
- - new function, hash_table_nentries (table), returns the number of
- items in TABLE
+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)
-hashlib.h
- - extern declaration for hash_table_nentries
+doc/bash.1,lib/readline/doc/rluser.texi
+ - document new -o noquote option to complete/compgen/compopt
-configure.in
- - configure without bash malloc on openbsd; they claim it needs
- eight-bit alignment (which the bash malloc provides, but...)
+pathexp.c
+ - 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>
- 7/2
- ---
-stringlib.c
- - only call RESIZE_MALLOCED_BUFFER from strsub() if the replacement
- string length is > 0, avoid possible hangs if replacement is null
+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
-subst.c
- - don't include input.h; no longer needed
+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
-configure.in
- - remove calls to AC_SYS_RESTARTABLE_SYSCALLS and
- BASH_SYS_RESTARTABLE_SYSCALLS; the results are no longer used
+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>
-config.h.in
- - remove define for HAVE_RESTARTABLE_SYSCALLS
+ 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
-aclocal.m4
- - removed definition of BASH_SYS_RESTARTABLE_SYSCALLS; no longer used
+variables.c
+ - 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
-execute_cmd.c
- - changed select command so `return' no longer terminates the select
- command, so it can be used to return from an enclosing function.
- This is as ksh (88 and 93) does it
+ 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/read.def
+ - skip over NUL bytes in input, as most modern shells seem to. Bug
+ report by Matthew Story <matt@tablethotels.com>
lib/readline/vi_mode.c
- - fix trivial typo in declaration of vi_motion; `t' appears twice;
- the second instance should be `T'
+ - rl_vi_replace: set _rl_vi_last_key_before_insert to invoking key
- 7/3
- ---
-configure.in
- - don't add -static to LDFLAGS on Solaris 2.x. This means that the
- auxiliary programs will be built as dynamic executables, but that
- should do no harm
+ 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>
- 7/5
- ---
-lib/glob/fnmatch.c
- - fix the code that processes **(pattern) to short-circuit if the
- pattern is ill-formed or lacks a trailing `)' -- this fixes the
- segfault on **(/*)
-
-Makefile.in, builtins/Makefile.in
- - split CCFLAGS into CCFLAGS_FOR_BUILD and CFLAGS, to aid in
- cross-compilation
- - build programs that use $(CC_FOR_BUILD) using $(CCFLAGS_FOR_BUILD)
-
-configure.in, config.h.in
- - check for getaddrinfo(3), define HAVE_GETADDRINFO if found
-
-lib/sh/netopen.c
- - implemented a version of _netopen (_netopen6) that uses
- getaddrinfo(3) if available, use if HAVE_GETADDRINFO is defined.
- old _netopen is _netopen4; _netopen now calls either _netopen6
- or _netopen4 as appropriate
-
- 7/9
- ---
-builtins/exit.def
- - don't source ~/.bash_logout if subshell_environment is non-zero
+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
-execute_command.c
- - in execute_until_or_while, handle the case where `breaking' is
- set in the loop test (e.g., by the job control code when a job
- is stopped with SIGTSTP), but the return value from the test is
- something that would cause the loop to break. Need to decrement
- `breaking' in this case
+ 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
- 7/10
- ----
-execute_cmd.c
- - in execute_in_subshell, make sure a command of type cm_subshell
- inherits its `enclosing' command's CMD_IGNORE_RETURN flag
+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
-variables.c
- - in maybe_make_export_env, don't allow restricted shells to put
- exported functions in the export environment
+lib/readline/util.c
+ - rl_settracefp: new utility function to set the tracing FILE *
- 7/11
- ----
-lib/glob/strmatch.h
- - renamed old fnmatch.h
- - changed guard #ifdef to _STRMATCH_H
- - include system <fnmatch.h> if HAVE_LIBC_FNM_EXTMATCH is defined
+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)
+
+lib/readline/rlprivate.h
+ - extern declarations for _rl_sigcleanup and _rl_sigcleanarg
+
+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
+
+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
-lib/glob/strmatch.c
- - renamed old fnmatch.c
- - include "strmatch.h"
- - if HAVE_LIBC_FNM_EXTMATCH is defined, define a dummy version of
- strmatch() that just calls fnmatch(3)
+ 12/1
+ ----
+lib/glob/gmisc.c
+ - extglob_pattern: new function, returns 1 if pattern passed as an
+ argument looks like an extended globbing pattern
lib/glob/glob.c
- - include "strmatch.h"
- - fnmatch -> strmatch
+ - 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>
-Makefile.in, lib/glob/Makefile.in
- - fnmatch -> strmatch
+ 12/2
+ ----
+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
-{bashhist,execute_cmd,pathexp,pcomplete,shell,stringlib,subst,test}.c,
-pathexp.h,builtins/help.def
- - include <glob/strmatch.h>
- - fnmatch -> strmatch
+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
execute_cmd.c
- - broke the code that parses the interpreter name from a #! line
- out from execute_shell_script to a new function, getinterp()
- - call getinterp from execute_shell_script
- - use return value from getinterp in error message about bad
- #! interpreter in shell_execve
+ - execute_cond_node: added parens to patmatch assignment statement to
+ make intent clearer
- 7/12
+ 12/3
----
-lib/readline/isearch.c
- - the last isearch string is now remembered in a new static variable,
- last_isearch_string
- - if ^R^R is typed, readline now searches for the remembered isearch
- string, if one exists
+configure.in,config.h.in
+ - check for imaxdiv, define HAVE_IMAXDIV if present
- 7/24
- ----
-pcomplete.h
- - extern declaration for completions_to_stringlist()
+expr.c
+ - expassign, exp2: use imaxdiv if available. Doesn't help with checks
+ for overflow from 10/25
- 7/25
+ 12/6
----
-builtins/complete.def
- - make compgen handle -o default option
- - make compgen return success only if sl->list_len is non-zero,
- indicating that there are items on the list
+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>
- 7/31
+ 12/7
----
-execute_cmd.c
- - in execute_connection, force stdin to /dev/null for asynchronous
- commands if job control is not active, not just if the shell is
- running a shell script (since you can run `set -m' in a script)
-
-lib/readline/rltty.c
- - make sure _rl_tty_restore_signals resets `tty_sigs_disabled' on
- successful restoration of the terminal modes
- - make sure _rl_tty_disable_signals turns off IXON so that ^S and
- ^Q can be read by rl_quoted_insert
+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)
- 8/1
- ---
-aclocal.m4
- - new check for FNM_EXTMATCH being defined in <fnmatch.h>, as Ullrich
- Drepper intends to do for new versions of GNU libc
+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>
-config.h.in
- - new definition for HAVE_LIBC_FNM_EXTMATCH
+ 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
-configure.in
- - check for fnmatch, but don't define anything in config.h
- - call BASH_FUNC_FNMATCH_EXTMATCH to check for FNM_EXTMATCH
+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)
- 8/2
- ---
-alias.h
- - remove bogus extern declaration for xmalloc()
- - include "stdc.h"
- - add prototype declarations for all extern function declarations
+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
-xmalloc.c,lib/readline/xmalloc.c
- - fix xmalloc to return a PTR_T
- - fix xrealloc to return a PTR_T and take a PTR_T as first argument
+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
-include/ansi_stdlib.h
- - extern declarations for malloc and realloc have them return PTR_T
+lib/readline/rlprivate.h
+ - new extern declaration for _rl_executing_keyseq_size, buffer size
+ for rl_executing_keyseq
-xmalloc.h
- - new file, with extern declarations for functions in xmalloc.c
+lib/readline/doc/rltech.texi
+ - documented new variables: rl_executing_key, rl_executing_keyseq,
+ rl_key_sequence_length
-general.h
- - removed extern declarations for functions in xmalloc.c
- - include xmalloc.h
+ 12/13
+ -----
+bashline.c
+ - 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>
-Makefile.in,builtins/Makefile.in
- - update dependencies to include xmalloc.h
+ 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,{alias,array,bashline,bracecomp,execute_cmd,findcmd,flags,general,
-hashcmd,locale,mailcheck,make_cmd,pathexp,pcomplete,print_cmd,stringlib,
-subst,unwind_prot,variables}.c
-builtins/{common,evalfile}.c
-builtins/{cd,command,enable,exec,printf,read,set}.def
-lib/sh/{makepath,netopen,pathphys,setlinebuf,shquote,snprintf,stringlist,
-strtrans,tmpfile}.c
-lib/readline/{util,terminal,shell,readline,macro,kill,isearch,input,
-histfile,histexpand,display,complete,bind}.c
- - make sure all calls to xmalloc are cast to the right return value
+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>
-siglist.c
- - include xmalloc.h
+expr.c
+ - more minor changes to cases of INTMAX_MIN % -1 and INTMAX_MIN / 1;
+ fix typos and logic errors
-parse.y,{alias,bashline,bracecomp,expr,make_cmd,nojobs,print_cmd,subst}.c
-builtins/{fc,printf,read}.def
-lib/sh/snprintf.c, lib/tilde/tilde.c
-lib/readline/{bind,display,histexpand,isearch,macro,util,vi_mode}.c
- - make sure all calls to xrealloc are cast to the right return value
+ 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/sh/{netopen,setlinebuf,shquote,snprintf}.c, lib/tilde/tilde.c
- - include xmalloc.h, remove extern declaration of xmalloc
+lib/readline/history.c
+ - history_get_time: atol -> strtol
-lib/readline/xmalloc.h
- - xmalloc and xrealloc should return PTR_T
+ 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
-lib/readline/rldefs.h
- - don't include an extern declaration for xmalloc
+externs.h
+ - extern declaration for parser_in_command_position
- 8/7
- ---
-support/shobj-conf
- - fixed up commented-out stanzas for HP's unbundled C compiler on
- HP/UX
+ 12/19
+ -----
-support/bashbug.sh
- - force the subject to be changed from the default
+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>
-lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
- - document that transpose-words swaps the last two words on the line
- if point is at the end of the line
+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>
- 8/9
- ---
-stringlib.c
- - fix possible infinite recursion problem with null pattern in
- strsub()
+ 12/21
+ -----
+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
-hashlib.c
- - new function copy_hash_table to copy a hash table using a caller-
- supplied function to copy item data (defaults to savestring())
+lib/readline/rlprivate.h
+ - _rl_untranslate_macro_value: extern declaration
-hashlib.h
- - new extern declaration for copy_hash_table
+lib/readline/{macro.c,readline.h}
+ - rl_print_last_kbd_macro: new bindable function, inspired by patch
+ from Mitchel Humpherys
-builtins/declare.def
- - changes so that declare [-a] var=value assigns `value' to element 0
- of array variable `var' like ksh93
- - change so that declare [-a] var[N]=value assigns `value' to element
- N of array variable `var' like ksh93
+lib/readline/funmap.c
+ - print-last-kbd-macro: new bindable command, bound to
+ rl_print_last_kbd_macro
- 8/13
- ----
-arrayfunc.c
- - new file, for miscellaneous array functions
+lib/readline/doc/{rluser.texi,readline.3},doc/bash.1
+ - print-last-kbd-macro: document.
-arrayfunc.h
- - new file, extern declarations for functions in arrayfunc.c
+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)
-variables.c
- - move convert_var_to_array, bind_array_variable,
- assign_array_from_string, assign_array_var_from_word_list,
- assign_array_var_from_string, quote_array_assignment_chars,
- skipsubscript, unbind_array_element, print_array_assignment
- to arrayfunc.c
+bashline.[ch]
+ - print_unix_command_map: new function, prints all bound commands in
+ cmd_xmap using rl_macro_dumper in a reusable format
-shell.h
- - include arrayfunc.h after variables.h
+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)
-variables.h
- - remove above extern function declarations moved to arrayfunc.h
- - add extern declaration for var_lookup
+doc/{bash.1,bashref.texi}
+ - document new `bind -X' option
-Makefile.in
- - add arrayfunc.c, arrayfunc.h in appropriate places
- - add arrayfunc.h to dependencies
+ 12/24
+ -----
-subst.c
- - move valid_array_reference, array_expand_index, array_variable_part,
- array_value_internal, array_value (now global), get_array_value,
- do_array_element_assignment to arrayfunc.c
+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>
-subst.h
- - extern declarations for functions above moved to arrayfunc.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
-arrayfunc.h
- - extern declarations for above functions from subst.c
+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)
-subst.[ch]
- - string_list_dollar_star and string_list_dollar_at are now global
- functions
- - quote_escapes is now a global function
+ 12/29
+ -----
-subst.c
- - maybe_expand_string -> expand_string_if_necessary
- - expand_string_to_string -> expand_string_to_string_internal
- - new functions: expand_string_to_string and
- expand_string_unsplit_to_string, which call
- expand_string_to_string_internal with expand_string and
- expand_string_unsplit as the FUNC arguments, respectively
+flags.h
+ - new extern declaration for jobs_m_flag
-arrayfunc.c
- - change array_expand_index to call expand_string_to_string instead
- of maybe_expand_string
+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
- 8/14
- ----
-shell.c
- - in execute_env_file, call expand_string_unsplit_to_string
+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
-mailcheck.c
- - in check_mail, call expand_string_to_string
+ 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
-variables.c
- - in assign_in_env, call expand_string_unsplit_to_string
+ 1/5
+ ---
+quit.h
+ - LASTSIG(): new macro, expands to signal number of last terminating
+ signal received (terminating_signal or SIGINT)
-arrayfunc.c
- - new function, array_variable_name, splits an array reference into
- a name (which is returned as a new string) and subscript
- - change array_variable_part to just call array_variable_name and
- look up the string returned with find_variable
- - new function, find_or_make_array_variable (name, flags) which will
- look up an array variable and convert a string variable to an
- array if necessary. The FLAGS argument, if non-zero, says to
- check the readonly and noassign attributes and fail if either is set
+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
builtins/read.def
- - make `read -a aname' honor any readonly status of `aname'
- - read -a now calls find_or_make_array_variable with FLAGS value 1
-
-arrayfunc.[ch], subst.c, builtins/{declare,read}.def
- - do_array_element_assignment -> assign_array_element
+ - 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
- 8/20
+ 1/11
----
-parse.y
- - changed `for' command grammar to allow missing word list after `IN'
- token, like latest POSIX drafts require
+doc/{bash.1,bashref.texi}
+ - slight changes to the descriptions of the compat32 and compat40 shell
+ options to clarify their meaning
-lib/sh/tmpfile.c
- - in sh_mktmpname(), check for filenum == 0 and init to non-zero number
- in this case. it can happen on arithmetic overflow
+ 1/12
+ ----
+lib/readline/{colors.[ch],parse-colors.[ch]}
+ - new files, part of color infrastructure support
-support/mkversion.sh
- - added `[0-9].[0-9][0-9][a-z]' as an acceptable value for a
- distribution to allow for intermediate versions, like 2.05a
+Makefile.in,lib/readline/Makefile.in
+ - arrange to have colors.o and parse-colors.o added to readline
+ library
-support/config.guess
- - removed the addition of the output of `/usr/bin/objformat' when
- creating the canonical name on FreeBSD machines, so the canonical
- name is once again `freebsd4.2' instead of `freebsdelf4.2'
+{configure,config.h}.in
+ - check for stdbool.h, define HAVE_STDBOOL_H if found
- 8/22
+ 1/14
----
-lib/readline/{rlstdc,history,keymaps,readline,rldefs,rlprivate,rlshell,
-rltypedefs,xmalloc}.h
-lib/readline/{bind,compat,complete,display,funmap,histexpand,histsearch,
-input,isearch,kill,nls,parens,readline,rltty,search,shell,signals,vi_mode
- - changed __P to PARAMS
+lib/readline/bind.c
+ - colored_stats: new bindable variable, enables using colors to
+ indicate file type when listing completions
-lib/tilde/tilde.[ch]
- - changed __P to PARAMS
+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>
-{Makefile,configure}.in
- - changed the version number to 2.05a
- - changed the release status to `alpha1'
+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)
- 8/23
- ----
-support/shobj-conf
- - support for building shared libraries on Darwin/MacOS X
+lib/readline/rlprivate.h
+ - _rl_colored_stats: new extern declaration
-siglist.h
- - extern declaration for strsignal() to compensate for lack of
- a definition in some system include files
+lib/readline/doc/{readline.3,rluser.texi},doc/bash.1
+ - colored-stats: document new bindable readline variable
-jobs.c
- - remove casts from strsignal() calls
+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
-[bash-2.05a-alpha1 frozen]
+lib/readline/complete.c
+ - stat_char: call rl_filename_stat_hook before calling lstat/stat
- 8/27
- ----
-[bash-2.05a-alpha1 released]
+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)
- 8/27
- ----
execute_cmd.c
- - fix eval_arith_for_expr to handle the case where the expanded
- word list is NULL, returning 0 in this case
+ - is_dirname: call search_for_command with flags argument of 0 so it
+ doesn't try to put something in the command hash table
-print_cmd.c
- - in print_function_def, make sure that func_redirects is assigned
- a value before being used
+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
- 8/28
+ 1/17
----
-alias.c
- - include <ctype.h> for definition of isalpha()
+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>
-bashhist.h
- - add prototypes for extern function declarations
+ 1/18
+ ----
-flags.c
- - include bashhist.h for extern function declarations
+{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
-mksyntax.c
- - include <unistd.h> if HAVE_UNISTD_H is defined in config.h
+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
-parse.y
- - include test.h for extern function declarations
+lib/readline/util.c
+ - _rl_audit_tty: new function, send a string to the kernel tty audit
+ system
-externs.h
- - change extern declaration for setlinebuf to sh_setlinebuf
+lib/readline/rlprivate.h
+ - _rl_audit_tty: new extern declaration
-stringlib.c
- - include <glob/glob.h> for extern function declarations
+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>
-variables.h
- - add function prototypes for all of the sv_* functions
-
-builtins/common.h
- - add extern declarations for set_shellopts() and parse_shellopts()
- from builtins/set.def
-
-variables.c
- - include "hashcmd.h" for extern declaration for flush_hashed_filenames
- - include "pathexp.h" for extern declaration for setup_glob_ignore
+ 1/21
+ ----
-lib/malloc/malloc.c
- - cast to `long' instead of `int' in memalign for 64-bit machines
+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
-{pcomplete,trap}.c
- - changed printf escape sequences used to print pointers to %p
+parse.y
+ - shell_getc: make code that uses the pop_alias dependent on ALIAS
+ define
-lib/readline/undo.c
- - include "xmalloc.h" for extern function declaration
+variables.h
+ - sv_tz: extern define should only depend on HAVE_TZSET
-input.h
- - add function prototypes to extern declarations for getc_with_restart
- and ungetc_with_restart
+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
-variables.[ch]
- - changed type of `function' member of `struct name_and_function' to
- `sv_func_t', which is defined and prototyped in variables.h
- - map_over now takes an `sh_var_map_func_t *'
+arrayfunc.h
+ - AV_ALLOWALL, AV_QUOTED, AV_USEIND: define to 0 if ARRAY_VARS not
+ defined; used in subst.c unconditionally
-shell.h
- - start of a set of function pointer typedefs like those in
- lib/readline/rltypedefs.h
+sig.h
+ - make the signal blocking functions not dependent on JOB_CONTROL
-hashlib.[ch]
- - second paramter to flush_hash_table is now an `sh_free_func_t *'
+sig.c
+ - sigprocmask: make the replacement definition not dependent on
+ JOB_CONTROL
trap.c
- - parameter to reset_or_restore_signal_handlers is now an
- `sh_resetsig_func_t *'
-
-pcomplete.h, pcomplib.c
- - function pointer argument to print_all_compspecs is now an
- `sh_csprint_func_t *'
- - function pointer `list_getter' element of an `ITEMLIST' is now
- prototyped with __P((...)) instead of using `Function *'
+ - use BLOCK_SIGNAL/UNBLOCK_SIGNAL instead of code dependent on
+ HAVE_POSIX_SIGNALS and BSD signals
-jobs.[ch]
- - `j_cleanup' member of a JOB is now an `sh_vptrfunc_t *'
+ 1/24
+ ----
-alias.c
- - map_over_aliases now takes an `sh_alias_map_func_t *'
- - free_alias_data now takes a `PTR_T'
+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>
-pathexp.c
- - function pointer argument to ignore_globbed_names is now an
- `sh_ignore_func_t *'
-bashline.c
- - function pointer argument to _ignore_completion_names is now an
- `sh_ignore_func_t *'
+ 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>
-pathexp.h,{bashhist,bashline.c
- - `item_func' member of a `struct ignorevar' is now an
- `sh_iv_item_func_t *'
+doc/{bash.1,bashref.texi}
+ - 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>
-builtins/evalfile.c
- - `errfunc' is now an `sh_vmsg_func_t *'
+ 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>
-jobs.c
- - map_over_job now takes an `sh_job_map_func_t *' as its first argument
+ 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
-array.[ch]
- - function pointer argument to array_walk is now an
- `sh_ae_map_func_t *'
+lib/readline/rlprivate.h
+ - _rl_free_undo_list: new extern declaration
+ - _rl_keyseq_timeout: new extern declaration (see below)
-general.c
- - tilde_expansion_preexpansion_hook has type `tilde_hook_func_t *',
- and so the assignment in tilde_initialize doesn't need a cast
+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
-list.c
- - map_over_words now takes an `sh_icpfunc_t *' as its second argument
+lib/readline/doc/rltech.texi
+ - rl_clear_history: documented
-input.h
- - the `getter' and `ungetter' function pointer members of a
- BASH_INPUT are now of types `sh_cget_func_t *' and
- `sh_cunget_func_t *' respectively
- - init_yy_io now takes an `sh_cget_func_t *' as its first argument and
- an `sh_cunget_func_t *' as its second
+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
-parse.y
- - init_yy_io now takes an `sh_cget_func_t *' as its first argument and
- an `sh_cunget_func_t *' as its second
- - initialize_bash_input casts bash_input.getter and bash_input.ungetter
- appropriately
+lib/readline/bind.c
+ - 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
-builtins/mkbuiltins.c
- - make the extern function definitions written to builtext.h have
- prototypes with __P((...))
- - include "stdc.h"
- - change Function to mk_handler_func_t
- - fixed comment_handler to take the right number of args
- - prototyped all the handler functions with __P((...))
-
-builtins.h
- - the `function' member of a struct builtin is now of type
- `sh_builtin_func_t *'
-
-builtins/common.[ch]
- - last_shell_builtin, this_shell_builtin are now of type
- `sh_builtin_func_t *'
- - find_shell_builtin, builtin_address, find_special_builtin now return
- `sh_builtin_func_t *'
-
-builtins/exit.def, {execute_cmd,jobs,nojobs,variables}.c, parse.y
- - changed all declarations of last_shell_builtin and this_shell_builtin
+doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
+ - keyseq-timeout: documented
-execute_cmd.c
- - execute_builtin, execute_builtin_or_function,
- execute_subshell_builtin_or_function now take an
- `sh_builtin_func_t *' instead of a `Function *' for argument
- - changed appropriate variables from `Function *' to
- `sh_builtin_func_t *'
+lib/readline/isearch.c
+ - _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>
-builtins/{bind,builtin,enable,read,setattr}.def
- - replaced uses of `Function *' in variable declarations with
- appropriate types (sh_builtin_func_t * or rl_command_func_t *)
+ 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>
-builtins/set.def
- - set_func and get_func members of binary_o_options are now of types
- `setopt_set_func_t *' and `setopt_get_func_t *', which are
- prototyped
+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
-builtins/shopt.def
- - set_func member of shopt_vars is now of type `shopt_set_func_t *'
+Makefile.in
+ - when building libbuiltins.a, recursively call make with `targets'
+ argument to make sure separate helpfiles get built
-bashline.c
- - enable_hostname_completion now returns `int' (the old value of
- perform_hostname_completion)
+configure.in
+ - substitute `helpdoc' as value of HELPFILES_TARGET if
+ --enable-separate-helpfiles supplied as configure argument
-[The only use of Function and VFunction now is for unwind-protects]
+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
- 9/4
+ 2/8
---
-lib/sh/getcwd.c
- - use const define from config.h rather than `CONST'
- - use PTR_T define from xmalloc.h rather than `PTR'
- - include xmalloc.h for PTR_T
- - remove PATH_MAX define, rely on value from maxpath.h
-
-{general,mailcheck}.c, lib/sh/{pathcanon,pathphys}.c
- - don't include maxpath.h directly; it's already included by shell.h
-
-lib/sh/mailstat.c
- - new `mailstat()' implementation, to stat a mailbox file for
- mail checking. handles maildir-style mail directories with one
- file per message and creates a dummy stat struct from them
-
-lib/sh/Makefile.in
- - add mailstat.c and mailstat.o in the appropriate places
+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/malloc/malloc.c
- - augmented implementation with wrapper functions that pass in file
- and line number information from cpp. currently unused, but a
- placeholder for future debugging and use tracking
+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
-lib/malloc/shmalloc.h
- - new file, extern declarations for allocation wrapper functions for
- use by the shell (and others, I guess)
+variable.h,subst.c
+ - make_local_array_variable: changed prototype and caller
-xmalloc.[ch]
- - wrapper functions for xmalloc, xfree, xrealloc (sh_ prefixed) that
- pass cpp line number information through to the malloc functions,
- if USING_BASH_MALLOC is defined
+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.
- 9/5
- ---
-lib/malloc/gmalloc.c
- - removed; no longer part of distribution
+ 2/14
+ ----
-lib/malloc/Makefile.in
- - removed references to gmalloc.[co]
+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
-configure.in, doc/bashref.texi
- - removed references to `--with-glibc-malloc' configure option
+ 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
-{configure,Makefile}.in
- - changed the way bash malloc is configured into the Makefile, making
- it more like how readline is configured. If the bash malloc is
- not configured in, nothing in lib/malloc will be built
+builtins/common.c
+ - get_job_by_name: call internal_error instead of report_error so this
+ doesn't exit the shell
- 9/6
- ---
-lib/malloc/imalloc.h
- - new file, some internal malloc definitions
+ 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>
-lib/malloc/mstats.h
- - new file, definitions for malloc statistics structs and functions
+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>
-lib/malloc/trace.c
- - new file, malloc tracing functions (currently just print messages
- to stderr), code is #ifdef MALLOC_TRACE
+ 2/19
+ ----
+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>
-lib/malloc/stats.c
- - new file, moved malloc stats code from malloc.c to here
+builtins/printf.def
+ - tescape: ditto for printf \u and \U escape sequences
-lib/malloc/malloc.c
- - moved some definitions to imalloc.h
- - moved stats code to stats.c
- - malloc tracing calls added to internal_{malloc,realloc,free}, all
- #ifdef MALLOC_TRACE
+ 2/20
+ ----
+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)
-lib/malloc/Makefile.in, Makefile.in
- - added {imalloc,mstats}.h, {trace,stats}.c
+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>
-parse.y
- - changed decode_prompt_string to save and restore $?
- (last_command_exit_value) around calls to expand_prompt_string(),
- so command substitutions in PS1, etc. don't change $?
+ 2/21
+ ----
+doc/{bash,builtins}.1
+ - minor changes from Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
-{array,subst}.c
- - a couple more arrayind_t fixes from Paul Eggert
+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
-configure.in
- - remove redundant check for wait3(2)
+lib/readline/parens.c
+ - _rl_enable_paren_matching: make paren matching work in vi insert
+ mode. Bug report from <derflob@derflob.de>
-redir.h
- - fixed a typo (stdin_redirs -> stdin_redirects)
+ 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>
- 9/10
+ 2/23
----
execute_cmd.c
- - remove check for \n and \r from WHITESPACE macro, since those
- chars are not whitespace as returned by the whitespace(c) macro
- - getinterp now takes a `char *' as first arg, not unsigned char *
- - execute_shell_script now takes a `char *' as first arg, not
- unsigned char *
- - fix typo in forward declaration for `initialize_subshell'
-
-general.[ch]
- - check_binary_file now takes a (char *) argument, not unsigned char *
- - pass unsigned char to isspace and isprint because of ISO C fuckup
- - bash_tilde_expand now takes a `const char *' as its argument
-
-builtins/evalfile.c, shell.c
- - buffer passed to check_binary_file is char, not unsigned char
+ - 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>
-parse.y
- - fix extern declaration for yyerror()
- - yyerror now takes a `const char *' as first arg
+ 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
-{error,jobs}.c
- - fixes to printf-style functions to handle pids wider than an int
+ 3/2
+ ---
+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>
-lib/readline/{isearch,vi_mode}.c
- - fix call to rl_message in rl_display_search (remove extra arg)
+ 3/3
+ ---
+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>
-variables.c
- - fix missing argument to builtin_error in make_local_variable
+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.
-builtins/getopts.def
- - since getopts takes no options, change while loop calling
- internal_getopts to a simple `if' check
+ 3/4
+ ---
+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>
-builtins/printf.def
- - since printf takes no options, change while loop calling
- internal_getopts to a simple `if' check
+ 3/5
+ ---
+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
-lib/readline/bind.c
- - remove _SET_BELL macro, expand code inline
+ 3/7
+ ---
+m4/timespec.m4
+ - new macros, cribbed from gnulib and coreutils: find out whether we
+ have `struct timespec' and what file includes it
-lib/readline/input.c
- - change _rl_input_available to use either select or FIONREAD,
- but not both
+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
-lib/readline/readline.c
- - fix rl_digit_loop to remove unreachable code at end of loop
+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
-{bashhist,bashline,expr,jobs,redir,shell}.c, builtins/fc.def, lib/sh/snprintf.c
- - bracket unused functions with #ifdef INCLUDE_UNUSED/#endif
- - remove some unused variables
+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
+
+ 3/10
+ ----
+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
-execute_cmd.c
- - remove #ifdef'd code that allowed `return' to terminate a select
- statement
+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>
-expr.c
- - remove some extraneous tests from strlong()
+lib/readline/signals.c
+ - make sure all occurrences of SIGWINCH are protected by #ifdef
-array.h
- - arrayind_t is now a long, since shell arithmetic is performed as
- longs
- - remove second declaration of new_array_element
+sig.c
+ - make sure all occurrences of SIGCHLD are protected by #ifdef
-builtins/printf.def
- - in mklong, xrealloc cannot return NULL, so don't check for it
- - remove some #if 0 code
- - fix core dump triggered by a format specification with more than
- one `*'
- - remove `foundmod', since its value mirrors `modchar != 0'
- - include "common.h" for builtin_{error,usage} declarations
+nojobs.c
+ - make sure SA_RESTART is defined to 0 if the OS doesn't define it
-Makefile.in,builtins/Makefile.in
- - updated some dependencies due to new include files
+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
-pcomplete.c
- - include "execute_cmd.h" for declaration of execute_shell_function
+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()
-arrayfunc.c
- - include <stdio.h> for printf
- - include "builtins/common.h" for builtin_error declaration
+trap.h
+ - queue_sigchld_trap: new extern declaration
-builtins/evalstring.c
- - include "../trap.h" for run_trap_cleanup declaration
+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
-builtins/help.def
- - include "common.h" instead of locally declaring builtin_error
- and builtin_usage
+ 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
-error.h
- - add extern declaration for itrace()
- - add prototype to extern declaration of get_name_for_error
- - file_error now takes a `const char *' as first argument
+{jobs,nojobs}.c
+ - check_window_size: default initial value to CHECKWINSIZE_DEFAULT
-externs.h
- - added prototype for sh_setlinebuf declaration, bracketed with
- NEED_SH_SETLINEBUF_DECL so we don't need stdio.h everywhere
- - add extern declaration for parse.y:return_EOF()
+ 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)
-shell.c
- - add NEED_SH_SETLINEBUF_DECL before including shell.h
+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/callback.c
- - include <stdlib.h> or "ansi_stdlib.h" for abort declaration
+ 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
-quit.h
- - remove declaration of throw_to_top_level
+ 3/16
+ ----
+array.c
+ - array_insert: fix memory leak by deleting element to be added in the
+ case of an error
-subst.c
- - remove unused extern declaration for getopts_reset
+ 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
-lib/sh/netopen.c
- - include <shell.h> for legal_number, etc.
- - add prototype for inet_aton extern declaration
+ 3/19
+ ----
+stringlib.c
+ - substring: use memcpy instead of strncpy, since we know the length
+ and are going to add our own NUL terminator
-lib/sh/clock.c
- - include <stdc.h> for __P declaration
- - add extern declaration for get_clk_tck
+ 3/20
+ ----
+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/mkversion.sh
- - changed so that extern function declarations for functions in
- version.c (moved from externs.h) are in the generated version.h
+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>
-shell.h
- - include version.h
+ 3/21
+ ----
+config-top.h
+ - OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT: define to 1 to optimize
+ sequential indexed array assignment patterns. Defined to 1 by
+ default
-version.c
- - various `char *' version variables are now `const char *'
+array.c
+ - array_insert: if OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT is defined,
+ start the search at lastref (see change from 3/15)
-general.h
- - add prototype for same_file, bracketed with _POSIXSTAT_H
- #ifdef, since that's what include/posixstat.h defines
+ 3/27
+ ----
+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
-builtins/common.[ch]
- - _evalfile, maybe_execute_file, source_file, and fc_execute_file
- now take a `const char *' as their first argument
+ 4/1
+ ---
+command.h
+ - W_ASSNGLOBAL: new flag, set to indicate declare -g
-eval.c
- - removed extern declaration of yyparse; it's in externs.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
-parse.y
- - added prototypes to static forward function declarations
- - changed local `all_digits' variable in read_token_word () to
- all_digit_token to avoid clash with all_digits() function in
- general.c
+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>
-{bashhist,copy_cmd,make_cmd,hashlib,mailcheck}.c
- - added prototypes for static function declarations
+ 4/7
+ ---
+lib/readline/readline.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
-shell.h
- - add extern declarations for interactive, interactive_shell,
- changed c files with extern declarations
+externs.h
+ - sh_mbsnlen: extern declaration for new function
-pcomplete.c
- - changed it_init_aliases to avoid shadowing global variable
- `aliases'
+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
-bashline.c,pathexp.c,general.h
- - sh_ignore_func_t is now a pointer to a function taking a
- `const char *'; users changed
+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>
-configure.in
- - test for <strings.h>
+ 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'
-config.h.in
- - add #undef HAVE_STRINGS_H
+lib/readline/parse-colors.[ch]
+ - don't try to include <stdbool.h> at all; rely on colors.h to do it
-bashansi.h
- - change like recommended in autoconf manual
+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>
- 9/11
+ 4/15
----
-[a date which will live in infamy. prayers for the victims.]
+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()
-execute_cmd.c
- - don't use an absolute index into abuf in mkfmt, use
- sizeof(abuf) to compute last index
+ 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
-builtins/common.c
- - fix read_octal to do a better job of detecting overflow while
- iterating through the string
+ 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)
-builtins/umask.def
- - change octal-print mode to print 4 digits, like other shells
- - cast umask to unsigned long to avoid problems on systems where
- it's wider than an int (POSIX doesn't guarantee that mode_t is
- no wider than an int, but real-world systems use int)
+ 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"
-builtins/printf.def
- - mklong can never return NULL (it uses xrealloc), so the mainline
- doesn't need to check for NULL returns
- - new function, getldouble (long double *), to get long doubles
- - mklong now takes a `char *' as its second argument, the modifier(s)
- to use
- - changed use of `modchar' to handle more than a single modifier
- character
- - changed to handle `long double' and `L' formats better, rather
- than discarding long double information
- - since printf now follows the POSIX.2 rules for conversion errors,
- we can dispense with the status returns from the get* functions
- - make the get* functions as similar in structure as possible,
- removing type casts, etc.
-
-lib/sh/timeval.c,execute_cmd.c
- - change some instances of `long' to `time_t', for systems where
- a time_t is bigger than a long
+ 4/20
+ ----
+lib/sh/strftime.c
+ - incoporated new version from Aharon Robbins <arnold@skeeve.com>
-jobs.c
- - include "posixtime.h" instead of <sys/time.h>
+ 4/22
+ ----
+doc/{bash.1,bashref.texi}
+ - slight change to the description of /dev/tcp and /dev/udp
-config.h.in
- - add defines for HAVE_DECL_CONFSTR, HAVE_DECL_STRTOLD,
- HAVE_DECL_SBRK, HAVE_DECL_PRINTF
- - remove defines for SBRK_DECLARED and PRINTF_DECLARED
- - add _GNU_SOURCE define
+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>
-configure.in
- - add AC_CHECK_DECLS for strtold, confstr, sbrk, printf
- - remove call to BASH_FUNC_SBRK_DECLARED
- - remove call to BASH_FUNC_PRINTF
+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
-xmalloc.c, lib/malloc/malloc.c
- - change check of SBRK_DECLARED to HAVE_SBRK_DECL
+ 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>
-print_cmd.c
- - change PRINTF_DECLARED to HAVE_DECL_PRINTF
+ 5/6
+ ---
+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
-builtins/evalstring.c, builtins/common.h
- - parse_and_execute now takes a `const char *' as its second argument
+ 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
-input.h,parse.y
- - with_input_from_* functions now take a `const char *' as their
- second argument
- - init_yy_io now takes a `const char *' as its fourth argument
+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>
-parse.y,externs.h
- - parse_string_to_word_list now takes a `const char *' as its second
- argument
+arrayfunc.h
+ - make_array_variable_value: new extern declaration
-tests/builtins.right
- - change output to account for extra digit in umask output
+ 5/19
+ ----
+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>
-pcomplib.c
- - free_progcomp now takes a PTR_T argument
+ 5/24
+ ----
-builtins/bashgetopt.h
- - include <stdc.h>
- - add prototypes to extern declarations
+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
-builtins/shopt.def
- - add prototypes to static function declarations
+ 5/25
+ ----
+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
-builtins/{fc,umask,wait}.def, builtins/{bashgetopt,common}.c
- - include <ctype.h> for isdigit macro (referenced by `digit(x)')
+builtins/Makefile.in
+ - LDFLAGS_FOR_BUILD: add to compilation recipes for build tools
+ gen-helpfiles, psize.aux
-lib/readline/complete.c
- - added more static function declarations with prototypes
+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>
- 9/12
+ 5/27
----
-lib/sh/tmpfile.c
- - use `^' instead of `*' in sh_mktmpname to make filenames a bit
- more random
+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>
-include/stdc.h,lib/readline/rldstdc.h
- - add __attribute__ definition
+doc/{bash.1,bashref.texi}
+ - changes to the description of substring expansion inspired by
+ suggestions from Bill Gradwohl <bill@ycc.com>
-builtins/common.h
- - add printf __attribute__ to declaration of builtin_error
+doc/bashref.texi
+ - added substring expansion examples inspired by suggestions from
+ Bill Gradwohl <bill@ycc.com>
-error.h
- - add printf __attribute__ to declaration of programming_error,
- report_error, parser_error, fatal_error, sys_error, internal_error,
- internal_warning
+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
-lib/readline/readline.h
- - add printf __attribute__ to declaration of rl_message
+variables.h
+ - find_shell_variable: extern declaration
+ - find_variable_tempenv: extern declaration
+ - find_variable_notempenv: extern declaration
-pcomplete.c
- - add printf __attribute__ to declaration of debug_printf
+arrayfunc.c
+ - bind_array_variable: call find_shell_variable instead of calling
+ var_lookup directly
-print_cmd.c
- - add printf __attribute__ to declarations of cprintf, xprintf
+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
-include/chartypes.h
- - new file, includes <ctype.h> and defines macros that check for
- safe (ascii) arguments before calling the regular ctype macros
+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
-{alias,bashline,execute_cmd,expr,findcmd,general,locale,mksyntax,stringlib,subst,variables}.c
-parse.y
-builtins/{bashgetopt,common}.c
-builtins/{fc,printf,umask,wait}.def
-lib/glob/strmatch.c
-lib/sh/{oslib,pathcanon,pathphys,snprintf,strcasecmp,strindex,stringvec,strtod,strtol,strtrans}.c
-examples/loadables/{head,sleep}.c
- - include "chartypes.h" or <chartypes.h> instead of <ctype.h>
-
-Makefile.in,{builtins,lib/{glob,sh}}/Makefile.in
- - update dependencies to include chartypes.h
-
-lib/sh/inet_aton.c
- - use `unsigned char' instead of `char' to pass to ctype.h functions
-
-lib/sh/netopen.c
- - check for '0' <= host[0] <= '9' in _getaddr instead of using
- isdigit
-
-subst.c,lib/sh/shquote.c
- - change array subscripts into sh_syntaxtab from `char' to
- `unsigned char'
-
-{alias,bashline,execute_cmd,expr,general,subst}.c, parse.y
-builtins/{fc,printf,umask,wait}.def builtins/{bashgetopt,common}.c
-lib/sh/{pathcanon,pathphys,snprintf,strcasecmp,strindex,strtod,strtol,strtrans}.c
-examples/loadables/{head,sleep}.c
- - change to use some of the new macros in chartypes.h
- - remove old local macro definitions now provided by chartypes.h
-
-general.h
- - remove definition of isletter, ISOCTAL, digit, digit_value
- - change legal_variable_starter and legal_variable_char to use
- chartypes.h macros
- - change ABSPATH to use chartypes.h macros
+ 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
-lib/readline/util.c
- - change to use Paul Eggert's FUNCTION_FOR_MACRO define to define
- function replacements for macros in chardefs.h
+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
-lib/readline/chardefs.h
- - added some of the same macros as in chartypes.h
- - change _rl_lowercase_p, _rl_uppercase_p, _rl_digit_p,
- _rl_to_upper, _rl_to_lower to use new IS* macros
- - added _rl_isident macro from vi_mode.c:isident
+ 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>
-lib/readline/{bind,complete,nls}.c
- - change to use some of the new macros from chardefs.h
+ 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>
-lib/readline/vi_mode.c
- - isident -> _rl_isident
- - remove local defines of macros in chardefs.h
+ 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
-lib/sh/strtol.c
- - updated to new version, modified from glibc 2.2.4 and sh-utils-2.0.
- This one can do strtoll and strtoull, if necessary
+ 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
- 9/13
- ----
-builtins/ulimit.def
- - changed get_limit so it retrieves both hard and soft limits
- instead of one or the other
- - changed callers of get_limit
- - changed getmaxvm to take soft limit, hard limit as arguments
- - changed getmaxuprc to just take a single argument, the value
- - changed calls to printone() to pass soft limit or hard limit
- depending on `mode' instead of using old current_limit variable
- - moved check for out-of-range limits in ulimit_internal into the
- block that converts a string argument to a value of type rlim_t
- - changed RESOURCE_LIMITS struct to break the description into a
- description string and separate scale factor string
- - changed print_all_limits to print a single error message if
- get_limit fails, including limits[i].description now that the
- scale factor has been removed from the description string
- - removed DESCFMT define, since it's now used only in printone()
- - changed printone to print the option character associated with a
- particular limit if we're printing multiple limits
- - changed calls to builtin_error to print the description associated
- with a limit if setting or getting the limit fails
- - added support for new POSIX 1003.1-200x rlim_t values:
- RLIM_SAVED_CUR and RLIM_SAVED_MAX, which expand to the current
- soft and hard limits, whatever they are
- - changed printone to print `hard' or `soft' if the current limit is
- RLIM_SAVED_MAX or RLIM_SAVED_CUR, respectively
- - changed ulimit_internal to handle new `hard' and `soft' arguments
- - changed help text do describe the special limit arguments `hard',
- `soft', and `unlimited'
+ 6/7
+ ---
+parse.y
+ - 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>
-doc/{bash.1,bashref.texi}
- - documented new `hard' and `soft' limit arguments to `ulimit'
+ 6/8
+ ---
+bashline.c
+ - 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>
-hashlib.[ch]
- - find_hash_item now takes a `const char *' is its first argument
- - hash_string now takes a `const char *' is its first argument
- - remove_hash_item now takes a `const char *' as its first argument
+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
-pcomplib.c
- - removed cast from first argument to find_hash_item in find_compspec
+externs.h
+ - sh_backslash_quote: declaration now takes a third argument
-general.[ch]
- - absolute_program now takes a `const char *' as its argument
- - absolute_pathname now takes a `const char *' as its argument
+builtins/printf.def
+ - printf_builtin: call sh_backslash_quote with 1 as third argument
+ so tildes get escaped
-lib/glob/glob.[ch]
- - glob_pattern_p now takes a `const char *' as its argument
+{bashline,bracecomp}.c
+ - call sh_backslash_quote with 0 as third argument so tildes are not
+ escaped in completed words
-bashline.c
- - removed cast from first argument to absolute_program in
- command_word_completion_function
- - removed cast from first argument to glob_pattern_p in
- attempt_shell_completion
-
-findcmd.[ch]
- - find_absolute_program, find_user_command, find_path_file,
- search_for_command, user_command_matches now take a
- `const char *' as their first argument
- - file_status, executable_file, is_directory, executable_or_directory
- now take a `const char *' as their argument
- - _find_user_command_internal, find_user_command_internal,
- find_user_command_in_path
-
-lib/sh/makepath.c, externs.h
- - changed sh_makepath so it takes `const char *' for its first
- two arguments
-
-hashcmd.[ch]
- - find_hashed_filename now takes a `const char *' as its first arg
- - remove_hashed_filename now takes a `const char *' as its first arg
-
-variables.[ch]
- - new_shell_variable, var_lookup, shell_var_from_env_string,
- find_name_in_env_array, bind_function, makunbound,
- bind_name_in_env_array, bind_tempenv_variable, bind_variable
- now take a `const char *' as their first arg
- - find_function, make_new_variable, find_tempenv_variable,
- find_variable_internal, find_variable, set_func_read_only,
- set_func_auto_export, all_variables_matching_prefix, assign_in_env,
- assignment, kill_local_variable, make_local_variable, unbind_variable
- now take a `const char *' as their arg
- - mk_env_string now takes `const char *' arguments
-
-arrayfunc.[ch]
- - skipsubscript now takes a `const char *' as its argument
+doc/bash.1
+ - add `coproc' to the list of reserved words. From a report by
+ Jens Schweikhardt <schweikh@schweikhardt.net>
- 9/17
+ 6/10
+ ----
+execute_cmd.c
+ - line_number_for_err_trap: now global, so parse_and_execute can save
+ and restore it with unwind-protect
+
+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/.)
+
+ 6/15
----
lib/readline/complete.c
- - attempt to preserve case of what the user typed in
- compute_lcd_of_matches if we're ignoring case in completion
+ - 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>
-builtins/{let,pushd}.def,{execute_cmd,expr}.c
- - change some 0L constants to 0 and let the compiler sort it out
+ 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>
- 9/18
+ 6/21
----
-lib/malloc/alloca.c
- - alloca now takes a `size_t' argument
-include/memalloc.h
- - if we're providing an extern function declaration for alloca,
- use `void *' and prototype if __STDC__ is defined
- - if HAVE_ALLOCA_H is defined, but C_ALLOCA is defined, don't
- define HAVE_ALLOCA
+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>
- 9/19
+ 6/22
----
-subst.c
- - do_assignment_internal, do_assignment, and do_assignment_no_expand
- now take a `const char *' as their first argument
+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
+
+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
-general.h
- - a `sh_assign_func_t' is now a function taking a `const char *' and
- returning int
+nojobs.c
+ - job_control: now declared as int variable, initialized to 0, never
+ modified
-hashcmd.c
- - free_filename_data now takes a `PTR_T' argument to agree with the
- typedef for `sh_free_func_t'
+jobs.h
+ - job_control: extern declaration no longer dependent on JOB_CONTROL
-lib/sh/snprintf.c
- - use TYPE_MAXIMUM define like strtol.c instead of huge constants
+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
- 9/20
+ 6/23
----
-lib/sh/snprintf.c
- - don't bother to compile the bulk of the body unless HAVE_SNPRINTF
- or HAVE_ASPRINTF is not defined
+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
- 9/24
+ 6/25
----
-flags.c
- - ignore `set -n' if the shell was started interactively
+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>
-lib/readline/readline.c
- - initialize readline_echoing_p to 0; let the terminal-specific code
- in rltty.c set it appropriately
+ 6/26
+ ----
+trap.c
+ - signal_is_pending: return TRUE if SIG argument has been received and
+ a trap is waiting to execute
-lib/malloc/malloc.c
- - changed internal_memalign() slightly to avoid compiler warnings about
- negating an unsigned variable (-alignment -> (~alignment + 1))
+trap.h
+ - signal_is_pending: extern declaration
- 9/27
- ----
-lib/readline/readline.c
- - changed rl_newline to set _rl_history_saved_point appropriately
- for the {previous,next}_history code
+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?
-lib/readline/rlprivate.h
- - extern declaration for _rl_history_preserve_point
+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>
-lib/readline/bind.c
- - new bindable variable, `history-preserve-point', sets value of
- _rl_history_preserve_point
+ 6/27
+ ----
+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)
- 10/1
+ 6/30
----
-lib/malloc/table.c
- - new file, with a map of allocated (and freed) memory for debugging
- multiple frees, etc. Indexed by hash on values returned by
- malloc(); holds size, file and line number info for last alloc or
- free and a couple of statistics pointers
+variables.h
+ - additional defines for the new `nameref' variable attribute
+ (att_nameref): nameref_p, nameref_cell, var_setref
-lib/malloc/malloc.c
- - a few cleanups; added calls for registering allocations and frees
- if MALLOC_REGISTER is defined
- - replaced MALLOC_RETURN with explicit MALLOC_NOTRACE define
- - reordered fields in `struct...minfo' in `union mhead' to restore
- eight-byte alignment
- - added explicit checks for underflow in free and realloc since
- checking mh_magic2 is not sufficient to detect everything (it's
- no longer the last field in the struct, and thus not the bytes
- immediately preceding what's returned to the user)
- - new function, xbotch, for printing file and line number info for
- the failed assertion before calling botch() (programming_error())
+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)
-configure.in
- - replaced call to BASH_C_LONG_LONG with call to
- AC_CHECK_TYPES([long long])
- - moved the C compiler tests before the tests for various
- system types, so we can know whether we have `long long'
- before testing for 64-bit types
- - if we have `long long', check for sizeof(long long) and save value
+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]
-aclocal.m4
- - changed BASH_TYPE_BITS64_T to check `long long' before `long', but
- after `double'
+execute_cmd.c
+ - execute_for_command: changes to implement ksh93 semantics when index
+ variable is a nameref
- 10/2
- ----
-lib/malloc/malloc.c
- - made malloc and realloc both agree on the rounding for a request of
- size N (round up to nearest multiple of 8 after adjusting for
- malloc overhead); uses new ALLOCATED_BYTES macro
- - realloc and free now use new IN_BUCKET macro for underflow checks
+builtins/setattr.def
+ - show_var_attributes: change to add `n' to flags list if att_nameref
+ is set
-execute_cmd.c
- - fixed time_command() to use `time_t' instead of `long' to hold
- time stamps
+builtins/set.def
+ - unset_builtin: changes to error messages to follow nameref variables
-lib/sh/clock.c
- - clock_t_to_secs now takes a `time_t *' second argument
- - fixed print_clock_t to call clock_t_to_secs with right arguments
+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
-lib/sh/timeval.c
- - fixed print_timeval to make `minutes' a `long' and make its
- structure identical to print_clock_t
+ 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
-redir.c
- - changed redirection_error to check for EBADF and use the file
- descriptor being redirected from in the error message if it
- is >= 0
+variables.h
+ - unbind_nameref: extern declaration
-Makefile.in
- - changed release status to `beta1'
+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
-lib/glob/collsyms.h
- - added a few ASCII symbols to the posix_collsyms array
+doc/{bash.1,bashref.texi}
+ - document namerefs and typeset/declare/local/unset -n
- 10/3
+ 7/13
----
-aclocal.m4
- - fixed typo in BASH_TYPE_BITS64_T
+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
-configure.in
- - added check for unsigned chars with AC_C_CHAR_UNSIGNED
+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()
-config.h.in
- - added PROTOTYPES and __CHAR_UNSIGNED__ #defines
+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
-general.h
- - if CHAR_MAX is not define by <limits.h>, provide a definition
+lib/readline/rltty.c
+ - prepare_terminal_settings: don't mess with IXOFF setting if
+ USE_XON_XOFF defined
-builtins/printf.def
- - change tescape() to mask \0 and \x escape sequences with 0xFF
- - change tescape() to process at most two hex digits after a `\x'
+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>
-lib/sh/strtrans.c
- - change strtrans() to mask \0 and \x escape sequences with 0xFF
- - change strtrans() to process at most two hex digits after a `\x'.
- This affects `echo -e' and $'...' processing
+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>
-lib/readline/bind.c
- - changed rl_translate_keyseq() to process at most two hex digits
- after a `\x'
+ 7/24
+ ----
+configure.in
+ - interix: define RECYCLES_PIDS. Based on a report from Michael
+ Haubenwallner <michael.haubenwallner@salomon.at>
-lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
- - changed documentation for key binding escape sequences to specify
- that at most two hex digits after \x are translated
- - changed documentation for key binding to specify that the result
- of \nnn or \xhh escapes is an eight-bit value, not just ASCII
+ 7/26
+ ----
+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>
-doc/{bash.1,bashref.texi}
- - changed documentation of $'...' to specify that at most two hex
- digits after \x are translated
- - changed `echo' documentation to specify that at most two hex
- digits after \x are translated
- - changed documentation for `echo' and $'...' to specify that the
- result of \nnn or \xhh escapes is an eight-bit value, not just ASCII
+support/shobj-conf
+ - Mac OS X: drop MACOSX_DEPLOYMENT_TARGET=10.3 from the LDFLAGS. We
+ can finally kill Panther
- 10/4
+ 7/28
----
-lib/malloc/malloc.c
- - changed interface for xbotch to pass memory address and error code
- as two additional arguments
- - call mregister_describe_mem from xbotch to get the last allocation
- or free before the botch
-
-configure.in
- - call AC_CHECK_DECLS([strsignal])
+subst.c
+ - command_substitute: make sure last_made_pid gets reset if make_child
+ fails
-config.h.in
- - add HAVE_DECL_STRSIGNAL
+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>
-siglist.h
- - make declaration of strsignal() dependent on !HAVE_DECL_STRSIGNAL
+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>
- 10/5
+ 7/29
----
-support/texi2html
- - upgraded to version 1.64
+shell.c
+ - subshell_exit: new function, exits the shell (via call to sh_exit())
+ after calling any defined exit trap
- 10/9
- ----
-aclocal.m4
- - added check for `long long' to BASH_TYPE_PTRDIFF_T
+externs.h
+ - subshell_exit: new extern declaration
-configure.in
- - replaced call to BASH_HAVE_TIOCGWINSZ with AC_HEADER_TIOCGWINSZ
+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>
-aclocal.m4
- - replaced body of BASH_STRUCT_TERMIOS_LDISC with call to
- AC_CHECK_MEMBER(struct termios.c_line, ...)
- - replaced body of BASH_STRUCT_TERMIO_LDISC with call to
- AC_CHECK_MEMBER(struct termios.c_line, ...)
+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>
+
+{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
-[bash-2.05a-beta1 frozen]
+ 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
- 10/10
- -----
-lib/sh/snprintf.c
- - fixed exponent() to not smash the trailing zeros in the fraction
- when using %g or %G with an `alternate form'
- - fixed exponent() to handle the optional precision with %g and %G
- correctly (number of significant digits before the exponent)
+ 8/7
+ ---
+configure.in
+ - AC_CANONICAL_BUILD: invoke for later use
- 10/11
- -----
-expr.c
- - fixed strlong() to correct the values of `@' and `_' when
- translating base-64 constants (64#@ == 62 and 64#_ == 64), for
- compatibility with ksh
+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/sh/itos.c
- - added a slightly more flexible fmtlong() function that takes a
- base argument and flags (for future use)
- - rewrote itos and inttostr in terms of fmtlong
+lib/readline/rlprivate.h
+ - _rl_prev_macro_key: extern declaration
-lib/sh/fmtulong.c
- - new file, converts unsigned long to string. hooks for `unsigned
- long long' in the future. unused as yet
- 10/15
- -----
-lib/readline/rltty.c
- - change the SET_SPECIAL macro to avoid possible (but highly
- unlikely) negative array subscripts
+lib/readline/readline.c
+ - _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>
-error.h
- - add __attribute__ to extern declaration of itrace (even though the
- function isn't defined in released versions of bash)
+ 8/13
+ ----
+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
-bashansi.h
- - include <strings.h> if HAVE_STRINGS_H is defined, to get any extra
- function declarations provided therein
+builtins/common.h
+ - extern declaration for evalstring()
-copy_cmd.c
- - fix typo in forward declaration for copy_arith_for_command
+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>
-lib/malloc/stats.c
- - make the accumulators in _print_malloc_stats be `unsigned long'
- instead of `int'
+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
-externs.h, sig.h
- - add `__noreturn__' gcc attribute to exit_shell and jump_to_top_level
- declarations
+builtins/mapfile.def
+ - run_callback: call evalstring instead of parse_and_execute
-lib/sh/mailstat.c, support/bashversion.c
- - include <bashansi.h> for some string function declarations
+ 8/15
+ ----
+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.
-lib/malloc/shmalloc.h
- - added extern declarations of functions that do malloc debugging
+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
-lib/readline/{isearch,readline,vi_mode}.c
- - make sure we index into _rl_keymap with a non-negative index
+ 8/17
+ ----
+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
-parse.y
- - make sure we index into sh_syntaxtab with a non-negative index
+ 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>
-lib/readline/vi_mode.c
- - bound the vi_mark_chars array with the number of characters between
- 'a' and 'z' rather than using a fixed amount
- - don't use _rl_lowercase_p when deciding whether the char read by
- rl_vi_set_mark is a valid mark; just use 'a' <= char <= 'z'
+ 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>
-lib/readline/chardefs.h
- - conditionally include memory.h and strings.h as in general.h
- - replace ISASCII with IN_CTYPE_DOMAIN like other GNU software
- - add defines for ISPRINT(c), ISLOWER(c) and ISUPPER(c)
- - fix defines for _rl_lowercase_p, _rl_uppercase_p, _rl_digit_p,
- _rl_pure_alphabetic, ALPHABETIC, _rl_to_upper, _rl_to_lower,
- and _rl_isident to work on systems with signed chars
+ 8/21
+ ----
+command.h
+ - W_NOBRACE: new word flag that means to inhibit brace expansion
-include/chartypes.h
- - replace ISASCII with IN_CTYPE_DOMAIN like other GNU software
+subst.c
+ - brace_expand_word_list: suppress brace expansion for words with
+ W_NOBRACE flag
-lib/sh/{strcasecmp,strtod,strtol}.c
- - don't pass possibly-negative characters to tolower() or toupper()
+ 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>
-lib/glob/strmatch.c
- - don't bother testing for isupper in FOLD; rely on TOLOWER macro
- from <chartypes.h> to do it
- - don't use local definitions of isblank, et al.; rely on macros
- from <chartypes.h>
+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>
-lib/readline/{display,readline}.c, mksyntax.c
- - use new ISPRINT macro instead of isprint()
+ 8/23
+ ----
+jobs.c
+ - remove references to first_pid and pid_wrap, since we're not using
+ them for anything anymore
-builtins/{kill.def,mkbuiltins.c},{error,execute_cmd,jobs,nojobs,subst}.c
- - don't assume that a pid_t fits into an int for printing and other
- uses
+ 8/24
+ ----
+subst.c
+ - changes for W_NOBRACE everywhere appropriate: so it can be displayed
+ for debugging, and passed out of expand_word_internal
-variables.[ch]
- - the unused put_gnu_argv_flags_into_env now takes a `long' pid
- argument
+doc/{bash.1,bashref.texi}
+ - 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, config.h.in
- - call AC_STRUCT_ST_BLOCKS, define HAVE_STRUCT_STAT_ST_BLOCKS if found
- - check for strtoull(), define HAVE_STRTOULL if found
- - check for uintmax_t, define to `unsigned long' if not found
+doc/bashref.texi
+ - some small formatting changes from Karl Berry <karl@freefriends.org>
-lib/sh/mailstat.c
- - don't use st_blocks member of struct stat unless
- HAVE_STRUCT_STAT_ST_BLOCKS is defined; otherwise use the st_nlink
- field to return the total number of messages in a maildir-style
- mail directory
+ 8/27
+ ----
+lib/readline/doc/{history,rlman,rluserman}.texi
+ - some small formatting changes from Karl Berry <karl@freefriends.org>
-general.h,{alias,expr,general,subst,variables}.c
-builtins/{printf,read}.def
-lib/readline/{bind,complete,nls}.c
-lib/sh/{pathcanon,pathphys,shquote,snprintf,strindex,strtod,strtol,strtrans}.c
- - cast args to ctype macros to unsigned char for systems with signed
- chars; other fixes for signed chars
+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/{fmtullong,strtoull.c}
- - new files, more support for `long long'
+subst.c
+ - array_length_reference: changes to make length references to array
+ elements using negative indices (${#a[-1]}) work
-Makefile.in, lib/sh/Makefile.in
- - make fmtullong.o and strtoull.o part of libsh
+ 8/28
+ ----
+doc/{bash.1,bashref.texi}
+ - document new treatment of negative indices to indexed arrays when
+ assigning, referencing, calculating length, and unsetting
-lib/sh/itos.c
- - remove local copy of fmtlong; use fmtulong instead
- - new functions: uitos, uinttostr work on `unsigned long'
+ 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/snprintf.c
- - fixes to make `unsigned long long' work (%llu)
- - fixes to make unsigned formats not print the sign when given
- an unsigned long that is greater than LONG_MAX
+configure.ac
+ - renamed from configure.in, as latest autoconf versions want. Patches
+ Stefano Lattarini <stefano.lattarini@gmail.com>
-externs.h
- - extern declarations for fmtulong, fmtulloing, strtoull
- - extern declarations for uitos, uinttostr
+MANIFEST,Makefile.in,doc/bashref.texi,support/mkconffiles
+ - configure.in -> configure.ac
- 10/16
- -----
-configure.in
- - move header checks before function checks
- - move c compiler tests before header checks
- - check for <inttypes.h> with BASH_HEADER_INTTYPES
- - change type checks for intmax_t, uintmax_t to not attempt to
- include <stdint.h>
- - check for strtoimax, strtoumax, strtoll, strtol, strtoull, strtoul
- with BASH_CHECK_DECL (for declarations in header files) and
- AC_REPLACE_FUNCS (for availability and LIBOBJS substitution)
- - remove check for have_long_long around sizeof check for long long
- (since autoconf will give it a size of 0 if the type isn't found)
+ 9/1
+ ---
-config.h.in
- - add a define for HAVE_INTTYPES_H
- - add a define for HAVE_UNSIGNED_LONG_LONG
- - add defines for HAVE_STRTOIMAX, HAVE_STRTOUMAX, HAVE_STRTOLL
+parse.y
+ - read_token_word: allow words like {array[ind]} to be valid redirection
+ words for constructs like {x}<file
-aclocal.m4
- - new func, BASH_HEADER_INTTYPES, which just calls AC_CHECK_HEADERS
- on <inttypes.h>; separate so it can be AC_REQUIREd
- - AC_REQUIRE([BASH_HEADER_INTTYPES]) in BASH_CHECK_TYPE
- - include <inttypes.h> in BASH_CHECK_TYPE if HAVE_INTTYPES_H is
- defined
- - change AC_DEFINE to AC_DEFINE_UNQUOTED in BASH_CHECK_TYPE
- - new `long long' checking macros: BASH_TYPE_LONG_LONG and
- BASH_TYPE_UNSIGNED_LONG_LONG
- - new BASH_CHECK_DECL
-
-lib/sh/{strto[iu]max,strtoll}.c, lib/sh/Makefile.in, Makefile.in
- - new files
+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>
-externs.h
- - extern declarations for strtoll, strtoimax, strtoumax
+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
-lib/malloc/alloca.c
- - include <bashtypes.h> for size_t
+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
-builtins/printf.def
- - new functions: getllong, getullong, getintmax, getuintmax; return
- long long, unsigned long long, intmax_t, uintmax_t respectively
- - builtin printf now handles `ll' and `j' length modifiers directly
+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
-lib/sh/Makefile.in
- - use LIBOBJS to decide whether or not the strto* functions are
- needed
+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
- 10/17
- -----
-configure.in
- - call AC_REPLACE_FUNCS(rename)
- - move getcwd, strpbrk, strcasecmp, strerror, strtod
- from AC_CHECK_FUNCS to AC_REPLACE_FUNCS
- - only call BASH_FUNC_GETCWD if $ac_func_getcwd == "yes"
- - call BASH_CHECK_SYS_SIGLIST
- - if we don't have vprintf but have _doprnt, call AC_LIBOBJ(vprint)
+lib/readline/rlprivate.h
+ - _rl_reset_prompt, _rl_show_mode_in_prompt: extern declarations
-lib/sh/Makefile.in
- - remove rename, getcwd, inet_aton, strpbrk, strcasecmp, strerror,
- strtod, vprint from OBJECTS; picked up from LIBOBJS
+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>
-aclocal.m4
- - change BASH_FUNC_GETCWD to call AC_LIBOBJ(getcwd) if the libc
- getcwd(3) calls popen(3)
- - change BASH_FUNC_INET_ATON to call AC_LIBOBJ(inet_aton) if it's
- not found in libc or as a #define even with the special includes
- - BASH_KERNEL_RLIMIT_CHECK -> BASH_CHECK_KERNEL_RLIMIT
- - BASH_DEFAULT_MAILDIR -> BASH_SYS_DEFAULT_MAILDIR
- - BASH_JOB_CONTROL_MISSING -> BASH_SYS_JOB_CONTROL_MISSING
- - BASH_REINSTALL_SIGHANDLERS -> BASH_SYS_REINSTALL_SIGHANDLERS
- - BASH_SIGNAL_CHECK -> BASH_SYS_SIGNAL_VINTAGE
- - BASH_DUP2_CLOEXEC_CHECK -> BASH_FUNC_DUP2_CLOEXEC_CHECK
- - BASH_PGRP_SYNC -> BASH_SYS_PGRP_SYNC
- - BASH_RLIMIT_TYPE -> BASH_TYPE_RLIMIT
- - BASH_FUNC_PRINTF -> BASH_DECL_PRINTF
- - BASH_FUNC_SBRK_DECLARED -> BASH_DECL_SBRK
- - BASH_MISC_SPEED_T -> BASH_CHECK_SPEED_T
- - BASH_CHECK_SOCKLIB -> BASH_CHECK_LIB_SOCKET
- - new macro, BASH_CHECK_SYS_SIGLIST, encapsulates all the checks for
- sys_siglist, _sys_siglist, and strsignal(), sets SIGLIST_O to
- siglist.o if appropriate
+doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
+ - document new show-mode-in-prompt variable, off by default
-Makefile.in
- - use SIGLIST_O variable to decide whether or not we need siglist.o
+ 9/3
+ ---
-{execute_cmd,subst}.c
- - change a couple of instances of ISDIGIT to DIGIT, where we really,
- really only want ascii digits
+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
-ansi_stdlib.h
- - don't need a declaration for atol()
+variables.c
+ - 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)
- 10/18
- -----
+doc/{bash.1,bashref.texi}
+ - CHILD_MAX: document new meaning and action when variable is set
-aclocal.m4
- - new macro, BASH_FUNC_PRINTF_A_FORMAT, checks for printf support
- for %a, %A conversion specifiers, defines HAVE_PRINTF_A_FORMAT
- if successful
+ 9/5
+ ---
+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>
-configure.in
- - call AC_CHECK_FUNCS for isascii
- - call BASH_FUNC_PRINTF_A_FORMAT
+ 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>
-config.h.in
- - add a define for HAVE_ISASCII
- - add a define for HAVE_PRINTF_A_FORMAT
+ 9/9
+ ---
+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>
-lib/sh/snprintf.c
- - for long double output, fall back to sprintf using ldfallback()
- function for floating point formats
- - support %a, %A using dfallback() or ldfallback() if
- HAVE_PRINTF_A_FORMAT is defined
- - fix bug in vasprintf that returned wrong value in its first
- argument if the buffer holding the result string got reallocated
- - fixed PUT_CHAR macro to increment the counter even if we've
- exceeded the buffer size, for the return value from
- vsnprintf/snprintf
- - fix vsnprintf_internal to not use counter < length as a loop
- condition, but always process the entire format string (for
- the return value from vsnprintf/snprintf)
-
-builtins/printf.def
- - support %a, %A if HAVE_PRINTF_A_FORMAT is defined
-
-include/typemax.h
- - new file, with the TYPE_MAXIMUM stuff that's duplicated in several
- files in lib/sh
-
-lib/sh/{fmtulong,strtol,snprintf}.c
- - include <typemax.h> instead of having the definitions in each file
-
-lib/sh/Makefile.in
- - updated dependencies for typemax.h
-
- 10/22
- -----
-configure.in
- - call AC_CHECK_FUNCS on ctype.h functions/macros that bash redefines
- in chartypes.h
+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>
-config.h.in
- - defines for HAVE_IS{ASCII,BLANK,GRAPH,PRINT,SPACE,XDIGIT}
+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
-include/chartypes.h, lib/glob/strmatch.c, lib/readline/chardefs.h
- - don't redefine some is* ctype macros/functions if HAVE_ISXXX is
- defined (meaning that an appropriate function, but not a macro,
- exists)
+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/sh/strtrans.c
- - new function, ansic_shouldquote, returns 1 if argument string
- contains non-printing chars that should be quoted with $'...'
+ 9/11
+ ----
-externs.h
- - new declaration for ansic_shouldquote()
+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>
-variables.c
- - change print_var_value to ansi C quote the string if we're not in
- posix mode and the variable's value contains non-printing chars,
- to use the regular shell single quoting if the value contains
- shell meta-characters, and to just output the string otherwise
+ 9/13
+ ----
+configure.ac,config.h.in
+ - enable-direxpand-default: new configure option, turns the `direxpand'
+ shell option on by default
-lib/sh/shquote.c
- - add `break' to `case '~':' to avoid fallthrough and extra test
+bashline.c
+ - dircomplete_expand, dircomplete_expand_relpath: initialize to 1 if
+ DIRCOMPLETE_EXPAND_DEFAULT is defined and non-zero
doc/bashref.texi
- - note that in POSIX mode, `set' displays variable values that
- include nonprinting characters without quoting, unless they
- contain shell metacharacters
+ - enable-direxpand-default: document new configure option
-builtins/printf.def, lib/sh/snprintf.c
- - handle `F' conversion specifier as equivalent to 'f'
+ 9/14
+ ----
+shell.c
+ - --protected: make option valid only when wordexp is compiled into
+ the shell. Fix from Roman Rakus <rrakus@redhat.com>
-parse.y, {nojobs,variables}.c
- - a couple of cleanups for when building a minimal configuration
+configure.ac
+ - HP NonStop (*-nsk*): compile --without-bash-malloc. Change from
+ Joachim Schmitz <jojo@schmitz-digital.de>
-nojobs.c
- - new function: stop_making_children(), just sets
- already_making_children to 0 (like stop_pipeline)
+ 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>
-subst.c
- - call stop_making_children from subst.c:command_substitute if
- JOB_CONTROL is not defined. This fixes the bug where the wrong
- process is waited for (and its status returned) when using
- command substitution in a null command in a shell function
+lib/readline/colors.h
+ - workaround for HP NonStop compiler issue with <stdbool.h> from
+ Joachim Schmitz <jojo@schmitz-digital.de>
+ 9/17
+ ----
builtins/printf.def
- - new variable `tw' used to keep track of the total number of
- characters written by a single call to `printf' -- to be
- used for the `%n' conversion, which will be added later. It
- gets reset each time we reuse the format string, which is what
- ksh93 seems to do
+ - 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>
- 10/23
- -----
-variables.c
- - new function, bind_var_to_int (char *var, long val)
+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>
-variables.h
- - extern declaration for bind_var_to_int
+ 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
-lib/sh/netopen.c
- - use gai_strerror() for error messages when getaddrinfo() fails
- - use PF_INET if DEBUG is defined, since IPv6 doesn't work for me
+ 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
- - pass DEBUG=${DEBUG} down to makes in some subdirectories
+ 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
-{builtins,lib/{glob,sh}}/Makefile.in
- - append ${DEBUG} to LOCAL_CFLAGS value, passed by top-level Makefile
+ 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
-builtins/printf.def
- - added support for %n format conversion char (number of chars printed
- so far from current format string)
+lib/readline/doc/rltech.texi
+ - rl_input_available_hook: document
- 10/24
- -----
-variables.c
- - if posixly_correct is set, the default value of $MAILCHECK is 600
- - use legal_number instead of atoi in adjust_shell_level
- - treat non-numeric assignments to SECONDS as 0 in assign_seconds
- - new function, init_funcname_var; sets FUNCNAME as a dynamic variable
- if it's not set in the initial environment
- - new function, init_groups_var; sets GROUPS as a dynamic array
- variable if it's not set in the initial environment
- - new function, init_dirstack_var; sets DIRSTACK as a dynamic array
- variable if it's not set in the initial environment
- - new function, init_seconds_var; sets SECONDS as a dynamic
- variable using any valid integer value in the initial environment
- as the initial value, as if an assignment had been performed
- - call init_funcname_var, init_groups_var, init_dirstack_var,
- init_seconds_var from initialize_dynamic_variables
- - non-numeric values assigned to LINENO are treated as 0
- - change initialize_shell_variables to not auto-export PATH or TERM
- - change set_home_var to not auto-export HOME
- - change set_shell_var to not auto-export SHELL
- - broke the code that sets HOSTNAME, HOSTTYPE, MACHTYPE, OSTYPE
- out into a separate function, set_machine_vars; none of those
- variables are auto-exported
- - bash no longer un-exports SSH_CLIENT or SSH2_CLIENT
+ 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>
-shell.c
- - changed isnetconn() to check SSH_CLIENT and SSH2_CLIENT only if
- SSH_SOURCE_BASHRC is defined in config-top.h
+ 10/2
+ ----
+command.h
+ - add c_lock member to coproc structure for future use to tell who is
+ manipulating it
-config-top.h
- - added a commented-out definition for SSH_SOURCE_BASHRC
+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
- 10/25
- -----
+ 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>
-Makefile.in
- - changed RELSTATUS to `rc1' (release candidate 1)
+ 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
- 10/29
- -----
-locale.c
- - fixed an `=' vs. `==' typo in set_locale_var when parsing
- LC_NUMERIC
+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
-doc/{bash.1,bashref.texi}
- - document what bash does with $POSIXLY_CORRECT
+test.c
+ - unary_operator: add new -R variable, returns true if variable is set
+ and has the nameref attribute. From ksh93
-doc/builtins.1
- - some updates
+builtins/test.def
+ - add -R to description of conditional commands for help test
-builtins/psize.sh
- - some mktemp(1) changes
+doc/{bash.1,bashref.texi}
+ - document new -R unary conditional operator
-lib/readline/readline.c
- - change rl_backward to check for rl_point < 0 and reset to 0 if so
+ 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
-lib/readline/util.c
- - don't compile in _rl_strpbrk if HAVE_STRPBRK is defined
+trap.h
+ - extern declaration for check_signals_and_traps
+
+bashline.c
+ - 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
-lib/readline/rlprivate.h
- - remove extern declaration of _rl_strpbrk
-lib/readline/rldefs.h
- - #define _rl_strpbrk as strpbrk if HAVE_STRPBRK is define, otherwise
- add extern declaration of _rl_strpbrk from rlprivate.h
+ 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)
-{mailcheck,shell,variables}.c
- - make sure to include posixtime.h to get any prototype for time(3)
- in scope
+sig.c
+ - sigint_sighandler: call bashline_set_event_hook to set the event
+ hook if we're executing in a readline signal handler context
-{array,eval,execute_cmd,mksyntax,subst}.c, parse.y
-builtins/common.c
-lib/sh/pathcanon.c
- - a few changes as the result of `gcc -Wall' patches from solar
- designer
+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)
-builtins/read.def, parse.y
- - change some calls to free() to xfree()
-builtins/set.def
- - make sure unset_builtin() resets unset_array to 0 each time through
- the loop, because it's set (and used) depending on the current
- argument
+parse.y
+ - yy_readline_get: don't set interrupt_immediately before we call
+ readline(). Inspired by report from lanshun zhou
+ <zls.sogou@gmail.com>
-shell.h
- - new define, USE_VAR, to force the compiler to not put a particular
- variable in a register -- helpful if registers are not restored
- by setjmp/longjmp
+input.c
+ - getc_with_restart: add call to run_pending_traps after call to
+ CHECK_TERMSIG
-builtins/{evalfile.c,{read,wait}.def}, {eval,execute_cmd,shell,test}.c
- - use USE_VAR for some variables
+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
-subst.c
- - fixed a case in expand_word_internal where a NULL pointer could
- have been passed to free() (though free() should ignore it)
- - fixed a case at the end of expand_word_internal where LIST could
- have been used uninitialized (it makes gcc happy, though it
- doesn't happen in practice)
+builtins/mapfile.def
+ - mapfile: don't set interrupt_immediately before calling zgetline()
+ (which uses zread internally)
-test.c
- - give test_syntax_error(), beyond(), and integer_expected_error()
- the `__noreturn__' attribute for gcc
+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
-unwind_prot.c
- - in clear_unwind_protect_list(), convert `flags' to `long' (via
- assignment to a `long' variable) before casting to `char *', in
- case pointers and longs are 64 bits and ints are 32 (makes no
- difference on 32-bit machines)
+ 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
- 10/30
+ 10/20
-----
-print_cmd.c
- - fixed cprintf to avoid gcc warning about assigning const pointer
- to non-const (discarding type qualifier)
+builtins/wait.def
+ - WAIT_RETURN: set wait_signal_received back to 0 for the potential
+ next call to wait
-{make_cmd,pcomplete,test}.c,parse.y
- - some minor changes to shut up gcc warnings
+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
-lib/sh/tmpfile.c
- - fixed sh_mktmpfp to avoid file descriptor leaks in the case that
- sh_mktmpfd succeeds but fdopen fails for some reason
- - change sh_mktmpfd to use the same scheme for computing `filenum'
- as sh_mktmpname
- - change get_sys_tmpdir to prefer P_tmpdir if P_tmpdir is defined
- - changed sh_mktmpname and sh_mktmpfd to avoid trying to assign to
- `nameroot' if `nameroot == 0' (duh)
- - add code to sh_mktmpfd to use mkstemp(3) if USE_MKSTEMP is defined
- - add code to sh_mktmpname to use mktemp(3) if USE_MKTEMP is defined
-
-support/{fixlinks,mkclone}
- - use mktemp if it's available for the symlink test
- - use $TMPDIR instead of hardcoding /tmp; default to /tmp
- - use a better filename for the symlink test instead of `z'
-
-support/bashbug.sh
- - more changes inspired by a patch from solar designer
-
-lib/malloc/Makefile.in
- - new target `alloca', which builds libmalloc.a with alloca.o only
- (for systems without alloca that are configured --without-bash-malloc)
+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
-configure.in
- - if we don't have a working alloca and are not configured to build
- the bash malloc library, make a malloc library containing only
- alloca.o
+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
-aclocal.m4
- - slight change to RL_LIB_READLINE_VERSION to deal with minor version
- numbers with a letter appended (like 4.2a)
+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>
- 10/31
+ 10/24
-----
-doc/{bash.1,bashref.texi}
- - slight change to note that only interactive shells resend a SIGHUP
- to all jobs before exiting
+lib/glob/glob.c
+ - glob_filename: only check directory_name for globbing chars if
+ it's of non-zero length
-externs.h
- - declare strto[ui]max only if NEED_STRTOIMAX_DECL is defined. This
- keeps picky compilers from choking because intmax_t is not defined
- (MacOS X 10.1)
+lib/sh/strchrnul.c
+ - new simpler implementation
-builtins/printf.def
- - #define NEED_STRTOIMAX_DECL before including shell.h
+subst.c
+ - command_substitute: call set_shellopts after turning off errexit
+ in subshells so it's reflected in $SHELLOPTS
- 11/1
+ 11/7
----
-general.c
- - check in bash_tilde_expand() for an unquoted tilde-prefix; don't
- bother passing the string to tilde_expand unless the prefix is
- unquoted
+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>
-shell.c
- - fix a problem with $LINENO when executing commands supplied with
- the -c invocation option when ONESHOT is defined
+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
-[bash-2.05a-rc1 frozen]
+ 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>
-builtins/printf.def
- - fix the %n conversion to require that the variable name supplied
- be a valid shell identifier
+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>
-variables.c
- - improve random number generator slightly by using the upper 16
- bits of the running random number instead of the lower 16, which
- are incrementally more random
+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>
- 11/2
- ----
-configure.in
- - if RL_INCLUDEDIR ends up being /usr/include, don't put
- -I$(RL_INCLUDEDIR) into CFLAGS
+lib/malloc/malloc.c
+ - block_signals: renamed to _malloc_block_signals, made public
+ - unblock_signals: renamed to _malloc_unblock_signals, made public
- 11/5
- ----
-doc/{bash.1,bashref.texi}
- - correct description of POSIXLY_CORRECT to note that the shell enters
- posix mode *before* the startup files are read if POSIXLY_CORRECT
- is in the initial environment
+lib/malloc/imalloc.h
+ - extern declarations for _malloc_{un,}block_signals
-variables.c
- - fix function prologues for init_dirstack_var and init_groups_var
- to agree with caller (no arguments)
+lib/malloc/table.c
+ - mregister_alloc, mregister_free: block signals around table
+ manipulation
-jobs.c
- - fix forward function declarations for pipe_read and pipe_close
+ 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
-subst.c
- - removed `inline' attribute from skip_double_quoted because it can
- potentially be called recursively
+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>
-bashline.c
- - quick fix to bashline.c:attempt_shell_completion programmable
- completion code to just punt if the end of the command word found
- by find_cmd_end is <= the start found by find_cmd_start (the bug
- is probably in find_cmd_start -- fix later)
+include/stdc.h
+ - CPP_STRING: new define, replaces __STRING
-pcomplete.c
- - fix gen_matches_from_itemlist to return if the stringlist is null
- after any cleaning or initialization, before trying to use it
- - fix GEN_COMPS to only bother to try to append the STRINGLIST
- returned by gen_matches_from_itemlist to `glist' if it's non-NULL
-
-lib/sh/stringlist.c
- - make copy_stringlist return NULL if the STRINGLIST * passed as an
- argument is NULL
- - make append_stringlist call copy_stringlist only if M2 is non-NULL;
- otherwise just return NULL if m1 is NULL
- - make word_list_to_stringlist return 0 immediately if the passed
- LIST argument is NULL
- - make realloc_stringlist call alloc_stringlist if the passed
- STRINGLIST argument (`sl') is 0, just like realloc calls malloc
+lib/malloc/{malloc.c,imalloc.h}
+ - replace __STRING with CPP_STRING
-subst.c
- - in skip_to_delim(), if we have an unclosed ${, and it's at the end
- of the string (string[i] == '{', string[i+1] == '{' and
- string[i+2] == 0, return si (i + 2) immediately without bothering
- to call extract_dollar_brace_string or extract_delimited_string
- - in skip_to_delim(), if string[i] is 0 after a call to
- extract_dollar_brace_string or extract_delimited_string (meaning we
- have an unclosed ${ or other expansion, return i immediately without
- doing a `continue' (which will increment i past the end of string)
- - in split_at_delims, don't increment te by 1 if it's pointing to a
- delimiter. this has the effect of skipping the first delimiter
- char in a possibly multi-character delimiter, and ignoring
- single-char delimiters like `>'
+ 11/16
+ -----
+lib/readline/bind.c
+ - sv_histsize: if argument evaluates to a value < 0, unstifle the
+ history
-configure.in
- - use AC_CHECK_MEMBERS([struct stat.st_blocks]) instead of a call to
- AC_STRUCT_ST_BLOCKS to avoid configure changing LIBOBJS if the test
- fails
+ 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>
-general.c
- - introduce two new variables: bash_tilde_{prefixes,suffixes}, set
- to the additional prefixes and suffixes bash wants to pass to the
- tilde expansion code (reserved for post-bash-2.05a fix)
+ 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
-aclocal.m4
- - add missing `test' in BASH_CHECK_SYS_SIGLIST
+jobs.h
+ - ANY_PID: new define
- 11/7
- ----
-lib/readline/vi_mode.c
- - fix rl_vi_goto_mark to explicitly check that the desired mark is
- between 'a' and 'z', since some locales have lowercase letters
- outside that range, which could cause a negative subscript
+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>
-include/chartypes.h
- - remove superfluous `#undef ISASCII'
+doc/{bash.1,bashref.texi}
+ - document new `wait -n' option
-lib/sh/strto[iu]max.c
- - changes from Paul Eggert to work around buggy compilers and catch
- configuration errors at compile time
+execute_cmd.c
+ - 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>
-aclocal.m4
- - new macro, BASH_C_LONG_DOUBLE, identical to AC_C_LONG_DOUBLE but
- with a fix for Irix 5.3 (not called, since I'm not sure it's the
- right thing to do -- the C standard allows double and long double
- to be the same size)
+ 11/28
+ -----
-lib/sh/snprintf.c
- - only try to write the trailing NUL in vsnprintf_internal if
- data->length is >= 0, since if it's not, we probably don't have
- a buffer
+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>
+
+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
-Makefile.in
- - changed RELSTATUS to `release'
+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>
+
+ 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>
- 11/8
+ 12/2
----
-lib/sh/strtol.c
- - make sure chars passed to toupper are cast to unsigned
+subst.c
+ - 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>
-unwind_prot.c
- - change clear_unwind_protect_list to not require a cast from `int'
- to `char *'
+ 12/4
+ ----
+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/chardefs.h
- - make _rl_digit_p succeed only for ascii digits, since that's what
- most callers assume
+ 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/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>
- 11/13
+ 12/12
-----
-doc/bashref.texi
- - added `ERR' trap and [-+]O invocation option to section listing
- differences from the Bourne shell
+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>
- 11/15
+ 12/13
-----
-[bash-2.05a released]
+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>
- 11/19
+ 12/14
-----
-include/stdc.h
- - new define, INLINE, defined as `inline' for gcc and empty otherwise
+lib/readline/readline.c
+ - 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>
-subst.c
- - make skip_double_quoted, sub_append_string have INLINE attribute
+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>
-trap.c
- - use BASH_NSIG as upper limit for signal names in signal_name()
+doc/{bash.1,bashref.texi}
+ - document new printf %()T default argument behavior
-lib/readline/bind.c
- - use RL_COMMENT_BEGIN_DEFAULT in output for rl-comment-begin value
+ 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
-error.c
- - fix sys_error to save value of errno around calls to fprintf
+builtins/read.def
+ - 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}
+ - 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>
-doc/Makefile.in
- - added rules to create PDF files from postscript and dvi input
+subst.c
+ - command_substitute: change direct assignment of exit_immediately_on_error
+ to use change_flag ('e', FLAG_OFF) instead
-MANIFEST.doc
- - added {article,bash,bashref,rose94}.pdf
+flags.c
+ - use errexit_flag as the variable modified by changes to the -e
+ option, reflect those changes to exit_immediately_on_error
-doc/bash.1
- - rearranged some `.PD 0' and `.TP' directives so man2html will
- handle them better (shouldn't affect groff output)
+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/man2html.c
- - small fix to handle quoted string arguments to directives like
- `.BR' without mangling the output
+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>
- 11/20
+ 12/23
-----
-{arrayfunc,variables}.c
- - changed calling sequence for dynamic array variable `assign'
- functions to (SHELL_VAR *self, char *value, arrayind_t ind)
- - changed calling sequence for dynamic variable assign functions
- to the same as array variable assign_func. Now this can be
- prototyped
+include/posixjmp.h
+ - setjmp_nosigs: new define, call setjmp in such a way that it will
+ not manipulate the signal mask
-variables.h
- - the assign_func member of a `struct variable' is now of type
- `sh_var_assign_func_t', which is prototyped
- - the dynamic_value member of a `struct variable' is now of type
- `sh_var_value_func_t', which is prototyped
+{expr,test,trap}.c
+ - setjmp_nosigs: call instead of setjmp; don't need to manipulate
+ signal mask
-variables.c
- - changed to use `sh_var_assign_func_t' and `sh_var_value_func_t'
+builtins/read.def
+ - read_builtin: setjmp_nosigs: call instead of setjmp; don't need
+ to manipulate signal mask
-builtins/cd.def
- - when in posix mode, if the new directory name formed by PWD and
- the argument passed by the user cannot be canonicalized, and the
- -P option has not been supplied, return failure immediately
- - if canonicalization failed, but the fallback to the directory
- name specified by the user succeeds, reset the current working
- directory
-
-lib/readline/{input.c,rlprivate.h}
- - renamed rl_unget_char to _rl_unget_char; made library global
-
-lib/readline/{{bind,readline}.c,{keymaps,rlprivate}.h}
- - support for `key subsequences'; allows a key sequence and a function
- mapped to a subsequence of that key sequence. Primarily to allow
- arrow keys to be bound in readline vi insert mode, while preserving
- the ESC function to switch to command mode.
-
-lib/readline/{input.c,rlprivate.h}
- - new function, _rl_input_queued(T), does a check with select or
- FIONREAD with a timeout of `T' (which is generally 0)
+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)
-lib/readline/readline.c
- - change _rl_dispatch_subseq to test for input in the queue if we
- get ESC while in vi insertion mode if the keymap entry type for
- ESC is ISKMAP. If _rl_input_queued returns non-zero, we assume
- that an arrow key sequence has been pressed and go ahead with the
- subsequence. If it returns zero, we assume that the user pressed
- ESC to switch into command mode, and dispatch to that right away.
- This avoids forcing the user to press another key before switching
- into command mode
-
- 11/21
+ 12/24
-----
-lib/readline/readline.c
- - bind common arrow key sequences in vi insertion keymap
-
-lib/readline/terminal.c
- - bind termcap definition's arrow keys in vi insertion keymap
+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
-lib/readline/bind.c
- - check for rl_vi_movement_mode in _rl_bind_if_unbound, so
- binding the arrow keys can work
+ 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
-lib/readline/readline.c
- - since _rl_bind_if_unbound does the check of what's currently
- bound to the key sequence, the check in bind_arrow_keys_internal
- was redundant
- - bind_arrow_keys_internal now takes a Keymap argument and handles
- saving and restoring _rl_keymap; changed bind_arrow_keys
- accordingly
+input.c
+ - getc_with_restart: add call to QUIT instead of CHECK_TERMSIG
-builtins/fc.def
- - fix from Paul Eggert to substitute the nearest history number in
- range if an out-of-range value is supplied. POSIX requires this
+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)
-lib/sh/pathcanon.c
- - fix from Corrina Vinschen for the special `cygdrive' prefix on
- Cygwin
+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
-bashhist.c
- - split the history adding code into more pieces:
- check_history_control (char *line) checks LINE against the value
- of HISTCONTROL, returning 1 if LINE should be saved and 0 if not
+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
- check_add_history (char *line) calls check_history_control and
- history_should_ignore (line) and saves the line with
- bash_add_history if the checks indicate that it should be saved
+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
- maybe_add_history just calls check_add_history to set the value
- of first_line_saved
+builtins/evalfile.c
+ - _evalfile: setjmp_nosigs: call instead of setjmp when saving
+ return_catch; don't need to manipulate signal mask
-bashhist.h
- - extern declaration for check_add_history()
+builtins/evalstring.c
+ - evalstring: setjmp_nosigs: call instead of setjmp when saving
+ return_catch; don't need to manipulate signal mask
shell.c
- - don't call load_history() from the interactive shell startup
- code if history_lines_this_session is > 0, indicating that we've
- already saved some lines in the history and that we probably
- don't want to overwrite them
+ - 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
-builtins/history.def
- - call check_add_history from push_history, so `history -s xx'
- works even when in a compound command whose first line has not
- been saved. (Caveat: in a compound command when the first
- line has been saved, the line supplied to history -s will become
- part of the compound command's history entry. Of course, the
- delete_history call could remove the compound command from the
- history entirely)
+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
- - use sh_makepath instead of xmalloc/sprintf in
- command_word_completion_function
+ 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
-lib/readline/complete.c
- - get_y_or_n now takes an int FOR_PAGER argument; caller changed
- If FOR_PAGER is non-zero, get_y_or_n returns appropriate values
- for a more-like pager: `newline' or `return' return 2; `q' or
- `Q' return 0
- - there is now a mini internal more-like pager for displaying a
- list of completions that exceeds the screen height (new function
- _rl_internal_pager, called from rl_display_match_list)
+variables.c
+ - bind_global_variable: new function, binds value to a variable in
+ the global shell_variables table
- 11/24
- -----
-command.h
- - new flag, W_TILDEEXP, says to do tilde expansion on an
- assignment word
+variables.h
+ - bind_global_variable: new extern declaration
-execute_cmd.c
- - fix_assignment_words now sets W_TILDEEXP for assignment word
- arguments to `assignment builtins'
+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
-general.c
- - bash_tilde_expand now takes a second argument indicating whether
- or not it's being invoked in an `assignment context'
+command.h
+ - W_ASSIGNARRAY: new word flag, compound indexed array assignment
-general.h
- - change extern declaration for bash_tilde_expand
+subst.h
+ - ASS_MKGLOBAL: new assignment flag, forcing global assignment even in
+ a function context, used by declare -g
-{bashline,execute_cmd,findcmd,general,variables}.c
-builtins/evalfile.c
-lib/sh/makepath.c
- - fix callers of bash_tilde_expand appropriately
+execute_cmd.c
+ - fix_assignment_words: set W_ASSIGNARRAY flag if -a option given to
+ declaration builtin
subst.c
- - fix callers of bash_tilde_expansion appropriately
- - add (currently commented-out) code that would tilde expand assignment
- statement arguments to assignment builtins (W_TILDEEXP flag set)
- even when the shell is in posix mode
+ - 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
+ 12/27
+ -----
bashline.c
- - fix attempt_shell_completion to turn off
- rl_filename_completion_desired when doing command name completion,
- so no slash gets appended to the name if there happens to be a
- directory with the same name in the current directory
+ - 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
- 11/26
+ 12/29
-----
-lib/readline/rltech.texinfo
- - a couple of additions to the rl_stuff_char description
-
-parse.y
- - turn off echo_input_at_read in parse_string_to_word_list, so `set -v'
- doesn't give extra lines of output when doing compound array
- assignment
+configure.ac,version.c,patchlevel.h
+ - bash-4.3-devel: new version, new shell compatibility level (43)
subst.c
- - fix split_at_delims to handle skipping over a `\n' if it's a
- delimiter (use spctabnl(c) instead of whitespace(c))
-
- 11/27
- -----
-support/config.{guess,sub}
- - updated (with bash changes) to latest version from gnu.org
-
-sig.h
- - add prototype for set_signal_handler declaration
+ - 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
-builtins/setattr.def
- - add prototype to extern declaration of declare_builtin
-
-builtins/times.def
- - add no_options call, since times takes no options
+builtins/shopt.def
+ - compat42: new shopt option
+ - set_compatibility_level: change logic to set and unset various
+ compat variables and shell_compatibility_level
-lib/sh/spell.c
- - add prototypes to forward declarations for midist and spdist
+COMPAT
+ - new documentation for bash-4.3 compatibility changes
-lib/sh/strtrans.c
- - add explicit int return type to ansic_shouldquote declaration
+doc/{bash.1,bashref.texi}
+ - compat42: document new shopt option
-lib/readline/rldefs.h, lib/readline/{macro,readline,util,undo}.c
- - move define for SWAP to rldefs.h, removed from various C files
+builtins/shopt.def
+ - set_compatibility_opts: new function, sets the various shopt
+ compat variables based on the value of shell_compatibility_level
-lib/readline/vi_mode.c
- - removed define for exchange(), changed to use SWAP instead
+builtins/common.h
+ - set_compatibility_opts: new extern declaration
-lib/readline/bind.c
- - added some static forward function declarations
- - find_boolean_var, find_string_var now take a `const char *' argument
+variables.c
+ - 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
-lib/readline/signals.c
- - added static forward declaration for rl_maybe_set_sighandler
+variables.h
+ - sv_shcompat: new extern declaration
-lib/readline/readline.c
- - add some common key bindings for the HOME and END keys in
- bind_arrow_keys_internal
+doc/{bash.1,bashref.texi}
+ - BASH_COMPAT: description of new variable
-lib/readline/terminal.c
- - fetch the `@7' termcap string; it's sent by the END key
- - attempt to bind the terminal's END key to rl_end_of_line in
- bind_termcap_arrow_keys; I don't know why I was using `kH'
- instead of `@7'
+lib/readline/complete.c
+ - _rl_colored_stats: default back to 0 for 4.3 release branch
-doc/builtins.1
- - remove `case', `for', `if', `until', `while' from NAME section;
- those are not shell builtins
+ 1/5/2013
+ --------
+quit.h
+ - remove spurious call to itrace in CHECK_WAIT_INTR
- 11/28
- -----
-stringlib.c
- - new function, find_token_in_alist, takes a token value and an
- ALIST argument, and returns the string correspoinding to the
- token if found in the alist
+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
-externs.h
- - new extern declaration for find_token_in_alist()
+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
-subst.c
- - string_list_internal is no longer static
+lib/readline/readline.h
+ - rl_signal_event_hook: new extern declaration
-subst.h
- - new extern declaration for string_list_internal()
+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
-parse.y
- - new alist array of other tokens returned by read_token which are
- not reserved words in word_token_alist[]
- - reworked error reporting: new functions print_offending_line,
- which prints the line containing the syntax error,
- error_token_from_token, which takes the current token and tries to
- figure out its textual representation, and error_token_from_text,
- which does the old job of finding the bad token by analyzing the
- text of shell_input_line at the current index
- - report_syntax_error now tries to figure out the token that caused
- the syntax error by first looking at current_token and falling
- back to the old method of textual analysis if that fails
- - report_syntax_error doesn't say the token resulting from the textual
- analysis of the input line is an `unexpected token'; it just
- says there is a `syntax error near xxx'
- - changed conditional command error reporting to use the value
- returned by error_token_from_token if it's not null instead of
- just using the token value in the message, since current_token
- ends up being set to -1, and the text of the message from
- report_syntax_error might not be exactly right
- - change parse_string_to_word_list to set current_token to the
- offending token returned by read_token before calling yyerror()
- to make the error reporting do the right thing
+lib/readline/doc/rltech.texi
+ - rl_signal_event_hook: document new function
-aclocal.m4
- - fixed typo in BASH_CHECK_LIB_TERMCAP
+bashline.c
+ - changes to set rl_signal_event_hook instead of rl_event_hook
-configure.in
- - add check for isinf(3); define HAVE_ISINF_IN_LIBC if found
+lib/readline/readline.h
+ - change readline version numbers to 6.3
-config.h.in
- - add define for HAVE_ISINF_IN_LIBC
+ 1/6
+ ---
+doc/{bash.1,bashref.texi}
+ - a couple of changes to the descriptions of the ERR trap and its
+ effects based on a message from Rob Nagler <nagler@bivio.biz>
-lib/sh/snprintf.c
- - check for Inf and NaN, using isinf and isnan if they're found in
- libc
- - use the current locale for thousands separator and decimal point
- - recognize "'" flag; not implemented yet
- - fix for snprintf/vsnprintf with length of 0 and string argument of
- 0 with non-zero length
+ 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>
-builtins/read.def
- - TMOUT is now the default timeout for `read' (and select) if set,
- like ksh93 when reading from the terminal
- - edit_line (called by read -e) now just does readline's filename
- completion by setting rl_attempted_completion_function to NULL,
- since e.g., doing command completion for the first word on the
- line wasn't really useful
+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
+ ----
execute_cmd.c
- - changed select_command to return failure status if select_query
- returns NULL, indicating that read_builtin returned
- EXECUTION_FAILURE
-
-doc/{bash.1,bashref.texi}
- - documented new TMOUT behavior
- - slight change to the description of the test `-ef' option
+ - 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>
-doc/bashref.texi
- - added item to posix mode section describing failure behavior of
- cd when invoked in logical mode and the pathname formed by
- combining $PWD and the directory argument does not refer to an
- existing directory
-
- 11/29
- -----
-execute_cmd.c
- - fix execute_function to call dispose_function_env after
- merge_function_env if the shell is in posix mode (fixes debian
- bash bug #117673)
+ 1/13
+ ----
+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>
-lib/readline/readline.c
- - rl_forward -> rl_forward_char; rl_forward function for compatibility
- - rl_backward -> rl_backward_char; rl_forward function for
- compatibility
- - new functions, rl_forward_byte, rl_backward_byte, for future use
+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>
-lib/readline/readline.h
- - extern declarations for rl_forward_char, rl_backward_char,
- rl_forward_byte, rl_backward_byte
+ 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>
-lib/readline/{emacs_keymap,funmap,vi_keymap,vi_mode
- - rl_forward -> rl_forward_char
- - rl_backward -> rl_backward_char
+ 1/17
+ ----
+subst.c
+ - expand_word_list_internal: make sure tempenv_assign_error is
+ initialized to 0
-lib/readline/funmap.c
- - new bindable names, `backward-byte' and `forward-byte'
+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>
-aclocal.m4
- - new function, BASH_CHECK_MULTIBYTE, encapsulates checks for
- multibyte code
+ 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]
-config.h.in
- - add necessary defines for multibyte include files and functions
+command.h
+ - W_GLOBEXP (which was unused) is now W_SPLITSPACE (which isn't used
+ yet)
-configure.in
- - add call to BASH_CHECK_MULTIBYTE
+{execute_cmd,subst,variables}.c
+ - removed all code that mentioned W_GLOBEXP
+ - removed mention of gnu_argv_flags and code that set it
-config-bot.h
- - add code to define HANDLE_MULTIBYTE if prerequisites are met
+ 1/22
+ ----
+subst.c
+ - 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'
-lib/sh/xstrchr.c
- - new file, xstrchr() is strchr(3) that handles multibyte characters
+ 1/23
+ ----
+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>
-bashhist.c
- - first_line_saved -> current_command_first_line_saved; variable is
- now global
+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
-bashhist.h
- - extern declaration for current_command_first_line_saved
+subst.c
+ - 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'
- 11/30
- -----
-bashhist.c
- - break the code that actually calls add_history out of
- bash_add_history into a new function, really_add_history;
- bash_add_history now calls really_add_history
- - check_add_history takes a second `force' argument telling it
- whether to call bash_add_history (force == 0) or really_add_history
- (force != 0)
+ 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>
-builtins/history.def
- - in push_history, call delete_last_history if the current command
- has more than one line, the first line was saved, and
- command-oriented history is active. This takes care of deleting
- the right history element if `history -s' is used within a
- compound or multiline command
- - in push_history, call check_add_history with second argument of 1
- to skip check of current_command_line_count and add the arguments
- to history -s as a single separate history entry
+ 1/25
+ ----
+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
- 12/3
+ 1/26
----
-lib/readline/complete.c
- - append a slash to completed names which are symlinks to directories
- if the new variable _rl_complete_mark_symlink_dirs is non-zero
+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>
-lib/readline/rlprivate.h
- - extern declaration for _rl_complete_mark_symlink_dirs
+ 1/29
+ ----
+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>
-lib/readline/bind.c
- - new bindable variable, `mark-symlinked-directories', mirrors the
- value of _rl_complete_mark_symlink_dirs
+ 1/30
+ ----
+configure.ac
+ - changed version to 4.3-alpha
-doc/bash.1, lib/readline/doc/{readline.3,rluser.texinfo}
- - documented new `mark-symlinked-directories' variable
+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>
- 12/4
+ 1/31
----
-variables.[ch]
- - set_pipestatus_array now takes a second argument with the number
- of processes in the array
- - changed set_pipestatus_array to just modify the value in place if
- the existing array has one element and the new array has one
- element, and to modify existing values in place if new array has
- more elements than existing array
+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>
-variables.c, jobs.c
- - changed set_pipestatus_array callers
+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
-jobs.c
- - moved call to setjstatus() from set_job_status_and_cleanup to
- wait_for, since set_job_status_and_cleanup is part of the SIGCHLD
- signal handler call path, and race conditions accessing the
- PIPESTATUS array will result for things like
+ 2/2
+ ---
+variables.c
+ - 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>
- while true; do date; done | cat > /dev/null
+ 2/9
+ ---
- 12/5
- ----
-xmalloc.h
- - don't redefine xmalloc, xrealloc, and xfree if DISABLE_MALLOC_WRAPPERS
- is #defined
+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
-config.h.in
- - #undef for DISABLE_MALLOC_WRAPPERS
+quit.h
+ - move CHECK_ALRM macro here from builtins/read.def so trap.c:
+ check_signals() can call it
-configure.in
- - define DISABLE_MALLOC_WRAPPERS if the --with-purify option is
- supplied
+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>
-lib/malloc/trace.c
- - new function, malloc_trace_bin(N), traces allocations and frees
- to bucket N (uses the same type of bitmap as `busy')
+ 2/12
+ ----
+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>
-lib/malloc/table.c
- - fix wraparound search problem in find_entry when searching for a
- free entry when the table is full
- 12/6
+ 2/13
----
-lib/malloc/table.c
- - keep an `overflow bucket' around to use when the table is full,
- so find_entry always returns a valid pointer when FIND_ALLOC
- is set
- - new static variable to keep a count of the number of MT_ALLOC
- entries in the mem_table
-
-lib/sh/{oslib,clktck}.c
- - if HAVE_LIMITS_H is defined, include <limits.h>
+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>
-lib/sh/oslib.c
- - new function, getmaxgroups() returns max number of simultaneous
- groups
- - new function, getmaxchild(), returns max number of simultaneous
- user processes
+ 2/14
+ ----
+configure.ac
+ - add check for sig_atomic_t; already a placeholder for it in
+ config.h.in
-general.c
- - removed forest of #defines for getmaxgroups()
+ 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>
-externs.h
- - new extern declaration for getmaxgroups()
- - new extern declaration for getmaxchild()
- - new extern declaration for isnetconn()
+ 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
-lib/sh/netconn.c,shell.c
- - new file, isnetconn() from shell.c moved here
+trap.[ch]
+ - get_original_signal: now global so rest of the shell can use it
-Makefile.in, lib/sh/Makefile.in
- - necessary changes for netconn.c
+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
-builtins/ulimit.def
- - changed getmaxuprc() to just call getmaxchild() and massage the
- return value appropriately
+sig.h
+ - sigterm_sighandler: new extern declaration
-{jobs,nojobs}.c
- - use the value returned by getmaxchild() in
- mark_dead_jobs_as_notified instead of static CHILD_MAX
+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
jobs.c
- - new function, compact_jobs_list, removes some number of jobs from
- the jobs table and reallocates the table, copying the jobs that
- are left from the old table to the new. Compaction happens from
- the beginning of the list and removes dead jobs, and we make sure
- to keep the last CHILD_MAX jobs as POSIX.2 requires
- - call compact_jobs_list from stop_pipeline if we're in a subshell,
- there are no free jobs in the jobs table, and the jobs table is
- at or above some maximum limit
+ - 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
- - change eval_arith_for_expr to set this_command_name to `((' before
- calling evalexp, since it might be changed by evaluating the
- loop body between evalexp calls
-
-trap.c
- - change reset_signal to turn off the SIG_TRAPPED flag for the
- given signal, so shell builtins and functions running in command
- substitutions don't run the signal handlers (traps are not supposed
- to be inherited by command substitutions)
+ - 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
-parse.y
- - changed parse_string_to_word_list to turn off alias expansion
- while parsing the array assignment
+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)
- 12/9
+ 2/18
----
-alias.c
- - fix add_alias so that redefining an alias's value also resets the
- EXPANDNEXT flag
+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>
- 12/10
- -----
-parse.y
- - new function, token_is_assignment, called to check whether the text
- before `=' makes up a valid assignment token before trying to parse
- a compound assignment statement
- - new function, parse_compound_assignment, to parse a compound
- assignment statement instead of using parse_matched_pair; handles
- comments and error reporting in the parser instead of waiting until
- expansion time
- - changed parse_compound_assignment and parse_string_to_word_list to
- allow reserved words in compound array assignments
-
-lib/readline/doc/rltech.texinfo
- - changed the documentation for rl_callback_read_char and
- rl_callback_handler_remove to say what happens to the terminal
- settings and what needs to be done to reset them
+ 2/19
+ ----
+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
- 12/11
- -----
-bashline.c
- - add emacs_edit_and_execute_command, bound to C-xC-e, like vi-mode
- `v' command
- - add bindable command name `edit-and-execute-command', bound to
- run emacs_edit_and_execute_command()
+ 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)
-lib/glob/strmatch.c
- - add support for ksh93-like [:word:] character class (isalnum + `_')
+ 2/23
+ ----
+{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
-doc/{bash.1,bashref.texi}
- - add note to section describing lists to clarify that a sequence of
- one or more newlines may be used to delimit a command, equivalent
- to a semicolon
- - document new [:word:] pattern matching character class
+unwind_prot.c
+ - include sig.h before quit.h (reverse order)
-doc/bash.1, lib/readline/doc/rluser.texinfo
- - document `edit-and-execute-command' and its default emacs-mode
- binding
+ 2/27
+ ----
+builtins/shopt.def
+ - reset_shopt_options: make sure check_window_size is reset to the
+ default from config.h, not unconditionally to 0
-include/chartypes.h
- - add defines for TOCTRL and UNCTRL if they're not already defined
+jobs.[ch]
+ - last_made_pid, last_asynchronous_pid: now volatile. Change from SuSE
-lib/readline/chardefs.h
- - #undef UNCTRL if it's defined to avoid cpp redefinition warnings
+jobs.c
+ - wait_for: if we're using sigaction to install a handler for SIGCHLD,
+ make sure we specify SA_RESTART
-lib/sh/strtrans.c
- - add \cX (Control-X) escape for $'...' to ansicstr()
- - change ansic_quote() to allocate at least four chars for each char
- in the string argument, to account for \0xx octal values
- - change ansic_quote() to no longer call sprintf for non-printable
- characters; just translate the string to octal directly
+lib/{tilde,readline}/shell.c
+ - get_home_dir: instead of looking in the password file every time,
+ look once and cache the result
-print_cmd.c
- - change xtrace_print_word_list to call ansic_quote() if
- ansic_shouldquote() indicates that there are nonprinting characters
- in a word
+sig.[ch]
+ - sigwinch_received, sigterm_received: now `volatile' qualified
-builtins/type.def
- - changed deprecated long option parsing to just replace the word
- in the list with the equivalent short option (-type -> -t) instead
- of removing words from the list
- - changed describe_command to take a single flags argument instead
- of two int args; changed caller
- - type now has two new options: -f suppresses function lookup (like
- command), and -P forces a PATH search for the name(s)
+sig.c,quit.h
+ - interrupt_state,terminating_signal: now sig_atomic_t
-builtins/common.h
- - flags for describe_command are here
- - changed extern declaration of describe_command
+ 3/1
+ ---
+MANIFEST,examples/*
+ - removed around 120 files without FSF copyrights; requested by
+ Karl Berry in early January
-builtins/command.def
- - changed call to describe_command to use flags from common.h, and
- the right number of arguments
+ 3/2
+ ---
+lib/malloc/malloc.c
+ - morecore: only check whether SIGCHLD is trapped if SIGCHLD is defined
-doc/{bash.1,bashref.texi}
- - documented new -f and -P options to `type'
+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
- 12/12
- -----
-lib/readline/rldefs.h
- - fixed prototype for _rl_strnicmp
+quit.h
+ - include "sig.h" for sig_atomic_t
-execute_cmd.c
- - select_query now takes a new argument, an int flag saying whether
- or not to print the menu the first time through the loop. An
- empty line in response to the prompt will always cause the menu
- to be reprinted
- - changed execute_select_command to cause select_query to reprint
- the menu only if REPLY is set to NULL, if KSH_COMPATIBLE_SELECT
- is defined
+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-top.h
- - define KSH_COMPATIBLE_SELECT, with a comment about its meaning
+ 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/readline/readline.c
- - change rl_insert_comment to toggle if given an explicit numeric
- argument: if the first characters on the line don't specify a
- comment, insert one; if they do, delete the comment text
+doc/bash.1
+ - add URL to `POSIX' file in `SEE ALSO' section; put pointer to that
+ section in --posix and set -o posix descriptions
-doc/bash.1, lib/readline/doc/{readline.3,rluser.texinfo}
- - documented new behavior of insert-comment with a numeric argument
+examples/
+ - removed around 110 examples at the request of the FSF due to copyright
+ issues
- 12/13
- -----
-lib/malloc/watch.c
- - new file, implements watchpoint functions
+ 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/malloc/watch.h
- - new file, define some `events' for watchpoints and extern function
- and variable declarations for watchpoint code
+ 3/9
+ ---
+include/typemax.h
+ - SIZE_MAX: define to 65535 (Posix minimum maximum) if not defined
-lib/malloc/imalloc.h
- - #define MALLOC_WATCH if MALLOC_DEBUG is defined
- - add __P define as in include/stdc.h if not already defined
+parse.y
+ - include "typemax.h" for possible SIZE_MAX definition, make sure we
+ include it after shell.h
-lib/malloc/malloc.c
- - remove __P define, now in imalloc.h
- - include watch.h if MALLOC_WATCH is defined
- - added calls to _malloc_ckwatch in internal_malloc, internal_free,
- and internal_realloc
+{braces,expr}.c
+ - include "typemax.h" for possible INTMAX_MIN and INTMAX_MAX definitions
-include/stdc.h
- - augment __P define to allow prototypes if PROTOTYPES is defined
+ 3/10
+ ----
+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>
-lib/readline/rlstdc.h
- - augment PARAMS define to allow prototypes if PROTOTYPES is defined
+[bash-4.3-alpha frozen]
-lib/malloc/Makefile.in, Makefile.in
- necessary changes to include watch.c in libmalloc
+ 3/14
+ ----
+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>
-lib/readline/readline.c
- - fix rl_delete_text to make sure that the starting position is >= 0
- - _rl_init_line_state (called by readline via readline_initialize)
- now sets rl_mark to 0
- - rl_get_{next,previous}_history set rl_mark to 0 if rl_point is at
- the end of the line and rl_end otherwise in emacs mode
-
-lib/readline/kill.c
- - rl_yank_nth_arg_internal and rl_paste_clipboard now set the mark
- at point before calling rl_insert_text, like rl_yank
- - rl_kill_full_line now resets rl_mark to 0
- - rl_kill_line and rl_backward_kill_line now set rl_mark to the
- point after the kill in emacs mode
- - rl_kill_word and rl_backward_kill_word now set rl_mark to the
- point after the kill in emacs mode
- - rl_unix_word_rubout and rl_unix_line_discard now set rl_mark to
- the point after the kill in emacs mode
+ 3/18
+ ----
+configure.ac
+ - socklen_t is defined as `unsigned int' if configure can't find it
-lib/readline/search.c
- - noninc_search saves and restores the mark, since it can be changed
- while reading the search string
- - noninc_dosearch sets the mark at the end of the line, making the
- region bound the `inserted' text since rl_point is set to 0
- - rl_history_search_internal sets the mark at the end of the line,
- for the same reason
+ 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
-lib/readline/isearch.c
- - rl_search_history now saves and restores the mark
- - if no matching lines are found at all when doing an isearch, leave
- point where it was instead of moving it to the end of the line
+ 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>
- 12/17
- -----
-lib/readline/rlmbutil.h
- - new file, place for multi-byte character defines and extern
- declarations
+ 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/{bind.c,readline.c,rlprivate.h}
- - new bindable variable, `byte-oriented', tracks value of
- rl_byte_oriented variable
+subst.c
+ - skip_to_delim: handle SD_IGNOREQUOTE. no callers use it for now
-lib/readline/mbutil.c
- - new file, with multibyte char utility functions
+ 3/25
+ ----
+support/config.{guess,sub}
+ - updated to versions from autoconf-2.69
-lib/readline/{complete,display,readline,util,vi_mode}.c
- - new code for multibyte characters, derived from IBM patch
+ 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
- 12/18
- -----
-lib/sh/tmpfile.c
- - include posixtime.h for time() extern declaration
+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}
-support/bashversion.c
- - include <unistd.h> if it's available
+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/readline/{histexpand,input,isearch,search}.c
- - new code for multibyte characters, derived from IBM patch
+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
-lib/readline/readline.h
- - include rltypedefs.h
+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>
- 12/19
- -----
-lib/readline/complete.c
- - slight change to mark-directories code to avoid adding a slash if
- point is at the end of the line (rl_line_buffer[rl_point] == '\0')
- and the previous character was a slash
- - change printable_part to not return empty pathnames, which could
- happen when completing filenames and a filename with a trailing
- slash was passed as the argument. If the portion following the
- trailing slash is NULL, ignore it and look for a previous slash.
- If there's no previous slash, just return the filename argument
- - new variable, rl_completion_mark_symlink_dirs, mirrors the value
- of (user-settable with a variable) _rl_complete_mark_symlink_dirs
- but may be modified by application-specific completion functions
- when appropriate (set in rl_complete_internal and rl_menu_complete)
+ 4/4
+ ---
+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>
-lib/readline/readline.h
- - extern declaration for rl_completion_mark_symlink_dirs
+ 4/6
+ ---
+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>
-pcomplete.c
- - if one of the actions is CA_DIRECTORY, set
- rl_completion_mark_symlink_dirs to indicate that we want the
- trailing slash (might have to relax this)
+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>
-lib/readline/doc/rltech.texinfo
- - documented rl_completion_mark_symlink_dirs variable
+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>
-lib/readline/doc/rluser.texinfo, doc/bash.1
- - documented the fact that `complete -d' and `complete -o dirnames'
- force readline to append a slash to symlinks to directories
+ 4/13
+ ----
+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>
-builtins/enable.def
- - changed enable_shell_builtin to disallow enabling disabled
- builtins in a restricted shell
+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>
-doc/{bash.1,bashref.texi}
- - documented new enable behavior in restricted shells
+ 4/14
+ ----
+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
-doc/Makefile.in
- - new rule to make an `RBASH' file documenting the restrictions
- imposed by a restricted shell
+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
-expr.c
- - broke the code that evaluates variables and returns results out
- of readtok() into a new function: expr_streval()
- - expr_streval() now performs the standard unset variable error
- behavior if `set -u' has been executed and it's asked to look
- up an unset variable
- - broke the code that frees up the expression context stack into
- a new function: expr_unwind()
+ 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>
variables.c
- - fixed bind_int_variable so it handles array element assignment,
- so expressions like `b[7]++' and `b[0] = 42' work right
- - new function, get_variable_value, returns the string value of
- the SHELL_VAR * passed as an argument
- - get_string_value now calls get_variable_value with a non-null
- result from find_variable
-
- 12/20
- -----
-lib/readline/rlmbutil.h, mbutil.c
- - combined _rl_find_next_mbchar and _rl_find_next_nonzero_mbchar into
- a single function
- - combined _rl_find_prev_mbchar and _rl_find_prev_nonzero_mbchar into
- a single function
+ - bind_int_variable: make sure invisible flag is unset. Fixes problems
+ like "declare -ai a; : $(( a[4]=4 ));"
-lib/readline/{display,readline,vi_mode}.c
- - changed callers of _rl_find_next_mbchar and
- _rl_find_next_nonzero_mbchar
-
-lib/readline/{complete,display,histexpand,readline,vi_mode}.c
- - changed callers of _rl_find_prev_mbchar and
- _rl_find_prev_nonzero_mbchar
-
- 12/20
- -----
-lib/sh/mktime.c
- - new file, from glibc/gawk, compiled in if system doesn't have a
- working mktime(3)
-
-lib/sh/strftime.c
- - new file, from gawk, compiled in if system doesn't have a
- working strftime(3)
-
-lib/sh/Makefile.in, Makefile.in
- - changes for mktime.c, strftime.c
+arrayfunc.c
+ - array_variable_part: return variable even if invisible flag set,
+ callers must handle invisible vars
-configure.in
- - call AC_FUNC_MKTIME, AC_STRUCT_TM, AC_STRUCT_TIMEZONE
- - call AC_REPLACE_FUNC(strftime)
+ 4/18
+ ----
+builtins/set.def
+ - unset_builtin: if -n flag given, call unset_nameref instead of
+ unset_variable
-config.h.in
- - add defines for TM_IN_SYS_TIME, HAVE_TZSET, HAVE_TM_ZONE,
- HAVE_STRUCT_TM_TM_ZONE, HAVE_STRFTIME
+variables.c
+ - find_variable_nameref: print warning message if nameref circular
+ reference detected, return NULL and let caller deal with it
-externs.h
- - provide an extern declaration for strftime if HAVE_STRFTIME is
- not defined and NEED_STRFTIME_DECL is
+builtins/declare.def
+ - declare_builtin: only disallow global references at this point if
+ we are at the global scope
-lib/tilde/tilde.h
- - header files should not include <config.h>
+ 5/16
+ ----
+configure.ac
+ - update release status to beta
-parse.y
- - replace code in decode_prompt_string that chops up value returned
- by ctime(3) with calls to strftime -- as a result, the expansion
- of \@ has changed slightly (since it depends on the locale)
- - added new \D{format} prompt string escape; `format' is passed to
- strftime(3). Empty format is the same as `%X' (locale-specific
- representation of the current time)
- - combined cases for '\\', '\a', '\e', and '\r' in same case branch
- in decode_prompt_string
+ 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
-doc/{bash.1,bashref.texi}
- - documented new \D{format} prompt string expansion
+lib/readline/doc/rltech.texi
+ - new section with an example program illustrating the callback
+ interface. Suggested by Peng Yu <pengyu.ut@gmail.com>
-builtins/printf.def
- - use ISO C PRIdMAX instead of INTMAX_CONV
- - pass length of format modifiers to mklong instead of computing it
- with strlen()
+examples/loadables/Makefile.in
+ - remove references to `cut' and `getconf', which were removed in
+ early March
-lib/sh/{fmtulong,fmtullong}.c
- - changes from Paul Eggert to make more general
+ 5/28
+ ----
+lib/sh/pathphys.c
+ - sh_realpath: correct inverted two arguments to call to sh_makepath.
+ Report and fix from Julien Thomas <jthomas@exosec.fr>
-arrayfunc.c
- - when converting a variable to an array, make sure to unset the
- dynamic_value and assign_func members of the struct variable,
- since they're not valid anymore
+ 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>
- 12/27
- -----
-configure.in
- - use AC_HELP_STRING in AC_ARG_WITH and AC_ARG_ENABLE
- - remove AC_ARG_ENABLE for largefile, since AC_SYS_LARGEFILE adds
- one
+ 6/25
+ ----
+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>
- 1/2/2002
- --------
-{alias,bashline,execute_cmd,general,shell,subst,variables,arrayfunc}.c,general.h
- - changed some calls to strchr to calls to xstrchr for multibyte
- characters
+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
-include/shmbutil.h
- - add extern declaration for xstrchr to avoid including externs.h
- where it's not appropriate
+ 6/27
+ ----
+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
-{braces,make_cmd,pathexp,subst,arrayfunc}.c, lib/sh/xstrchr.c
- - include shmbutil.h
+ 6/29
+ ----
+lib/glob/smatch.c
+ - glob_asciiranges: initialize to value of GLOBASCII_DEFAULT instead
+ of 0 (0 if not defined)
-{stringlib,subst}.c, {externs,subst}.h
- - moved substring() from subst.c to stringlib.c, moved declaration
- from subst.h to externs.h
+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
-lib/sh/xmbsrtowcs.c
- - new file, replacement function for mbsrtowcs
+doc/bashref.texi
+ - document new --enable-glob-asciiranges-default configure option
-lib/sh/Makefile.in
- - add entries for xmbsrtowcs.c
+variables.c
+ - assign_in_env: implement += value appending semantics for assignments
+ preceding command names
-Makefile.in
- - add dependencies on shmbutil.h to appropriate object files
+ 7/4
+ ---
+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>
-lib/glob/strmatch.c
- - break character-class testing out into separate function:
- is_cclass, in prep for multibyte changes
+parse.y
+ - 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
-{braces,make_cmd}.c
- - changes for multibyte characters
+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>
+
+ 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>
-builtins/printf.def
- - changes from Paul Eggert to just use intmax_t everywhere an
- int/long/quad is needed and print with "%ld" if the number
- fits in a long and %PRIdMAX otherwise
- - remove getlong, getulong, getllong, getullong, since they're
- no longer needed
- - use a new type `floatmax_t' to print floating point numbers, the
- widest-available floating point type (like `intmax_t'); new
- function `getfloatmax' that calls strtold or strtod as appropriate
- - remove getdouble, getldouble, since they're no longer needed
-
-lib/sh/fmtumax.c
- - new file, string-to-[u]intmax_t conversion, just includes
- fmtulong.c with the right defines
-
-Makefile.in, lib/sh/Makefile.in
- - additions for fmtumax.c
-
-bashtypes.h
- - include <inttypes.h> if it's available
+ 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>
-expr.c
- - arithmetic is now in intmax_t instead of long
+builtins/setattr.def
+ - show_func_attributes: display definition (if NODEFS argument is 0) and
+ attributes for a particular function; used by `declare -fp name'
-externs.h
- - extern declaration for fmtumax
- - change extern declarations for evalexp, itos, inttostr,
- uitos, uinttostr since they now return or use intmax_t instead
- of long
-
-{execute_cmd,general,mailcheck,subst,variables}.c, parse.y
-{array,general,subst,test,variables}.h
-lib/sh/{itos,netopen}.c
-builtins/{bashgetopt,common}.c, builtins/common.h
-builtins/{break,fc,history,jobs,let,printf,pushd,read,shift,wait}.def
- - changes for intmax_t shell arithmetic conversion
+builtins/declare.def
+ - declare_internal: call show_func_attributes if -f supplied with -p.
+ Fixes inconsistency observed by Linda Walsh <bash@tlinx.org>
-doc/{bashref.texi,bash.1}
- - documented long->intmax_t shell arithmetic conversion
+builtins/common.h
+ - new extern declaration for show_func_attributes
-sig.c
- - in initialize_terminating_signals, if we've already trapped a
- terminating signal, don't reset the signal handler for it
+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
- 1/3
- ---
-{arrayfunc,pathexp}.c, parse.y
- - changes for multibyte chars
+ 7/10
+ ----
+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>
-parse.y, lib/sh/strtrans.c
- - moved ansiexpand from parse.y to lib/sh/strtrans.c
+ 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>
-parse.y, locale.c
- - moved mk_msgstr and localeexpand from parse.y to locale.c
+ 7/13
+ ----
+doc/{bash.1,bashref.texi}
+ - slight change to add a description of `shopt -o' suggested by Bruce
+ Korb <bruce.korb@gmail.com>
-parse.y
- - new function, yy_input_name, returns name of input file from
- bash_input.name
- - broke the code that parses ((...)) constructs out of read_token
- into a new function, parse_dparen()
+ 7/19
+ ----
+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
-externs.h
- - new extern declaration for ansiexpand(), mk_msgstr(), and
- localeexpand()
+[bash-4.3-beta frozen]
-input.h
- - new extern declaration for yy_input_name()
+ 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
-{error,locale}.c
- - use yy_input_name for error and other messages
+command.h
+ - W_ASSIGNINT: new word flag; used internally for make_internal_declare
+ and set by fix_assignment_words
execute_cmd.c
- - change shell_execve to make sure that the file is executable
- before looking at the interpreter to find out why the execve()
- failed (avoids misleading error message)
+ - fix_assignment_words: set W_ASSIGNINT if compound assignment and -i
+ given as option. We don't do anything with the value yet
-lib/glob/glob.c
- - move code that matches leading `.' and skips those filenames into
- a separate function: skipname(), so there can be unibyte and
- multibyte versions of that function
-
- 1/7
- ---
subst.c
- - more changes for multibyte characters
+ - shell_expand_word_list: rework the way the option list that is
+ passed to make_internal_declare is created
-print_cmd.c
- - change semicolon() so it doesn't output a `;' immediately after a
- newline, since that results in a null command, which is a syntax
- error
-
-variables.c
- - fix indirection_level_string to turn off set -x while evaluating
- PS4
-
- 1/8
+ 8/1
---
-builtins/set.def
- - make -o options into one struct, instead of separate structs for
- option names corresponding to flags and non-flag option names.
- This has the side effect of sorting the option names in output
-
-lib/glob/glob.c
- - new function, mbskipname(), multibyte char version of skipname()
- - removed all #ifndef SHELL code, this will never be used outside
- the shell
-
-include/posixdir.h
- - move REAL_DIR_ENTRY define here from lib/glob/glob.c
-
-lib/glob/glob_loop.c
- - new file, included in glob.c for unibyte and multibyte versions of
- glob_pattern_p
- - added some forward static function declarations with prototypes
- - more changes for multibyte character handling
+doc/{bash.1,bashref.texi}
+ - minor changes to description of $! based on a report from Chris
+ Down <chris@chrisdown.name>
-lib/glob/Makefile.in
- - make glob.c depend on glob_loop.c
- - changes for xmbsrtowcs.[co]
+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>
-lib/glob/xmbsrtowcs.c
- - moved here from lib/sh, since the matching functions use it, and
- libglob.a is linked after libsh.a
+ 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>
- 1/9
+ 8/3
---
-lib/glob/smatch.c
- - new file, with strmatch (now xstrmatch) and associated functions,
- with changes for multibyte chars
+Makefile.in
+ - pcomplete.o: add dependency on $(DEFDIR)/builtext.h. Suggested by
+ Curtis Doty <curtis@greenkey.net>
+ 8/5
+ ---
lib/glob/sm_loop.c
- - new file, included by smatch.c, with `generic' versions of matching
- functions that are compiled twice: once each for single-byte and
- multibyte characters
+ - 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>
-lib/glob/strmatch.c
- - strip out everything except strmatch(), which either calls fnmatch
- (if HAVE_LIBC_FNM_EXTMATCH is defined) or xstrmatch
+ 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>
-lib/glob/collsyms.c
- - changes for multibyte chars
+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>
-lib/glob/Makefile.in, Makefile.in
- - changes for new source files
+ 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>
- 1/10
+ 8/13
----
-lib/readline/complete.c
- - new function, rl_completion_mode (rl_command_func_t *func), returns
- the appropriate value to pass to rl_complete_internal depending on
- FUNC and the value of `show-all-if-ambiguous'. This allows
- application completion functions to present the same interface as
- rl_complete
+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/readline/readline.h
- - new extern declaration for rl_completion_mode()
+ 8/16
+ ----
+trap.c
+ - _run_trap_internal: use {save,restore}_parser_state instead of
+ {save,restore}_token_state. It's more comprehensive
-lib/readline/doc/rltech.texinfo
- - documented rl_completion_mode
+ 8/23
+ ----
+doc/bash.1
+ - disown: remove repeated text. Report and fix from Thomas Hood
+ <jdthood@gmail.com>
-lib/readline/readline.[ch]
- - bumped the version number to 4.3, changing the relevant cpp defines
+ 8/25
+ ----
+lib/readline/rltty.c
+ - set_special_char: fix prototype (last arg is rl_command_func_t *)
-configure.in
- - require that an installed readline version be at least readline-4.3
+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
- - converted bash-specific completion functions to use
- rl_completion_mode instead of passing TAB unconditionally
-
-builtins/bashgetopt.c
- - the `#' option specifier now means a required numeric argument,
- not an optional one
-
-builtins/type.def
- - when converting [-]-{path,type,all} to -[pta], don't bother
- freeing and reallocating the option string; just change opt[1]
- and null opt[2]
+ - 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
-lib/sh/snprintf.c
- - support %ls/%S and %lc/%C for wide strings and characters,
- respectively, if HANDLE_MULTIBYTE is defined
-
-mailcheck.c
- - don't print a message about new mail if the file has not grown,
- even if the access time is less than the modification time
-
- 1/14
+ 8/26
----
-lib/readline/readline.c
- - new function, rl_replace_line, to replace the readline line buffer
- with the text supplied as an argument
- - new function, rl_replace_from_history, replaces readline line
- buffer with text from history entry passed as argument (undocumented,
- not in readline.h because it requires a definition of
- HIST_ENTRY for the prototype)
+pcomplete.c
+ - 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>
-lib/readline/readlne.h
- - new extern declaration for rl_replace_line
+bashline.c
+ - 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
-lib/readline/doc/rltech.texinfo
- - documented rl_replace_line
+ 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>
-lib/readline/{isearch,readline,search}.c
- - use rl_replace_line and rl_replace_from_history where appropriate
+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>
-lib/readline/readline.c
- - broke the code that sets point after moving through the history
- (_rl_history_preserve_point and _rl_history_saved_point) out
- into a separate function, _rl_history_set_point()
+lib/readline/{util.c,rldefs.h}
+ - _rl_stricmp,_rl_strnicmp: now take const char * string arguments;
+ changed prototype declarations
-lib/readline/{complete.c,rlprivate.h}
- - find_completion_word -> _rl_find_completion_word
- - free_match_list -> _rl_free_match_list
+ 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
-lib/readline/complete.c
- - postprocess_matches and _rl_free_match_list now return immediately
- if passed a null match list
+ 9/12
+ ----
+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>
-variables.c
- - new function, find_local_variable, finds a local variable by name
- at the current variable context
- - in find_variable_internal, call find_local_variable before searching
- any of the temporary environments if variable_context > 0 (meaning
- we're in a shell function). This lets a local variable
- override a variable whose value was passed in the `function
- environment'
+ 9/16
+ ----
+builtins/{caller,cd,kill,pushd,wait}.def
+ - builtin_usage(): make sure call to this sets return status to
+ EX_USAGE
- 1/15
+ 9/18
----
-variables.h, execute_cmd.c
- - declare variables describing the temporary environments in
- variables.h instead of in C files
+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
-findcmd.c, builtins/setattr.def
- - instead of calling find_tempenv_variable, use find_variable_internal
- and check whether the returned SHELL_VAR * has the tempvar
- attribute
+readline.h
+ - rl_change_environment: new extern declaration for applications
-variables.c
- - tentative change to lookup order in find_variable_internal so that
- function local variables are found before variables in
- function_env when executing a shell function
- - change make_local_variable to handle making a local variable when
- a variable with the same name already appears in one of the
- temporary environments
- - broke the body of make_var_array out into a new function:
- static char **make_env_array_from_var_list (SHELL_VAR **vars)
- - new function, make_var_array_internal, takes a hash table to look
- in and a pointer to a mapping function and returns a char **
- environment-style list
- - make_var_array now just calls make_var_array_internal
- - new mapping function, local_and_exported, returns all local variables
- in the current variable context with the export attribute set
- - new function, make_local_export_array, returns an environment-style
- char ** array of exported local variables in current context
- - change environment creation order in maybe_make_export_env to
- add variables to the environment in opposite order that
- find_variable_internal uses. This means that local variables in
- shell functions override variables with the same name in the
- function_env
- - change make_local_variable to set the initial value of the
- variable it creates to NULL to make the `is set' and `is null'
- tests that the expansion code does work right
- - change make_local_variable to inherit the value of a variable with
- the same name from the temporary enviroment
-
- 1/16
+ 9/22
----
-Makefile.in
- - link bashversion with buildversion.o instead of version.o, for
- cross-compiling. version.o is for the target system;
- buildversion.o is for the build system
+configure.ac
+ - relstatus: bumped version to bash-4.3-beta2
-error.c
- - add line numbers to internal_error() messages if the shell is
- not interactive and running a shell script or a -c command
- - report_error now prints non-zero line numbers for non-interactive
- shells
+ 9/24
+ ----
-test.c
- - test_syntax_error now calls builtin_error() instead of printing
- its own messages
+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>
-builtins/common.c
- - builtin_error now prints line numbers if a non-interactive shell
- is running a shell script or a -c command
+ 10/19
+ -----
-print_cmd.c
- - in cprintf, remove free_argp, since it's not used
+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>
-builtins/history.def
- - make `history -n' increment the number of history lines in this
- session by the number of lines read from the history file
+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>
-arrayfunc.c
- - fix array_value_internal to expand the subscript even if the
- variable is unset, so side effects produced by the arithmetic
- evaluation will take place
+ 10/20
+ -----
+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>
-lib/readline/doc/{rluser,rltech}.texinfo
- - some fixes for printing in @smallbook format from Brian
- Youmans
+doc/{bash.1,bashref.texi}
+ - document new -@ option to cd builtin
- 1/17
- ----
-jobs.h
- - new PRUNNING, PSTOPPED, PDEADPROC defines for PROCESSes, analogous
- to RUNNING, STOPPED, and DEADJOB defines for jobs
+ 10/28
+ -----
+lib/glob/{{gmisc,glob}.c,glob.h}
+ - extglob_pattern renamed to extglob_pattern_p, declared in glob.h
-jobs.c
- - use PS_RUNNING, PS_DONE, PS_STOPPED values for `running' field
- of a PROCESS
- - find_pipeline and find_job now take an additional flags argument
- that, if non-zero, means to find only running processes; changed
- all callers
- - changed calls to find_pipeline and find_job made from waitchld
- to find only running processes
- - find_pipeline takes a third argument: an int *. If it looks in
- the jobs list to find the pid, and the arg is non-null, it passes
- the job index back to the caller. Used to avoid calls to
- find_pipeline immediately followed by find_job with the same PID
+subst.c
+ - expand_word_internal: typo fix: case to fix " $@\ " bug in bash-4.2
+ had a typo (& isexp instead of &&)
-nojobs.c
- - a couple of changes to make sure that set_pid_status is never
- called with a pid argument of 0 or -1
+ 10/29
+ -----
+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>
-trap.c
- - change trap_handler to longjmp to wait_intr_buf (set by wait_builtin)
- if a signal is received for which a trap has been set during
- execution of the wait builtin (need to include builtins.h and
- builtins/builtext.h and declare some extern variables for the
- right things to check)
- - new variable to keep track of which signal caused the longjmp to
- wait_intr_buf, set by trap_handler (wait_signal_received)
+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
-builtins/wait.def
- - set the return value of wait when a longjmp(wait_intr_buf, 1) is
- done to 128 + wait_signal_received
+ 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>
-{jobs,nojobs}.c
- - set wait_signal_received to SIGINT in wait_sigint_handler before
- the longjmp(wait_intr_buf, 1)
+builtins/ulimit.def
+ - RLIMIT_NTHR: if RLIMIT_PTHREAD is not defined, but RLIMIT_NTHR is,
+ use RLIMIT_NTHR (NetBSD)
- 1/18
+ 11/5
----
-bashline.c
- - turn off rl_filename_completion_desired when completing a command
- name with a single match only if the first char of that match is
- not a `/'
- - if there are multiple identical matches for a command name in
- attempt_shell_completion, turn off rl_filename_completion_desired
- if the first char is not a `/' to avoid readline appending a
- slash if there's a directory with the same name in the current
- directory
+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>
- 1/22
+ 11/6
----
-lib/readline/complete.c
- - new variable, _rl_page_completions, to control whether we want to
- run the internal pager when listing completions (defaults to 1)
+builtins/cd.def
+ - 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>
-lib/readline/rlprivate.h
- - extern declaration for _rl_page_completions
-
-lib/readline/bind.c
- - new bindable variable, `page-completions', controls value of
- _rl_page_completions
-
-lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
- - documented `page-completions' variable
-
-Makefile.in
- - use $(INSTALL_SCRIPT) instead of $(INSTALL_PROGRAM) to install
- `bashbug'
-
-aclocal.m4
- - fix small quoting problem in RL_LIB_READLINE_VERSION macro
-
-lib/readline/terminal.c
- - fetch and save terminal's `vs' and `ve' cursor control attributes
- - fetch and save terminal's `kI' attribute (string sent by Insert)
- - new function, _rl_set_cursor, sets cursor to normal (insert mode)
- or very visible (overwrite mode)
-
-lib/readline/readline.c
- - new global variable, rl_insert_mode
- - new function to toggle overwrite mode, rl_overwrite_mode
- - each new line starts in insert mode
- - switching to vi mode or emacs mode resets to insert mode
- - reset cursor to normal before returning line
- - _rl_replace_text now returns the number of characters inserted,
- the return value from rl_insert_text
- - new function, _rl_insert_or_replace_text (const char *string, int insert),
- either inserts STRING or replaces the number of chars in STRING
- with STRING starting at rl_point, depending on value of INSERT
- - renamed rl_insert to _rl_insert_char, rl_insert just calls
- _rl_insert_char with the same arguments when in insert mode
- - new function, _rl_overwrite_char, handles self-insert in overwrite
- mode. Does multibyte chars by reading an entire multibyte character
- before entering overwrite loop
- - new function, _rl_overwrite_rubout, handles RUBOUT when in
- overwrite mode, called from rl_rubout
- - new function, _rl_rubout_char, old body of rl_rubout; rl_rubout
- calls this when not in overwrite mode
-
-lib/readline/readline.h
- - extern declarations for rl_insert_mode and rl_overwrite_mode()
-
-lib/readline/rldefs.h
- - define constants for values of rl_insert_mode
-
-lib/readline/rlprivate.h
- - extern declarations for _rl_set_cursor and _rl_set_insert_mode
- - change type of _rl_replace_text to return int
- - extern declarations for _rl_insert_char, _rl_rubout_char
-
-lib/readline/funmap.c
- - new bindable name `overwrite-mode', bound to rl_overwrite_mode
-
-lib/readline/rlconf.h
- - define CURSOR_MODE if you want the cursor to show insert or
- overwrite mode (only available if both `vs' and `ve' capabilities
- are present)
-
-lib/readline/{complete,parens,readline,search,vi_mode}.c
- - change calls to rl_insert to _rl_insert_char
-
-lib/readline/{readline,search}.c
- - change calls to rl_rubout to _rl_rubout_char to avoid overwrite
- mode problems
-
-lib/readline/vi_mode.c
- - fix rl_vi_overstrike to just call _rl_overwrite_char, which
- handles multibyte chars
-
-lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
- - document new `overwrite-mode' command
-
- 1/23
- ----
-lib/readline/readline.c
- - return 0 immediately from rl_insert_text if the string to insert
- is NULL or ""
-
-bashline.c
- - if a numeric argument is given to one of the bash-specific glob
- pattern completion functions (including TAB), append a `*' to
- the word before generating matches
- - in attempt_shell_completion, when doing glob completion, only
- set the match list to NULL if rl_completion_type == TAB and
- there is more than one completion. This permits listing completions
- with double tabs and displaying ambiguous completions
- - new function, bash_glob_complete_word, appends a `*' to the word
- to be completed and then globs it. It uses a new filename
- quoting function (bash_glob_quote_filename) to avoid quoting
- globbing characters in the filename if there are no matches or
- multiple matches
-
-lib/readline/complete.c
- - set completion_changed_buffer to 0 in rl_complete_internal if
- no matches were produced by the completion generator function
- - new variable, rl_completion_suppress_append, suppresses appending
- of rl_completion_append_character. Settable by application
- completion functions, always 0 when application completion
- functions are called (set to 0 by rl_complete_internal and
- rl_menu_complete)
- - broke the code that assigns default values to readline completion
- variables out of rl_complete_internal and rl_menu_complete into
- a new function, set_completion_defaults (int what_to_do)
-
-lib/readline/readline.h
- - extern declaration for rl_completion_suppress_append
-
-lib/readline/doc/rluser.texinfo, doc/bash.1
- - documented behavior of glob-expand-word and glob-list-expansions
- when supplied a numeric argument
- - documented glob-complete-word
-
-lib/readline/doc/rltech.texinfo
- - documented rl_completion_suppress_append
-
- 1/24
- ----
-lib/readline/text.c
- - new file, text and character handling functions from readline.c
-
-lib/readline/misc.c
- - new file, miscellanous bindable functions and their supporting
- code from readline.c
-
-Makefile.in, lib/readline/Makefile.in
- - changes for text.c, misc.c
-
-lib/readline/bind.c
- - change ISKMAP case of rl_invoking_keyseqs_in_map to output
- ESC as "\M-" instead of "\e" -- it's closer to the documentation
- - change _rl_get_keyname to output ESC as \e instead of \C-[
- (it's easier to understand)
-
-pcomplete.h
- - new flag, COPT_NOSPACE
-
-builtins/complete.def
- - new `-o nospace' option for complete and compgen (though it doesn't
- really do anything for compgen, since that doesn't hand anything
- off to readline)
-
-bashline.c
- - if a programmable completion specifies COPT_NOSPACE, set
- rl_completion_suppress_append = 1
-
-lib/readline/doc/rluser.texinfo
- - documented new `-o nospace' option to complete and compgen
-
-doc/{bash.1,bashref.texi}
- - documented $'\cX' escape sequence (forgot to before)
-
- 1/28
- ----
-variables.c
- - make_new_variable now takes the HASH_TABLE * as its second
- argument; changed callers
- - new function, bind_variable_in_table, takes the HASH_TABLE * as
- its third paramter; bind_variable calls bind_variable_in_table
- with shell_variables as third argument
-
-variables.h
- - new struct var_context, variable context (per-scope -- global,
- function local, etc.)
-
-variables.[ch],builtins/common.[ch]
- - moved functions that push and pop a variable context from
- builtins/common.c to variables.c; move extern function
- declarations to variables.h
- - new function, all_local_variables
- - variable_in_context is now static, used only by all_local_variables
-
-variables.[ch],execute_cmd.c
- - push_context now takes the function name as an argument for
- future use
- - push_context takes an indication of whether or not the function is
- executing in a subshell and saves the positional parameters only
- if not in a subshell
- - new functions for managing a stack of variable contexts and
- scopes: new_var_context, dispose_var_context, push_var_context,
- pop_var_context, push_scope, pop_scope
-
-builtins/declare.def
- - call all_local_variables instead of map_over (...) in declare_internal
- - don't call make_local_variable if we're looking at functions
- ((flags_on & att_function) != 0), since it's wasted
- - make sure VAR is set to NULL if check for variable_context fails
- and we didn't just create or fetch a local variable in
- declare_internal
- - in non-function branch of declare_internal, only call find_variable
- if VAR is NULL -- if it's not null, we just created or fetched a
- local variable and don't need to do it again
-
- 1/29
- ----
-variables.[ch]
- - the temporary environments (temporary_env, builtin_env, function_env)
- are now HASH_TABLEs instead of argv-style arrays of strings (this
- is an intermediate step on the way to the new lcc-inspired symbol
- table scope structure)
- - new internal attribute for variables: att_propagate. This means
- to propagate the value out of the temporary environment up the
- (for now implicit) chain of variable scopes when the containing
- temporary environment is deleted
-
-variables.c
- - assign_in_env now adds to the HASH_TABLE temporary_env instead
- of making environment-style strings in an array of strings
- - changed the way the temporary environments are merged into the
- shell variable table to account for the new HASH_TABLE temp
- environments
- - changed the way the export environment is created due to the new
- structure of the temporary environments
- - new function, bind_variable_internal (name, value, table), binds
- NAME to have VALUE in TABLE without searching the temporary
- environments
- - removed: shell_var_from_env_string, bind_name_in_env_array
- - variable_in_context now checks the att_local attribute and makes
- sure the variable is not invisible
- - local_and_exported now makes sure the variable is not invisible
-
-execute_cmd.c
- - we no longer need to copy the temporary environment to function_env
- or builtin_env, we can simply use variable assignments
-
-{findcmd,subst,variables}.c, builtins/{declare,setattr}.def
- - since variables from the temporary environments are no longer turned
- into SHELL_VARs on the fly, don't dispose the SHELL_VAR returned
- by find_variable or find_variable_internal
- - need to savestring() the value returned by find_variable if it has
- the tempvar attribute before calling bind_variable on it, because
- bind_variable will search and bind into the temporary environments
- and will free the old value before binding the new. For temporary
- environments, these two pointers will be the same, and
- bind_tempenv_variable will end up using freed memory
-
-builtins/{declare,setattr}.def
- - set the att_propagate attribute when exporting or making readonly
- variables from the temp environment (i.e., `var=value declare -x var'
- or `var=value export var' sets the propagate attribute on the entry
- for `var' in the temporary environment HASH_TABLE)
-
-lib/readline/isearch.c
- - ^W when reading isearch string yanks the current word out of the
- current line into the search string, skipping the portion already
- matched
- - ^Y when reading isearch string yanks the rest of the current line
- into the search string, skipping the portion already matched
-
- 1/30
- ----
-{print_cmd,variables}.c
- - moved indirection_level_string() from variables.c to print_cmd.c
-
-{externs,variables}.h
- - moved extern declaration of indirection_level_string to externs.h
-
-{general,variables}.c
- - moved assignment() from variables.c to general.c
-
-{general,variables}.h
- - moved extern declaration of assignment() to general.h
-
-{externs,input}.h
- - moved extern declaration of decode_prompt_string to externs.h
-
-print_cmd.c
- - include flags.h, don't include stdc.h
-
-variables.c
- - moved some functions around to group functions better
- - changed new_shell_variable to explicitly initialize each member
- of the created struct variable instead of calling bzero()
- - make_new_variable now just calls new_shell_variable instead
- of duplicating what it does
- - removed some code in bind_function that duplicated what
- new_variable does on the newly-created SHELL_VAR
- - since there are no local function variables (functions are always
- made at the global scope), kill_all_local_variables() doesn't
- need to consider functions
-
- 1/31
- ----
-variables.c
- - sort the array of special variables
- - short-circuit the search in stupidly_hack_special_variables if
- the passed name can't be found in the rest of the array
- (that is, if name[0] < special_vars[i].name[0])
-
-lib/readline/history.c
- - unstifle_history() was returning values exactly opposite of
- the documentation
-
-lib/readline/doc/{hsuser.texinfo,history.3}
- - clarified the unstifle_history() documentation a little
-
- 2/4
- ---
-variables.c
- - in bind_variable, don't call bind_tempenv_variable after a
- find_tempenv_variable succeeds -- just change the value inline.
- There's no reason to look it up twice
- - change makunbound to only call stupidly_hack_special_variables
- if we're not unsetting a function
-
-variables.[ch]
- - new function, unbind_function, like makunbound but doesn't mess
- with previous contexts or calling stupidly_hack_special_variables
-
-builtins/set.def
- - change unset_builtin to call either unbind_func or unbind_variable
-
-builtins/getopts.def
- - call unbind_variable(name) instead of makunbound(name, shell_variables)
-
- 2/5
- ---
-lib/glob/sm_loop.c
- - use malloc instead of xmalloc in BRACKMATCH and handle failures
-
-error.c
- - add extern declaration of executing_line_number with prototype,
- since execute_cmd.h can't be included without including other
- files
-
-lib/readline/parens.c
- - include <unistd.h>
-
-lib/malloc/stats.c
- - include <unistd.h>
- - add extern declaration of malloc_free_blocks() with prototype
-
-pathexp.c
- - added some forward declarations with prototypes for static functions
-
-lib/readline/rlprivate.h
- - removed declarations of rl_untranslate_keyseq, rl_discard_argument,
- rl_stop_output, rl_alphabetic since they appear in readline.h
-
- 2/6
- ---
-{arrayfunc,execute_cmd,pcomplete,shell}.c
- - change calls to makunbound(name, shell_variables) to
- unbind_variable (name)
-
- 2/7
- ---
-builtins/getopt.c
- - don't defer incrementing of OPTIND when an invalid option is
- encountered until the next call to sh_getopt() -- what if OPTIND
- is reset before that next call? This means that OPTIND is always
- incremented to the next option to be handled when an option is
- returned, whether it's valid or not. This is what POSIX-2002
- says to do.
-
-syntax.h
- - new #define, CSUBSTOP
-
-mksyntax.c
- - add "-=?+" with value CSUBSTOP to the syntax table. These are the
- valid expansion operators OP in ${param[:]OPword}
-
-subst.c
- - use table lookup for CSUBSTOP in VALID_PARAM_EXPAND_CHAR
- - new flags for the string extraction functions: EX_NOALLOC. This
- indicates that the functions are being used only to skip over
- strings and the result won't be used, so the substring shouldn't
- be allocated, copied, and freed
- - new flag for string_extract: EX_VARNAME. This serves the same
- purpose as the old `varname' parameter. parameter_brace_expand()
- changed appropriately
- - extract_delimited_string and extract_dollar_brace_string now take
- an additional `flags' argument, which may include EX_NOALLOC
- - changed callers of extract_delimited_string and
- extract_dollar_brace_string appropriately
- - string_extract now understands EX_NOALLOC; callers changed
- - some smaller code cleanups
- - converted char_is_quoted(), unclosed_pair(), and skip_to_delim()
- to understand multibyte characters
-
- 2/11
- ----
-variables.[ch]
- - moved to a symbol organization inspired by lcc. The basic structure
- is no longer a HASH_TABLE, but a VAR_CONTEXT, which includes a hash
- table as one of its members. VAR_CONTEXTs are linked together to do
- variable scoping. One nice thing about this is that the entire
- symbol table doesn't need to be searched at function scope exit to
- remove local variables. Fixes problems with only one instance of
- builtin_env and function_env, even though it really is a stack
- - shell_variables is now a VAR_CONTEXT *, with a global_variables
- variable that points to the bottom of the stack for fast access
- - function-scope local variables (assignments specified on the command
- line before a function call) and function-local variables (declared
- with the `local' builtin) have been unified in the same variable
- context, replacing function_env
- - assignment statements preceding the `.' and `eval' builtins are now
- a separate variable scope VAR_CONTEXT, replacing builtin_env
- - temporary_env (a HASH_TABLE) is now the only separate environment
- - changes to export environment creation, variable binding, variable
- lookup, local variable propagation all changed to work with the
- new symbol table/scope structure
- - a SHELL_VAR no longer has a `prev_context' member; it's not needed
-
-execute_cmd.c
- - changes to push_context calls to include any temporary variables in
- temporary_env; pop_context takes care of propagating any temporary
- variables if necessary
- - calls to push_scope if `eval' or `.' is called with a list of
- preceding variable assignments, and pop_scope called at end of
- builtin's execution. pop_scope takes care of merging temporary
- variables into the shell environment when appropriate
-
-builtins/{setattr,declare}.def
- - changes to account for variable assignments preceding `local',
- `export', `readonly', `declare', etc. to work with the new
- variable scoping implementation
-
-shell.c
- - since shell_variables is now a VAR_CONTEXT, call
- delete_all_contexts() when the shell is reinitializing instead of
- delete_all_variables()
-
-builtins/common.c
- - new function, get_job_by_name(), used by execute_simple_command()
- for the `auto_resume' stuff and get_job_spec()
-
-builtins/common.h
- - new set of #defined constants for flags argument to
- get_job_by_name()
-
- 2/12
- ----
-command.h
- - new redirection operator: r_reading_string for `here strings'
-
-parse.y
- - new token, LESS_LESS_LESS, for new redirection `here string'
- operator: [N]<<< word
- - recognize LESS_LESS_LESS and create the appropriate redirection
-
-{dispose_cmd,copy_cmd,make_cmd,print_cmd}.c
- - recognize r_reading_string and do the right thing (dispose_redirects,
- copy_redirect, print_redirection, and make_redirection, respectively)
-
-redir.c
- - here_document_to_fd now takes the redirection operator as its
- second argument
- - new function, write_here_string, expands a here string and writes it
- to the here document file descriptor
- - here_document_to_fd calls write_here_string for r_reading_string
- operator
- - handle r_reading_string in do_redirection_internal() and
- stdin_redirection()
-
- 2/18
- ----
-doc/{bash.1,bashref.texi}
- - documented here strings
-
-{configure,Makefile}.in
- - bumped version number up to bash-2.05b and the release status
- to alpha1
-
-expr.c
- - make expr_streval understand that variables with the `invisible'
- attribute are really unset, and accessing such a variable when
- `set -u' is set should be an error
-
-variables.h
- - new accessor macros: var_isset(var) and var_isnull(var), test
- whether var->value is NULL
-
-{eval,subst,variables}.c, builtins/{declare,setattr}.def
- - be more consistent about using value_cell(var) instead of
- directly referencing var->value
- - use var_isset and var_isnull where appropriate
-
-builtins/help.def
- - augmented a couple of help strings with pointers to `info' and
- `man -k'
-
- 2/14
- ----
-variables.h
- - new macros to use when setting variable values directly instead of
- through bind_variable and its siblings
-
-{arrayfunc,variables}.c
- - use var_setarray and other lvalue macros instead of assigning to
- var->value directly
-
-builtins/setattr.def
- - change show_var_attributes to show function definitions separately
- from function attributes. This allows the output of `declare -f'
- (with other flags), `export -f', and `readonly -f' to be reused as
- shell input, instead of the old
-
- declare -f[flags] func()
- {
- foo
- }
-
- which has syntax errors. When in posix mode, `export -fp' and
- `readonly -fp' still don't print function definitions
-
- 2/16
- ----
-parse.y
- - comment out calls to discard_parser_constructs; no need to call
- empty functions
-
- 2/18
- ----
-lib/sh/memset.c
- - replacement function for memset(3)
-
-lib/sh/Makefile.in, Makefile.in
- - additions for memset.c
-
-configure.in,config.h.in
- - check for memset, define HAVE_MEMSET if found, add memset.o to
- LIBOBJS if not
-
-lib/malloc/malloc.c
- - removed zmemset(), replaced with calls to memset(3)
-
-{subst,execute_cmd,lib/sh/netopen}.c
- - replaced calls to bzero with calls to memset
-
-subst.c
- - word_split() now takes a second argument: the value of $IFS, so
- it doesn't have to look up IFS every time
- - word_list_split() now calls getifs() and passes the result to
- each call to word_split() as its second arg
- - do a quick scan for CTLNUL in remove_quoted_nulls before allocating
- new string, copying old string to it, copying over original string
- and freeing new string
-
-eval.c
- - don't bother calling dispose_used_env_vars if temporary_env is NULL
-
-execute_cmd.c
- - fix fix_assignment_words to only look up the builtin corresponding
- to the first word if one of the words in the list is marked as
- W_ASSIGNMENT
-
-hashlib.c
- - renamed hash_string to hash_bucket, which better reflects what it
- does
- - extracted the portion of hash_bucket that computes the hash out
- into a new hash_string()
- - made new body of hash_bucket into a macro HASH_BUCKET; function
- just calls the macro
- - calls to hash_bucket in this file now call HASH_BUCKET macro
- - in add_hash_item, just add a new item at the front of the appropriate
- bucket list instead of at the end
-
-hashcmd.h
- - reduced FILENAME_HASH_BUCKETS to 53 from 107
-
- 2/19
- ----
-hashlib.[ch]
- - find_hash_item, remove_hash_item, add_hash_item all take a new
- third `flags' argument
- - add_hash_item doesn't call find_hash_item if HASH_NOSRCH passed in
- flags arg
- - find_hash_item will create a new hash table entry if HASH_CREATE is
- passed in flags arg
- - new function, hash_walk, takes a pointer to a function and a table
- and calls the function for each item in the table. If the function
- returns < 0, the walk is terminated
- - fixed flush_hash_table to set table->nentries to 0 after freeing
- all entries
- - BUCKET_CONTENTS now has a new `khash' member, what key hashes to;
- set by HASH_BUCKET macro (which calls hash_string), assigned in
- find_hash_item (HASH_CREATE) and add_hash_item
- - find_hash_item and remove_hash_item check `khash' against the
- hash of the string argument before calling strcmp
-
-{alias,hashlib,hashcmd,pcomplib,variables}.c
- - changed all calls to {find,remove,add}_hash_item
-
-builtins/hash.def
- - return immediately from print_hashed_commands if there are no
- entries in the hash table (this eliminates need for `any_printed'
- variable)
- - change print_hashed_commands to use hash_walk
-
-alias.c
- - short-circuit all_aliases and map_over_aliases if
- HASH_ENTRIES(aliases) == 0
- - simplify map_over_aliases by just allocating enough room in the
- returned list for all entries in the aliases hash table, instead
- of doing the check and xrealloc
- - add_alias now calls add_hash_item with HASH_NOSRCH argument
-
-pcomplete.h
- - sh_csprint_func_t is no more; use hash_wfunc instead
-
-pcomplib.c
- - short-circuit print_all_compspecs if HASH_ENTRIES(prog_completes)
- is 0
- - print_all_compspecs now takes a `hash_wfunc *' argument
- - print_all_compspecs now just calls hash_walk
-
-builtins/complete.def
- - new function, print_compitem, takes a BUCKET_CONTENTS *, extracts
- the right info, and calls print_one_completion
-
-variables.c
- - short-circuit map_over_funcs if HASH_ENTRIES(shell_functions) == 0
- - short-circuit flatten if the passed table has no entries
- - bind_variable_internal takes a new fourth argument: `hflags',
- to pass to hash table functions
- - make_new_variable now passes HASH_NOSRCH flag to add_hash_item
- - set_if_not now calls bind_variable_internal and passes
- HASH_NOSRCH as flags argument
- - bind_function now calls add_hash_item with HASH_NOSRCH argument
- - fixed make_local_variable: old_var == 0 && was_tmpvar can never
- be true
- - if we didn't find an old variable in make_local_variable, call
- bind_variable_internal with HASH_NOSRCH argument
- - fix push_temp_var to reset variable context to 0 if binding into
- global_variables->table
-
-parse.y
- - fix to parse_compound_assignment to avoid core dumps on empty
- compound array assignments
-
-subst.c
- - getifs() is now global so read_builtin can call it
-
-subst.h
- - extern declaration for getifs()
-
- 2/20
- ----
-hashlib.c
- - changed hash_string to use a better hash function
- - changed HASH_BUCKET to use masking rather than modulus to hash a
- string to a bucket -- HASH TABLES MUST NOW BE SIZED BY POWERS
- OF TWO
-
-hashlib.h
- - DEFAULT_HASH_BUCKETS is now 64
-
-hashcmd.h
- - FILENAME_HASH_BUCKETS is now 64
-
-pcomplib.c
- - COMPLETE_HASH_BUCKETS is now 32
-
-variables.c
- - TEMPENV_HASH_BUCKETS is now 4
-
-alias.c
- - new define, ALIAS_HASH_BUCKETS, set to 16, used to size alias table
-
-hashlib.c
- - removed initialize_hash_table; folded code into make_hash_table
- - fixed copy_bucket_array to copy the `khash' member of an item
- - renamed functions to be more systematic and easier for me:
- make_hash_table -> hash_create
- hash_table_nentries -> hash_size
- copy_hash_table -> hash_copy
- find_hash_item -> hash_search
- remove_hash_item -> hash_remove
- add_hash_item -> hash_insert
- flush_hash_table -> hash_flush
- dispose_hash_table -> hash_dispose
- print_table_stats -> hash_pstats
- get_hash_bucket -> hash_items
- - changed hash_search to short-circuit if table->nentries == 0 and
- HASH_CREATE has not been passed in the flags argument
-
-{alias,variables,hashcmd,pcomplib}.c
- - renamed calls to all renamed functions from hashlib.c
-
-builtins/kill.def
- - don't drop a leading `-' in a pid argument
- - call kill_pid with an explicit third argument of 1 if the pid
- argument to kill is < -1, rather than rely on the behavior of
- kill(2)
-
- 2/21
- ----
-subst.c
- - quoted_strchr is no longer declared `inline'
- - skip_double_quoted is no longer declared `inline'
- - string_extract_double_quoted is no longer declared `inline'
-
-lib/readline/input.c
- - rl_gather_tyi is now an `int' valued function; returns the number
- of characters read (0 or 1) or -1 on error
- - if rl_gather_tyi() returns -1 to rl_read_key(), set rl_done to 1
- and return a newline; something is wrong with the input fd
-
- 2/25
- ----
-variables.[ch]
- - IFS is now a special variable
- - new special var function, sv_ifs(), called when IFS is set or unset
- - call setifs() when IFS is first set in initialize_shell_variables
- - call setifs() from make_local_variable and assign_in_env if
- appropriate
- - if assign_in_env() is called with a var assignment like `VAR=',
- make the value in the new SHELL_VAR created be "" like
- do_assignment_internal does, since certain parts of the shell use
- a NULL value as evidence that the variable is unset (though
- attributes may have been assigned)
- - if push_temp_var pushes something up to the global_variables table,
- make sure that the context is set to 0
- - new function dispose_temporary_env, called by both
- dispose_used_env_vars and merge_temporary_env with different `free
- func' function pointers; calls sv_ifs after disposing the temporary
- environment
- - push_exported_var now calls bind_variable_internal instead of
- bind_variable
- - pop_scope and pop_context now call sv_ifs
-
-subst.[ch]
- - new global variables used to keep track of IFS state, to avoid
- having to call find_variable("IFS") all the time:
-
- ifs_var the SHELL_VAR for IFS
- ifs_value ifs_var ? value_cell (ifs_var) : " \t\n"
- ifs_cmap bitmap of characters in ifs_value
- ifs_firstc first character in ifs_value
-
- - new function setifs(), sets the aforementioned ifs variables each
- time IFS is set or unset, and at nested scope exit
- - instead of calling getifs() from inside subst.c, use ifs_value
- - getifs() now just returns ifs_value
- - use ifs_firstc in string_list_dollar_star()
- - only call member() in issep() if separators is more than one char
- - don't cache a bitmap every time expand_word_internal() is called;
- use ifs_cmap instead
- - new macro, isifs(c), checks whether C is in ifs_cmap
-
-builtins/read.def
- - use issep() and isifs() macros instead of looking at $IFS directly
-
-syntax.h
- - make sure macros that access sh_syntaxtab cast the argument to
- `unsigned char' before array access
- - new macros: issyntype(c, type) and notsyntype(c, type), check
- sh_syntaxtab[c] for a particular flag value `type'
-
- 2/26
- ----
-hashlib.h
- - the `data' member of a `BUCKET_CONTENTS' is now a PTR_T
-
-{hashlib,alias,variables,hashcmd,pcomplib}.c
- - removed some casts when assigning to and using `data' member of a
- `BUCKET_CONTENTS'
-
-subst.c
- - in split_at_delims, call make_word_list instead of allocating and
- initializing a WORD_LIST * directly
-
-make_cmd.[ch]
- - add_string_to_list is now just a macro that calls make_word_list
- - make_simple_command now calls make_word_list instead of allocating
- a WORD_LIST * directly
-
- 2/27
- ----
-copy_cmd.c
- - copy_word now calls make_bare_word to allocate the copy
- - copy_word_list now calls make_word_list to allocate the copy
-
-shell.h
- - include `ocache.h' for simple object caching
- - call cmd_init() to initialize the WORD_DESC and WORD_LIST object
- caches
-
-{make,dispose}_cmd.c
- - allocate WORD_DESC * and WORD_LIST * vars from their respective
- ocaches, and return them to the cache when disposing
-
-jobs.c
- - renamed old `waiting_for_job' variable to `queue_sigchld', which
- better reflects its intent: sigchld_handler does not call waitchld
- if `queue_sigchld' is non-zero, it simply increments the count of
- waiting children
- - cleanup_dead_jobs now just sets and clears queue_sigchld instead of
- blocking and unblocking SIGCHLD; it calls waitchld at the end if
- `sigchld' is non-zero, but that's not really necessary
- - in setjstatus, only call xrealloc if `statsize' is less than the
- number of processes passed -- no reason to do it if they're the
- same
-
- 2/28
- ----
-sig.[ch]
- - reinitialize_signals is no more; initialize_signals takes an
- argument saying whether or not we are reinitializing
-
-builtins/exec.def
- - reinitialize_signals() -> initialize_signals(1)
-
-test.c
- - fix filecomp() to work right when one file has a non-positive
- timestamp and the other file does not exist
-
-doc/{bash.1,bashref.texi}
- - document what happens for test's -nt and -ot operators when one
- file operand exists and the other does not
-
-jobs.c
- - if we haven't messed with SIGTTOU, just manipulate queue_sigchld
- in notify_of_job_status instead of calling sigprocmask()
- - list_one_job now calls pretty_print_job directly instead of going
- through print_job
- - pretty_print_job now must be called with SIGCHLD blocked or held
- instead of blocking SIGCHLD itself
- - changed start_job so that it doesn't call UNBLOCK_CHILD and then
- immediately call BLOCK_CHILD again (explicitly or via last_pid()),
- call find_last_pid instead of last_pid and then UNBLOCK_CHILD
- - changed wait_for_job the same way
- - find_last_pid now takes a second argument: block; uses BLOCK_CHILD
- if `block' is 1, not otherwise. Changed existing calls:
- find_last_pid(j) -> find_last_pid(j, 0)
- last_pid(j) -> find_last_pid(j, 1)
- `last_pid()' is now gone
- - rewrote wait_for_background_pids(); it was a little strange
-
-copy_cmd.c
- - copy_if_command: don't copy null false_case commands
- - copy_simple_command: don't copy a null redirection list
-
-subst.c
- - in get_word_from_string and list_string, just check for " \t\n"
- directly rather than calling strcmp
- - in get_word_from_string and strip_trailing_ifs_whitespace, use
- isifs() instead of issep(), since they're never called with
- separators != $IFS
- - change issep() to call isifs if separators is longer than one
- character, since it's never called with anything but "", " ",
- or $IFS
-
- 3/1
- ---
-sig.h
- - enclose the BLOCK_SIGNAL macro in a do {...} while (0) loop, at it
- should have been all along
-
-lib/readline/doc/rltech.texinfo
- - document that readline defaults to stdin/stdout if rl_instream/
- rl_outstream are NULL
-
-lib/readline/terminal.c
- - if an application is using a custom redisplay function,
- rl_resize_terminal just calls rl_forced_update_display to tell
- (*rl_redisplay_func) to update the display, otherwise call
- _rl_redisplay_after_sigwinch
-
-lib/readline/readline.c
- - change readline_internal_setup() so the change to vi insertion mode
- happens even if readline_echoing_p is 0
- - don't print the prompt to rl_outstream in readline_internal_setup
- if we're not echoing and the caller has defined a custom redisplay
- function -- let the redisplay function deal with it
-
-configure.in
- - new option: --enable-mem-scramble, controls memory scrambling on
- free() (on by default; only affects use of bash malloc)
-
-config.h.in
- - new option MEMSCRAMBLE, controlled by --enable-mem-scramble
-
- 3/5
- ---
-parse.y
- - added ksh-like behavior of [...] to read_token_word: if a `[' is
- seen in an assignment context and the previous characters in the
- token form a valid identifier, parse the [...] with
- parse_matched_pair to allow spaces (and newlines) in the subscript
-
-bashline.c
- - new function bash_servicename_completion_function, for completing
- service names from /etc/services
-
-bashline.h
- - new extern declaration for bash_servicename_completion_function
-
-builtins/complete.def
- - allow new `-s/-A service' option to complete and compgen builtins
-
-pcomplete.h
- - new CA_SERVICE define, new ITEMLIST variable it_services
-
-pcomplete.c
- - add callback to bash_servicename_completion_function to generate
- list of matching service names for completion
-
-doc/bash.1,lib/readline/doc/rluser.texinfo
- - documented new `-s/-A service' option to complete and compgen
-
- 3/6
- ---
-builtins/read.def
- - change hard-coded `0' to new variable `fd' (initially 0) in
- preparation for adding `-u fd' option
-
-bashline.c
- - bash_directory_completion_hook calls expand_prompt_string instead
- of expand_string (it does the right thing). This keeps expansion
- errors from causing a longjmp, which shouldn't happen because of
- completion
- - command_subst_completion_function was augmented very slightly to
- do filename completion on a non-command-word in a command
- substitution
- - command_subst_completion_function now skips over the lcd that
- rl_completion_matches puts in matches[0] if there is more than
- one possible completion
-
- 3/7
- ---
-builtins/read.def
- - only add the unwind_protect to free `rlbuf' if `edit' is non-zero,
- since we won't be using readline otherwise
-
-lib/sh/zread.c
- - renamed zread1 -> zreadintr
-
-redir.c
- - small change to redirection_error() to make a slightly better
- guess about the invalid file descriptor if the redirection op is
- r_duplicating_input or r_duplicating_output
-
-include/stdc.h
- - new macro, SH_VA_START, to encapsulate the difference between
- stdarg va_start and varargs va_start
-
-{error,pcomplete,print_cmd}.c,builtins/common.c,lib/sh/snprintf.c
- - use SH_VA_START
-
- 3/8
- ---
-builtins/read.def
- - support for the ksh-like `-u fd' option
-
-general.c
- - new function sh_validfd(fd), returns 1 if fd is a valid open file
- descriptor
-
-general.h
- - extern decl for sh_validfd
-
-bashline.c
- - don't call posix_readline_initialize() from initialize_readline();
- sv_strict_posix() should already have taken care of it
-
- 3/11
- ----
-{error,pcomplete,print_cmd}.c, builtins/common.c
- - removed non-varargs versions of functions
-
-builtins/printf.def
- - if the string argument to %q has non-printing characters, call
- ansic_quote to quote it rather than sh_backslash_quote
-
-variables.h
- - new attribute: att_trace (and corresponding trace_p() macro).
- Functions with this attribute will inherit the DEBUG trap.
- Currently ignored for variables
-
-builtins/declare.def
- - new `-t' option to declare/typeset toggle the `att_trace' attribute
-
-builtins/setattr.def
- - check for att_trace and output `-t' flag in show_var_attributes
-
-execute_cmd.c
- - if a function is being traced (it has the `-t' attribute set),
- don't turn off the DEBUG trap when it executes
-
-doc/{bash.1,bashref.texi}
- - document the new `-t' option to declare/typeset
-
- 3/12
- ----
-execute_cmd.c
- - don't execute the debug trap in the `cm_simple:' case of
- execute_command_internal; run it in execute_simple_command so we
- get the line number information right when executing in a shell
- function
- - run a DEBUG trap before executing ((...)) arithmetic commands,
- like ksh93
- - run a DEBUG trap before executing [[...]] conditional commands,
- like ksh93
-
-eval.c
- - add a static forward declaration for alrm_catcher()
-
-general.c
- - add static forward declarations for bash_special_tilde_expansions,
- unquoted_tilde_word, initialize_group_array
-
-variables.h
- - add extern declarations for sh_get_env_value, map_over_funcs,
- local_exported_variables
-
-variables.c
- - add static forward declarations for dispose_temporary_env,
- make_func_export_array
-
-bashhist.c
- - add static forward declaration for check_history_control
-
-configure.in
- - add a call to AC_CHECK_DECLS for strcpy
-
-config.h.in
- - add placeholder for HAVE_DECL_STRCPY define, set by configure
-
-general.h
- - don't declare strcpy if HAVE_DECL_STRCPY is defined with a non-zero
- value
-
-sig.h
- - add prototype to typedef of SigHandler
-
-lib/readline/histlib.h
- - removed extern declaration of strcpy()
- - include string.h/strings.h directly in histlib.h instead of source
- files
-
-lib/readline/{histexpand,histfile,history,histsearch}.c
- - don't include string.h/strings.h now that histlib.h includes it
-
-lib/tilde/tilde.c
- - removed extern declaration of strcpy(), rely on string.h/strings.h
-
-command.h
- - four new redirection types: r_move_input, r_move_output,
- r_move_input_word, r_move_output_word, for
- [N]<&word- and [N]>&word- from ksh93
-
-print_cmd.c
- - changes to print r_move_input[_word] and r_move_output[_word]
-
-copy_cmd.c
- - changes to copy r_move_input[_word] and r_move_output[_word]
-
-dispose_cmd.c
- - changes to dispose r_move_input_word and r_move_output_word
-
-make_cmd.c
- - changes to make r_move_input[_word] and r_move_output[_word] from
- r_duplicating_{input,output}_word, which is how the new redirs
- are passed by the parser
-
-redir.c
- - changes to make r_move_input[_word] and r_move_output[_word] do
- the right thing when executed
-
-builtins/read.def
- - print an error message and return failure immediately if zread/zreadc
- return < 0
-
-doc/{bash.1,bashref.texi}
- - documented new [n]<&word- and [n]>&word- redirections
-
- 3/13
- ----
-lib/readline/isearch.c
- - enabled code to allow chars bound to rl_rubout to delete characters
- from the incremental search string
-
-shell.c
- - add `-l' invocation option to parse_shell_options; equivalent to
- `--login'
- - fixed set_login_shell to check first char of base pathname of argv0
- for `-', like other shells
- - move the check for make_login_shell after the call to
- parse_shell_options because the `-l' option might set it
-
-doc/{bash.1,bashref.texi}
- - documented new `-l' invocation option
-
-array.c
- - new function, array_shift, shifts an array left by a specified
- number of elements
- - array_walk is now compiled in by default
- - array_to_assignment_string now takes a second argument: int quoted.
- If non-zero, the result is single-quoted before being returned
- - quoted_array_assignment_string has been removed
-
-array.[ch]
- - renamed most of the array functions so that all have an array_
- prefix and are more systematically named
- - array_slice now preserves the indicies from the original array
- - change array_to_assign to use a static buffer for expanding the
- array indices, instead of malloc/free
-
-{arrayfunc,subst,variables}.c, builtins/read.def
- - changed calls to various array functions to use new names
-
-lib/sh/stringvec.c, externs.h
- - renamed all of the functions to have a strvec_ prefix and to have
- a more sensible name scheme
- - strvec_search's arguments are now supplied in reverse order, so
- the char **array is first, like the other functions
- - new function, strvec_resize, xrealloc for strvecs
-
-{alias,array,bracecomp,braces,bashline,execute_cmd,findcmd,general,pathexp,
-pcomplete,variables}.c
-lib/sh/stringlist.c
-builtins/{bind,complete,exec,getopts,pushd,set}.def
- - change calls to all functions from lib/sh/stringvec.c
- - use strvec_resize where appropriate
-
-externs.h
- - only declare dup2() if HAVE_DUP2 is undefined or DUP2_BROKEN is
- defined
-
-lib/readline/{macro,readline,util}.c, lib/readline/rlprivate.h
- - _rl_defining_kbd_macro is gone, use RL_ISSTATE(RL_STATE_MACRODEF)
-
-lib/readline/readline.h
- - new struct readline_state, encapsulates most of readline's internal
- state in case you need reentrancy or nested calls to readline()
- - extern declarations for rl_save_state, rl_restore_state
-
-lib/readline/readline.c
- - add (undocumented) int rl_save_state (struct readline_state *),
- int rl_restore_state (struct readline_state *)
-
- 3/14
- ----
-array.[ch]
- - new function, array_rshift, shifts an array right by a specified
- number of elements, optionally inserting a new element 0
-
-examples/bashdb/bashdb
- - new single-file version of bash debugger, originally modified from
- version in bash-2.04 by Gary Vaughan (the old debugger still
- appears in examples/obashdb). This version has a more gdb-like
- command set
-
-examples/bashdb/bashdb.el
- - new emacs bashdb debugger mode from Masatake YAMATO <jet@gyve.org>
-
-execute_cmd.c
- - don't make $LINENO relative to function start unless the shell is
- currently interactive -- this is what ksh93 does and what I
- believe to be the intent of POSIX.2 (this required changing some
- of the test checks because the output has changed)
- - run the debug trap for each command in an arithmetic for expression,
- like ksh93 does
-
-lib/readline/vi_mode.c
- - redid rl_vi_subst (binding func for `s' and `S') in terms of
- rl_vi_change_to: `S' == `cc' and `s' == `c '. This makes undo
- work right
-
- 3/18
- ----
-hashlib.c
- - fixed hash_walk to return if the item function returns < 0, instead
- of breaking out of the current hash chain
-
-array.c
- - fixed array_walk to return if the item function returns < 0, like
- hash_walk
-
-lib/sh/stringlist.c, externs.h
- - new function: strlist_walk, takes a stringlist and a pointer to an
- item func. Like other _walk funcs, if item func returns < 0 the
- walk is cancelled
- - new function: strlist_flush, frees items in the contained list
- with strvec_flush
- - renamed functions to have a strlist_ prefix and be more systematic
-
-pcomplib.c,pcomplete.h
- - removed redundant `progcomp_initialized' variable
- - renamed functions to have `progcomp_' or `compspec_' prefixes
- like the hash library
-
-{bashline,pcomplete}.c,builtins/complete.def
- - fixed calls to stringlist functions to use new names
- - fixed calls to functions in pcomplib.c to use new names
-
-pcomplete.c
- - made the debugging code #ifdef DEBUG -- it should be mature enough
-
-builtins/hash.def,parse.y
- - use REVERSE_LIST(x, t) instead of (t)reverse_list(x)
-
-list.c,{externs,general}.h
- - renamed the list functions to have a list_ prefix, changed callers
-
-externs.h,{execute_cmd,stringlib,subst}.c,builtins/common.c,lib/sh/stringvec.c
- - word_list_to_argv -> strvec_from_word_list
- - argv_to_word_list -> strvec_to_word_list
- - moved functions to lib/sh/stringvec.c
-
-lib/sh/stringvec.c
- - changed name of second argument to strvec_from_word_list from `copy'
- to `alloc' so the use of `copy' between strvec_from_word_list and
- strvec_to_word_list isn't as confusing
- - changed name and sense of second argument to
- strvec_to_word_list from `copy' to `alloc' for the same reason --
- now both functions agree on semantics of second argument
-
-lib/sh/stringlist.c
- - ditto for strlist_from_word_list and strlist_to_word_list
-
-subst.c
- - changed callers of strvec_to_word_list
-
- 3/19
- ----
-builtins/hash.def
- - added `-l' option to list table or individual targets in reusable
- format
- - added `-d' option to remove one or more names from the table of
- hashed commands (provides `unhash' or `unalias -t' functionality)
-
-doc/{bash.1,bashref.texi}
- - documented new `-l' and `-d' options to `hash'
-
-hashcmd.[ch]
- - renamed functions to have a `phash_' prefix and follow new naming
- convention
- - phash_remove now returns an int: 1 if command not in hash table,
- 0 if filename removed OK
-
-{findcmd,variables}.c, builtins/{hash,type}.def
- - changed callers to use new names from hashcmd.c
-
-builtins/common.[ch]
- - new function, sh_notfound(s), prints standard `not found' message
- - new function, sh_invalidid(s), prints standard `invalid identifier'
- message
- - new function, sh_restricted(s), prints standard `restricted' message
- for restricted shells
- - new function, sh_invalidnum(s), prints standard `invalid number'
- message
- - renamed bad_option to sh_invalidopt, changed to print
- `invalid option' instead of `unknown option'
- - new function, sh_invalidoptname, prints standard `invalid option
- name' for long options
- - new function, sh_badjob (s), prints standard `no such job' message
- - new function, sh_invalidsig (s), prints standard `invalid signal
- specification' message
- - new function, sh_nojobs (s), prints standard `no job control' message
- - new function, sh_needarg (s), prints standard `option requires an
- argument' message
- - new function, sh_neednumarg (s), prints standard `numeric
- argument required' message
- - new function, sh_badpid(s), prints standard `not a pid...' message
- - new function, sh_erange (s, desc) prints standard `out of range'
- message, optionally using `desc' to say what the argument is
-
-builtins/{alias,command,declare,exec,hash,type}.def
- - call sh_notfound() instead of calling builtin_error directly
-
-builtins/{declare,getopts,read,set,setattr}.def
- - call sh_invalidid() instead of calling builtin_error directly
-
-builtins/{cd,command,enable,exec,hash,source}.def
- - call sh_restricted() instead of calling builtin_error directly
-
-builtins/{printf,read,ulimit}.def, builtins/common.c
- - call sh_invalidnum instead of calling builtin_error directly
-
-builtins/{complete,declare,pushd,set}.def, builtins/bashgetopt.c
- - call sh_invalidopt instead of bad_option or builtin_error directly
-
-builtins/{complete,set,shopt}.def
- - call sh_invalidoptname instead of builtin_error directly
-
-builtins/{fg_bg,jobs,kill,wait}.def
- - call sh_badjob instead of calling builtin_error directly
-
-builtins/common.c, builtins/{kill,signal}.def
- - call sh_invalidsig instead of calling builtin_error directly
-
-builtins/{fg_bg,suspend,wait}.def
- - call sh_nojobs instead of calling builtin_error directly
-
-builtins/{common,bashgetopt}.c, builtins/{hash,kill}.def
- - call sh_neednumarg and sh_needarg where required
-
-builtins/{kill,wait}.def
- - call sh_badpid where required
-
-builtins/{break,fc,history,pushd,shift,ulimit,umask}.def
- - call sh_erange where appropriate
-
-builtins/printf.def
- - new static function, printf_erange, prints standard out-of-range
- warning message
-
-builtins/set.def
- - changed so that calls to sh_invalidopt always include the leading
- `+' or `-'
-
-builtins/shopt.def
- - changed SHOPT_ERROR macro to shopt_error function
-
-builtins/bind.def
- - regularized error messages to `bind: object: error string' like
- other error messages
-
-builtins.h
- - the `short_doc' member of a `struct builtin' is now of type
- `const char *'
- - the strings in `long_doc' array of a struct builtin are now const
-
-builtins/mkbuiltins.c
- - changes for new `const' members of struct builtin
-
- 3/20
- ----
-lib/readline/histfile.c
- - use pointers instead of indexing into buffer when reading the
- contents of the history file in read_history_range and
- history_truncate_file
-
- 3/21
- ----
-lib/readline/histfile.c
- - new file, with code to mmap the history file for reading and
- writing (depends on HAVE_MMAP, currently nothing checks for that)
-
- 3/25
- ----
-error.[ch]
- - new function, err_badarraysub(s), calls report_error with standard
- `bad array subscript' message
- - new function, err_unboundvar(s), calls report_error with standard
- `unbound variable' message
- - new function, err_readonly(s), calls report_error with standard
- `readonly variable' message
-
-{arrayfunc,subst}.c
- - call err_badarraysub where appropriate
-
-{expr,subst}.c
- - call err_unboundvar where appropriate
-
-{arrayfunc,variables}.c
- - call err_readonly where appropriate
-
-shell.c
- - changed text of bad option error messages to be the same as that
- printed for builtin errors
-
-builtins/common.c
- - changed sh_invalidopt to print the invalid option before the rest
- of the error message (required some tests to be modified)
- - new function, sh_readonly, calls builtin_error with standard
- `readonly variable' message
-
-variables.c,builtins/declare.def
- - call sh_readonly where appropriate
-
-lib/sh/stringvec.c
- - added strvec_remove (sv, s), removes S from SV and shuffles rest of
- elements down 1
-
-lib/sh/stringlist.c
- - added strlist_remove(sl, s), just calls strvec_remove on the
- component list
-
-externs.h
- - new extern declarations for strvec_remove and strlist_remove
- - fixed extern declaration for strvec_search; the arguments were
- reversed (unimportant, it's not compiled into the shell)
-
-subst.c
- - change param_expand to call quote_escapes on values retrieved when
- expanding the positional parameters
- - change parameter_brace_expand_word to quote escapes on values
- retrieved when expanding the positional parameters
- - fix parameter_brace_substring to quote escape characters on unquoted
- substrings extracted from variable values (needed to separate case
- VT_VARIABLE from VT_ARRAYMEMBER for this, since, because
- get_var_and_type calls array_value for VT_ARRAYMEMBER, we need to
- skip over quoted characters in an already-appropriately-quoted
- string to find the substring we want)
- - fix parameter_brace_substring to quote escape characters in the
- value returned by pos_params when expanding subsets of the
- positional parameters and not within double quotes (in which case
- pos_params() quotes the string for us)
- - fix parameter_brace_substring to quote escape characters in the
- value returned by array_subrange when expanding subsets of an
- array and not within double quotes (in which case
- array_subrange() quotes the string for us)
- - new function, quoted_strlen(s), does strlen(s) while skipping over
- characters quoted with CTLESC (#ifdef INCLUDE_UNUSED, since it's
- not used yet)
- - changed pos_params() so it always returns a list whose members are
- quoted strings if (quoted&(Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) != 0
-
-arrayfunc.c
- - fix array_value to consistently call quote_escapes, even when a
- non-array variable is being subscripted with element 0, in which
- case we return the variable value
-
-lib/sh/strtrans.c
- - make the for_echo parameter to ansicstr a `flags' parameter that
- has its old `for echo' meaning if flags&1 is non-zero (which is
- consistent with the old code)
- - Added code to the `flags' parameter to ansicstr so that if flags&2
- is non-zero, CTLESC and CTLNUL are escaped with CTLESC in the
- expanded string
- - change ansiexpand() to call ansicstr with a `flags' parameter of 2
-
- 3/26
- ----
-lib/readline/histfile.c
- - when reading and writing the history file, use malloc instead of
- xmalloc and handle failures gracefully, so the application doesn't
- abort if the history file or history list is too big
-
- 3/27
- ----
-arrayfunc.c
- - changed array_value_internal to take an additional `int *'
- parameter, in which is returned the type of array indexing
- performed (array[@] vs. array or array[index])
- - changed array_value and get_array_value to take a corresponding
- extra parameter and pass it to array_value_internal
- - changed array_value_internal to no longer return newly-allocated
- memory or quote CTLESC and CTLNUL in the returned string if
- `simple' array indexing (subscript not `@' or `*') is being
- performed. This makes it more like a variable lookup
-
-arrayfunc.h
- - changed prototypes for array_value and get_array_value
-
-expr.c
- - added new parameter to call to get_array_value in expr_streval
- - don't need to free memory returned by get_array_value any more
-
-subst.c
- - quote_escapes now works with multibyte characters
- - dequote_string now works with multibyte characters
- - dequote_escapes is now needed, so it's compiled in, and it
- now works with multibyte characters
- - remove_quoted_escapes now just calls dequote_escapes and copies the
- result over the argument string
- - remove_quoted_nulls now returns its char * argument, parallels
- remove_quoted_escapes
- - parameter_brace_expand_word now passes the new argument to
- array_value and quotes CTLESC and CTLNUL in the result if it's a
- `simple' array expansion by calling quote_escapes
- - get_var_and_type now returns VT_ARRAYMEMBER for references like
- ${array} where `array' is an array variable (just like ${array[0]}).
- Documented (in comment) that a VT_VARIABLE return value means that
- quote_escapes has been called at some point
- - changed callers of get_var_and_type to no longer free value if
- VT_ARRAYMEMBER is returned as type
- - changed parameter_brace_substring and parameter_brace_patsub to
- call dequote_escapes on the value from get_var_and_type if the
- type is VT_VARIABLE, since the substring and pattern substitution
- code doesn't understand CTLESC quoting
- - parameter_brace_substring no longer needs to call quoted_substring
- for the VT_ARRAYMEMBER case
- - changed parameter_brace_patsub to call quote_escapes on the result
- of pat_subst for the VT_VARIABLE and VT_ARRAYMEMBER cases, and to
- quote the returned string in the VT_ARRAYVAR and VT_POSPARAMS cases
- if the `MATCH_QUOTED' flag isn't set (if it is, the pattern
- substitution functions perform any necessary quoting)
- - quoted_substring is no longer used; it's now #ifdef INCLUDE_UNUSED
-
-lib/malloc/mstats.h
- - new member in _malstats: u_bits32_t bytesreq, the total number of
- bytes requested by the caller via calls to malloc() and realloc()
-
-lib/malloc/stats.c
- - print bytesreq member in _print_malloc_stats
- - don't print statistics for buckets for which nmal == 0 (no mallocs)
-
-lib/malloc/malloc.c
- - modified internal_malloc, internal_realloc to keep running total of
- number of bytes requested by calling application
-
-shell.c
- - sh_exit is now compiled in; exit_shell calls sh_exit
-
-error.c
- - changed fatal_error, report_error, parser_error to call sh_exit
-
- 3/28
- ----
-subst.[ch]
- - changed Q_NOQUOTE to Q_PATQUOTE; it makes the intent more clear
-
-subst.c
- - moved code from parameter_brace_expand into a new function that
- dispatches for pattern substitution: parameter_brace_remove_pattern
- - changed structure of parameter_brace_remove_pattern to be like
- parameter_brace_patsub and its ilk: call get_var_and_type to
- isolate the variable name, move the pattern isolation code out of
- the various *_remove_pattern functions into
- parameter_brace_remove_pattern and pass the results to the various
- functions, use a switch on the return value from get_var_and_type
- to decide which function to call, regularized the arguments to the
- separate pattern removal functions
- - parameter_brace_remove_pattern now properly quotes escape chars in
- the returned value
- - changed get_var_and_type to call dequote_escapes on the `value'
- parameter for case VT_VARIABLE and return the result in *valp,
- so the calling functions don't have to do it themselves; changed
- callers appropriately
- - fixed getpattern() where it broke posix compliance: if you enclose
- a pattern removal spec in double quotes, the outer double quotes
- have no effect on the pattern (POSIX.1-200x 2.6.2). This uncovered
- a bug in the test suite (!)
-
-pathexp.c
- - fixed a problem with quote_string_for_globbing where it would change
- consecutive CTLESC chars all to \ instead of changing every other
- quoted char
-
- 3/31
- ----
-lib/malloc/{malloc,stats}.c
- - moved declaration of _mstats to malloc.c so stats.o doesn't get
- linked into the shell if the stats functions aren't called
-
- 4/2
- ---
-lib/glob/smatch.c
- - introduce `XCHAR' define, which is the type of arguments passed to
- strcoll/strcmp/strlen and their wide-character equivalents, added
- appropriate casts
- - static arrays in single-byte version of rangecmp() are `char', not
- `unsigned char', so compilers don't complain about calls to strcoll
-
-lib/glob/sm_loop.c
- - casts for `XCHAR' and `XCHAR *' arguments to libc functions
- - use prototype declaration for BRACKMATCH if `PROTOTYPES' is defined
- to avoid problems with type promotion (unsigned char -> int)
-
-lib/glob/collsyms.h
- - `name' member of struct _COLLSYM is now of type `XCHAR *', since
- some compilers don't like `unsigned char *' initializers from
- constant strings
-
-[bash-2.05b-alpha1 released]
-
- 4/3
- ---
-builtins/{evalstring.c,common.h}
- - new flag for parse_and_execute, SEVAL_NOFREE, means to not free
- the argument string when finished
-
-lib/readline/text.c
- - fixed a trivial typo in _rl_insert_char when reading multibyte
- char sequences
- - replace calls to ding() with rl_ding()
-
-include/chartypes.h
- - remove SIGN_EXTEND_CHAR and TOASCII macros; they're unused
-
-make_cmd.c
- - include dispose_cmd.h for extern function declarations
-
-lib/glob/glob.c
- - include `shmbutil.h' and `xmalloc.h' for extern function declarations
-
-lib/glob/smatch.c
- - include `xmalloc.h' for extern function declarations
-
-shell.c
- - fix maybe_make_restricted to use its argument instead of global
- `shell_name'
-
-version.c
- - update copyright message to include this year
-
-lib/readline/display.c
- - fixes from Jiro SEKIBA <jir@yamato.ibm.com> to fix autowrapping
- when using multibyte characters
-
-lib/glob/sm_loop.c
- - fixed a problem in BRACKMATCH where not enough memory was allocated
- to hold a multibyte character when parsing POSIX.2 char class names
-
-support/config.{guess,sub}
- - updated via patch from Paul Eggert with latest GNU additions
-
-variables.c
- - var_lookup should use its `vcontext' argument instead of
- unconditionally using `shell_variables'
-
- 4/4
- ---
-builtins/bind.def,doc/{bash.1,bashref.texi}
- - changed the usage summary and help text to make it clear that any
- readline command that may appear in ~/.inputrc may be supplied as
- one of the non-option arguments to `bind'
-
-builtins/mkbuiltins.c
- - added support for `-H' option, which means to write long documentation
- for each builtin to a separate file in the `helpfiles' directory
-
-builtins/Makefile.in
- - new target `helpdoc', just creates long doc files in helpfiles
- directory
-
-lib/sh/zcatfd.c
- - new file, with zcatfd(int fd, int ofd, char *fn); dumps data from
- FD to OFD
-
-Makefile.in,lib/sh/Makefile.in
- - added zcatfd.c, zcatfd.o member of libsh.a
-
-builtins/evalstring.c
- - changed cat_file to call zcatfd(fd, 1, fn)
-
-builtins/{shopt,colon}.def
- - removed the $DOCNAME directive for `shopt', `true', and `false';
- just use the names
- - changed $DOCNAME for `:' to just be `colon' instead of
- `colon_builtin'
-
-builtins/reserved.def
- - added help entries for ((, [[, `for (('
-
-builtins/let.def
- - add id++, id--, ++id, --id, ** to help text
-
- 4/8
- ---
-builtins/bashgetopt.[ch]
- - changed to allow options beginning with `+', enabled by a leading
- `+' in the option string
- - new variable, list_opttype, set to `-' or `+'
-
-builtins/{common.c,{builtin,eval,exit,fg_bg,let,printf,pushd,return,source,wait}.def
- - changes to allow a `--' option for every builtin that accepts
- operands but not options, as per posix.1-2001
-
-builtins/{declare,setattr}.def
- - use internal_getopt for parsing options, now that it supports `+'
-
-builtins/set.def
- - use internal_getopt for initial option parse, now that it supports
- a leading `+'
-
-
-{configure,Makefile}.in, builtins/{Makefile.in,help.def,mkbuiltins.c}
- - support for a new configure option, ``--enable-separate-helpfiles'',
- moves the `long' help text to separate help files, installed by
- default into ${datadir}/bash, one file per builtin. Off by
- default -- it saves 47K, but it's only 47K, and it's in the text
- segment
-
-flags.c
- - build internal_getopt() option string argument from flags array at
- runtime in shell.c
-
-shell.c
- - new variable to control writing malloc stats at exit:
- malloc_trace_at_exit, 0 by default
-
-lib/malloc/malloc.c
- - heavily updated:
- o partial page allocated on first call to malloc to make
- subsequent sbrks page-aligned no longer wasted
- o begin and end range guards are now the same value: the chunk
- requested
- o coalescing code was changed to attempt to coalesce first two
- adjacent blocks on the free list; enabled by default
- o blocks of size 32 are now candidates for larger block
- splitting, since 32 is the most popular size
- o blocks of size 32 are now candidates for smaller block
- coalescing
- o the IN_BUCKET check was changed to just make sure that the
- size isn't too big for the bucket, since the `busy block'
- checking code may increase the bucket by one or more,
- meaning that the old check would fail and cause a panic when
- a chunk allocated in such a way was freed
- o bin sizes are now precomputed and looked up in an array
- rather than being computed at runtime
- o moved the _mstats declaration here to avoid the stats code
- being linked in even when no stats functions were called
- (only matters if MALLOC_DEBUG is defined)
- o malloc now keeps track of the address of the top of the heap
- and will return large chunks to the system with calls to
- sbrk with a negative argument when freeing the top chunk.
- Two thresholds: LESSCORE_FRC means to unconditionally return
- memory to the system; LESSCORE_MIN means to return memory if
- there's at least one block already on the free list
-
-lib/malloc/mstats.h
- - stats struct now keeps track of number of block coalesces by bin,
- and the number of times memory was returned to the system by bin
-
-lib/malloc/stats.c
- - trace_malloc_stats now takes a second argument: the name of the file
- to write to. The first `%p' in the template file name is replaced
- by the pid
-
- 4/9
- ---
-lib/malloc/imalloc.h
- - added some macros derived from dlmalloc and glibc malloc to inline
- memcpy and memset if the requested size is <= 32 bytes
-
-lib/malloc/malloc.c
- - use MALLOC_MEMSET instead of memset in internal_{malloc,free}
-
-include/ocache.h
- - use OC_MEMSET (variant of MALLOC_MEMSET) in ocache_free
-
-configure.in, config.h.in
- - check for getservent(), define HAVE_GETSERVENT if found
-
-bashline.c
- - punt immediately from bash_servicename_completion_function if
- HAVE_GETSERVENT is not defined (cygwin seems to not define it)
- - include "input.h" for extern save_token_state() and
- restore_token_state() declarations
- - change bash_execute_unix_command to call parse_and_execute with
- SEVAL_NOHIST flag so the command doesn't get saved on the history
- list
- - change bash_execute_unix_command to save and restore the current
- command line count and the token state (last_read_token, etc.).
- Everything else is saved by either parse_and_execute directly or
- the call it makes to push_stream(). The shell_input_line stuff
- doesn't need to be saved and restored; it's not computed until
- readline() returns
-
- 4/10
- ----
-lib/glob/glob.[ch]
- - glob_filename and glob_vector now take an additional `flags' arg
- - define GX_MARKDIRS as possible flag value for glob_filename and
- glob_vector
-
-lib/sh/snprintf.c
- - fixed some bugs with handling of `g' and `G' formats
- - make sure numtoa returns the fractional part correctly when passed 0
- - implemented thousands grouping for `'' flag character
-
-lib/sh/rename.c
- - a few changes to make it more bulletproof
-
- 4/11
- ----
-lib/glob/glob.c
- - added the couple of dozen lines of code to glob_dir_to_array to
- finish implementing GX_MARKDIRS
-
-builtins/set.def
- - changed unset builtin so that it no longer considers unsetting an
- unset variable or function to be an error
-
-lib/readline/display.c
- - fix to rl_redisplay for a problem which caused display to be messed
- up when the last line of a multi-line prompt (possibly containing
- invisible characters) was longer than the screen width
-
- 4/15
- ----
-aclocal.m4
- - use AC_DEFINE_UNQUOTED in BASH_SYS_DEFAULT_MAIL_DIR instead of
- enumerating all of the possible values and using AC_DEFINE
-
- 4/16
- ----
-Makefile.in, {builtins,support}/Makefile.in
- - new variables, CFLAGS_FOR_BUILD and CPPFLAGS_FOR_BUILD, substituted
- by `configure'
- - changed CCFLAGS_FOR_BUILD to BASE_CCFLAGS, removing $(CPPFLAGS);
- CCFLAGS and CCFLAGS_FOR_BUILD now include $(BASE_CCFLAGS) with
- (possibly) different values for CPPFLAGS and CFLAGS
- - GCC_LINT_CFLAGS now includes $(BASE_CCFLAGS) and $(CPPFLAGS)
- instead of CCFLAGS_FOR_BUILD
- - new variable, LDFLAGS_FOR_BUILD, right now equivalent to LDFLAGS
- - remove $(CPPFLAGS) from recipes for buildversion, mksignames, and
- mksyntax
-
-configure.in
- - compute and substitute CFLAGS_FOR_BUILD, CPPFLAGS_FOR_BUILD, and
- LDFLAGS_FOR_BUILD
- - changed qnx to use LOCAL_LDFLAGS and LOCAL_LIBS instead of putting
- everything in LOCAL_LDFLAGS
-
-builtins/Makefile.in
- - remove $(PROFILE_FLAGS) from recipe for building `mkbuiltins'
- - use LDFLAGS_FOR_BUILD instead of LDFLAGS in recipe for building
- `mkbuiltins'
-
-Makefile.in
- - use $(CC_FOR_BUILD) and $(CCFLAGS_FOR_BUILD) to build auxiliary
- test programs (printenv, recho, zecho)
-
-support/Makefile.in
- - use CC_FOR_BUILD and CCFLAGS_FOR_BUILD in recipe for building
- `man2html'
-
-lib/tilde/Makefile.in
- - substitute PROFILE_FLAGS, use PROFILE_FLAGS in $(CCFLAGS)
-
- 4/25
- ----
-Makefile.in, configure.in
- - moved RELSTATUS to configure.in; configure substitutes it into
- the generated Makefile
-
-lib/sh/snprintf.c
- - fix wchars() to deal with systems where MB_CUR_MAX is not a
- constant expression
-
- 5/2
- ---
-lib/sh/shquote.c
- - add `,' to list of chars that are backslash-quoted. It doesn't
- hurt normal usage and prevents filenames with commas from being
- inappropriately split by brace expansion after using
- complete-into-braces
-
- 5/6
- ---
-lib/sh/xstrchr.c
- - we only need the check of MB_CUR_MAX and the slow code for a
- few encodings, and even then only for a subset of the charset
-
-arrayfunc.c
- - some speedups for skipsubscript and multibyte chars from Bruno Haible
-
-locale.c
- - changed set_lang to call setlocale(LC_ALL, ...) if LC_ALL doesn't
- already have a value, but doesn't change any shell variables
-
-include/shmbutil.h
- - major speedups from Bruno Haible, mostly concerned with reducing
- the number of strlen(3) calls
-
-subst.c
- - change callers of macros in shmbutil.h to add extra argument as
- necessary
- - skip_single_quoted and skip_double_quoted take another argument:
- the length of the string; mostly useful when using multibyte chars
- - many speedups from precomputing string lengths at function start
- - fixed a small bug in de_backslash in the midst of rewriting for
- better efficiency
-
-{braces,make_cmd,pathexp}.c
- - change callers of macros in shmbutil.h to add extra argument as
- necessary
-
-pathexp.c
- - fix a one-too-far problem with multibyte chars in
- unquoted_glob_pattern_p
-
-braces.c
- - brace_gobbler takes a new argument, the length of the passed string
- - expand_amble takes a new argument, the length of the passed string
-
- 5/7
- ---
-subst.c
- - modified remove_quoted_nulls to eliminate the memory allocation and
- do the copy in place using the same strategy as de_backslash
-
-lib/readline/{rldefs.h,complete.c}
- - new define RL_QF_OTHER_QUOTE, so _rl_find_completion_word can note
- that it found a quoting character other than \'" that appears in
- rl_completer_quote_characters
-
- 5/9
- ---
-jobs.c
- - save and restore old value of jobs_list_frozen when calling trap
- handlers from set_job_status_and_cleanup to avoid seg faults when
- running recursive trap handlers
-
- 5/10
- ----
-builtins/common.h
- - new #defines to use for value of changed_dollar_vars (provides
- information about the caller who wants to blow away the old dollar
- variables)
-
-builtins/common.c
- - changed set_dollar_vars_changed to set changed_dollar_vars to one
- of the ARGS_* values depending on the caller and environment
-
-builtins/source.def
- - source restores the positional parameters unless the `set' builtin
- was called to specify a new set while not executing a shell function
-
- 5/13
- ----
-POSIX
- - new file, was in CWRU/POSIX.NOTES
-
-doc/{Makefile.in,Makefile}
- - changed `posix' rule to modify ../POSIX
-
-doc/mkposix
- - write to `POSIX' by default
-
-lib/sh/strtrans.c
- - when ansicstr is parsing a format string for `echo -e' (or the
- equivalent xpg_echo option is enabled), obey the POSIX-2001/SUSv3
- standard and accept 0-3 octal digits after a leading `0'
-
-doc/{bash.1,bashref.texi}
- - updated `echo' description to note that up to three octal digits
- are now accepted following `\0'
-
- 5/16
- ----
-doc/Makefile.in
- - remove the generated documentation on `make distclean' if the
- build directory and source directory are not the same
-
-Makefile.in
- - descend into `support' subdirectory on a `make clean' and
- `make distclean'
- - remove parser-built, y.tab[ch] on a `make distclean' if the build
- directory and source directory are not the same
-
-support/Makefile.in
- - support various `clean' targets and remove man2html.o and man2html
-
-{configure,Makefile}.in
- - move values for DEBUG and MALLOC_DEBUG into configure.in; on by
- default for development versions; off by default for releases
- (off for profiling, too)
-
- 5/21
- ----
-parse.y
- - modified the grammar to allow a simple_list followed by yacc_EOF
- to terminate a command. This fixes problems with things like
- a backslash-newline at the end of an `eval'd string
- - change handle_eof_input_unit() to reset the token state before
- calling prompt_again(), in case the prompt to be evaluated contains
- a command substitution
-
- 5/23
- ----
-lib/readline/vi_mode.c
- - fix `r' command (rl_vi_change_char) when HANDLE_MULTIBYTE is defined
- but MB_CUR_MAX == 1
-
- 5/24
- ----
-lib/malloc/watch.c
- - don't try to print `file' argument to _watch_warn if it's null
-
-lib/malloc/malloc.c
- - changed guard checking code in internal_{malloc,free,realloc} to
- access memory as (char *) and copy into a union instead of
- casting and dereferencing a pointer to u_bits32_t, since that
- results in unaligned accesses which will cause Sparcs to upchuck
-
- 5/30
- ----
-[bash-2.05b-beta1 released]
-
-lib/readline/text.c
- - fixed a problem with rl_transpose_chars on systems supporting
- multibyte characters with a locale that doesn't have any multibyte
- chars
-
- 6/4
- ---
-expr.c
- - fix a/=0 and a%=0 to throw evaluation errors rather than core dumps
-
-lib/readline/display.c
- - fix core dump when line wrapping a multibyte character (line
- accidentally dropped from the original patch)
-
-lib/readline/mbutil.c
- - fix reversed return value from _rl_is_mbchar_matched; fixes problem
- with backward-char-search
-
- 6/10
- ----
-lib/sh/getenv.c
- - fix getenv to not free value returned by find_tempenv_variable
- - add setenv, putenv, unsetenv for completeness
-
- 6/12
- ----
-shell.c
- - change init_noninteractive to init expand_aliases to the value of
- posixly_correct
- - don't initialize expand_aliases to posixly_correct anywhere else.
- This allows the -O expand_aliases invocation option to work correctly
-
-general.c
- - fix move_to_high_fd to not try the dup2 unless the fd loop results
- in an fd > 3; just return the passed file descriptor otherwise
- - use HIGH_FD_MAX, defined in general.h, instead of hard-coded 256
- as highest file descriptor to try
-
-subst.c
- - in process_substitute, call move_to_high_fd with `maxfd' parameter
- of -1 instead of 64, so move_to_high_fd will use its maximum
-
- 6/21
- ----
-lib/malloc/malloc.c
- - don't bother calling MALLOC_MEMSET if the requested size is 0
-
-builtins/setattr.def
- - note in short doc that export and readonly can take assignment
- statements as arguments
-
-error.c
- - new function, error_prolog(), to capture common error message
- prefix code (except for parser errors)
-
- 6/25
- ----
-aclocal.m4
- - add tests for standard-conforming declarations for putenv and
- unsetenv in system header files
-
-{configure,config.h}.in
- - call BASH_FUNC_STD_PUTENV and BASH_FUNC_STD_UNSETENV, define
- HAVE_STD_GETENV and HAVE_STD_UNSETENV, respectively, if they
- succeed
-
-lib/sh/getenv.c
- - change putenv and unsetenv to take differing prototypes in
- stdlib.h into account
-
- 6/27
- ----
-[bash-2.05b-beta2 released]
-
- 6/28
- ----
-builtins/common.c
- - fix get_job_spec so that %N works when N is the size of the jobs
- list (%8 means job 8, but the 7th member of the jobs array, so
- it's OK if N == job_slots because the function returns N-1)
-
- 7/1
- ---
-shell.c
- - turn off line editing if $EMACS is set to `t'
-
- 7/10
- ----
-builtins/set.def
- - remove mention of `-i' from long help doc, since it has no effect
-
- 7/17
- ----
-[bash-2.05b released]
-
- 7/18
- ----
-
-lib/malloc/malloc.c
- - make sure that the `free_return' label has a non-empty statement
- to branch to
-
- 7/19
- ----
-locale.c
- - only call setlocale() from set_lang() if HAVE_SETLOCALE is defined;
- otherwise just return 0
-
-lib/readline/mbutil.c
- - only try to memset `ps' in _rl_get_char_len if it's non-NULL. Ditto
- for _rl_adjust_point
-
- 7/23
- ----
-execute_cmd.c
- - fix for executing_line_number() when compiling without conditional
- commands, dparen arithmetic or the arithmetic for command
-
-
- 7/24
- ----
-support/Makefile.in
- - fix maintainer-clean, distclean, mostlyclean targets
-
-builtins/common.c
- - fix bug in sh_nojobs where it doesn't pass the right number of args
- to builtin_error
-
-bashline.c
- - when using command completion and trying to avoid appending a slash
- if there's a directory with the same name in the current directory,
- use absolute_pathname() instead of just checking whether the first
- char of the match is a slash to catch things like ./ and ../
-
-examples/complete/bashcc-1.0.1.tar.gz
- - a package of completions for Clear Case, from Richard S. Smith
- (http://www.rssnet.org/bashcc.html)
-
-input.c
- - fix check_bash_input to call sync_buffered_stream if the passed fd
- is 0 and the shell is currently reading input from fd 0 -- all it
- should cost is maybe an additional read system call, and it fixes
- the bug where an input redirection to a builtin inside a script
- which is being read from stdin causes the already-read-and-buffered
- part of the script to be thrown away, e.g.:
-
- bash < x1
-
- where x1 is
-
- hostname
- read Input < t.in
- echo $Input
- echo xxx
-
-execute_cmd.c
- - in initialize_subshell(), call unset_bash_input (0) to not mess with
- fd 0 if that's where bash thinks it's reading input from. Fixes
- bug reported by jg@cs.tu-berlin.de on 17 July 2002. Should be a way
- to check whether or not the current fd 0 at the time of the call has
- not been redirected, like in the bug report. Also might eventually
- want to throw in a sync_buffered_stream if bash is reading input
- from fd 0 in a non-interactive shell into a buffered stream, so the
- stream is sync'd -- might be necessary for some uses
-
- 7/25
- ----
-lib/readline/signals.c
- - make sure rl_catch_sigwinch is declared even if SIGWINCH is not
- defined, so the readline state saving and restoring functions in
- readline.c are always the same size even if SIGWINCH is not defined,
- and undefined references don't occur when SIGWINCH is not defined
-
- 7/30
- ----
-bashline.c
- - augment patch from 7/24 to not disable rl_filename_completion_desired
- if the first char of the match is `~'
-
-lib/readline/bind.c
- - when creating `shadow' keymaps `bound' to ANYOTHERKEY, don't bind
- a key whose type is ISFUNC but whose function is the `fake'
- rl_do_lowercase_version (fixes debian bash bug #154123)
-
-lib/readline/readline.c
- - don't call _rl_vi_set_last from _rl_dispatch_subseq if
- key == ANYOTHERKEY (when truncated to `sizeof(char)', it will be 0,
- which strchr will find in `vi_textmod')
-
- 7/31
- ----
-lib/readline/input.c
- - fix rl_gather_tyi to only slurp up one line of available input, even
- if more than one line is available (fixes debian bash bug #144585)
-
- 8/3
- ---
-bashline.c
- - better fix for command completion problem -- test for directory
- explicitly with test_for_directory before turning off
- rl_filename_completion_desired, since that's the case we're trying
- to protect against
-
- 8/5
- ---
-include/shmbutil.h
- - fix ADVANCE_CHAR macro to advance the string pointer if mbrlen
- returns 0, indicating that the null wide character (wide string
- terminator) was found (debian bash bug #155436)
-
-lib/readline/mbutil.c
- - fix _rl_adjust_point to increment the string pointer if mbrlen
- returns 0
-
-support/shobj-conf
- - fix for the `-install_name' value in SHLIB_XLDFLAGS assignment for
- Darwin from the fink folks
-
- 8/6
- ---
-builtins/exit.def
- - broke code that runs ~/.bash_logout out into a separate function:
- bash_logout()
-
-builtins/common.h
- - extern declaration for bash_logout()
-
-eval.c
- - call bash_logout() from alrm_catcher(), so timed-out login shells
- run ~/.bash_logout before processing the exit trap
-
-lib/sh/strtrans.c
- - implemented $'\x{hexdigits}' expansion from ksh93
-
-configure.in
- - define RECYCLES_PIDS in LOCAL_CFLAGS for cygwin; don't bother to
- link with -luser32
-
-examples/loadables/strftime.c
- - new loadable builtin, interface to strftime(3)
-
- 8/7
- ---
-parse.y
- - parse_arith_cmd now takes a second argument, a flag saying whether
- or not to add double quotes to a parsed arithmetic command; changed
- callers
- - changed parse_dparen so it tells parse_arith_cmd to not add the
- double quotes and therefore doesn't need to remove them
- - change parse_dparen to add W_NOGLOB|W_NOSPLIT|W_QUOTED flags to word
- created when parsing (( ... )) arithmetic command, since the double
- quotes are no longer added
-
-make_cmd.c
- - in make_arith_for_expr, set the flags on the created word to
- W_NOGLOB|W_NOSPLIT|W_QUOTED
-
-execute_cmd.c
- - change execute_arith_command to expand the expression with
- expand_words_no_vars, like the arithmetic for command code does
- - fix execute_arith_command to handle the case where the expanded
- expression results in a NULL word without crashing
-
-tests/{arith-for,cprint}.tests
- - change expected output to account for no longer adding quotes to
- ((...)) commands
-
- 8/8
- ---
-print_cmd.c
- - take out the space after printing the `((' and before printing the
- `))' in print_arith_command, print_arith_for_command, and
- xtrace_print_arith_cmd
-
-tests/{arith-for,cprint}.tests
- - change expected output to account for no longer adding leading and
- trailing spaces when printing ((...)) and arithmetic for commands
-
- 8/17
- ----
-subst.c
- - fix issep() define to handle case where separators[0] == '\0', in
- which case it always returns false
-
-lib/readline/histexpand.c
- - fix off-by-one error in history_expand_internal when using the `g'
- modifier that causes it to skip every other match when matching a
- single character (reported by gjyun90@resl.auto.inha.ac.kr)
-
-doc/{bash.1,bashref.texi}
- - make sure that the name=word form of argument to declare/typeset,
- export, and readonly is documented in the description
-
- 8/30
- ----
-lib/readline/histexpand.c
- - make history_expand_internal understand double quotes, because
- single quotes are not special inside double quotes, according to
- our shell-like quoting conventions. We don't want unmatched
- single quotes inside double-quoted strings inhibiting history
- expansion
- - make `a' modifier equivalent to `g' modifier for compatibility with
- the BSD csh
- - add a `G' modifier that performs a given substitution once per word
- (tokenized as the shell would do it) like the BSD csh `g' modifier
-
- 8/31
- ----
-braces.c
- - when compiling for the shell, treat ${...} like \{...} instead of
- trying to peek backward when we see a `{'. This makes it easier
- to handle things like \${, which should be brace expanded because
- the $ is quoted
-
- 9/7
- ---
-aclocal.m4
- - redirect stdin from /dev/null in BASH_CHECK_DEV_FD before testing
- the readability of /dev/fd/0, so we're dealing with a known quantity
-
- 9/11
- ----
-[prayers for the victims of 9/11/01]
-
-shell.c
- - fix maybe_make_restricted to handle a restricted login shell with a
- base pathname of `-rbash' and skip over any leading `-'
-
- 9/13
- ----
-builtins/evalstring.c
- - in parse_and_execute, make sure we don't try to run unwind-protects
- back to `pe_dispose' after a longjmp back to top_level if the
- pe_dispose frame hasn't been initialized
-
-lib/readline/display.c
- - fix problem with prompt overwriting previous output when the output
- doesn't contain a newline in a multi-byte locale. This also should
- fix the problem of bash slowing down drastically on long lines when
- using a multi-byte locale, because it no longer tries to rewrite the
- entire line each time. Patch from Jiro SEKIBA <jir@yamato.ibm.com>
-
-parse.y
- - move the typedef for alias_t that is compiled in if ALIAS is not
- defined up before the prototype for push_string, since that takes
- an alias_t * parameter
-
-lib/readline/terminal.c
- - bind the termcap description's left and right arrow keys to
- rl_backward_char and rl_forward_char, respectively, instead of
- rl_forward and rl_backward (which are just there for backwards
- compatibility)
-
-aclocal.m4
- - when testing readability of /dev/stdin, redirect stdin from /dev/null
- to make sure it's a readable file
-
- 9/17
- ----
-config-bot.h
- - don't test __STDC__ when deciding whether or not to use stdarg.h;
- just use it if it's present
-
-tests/read2.sub
- - redirect from /dev/tty when using `read -t'
-
- 9/20
- ----
-builtins/history.def
- - when reading `new' entries from the history file with `history -n',
- fix increment of history_lines_this_session by taking any change
- in history_base into account
-
-lib/sh/pathphys.c
- - changes to sh_physpath to deal with pathnames that end up being
- longer than PATH_MAX without dumping core
-
-lib/readline/doc/{history.3,hsuser.texinfo},doc/ bash.1
- - documented new `a' and `G' history modifiers
-
- 9/25
- ----
-lib/readline/misc.c
- - when traversing the history list with arrow keys in vi insertion
- mode, put the cursor at the end of the line (like in emacs mode)
-
-mksyntax.c
- - don't try to use \a and \v unless __STDC__ is defined; use the
- ascii integer equivalents otherwise
- - include "config.h" in the generated syntax.c file for a possible
- definition of `const'
-
-doc/{bash.1,bashref.texi}
- - document the meaning of a null directory in $PATH
-
- 9/26
- ----
-parse.y
- - fix set_line_mbstate to handle case where mbrlen() returns 0,
- indicating the null wide character
- - fix set_line_mbstate so we don't directly compare a char variable
- to EOF, since char can (and is) unsigned on some machines
-
-bashline.c
- - change bash_execute_unix_command to save a little bit more state:
- last_shell_builtin, this_shell_builtin, last_command_exit_value
-
- 9/27
- ----
-execute_cmd.c
- - tentative change to execute_simple_command to avoid freeing freed
- memory in the case where bash forks early but still ends up calling
- execute_disk_command, without passing newly-allocated memory to
- make_child. This may fix the core dumps with the linux-from-scratch
- folks
-
- 9/28
- ----
-Makefile.in,{builtins,lib/sh}/Makefile.in
- - fix up dependencies, mostly on ${BUILD_DIR}/version.h, so that
- parallel makes work with GNU and BSD makes
-
-shell.h
- - new struct to save partial parsing state when doing things like
- bash_execute_unix_command and other operations that execute
- commands while a line is being entered and parsed
-
-parse.y
- - new functions, save_parser_state() and restore_parser_state(), to
- save and restore partial parsing state
-
-bashline.c
- - change bash_execute_unix_command to call {save,restore}_parser_state
-
-builtins/jobs.def
- - change execute_list_with_replacements to eliminate a run_unwind_frame
- in favor of calling the cleanup explicitly and discarding the frame
-
-execute_cmd.c
- - change execute_for_command to avoid a run_unwind_frame in the case
- where the loop variable is readonly or otherwise not assignable
- - change execute_select_command and execute_simple_command to use
- discard_unwind_frame by running the cleanup code explicitly, instead
- of using run_unwind_frame
- - make sure execute_select_command decreases loop_level even on error
-
- 9/30
- ----
-doc/{bash.1,bashref.texi}
- - fixed description of `unset' now that unsetting a previously-unset
- variable is no longer an error
-
- 10/3
- ----
-{configure,config.h}.in
- - augment check for strtold with additional check to detect the
- horribly broken hp/ux 11.x implementation that returns `long_double';
- defines STRTOLD_BROKEN if so
-
-builtins/printf.def
- - define floatmax_t as `double' if STRTOLD_BROKEN is defined
-
- 10/5
- ----
-lib/readline/keymaps.c
- - don't automatically bind uppercase keys to rl_do_lowercase_version
- in rl_make_bare_keymap
-
-lib/readline/readline.c
- - explicitly check for ANYOTHERKEY binding to rl_do_lowercase_version
- and dispatch to lowercase of key when a prefix is not matched
-
- 10/12
- -----
-bashline.c
- - set COMP_WORDBREAKS in enable_hostname_completion to the value
- of rl_completer_word_break_characters
-
-variables.c
- - new special variable COMP_WORDBREAKS, controls the value of
- rl_completer_word_break_characters
-
-variables.h
- - new extern declaration for sv_comp_wordbreaks()
-
-subst.c
- - change split_at_delims to behave more like shell word splitting if
- the passed value for the delimiters is NULL, indicating that the
- function is to use $IFS to split
-
-{execute_cmd,jobs,test,findcmd,input,make_cmd,redir,shell}.c
-builtins/mkbuiltins.c,builtins/{fc,history,source,umask}.def
-lib/sh/netconn.c
-lib/termcap/termcap.c
-lib/readline/histfile.c
- - make sure all inclusions of <sys/file.h> are protected by
- HAVE_SYS_FILE_H
-
-bashline.c
- - don't turn off rl_filename_completion_desired in
- attempt_shell_completion if the partial pathname contains a slash.
- This still doesn't solve the problem of partial pathname completion
- starting with a directory in the current directory without a
- leading `./'. There's no way to tell the difference between that
- and a file found in $PATH (which may contain `.') at the point that
- attempt_shell_completion acts
-
- 10/18
- -----
-locale.c
- - don't set lc_all to the default locale when LC_ALL is being unset
- - new function, reset_locale_vars(), called to recompute the correct
- locale variable values when LC_ALL is unset
- - changed set_lang to not set LC_ALL, which it never should have been
- doing in the first place, and to maintain a local variable `lang'
- corresponding to $LANG
- - change get_locale_var to use the precedence posix.2 specifies:
- LC_ALL overrides individual variables; LANG, if set, is the default
- - change set_locale_var to call get_locale_var to get the appropriate
- value for the variable being set or unset
- - call get_locale_var instead of using passed value in set_locale_var
- to get the defaulting and precedence right
-
-lib/readline/nls.c
- - new function, _rl_get_locale_var(), which does the same thing as
- locale.c:get_locale_var(), with the right precedence and defaulting,
- using sh_get_env_value to get the right bash variable values
- - if HAVE_SETLOCALE is defined, _rl_init_eightbit first calls
- _rl_get_locale_var to get the right value for LC_CTYPE, and uses
- that in the call to setlocale. If _rl_get_locale_var returns NULL,
- call setlocale() to get the current international environment, and,
- finally, if that returns null, call setlocale with a second argument
- of "" to force the implementation's `native' environment
-
-pcomplete.c
- - change gen_wordlist_completions to dequote the text before comparing
- it against the expanded word list
- - changed gen_matches_from_itemlist to do the same thing
-
-bashline.c
- - new global function, bash_dequote_word, calls bash_dequote_filename
- on the text passed. Used by the programmable completion code
-
-lib/readline/histfile.c
- - make sure that whenever read_history_range returns a non-zero value
- that it sets errno to some useful value
-
- 10/19
- -----
-variables.c
- - COMP_WORDBREAKS is now a dynamic variable, mirroring value of
- rl_completer_word_break_characters. Makes sure that the variable
- always points to dynamic memory if it's not null or the readline
- default
-
-bashline.c
- - change enable_hostname_completion to manage a dynamic value of
- rl_completer_word_break_characters, since assignments to
- COMP_WORDBREAKS can change its value unpredictably
-
-lib/readline/{complete.c,readline.h}
- - rl_completer_word_break_characters no longer has `const' attribute
-
-bashline.c
- - clean up necessary places due to rl_completer_word_break_characters
- no longer being `const'
-
-doc/{bash.1,bashref.texi}
- - document new COMP_WORDBREAKS variable
-
- 10/21
- -----
-print_cmd.c
- - fix indirection_level_string to handle the case where the decoded
- $PS4 is null without seg faulting
-
- 10/22
- -----
-builtins/shift.def
- - make sure that there is actually an argument when reporting a shift
- count that exceeds the number of positional paramters and
- shift_verbose is enabled
-
-lib/readline/rltty.c
- - change SET_SPECIAL to call a new function, set_special_char, since
- it contains a block. It's called infrequently, so the performance
- impact of making it a function should be negligible, and it helps
- debugging
-
- 10/29
- -----
-bashline.c
- - make sure the editor in VI_EDIT_COMMAND and EMACS_EDIT_COMMAND is
- quoted; it might contain spaces (e.g., `emacs -nw')
-
-aclocal.m4
- - cache ac_cv_rl_version in RL_LIB_READLINE_VERSION macro
-
-configure.in
- - change logic that sets RL_INCLUDEDIR so that it doesn't try to set
- a bogus include path if the argument to --with-installed-readline
- is `yes' -- helps with cross-compiling
-
-lib/readline/histexpand.c
- - fix history_tokenize_word so that it handles <( and >( better
-
- 10/30
- -----
-redir.c
- - fix write_here_string so it handles the case where `herestr' expands
- to NULL without seg faulting
-
- 10/31
- -----
-mailcheck.c
- - reverse logic flip from bash-2.05 that handled systems that don't
- change the atime when the mailbox is accessed; make sure the file
- is bigger before we report new mail. This is the case in the vast
- majority of cases. Reported by jim@jtan.com
-
- 11/5
- ----
-parse.y
- - change action for `for x; { list; }' and corresponding `select'
- production to use \"$@\" instead of just $@, as it is with all the
- other actions
-
- 11/9
- ----
-parse.y
- - new flag for parse_matched_pair: P_DQUOTE, indicating that the
- pair of characters being matched is between double quotes
- - parse_matched_pair now passes P_DQUOTE down to recursive calls:
- if the open char to be matched is a `"' or the passed-in flags
- include P_DQUOTE, set the local `rflags' variable to P_DQUOTE and
- pass `rflags' down to recursive calls
- - if `rflags' includes P_DQUOTE, don't try to ansiexpand $'...' or
- locale expand $"..."; consistent with other quoting constructs
-
- 11/11
- -----
-doc/{bash.1,bashref.texi}
- - explicitly note that variables referenced in arithmetic expressions
- without using `$' evaluate to 0 if they are null or unset
- - note that a null variable value evaluates to 0 when used in an
- arithmetic context, like when a variable with the `-i' attribute is
- assigned a null value
- - document the ${!prefix@} expansion as equivalent to ${!prefix*}
-
- 11/12
- -----
-doc/{bash.1,bashref.texi}
- - note that the value of an arithmetic expression is as in C
- - change the wording to note that `arithmetic evaluation' (not
- arithmetic expansion, which has a different meaning) is performed
- on the value assigned to a variable whose integer attribute is set
-
- 11/13
- -----
-execute_cmd.c
- - fix execute_disk_command so it calls exit() after printing the error
- message in a restricted shell context if the shell has already forked
- (nofork != 0 && there are no pipes)
-
- 11/19
- -----
-builtins/type.def
- - don't report on aliases unless expand_aliases is set and the parser
- is performing alias expansion; changed tests/type.tests and
- tests/type.right accordingly
-
- 11/25
- -----
-general.c
- - fix for full pathnames including drive letters on cygwin from
- Corinna (convert to posix-style paths, which the rest of the
- code handles much better)
-
-lib/readline/text.c
- - fixes to overwrite mode from jimmy@is-vn.bg:
- o in _rl_overwrite_char, do the overwrite mode self-insert
- as one group, even when overwriting more than 1 char
- o in _rl_overwrite_char, do the insert before the delete so
- that an undo positions the cursor on the character restored,
- not to the right of it
- o in _rl_overwrite_rubout, don't do rl_insert_char(' ') unless
- rl_point < rl_end. Since overwrite-mode self-insert acts as
- in insert-mode when at eol, make rubout behave like
- insert-mode rubout
-
- 11/30
- -----
-lib/readline/misc.c
- - call rl_replace_line with `1' as second parameter if we're going to
- immediately overwrite the undo list
-
-lib/readline/search.c
- - in make_history_line_current, use _rl_replace_text to make the line
- replacement an undoable operation. Affects all non-incremental
- search functions.
-
-parse.y
- - make behavior introduced on 11/9 dependent on extended_quote
- variable, controllable by extquote shopt option. Default setting is
- on for backwards compatibility
-
-builtins/shopt.def
- - new `extquote' option to control extended_quote variable
-
- 12/3
- ----
-jobs.c
- - change message printed when attempting to put a background job in
- the background with `bg' to include the job id and make the
- statement declarative
-
- 12/10
- -----
-bashhist.h
- - define explicit flag values for history_control
-
-variables.c
- - change sv_history_control to use new flag values
- - change sv_history_control to parse $HISTCONTROL as a colon-separated
- list of values for the history_control variable
-
-bashhist.c
- - change check_history_control to use new flag values and restructure
- to remove case statement
- - new function hc_erasedups(line); removes all entries matching LINE
- from the history list
- - call hc_erasedups() from check_add_history after we've determined
- that we're saving the line
-
-doc/{bash.1,bashref.texi}
- - documented new options available for $HISTCONTROL and that it can
- be a colon-separated list of history control options
-
- 12/11
- -----
-subst.c
- - fix pat_subst() to not increment `e' (pointer to the end of the
- matched portion of the string) until after we're sure we're going
- around the loop again; fixes problem with empty replacements for
- a pattern that doesn't match (bug reported by Don Coleman
- <don@coleman.org>)
-
- 12/17
- -----
-lib/readline/display.c
- - fixes to multibyte redisplay from jir@yamato.ibm.com (Jiro SEKIBA):
- o speed up calculation of first difference between old and new
- lines in the common case
- o don't try to see if we're in the middle of a multbyte char
- in update_line (we'll see how this one works out)
-
- 12/18
- -----
-doc/bashref.texi
- - make it clear that the `command-list' function definition may be
- terminated by an ampersand before the closing brace
-
- 12/28
- -----
-redir.c
- - set `expanding_redir' flag when expanding words in a redirection
-
-subst.c
- - new function, exp_jump_to_top_level(), to do any word expansion
- cleanup before a call to jump_to_top_level from within that file;
- sets expanding_redir back to 0 before jump_to_top_level
-
-variables.c
- - in find_variable(), don't call find_variable_internal with a second
- parameter of 1 if expanding_redir is non-zero
- - in find_variable_internal(), don't search the temporary env if
- subshell_environment includes SUBSHELL_FORK (indicating a simple
- command) and expanding_redir is non-zero
-
-parse.y
- - increment line_number when we read a \<newline> pair
-
-array.c
- - added array_unshift_element and array_shift_element (which just call
- array_shift and array_rshift, respectively), for bash debugger
- support
-
- 1/4/2003
- --------
-doc/{bash.1,bashref.texi}
- - note in the section describing the execution environment passed to
- children that subshells inherit shell functions marked for export
- - note in the section describing shell functions the possibility
- that exported functions may result in two entries in the environment
- with the same name
-
-parse.y
- - when pushing an alias expansion onto the pushed_string list, append
- a space to the expanded definition to make the parser's lookahead
- work without using the `mustpop' hack in shell_getc
-
- 1/8
- ---
-shell.c
- - change calls to exit() with EX_USAGE as a parameter to use
- EX_BADUSAGE instead, since EX_USAGE is defined as 258 and is
- technically out of range
-
- 1/14
- ----
-aclocal.m4
- - check for the termcap functions in libc first: if we don't have
- to link in another library, let's not do it
- - change the test for mbstate_t to use AC_TRY_COMPILE instead of
- AC_TRY_RUN
-
-doc/{bash.1,bashref.texi}
- - document that bash turns line editing off if environment variable
- EMACS is set to `t' when it starts up
-
-doc/bash.1
- - minor change to give the ftp url for the latest version of bash in
- the bug reports section
-
-lib/readline/histexpand.c
- - in get_history_event, cast a couple of `const char *' variables to
- `char *' in function call parameter lists to avoid compiler warnings
-
- 1/21
- ----
-builtins/cd.def
- - change `cd -' so it prints the current working directory after a
- successful chdir even when the shell is not interactive
-
- 1/31
- ----
-lib/readline/doc/rltech.texinfo
- - clarified exactly what is meant by the term `application-specific
- completion function', made its use consistent, and documented
- what variables are changed before such a function is called
-
-lib/readline/input.c
- - new function, _rl_pushed_input_available(), returns non-zero if
- there are characters in the input queue managed by rl_get_char
- and _rl_unget_char
-
-lib/readline/rlprivate.h
- - new extern declaration for _rl_pushed_input_available
-
-lib/readline/callback.c
- - change rl_callback_read_char to check _rl_pushed_input_available
- and loop if there's something there, so characters don't languish
- until more keyboard input is read
-
-execute_cmd.c
- - new variable, last_command_exit_signal, non-zero if
- last_command_exit_value result from wait_for was result of a signal
-
-nojobs.c
- - keep track of whether or not a given pid was killed by a signal with
- a new flag in the pid_list array
- - new function int find_termsig_by_pid(pid_t pid) to get the
- terminating signal, if any, for a particular pid
- - new function int get_termsig(WAIT status) returns the terminating
- signal corresponding to status
- - set last_command_exit_signal in wait_for and the various wait_for_xx
- functions
-
-jobs.c
- - new functions, process_exit_signal and job_exit_signal, return the
- signal that killed a given process or job, if a signal caused its
- death
- - set last_command_exit_signal in wait_for by calling job_exit_signal
- or process_exit_signal appropriately
-
-subst.c
- - don't resend SIGINT to ourselves unless last_command_exit_signal is
- SIGINT and last_command_exit_value == 128 + SIGINT. This fixes the
- $(exit 130) bug reported by Paul Jarc
-
-expr.c
- - new function, expr_bind_variable, calls bind_int_variable and
- then stupidly_hack_special_variables. This fixes the
- `let OPTIND=1' bug
-
-bashline.c
- - change history_and_alias_expand_line and shell_expand_line to call
- history_expand_line_internal so calls to pre_process_line are
- localized
- - change history_expand_line_internal and cleanup_expansion_error to
- temporarily turn off hist_verify before calling pre_process_line
- to avoid the effects described by teirllm@dms.auburn.edu
-
-parse.y
- - don't unconditionally turn off PST_ALEXPNEXT in push_string. This
- fixes the multiple alias expansion bug reported by Paul Jarc.
-
-lib/readline/vi_mode.c
- - change rl_vi_subst to push `l' instead of ` ' -- it should be
- equivalent, but this has been reported to fix a problem in multibyte
- locales
-
-lib/readline/readline.h
- - new state flag value RL_STATE_TTYCSAVED, indicates that save_tty_chars
- has been called. Since it's only used and visible internally, it's
- undocumented
-
-lib/readline/rltty.h
- - changed all of the members of _rl_tty_chars struct to `unsigned char'
-
-lib/readline/rltty.c
- - set the RL_STATE_TTYCSAVED after save_tty_chars is called
- - new function, rl_tty_unset_default_bindings(), resets bindings for
- everything rl_tty_set_default_bindings() messes with back to
- rl_insert, so rl_tty_set_default_bindings can be called again with
- possible changes
- - new function that does the bulk of the work for
- rltty_set_default_bindings: _rl_bind_tty_special_chars()
- - change prepare_terminal_settings so that it can track changes to the
- terminal special chars made by stty(1): unset the bindings with
- rl_tty_unset_default_bindings before calling save_tty_chars, and
- _rl_tty_set_default_bindings after, with the new values from
- get_tty_settings(). This implements a long-standing request, most
- recently made by Tim Waugh of Red Hat.
-
-lib/readline/readline.h
- - extern declaration for rl_tty_unset_default_bindings()
-
-lib/readline/readline.c
- - new function, reset_default_bindings, calls
- rl_tty_unset_default_bindings() to reset the terminal special chars
- back to rl_insert and then read the new ones
-
-lib/readline/doc/rltech.texinfo
- - documented rl_tty_unset_default_bindings()
-
- 2/1
- ---
-[prayers and condolences to the families of the space shuttle crew members]
-
-aclocal.m4
- - add checks for mbrtowc and mbrlen in BASH_CHECK_MULTIBYTE
- - new check, BASH_FUNC_CTYPE_NONASCII, checks whether or not the ctype
- functions handle non-ascii characters correctly
-
-config.h.in
- - add HAVE_MBRTOWC and HAVE_MBRLEN
- - add NO_MULTIBYTE_SUPPORT for new configure argument
- - add CTYPE_NON_ASCII
-
-config-bot.h, lib/readline/rlmbutil.h
- - make sure that mbrtowc, mbrlen, and wcwidth are all present before
- turning on HANDLE_MULTIBYTE
- - turn off multibyte chars if NO_MULTIBYTE_SUPPORT is defined
-
-configure.in
- - new argument --enable-multibyte (enabled by default), allows
- multibyte support to be turned off even on systems that support it
-
-lib/readline/chardefs.h
- - define NON_NEGATIVE as 1 if CTYPE_NON_ASCII is defined
-
- 2/3
- ---
-config.h.in
- - add HAVE_WCTOMB
-
-aclocal.m4
- - check for wctomb in BASH_CHECK_MULTIBYTE
-
- 2/4
- ---
-lib/readline/vi_mode.c
- - in _rl_vi_change_mbchar_case, make sure the result from wctomb()
- is NULL-terminated before trying to insert it with rl_insert_text()
-
- 2/5
- ---
-lib/readline/display.c
- - fix to update_line to avoid problems on systems with multibyte
- characters when moving between history lines when the new line
- has more glyphs but fewer bytes (twaugh@redhat.com)
-
-lib/readline/vi_mode.c
- - use wcrtomb() instead of wctomb() in _rl_vi_change_mbchar_case
-
-pcomplete.c
- - fix init_itemlist_from_varlist to handle the case where the
- `varlist' is NULL
-
-doc/{bash.1,bashref.texi}
- - clarified when a simple command may fail without the shell exiting
- when -e is set
-
- 2/13
- ----
-parse.y
- - when bash is started with --nolineediting, ignore \[ and \] when
- decoding the prompt string
-
-subst.c
- - fix remove_quoted_nulls so that a string with a CTLESC appearing
- after a CTLNUL (which was removed) does not leave characters in
- the string inappropriately
-
- 2/14
- ----
-builtins/common.h
- - new flag value for parse_and_execute(): SEVAL_RESETLINE, which
- allows the caller to specify whether or not the internal idea
- of the line number should be reset to 1
-
-builtins/evalstring.c
- - parse_and_execute() now tells push_string to reset the line
- number only if the SEVAL_RESETLINE flag is set by the caller
-
- 2/15
- ----
-builtins/evalfile.c
- - pass SEVAL_RESETLINE from _evalfile() to parse_and_execute()
-
-subst.c
- - if the shell is currently interactive, pass SEVAL_RESETLINE to
- parse_and_execute() when doing command substitution
-
-jobs.c
- - add SEVAL_RESETLINE to parse_and_execute while running SIGCHLD trap
-
-command.h
- - add `line' members to case_com, for_com, select_com
- - rearranged order of members in some of the command structs, so
- `flags' and `line' are first
- - added a `source_file' member to the function_def struct; keeps
- track of where the function was defined
-
-doc/Makefile.in
- - add some new suffix rules: .dvi.ps
-
-doc/{bash.1,bashref.texi}
- - added text to the description of the `trap' builtin tightening up
- the language describing when the ERR trap will be run
-
-error.c
- - if $BASH_SOURCE (internally-maintained) exists, use BASH_SOURCE[0]
- in get_name_for_error if the shell is not interactive
-
-array.h
- - new convenience defines: array_push and array_pop
-
-variables.c
- - change get_funcname to return this_shell_function->name only if
- arrays have not been compiled into the shell
- - change init_funcname_var to initialize FUNCNAME as an array variable
- if we have arrays
- - new function: get_self(SHELL_VAR *self), a degenerate `dynamic_value'
- function for dynamic variables
- - new function: init_dynamic_array_var(), a generic dynamic array
- variable initializer to handle the common case
- - use init_dynamic_array_var() instead of explicit init_dirstack_var()
- - use init_dynamic_array_var() instead of explicit init_groups_var()
- - new dynamic array variables: BASH_ARGC, BASH_ARGV, BASH_SOURCE,
- BASH_LINENO, initialized with init_dynamic_array_var
-
-shell.c
- - initialize BASH_LINENO, BASH_SOURCE, FUNCNAME in open_shell_script
-
-{execute_cmd,trap}.c
- - take out trap_line_number, since parse_and_execute doesn't reset the
- line number any more when running the trap commands
-
-make_cmd.c
- - augment make_function_def to get source file name and call
- bind_function_def to save the entire FUNCTION_DEF
-
-variables.c
- - new hash table: shell_function_defs, keeps table of shell function
- definitions including source file and line number info corresponding
- to shell_functions table
- - new functions: find_function_def and bind_function_def to manage
- the shell_function_defs hash table
- - new function: unbind_function_def to remove a function definition
- from the shell_function_defs table (right now uncalled)
-
-variables.h
- - extern declaration for bind_function_def, find_function_def
- - new extern declaration for unbind_function_def
-
-execute_cmd.c
- - in function prologue and epilogue, push and pop FUNCNAME,
- BASH_SOURCE, and BASH_LINENO information
-
-dispose_cmd.c
- - broke the code that disposes a FUNCTION_DEF out into two new
- functions: dispose_function_def and dispose_function_def_contents
-
-dispose_cmd.h
- - new extern declarations for dispose_function_def_contents and
- dispose_function_def
-
-copy_cmd.c
- - move body of copy_function_def (other than allocating a new
- FUNCTION_DEF) to copy_function_def_contents
- - make sure to copy the new source_file member of a function_def in
- copy_function_def_contents
- - copy_function_def is no longer static, copy_function_def_contents
- is not either
-
-command.h
- - new extern declaration for copy_function_def_contents and
- copy_function_def
-
-parse.y
- - keep a stack of line numbers where case, select, and for commands
- start, with a maximum nesting level of 128; increment when reading
- word after `for', `select' or `case' in read_token_word; decrement
- in grammar actions after parsing a complete for, arith_for, select,
- or case command
- - create for, case, arith_for, and select commands with an extra
- line number (word_lineno[word_top]) argument
-
-make_cmd.c
- - make_for_or_select, make_for_command, make_case_command, and
- make_select_command all take an extra `line_number' argument
-
-make_cmd.h
- - corresponding changes to extern declarations for those functions
-
- 2/16
- ----
-{execute_cmd,shell,variables}.c
- - follow each call to remember_args with a call to push_args or
- pop_args to manage the BASH_ARGV and BASH_ARGC arrays. Only set
- when the shell is started to run shell script or runs a shell
- function. Doesn't handle `set' or `shift' yet, nor `source'.
-
-execute_cmd.c
- - keep track of the level of subshells with a new variable, manipulated
- in execute_in_subshell
- - set currently_executing_command in execute_command_internal(),
- even if we're running a trap
- - better line number management when executing simple commands,
- conditional commands, for commands in execute_command_internal()
- and the various functions that implement the commands
- (execute_cond_command, execute_for_command, execute_etc.)
-
-variables.c
- - new dynamic variable BASH_SUBSHELL, with new get_subshell and
- assign_subshell functions to manipulate it
- - new functions push_args (WORD_LIST *list) and pop_args (void) to
- manage the BASH_ARGC and BASH_ARGV dynamic array variables
-
-variables.h
- - new extern declarations for push_args and pop_args
-
-builtins/evalfile.c
- - in _evalfile, do appropriate things to the FUNCNAME, BASH_ARGV,
- BASH_ARGC, BASH_SOURCE, and BASH_LINENO variables
-
-support/mksignames.c
- - add another fake signal for `trap'; make NSIG+2 == `RETURN'
-
-trap.c
- - _run_trap_internal now returns an int: the exit value of the command
- run as the result of the trap
- - run_debug_trap now returns an int: the exit value of the command
- run as the result of the trap
- - RETURN is a new special trap
- - new function: set_return_trap(char *command) interface for the rest
- of the shell, like set_{debug,error}_trap
- - new function: run_return_trap()
- - command substitution and other child processes don't inherit the
- return trap
-
-trap.h
- - new extern declaration for set_return_trap() and run_return_trap
- - new defines for RETURN_TRAP; increment BASH_NSIG
- - change extern declaration for run_debug_trap() since it now returns
- an int
-
-shell.c
- - new invocation long option: --debugger, turns on debugging and
- sets internal `debugging_mode' variable
-
-execute_cmd.c
- - new code to save return trap when executing a shell function, so
- shell functions don't inherit it
- - run debug trap before binding the variable and running the action
- list in a `for' command
- - run debug trap before binding the selection variable and running
- the query in a `select' command
- - run debug trap before running matcher in a `case' command
-
-builtins/set.def
- - new `set -o functrace' (set -T), causes DEBUG trap to be inherited
- by shell functions
- - new `set -o errtrace' (set -E), causes ERR trap to be inherited
- by shell functions
-
-flags.c
- - new flags -E and -T, control error_trace_mode and
- function_trace_mode respectively
-
-flags.h
- - new extern declarations for error_trace_mode and function_trace_mode
-
- 2/17
- ----
-doc/bashref.texi
- - changed the `dircategory' as per Karl Berry's suggestion
-
-doc/texinfo.tex
- - update to version of 2003/02/04 from texinfo.org
-
-support/texi2dvi
- - update to version 1.14 from texinfo-4.5 distribution
-
- 2/20
- ----
-support/config.{guess,sub}
- - update to versions of 2002/11/30
-
-lib/readline/doc/manvers.texinfo
- - renamed to version.texi to match other GNU software
- - UPDATE-MONTH variable is now `UPDATED-MONTH'
-
-lib/readline/doc/{hist,rlman,rluserman}.texinfo
- - include version.texi
-
-doc/version.texi
- - new file, with standard stuff matching other GNU distributions
-
-{doc,lib/readline/doc}/Makefile.in
- - include right stuff for `version.texi'
-
-lib/readline/doc/{rluserman,rlman,hist}.texinfo
- - use @copying and @insertcopying and @ifnottex instead of @ifinfo
- - add FDL as an appendix entitled `Copying This Manual'
-
-lib/readline/doc/{rltech,rluser,hstech,hsuser}.texi
- - changed the suffix from `texinfo' to `texi'
-
-lib/readline/doc/{rlman,rluserman}.texinfo, doc/bashref.texi
- - include rltech.texi,rluser.texi,hstech.texi, and hsuser.texi
-
-lib/readline/doc/Makefile.in,doc/Makefile.in
- - made appropriate changes for {{rl,hs}tech,{rl,hs}user}.texi
-
-lib/readline/doc/{rlman,rluserman}.texinfo
- - changed the suffix from `texinfo' to `texi'
-
-lib/readline/doc/hist.texinfo
- - renamed to history.texi
-
- 2/25
- ----
-pathnames.h.in
- - moved pathnames.h here so value of DEBUGGER_START_FILE can be
- substituted by configure
-
-aclocal.m4
- - added AM_PATH_LISPDIR for debugger
-
-configure.in
- - added some variables: `bashvers', `relstatus' to use info in more
- than one place
- - call AM_PATH_LISPDIR
- - new option: --enable-debugger, sets DEBUGGER cpp option
- - new option with AC_ARG_VAR: DEBUGGER_START_FILE
- - make `pathnames.h' a file generated by configure
-
-Makefile.in
- - add rule to create pathnames.h
-
-builtins/declare.def
- - added extra line number and source file name to `declare -F' output
- if `--debugger' is used at startup
-
-builtins/evalfile.c
- - call run_return_trap from source_file before returning the result
- from _evalfile()
-
-execute_cmd.c
- - call run_return_trap in execute_function before restoring the old
- context
-
-builtins/source.def
- - arrange to save and restore DEBUG traps when sourcing files if
- function_trace_mode (set -o functrace) is not set
-
-print_cmd.c
- - broke print_for_command, print_select_command, print_case_command
- into two functions each: one to print the `header' and one for
- the body
- - print_cond_command is no longer static
- - print_arith_command now takes a WORD_LIST *, since it doesn't
- actually do anything with the ARITH_COM it's passed except print
- the enclosed WORD_LIST
- - print_arith_command is no longer static
-
-externs.h
- - extern declarations for print_{for,select,case}_command_head,
- print_cond_command, print_arith_command
-
-{.,builtins,lib/sh}/Makefile.in
- - corrected dependencies on pathnames.h, since it's now created in
- the build directory
-
- 3/5
- ---
-lib/glob/glob.c
- - handle alloca() failing (it's supposed to return NULL)
- - use malloc() (with its attendent bookkeeping) instead of alloca()
- in glob_filename()
-
-subst.c
- - check whether shell_glob_filename returns NULL in
- glob_expand_word_list
- - change parameter_brace_expand_rhs to handle cases like
- ${a[2]:=value} by properly creating the array element instead of a
- variable named `a[2]' (reported by <opengeometry@yahoo.ca>)
-
-variables.c
- - change bind_int_variable to use valid_array_reference instead
- of looking for `['
-
-lib/readline/vi_mode.c
- - check for `a' in _rl_vi_done_inserting so the text inserted by an
- `a' command can be reinserted with a `.'
-
-lib/readline/readline.c
- - when entering vi insertion mode in readline_internal_setup(), make
- sure that _rl_vi_last_key_before_insert is set to `i' so that undo
- groups and redo work better (reported by <opengeometry@yahoo.ca>)
-
-lib/glob/sm_loop.c
- - handle ?(...) in a pattern immediately following a `*', instead of
- ignoring the `(' and treating the `?' as a single-char match, as
- long as FNM_EXTFLAG is set (reported by <anderson110@poptop.llnl.gov>)
-
-aclocal.m4
- - new test for presence of struct timezone, BASH_STRUCT_TIMEZONE
-
-config.h.in
- - add HAVE_STRUCT_TIMEZONE
-
-configure.in
- - call BASH_STRUCT_TIMEZONE
-
-execute_cmd.c
- - don't try to use `struct timezone' in calls to gettimeofday unless
- HAVE_STRUCT_TIMEZONE is defined; use (void *)NULL otherwise
-
- 3/20
- ----
-execute_cmd.c
- - new variable, the_printed_command_except_trap, saves the command
- being executed before a trap is executed, for the debugger
-
-trap.c
- - if in debugging mode, let command substitutions and other child
- processes inherit the DEBUG and ERR traps if the `functrace'
- (which is really a bad name, given this semantic) or `errtrace'
- options, respectively, have been set
-
-shell.c
- - local_pending_command renamed to command_execution_string; no longer
- static
-
-variables.c
- - new dynamic variable, BASH_COMMAND, set to the command string
- currently executing, or the one that caused a trap to execute
- (mapped to the_printed_command_except_trap)
- - new variable, BASH_EXECUTION_STRING, set to the argument to the
- -c invocation option, if the shell was started that way
-
- 3/22
- ----
-execute_cmd.c
- - changed execute_for_command, eval_arith_for_expr,
- execute_select_command, execute_arith_command, execute_cond_command,
- execute_simple_command to implement new DEBUG trap semantics
- for the debugger: if the DEBUG trap commands return a non-zero
- status and debugging_mode is non-zero, we skip the command to be
- executed
-
-trap.c
- - change run_debug_trap for the debugger: if we're in the debugger
- and the DEBUG trap returns 2 while we're in a function or sourced
- script, we force a `return'
-
-shell.c
- - new function, start_debugger(), that sources the debugger start file
- and turns the debugger on
-
-builtins/shopt.def
- - new settable option, `extdebug', turns on debugging_mode, as if
- --debugger had been supplied at invocation (but does not source
- debugger startup file)
-
-trap.c
- - make sure that run_exit_trap arranges for `returns' to come back
- there, too, so a `return' executed by an `exit' invoked within a
- shell function behaves correctly
-
-support/shobj-conf
- - change darwin/MacOS X stanza based on advice from mac os x developers
-
-lib/sh/mailstat.c
- - set the atime member of the synthesized stat struct to 0 if `cur/'
- is empty, rather than leaving it undefined
-
- 3/24
- ----
-builtins/caller.def
- - new builtin to provide a call stack for the debugger
-
-builtins/evalfile.c
- - added a second `flags' argument to source_file()
- - new flag value for flags argument to _evalfile(): FEVAL_NOPUSHARGS.
- If included in flags arg, it means to not manipulate the BASH_ARGV
- and BASH_ARGC arrays
-
-builtins/common.h
- - change prototype for source_file()
-
-builtins/source.def
- - add flag value to call to source_file(): set to 1 if we replaced
- the positional parameters
- - add call to push_args if additional arguments supplied to the
- source builtin
- - add call to pop_args in maybe_pop_dollar_vars
-
-execute_cmd.c
- - run the debug trap in execute_function so the debugger can stop
- before the first command in a function body is executed
- - modify subshell_level before executing a builtin or function in a
- subshell
- - print `for', `select', `case' command heads when set -x is enabled
-
-print_cmd.c
- - `xtrace_print_word_list' now takes an additional flags argument,
- which, if non-zero, says to print indirection_level_string()
- - new functions to print for, select, and case command heads when
- set -x is enabled
- - add spaces after `((' and before `))' in xtrace_print_arith_command
-
-externs.h
- - changed extern declaration for xtrace_print_word_list
- - new declarations for xtrace_print_{for,case,select}_command_head()
-
-subst.c
- - modify subshell_level when executing a command substitution
-
- 3/25
- ----
-execute_cmd.c
- - use `line_number' in executing_line_number instead of looking into
- the current command if it's a simple command; rearrange code to
- make this simpler to compile in and out
- - need to save and restore value of currently_executing_command around
- calls to debug trap and return trap in execute_function
-
-make_cmd.c
- - make sure make_arith_for_command() disposes the WORD_LIST * it is
- passed, since nothing else does and it's not used directly
-
- 3/28
- ----
-Makefile.in
- - fixed dependencies for `error.o' on shell.h and version.h -- makes
- parallel makes (gmake -j 4) work correctly
-
-doc/{bash.1,bashref.texi}
- - documented all new features added to support the debugger
-
- 4/1
- ---
-lib/sh/shquote.c
- - make sure CTLESC and CTLNUL characters are escaped with CTLESC
- by sh_double_quote, sh_backslash_quote and
- sh_backslash_quote_for_double_quotes
- Fixes vulnerability reported by svdb@stack.nl
-
-shell.h
- - new `pipestatus' member of sh_parser_state_t, to save and restore
- $PIPESTATUS
-
-parse.y
- - changes to save_parser_state and restore_parser_state to save and
- restore $PIPESTATUS
-
-builtins/read.def
- - add a call to word_list_remove_quoted_nulls before assigning the
- word list read from standard input to an array variable. Fixes
- bug reported by holzhey@ppprs1.phy.tu-dresden.de
-
- 4/3
- ---
-execute_cmd.c
- - in execute_null_command, if redirections are supplied, make sure
- things like 3</etc/passwd are undone immediately, since they're
- being done in the current shell
- - functions now inherit the RETURN trap only if function tracing is
- on for that function or globally
-
-lib/readline/misc.c
- - in rl_replace_from_history, don't force rl_replace_line to clear
- the undo_list, since it might point directly at an undo list
- from a history entry (to which we have no handle)
-
- 4/4
- ---
-trap.c
- - initialize RETURN_TRAP stuff appropriately in initialize_traps()
- - let command substitutions inherit the RETURN trap if we're in
- the debugger and function tracing has been enabled
-
-redir.c
- - do_redirections and do_redirection_internal now take a single
- flags argument instead of multiple boolean flags
-
-redir.h
- - new #defines for flags argument to do_redirection{s,_internal}
-
-execute_cmd.c
- - change all calls to do_redirection to use new flag values
-
-parse.y
- - new function, free_pushed_string_input(), an external interface to
- clear the pushed_string list (alias expansion)
- - new define SHOULD_PROMPT to say when it's OK to call prompt_again
- (if the shell is currently interactive and is reading input from
- the terminal or readline)
- - make sure shell_getc and read_secondary_line only call prompt_again
- if SHOULD_PROMPT evaluates to true
- - prompt_again shouldn't do anything if the shell is currently in the
- middle of expanding a multiline alias, since we won't be printing a
- prompt anyway
-
-externs.h
- - new extern declaration for free_pushed_string_input()
-
-execute_cmd.c
- - command_substitute and process_substitute now call
- free_pushed_string_input because they shouldn't deal with any
- partial alias expansion the parent shell may have started
-
- 4/5
- ---
-braces.c
- - added {x..y} brace expansion, shorthand for {x,x+1,x+2,...,y}:
- x, y can be integers or single characters; the sequence can be
- ascending or descending; increment is always 1. Beware that
- something like {a..A} can lead to non-letters.
-
- 4/7
- ---
-subst.c
- - change extract_delimited_string and extract_dollar_brace_string to
- return NULL on an expansion error when no_longjmp_on_fatal_error
- is set, so the calling functions don't assume that the expansion
- was successful (primarily the prompt expansion and completion code)
-
-doc/{bash.1,bashref.texi}
- - documented new sequence generation feature of brace expansion
-
- 4/8
- ---
-lib/sh/strstr.c
- - replacement for strstr(3), in case the C library doesn't provide it
-
-configure.in
- - check for strstr, add to LIBOBJS if not found
-
-array.c
- - array_walk now takes a third void * argument; it's passed to `func'
- as its second argument
-
-array.h
- - change sh_ae_map_func_t prototype to add void * second argument
-
- 4/10
- ----
-array.c
- - new function: array_keys_to_word_list, returns a list of indices for
- a given array
-
-array.h
- - new extern declaration for array_keys_to_word_list
-
-arrayfunc.c
-3 - new function: char *array_keys(), returns a string with keys for a
- given array, with the appropriate quoting
-
-arrayfunc.h
- - new extern declaration for array_keys
-
-subst.c
- - code to implement ksh93-like ${!array[@]} expansion (array[*] works,
- too), which expands to all the keys (indices) of ARRAY
-
-doc/{bash.1,bashref.texi}
- - documented new ${!array[@]} expansion
-
- 4/19
- ----
-builtins/setattr.def
- - remove any mention of the `-n' option from readonly builtin's short
- and long documentation
-
-pcomplib.c
- - fix progcomp_insert to increase the refcount on the `cs' argument
- before calling hash_insert -- fixes the problem of multiple calls
- to progcomp_insert with the same compspec
-
-doc/bash.1
- - add mention of characters that inhibit history expansion when found
- immediately following an unquoted `!'
-
-bashline.c
- - convert the code conditionally compiled in by the NO_FORCE_FIGNORE
- #define to something runtime-tunable with the `force_fignore'
- variable (opposite sense). force_fignore is 1 by default
-
-builtins/shopt.def
- - new tunable `shopt' option: `force_fignore', controls force_fignore
- variable and behavior of FIGNORE handling
-
-lib/readline/complete.c
- - new variable, _rl_complete_show_unmodified, causes completer to list
- possible completions if more than one completion and partial
- completion cannot be done
- - new value for what_to_do argument to rl_complete_internal, `@',
- indicating that we want the show-unmodified behavior
- - change rl_completion_type to return `@' when appropriate
-
-lib/readline/bind.c
- - new bindable variable, show-all-if-unmodified, which controls value
- of _rl_complete_show_unmodified
-
-lib/readline/rlprivate.h
- - extern declaration for _rl_complete_show_unmodified
-
-lib/readline/doc/rluser.texi
- - documented show-all-if-unmodified
-
-lib/readline/doc/rltech.texi
- - documented new `@' value for second argument to rl_complete_internal
- - documented new return value from rl_completion_type
-
- 4/22
- ----
-lib/readline/signals.c
- - in rl_set_signal, set sa_flags to SA_RESTART for SIGWINCH, if we
- have POSIX signals -- this is what most applications expect, and
- they're not prepared to deal with EINTR
-
- 4/25
- ----
-bashline.c
- - take out attempts to suppress readline filename completion when
- attempting command completion and there is a directory with the
- same name in the current directory. #if 0'd for now; maybe make
- it conditional later
-
-error.c
- - new variable, gnu_error_format, causes non-interactive errors with
- line numbers to be printed in the `gnu style' (filename:lineno:)
- instead of the `shell style' (filename: line lineno:) by
- error_prolog and parser_error
-
-version.h,support/mkversion
- - don't put extern function declarations into created version.h any
- more
-
-version.c,externs.h
- - add extern declarations for show_shell_version() and
- shell_version_string(), since they're no longer in version.h
- (this backs out change from 9/10/2001)
-
-shell.h
- - don't include version.h
-
-Makefile.in
- - remove unneeded dependencies on version.h -- only version.o
- needs it now
-
-builtins/shopt.def
- - new option `gnu_errfmt', changes error messages with line numbers
- to use the `standard' gnu format
-
-pcomplete.h
- - new COPT_BASHDEFAULT and COPT_PLUSDIRS defines
-
-bashline.c
- - if the COPT_BASHDEFAULT flag is set, try the rest of the bash
- default completions if a compspec with that flag set generates
- no matches
- - broke bash completions out into separate function:
- bash_default_completion(const char *text, int start, int end,
- int qc, int in_command_position); change attempt_shell_completion
- to call it
-
-bashline.h
- - new extern declaration for bash_default_completion
-
-builtins/complete.def
- - added code to compgen to call bash_default_completion if a compspec
- with the COPT_BASHDEFAULT flag set generates no matches from the
- programmable completion options
-
-doc/{bash.1,bashref.texi}
- - document new `gnu_errfmt' shopt option
-
-doc/bash.1,lib/readline/doc/rluser.texi
- - document new `-o bashdefault' option to complete and compgen
-
- 4/26
- ----
-pcomplete.c
- - if a compspec has the COPT_PLUSDIRS flag set, generate any
- directory name completions and add them to the set of possible
- completions as the last thing in gen_compspec_completions
-
-builtins/complete.def
- - add new `-o plusdirs' option to complete and compgen; means to
- do directory name completion in addition to other actions
- specified by the compspec, and do it last
-
- 5/12
- ----
-copy_cmd.c
- - fix copy_{for,select,case}_command to copy the line member
-
- 5/13
- ----
-lib/readline/rlmbutil.h,include/shmbutil.h
- - new #define MB_INVALIDCH, evaluates to true if return value from
- mbrtowc or mbrlen denotes an invalid multibyte character
- - new #define MB_NULLWCH, evaluates to true if return value from
- mbrtowc or mbrlen denotes a null multibyte character
-
-lib/readline/complete.c
- - new function, fnwidth(), returns printed length of a filename,
- correctly handling multibyte characters
- - new function, fnprint(), displays a filename on rl_outstream
- correctly handling multibyte characters
- - use fnwidth() instead of simple strlen() for length calculations
- in display_matches
-
-lib/readline/{display,mbutil}.c
- - use MB_INVALIDCH and MB_NULLWCH as appropriate
-
- 5/21
- ----
-configure.in
- - turn off the builtin malloc on GNU/FreeBSD systems (GNU userland,
- FreeBSD kernel)
-
- 5/24
- ----
-pcomplete.c
- - in programmable_completions, copy the compspec before using it to
- generate the possible completions, allowing the completion for the
- command to be changed by the compspec itself without causing a
- core dump because the shell frees freed memory (reported by
- marcus.harnish@gmx.net)
-
-parse.y
- - in shell_getc, don't call notify_and_cleanup in an interactive shell
- unless the shell is currently reading from the terminal and would
- print a prompt. This fixes programmable completions printing job
- notifications (reported by r.d.green@lancaster.ac.uk)
- - use SHOULD_PROMPT macro consistently
-
-shell.c
- - use get_string_value instead of getenv when looking up $TERM and
- $EMACS to see whether the shell is running under emacs
- - check for `TERM=dumb' as well as `EMACS=t' to decide whether or
- not to turn off command-line editing in emacs shell windows
- (reported by jik@kamens.brookline.ma.us)
-
- 5/28
- ----
-expr.c
- - save and restore the `evalbuf' context, since evalexp can be
- called recursively (e.g. a[b[c]])
-
- 5/29
- ----
-builtins/common.c
- - in display_signal_list, when displaying for `kill -l' in posix mode,
- display signal names without the `SIG' prefix
-
-doc/bashref.texi
- - documented changed to posix mode behavior of kill -l
-
-builtins/kill.def
- - changed the error message printed when argument is not a pid or
- job id
-
-doc/{bash.1,bashref.texi}
- - fixed a slight inconsistency in the different sections describing
- the `promptvars' option
-
-doc/Makefile.in
- - new rule to create `bash.info' from `bashref.info' by running sed
- to change the internal references. This makes the installed
- bash.info work right
- - make the install target install bash.info after it's been modified
- from bashref.info
-
- 5/30
- ----
-builtins/cd.def
- - after testing with ferror(), call clearerr if ferror() evaluates
- to true
-
-execute_cmd.c
- - call clearerr(stdout) after executing a builtin or function,
- before restoring any redirections
-
-bashhist.c
- - initialize history_comment_char in bash_history_initialize
-
-builtins/alias.def
- - if posix mode is enabled, and the `-p' option is not supplied, don't
- list aliases with a preceding `alias ', as POSIX.2 specifies
-
-doc/bashref.texi
- - note new posix mode behavior of displaying alias names and values
- - note new posix mode behavior of trap builtin not checking first
- argument to be a possible signal specification
- - note new posix mode behavior of `kill' not accepting signal names
- with a leading `SIG'
-
-include/stdc.h,lib/readline/rlstdc.h
- - don't check the __STRICT_ANSI__ define when deciding whether or not
- to #undef __attribute__
-
-trap.[ch]
- - decode_signal and signal_object_p take an additional flags arg to
- satisfy POSIX.2 signal name translation requirements
- - change decode_signal to honor the new DSIG_NOCASE (match case-
- insensitively) and DSIG_SIGPREFIX (allow signal specifications
- with the `SIG' prefix) flags
-
-builtins/{common.c,{trap,kill}.def}
- - change calls to decode_signal to add the new argument with
- appropriate values. For kill, POSIX.2 says case-insensitive without
- the `SIG' prefix. For trap, POSIX.2 says applications may decode
- case-insensitively and with the SIG prefix
-
-builtins/trap.def
- - when in posix mode, don't check for the first argument being a
- possible signal spec and revert the signal handling to the
- original disposition
-
- 6/1
- ---
-shell.h
- - new MATCH_STARSUB define, to tell the callers of the various pattern
- substitution and removal functions that call string_list to treat
- "$*" and "${array[*]}" appropriately
-subst.c
- - if get_var_and_type encounters an array variable subscripted by `*'
- or `$*', return VT_STARSUB or'd into the variable type value
- - callers of get_var_and_type check for VT_STARSUB in the returned type
- this will fix problems with ${*...} not being separated with the
- first character of $IFS when double-quoted
- - in parameter_brace_patsub, set MATCH_STARSUB if VT_STARSUB is set by
- get_var_and_type
- - change pos_params_pat_subst to call string_list_dollar_star if
- the match flags include MATCH_STARSUB
- - change parameter_brace_substring to call array_subrange with an
- additional argument indicating the character indexing the array
-
-array.c
- - change array_patsub to join the modified array elements with the
- first character of $IFS if MATCH_STARSUB is set in the match flags
- passed in
- - array_subrange now takes an additional argument indicating the
- index type -- used to separate with first char of $IFS if the
- index char is `*' and the expression is double-quoted
-
-array.h
- - change prototype declaration of array_subrange to add additional arg
-
- 6/2
- ---
-doc/FAQ
- - merged in some updates about POSIX from Andrew Josey
-
- 6/3
- ---
-bashjmp.h
- - new value for jump_to_top_level: ERREXIT
-
-{eval,shell,subst,trap}.c,builtins/evalstring.c
- - ERREXIT is (for now) equivalent to EXITPROG as a value from
- jump_to_top_level
-
- 6/9
- ---
-doc/bash.1,lib/readline/doc/readline.3
- - documented new `show-all-if-unmodified' readline variable
-
- 6/14
- ----
-lib/readline/history.c
- - new function, histdata_t free_history_entry (HIST_ENTRY *h),
- frees H and its line, returning the application-specific data
- - use free_history_entry where appropriate
-
-lib/readline/history.h
- - extern declaration for free_history_entry()
-
-lib/readline/doc/{history.3,hstech.texi}
- - document free_history_entry
-
- 6/16
- ----
-lib/readline/readline.[ch]
- - changed varions defines for readline/history library versions to 5.0
-
-subst.c
- - pass information about whether or not an indirectly-expanded variable
- contains ${array[@]}, ${array[*]}, $@, or $*
- - new function, chk_atstar, performs checks for ${array[@]},
- ${array[*]}, $@, or $* for the parameter_brace_expand* functions and
- sets flags (passed as args) to the results
- - call chk_atstar from parameter_brace_expand_indir and
- parameter_brace_expand
-
- 6/28
- ----
-doc/{bash.1,bashref.texi}
- - clarified that (...) commands are executed in a subshell environment
-
- 6/30
- ----
-lib/readline/bind.c
- - fix a problem with parsing nested if statements in inputrc files
- (fix from dimakar@yahoo.com)
-
- 7/3
- ---
-{jobs,nojobs}.c
- - fix places that use the return value from strsignal() to check
- for NULL return values using a new function, j_strsignal()
-
-builtins/kill.def
- - removed JOB_CONTROL restriction; kill is now available as a builtin
- when the shell is built without job control
-
- 7/10
- ----
-jobs.c
- - some systems have WIFCONTINUED but not WCONTINUED; separate the
- #defines
-
- 7/14
- ----
-lib/readline/history.h
- - new `timestamp' member of a HIST_ENTRY
- - extern declarations for add_history_time and history_get_time
-
-lib/readline/doc/{history.3,hstech.texi}
- - document add_history_time and history_get_time
-
-lib/readline/history.c
- - implementations of history_get_time and add_history_time
- - change add_history to initialize the timestamp information
- - change free_history_entry to free the timestamp
- - change replace_history_entry to duplicate the timestamp
- - change history_total_bytes to add the memory taken by the time
- stamps
-
-bashhist.c,builtins/history.def
- - use free_history_entry where appropriate
-
-lib/readline/histfile.c
- - changes to read_history_range to deal with new history file format
- including timestamps
- - changes to history_do_write to write out the timestamp information
- - changes to history_truncate_file to understand the timestamp
- information
-
- 7/22
- ----
-doc/{bash.1,bashref.texi}
- - fixed function declaration documentation to specify that any compound
- command may be used as the function body, not just a group command
-
- 7/23
- ----
-lib/readline/histfile.c
- - don't allocate space for null timestamps in history_do_write, and
- don't write out null timestamp entries
-
-parse.y
- - fix CHECK_FOR_RESERVED_WORD to call time_command_acceptable() and
- return TIME if the token is "time" and `time' is legal in that
- context
-
- 7/29
- ----
-lib/sh/fmtulong.c
- - include <inttypes.h> for possible definitions of intmax_t, uintmax_t
- (reported by ro@techfak.uni-bielefeld.de)
-
- 7/30
- ----
-parse.y
- - remove checking for `time' reserved word from special_case_tokens();
- use regular mechanism in CHECK_FOR_RESERVED_WORD. This allows `time'
- to be aliased. (Reported by Glenn Morris
- <gmorris+gmane@ast.cam.ac.uk>)
-
- 7/31
- ----
-lib/readline/history.h
- - extern declaration for history_write_timestamps
-
-lib/readline/histfile.c
- - don't write timestamps to the history file in history_do_write
- unless history_write_timestamps is set to non-zero by the application
- (set to 0 by default)
-
-lib/readline/doc/{hstech.texi,history.3}
- - document history_write_timestamps
-
-variables.[ch]
- - new special variable function, HISTTIMEFORMAT; special function
- sets history_write_timestamps to 1 if HISTTIMEFORMAT is set
-
- 8/4
- ---
-builtins/history.def
- - added support for printing time stamps based on the value of the
- HISTTIMEFORMAT variable when displaying history entries
-
-doc/{bash.1,bashref.texi}
- - added description of new HISTTIMEFORMAT variable
-
- 8/5
- ---
-config-top.h
- - remove /usr/ucb from any default paths
-
-mailcheck.c
- - make_default_mailpath now returns NULL if DEFAULT_MAIL_DIRECTORY
- is not defined
- - remember_mail_dates now returns if make_default_mailpath returns
- NULL
-
-config-bot.h
- - reorganized the sections; provide an explicit placeholder for
- builders to #undef any feature defines they don't want that
- configure creates for them, like the default mail path
-
- 8/9
- ---
-config.h.in
- - add HAVE_REGEX_H, HAVE_REGCOMP, HAVE_REGEXEC for detection of POSIX.2
- regular expression functions
- - add COND_REGEXP define to enable and disable the =~ operator for
- matching extended regular expressions in [[...]] commands
-
-configure.in
- - new option, --enable-cond-regexp, enables =~ and code to perform
- regular expression matching in [[...]]
-
-config-bot.h
- - undef COND_REGEXP if the OS doesn't provide posix regexp support
-
-doc/bashref.texi
- - documnent new --enable-cond-regexp option to configure
-
- 8/18
- ----
-support/shobj-conf
- - support for shared objects on FreeBSD-gnu (from Robert Millan)
-
- 8/25
- ----
-lib/sh/shmatch.c
- - new file, shell interface to posix extended regular expression
- matching
-
-externs.h
- - new extern declarations for functions in shmatch.c
-
-execute_cmd.c
- - incorporate code into execute_cond_node that does extended regular
- expression matching for the =~ operator
-
-parse.y
- - add `=~' to the list of binary operators accepted by the conditional
- command parser
-
-doc/{bash.1,bashref.texi}
- - documented =~ conditional binary operator and the BASH_REMATCH
- variable
-
- 8/27
- ----
-lib/readline/display.c
- - take multibyte characters into account when looking for quoted
- substrings on which to do completion (fix from jir@yamato.ibm.com)
-
-lib/readline/util.c
- - fix typo in _rl_strpbrk
-
-lib/readline/rldefs.h
- - use function version of _rl_strpbrk in multibyte locales, because
- it understands to skip over special characters in multibyte
- character sequences
-
- 8/28
- ----
-jobs.c
- - in wait_for, check for window size changes if a job that exits due
- to a signal or is stopped was in the foreground, not just if it's
- the current job
-
- 9/10
- ----
-support/config.{guess,sub}
- - add support to recognize FreeBSD running on the amd64
-
-subst.c
- - if the new `fail_glob_expansion' variable is non-zero, globbing that
- fails to match anything causes an expansion error
-
-builtins/shopt.def
- - new `failglob' expansion: if enabled, failed globs cause an error
-
-test/shopt.right
- - take `failglob' into account
-
-doc/{bash.1,bashref.texi}
- - documented new `failglob' option and its effects
-
- 9/12
- ----
-findcmd.c
- - fix file_status to treat the mode bits and uid right -- in particular,
- don't assume the `other' bits always apply. Bug reported by
- <moseley@hank.org>; fix inspired by <carlo@alinoe.com>
-
-command.h
- - new word flag: W_NOCOMSUB, meaning to not perform command
- substitution on a word
-
-subst.c
- - new flag for param_expand: PF_NOCOMSUB. If non-zero, $(...)
- command substitutions are not expanded, but returned unchanged
- - change expand_word_internal to pass through `` command substitutions
- unchanged if (word->flags & W_NOCOMSUB) != 0
- - change expand_word_internal to pass PF_NOCOMSUB to param_expand
- if (word->flags & W_NOCOMSUB) != 0
-
-builtins/shopt.def
- - rename set_interactive_comments to set_shellopts_after_change, which
- more accurately reflects its purpose
-
-syntax.h
- - add a define for isblank() in case the system doesn't provide one
-
-jobs.c
- - change raw_job_exit_status to understand `pipefail', using the new
- `pipefail_opt' variable
-
-flags.[ch]
- - declare pipefail_opt
- - reset pipefail_opt to 0 in reset_shell_flags
-
-builtins/set.def
- - add `set -o pipefail' and document it in help output
-
-doc/{bash.1,bashref.texi}
- - document `set -o pipefail' and the effect of the pipefail option
-
-mksyntax.c,syntax.h
- - sh_syntaxtab is no longer `const'
- - new generated variable, sh_syntabsiz, set to number of entries in
- sh_syntaxtab, written to generated syntax.c
-
-locale.c
- - new function, locale_setblanks(), sets each member of the current
- locale's <blank> class to have the CSHBRK flag in sh_syntaxtab
-
- 9/17
- ----
-arrayfunc.c
- - change convert_var_to_array to not set array[0] to a NULL value
- (if the scalar variable had no value; e.g., after being created
- with `local arrayvar')
-
-lib/readline/display.c
- - save and restore the value of prompt_invis_chars_first_line in
- rl_{save,restore}_prompt, and reinitialize it to 0 before printing
- something in the message area
-
-lib/readline/bind.c
- - new functions: rl_bind_keyseq_if_unbound_in_map(ks, func, kmap);
- binds key sequence KS to function FUNC in keymap KMAP, and
- rl_bind_keyseq_if_unbound (ks, func); binds key sequence KS to
- function FUNC in the current keymap
-
-lib/readline/readline.h
- - extern function declarations for rl_bind_keyseq_if_unbound_in_map and
- rl_bind_keyseq_if_unbound
-
-lib/readline/{readline,terminal}.c
- - _rl_bind_if_unbound -> rl_bind_keyseq_if_unbound
-
-lib/readline/{bind.c,rlprivate.h}
- - remove _rl_bind_if_unbound
-
- 9/18
- ----
-lib/readline/doc/rltech.texi
- - document rl_bind_keyseq_if_unbound and
- rl_bind_keyseq_if_unbound_in_map
-
- 9/19
- ----
-lib/readline/bind.c
- - new functions rl_bind_key_if_unbound_in_map and
- rl_bind_key_if_unbound; analogous to (and implemented in terms of)
- keyseq functions
- - rl_bind_keyseq_in_map: a new function, equivalent to rl_set_key
- (which remains for backwards compatibility); changed callers to
- use it
- - new function, rl_bind_keyseq, equivalent to rl_bind_keyseq_in_map
- with a third argument of _rl_keymap
-
-lib/readline/readline.h
- - extern declarations for rl_bind_key_if_unbound_in_map and
- rl_bind_key_if_unbound
- - extern declarations for rl_bind_keyseq_in_map and rl_bind_keyseq
-
-lib/readline/doc/rltech.texi
- - document rl_bind_keyseq and rl_bind_keyseq_in_map
-
-configure.in
- - require at least readline-5.0
-
-config-bot.h
- - define SYS_SIGLIST_DECLARED if it's not defined, but
- HAVE_DECL_SYS_SIGLIST is, to deal with differences between
- autoconf versions
-
-bashline.c
- - use rl_bind_key_if_unbound_in_map when binding bash keybindings in
- initialize_readline(), so inputrc files can override them
-
- 9/22
- ----
-lib/readline/histsearch.c
- - do better bounds checking for history_offset and history_length in
- history_search_internal
-
-builtins/history.def
- - in delete_last_history(), make sure we don't leave the history
- offset longer than the history length after calling delete_histent
-
- 9/23
- ----
-jobs.c
- - small change to notify_of_job_status so job status messages get
- printed even if the shell was started to run `-c command'. The
- old behavior was intentional, but I cannot remember why, so we'll
- try it the other way for a while (debian bash bug #211693)
-
- 9/24
- ----
-jobs.c
- - slightly modify change from 9/23 so that jobs started to run
- command substitutions don't print job status messages
-
- 9/25
- ----
-lib/readline/search.c
- - when reading a non-incremental search string from the terminal,
- use a separate undo list rather than chaining it to the undo list
- from the rest of the line, since the whole undo list will get
- freed when the search string is complete
-
-lib/readline/readline.h
- - changed the defines guarding the stdarg prototype for rl_message to
- match what's actually used in display.c, where it's defined
-
- 9/26
- ----
-[bash-3.0-alpha released]
-
- 9/29
- ----
-lib/sh/shmatch.c
- - fix to build correctly when arrays are not compiled into the shell
-
-subst.c
- - fix command substitution to run any exit trap defined in the
- command substitution before returning; the exit trap is not inherited
- from the calling shell
-
-lib/readline/shell.c
- - change sh_set_lines_and_columns to free the memory allocated and
- passed to setenv(), since setenv is specified by POSIX to allocate
- new memory and copy its arguments
-
-jobs.c
- - change logic in make_child so that every child process attempts to
- set the terminal's process group to the pipeline's process group
- when PGRP_PIPE is defined, just like when it's undefined. This is
- reported to fix some tricky synchronization problems on Red Hat
- Enterprise Linux 3. Fix from Ernie Petrides <petrides@redhat.com>.
-
- 9/30
- ----
-builtins/printf.def
- - tescape no longer needs a `trans_squote' argument, since it's the
- same as the `sawc' argument. The `sawc' argument now means to do
- the %b argument processing if non-null
- - fix processing of octal constants for %b arguments (\0 followed by
- up to three octal digits) and other escape sequences (\ followed by
- up to three octal digits)
- - hex constants `\xHHH' are now allowed to contain any positive
- number of digits; previously they were restricted to two [removed]
- - allow two new escape sequences: \" and \?, for compatibility with
- ksh93 and ANSI C
-
-doc/{bash.1,bashref.texi}
- - documented processing that printf performs for arguments to %b
- escape sequences
-
-lib/sh/strtrans.c
- - add \" and \? to escape sequences recognized by `echo -e'
-
- 10/1
- ----
-version.c
- - use snprintf instead of sprintf if configure tells us we have it
-
- 10/3
- ----
-subst.c
- - in list_remove_pattern, take into account the fact that one of the
- list elements may be NULL, and don't free the result of
- remove_pattern() without checking
- - in remove_pattern, return savestring(param) if *param == '\0',
- since callers expect to free() non-null return values
-
- 10/4
- ----
-subst.c
- - change verify_substring_values to make it clearer that the first
- offset deals with array indices and the second deals with numbers
- of elements, when doing array subranges with ${a[@]:e1:e2}
-
-array.c
- - change array_subrange to make it explicit that the second offset
- argument is a count of the desired number of elements, not an
- ending index. This deals with sparse arrays correctly.
-
- 10/6
- ----
-variables.c
- - fix memory leak in assign_in_env
-
- 10/8
- ----
-subst.c
- - in parameter_brace_expand, check that the last characters are `]}'
- before checking for ${!array[@]}
-
-execute_cmd.c,builtins/source.def
- - push and pop the args (BASH_ARGV and BASH_ARGC) when executing a
- shell function or sourcing a script only when in debugging mode
-
- 10/11
- -----
-arrayfunc.c
- - make sure array_variable_name returns values for the SUBP and LENP
- arguments if they're non-null, since callers expect to use them
- even if the array subscript is bad
-
-error.c
- - call exit_shell instead of sh_exit from parser_error and
- report_error so the right things happen (running exit trap, doing
- the right interactive cleanup, etc.)
-
-lib/readline/complete.c
- - new variable, rl_completion_quote_character, set to any quote char
- readline thinks it finds before any application completion
- function is called
- - new variable, rl_completion_suppress_quote, settable by an
- application-specific completion function. If set to non-zero, the
- completion code does not append a closing quote in append_to_match
-
-lib/readline/readline.h
- - extern declarations for rl_completion_quote_character and
- rl_completion_suppress_quote
-
-bashline.c
- - set rl_completion_suppress_quote in command_subst_completion_function
- because that would be inserted before any closing "`" or ")", which
- is somewhat disconcerting
-
-lib/readline/doc/rltech.texi
- - documented rl_completion_suppress_quote and
- rl_completion_quote_character
-
- 10/13
- -----
-bashhist.c
- - use sv_histchars instead of setting history_comment_char directly in
- bash_initialize_history so assignments to $histchars made in
- ~/.bashrc are honored
-
- 10/21
- -----
-trap.c
- - make sure run_exit_trap sets `running_trap' appropriately
- - new variable, trap_saved_exit_value, set to last_command_exit_value
- before running any trap commands; available to the rest of the
- shell; use trap_saved_exit_value to replace some function-local
- variables
-
-builtins/exit.def
- - if the shell is running the exit trap, and no argument is given
- to `exit', use trap_saved_exit_value as the exit status instead
- of the last command exit value (which could be the previous command
- run in the exit trap), as required by POSIX.2
-
- 10/25
- -----
-doc/{bash.1,bashref.texi}
- - add `alias' to the list of documented `assignment statement' builtins
-
- 11/1
- ----
-doc/bash.1
- - remove the `.' from the sample $PATH value
-
-parse.y
- - make sure parse_compound_assignment prompts with $PS2 if it reads
- a newline while parsing the compound assignment statement. Bug
- reported by Stephane Chazelas
- - parse_string_to_word_list now takes a new second argument: `int flags'
- - new parser state flag: PST_COMPASSIGN; indicates that the shell is
- parsing a compound assignment statement
- - parse_string_to_word_list turns on PST_COMPASSIGN if `flags' arg
- has low bit set
- - turn PST_COMPASSIGN on and off in parse_compound_assignment
-
-externs.h
- - change prototype declaration for parse_string_to_word_list
-
-arrayfunc.c
- - change call to parse_string_to_word_list to add new flags arg
-
-general.c
- - assignment() takes a new `flags' second argument
- - if `flags' is non-zero, accept `[' as a legal assignment statement
- starter character (for parsing compound array assignments)
-
-general.h
- - add new argument to prototype declaration for assignment()
-
-parse.y,{subst,variables}.c, builtins/{setattr,declare}.def
- - change calls to assignment() (parse.y calls with flags == 1 when
- parser_state inlcudes PST_COMPASSIGN)
-
-arrayfunc.c
- - in assign_array_var_from_string(), don't treat an expanded word
- of the form [ind]=value specially unless the W_ASSIGNMENT flag is
- set. This means that words that are the result of expansions but
- happen to have the same format as compound assignment statement
- words will not be treated as such. For instance
-
- v='[12]=foobar'
- a=( $v )
-
- will result in a[0]='[12]=foobar' instead of a[12]=foobar. This
- is closer to how `regular' assignment statements are treated and
- compatible with ksh93. Bug reported by Stephane Chazelas
-
-shell.c
- - new --protected argument, disables command substitution when used
- with --wordexp (like --wordexp, it remains undocumented)
- - change run_wordexp to turn on the W_NOCOMSUB flag in each word
- to be expanded if protected_mode is set
-
- 11/7
- ----
-doc/{bash.1,bashref.texi}
- - clarified the language concerning inherited signal dispositions and
- when traps are run
-
-support/shobj-conf
- - slight changes to the darwin (Mac OS X) stanza for MacOS X 10.3
- (for the readline shared library builds, which shares this script)
-
-lib/readline/histexpand.c
- - change to make `^' behave as equivalent to word one, as csh does,
- and as the documentation states
-
-lib/readline/display.c
- - in update_line, make sure to use col_lendiff in all calculations
- where the cursor position is concerned (like when calculating
- the value of _rl_last_c_pos). Fixes bug reported by Andreas
- Schwab
-
- 11/12
- -----
-trap.c
- - make _run_trap_internal catch `return' builtin longjmps and clean
- up before longjmping on to where the return was intended to go
- (fixes bug with not turning off SIG_INPROGRESS flag when `return'
- executed in trap command)
-
- 11/18
- -----
-builtins/cd.def
- - in posix mode, set errno to ENOTDIR if canonicalization fails,
- unless the canonicalization functions leave it set to ENOENT
-
- 11/25
- -----
-make_cmd.c
- - in make_simple_command, don't blindly dereference element.redirect
-
-parse.y
- - the list_terminator production now has an `int' value so it can be
- used in other grammar productions
- - add a rule that makes `time' on a line by itself time a null
- command (this is iffy)
-
- 11/28
- -----
-subst.c
- - change the pattern substitution code (${var//pat/rep}) to use the
- same pattern expansion function (getpattern()) as the pattern
- removal expansions. This has the effect of no longer performing
- quote removal on the pattern before trying to match it. This
- fixes an incompatibility with ksh93 reported on comp.unix.shell
-
-nojobs.c
- - add replacement function for siginterrupt on the off chance that a
- system has posix signals but lacks siginterrrupt
-
-lib/readline/display.c
- - fix from Tim Waugh at Red Hat to speed up inserting characters into
- long lines in a UTF-8 environment by optimizing the calculation of
- the first difference between old and new lines by checking to see
- whether the old line is a subset of the new
-
- 11/29
- -----
-lib/malloc/stats.c
- - break code that opens file (and interprets %p) into separate function
- _imalloc_fopen(char *s, char *fn, char *def, char *defbuf, size_t defsiz)
- for use by rest of library
- - default stats file is now `stats.PID'
-
-lib/malloc/trace.c
- - new function, malloc_set_tracefn (char *s, char *fn), sets tracing
- to the file named by FN (with %p interpolated as the pid), using
- some default if FN is NULL
-
-lib/malloc/shmalloc.h
- - new extern declaration for malloc_set_tracefn
-
- 12/4
- ----
-execute_cmd.c
- - combined several common strings from do_piping() into one
- dup_error() function
-
-builtins/common.[ch]
- - new function, `sh_notbuiltin(s)' prints error message about s not
- being a shell builtin
-
-builtins/{builtin,enable}.def
- - call sh_notbuiltin instead of using literal string
-
-{arrayfunc,expr,error}.c
- - use one string variable for `bad array subscript' error message; use
- in calls to various error reporting functions
-
-Makefile.in
- - add variables for localedir and the PACKAGE_* variables, auto-set
- by configure
-
-configure.in
- - un-cache values for gettext, textdomain, and bindtextdomain if they're
- not in libc but in libintl so the right variables get set
-
-bashintl.h
- - add necessary defines for marking strings to be translated using
- gettext
-
-locale.c
- - set textdomain and directory in set_default_locale
- - don't call textdomain with the value of $TEXTDOMAIN, since we don't
- want to override the default domain ("bash")
- - don't call bindtextdomain unless default_domain already has a value
- - when translating $"..." strings, use dgettext with the script's
- default domain (value of $TEXTDOMAIN)
-
- 12/9
- ----
-builtins/mkbuiltins.c
- - include "bashintl.h" in the generated "builtins.c"
-
-support/{config.rpath,mkinstalldirs}
- - new files to support gettext i18n
-
-ABOUT-NLS
- - new readme file for gettext internationalization
-
-po/{Makefile.in.in,Rules-quot,boldquot.sed,en@boldquot.header,en@quot.header,insert-header.sin,quot.sed,remove-potcdate.sin}
-po/{POTFILES.in,bash.pot}
- - new files for gettext
-
-lib/intl
- - new directory, with libintl stuff from gettext
-
-aclocal.m4
- - add m4 files from gettext distribution needed by libintl
-
-configure.in
- - create po/Makefile.in and lib/intl/Makefile in AC_OUTPUT
- - add call to AM_GNU_GETTEXT to initialize gettext stuff
-
-Makefile.in
- - use mkinstalldirs instead of mkdirs in the `installdirs' target
- - changes for intl/ and po/ subdirectories in build and install
- - changes to have libintl linked in, as determined by configure
- - changes to have libintl built, just in case it's used (though I'd
- rather not)
-
- 12/10
- -----
-config.h.in
- - additional #defines required by the libintl library
- - add ENABLE_NLS define for AM_GNU_GETTEXT
- - take out defines for HAVE_{BINDTEXTDOMAIN,GETTEXT,TEXTDOMAIN}
-
-configure.in
- - removed old tests for libintl and gettext/textdomain/bindtextdomain
-
-locale.c
- - remove HAVE_GETTEXT code; we have gettext unconditionally now
-
-bashintl.h
- - change to include "gettext.h" and remove the conditional code based
- on whether or not gettext is present
-
- 12/16
- -----
-lib/readline/vi_mode.c
- - fix problem with rl_vi_eWord that caused it to skip over the last
- character of a word if invoked while point was on the next-to-last
- character
-
- 12/18
- -----
-{arrayfunc,bashhist,bashline,error,eval,execute_cmd,expr,general,input,jobs}.c
-{mailcheck,make_cmd,nojobs,pcomplete,pcomplib,print_cmd,redir,shell,sig}.c
-{subst,test,trap,variables,version,xmalloc}.c
-parse.y
-builtins/{common,evalfile,getopt}.c
-builtins/{bind,break,caller,cd,complete,declare,enable,exec,exit,fc,fg_bg}.def
-builtins/{hash,help,history,jobs,kill,printf,pushd,read,return,set,setattr}.def
-builtins/{shift,shopt,source,suspend,type,ulimit,umask}.def
-lib/sh/{fmtulong,netopen}.c
- - include "bashintl.h" for gettext defines
-
-Makefile.in
- - add `-DBUILDTOOL' to CFLAGS for buildversion.o
-
-bashintl.h
- - if `BUILDTOOL' is defined, define ENABLE_NLS to 0 so we don't have
- to compile and link in the gettext stuff
-
-Makefile.in,lib/sh/Makefile.in,builtins/Makefile.in
- - update dependencies on bashintl.h and include/gettext.h
-
- 12/19
- -----
-{arrayfunc,bashhist,bashline,error,eval,execute_cmd,expr,general,input,jobs}.c
-{mailcheck,make_cmd,nojobs,pcomplete,pcomplib,print_cmd,redir,shell,sig}.c
-{subst,test,trap,variables,version,xmalloc}.c
-builtins/{common,evalfile,getopt}.c
-builtins/{bind,break,caller,cd,complete,declare,enable,exec,exit,fc,fg_bg}.def
-builtins/{hash,help,history,jobs,kill,let,printf,pushd,read,return,set}.def
-builtins/{setattr,shift,shopt,source,suspend,type,ulimit,umask}.def
-lib/sh/{fmtulong,netopen}.c
-lib/malloc/{malloc,stats,table,watch}.c
- - mark up strings in source files for gettext processing
-
-lib/malloc/imalloc.h
- - include "bashintl.h" if SHELL is defined, otherwise make _(x) an
- identity define
-
-lib/malloc/Makefile.in
- - add dependencies on ${topdir}/bashintl.h and ${BASHINCDIR}/gettext.h
-
- 12/21
- -----
-bashline.c
- - make sure we index into rl_line_buffer with indexes > 0 in
- attempt_shell_completion
-
- 12/31
- -----
-Makefile.in
- - descend into `po' and run make recursively for the various clean
- targets
-
- 1/4
- ---
-include/shmbutil.h
- - two new macros: BACKUP_CHAR(str, strsize, i), which backs up one
- multibyte character in STR starting at index I, and
- BACKUP_CHAR_P(str, strsize, p), which backs up one multibyte
- character in STR starting at P, which is a char *
-
- 1/6
- ---
-pcomplete.c
- - in pcomp_filename_completion_function, use the quote character
- readline found (and assigned to rl_complete_quote_character) when
- dequoting the filename by a completion call from readline (when
- rl_dispatching != 0)
-
-bashline.c
- - ditto for bash_directory_completion_matches
-
- 1/7
- ---
-lib/readline/complete.c
- - new variable, rl_completion_found_quote, set to non-zero value if
- readline finds what it thinks is quoting in the word to be completed
-
-lib/readline/readline.h
- - extern declaration for rl_completion_found_quote
-
- 1/8
- ---
-lib/readline/doc/rltech.texi
- - documented rl_completion_found_quote
-
-lib/readline/complete.c
- - in compute_lcd_of_matches, if it looks like what the user typed was
- dequoted before generating filename matches, dequote the user's
- text again before figuring out the case-insensitive lcd
-
- 1/9
- ---
-lib/readline/display.c
- - fix from Edward Catmur <ed@catmur.co.uk> to logic that handles
- invisible characters in prompt string. Original code was wrong
- about local_prompt_prefix; it gave incorrect results when prompt
- contained invisible characters after a line break
-
- 1/10
- ----
-subst.c
- - new function, mb_substring(), does character (possibly multibyte)
- oriented rather than strictly byte-oriented substring extraction.
- The passed indices, rather than strictly indexing into the string,
- indicate character positions that need to be calculated. From
- Tim Waugh <twaugh@redhat.com>
- - change parameter_brace_substring to use mb_substring if necessary
-
-included/shmbutil.h
- - new define SADD_MBQCHAR_BODY, common code for adding a quoted
- (preceded by CTLESC) multibyte character to an accumulating string
- in the subst.c expansion code
-
-subst.c
- - use SADD_MBQCHAR_BODY in expand_word_internal
- - new static function, mb_getcharlens, allocates and returns an array
- of character lengths for (possibly multibyte) characters in the
- argument string
- - change pattern matching operations to use while loops instead of
- for loops to handle multibyte characters better (no more simple
- increment or decrement)
- - change pattern matching operations to use multibyte character
- operations instead of simple increments and decrements. Don't
- use BACKUP_CHAR_P -- use the mblen array instead, because that
- avoids the N**2 behavior of having to count from the beginning
- of the string each time you want to back up one character. Changes
- to remove_pattern and match_pattern
-
- 1/12
- ----
-lib/readline/display.c
- - make expand_prompt count multbyte characters in the prompt string
- by using _rl_find_next_mbchar (and copying possibly more than one
- byte) instead of a simple increment and single byte copy
-
- 1/13
- ----
-lib/readline/display.c
- - expand_prompt takes a new reference argument -- it returns
- the actual count of (possibly multibyte) characters displayed
- on the screen
- - don't short-circuit in expand_prompt unless we're not going to
- be using any multibyte characters
- - change calls to expand_prompt to pass an argument for the
- number of physical characters the prompt occupies
- (prompt_physical_chars)
- - initialize `lpos' (the physical cursor position) from
- prompt_physical_chars in rl_redisplay
-
-lib/readline/mbutil.c
- - in _rl_find_prev_mbchar_internal, if mbrtowc returns -1 or -2, and
- we assume that the character is a single-byte char, make sure we
- update `prev' so it doesn't get lost. Fixes problems encountered
- when a non-ascii char is the last char on the line and we're moving
- back past it with ^B, and other display problems caused by the same
- situation
-
- 1/15
- ----
-lib/readline/doc/rltech.texi
- - document RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE in the
- description of rl_expand_prompt()
-
- 1/20
- ----
-bashline.c
- - in initialize_readline, make sure M-C-j and M-C-m are still bound to
- vi-editing-mode before unbinding them -- they may have been rebound
- in an inputrc
-
-variables.c
- - in unbind_variable, unset attributes other than `local' and exported
- (if the variable came from a temporary environment) when unsetting a
- local variable inside a function
-
- 1/21
- ----
-configure.in
- - add libintl build directory to the list of include directories if
- it's being built (using INTL_BUILDDIR)
-
-Makefile.in,{builtins,lib/{sh,malloc}}/Makefile.in
- - substitute LIBBUILD as ${BUILD_DIR}/${LIBSUBDIR}
- - define INTL_BUILDDIR as ${LIBBUILD}/intl
-
-{builtins,lib/sh}/Makefile.in
- - make sure INTL_INC is added to the list of include directories
- - make sure INTL_LIBSRC is defined with the correct value
-
-{configure,Makefile,{builtins,lib/sh}/Makefile}.in
- - substitute LIBINTL_H as ${INTL_BUILDDIR}/libintl.h
-
-Makefile.in,builtins/Makefile.iin
- - all files depending on bashintl.h also depend on ${LIBINTL_H}
- (which may be empty)
-
-Makefile.in
- - make a rule telling how to build lib/intl/libintl.h if necessary
-
- 1/24
- ----
-builtins/read.def
- - make sure that the array name supplied as an argument to -a is a
- valid identifier
-
-parse.y
- - make the \W expansion abbreviate $HOME with a ~ (seems to be more
- useful)
-
-doc/{bash.1,bashref.texi}
- - document new behavior of \W
-
-subst.c
- - make sure parameter_brace_expand_rhs uses the first character of
- $IFS when making the string to return from the expanded word
- (which, in the case of "$@" or $@, contains multiple words that
- need to be separated)
-
- 1/25
- ----
-builtins/common.c
- - change get_job_spec to make `%' by itself or an empty argument
- return NO_JOB
-
-jobs.h
- - new possible value for a job spec return value: BAD_JOBSPEC
- (for syntactically invalid specs, like the empty string)
-
-shell.c
- - in open_shell_script, check to see whether or not we can find and
- open the filename argument before setting dollar_vars[0] or
- manipulating BASH_SOURCE, so the error messages come out better
-
-subst.c
- - in string_list_internal, short-circuit right away to savestring()
- if the list only has a single element
-
- 1/28
- ----
-lib/readline/rltypedefs.h
- - new set of typedefs for functions returning char * with various
- arguments (standard set)
-
-lib/readline/complete.c
- - new function pointer, rl_completion_word_break_hook, called by
- _rl_find_completion_word, used to set word break characters at
- completion time, allowing them to be position-based
-
-lib/readline/doc/rltech.texi
- - documented rl_completion_word_break_hook
-
-lib/readline/kill.c
- - added new rl_unix_filename_rubout, which deletes one filename
- component in a Unix pathname backward (delimiters are whitespace
- and `/')
-
-lib/readline/readline.h
- - extern declaration for rl_unix_filename_rubout
-
-lib/readline/funmap.c
- - new bindable readline command `unix-filename-rubout'
-
-lib/readline/doc/{readline.3,rluser.texi},doc/bash.1
- - documented `unix-filename-rubout'
-
- 1/29
- ----
-lib/readline/histexpand.c
- - change history_tokenize_internal to handle non-whitespace delimiter
- characters by creating separate fields (like the shell does when
- splitting on $IFS)
-
- 1/30
- ----
-lib/glob/xmbsrtowcs.c
- - new function, xdupmbstowcs, for convenience: calls xmbsrtowcs
- while allocating memory for the new wide character string
- - some small efficiency improvments to xmbsrtowcs
-
-include/shmbutil.h
- - extern declaration for xdupmbstowcs
-
-lib/glob/strmatch.h
- - include config.h for definition of HANDLE_MULTIBYTE
- - remove the HAVE_LIBC_FNM_EXTMATCH tests
- - new extern declaration for wcsmatch(whchar_t *, wchar_t *, int)
-
-configure.in
- - remove call to BASH_FUNC_FNMATCH_EXTMATCH; it's no longer used
-
-lib/glob/smatch.c
- - simplify xstrmatch() by using xdupmbstowcs() instead of inline code
-
-lib/glob/glob.c
- - modify mbskipname() to avoid the use of alloca
- - simplify mbskipname() by using xdupmbstowcs() instead of inline code
- - simplify glob_pattern_p() by using xdupmbstowcs() instead of
- inline code
- - fix memory leak in wdequote_pathname
- - simplify wdequote_pathname() by using xdupmbstowcs() instead of
- inline code
-
-lib/glob/strmatch.c
- - new function, wcsmatch(), `exported' wide-character equivalent of
- strmatch()
-
-subst.c
- - old match_pattern is now match_upattern
- - match_pattern now either calls match_upattern or converts
- mbstrings to wide chars and calls match_wpattern
- - match_upattern reverted to old non-multibyte code
- - new function: match_pattern_wchar, wide character version of
- match_pattern_char
-
- 2/1
- ---
-subst.c
- - old remove_pattern is now remove_upattern
- - remove_upattern reverted to old non-multibyte code (pre-Waugh patch)
- - new multibyte version of remove_pattern: remove_wpattern
- - remove_pattern now calls either remove_upattern or converts a
- multibyte string to a wide character string and calls
- remove_wpattern
- - new function, wcsdup, wide-character version of strdup(3)
-
- 2/4
- ---
-print_cmd.c
- - temporarily translate a >&filename redirection from
- r_duplicating_output_word to r_err_and_out (as the expansion code
- in redir.c does) so it prints without a leading `1' (file
- descriptor)
-
- 2/5
- ---
-aclocal.m4
- - add a check for wcsdup to BASH_CHECK_MULTIBYTE
-
-config.h.in
- - add HAVE_WCSDUP define
-
- 2/9
- ---
-builtins/shift.def
- - fix a call to sh_erange that possibly dereferences a NULL pointer
-
- 2/12
- ----
-general.c
- - start at a general set of file property checking functions:
- file_isdir(), file_iswdir() (is writable directory)
-
-general.h
- - extern declarations for new functions
-
-lib/sh/tmpfile.c
- - use file_iswdir() to make sure the temporary directory used for
- here documents and other temp files is writable in get_sys_tmpdir()
-
- 2/17
- ----
-bashline.c
- - fix conditional binding of emacs-mode M-~ -- there is a default
- binding for it (rl_tilde_expand), so a straight call to
- rl_bind_key_if_unbound_in_map doesn't do the right thing
-
- 2/27
- ----
-[bash-3.0-beta1 released]
-
- 2/29
- ----
-subst.c
- - fixed expansion so referencing $a, when a is an array variable
- without an element assigned to index 0, exits the shell when
- `-u' is enabled
-
-expr.c
- - make the exponentiation operator (**) associative, so things like
- 2**3**4 work right (change `if' to `while')
-
- 3/3
- ---
-lib/sh/strftime.c
- - SCO Unix 3.2, like Solaris, requires that the system's `timezone'
- variable be declared as long
-
-lib/readline/{bind,histfile,input,parens}.c
- - changes for Tandem (including `floss.h' (?))
-
- 3/4
- ---
-subst.c
- - change param_expand to quote the entire expanded string instead
- of just the escape characters if the expansion appears between
- double quotes or in a here-document (for simple variable expansions
- or expansions of positional parameters)
-
- 3/8
- ---
-subst.c
- - analogous changes to parameter_brace_expand_word to fix the same
- quoting problem as on 3/4; fix callers to understand that the
- value returned might be quoted now and should be dequoted if
- necessary
- - add a `quoted' argument to get_var_and_type, change callers
- - change today's fix and fix from 3/4 to not call quote_string if the
- value is "" (because quote_string turns that into CTLNUL\0)
-
- 3/9
- ---
-builtins/cd.def
- - resetpwd() now takes a `caller' argument so it can be used by pwd
- as well as cd
- - change pwd_builtin to call resetpwd() if sh_physpath() fails to
- return a valid pathname
-
- 3/14
- ----
-expr.c
- - reworked exp0 and readtok() to make post-increment and post-decrement
- into real tokens, which may be separated from their accompanying
- variables by whitesapce
- - made analogous changes to readtok() to make pre-increment and
- pre-decrement work when separated from their accompanying identifier
- by whitespace
-
- 3/18
- ----
-lib/readline/misc.c
- - in rl_maybe_unsave_line, don't force rl_replace_line to clear
- the undo_list, since it might point directly at an undo list
- from a history entry (to which we have no handle)
-
- 3/19
- ----
-lib/readline/display.c
- - rl_save_prompt and rl_restore_prompt now save and restore the value
- of prompt_physical_chars
- - set prompt_physical_chars in rl_redisplay when expand_prompt has
- not been called (e.g., when rl_display_prompt is set and is not
- equal to rl_prompt, like when searching)
-
-lib/readline/histexpand.c
- - don't call add_history in history_expand if the `:p' modifier is
- supplied; leave that to the calling application. This means that
- `history -p', for example, will not add anything to the history
- list (as documented), nor will history expansions invoked by
- emacs-mode M-C-e line editing
-
-config-bot.h
- - check whether HAVE_DECL_SYS_SIGLIST is defined to 1 rather than just
- defined, to work around newer versions of autoconf defining it to 0
-
-config.h.in
- - change default status of HAVE_MALLOC to #undef instead of #define
-
-bashhist.c
- - extern declarations for rl_done and rl_dispatching
- - don't call re_edit from pre_process_line unless rl_dispatcing is zero,
- so we don't call it from something like shell-expand-line
- - change pre_process_line to add an expanded history specification
- that returned `print only' to the history list, since history_expand
- no longer does it (and, when using readline, do it only when
- rl_dispatching is zero)
-
- 3/22
- ----
-config.h.in,aclocal.m4
- - change bash-specific functions that look in struct dirent to define
- HAVE_STRUCT_DIRENT_xxx, like AC_CHECK_MEMBERS does (though the
- functions are otherwise the same)
- - new function, BASH_STRUCT_DIRENT_D_NAMLEN, define
- HAVE_STRUCT_DIRENT_D_NAMLEN if struct dirent has a `d_namlen' member
-
-configure.in
- - call BASH_STRUCT_DIRENT_D_NAMLEN
-
-include/posixdir.h
- - use new and renamed HAVE_STRUCT_DIRENT_D_xxx defines
-
- 4/7
- ---
-builtins/cd.def
- - ensure that we print out a non-null pathname after getting a
- directory from CDPATH and canonicalizing it (e.g., if the result
- exceeds PATH_MAX in length and the_current_working_directory is
- set to NULL)
-
- 4/12
- ----
-print_cmd.c
- - new function to print out assignment statements when `set -x' has
- been enabled: xtrace_print_assignment
-
-externs.h
- - extern declaration for xtrace_print_assignment
-
- 4/13
- ----
-{subst,variables}.c
- - call xtrace_print_assignment instead of using inline code
-
-jobs.c
- - if turning on job control when it was previously off, set
- pipeline_pgrp to 0 in set_job_control so make_child puts
- subsequent children in their own process group
-
- 4/14
- ----
-general.c
- - new function, legal_alias_name, called to decide whether an
- argument to add_alias is a valid alias name -- essentially any
- character except one which must be quoted to the shell parser
- and `/'
-
-general.h
- - new extern declaration for legal_alias_name
-
-builtins/alias.def
- - `unalias' now returns failure status if no NAME arguments are
- supplied and -a is not given
- - call legal_alias_name to make sure alias name is valid before
- calling add_alias from alias_builtin
-
- 4/19
- ----
-include/shmbutil.h
- - include <config.h> for definition of HANDLE_MULTIBYTE rather than
- duplicating logic
-
- 4/20
- ----
-
-doc/{bash.1,bashref.texi}
- - make sure $0 is consistently referred to as a `special parameter'
- - document which characters are now not allowed in alias names
-
- 4/23
- ----
-
-builtins/{jobs,kill,wait}.def
- - removed requirement that job control be enabled to use job control
- notation, as SUSv3 implies
-
-subst.c
- - based on a message from David Korn, change param_expand to not call
- string_list_dollar_star if the only quoting is Q_HERE_DOCUMENT --
- quoted here documents are like double quoting, but not exactly
- - analogous changes to list_remove_pattern and pos_params
-
- 4/24
- ----
-lib/readline/doc/rluser.texi
- - fix error in description of emacs-mode C-xC-e command (uses $VISUAL
- instead of $FCEDIT)
-
- 4/28
- ----
-support/bashbug.sh
- - integrate a patch from Stefan Nordhausen
- <nordhaus@informatik.hu-berlin.de> that reduces race conditions
- by using a temporary directory inside $TMPDIR and creating the
- temp files in that
-
- 4/30
- ----
-builtins/common.c
- - use pathconf(".", _PC_PATH_MAX) where available to size the argument
- to getcwd() rather than using a straight PATH_MAX
-
-builtins/cd.def
- - if get_working_directory fails and returns null (causing resetpwd
- to return NULL), use set_working_directory to set $PWD to the
- absolute pathname for which chdir just succeeded
-
- 5/1
- ---
-lib/readline/vi_mode.c
- - in rl_vi_change_to, call _rl_vi_set_last with rl_numeric_arg instead
- of `last', since they're equal at call time and rl_vi_domove can
- change rl_numeric_arg (which vi apparently updates). Fixes redo bug
- of `c2....' reported by Marion Berryman <mwberryman@copper.net>
-
- 5/4
- ---
-parse.y
- - fix decode_prompt_string to properly deal with strftime() returning 0
-
- 5/6
- ---
-variables.c
- - in make_local_array_variable, return an already-existing local array
- variable immediately rather than creating a new array (causing a
- memory leak)
-
- 5/8
- ---
-lib/readline/vi_mode.c
- - change rl_vi_domove to set rl_explicit_arg before calling
- rl_digit_loop1 so that multi-digit numeric arguments work right
- - _rl_vi_last_command is no longer static
-
-lib/readline/rlprivate.h
- - new extern declaration for _rl_vi_last_command
-
-lib/readline/text.c
- - change rl_newline to only call _rl_vi_reset_last if the last command
- (_rl_vi_last_command) is not a text modification command. This lets
- the last-command and last-argument work across command lines
-
- 5/13
- ----
-builtins/common.c
- - use getcwd(0,0) rather than providing a fixed pathname with a fixed
- length (PATH_MAX) so getcwd() will allocate sufficient memory
-
-aclocal.m4
- - change BASH_FUNC_GETCWD to check whether or not getcwd(0,0) will
- allocate memory for the returned value -- nobody implements that
- and getcwd-via-popen, so it should capture the old test as well
-
- 5/27
- ----
-
-builtins/trap.def
- - the historical behavior of assuming that a signal's handling should
- be set to its original disposition is only in effect if a single
- argument is given, otherwise the first argument is assumed to be a
- command to execute
- - when in posix mode, if trap gets a single argument, display an
- error message and return EX_USAGE
- - change the help message and usage string to better explain trap's
- behavior
-
-doc/{bash.1,bashref.texi}
- - describe the new default behavior when the first argument is a
- signal spec
- - note that signal names are case insensitive and the SIG prefix is
- optional in arguments to `trap'
- - note that signal name arguments to `kill' are case-insensitive
-
-lib/readline/display.c
- - make sure rl_on_new_line_with_prompt sets rl_display_prompt to
- rl_prompt (just to make sure it's set)
- - have rl_on_new_line_with_prompt use local_prompt if it's set
-
- 6/2
- ---
-subst.c
- - in string_extract_double_quoted, cope with extract_delimited_string
- returning NULL, as it can when attempting completion on an unclosed
- command substitution
-
- 6/24
- ----
-lib/readline/complete.c
- - change print_filename to add a `/' to listed directory names if
- `mark-directories' has been enabled
-
-builtins/umask.def
- - make sure that the mask passed to parse_symbolic_mode has all but
- the operative low eight bits masked off, to avoid complementing
- all 0s to -1, which is the error return code. This makes things
- like `a=rwx' and `ugo=rwx' work and turn off the umask
-
- 6/26
- ----
-builtins/getopts.def
- - when `getopts' reaches the end of options, unset OPTARG before
- returning EOF. In response to a bug report from Apple
-
-configure.in
- - when cross-compiling, don't set CPPFLAGS_FOR_BUILD and
- LDFLAGS_FOR_BUILD from CPPFLAGS and LDFLAGS, respectively, since
- those are for the target instead of the build platform (report
- from robert@schwebel.de)
-
-shell.c
- - a shell whose standard error (but not standard output) is directed
- to a terminal should be interactive, according to POSIX/SUS. This
- means that sh > sh.out will start an interactive shell. Bug report
- from llattanzi@apple.com
-
-doc/{bash.1,bashref.texi}
- - change mention of standard output to standard error in definition
- of interactive shell
-
-lib/readline/vi_mode.c
- - new convenience function, rl_vi_start_inserting, calls
- _rl_vi_set_last to save the last textmod command state and then calls
- rl_vi_insertion_mode to enter insert mode
- - change functions to use rl_vi_start_inserting
-
-lib/readline/readline.h
- - extern declaration for rl_vi_start_inserting
-
-bashline.c
- - new function for vi-mode completion, bash_vi_complete. Does
- filename expansion as POSIX specifies, unlike the default readline
- bindings (which don't know about globbing). Bound to `\', `*',
- and `=' in vi command keymap. Internals very similar to
- rl_vi_complete; just calls bash glob expansion functions
-
-lib/readline/vi_mode.c
- - change rl_vi_change_char so that an entire change is a single
- undoable event, rather than each individual change in a [count]r
- command
- - fix rl_vi_change_char so that replacing characters up to EOL works
- rather than generating rl_ding
- - fix rl_vi_change_case so that replacing characters up to EOL works
- rather than generating rl_ding
-
- 6/28
- ----
-builtins/echo.def
- - call clearerr(stdout) before writing anything and testing its
- failure or success
-
- 6/29
- ----
-bashline.c
- - only set rl_explicit_arg in bash_glob_complete_word if readline is
- in emacs mode; let bash_vi_complete take care of setting it in vi
- mode
- - fix bash_vi_complete to only set rl_explicit_arg unless the posix
- conditions are met: no globbing characters in the vi `bigword'
- being completed
-
- 6/30
- ----
-[bash-3.0-rc1 released]
-
- 7/1
- ---
-lib/readline/complete.c
- - make sure `extension_char' is initialized before deciding whether
- or not the append a `/' to a possible completion when visible-stats
- is not enabled
-
- 7/2
- ---
-subst.c
- - fix a boundary overrun in string_extract_double_quoted that could
- occur when the word completion code attempts to expand an incomplete
- construct (like a quoted unclosed command substitution)
-
- 7/4
- ---
-subst.c
- - set tempenv_assign_error to non-zero if an assignment to the
- temporary environment fails for some reason (e.g., attempted
- assignment to a readonly variable)
-
-execute_cmd.c
- - fix execute_simple_command to force a non-interactive shell in
- POSIX mode to exit if an assignment to the temporary environment
- preceding a special builtin fails (bug report from
- llattanzi@apple.com)
-
- 7/5
- ---
-bashline.c
- - in bash_directory_completion_hook, don't perform word expansions
- if the filename appears to have been completed from the file
- system rather than typed in by the user. Bug reported by Tim
- Waugh <twaugh@redhat.com>
-
- 7/7
- ---
-lib/readline/misc.c
- - if _rl_maybe_save_line is being asked to save a line other than
- what's already saved, free up the current saved line and save the
- current contents of rl_line_buffer. Bug reported by
- llattanzi@apple.com
-
- 7/12
- ----
-lib/readline/input.c
- - do better EOF detection in rl_gather_tyi -- if a read returns 0 when
- the fd is in non-blocking mode, stuff an EOF into the input stream
- (reported by mattias@virtutech.se)
-
- 7/13
- ----
-lib/readline/vi_mode.c
- - make sure rl_vi_put honors `count' arguments and yanks things
- multiple times if requested
-
- 7/16
- ----
-builtins/umask.def
- - make sure that the `who' part of the umask symbolic mode argument
- defaults to `a' if it's missing
-
-flags.c
- - make sure that maybe_make_restricted only gets called after the
- shell is initialized, so `bash -r' doesn't result in inappropriate
- error messages
-
-[bash-3.0 frozen]
-
- 7/27
- ----
-doc/Makefile.in
- - small fixes
-
-[bash-3.0-released]
-
- 7/28
- ----
-array.c
- - in array_insert(), make sure the value to be added is non-NULL before
- calling savestring() on it
-
-builtins/reserved.def
- - fix description of `CDPATH'
-
-lib/readline/display.c
- - when expanding a prompt that spans multiple lines with embedded
- newlines, set prompt_physical_chars from the portion after the
- final newline, not the preceding portion. Bug reported by
- "Ralf S. Engelschall" <rse@engelschall.com>
-
-make_cmd.c
- - explicitly declare `lineno' in function prologue for make_case_command
-
-builtins/evalfile.c
- - include `trap.h' for declaration for run_return_trap
-
-bashline.c
- - fix a `return' without a value in enable_hostname_completion
-
-general.c
- - include test.h for extern declaration for test_eaccess
-
-externs.h
- - add declaration for zcatfd
-
-tests/{history,histexp}.tests
- - unset HISTFILESIZE to avoid problems if a value of 0 is inherited
- from the environment
-
- 7/30
- ----
-bashline.c
- - small changes to glob_expand_word to perform tilde expansion before
- attempting globbing
-
-builtins/Makefile.in
- - fix the install-help target to not cd into the `helpfiles'
- subdirectory, so a value of $INSTALL_DATA containing a relative
- pathname (e.g., .././support/install.sh) remains valid
-
- 7/31
- ----
-subst.c
- - new function, mbstrlen(s), returns length of a multibyte character
- string
-
-include/shmbutil.h
- - new macro, MB_STRLEN(s), calls mbstrlen or STRLEN as appropriate
-
-builtins/trap.def
- - small change so that a first argument that's a valid signal number
- (digits only -- no symbolic names) will be treated as a signal and
- reverted back to the original handling disposition. Fixes debian
- complaints
-
-subst.c
- - call MB_STRLEN instead of STRLEN where appropriate in
- parameter_brace_expand_length to handle multibyte characters properly
- - call MB_STRLEN instead of strlen in verify_substring_values so that
- negative substrings of strings with multibyte chars work properly
-
- 8/1
- ---
-jobs.c
- - describe_pid needs to write to stderr, not stdout (POSIX)
- - start_job, since it's only used by builtins (fg/bg), needs to write
- its output to stdout, not stderr (POSIX)
-
-sig.c
- - add an `orig_flags' member to struct terminating_signal so the
- original signal handling flags (SA_RESTART, etc.) can be preserved
- on POSIX systems
- - make sure to preserve the signal flags state in
- initialize_terminating_signals and reset them for child processes
- in reset_terminating_signals
-
-builtins/fc.def
- - fixed an off-by-one error that caused `fc -l' to list one too many
- history entries
- - in posix mode, `fc' should not list any indication as to whether or
- not history lines have been modified (POSIX)
- - when in posix mode, the default editor for `fc' should be `ed' (POSIX)
-
-doc/bashref.texi
- - updated the description of `trap' behavior when given a first
- argument that is a valid signal number
- - noted that `fc -l' won't indicate whether a history entry has been
- modified if the shell is in posix mode
-
-builtins/command.def
- - fixed bug: `command -v' is supposed to be silent if a command is not
- found
-
-builtins/hash.def
- - `hash' should print its `hash table empty' message to stderr
-
-lib/readline/misc.c
- - back out 7/7 change to _rl_maybe_save_line; it breaks emacs-mode ^P
-
-general.c
- - changed base_pathname so that it will return reasonable results for
- non-absolute pathnames -- this is what is intended by all of its
- callers
-
-arrayfunc.c
- - fix array_variable_part to return NULL if it finds an invisible
- variable in the hash table. Fixes seg fault caused by referring to
- unset local variable using array notation
-
-{locale,variables}.c
- - support LC_TIME as a special locale variable so HISTTIMEFORMAT tracks
- the current locale
-
- 8/2
- ---
-variables.c
- - fixed small memory leak in makunbound() when a local array variable
- is unset. Fix from William Park
-
-lib/readline/display.c
- - fixed a problem when computing the number of invisible characters on
- the first line of a prompt whose length exceeds the screen width
- (should only happen when invisible characters occur after the
- line wrap). Bug reported by agriffis@gentoo.org
-
-builtins/command.def
- - `command -V' passes a new flag, CDESC_ABSPATH, which means to convert
- to an absolute path
-
-builtins/type.def
- - in posix mode, `type' and `command -v/-V' should not report
- non-executable files, even if the execution code will attempt to
- run them. Other posix shells do this
-
-doc/bashref.texi
- - add note to POSIX Mode section describing behavior of type and command
- when finding a non-executable file
-
-execute_cmd.c
- - force extended_glob to 1 before calling binary_test in
- execute_cond_node so that the right extended pattern matching gets
- performed
-
- 8/3
- ---
-braces.c
- - make sure lhs[0] and rhs[0] are cast to `unsigned char' so chars
- with values > 128 are handled correctly
-
-builtins/printf.def
- - change bexpand() and printstr() to handle strings with a leading
- '\0' whose length is non-zero, since that's valid input for the
- `%b' format specifier
-
-subst.c
- - fix a couple of instances of find_variable that didn't check the
- result for an invisible variable
-
-variables.c
- - BASH_ARGC, BASH_ARGV, BASH_SOURCE, BASH_LINENO no longer created as
- invisible vars
-
-pcomplete.c
- - make sure COMP_WORDS is not invisible when bind_comp_words returns
- - ditto for COMPREPLY in gen_shell_function_matches
-
- 8/4
- ---
-braces.c
- - fix problem where ${ was ignored but did not increment the open
- brace count. Bug reported by Tim Waugh <twaugh@redhat.com>
-
-variables.c
- - if make_local_variable finds a variable in the correct context in
- the right variable scope, make sure it's not invisible before
- returning it
-
- 8/5
- ---
-builtins/trap.def
- - fixed usage message to show `action' as not optional, though it
- actually is when not in posix mode (for a single argument)
-
- 8/7
- ---
-configure.in
- - kfreebsd-gnu has had its sbrk() problems fixed, and no longer needs
- to be configured --without-gnu-malloc
-
-lib/readline/vi_mode.c
- - in rl_vi_search, free any saved history line before starting the
- search, so failure leaves you at that line, not the last line in
- the history (assuming the current line is not the last history line).
- Fix from llattanzi@apple.com to replace fix of 7/7
-
- 8/9
- ---
-support/Makefile.in
- - renamed `mostly-clean' target to `mostlyclean'
-
- 8/11
- ----
-lib/readline/vi_mode.c
- - make same change for EOL in multibyte character case of
- rl_vi_change_char
-
- 8/12
- ----
-subst.c
- - in verify_substring_values, fix off-by-one error checking bounds of
- `offset', esp. in array values (e.g., getting the highest element
- of an array)
-
- 8/16
- ----
-aclocal.m4
- - change BASH_CHECK_DEV_FD to make sure that file descriptors > 2 are
- accessible via /dev/fd, unlike FreeBSD 5.x
-
-lib/sh/strftime.c
- - make sure `zone' is initialized with gettimeofday before it is used
- - work around HPUX lack of `altzone' and differing definitions of
- `timezone'
-
-lib/malloc/malloc.c
- - internal_memalign and memalign now take a `size_t' as their first
- argument, which seems to be the prevailing standard
-
-lib/malloc/{malloc.c,shmalloc.h}
- - change sh_memalign to take a `size_t' as its first argument
-
-builtins/echo.def
- - if posixly_correct and xpg_echo are both set, don't try to interpret
- any arguments at all, as POSIX/XOPEN requires (fix inspired by Paul
- Eggert)
-
-doc/bashref.texi
- - amend description of bash posix mode to include new echo behavior
-
-builtins/fg_bg.def
- - allow bg to take multiple job arguments, as posix seems to specify,
- placing them all in the background, returning the status of the last
- one as the status of `bg'
-
-lib/readline/vi_mode
- - fix _rl_vi_change_mbchar_case (multibyte-char version of `~'
- command) to have the right behavior at EOL -- handle case where vi
- mode backs up at the end of the line
-
- 8/18
- ----
-array.c
- - check for an empty array in array_rshift before shifting elements
- and adjusting max_index
- - check for null array in array_subrange
-
-jobs.c
- - fix raw_job_exit_status to not ignore exit status of the last
- process in the pipeline when `set -o pipefail' is enabled
-
- 8/19
- ----
-lib/readline/mbutil.c
- - make sure _rl_find_next_mbchar_internal has a valid multibyte
- character before it checks whether or not it's a zero-width
- wide character and adjusts point accordingly
-
- 8/24
- ----
-bashline.c
- - new function, bash_directory_expansion, duplicates the expansions
- performed on the directory name by rl_filename_completion_function
- - call bash_directory_expansion in command_word_completion_function
- if we decide we're doing tilde expansion (and any other
- canonicalization) on the directory name being completed
-
- 8/25
- ----
-configure.in
- - use new-style AC_CHECK_HEADER to check for sys/ptem.h (which requires
- sys/stream.h). The correct checks are in the code, but autoconf
- complains if sys/stream.h is not included, rather than simply
- checking for the header's presence
-
- 8/26
- ----
-builtins/hash.def
- - fix a bug that prevented `hash -d' from working right (as soon as
- hash removed a command from the table, the bug caused it to be added
- right back)
-
- 8/27
- ----
-doc/{bash.1,bashref.texi}
- - explicitly note that conditional primaries that operate on files
- operate on the targets of symbolic links rather than the links
- themselves
-
- 8/30
- ----
-lib/readline/display.c
- - fix multibyte calculation of `physchars' in prompt expansion, to
- handle double-width multibyte characters correctly
- - changes to rl_redisplay to handle prompts longer than the screenwidth
- that might contain double-width multibyte characters. Fixes from
- Tomohiro Kubota
-
- 9/6
- ---
-subst.c
- - change word_list_split to avoid really bad behavior caused by calling
- list_append for each split word -- as the list gets long, you have
- to traverse it every time. Keep a pointer to the end of the list and
- and just tack onto it
-
- 9/8
- ---
-lib/readline/complete.c
- - change fnprint to calculate the displayed width of a filename in
- the same way as fnwidth
-
-subst.c
- - in verify_substring_values, when expanding ${array[@]:offset}, make
- sure negative offsets count from one greater than the array's
- maximum index so things like ${x[@}: -1} work to give the last element
- (requires fixing array tests)
-
-builtins/common.c
- - new error function, sh_wrerror(), for builtins to call when a write
- error occurs
-
-builtins/common.h
- - extern declaration for sh_wrerror()
-
-builtins/cd.def
- - change builtin_error call to use sh_wrerror()
-
-builtins/echo.def
- - report write errors with sh_wrerror() instead of just returning
- failure
-
-builtins/printf.def
- - change printstr to return failure (-1) or success (0) indication
- rather than void
- - report write errors when printstr() fails, return failure
- - if any of the PF/printf calls fail, report write error and return
- failure
-
-execute_cmd.c
- - change execute_in_subshell so the subshell command inherits the
- command timing flags from the enclosing COMMAND *
-
- 9/11
- ----
-[prayers for the victims of 9/11/2001]
-
-lib/sh/strnlen.c
- - new file, implementation of GNU libc extension function strnlen
-
-lib/sh/Makefile.in, {config.h,configure,Makefile}.in, MANIFEST
- - changes for strnlen
-
-configure.in
- - version changed to 3.1-devel
-
-doc/bash.1, lib/readline/doc/rluser.texi
- - added description of `-o plusdirs' to complete/compgen (thanks,
- Arnold)
-
-parse.y
- - new parser_state flag, PST_ASSIGNOK, if set indicates we're parsing
- arguments to a builtin that accepts assignment statement arguments
- - turn on PST_ASSIGNOK in read_token_word when appropriate
- - turn off PST_ASSIGNOK in read_token when appropriate
- - don't attempt to parse a compound assignment specially unless we're
- in a position where an assignment statement is acceptable, or
- PST_ASSIGNOK is set
-
- 9/13
- ----
-variables.c
- - make BASH_ARGC, BASH_ARGV, BASH_LINENO, and BASH_SOURCE
- non-unsettable, since the shell uses those values internally
-
-expr.c
- - make exponentiation right-associative, as is apparently correct
-
- 9/16
- ----
-arrayfunc.c
- - make sure convert_var_to_array marks the environment as needing
- recreation if the converted variable was exported
-
- 9/17
- ----
-braces.c
- - mark ${ as introducing an additional level of braces only if it's
- not in a quoted string -- quoted strings are handled before brace
- matching is done
-
-parse.y
- - fixed an obscure problem in history_delimiting_chars where the `in'
- in a case statement could have a semicolon added after it, if the
- `case word' was on a previous line
-
-support/config.guess
- - support for newest versions of tandem non-stop kernel
-
-lib/readline/display.c
- - in compute_lcd_of_matches, explicitly cast `text' to `char *' before
- passing it to rl_filename_dequoting_function
-
-lib/readline/terminal.c
- - bind the key sequence sent by the keypad `delete' key to delete-char
- (same as ^D in emacs mode)
-
-builtins/ulimit.def
- - in print_all_limits, don't print anything if get_limit returns
- -1/EINVAL, indicating that the kernel doesn't support that particular
- limit
- - add -i (max number of pending signals), -q (max size of posix msg
- queues), -x (max number of file locks) for systems (Linux) that
- support them
-
-doc/{bash.1,bashref.texi}
- - fix description of correspondence between FUNCNAME, BASH_LINENO,
- and BASH_SOURCE indices in description of BASH_LINENO
-
- 9/18
- ----
-lib/sh/shquote.c
- - don't quote CTLESC and CTLNUL with CTLESC in sh_backslash_quote, as
- long as the resultant string never gets sent to the word expansion
- functions without going through the shell parser
-
-externs.h
- - add extern declarations for strnlen and strpbkrk from lib/sh
-
-subst.[ch]
- - changes to handle case where IFS consists of multibyte characters.
- Changed: string_extract_verbatim, split_at_delims,
- string_list_dollar_star, string_list_dollar_at, list_string,
- get_word_from_string, setifs
-
- 9/19
- ----
-mailcheck.c
- - change file_mod_date_changed to reset the cached mail file data if
- the file size drops to zero
-
-lib/readline/complete.c
- - change append_to_match so that a non-zero value for
- rl_completion_suppress_append will cause no `/' to be appended to a
- directory name
-
-bashline.c
- - experimental change to suppress appending a slash for a completed
- filename that is found in PATH as well as a directory in the current
- directory under certain circumstances: a single instance found in
- $PATH when `.' is not in $PATH, and multiple instances found in the
- $PATH, even when `.' is in the $PATH
-
- 9/24
- ----
-command.h
- - new word flag: W_ASSIGNRHS, means word is rhs of assignment statement
- - new word flag: W_NOTILDE, means word is not to be tilde expanded
- - new word flag (internal): W_ITILDE, means the next character is a
- tilde that should be expanded
-
-general.c
- - new set of tilde suffixes for use when parsing the RHS of an
- assignment statement and =~ should not be subject to tilde expansion
- - if ASSIGN_P argument to bash_tilde_expand is 2, use tilde prefixes
- for parsing RHS of assignment statement
-
-general.[ch]
- - new function bash_tilde_find_word, drop-in replacement for
- tilde_find_word
-
-subst.c
- - call bash_tilde_expand with secord argument of 2 when expanding rhs
- of an assignment statement, so tildes after second and subsequent
- `=' in an assignment are not expanded
- - new function, expand_string_assignment, to expand the rhs of an
- assignment statement
- - add `~' to EXP_CHAR, the characters that will cause the word
- expansion functions to be called
- - move tilde expansion into expand_word_internal instead of many
- different calls to bash_tilde_expand scattered across different
- functions. NOTE: This means that double quotes surrounding a
- {paramOPword} expansion will cause tilde expansion to NOT be
- performed on `word'. I think this is right, what POSIX specifies,
- and consistent with the behavior of other characters in the rhs
-
-execute_cmd.c
- - take out calls to bash_tilde_expand before calling word expansion
- functions
-
- 9/26
- ----
-execute_cmd.c
- - make sure to call UNBLOCK_CHILD before returning on a pipe creation
- failure in execute_pipeline
-
- 9/27
- ----
-variables.c
- - change get_bash_command to deal with the_printed_command_except_trap
- being NULL
-
-execute_cmd.c
- - fix execute_simple_command to deal with the_printed_command being
- NULL when assigning to the_printed_command_except_trap -- fixes
- seg fault in savestring()
-
-parse.y
- - change the parser so that the closing `)' in a compound variable
- assignment delimits a token -- ksh93 does it this way
-
-doc/{bash.1,bashref.texi}
- - change description of tilde expansion to note that expansion is
- attempted only after the first =~ in an assignment statement
-
-builtins/declare.def
- - when assigning to an array variable with declare -a x=(...), make
- sure the last character in the rhs of the variable assignment is
- `)', not just that it appears somewhere
-
- 9/28
- ----
-command.h
- - add a `W_NOEXPAND' flag to inhibit all expansion except quote removal
- - add a `W_COMPASSIGN' flag to denote a word is a compound assignment
- statement
-
-parse.y
- - set W_COMPASSIGN on words that appear to be compound assignments
-
-subst.c
- - pass W_NOXPAND and W_COMPASSIGN through end of expand_word_internal
-
-subst.[ch]
- - new function, expand_assignment_string_to_string, calls
- expand_string_assignment and then string_list on the result
-
-variables.c
- - assign_in_env now calls expand_assignment_string_to_string
-
- 9/30
- ----
-builtins/common.c
- - change get_job_spec so the null job `%' once again means the current
- job
-
- 10/1
- ----
-subst.c
- - do_assignment_internal now takes a WORD_DESC * as its first
- argument, and uses its `word' member as the assignment string
- - change expand_word_list_internal to call do_word_assignment instead
- of do_assignment, passing it `word' instead of, e.g., `word->word'
- - change extract_array_assignment_list to just return the passed
- string minus a trailing `)' if the last character is a right
- paren
- - change do_assignment_internal to call extract_array_assignment_list
-
-subst.[ch]
- - change do_assignment and do_assignment_no_expand to take a `char *'
- instead of `const char *' first argument; change extern prototypes
- - new function, do_word_assignment, takes a WORD_DESC * and calls
- do_assignment_internal on it; add extern declaration with prototype
-
-general.h
- - new typedef, sh_wassign_func_t, like sh_assign_func_t but takes a
- WORD_DESC * as its first argument
-
-variables.[ch]
- - assign_in_env now takes a WORD_DESC * as its first argument
-
- 10/2
- ----
-command.h
- - new word flag, W_ASSNBLTIN, denotes that the word is a builtin
- command (in a command position) that takes assignment statements
- as arguments, like `declare'
- - new word flags, W_ASSIGNARG, denotes that word is an assignment
- statement given as argument to assignment builtin
-
-execute_cmd.c
- - set W_ASSNBLTIN flag in fix_assignment_words if necessary (if there
- are any arguments that are assignment statements)
- - set W_ASSIGNARG flag in fix_assignment_words if necessary
-
-subst.c
- - new function, do_compound_assignment, encapsulates the necessary
- code to perform a compound array assignment (including creation of
- local variables); called from do_assignment_internal
- - to fix the double-expansion problem with compound array assignments
- that are arguments to builtins like `declare', changed
- shell_expand_word_list to treat those arguments like assignment
- statements (with proper creation of local variables inside shell
- functions) and pass the attribute-setting portion of the statement
- onto the builtin. This is what ksh93 appears to do, from inspection
- of the `ksh93 -x' output
-
-execute_cmd.c
- - fix execute_simple_command: in case of pipeline or async command,
- when forking early, set `subshell_environment' so that it can contain
- both SUBSHELL_PIPE and SUBSHELL_ASYNC -- the two should not be
- mutually exclusive. Fixes bug reported by pierre.humblet@ieee.org
- - remove references to last_pid, old_command_subst_pid; use NO_PID as
- a sentinel value to decide whether or not a child process has been
- created and needs to be waited for. Submitted by
- pierre.humblet@ieee.org to fix recycling-pid problem on cygwin
-
-doc/{bash.1,bashref.texi}
- - fixed documentation of `@(pattern)' extended globbing operator --
- it succeeds if the string matches one of the patterns, not exactly
- one. This is what ksh93 does, too
-
-lib/readline/complete.c
- - fixed rl_menu_complete so that a negative argument cycles backwards
- through the list
-
- 10/3
- ----
-subst.c
- - use W_COMPASSIGN flag in do_assignment_internal instead of deciding
- lexically which assignments are compound array assignments
-
- 10/6
- ----
-support/shobj-conf
- - additions for System V.5 from Boyd Gerber <gerberb@zenez.com>
-
-subst.c
- - in command_substitute, if subshell_environment includes
- SUBSHELL_ASYNC, call make_child with the `async_p' argument set to
- non-zero. This keeps command substitutions for async commands or
- pipelines from trying to give the terminal back to the shell's
- pgrp. make sure to save and restore last_asynchronous_pid. Fix
- suggested by <pierre.humblet@ieee.org>
-
- 10/7
- ----
-config.h.in
- - add a placeholder definition for WCONTINUED_BROKEN
-
- 10/9
- ----
-aclocal.m4
- - add BASH_CHECK_WCONTINUED, checks for glibc bug where WCONTINUED is
- defined but rejected as invalid by waitpid(2)
-
-configure.in
- - add call to BASH_CHECK_WCONTINUED, defines WCONTINUED_BROKEN
-
-redir.c
- - experimental change to add_undo_redirect to save manipulations to
- file descriptors >= SHELL_FD_BASE (10) on the list of redirections
- to be undone even if `exec' causes the list to be discarded
-
-doc/{bash.1,bashref.texi}
- - note that redirections using file descriptors > 9 should be used
- carefully, because they might conflict with file descriptors the
- shell uses internally
-
- 10/11
- -----
-parse.y
- - fix pipeline_command production to handle case where `pipeline'
- as `argument' of `!' or `time' is null (e.g., a syntax error not
- handled by the grammar)
-
- 10/13
- -----
-lib/readline/readline.c
- - new internal variable, _rl_bind_stty_chars; if non-zero, bind the
- terminal special characters to readline equivalents at startup
- - change readline_default_bindings() and reset_default_bindings() to
- understand _rl_bind_stty_chars
-
-lib/readline/rlprivate.h
- - new extern declaration for _rl_bind_stty_chars
-
-lib/readline/rltty.c
- - change rl_prep_terminal to add support for _rl_bind_stty_chars
-
- 10/15
- -----
-lib/readline/bind.c
- - new bindable variable, `bind-tty-special-chars', bound to value of
- _rl_bind_stty_chars
-
-doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
- - documented new readline variable `bind-tty-special-chars'
-
-builtins/pushd.def
- - make the first check for option `--' skip the rest of option
- checking
-
- 10/16
- -----
-lib/readline/shell.c
- - change sh_set_lines_and_columns to prefer setenv, which has
- predictable memory allocation behavior, to putenv, which does not
-
- 10/19
- -----
-variables.c
- - change push_exported_var so that a tempenv variable has to have the
- export attribute set (which they all do -- something to look at) and
- the `propagate' attribute set to be propagated down to the next
- scope
-
-execute_cmd.c
- - change execute_builtin so that if CMD_COMMAND_BUILTIN is set in the
- passed flags argument, call pop_scope with a value that says the
- builtin is not special, since `command' means that preceding variable
- assignments don't persist in the environment. Fixes problem with
- variable assignments preceding command preceding special builtin
- keeping those variable assignments around (when in posix mode)
-
- 10/20
- -----
-lib/sh/shquote.c
- - new function, sh_mkdoublequoted, brackets a given string with
- double quotes and returns a new string. Flags argument, if non-
- zero, means to quote embedded double quotes with backslashes
-
-externs.h
- - new extern declaration for sh_mkdoublequoted
-
-parse.y
- - use sh_mkdoublequoted after calling localeexpand()
-
-lib/sh/strtrans.c
- - change ansicstr to understand that (flags & 4) != 0 means to remove
- backslash from unrecognized escape sequences
-
-general.c
- - fix logic problem in assignment() that caused non-variable-starter
- characters to be allowed, resulting in things like `1=xxx' creating
- a variable `1' in the hash table
-
- 10/21
- -----
-bashline.c
- - don't call programmable_completions with an assignment statement
- argument
-
- 10/22
- -----
-lib/readline/rltty.c
- - in prepare_terminal_settings, turn echoing on (readline_echoing_p)
- if get_tty_settings fails because the input is not a terminal
-
- 10/24
- -----
-lib/readline/util.c
- - include rlmbutil.h for multibyte definitions
- - new function, _rl_walphabetic, wide char version of rl_alphabetic
-
-lib/readline/mbutil.c
- - new function, _rl_char_value(buf, ind), returns value of (possibly
- multibyte) character at buf[ind]
-
-lib/readline/rlmbutil.h
- - extern defines for _rl_walphabetic and _rl_char_value for when
- multibyte chars are not being used
- - new wrapper definitions for _rl_find_next_mbchar (MB_NEXTCHAR) and
- _rl_find_prev_mbchar (MB_PREVCHAR) that try to avoid unneeded
- function calls
-
-lib/readline/text.c
- - fix rl_foward_word to work with multibyte characters (or in a
- multibyte locale) using above utility functions
- - fix rl_backward_word to work with multibyte characters (or in a
- multibyte locale) using above utility functions
-
- 10/26
- -----
-parse.y
- - fix parse_matched_pair so that it doesn't swallow \<newline> when
- parsing a $'...' construct (call shell_getc with different arg)
-
- 10/28
- -----
-lib/glob/glob.c
- - after some (compiled-in) threshold, glob_vector will stop using
- alloca to allocate `struct globval's and will switch to using
- malloc, with appropriate cleanup before returning
-
-subst.c
- - don't expand tildes after `=' in expand_word_internal, even if the
- W_TILDEEXP flag is set, unless it's the first tilde in a word
- marked W_ASSIGNMENT
-
- 10/31
- -----
-lib/readline/text.c
- - make sure rl_point doesn't go below 0 in rl_delete_horizontal_space
- (from SUSE, but not sent in)
-
-shell.c
- - make sure shell_is_restricted skips over a single leading `-' in
- the shell name (from SUSE, but not sent in)
-
-lib/readline/display.c
- - disable `fast redisplay' at the end of the line if in a locale that
- supports multibyte characters (from SUSE, but not sent in)
-
-lib/readline/histexpand.c
- - fix a problem with finding the delimiter of a `?' substring when
- compiled for multibyte characters (from SUSE, but not sent in)
-
- 11/1
- ----
-lib/readline/display.c
- - correct some assignments to _rl_last_c_pos: when in a multibyte
- locale, it's used as an absolute cursor position; when not using
- multibyte characters, it's a buffer offset. I should have caught
- this when the multibyte character support was donated
-
- 11/5
- ----
-general.c
- - change `assignment()' to accept `+=' assignment operator
-
-arrayfunc.[ch]
- - bind_array_variable and assign_array_element both take a new `flags'
- argument
- - assign_array_var_from_string, assign_array_from_string, and
- assign_array_var_from_word_list now all take a new `flags' argument
- - change assign_array_var_from_word_list to understand how to append
- to an array variable
- - change assign_array_var_from_string to understand how to append
- to an array variable. It does not unset the previous value if
- appending, allowing both old values to be changed and new ones to
- be added
-
-subst.h
- - new flag #defines to use for evaluating assignment statements
-
-{subst,variables}.c, builtins/{declare,read}.def
- - change callers of assign_array_element and bind_array_variable
- - change do_compound_assignment to understand assignment flags
- - change do_assignment_internal to set assignment flags and pass them
- to underlying functions
-
-pcomplete.c,builtins/{declare,read}.def
- - fix callers of assign_array_var_from_string, assign_array_var_from_word_list
-
-variables.[ch]
- - make_variable_value now takes a new `flags' argument
- - make_variable_value now understands how to append to a particular
- variable, using the old value
- - bind_variable_value now takes a new `flags' argument
- - change make_variable_value to understand ASS_APPEND flag
- - bind_variable now takes a new `flags' argument
- - bind_variable_internal now takes a new `flags' argument
-
-arrayfunc.c
- - change callers of make_variable_value to add flags arg
-
-builtins/declare.def
- - change callers of bind_variable_value to add flags arg
-
-{execute_cmd,mailcheck,pcomplete,shell,subst,variables}.c,parse.y
-builtins/{cd,command,declare,getopts,read,set,setattr}.def
- - change callers of bind_variable to add flags arg
-
-variables.c
- - change callers of bind_variable_internal
- - change bind_variable_internal to pass assignment flags on to
- make_variable_value
- - change assign_in_env to treat `var+=value' like `var=value'
-
-arrayfunc.c
- - break code that actually constructs the new value and assigns it
- to a particular array index out into a new functions:
- bind_array_var_internal. This fakes out make_variable_value by
- passing a dummy SHELL_VAR * so it can do proper appending and other
- += processing
- - changes to assign_array_var_from_string to accept and process as if
- they were `standalone' assignment statements array assignment words
- of the form [ind]+=val
-
- 11/7
- ----
-builtins/declare.def
- - added support for `declare [flags] var+=value'. `Flags' are applied
- before the assignment is performed, which has implications for things
- like `-i' -- if -i is supplied, arithmetic evaluation and increment
- will be performed
-
-builtins/setattr.def
- - add support for `+=' assignment for rest of `assignment builtins':
- export, readonly
-
- 11/12
- -----
-lib/readline/display.c
- - make sure prompt_physical_chars and prompt_invis_chars_first_line
- are reset to 0 if the prompt string passed to rl_expand_prompt is
- NULL or empty
-
- 11/14
- -----
-{configure,config.h}.in
- - check for `raise', define HAVE_RAISE if available
-
-lib/intl/dcigettext.c
- - make sure `raise' is defined if HAVE_RAISE is not before
- eval-plurah.h is included
-
-lib/malloc/trace.c
- - put extern declaration for imalloc_fopen inside the MALLOC_TRACE
- #ifdef
-
- 11/16
- -----
-lib/intl/Makefile.in
- - make sure SHELL is defined to cpp
-
-lib/intl/dcigettext.c
- - make sure we use getcwd() even if HAVE_GETCWD is not defined after
- including config.h; if SHELL is defined, #define HAVE_GETCWD
-
- 11/18
- -----
-trap.[ch]
- - new function, int signal_in_progress(int sig), returns TRUE if the
- trap handler for signal SIG is currently executing
-
- 11/19
- -----
-redir.c
- - slightly change do_redirection_internal to set the close-on-exec
- flag for file descriptors > 2 used to save file descriptors < 2
- using explicit redirections (e.g., `exec 3>&1'). This keeps file
- descriptors pointing to pipes from being left open but doesn't
- change the shell's file descriptor semantics
-
- 11/20
- -----
-doc/{bash.1,bashref.texi}
- - correct some minor typos, forwarded from doko@debian.org
-
- 11/22
- -----
-doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
- - documented detail that yank-last-arg and yank-nth-arg use the history
- arg expansion code (and, as a result, are subject to restrictions
- of the history-comment character)
-
- 11/23
- -----
-execute_cmd.c
- - changes so that BASH_COMMAND preserves its value into a DEBUG trap:
- for commands, arithmetic for command expressions, select commands,
- case commands, (( commands, [[ commands, simple commands
-
- 11/24
- -----
-doc/{bash.1,bashref.texi}
- - changed description of `set' builtin slightly so that it is clear
- that only variables are displayed in posix mode and that read-only
- variables can't be reset by simply sourcing the output of `set'
-
-lib/sh/strftime.c
- - don't try to redefine `inline' if it's already defined
-
- 11/26
- -----
-execute_cmd.c
- - fix execute_function to check funcname_a after function execution,
- since FUNCNAME can be changed or unset within a function
-
- 11/27
- -----
-builtins/evalfile.c
- - make same changes as 11/26, this time to _evalfile
-
-execute_cmd.c
- - change execute_function to run the return trap after a function
- completes execution even if the shell is compiled without DEBUGGER
- defined
-
-trap.c
- - change reset_or_restore_signal_handlers so that the RETURN trap is
- not inherited by command substitution when DEBUGGER is not defined
-
- 11/30
- -----
-lib/readline/misc.c
- - fix memory leaks in _rl_free_history_entry and rl_maybe_replace_line
- caused by not freeing `timestamp' member of history entry
- - make sure timestamp is initialized to NULL in rl_maybe_save_line
-
- 12/1
- ----
-execute_cmd.c
- - fix execute_function so a function calling `return' will run the
- RETURN trap, if one's defined
-
-doc/{bash.1,bashref.texi}
- - fix description of RETURN trap in various places to indicate that it's
- only inherited by shell functions if function tracing is on globally
- or has been enabled for that function
- - fix documentation to indicate that the DEBUG and RETURN traps are
- inherited under the same conditions
-
-execute_cmd.c
- - a function does not inherit the RETURN trap if a DEBUG trap is
- currently running
-
- 12/2
- ----
-lib/glob/xmbsrtowcs.c
- - change xmbsrtowcs to handle the one case where malloc can fail
- (though it should not matter) -- don't try to free a null pointer
-
- 12/9
- ----
-subst.c
- - fix get_var_and_type to handle var[@], where `var' is a scalar
- variable, identically to var -- all calling expansions can now
- handle var[@] like var. Bug reported by agriffis@gentoo.org
-
- 12/10
- -----
-lib/readline/bind.c
- - make new-style "\M-x" keybindings obey `convert-meta' settings
- (bug reported by twaugh@redhat.com)
-
- 12/14
- -----
-builtins/set.def
- - added description of `-' option to help text
-
-builtins/shopt.def
- - fix bug that caused `gnu_errfmt' to not be compiled in unless
- READLINE is defined
-
- 12/16
- -----
-subst.c
- - fixed a typo in string_extract_verbatim in first call to MBLEN
- (used `slen - 1' instead of `slen - i')
-
- 12/17
- -----
-subst.c
- - avoid some calls to strlen if the value is only being used for
- ADVANCE_CHAR and MB_CUR_MAX == 1 (since ADVANCE_CHAR doesn't need
- it unless multibyte characters are possible)
- - change string_extract_verbatim so it takes the length of the string
- as a parameter, so we don't have to recompute the length of the same
- string over and over again when doing word splitting (that kills if
- it's a long string)
-
- 12/18
- -----
-subst.c
- - in string_list_dollar_star, make sure to null-terminate the
- separator if the character is longer than one byte
-
- 12/22
- -----
-doc/{bash.1,bashref.texi}
- - changed text in quoting section explaining that double quotes do
- not prevent history expansion from taking place, and that backslashes
- escaping ! are not removed
-
- 12/28
- -----
-shell.c
- - set gnu_error_format to 1 if running under emacs. This should allow
- the emacs `next-error' stuff to work, at least for interactive shells
-
-parse.y
- - change yy_stream_get to set interrupt_immediately before calling
- getc_with_restart when the shell is interactive. This avoids the
- synchronization problem caused by the call to QUIT in read_a_line,
- which results in the first character after a SIGINT/^C to be
- dropped
-
- 12/30
- -----
-builtins/mkbuiltins.c
- - changes to write long documentation to arrays as a single string by
- default, rather than an array of strings -- enabled by default
- - new option, -S, to restore old behavior of writing multiple strings
- for long documentation
- - changes to avoid filenames written when the separate-filenames option
- (-H) has been supplied being run through gettext
-
-configure.in
- - new cofiguration option, --enable-single-help-strings (on by default),
- causes help text to be stored as a single string (or smaller set than
- one string per line)
-
-builtins/Makefile.in
- - pass `-S' to mkbuiltins if single-help-strings is turned off
-
-doc/bashref.texi
- - documented new `single-help-strings' configure option
-
- 1/3/2005
- --------
-jobs.c
- - make wait_for return a non-zero status if the job or processed
- waited for is suspended. Returns 128 + stop signal. This fixes
- the problem with `echo one && sleep 5 && echo two' displaying
- `two' after the sleep is suspended
-
- 1/5
- ---
-print_cmd.c
- - change indirection_level_string so the code duplicates the first
- character of $PS4 to indicate the indirection level, rather than
- the first byte
-
- 1/8
- ---
-variables.c
- - new special variable hook function for COMP_WORDBREAKS; sets
- rl_completer_word_break_characters back to NULL when the variable
- is unset
- - change bind_variable_value to understand dynamic variables with
- assign_function set, and handle them correctly. If the variable is
- being appended to, use make_variable_value to create the new
- value
- - change bind_variable_internal to understand dynamic variables with
- assign_function set, and handle them the same way
- - RANDOM and LINENO now get the integer attribute, so appending works
- as expected
- - ditto for HISTCMD, MAILCHECK, OPTIND
-
-lib/readline/display.c
- - change _rl_make_prompt_for_search to set prompt_physical_chars
- appropriately
- - rl_save_prompt and rl_restore_prompt save and restore
- prompt_prefix_length
- - change redraw_prompt to use rl_save_prompt and rl_restore_prompt
- - change rl_restore_prompt to set the `save' variables back to
- NULL/0 so code can check whether or not the prompt has been saved
- - change rl_message and rl_clear_message to save and restore the
- prompt if the caller has not already done it (using a simple
- semaphore-like variable)
- - change rl_message to call expand_prompt, so that local_prompt and
- local_prompt prefix are set before calling the redisplay functions,
- in case the prompt is longer than a screenwidth (fixes bug
- reported to debian by epl@unimelb.edu.au)
-
-lib/readline/doc/rltech.texi
- - make sure to note that rl_save_prompt should be called before
- rl_message, and rl_restore_prompt before rl_clear_message
-
-pcomplete.c
- - make sure to save and restore the parser state around the call to
- execute_shell_function in gen_shell_function_matches. Fixes bug
- reported by a050106.1.keeLae3x@captaincrumb.com (cute)
-
-lib/readline/readline.c
- - fix _rl_dispatch_subseq in the case where we're recursing back up
- the chain (r == -2) and we encounter a key shadowed by a keymap,
- but originally bound to self-insert. Calling rl_dispatch with
- ANYOTHERKEY as the first argument will call rl_insert, but with
- ANYOTHERKEY (256) as the char to insert. Use the shadow keymap
- and set things up to dispatch to rl_insert with the shadowed key
- as the argument. Fixes the bug reported by Thomas Glanzmann
- (sithglan@stud.uni-erlangen.de)
-
- 1/13
- ----
-command.h
- - new word flag: W_HASQUOTEDNULL
-
-make_cmd.c
- - new function to allocate a WORD_DESC * without doing anything with a
- containing string: alloc_word_desc
-
-make_cmd.h
- - extern declaration for alloc_word_desc
-
-dispose_cmd.c
- - new function to just free a WORD_DESC * without freeing the contained
- string: dispose_word_desc
-
-dispose_cmd.h
- - extern declaration for dispose_word_desc
-
-subst.c
- - change some places to use alloc_word_desc
- - make same changes to word_list_quote_removal as were made to
- word_list_split
- - set W_HASQUOTEDNULL when a word is created with w->word[0] ==
- CTLNUL and w->word[1] == '\0'
-
-subst.c
- - parameter_brace_expand_word now returns a WORD_DESC * -- changed
- callers to understand
- - parameter_brace_expand_indir now returns a WORD_DESC * -- changed
- callers to understand
- - parameter_brace_expand_rhs now returns a WORD_DESC * -- changed
- callers to understand
- - remove W_HASQUOTEDNULL from a word's flags when remove_quoted_nulls
- is called on the word's enclosed string
-
- 1/15
- ----
-subst.c
- - param_expand now returns a WORD_DESC * -- changed callers to
- understand
- - parameter_brace_expand now returns a WORD_DESC * -- changed
- callers to understand
- - in expand_word_internal, only call remove_quoted_nulls after a word
- is returned with W_HASQUOTEDNULL
- - changes to pass W_HASQUOTEDNULL flag out of expand_word_internal;
- changed callers to call remove_quoted_nulls only if return value has
- W_HASQUOTEDNULL set. This is a mostly-complete fix for the
- long-standing CTLNUL confusion between a quoted null expansion and
- the expansion of a variable with a literal '\177' in its value
- - change string_list_dollar_at to compute the separator character the
- same way as string_list_dollar_star: using the already-computed
- values generated in setifs()
- - when expanding unquoted $*, if $IFS is empty, check whether or not
- we're eventually going to split the results (e.g., on the rhs of an
- assignment statement) and concatenate the positional parameters as
- if the expansion were within double quotes if we're not going to
- split
-
-tests/iquote.tests
- - test cases based on old bug reports about the quoted-null vs. 0177
- problem the recent code fixes
-
- 1/16
- ----
-dispose_cmd.c
- - set w->word to 0 before putting a WORD_DESC * back in the cache in
- dispose_word_desc; changed callers to delete those assignments
-
-variables.c
- - change assign_random and get_random_value so that the random number
- generator only gets re-seeded once in a subshell environment, and
- assigning a value to RANDOM counts as seeding the generator. This
- makes the sequences a little more predictable
-
- 1/20
- ----
-lib/readline/history.c
- - fix replace_history_entry, remove_history to return NULL if
- passed index is < 0
-
- 1/22
- ----
-lib/sh/netconn.c
- - fix isnetconn() to understand that getpeername can return ENOTCONN
- to indicate that an fd is not a socket
-
-configure.in
- - set BUILD_DIR to contain backslashes to escape any spaces in the
- directory name -- this is what make will accept in targets and
- prerequisites, so it's better than trying to use double quotes
- - set SIZE to the appropriate value if some cross-compiling tool
- chain is being used; `size' by default (can be overridden by
- SIZE environment variable)
-
-Makefile.in
- - use $(SIZE) instead of size; set SIZE from configure
-
- 1/31
- ----
-arrayfunc.c
- - in array_value_internal, return NULL right away if the variable's
- value is NULL, instead of passing a null string to add_string_to_list
-
- 2/1
- ---
-jobs.h
- - new struct to hold stats and counters for child processes and jobs
- - change some uses of global and static variables to use members of
- new struct (struct jobstats)
-
- 2/2
- ---
-
-jobs.[ch]
- - change PRUNNING to PALIVE
- - new define INVALID_JOB
- - new macro get_job_by_jid(ind), currently expands to jobs[ind]
- - new define J_JOBSTATE, operates on a JOB * like JOBSTATE operates on
- a job index
- - new function, reset_job_indices, called from delete_job if
- js.j_lastj or js.j_firstj are removed
- - change various functions to keep counters and stats in struct jobstats
-
-pcomplete.c, builtins/common.c, builtins/{exit,fg_bg,jobs,kill,wait}.def
- - change global variables (e.g., job_slots) to struct members
- (e.g., js.j_jobslots)
- - use INVALID_JOB define where appropriate
- - use get_job_by_jid and J_JOBSTATE where appropriate
-
-trap.c
- - change reset_or_restore_signal_handler to not free the exit trap
- string if the function pointer is reset_signal, which is used when
- the trap strings shouldn't be freed, like in command substitution
-
- 2/4
- ---
-jobs.c
- - new function, realloc_jobs_list, copies jobs array to newly-allocated
- memory shrinking (or growing) size to have next multiple of JOB_SLOTS
- greater than js.j_njobs
- - change compact_jobs_list to just call reap_dead_jobs and then
- realloc_jobs_list, simplifying it considerably
- - discard_pipeline now returns `int': the number of processes freed
- - slightly changed the logic deciding whether or not to call
- compact_jobs_list: now non-interactive shells will compact the
- list if it reaches MAX_JOBS_IN_ARRAY in size
-
-parse.y
- - move test for backslash-newline after pop_string in shell_getc so
- that things like
-
- ((echo 5) \
- (echo 6))
-
- work right
-
- 2/8
- ---
-jobs.h
- - new structs for holding status of exited background processes, as
- POSIX specifies
- - new job flag: J_ASYNC
-
-jobs.c
- - new functions to manipulate struct holding status of exited
- background processes
- - new members in struct jobstats to hold pointer to last created job
- and last created asynchronous job
- - initialize js.c_childmax in initialize_job_control
- - if the `async' arg to stop_pipeline is non-null, set the J_ASYNC
- flag in the job struct
- - set js.j_last_made_job and js.j_last_asynchronous_job in
- stop_pipeline
- - new function: find_last_proc, returns the PROCESS * to the last proc
- in a job's pipeline
- - changed find_last_pid to call find_last_proc
- - change delete_job to call bgp_add on the last proc of the job being
- deleted
- - change delete_all_jobs and wait_for_background_pids to call bgp_clear
-
- 2/9
- ---
-jobs.c
- - change wait_for_single_pid to look for pid in bgpids.list (using
- bgp_search()) if find_pipeline returns NULL
-
- 2/10
- ----
-support/shobj-conf
- - change the solaris-gcc stanza so that it auto-selects the appropriate
- options for ld depending on which `ld' gcc says it's going to run
-
- 2/11
- ----
-jobs.h
- - add support for PS_RECYCLED as a process state, add PRECYCLED macro
- to test it. Change PALIVE and PRUNNING macros to not count processes
- in PS_RECYCLED state
-
-execute_cmd.c
- - restore use of last_pid as sentinel value; use NO_PID as sentinel
- only if RECYCLES_PIDS is defined
-
-jobs.c
- - change find_job to return a pointer to the PROCESS the desired pid
- belongs to, analogous to find_pipeline returning pointer to JOB
- - change find_job callers to add extra argument
- - change running_only arguments to find_pipeline and find_job to
- alive_only, since we don't want recycled pids returned here and it
- better describes the result
- - new function find_process, calls find_pipeline and searches the
- returned pipeline for the PROCESS * describing the desired pid
- - in make_child, if fork() returns the same pid as the value of
- last_asynchronous_pid when RECYCLES_PIDS is defined, avoid pid
- aliasing by resetting last_asynchronous_pid to 1
- - use PRUNNING instead of child->running, since we, for the most
- part, don't want to consider recycled pids (e.g., in make_child())
- - call find_process instead of find_pipeline in waitchld()
- - use PEXITED(p) instead of testing p->running == PS_DONE
- - in make_child, call bgp_delete to remove a just-created pid from the
- last of saved pid statuses
- - in add_process, check whether or not pid being added is already in
- the_pipeline or the jobs list (using find_process) and mark it as
- recycled if so
- - This set of fixes mostly came from Pierre Humblet
- <pierre.humblet@ieee.org> to fix pid aliasing and reuse problems on
- cygwin
-
-variables.c
- - set $_ from the environment if we get it there, set to $0 by
- default if not in env
-
-doc/{bashref.texi,bash.1}
- - a couple of clarifying changes to the description of $_ based on
- comments from Glenn Morris <gmorris+mail@ast.cam.ac.uk>
-
- 2/15
- ----
-shell.c
- - use strstr instead of strmatch when checking whether $EMACS contains
- `term' -- simpler and faster
-
- 2/18
- ----
-builtins/cd.def
- - implement posix requirement that `pwd -P' set $PWD to a directory
- name containing no symlinks
- - add new function, setpwd(), just sets (and changes exported value)
- of PWD
-
-doc/bashref.texi
- - add note to posix mode section about pwd -P setting $PWD
-
-doc{bash.1,bashref.texi}
- - added note that BASH_ARGC and BASH_ARGV are only set in extended
- debug mode
- - expand description of extdebug option to include everything changed
- by extended debug mode
-
- 2/19
- ----
-pathexp.h
- - new flag macro, FNMATCH_IGNCASE, evaluates to FNM_CASEFOLD if the
- match_ignore_case variable is non-zero
-
-execute_cmd.c
- - new variable, match_ignore_case
- - change call to strmatch() in execute_case_command so it includes
- FNMATCH_IGNCASE
-
-test.c
- - change call to strmatch() in patcomp() so that pattern matching
- calls for [[ ... ]] obey the match_ignore_case variable
-
-lib/sh/shmatch.c
- - if match_ignore_case is set, enable REG_ICASE in the regexp match
- flags
-
-builtins/shopt.def
- - new settable option, `nocasematch', controls the match_ignore_case
- variable. Currently alters pattern matching for case and [[ ... ]]
- commands (==, !=, and =~ operators)
-
-doc/{bashref.texi,bash.1}
- - updated descriptions of [[ and case to include reference to
- nocasematch option
-
- 2/22
- ----
-builtins/mkbuiltins.c
- - add `times' to the list of posix special builtins
-
- 2/23
- ----
-builtins/cd.def
- - posix mode no longer turns on effect of -P option on $PWD if a
- directory is chosen from CDPATH
-
-doc/bashref.texi
- - clarified that in posix mode, reserved words are not alias expanded
- only in a reserved word context
- - removed item about cd, $CDPATH, and -P from posix mode section
-
- 2/24
- ----
-builtins/reserved.def
- - minor cleanups to the description of `if'
-
- 3/2
- ---
-subst.c
- - change list_string and get_word_from_string to explicitly treat an
- IFS character that is not space, tab, or newline *and any adjacent
- IFS white space* as a single delimiter, as SUSv3/XPG6 says
-
-builtins/read.def
- - check whether or not the number of fields is exactly the same as
- the number of variables instead of just assigning the rest of the
- line (minus any trailing IFS white space) to the last variable.
- This parses a field and checks whether or not it consumes all of
- the input (including any trailing field delimiters), falling back
- to the previous behavior if it does not. This is what POSIX.2
- specifies, I believe (and the consensus of the austin-group list).
- This requires a few tests in read.tests to be changed: backslashes
- escaping IFS whitespace characters at the end of input cause the
- whitespace characters to be preserved in the value assigned to the
- variable, and the trailing non-whitespace field delimiter issue
-
- 3/7
- ---
-configure.in
- - add -D_POSIX_SOURCE to the LOCAL_CFLAGS for Interix
-
- 3/8
- ---
-bashline.c
- - make bash_directory_expansion a void function, since it doesn't have
- any return value
-
- 3/9
- ---
-builtins/read.def
- - when testing for a pipe, use `fd' instead of hard-coding 0, since we
- can read from other file descriptors now
-
-lib/sh/zread.c
- - in zsyncfd, only set lind and lused to 0 if the lseek succeeds.
- If the lseek fails, we might steal input from other programs, but
- a failed lseek won't cause us to erroneously discard input
-
- 3/11
- ----
-builtins/evalstring.c
- - don't allow parse_and_execute to short-circuit and call exec() if
- the command's return value is being inverted
-
- 3/15
- ----
-builtins/printf.def
- - new macro PC to call putchar and increment number of chars printed -
- fixes bug in computation of value for %n format char
- - `tw' is now a global var so printstr can modify it using PC()
- - convert PF macro to use asprintf into a local buffer
- Preparation for printf -v var
- - add code to add the text printed to a `variable buffer' if -v option
- supplied. The buffer grows as needed
- - printf now takes a `-v var' option to put the output into the variable
- VAR rather than sending it to stdout. It does not:
- print partial output on error (e.g., format string error)
- handle NULs in the variable value, as usual
-
- 3/16
- ----
-parse.y
- - fix bug in prompt string decoding that caused a core dump when PS1
- contained \W and PWD was unset (null pointer deref)
-
-builtins/printf.def
- - changed -v var behavior so it stores partial output into the named
- variable upon an error
-
- 3/24
- ----
-lib/readline/bind.c
- - bool_to_int now takes a `const char *' argument
-
-support/{printenv,recho,zecho}.c
- - include config.h
- - include "bashansi.h" for appropriate extern function declarations
-
-configure.in
- - on MacOS X 10.4, compensate for loader not allowing static library
- to override existing system dynamic library when compiling -dynamic
- (affects readline and history libraries); so use absolute pathname
- instead of -lreadline as library name
-
-lib/glob/{glob,sm_loop,smatch}.c
- - make sure to cast arguments to (char *) or (unsigned char *) as
- appropriate to avoid gcc4 warnings
-
-lib/glob/smatch.c
- - collsym (single-byte version) now takes a (CHAR *) first argument to
- match callers; cast argument to strncmp appropriately
-
-lib/sh/snprintf.c
- - fix ldfallback and dfallback to handle width and precision specs in
- the format passed to sprintf()
- - fix STAR_ARGS macro to deal with negative field widths and precisions
-
- 3/25
- ----
-builtins/printf.def
- - since a negative precision in a "x.x[fFgGeE]" format specifier should
- be allowed but treated as if the precision were missing, let it
- through
-
-lib/sh/snprintf.c
- - fix * code to deal with a negative precision by treating it as if
- the `.' and any digit string in the precision had not been specified
- - fix format parsing code to deal with a negative inline precision,
- e.g., "%4.-4f" by treating it as if the `'. and any digit string in
- the precision had not been specified
- - a `+' in a format specifier should only act as a flag if it comes
- before a `.' (otherwise it is ignored)
-
-lib/readline/vi_mode.c
- - new function, rl_vi_rubout, to rl_rubout as rl_vi_delete is to
- rl_delete; saves deleted text for possible reinsertion as with any
- vi-mode `text modification' command (fixes problem with `X' reported
- by beat.wieland@gmx.ch)
-
-lib/readline/vi_keymap.c
- - bind `X' in vi command mode to rl_vi_rubout
-
-lib/readline/funmap.c
- - add a bindable `vi-rubout' command, runs rl_vi_rubout
-
-lib/readline/text.c
- - rewrote internals of _rl_rubout_char to make structure cleaner
-
-lib/readline/{complete,text}.c
- - changed code to remove #ifdef HANDLE_MULTIBYTE where possible
-
- 3/28
- ----
-lib/readline/examples/rl.c
- - include <sys/stat.h> instead of posixstat.h if READLINE_LIBRARY not
- defined
-
-subst.c
- - fix mbstrlen to treat invalid multibyte sequences as sequences of
- single-byte characters
-
- 4/8
- ---
-configure.in
- - default SIZE to `:' if cross-compiling and an appropriate size for
- the target is not found
-
- 4/11
- ----
-subst.c
- - change match_upattern and match_wpattern to check whether or not the
- supplied pattern matches anywhere in the supplied string, prefixing
- and appending the pattern with `*' if necessary. If it doesn't we
- can short-circuit immediately rather than waste time doing up to
- N-1 unsuccessful calls to strmatch/wcsmatch (which kills for long
- strings, even if the pattern is short)
-
- 4/12
- ----
-configure.in
- - make sure the special case for MacOS X 10.4 only kicks in if the
- `--with-installed-readline' option isn't supplied
-
-lib/readline/{callback,readline,signals}.c
- - make sure rl_prep_term_function and rl_deprep_term_function aren't
- dereferenced if NULL (as the documentation says)
-
-builtins/mkbuiltins.c
- - don't bother with the special HAVE_BCOPY code; just use straight
- assignments
-
-builtins/ulimit.def
- - use _POSIX_PIPE_BUF in pipesize() if it's defined and PIPE_BUF is
- not
-
- 4/13
- ----
-execute_cmd.c
- - add cm_function_def to the list of control structures for which
- child processes are forked when pipes come in or out
-
- 4/14
- ----
-builtins/read.def
- - make sure the ^As added for internal quoting are not counted as
- characters read when -n is supplied
-
- 4/20
- ----
-redir.c
- - fix redir_open so that the repeat open on failure that AFS support
- adds restores the correct value of errno for any error message
-
- 4/26
- ----
-
-Makefile.in
- - make sure mksignames and mksyntax are invoked with the $(EXEEXT)
- extension
-
- 4/28
- ----
-lib/readline/readline.h
- - new state variable: RL_STATE_CALLBACK, means readline is using the
- callback interface
-
-lib/readline/callback.c
- - set RL_STATE_CALLBACK in rl_callback_handler_install, unset in
- rl_callback_handler_remove
-
- 4/29
- ----
-config-top.h
- - DONT_REPORT_SIGPIPE is now on by default, since it apparently
- interferes with scripts
-
-configure.in
- - arrange things so PGRP_PIPE is defined on Linux-2.4+ and version 3
- kernels (ones that apparently schedule children to run before their
- parent)
-
- 4/30
- ----
-builtins/caller.def
- - add call to no_options, so it can handle `--' option
-
-doc/{bash.1,bashref.texi}
- - note explicitly that test, :, true, and false don't understand --
- as meaning the end of options
-
- 5/7
- ---
-support/shobj-conf
- - darwin 8 needs the same LDFLAGS setting as darwin 7
-
-parse.y
- - in save_parser_state, make sure we cast the return value from
- xmalloc() to the right type
- - remove casts to (char *) in calls to yyerror()
-
-lib/readline/signals.c
- - make SIGQUIT and SIGALRM code conditional on their definition
- - use raise() to send a signal if we don't have kill()
-
-lib/readline/display.c
- - some MS-DOS and MINGW changes from the cygwin and mingw folks
-
-config.h.in
- - add HAVE_PWD_H for <pwd.h>
- - add HAVE_FCNTL, HAVE_KILL for respective system calls
- - add HAVE_GETPW{ENT,NAM,UID} for passwd functions
-
-configure.in
- - add check for <pwd.h>
- - add checks for fcntl, kill system calls
- - add checks for getpw{ent,nam,uid} C library functions
- - pass a flag indicating we're cross compiling through to
- CFLAGS_FOR_BUILD in Makefile.in
-
-lib/readline/complete.c
- - guard inclusion of <pwd.h> with HAVE_PWD_H
- - don't provide a missing declaration for getpwent if we don't have it
- - guard calls to {get,end}pwent with HAVE_GETPWENT
-
-lib/readline/shell.c
- - guard inclusion of <pwd.h> with HAVE_PWD_H
- - guard inclusion of <fcntl.h> with HAVE_FCNTL_H
- - don't provide a missing declaration for getpwuid if we don't have it
- - guard calls to getpwuid with HAVE_GETPWUID
- - don't bother with body of sh_unset_nodelay_mode if we don't have
- fcntl
-
-lib/tilde/tilde.c
- - guard inclusion of <pwd.h> with HAVE_PWD_H
- - guard calls to getpw{nam,uid} with HAVE_GETPW{NAM,UID}
- - guard calls to {get,end}pwent with HAVE_GETPWENT
-
-Makefile.in,builtins/Makefile.in
- - @CROSS_COMPILE@ is substituted into CFLAGS_FOR_BUILD (equal to
- -DCROSS_COMPILING if bash is being cross-compiled)
-
- 5/9
- ---
-aclocal.m4
- - print version as `0.0' in RL_LIB_READLINE_VERSION if the
- `rl_gnu_readline_p' variable isn't 1 (accept no imitations)
-
- 5/11
- ----
-lib/readline/rlprivate.h
- - definition of a readline `search context', to be use for incremental
- search initially and other types of search later. Original from
- Bob Rossi as part of work on incremental searching problems when
- using callback interface
-
-lib/readline/isearch.c
- - functions to allocate and free search contexts
- - function to take a search context and a character just read and
- `dispatch' on it: change search parameters, add to search string,
- search further, etc.
- - isearch is now completely context-driven: a search context is
- allocated and passed to the rest of the functions
-
- 5/12
- ----
-lib/readline/isearch.c
- - an additional `isearch cleanup' function that can be called from
- the callback interface functions when the search is to be terminated
- - an additional `isearch callback' function that can be called from
- rl_callback_read_char when input is available
- - short-circuit from rl_search_history after initialization if
- the callback interface is being used
-
-lib/readline/callback.c
- - in rl_callback_read_char(), if RL_STATE_ISEARCH is set, call
- _rl_isearch_callback to read the character and dispatch on it.
- If RL_STATE_ISEARCH is unset when that call returns, and there is
- input pending, call rl_callback_read_char() again so we don't
- have to wait for new input to pick it up
-
-support/shobj-conf,configure.in
- - add support for dragonfly bsd, the same as freebsd
-
- 5/13-5/15
- ---------
-lib/readline/callback.c
- - support for readline functions to `register' a function that will
- be called when more input is available, with a generic data
- structure to encapsulate the arguments and parameters. Primarily
- intended for functions that read a single additional character,
- like quoted-insert
- - support for callback code reading numeric arguments in a loop,
- using readline state and an auxiliary variable
- - support for callback code performing non-incremental searches using
- the same search context struct as the isearch code
-
-lib/readline/{callback,display}.c
- - if a callback function sets `_rl_redisplay_wanted', the redisplay
- function will be called as soon as it returns
-
-lib/readline/input.c
- - changes to _rl_read_mbchar to handle reading the null multibyte
- character and translating it into '\0'
-
-lib/readline/misc.c
- - break rl_digit_loop() into component functions that can be called
- individually from the callback code more easily
- - share some of the functions with rl_digit_loop1() in vi_mode.c
-
-lib/readline/readline.h
- - change the version #defines to reflect readline 5.1
-
-lib/readline/search.c
- - break code into smaller functions that can be composed to work with
- the callback code more easily
-
-lib/readline/text.c
- - in rl_quoted_insert(), don't mess around with the tty signals if
- running in `callback mode'
-
-lib/readline/vi_mode.c
- - changed set-mark, goto-mark, change-char, and char-search to work
- when called by callback functions
-
- 5/17
- ----
-
-lib/readline/rlprivate.h
- - new struct declaration for a `reading key sequence' context
-
-lib/readline/readline.c
- - new variable, _rl_dispatching_keymap, keeps track of which keymap
- we are currently searching
- - functions to allocate and deallocate contexts for reading multi-char
- key sequences
-
- 5/18
- ----
-lib/readline/rlprivate.h
- - new struct defining a context for multiple-key key sequences (the
- base case is escape-prefixed commands)
-
-lib/readline/readline.c
- - change structure of _rl_dispatch_subseq to allow for callback code
- to use it - rudimentary support for supporting the existing
- recursion using a stack of contexts, each with a reference to the
- previous
- - fix so that ^G works when in callback mode
-
-lib/readline/callback.c
- - call the appropriate multiple-key sequence callback if the state is
- set
-
- 5/19
- ----
-lib/readline/readline.c
- - broke code from _readline_internal_char after call to rl_dispatch
- out into separate function: _rl_internal_char_cleanup, callable by
- other parts of the code
- - change _rl_internal_char_cleanup to unset _rl_want_redisplay after
- it calls (*rl_redisplay_func)
-
-lib/readline/callback.c
- - call _rl_internal_char_cleanup from rl_callback_read_char when
- appropriate
-
- 5/24
- ----
-lib/readline/callback.c
- - use _rl_dispatch_callback and a chain of _rl_keyseq_contexts to
- simulate the recursion used to decode multicharacter key sequences
- (even things like ESC- as meta-prefix)
- - call setjmp in rl_callback_read_char to give things like rl_abort
- a place to jump, since the saved location in readline() will not
- be valid
- - keep calling _rl_dispatch_callback from rl_callback_read_char while
- we are still decoding a multi-key key sequence
- - keep calling readline_internal_char from rl_callback_read_char while
- we are reading characters from a macro
-
-lib/readline/macro.c
- - use a slightly different strategy upon encountering the end of a macro
- when using the callback interface: when the last character of a
- macro is read, and we are reading a command, pop the macro off the
- stack immediately so the loop in rl_callback_read_char terminates
- when it should
-
-lib/readline/readline.c
- - if longjmp() is called and we end up at the saved location while
- using the callback interface, just return -- don't go back into a
- blocking read
- - new function to dispose a chain of rl_keyseq_cxts
- - only read new input in _rl_dispatch_callback if the KSEQ_DISPATCHED
- flag is not set in the current keyseq context -- if it is, we are
- traversing the chain back up and should use what we already saved
- - use -3 as a magic value from _rl_dispatch_subseq to indicate that
- we're allocating a new context and moving downward in the chain
- (a special return value for the benefit of _rl_dispatch_callback)
-
-lib/readline/rlprivate.h
- - new extern declaration for _rl_keyseq_chain_dispose
-
- 6/1
- ---
-builtins/read.def
- - fixed a bug that occurred when reading a set number of chars and
- the nth char is a backslash (read one too many). Bug reported by
- Chris Morgan <chmorgan@gmail.com>
-
-execute_cmd.c
- - fix execute_builtin so the `unset' builtin also operates on the
- temporary environment in POSIX mode (as well as source and eval),
- so that unsetting variables in the temporary environment doesn't
- leave them set when unset completes. Report by Eric Blake
- <ebb9@byu.net>
-
-array.c
- - fix from William Park for array_rshift when shifting right on an
- empty array -- corrects calculation of array->max_index
-
-builtins/exec.def
- - if an exec fails and the execfail option is set, don't call
- restart_job_control unless the shell is interactive or job_control
- is set
-
-jobs.c
- - add a run-time check for WCONTINUED being defined in header files
- but rejected with EINVAL by waitpid(). Fix from Maciej Rozycki
- <macro@linux-mips.org>
-
- 6/20
- ----
-bashhist.c
- - make sure calls to sv_histchars are protected by #ifdef BANG_HISTORY
- - ditto for calls to history_expand_line_internal
-
- 6/23
- ----
-doc/bashref.texi
- - remove extra blank lines in @menu constructs
-
-variables.c
- - assign export_env to environ (extern char **) every time it changes
- (mostly in add_to_export_env define), so maybe getenv will work on
- systems that don't allow it to be replaced
-
- 6/29
- ----
-bashline.c
- - in bash_directory_completion_hook, be careful about not turning `/'
- into `//' and `//' into `///' for benefit of those systems that treat
- `//' as some sort of `network root'. Fix from Eric Blake
- <ebb9@byu.net>
-
-lib/readline/complete.c
- - in to_print, do the right thing after stripping the trailing slash
- from full_pathname: // doesn't turn into /, and /// doesn't become
- //. Fix from Eric Blake <ebb9@byu.net>
-
- 6/30
- ----
-lib/malloc/trace.c
- - include <unistd.h> if it's available for a definition of size_t
-
-jobs.c
- - in wait_for, if a child process is marked as running but waitpid()
- returns -1/ECHILD (e.g., when the bash process is being traced by
- strace), make sure to increment c_reaped when marking the child as
- dead
- - in without_job_control, make sure to close the pgrp pipe after
- calling start_pipeline
-
- 7/1
- ---
-Makefile.in
- - only remove pathnames.h when the other files created by running
- configure are removed (e.g., Makefile). Fix from William Park
-
-lib/sh/shquote.c
- - since backslash-newline disappears when within double quotes, don't
- add a backslash in front of a newline in sh_double_quote. Problem
- reported by William Park
-
-jobs.c
- - in notify_of_job_status, don't print status messages about
- terminated background processes unless job control is active
-
-bashhist.c
- - new variable, hist_last_line_pushed, set to 0 in really_add_history
- (used by `history -s' code)
-
-bashhist.h
- - new extern declaration for history -s
-
-builtins/history.def
- - don't remove last history entry in push_history if it was added by
- a call to push_history -- use hist_last_line_pushed as a sentinel
- and set it after adding history entry. This allows multiple
- calls to history -s to work right: adding all lines to the history
- rather than deleting all but the last. Bug reported by Matthias
- Schniedermeyer <ms@citd.de>
- - pay attention to hist_last_line_pushed in expand_and_print_history()
- so we don't delete an entry pushed by history -s
-
- 7/4
- ---
-print_cmd.c
- - fix print_arith_for_command to not print so many blanks between
- expressions in ((...))
-
-command.h
- - new word flag: W_DQUOTE. Means word should be treated as if double
- quoted
-
-make_cmd.c
- - add W_DQUOTE to word flags in make_arith_for_expr
-
-parse.y
- - add W_DQUOTE to word flags for (( ... )) arithmetic commands
-
-subst.c
- - don't perform tilde expansion on a word with W_DQUOTE flag set
- - don't perform process substitution on a word with W_DQUOTE flag set
-
-arrayfunc.c
- - expand an array index within [...] the same way as an arithmetic
- expansion between (( ... ))
-
-lib/readline/input.c
- - use getch() instead of read() on mingw
-
-lib/readline/readline.c
- - add a few key bindings for the arrow keys on mingw
-
-lib/readline/rldefs.h
- - if on mingw, define NO_TTY_DRIVER
-
-lib/readline/rltty.c
- - compile in the stub functions for _rl_{disable,restore}_tty_signals
- if on mingw
- - compile in stub function for rl_restart_output on mingw
- - make sure enough functions and macros are defined to compile if
- NO_TTY_DRIVER is defined (lightly tested - builds on MacOS X, at
- least)
-
- 7/7
- ---
-command.h
- - add a `flags' member to the PATTERN_LIST structure
-
-make_cmd.c
- - intialize the `flags' member of a PATTERN_LIST when it's created
-
-builtins/psize.c
- - protect extern declaration of errno with usual #ifdef errno
-
-configure.in, variables.c
- - changes for QNX 6.x
-
- 7/9
- ---
-parse.y
- - fix parse_matched_pair to handle single and double quoted strings
- inside old-style command substitution (``) since they can each
- quote the ` and embedded $-expansions. Report by Eric Blake
- <ebb9@byu.net>
-
-{configure,Makefile}.in
- - TILDE_LIB is now substituted into Makefile by configure
-
-configure.in
- - if configuring --with-installed-readline on cygwin, set TILDE_LIB
- to the empty string to avoid multiply-defined symbols. Cygwin
- doesn't allow undefined symbols in dynamic libraries. Report by
- Eric Blake <ebb9@byu.net>
-
- 7/11
- ----
-input.c
- - in duplicate_buffered_stream, don't call free_buffered_stream if the
- two buffered streams share the same b_buffer object (e.g., if they
- had already been duplicated with a previous call). Fixes Debian bug
- reported by eero17@bigfoot.com
-
- 7/12
- ----
-shell.c
- - make set_shell_name more resistant to a NULL argument
- - in bind_args, use < instead of != when counting the arguments and
- making the arg list
- - in main(), make sure arg_index is not initialized to a value greater
- than argc
-
- 7/14
- ----
-lib/readline/display.c
- - in expand_prompt, don't set the location of the last invisible
- char if the sequence is zero length (\[\])
-
- 7/15
- ----
-doc/{bash.1,bashref.texi}
- - document that the shell uses $TMPDIR when creating temporary files
-
- 7/20
- ----
-[bash-3.1-alpha1 frozen]
-
- 7/29
- ----
-builtins/evalstring.c
- - make sure that parse_and_execute saves and restores the value of
- loop_level, so loops in sourced scripts and eval'd strings don't
- mess up the shell's parser state
-
-bashline.c
- - change command_subst_completion_function to suppress appending
- any character to a unique completion, instead of a space, unless
- the last word in the quoted command substitution completes to a
- directory name. In that case we append the expected slash
-
- 8/1
- ---
-builtins/printf.def
- - make sure variables are initialized if their values are tested later
-
-[bash-3.1-alpha1 updated and re-frozen]
-
- 8/2
- ---
-variables.c
- - make sure to call stifle_history with an `int' instead of an intmax_t.
- Sometimes it makes a difference
-
- 8/3
- ---
-[bash-3.1-alpha1 released]
-
-support/mksignames.c
- - add `SIGSTKFLT' (RHE3)
- - add `SIGXRES' (Solaris 9)
-
- 8/4
- ---
-builtins/ulimit.def
- - fix typo to make `x' the right option for locks
- - add new options to short help synopsis
-
-variables.c
- - use get_variable_value instead of direct reference to value_cell
- in make_variable_value when appending to the current value, so
- references to array variables without subscripts will be equivalent
- to element 0
-
-lib/readline/text.c
- - rewrote rl_change_case to correctly change the case of multibyte
- characters where appropriate
-
- 8/5
- ---
-configure.in
- - remove call to obsolete macro AC_ACVERSION
- - remove special calls to AC_CYGWIN and AC_MINGW32; AC_CANONICAL_HOST
- takes care of those cases
-
-general.h
- - include `chartypes.h' for definition of ISALPHA
- - fix definitions of ABSPATH and RELPATH for cygwin
- - fix definition of ISDIRSEP for cygwin to allow backslash as a
- directory name separator
-
- 8/9
- ---
-builtins/setattr.def
- - when setting a variable from the temporary environment in
- set_var_attribute (e.g., `LC_ALL=C export LC_ALL'), make sure to
- call stupidly_hack_special_variables after binding the variable in
- the current context
-
-builtins/printf.def
- - make sure to call stupidly_hack_special_variables if using `printf -v'
- to put formatted output in a shell variable
-
- 8/11
- ----
-support/shobj-conf
- - new variable: SHLIB_LIBPREF, prefix for shared library name (defaults
- to `lib'
- - new variable: SHLIB_DLLVERSION, used on Cygwin to set the library
- version number
- - new variable: SHLIB_DOT, separator character between library name and
- suffix and version information (defaults to `.')
- - new stanza for cygwin to generate windows-compatible dll
-
- 8/14
- ----
-variables.c
- - new special variable function for Cygwin, so the export environment
- is remade when HOME is changed. The environment is the only way to
- get information from the shell to cygwin dlls, for instanace, when
- bash is compiled to use an already-installed libreadline
-
-variables.h
- - new extern declaration for sv_home
-
- 8/15
- ----
-lib/readline/display.c
- - call init_line_structures from rl_redisplay if vis_lbreaks == 0
- to avoid consequences of a poorly-timed SIGWINCH
-
- 8/16
- ----
-subst.c
- - fix logic for performing tilde expansion when in posix mode (don't
- rely on W_TILDEEXP flag always being set, because it won't be when
- expanding the RHS of assignment statement). Use W_TILDEEXP only
- when deciding to expand a word marked as W_ASSIGNMENT that doesn't
- precede a command name
-
- 8/17
- ----
-execute_cmd.c
- - in execute_function, when subshell == 1, don't short-cut by using
- the command contained in the group command -- if you do, any
- redirections attached to the group command (function) don't get
- executed
-
-general.h
- - new #define, FS_READABLE, indicates file is readable by current
- user
-
-findcmd.c
- - rewrote file_status to use S_xxx POSIX file mode bits and to add
- support for FS_READABLE (affects ./source and searching $PATH for
- scripts whose names are supplied as arguments on the command line)
- - change find_path_file to look for readable files -- source requires
- it
- - change find_in_path_element to do the right thing when FS_READABLE
- is supplied as a flag
-
-doc/bashref.texi
- - remove note about posix non-compliance in `.': we now require and
- look for readable files when searching $PATH
-
- 8/20
- ----
-subst.c
- - fix setifs to handle case where passed variable is non-zero but
- v->value == 0 (as in an unset local variable); treat IFS as unset
- in this case
-
-jobs.c
- - in kill_pid, if asked to killpg a process or pgrp whose pgrp is
- recorded as the same as the shell's, just call killpg and let the
- chips fall where they may -- there may be other processes in that
- pgrp that are not children of the shell, so killing each process
- in the pipeline will not do a complete job, and killpg'ing each
- such process will send too many signals in the majority of cases
-
-builtins/cd.def
- - in posix mode, pwd needs to check that the value it prints and `.'
- are the same file
-
-builtins/read.def
- - if reading input from stdin in a non-interactive shell and calling
- `read', call sync_buffered_stream to seek backward in the input
- stream if necessary (XXX - should we do this for all shell builtins?)
-
- 8/23
- ----
-builtins/cd.def
- - in posix mode, if canonicalization of the absolute pathname fails
- because the path length exceeds PATH_MAX, but the length of the passed
- (non-absolute) pathname does not, attempt the chdir, just as when
- not in posix mode
-
-builtins/type.def
- - don't have describe_command call sh_makepath if the full path found
- is already an absolute pathname (sh_makepath will stick $PWD onto the
- front of it)
-
- 8/24
- ----
-
-jobs.c
- - in posix mode, don't have start_job print out and indication of
- whether the job started by `bg' is the current or previous job
- - change start_job to return success if a job to be resumed in the
- background is already running. This means that bg won't fail when
- asked to bg a background job, as SUSv3/XPG6 requires
- - new function, init_job_stats, to zero out the global jobstats struct
-
-{jobs,nojobs}.c
- - change kill_pid to handle pids < -1 by killing process groups
-
-jobs.h
- - extern declaration for init_job_stats
-
-lib/readline/history.c
- - check whether or not the history list is null in remove_history
-
-builtins/history.def
- - delete_last_history is no longer static so fc builtin can use it
-
-builtins/fc.def
- - use free_history_entry in fc_replhist instead of freeing struct
- members individually
- - call delete_last_history from fc_replhist instead of using inline
- code
- - if editing (-l not specified), make sure the fc command that caused
- the editing is removed from the history list, as POSIX specifies
-
-builtins/kill.def
- - just call kill_pid with any pid argument and let it handle pids < -1
- This is the only way to let kill_pid know whether a negative pid or
- a job spec was supplied as an argument to kill
-
-builtins/fg_bg.def
- - force fg_bg to return EXECUTION_SUCCESS explicitly if called by bg
- and start_job returns successfully
- - bg now returns success only if all the specified jobs were resumed
- successfully
-
-execute_cmd.c
- - call init_job_stats from initialize_subshell to zero out the global
- job stats structure
-
- 8/25
- ----
-bashline.c
- - change vi_edit_and_execute_command to just call vi when in posix
- mode, instead of checking $FCEDIT and $EDITOR
-
-lib/readline/search.c
- - if in vi_mode, call rl_free_undo_list in make_history_line_current
- to dispose of undo list accumulated while reading the search string
- (if this isn't done, since vi mode leaves the current history
- position at the entry which matched the search, the call to
- rl_revert_line in rl_internal_teardown will mangle the matched
- history entry using a bogus rl_undo_list)
- - call rl_free_undo_list after reading a non-incremental search string
- into rl_line_buffer -- that undo list should be discarded
-
-lib/readline/rlprivate.h
- - add UNDO_LIST * member to search context struct
-
-lib/readline/isearch.c
- - initialize UNDO_LIST *save_undo_list member of search context struct
-
- 8/27
- ----
-lib/readline/bind.c
- - change rl_parse_and_bind to strip whitespace from the end of a
- variable value assignment before calling rl_variable_bind
-
-doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
- - clarified the language concerning parsing values for boolean
- variables in assignment statements
-
- 8/28
- ----
-lib/sh/pathphys.c
- - fix small memory leak in sh_realpath reported by Eric Blake
-
- 8/31
- ----
-doc/bashref.texi
- - add additional notes to posix mode section
-
- 9/3
- ---
-parse.y
- - if $'...' occurs within a ${...} parameter expansion within
- double quotes, don't single-quote the expanded result -- the double
- quotes will cause it to be expanded incorrectly
-
- 9/4
- ---
-builtins/fc.def
- - if STRICT_POSIX is defined, the posix mode default for the editor to
- use is $FCEDIT, then ed
-
-shell.c
- - if STRICT_POSIX is defined, initialize `posixly_correct' to 1
-
-config.h.in
- - add #undef STRICT_POSIX
-
- 9/5
- ---
-configure.in
- - add new option argument, --enable-strict-posix-default, configures
- bash to be posix-conformant (including defaulting echo to posix
- conformance) by default
-
-builtins/echo.def
- - if STRICT_POSIX is defined, default echo to xpg-style
-
-doc/bashref.texi
- - describe the --enable-strict-posix-default option to configure
-
- 9/10
- ----
-builtins/mkbuiltins.c
- - change to not generate N_(""), because the translated empty string is
- special to GNU gettext
-
- 9/13
- ----
-lib/readline/complete.c
- - a negative value for rl_completion_query_items means to not ask
-
-lib/readline/doc/{{rltech,rluser}.texi,readline.3}
- - documented new semantics for rl_completion_query_items/
- completion-query-items
-
- 9/14
- ----
-bashline.c
- - bind M-TAB in emacs mode to dynamic-complete-history even if the
- current binding is `tab-insert' (which is what it is by default),
- not just if it's unbound
-
- 9/15
- ----
-eval.c
- - call QUIT before calling dispose_command on current_command after
- the `exec_done' label. If we dispose current_command first, the
- longjmp might restore the value of current_command after we've
- disposed it, and the subsequent call to dispose_command from the
- DISCARD case will free memory twice
-
- 9/16
- ----
-lib/sh/strto[iu]max.c
- - make sure the function being declared is not a cpp define before
- defining it -- should fix problems on HP-UX
-
- 9/19
- ----
-Makefile.in
- - make sure the binaries for the tests are at the front of $PATH
-
- 9/22
- ----
-parse.y
- - new flag for parse_matched_pair: P_COMMAND, indicating that the
- text being parsed is a command (`...`, $(...))
- - change calls to parse_matched_pair to include P_COMMAND where
- appropriate
- - if P_COMMAND flag is set and the text is unquoted, check for comments
- and don't try to parse embedded quoted strings if in a comment (still
- not exactly right yet)
-
- 9/24
- ----
-builtins/history.def
- - if running history -n, don't count these new lines as history lines
- for the current session if the `histappend' shell option is set.
- If we're just appending to the history file, the issue that caused
- history_lines_this_session to be recalculated doesn't apply -- the
- history file won't be missing any entries
-
-lib/readline/isearch.c
- - fix C-w handler for isearch string reader to handle multibyte chars
-
-lib/readline/rlmbutil.h
- - new defines for _rl_to_wupper and _rl_to_wlower
-
-lib/readline/text.c
- - use _rl_to_wupper and _rl_to_wlower as appropriate
-
- 9/26
- ----
-execute_cmd.c
- - in shell_execve, if the exec fails due to E2BIG or ENOMEM, just print
- the appropriate error message instead of checking out any interpreter
- specified with #!
-
- 9/30
- ----
-bashhist.c
- - make $HISTCMD available anytime remember_on_history is non-zero,
- which indicates that we're saving commands to the history, and
- let it evaluate to 1 if we're not
-
- 10/4
- ----
-lib/sh/snprintf.c
- - in floating(), make sure d != 0 before calling chkinfnan -- gcc on the
- version of Solaris 9 I have translates 0 to -inf on the call
-
-[bash-3.1-beta1 frozen]
-
- 10/6
- ----
-jobs.c
- - set the_pipeline to NULL right away in cleanup_the_pipeline, and
- dispose a copy of the pointer so we don't mess with the_pipeline
- while we're in the process of destroying it
- - block and unblock SIGCHLD around manipulating the_pipeline in
- cleanup_the_pipeline
-
- 10/7
- ----
-[bash-3.1-beta1 released]
-
-lib/readline/isearch.c
- - when switching directions, make sure we turn off the SF_REVERSE
- flag in the search context's flags word if we're going from reverse
- to forward i-search
-
-lib/readline/bind.c
- - new function, rl_variable_value, returns a string representing a
- bindable readline variable's value
- - new auxiliary function, _rl_get_string_variable_value, encapsulates
- everything needed to get a bindable string variable's value
- - rewrote rl_variable_dumper to use _rl_get_string_variable_value
-
-lib/readline/readline.h
- - new extern declaration for rl_variable_value
-
-lib/readline/doc/rltech.texi
- - documented rl_variable_value
-
-bashline.c
- - in command_word_completion_function, if readline sets
- rl_completion_found_quote, but doesn't set rl_completion_quote_character,
- we have an embedded quoted string or backslash-escaped character in
- the passed text. We need to dequote that before calling
- filename_completion_function. So far, this is in place only for
- absolute program names (those containing a `/')
- - in command_word_completion_function, use rl_variable_value to decide
- whether or not we should ignore case, and use strncasecmp instead of
- strncmp where appropriate
-
- 10/11
- -----
-builtins/fc.def
- - fixed a typo when using POSIX_FC_EDIT_COMMAND
-
-redir.h
- - new flag values for redirections: RX_INTERNAL and RX_USER (currently
- unused)
-
-redir.c
- - add_undo_redirect and add_undo_close_redirect now set RX_INTERNAL
- flag when making new redirects
- - in do_redirection_internal, only set file descriptors > 2 to CLEXEC
- if they're marked as RX_INTERNAL
-
- 10/12
- -----
-jobs.c
- - in wait_for_single_pid, if in posix mode, remove the waited-for pid
- from the list of background pids, forgetting it entirely. POSIX
- conformance tests test for this.
-
-lib/readline/{readline.h,vi_mode.c}
- - new state flag, RL_STATE_VICMDONCE, set after entering vi command
- mode the first time; reset on each call to readline()
-
- 10/13
- -----
-lib/readline/undo.c
- - in rl_revert_line, make sure that revert-line in vi mode leaves
- rl_point set to 0 no matter the state of the line buffer
-
-lib/readline/vi_mode.c
- - when entering vi_command mode for the first time, free any existing
- undo list so the previous insertions won't be undone by the `U'
- command. This is how POSIX.2 says `U' should work (and the test
- suite tests for it)
-
-lib/readline/bind.c
- - change rl_parse_and_bind so only `set' commands involving boolean
- readline variables have trailing whitespace stripped from the value
- string
-
- 10/16
- -----
-lib/glob/sm_loop.c
- - fix patscan() to correctly scan backslash-escaped characters
-
- 10/18
- -----
-lib/sh/{winsize.c,Makefile.in},{jobs,nojobs}.c,Makefile.in,externs.h
- - moved get_new_window_size from jobs.c/nojobs.c to new file,
- lib/sh/winsize.c, made function global
-
-{jobs,nojobs,sig}.c,{jobs,sig}.h
- - moved SIGWINCH handling code to sig.c rather than duplicate it in
- jobs.c and nojobs.c
- - call set_sigwinch_handler from sig.c code rather than job control
- signal initialization
-
-sig.[ch]
- - new variable, sigwinch_received, acts like interrupt_state for
- SIGWINCH, set by sigwinch_sighandler. sigwinch_sighandler no longer
- calls get_new_window_size
-
-parse.y
- - add call to get_new_window_size if sigwinch_received at top of
- shell_getc
-
- 10/19
- -----
-lib/malloc/malloc.c
- - to avoid orphaning memory on free if the right bucket is busy, use a
- new function xplit(mem, bucket) to split the block into two or more
- smaller ones and add those to the right bucket (appropriately marking
- it as busy)
- - audit bsplit(), bcoalesce(), and xsplit() for proper use of busy[],
- since they're dealing with two separate buckets
-
- 10/22
- -----
-subst.c
- - new flag for string_extract: EX_REQMATCH, means to return an error
- if a matching/closing character is not found before EOS
- - new static flag variables: extract_string_error and extract_string_fatal
- - change expand_word_internal to check for new error returns from
- string_extract and return errors if appropriate
-
- 10/23
- -----
-builtins/cd.def
- - make sure we free TDIR in change_to_directory after calling
- set_working_directory (which allocates new memory) and other places
- we short-circuit and return
-
- 10/24
- -----
-subst.c
- - modified fix from 10/22 to allow bare ` to pass through (for
- some backwards compatibility and more correctness)
-
- 10/27
- -----
-conftypes.h
- - make MacOS X use the RHAPSODY code that gets HOSTTYPE, et al.
- at build rather than configure time, to support universal binaries
- (fix from llattanzi@apple.com)
-
- 10/30
- -----
-builtins/evalstring.c
- - make sure we don't turn on CMD_NO_FORK in parse_and_execute if
- we're running a trap command on signal receipt or exit
-
-execute_cmd.c
- - in shell_execve, improve the error message a little bit if the
- interpreter name in a #! exec header ends with a ^M (as in a DOS-
- format file)
-
- 11/1
- ----
-lib/readline/vi_mode.c
- - fix vi-mode `r' command to leave the cursor in the right place
-
-[bash-3.1-rc1 frozen]
-
- 11/5
- ----
-execute_cmd.c
- - make sure a DEBUG trap doesn't overwrite a command string passed to
- make_child in execute_simple_command
-
-bashline.c
- - rearrange some code in bash_quote_filename so filenames with leading
- tildes containing spaces aren't tilde-expanded before being
- returned to the caller
-
- 11/6
- ----
-lib/readline/display.c
- - when deciding where to move the cursor in rl_redisplay and needing
- to move the cursor back after moving it vertically and compensate
- for invisible characters in the prompt string, make sure that
- _rl_last_c_pos is treated as an absolute cursor position in a
- multibyte locale and the wrap offset (number of invisible characters)
- is added explicitly when deciding how many characters to backspace
-
- 11/10
- -----
-lib/readline/terminal.c
- - _rl_set_screen_size now interprets a lines or columns argument < 0
- as an indication not to change the current value
-
- 11/11
- -----
-
-lib/readline/terminal.c
- - new function, rl_reset_screen_size, calls _rl_get_screen_size to
- reset readline's idea of the terminal size
- - don't call _rl_get_screen_size in _rl_init_terminal_io if both
- _rl_screenheight and _rl_screenwidth are > 0
- - don't initialize _rl_screenheight and _rl_screenwidth to 0 in
- _rl_init_terminal_io; let caller take care of it
- - set _rl_screenheight and _rl_screenwidth to 0 before calling
- _rl_init_terminal_io
-
-lib/readline/readline.h
- - new extern declaration for rl_reset_screen_size
-
-lib/readline/doc/rltech.texi
- - documented rl_reset_screen_size
-
-variables.c
- - if readline is being used, compile in a special var function for
- assignments to LINES and COLUMNS that calls rl_set_screen_size or
- rl_reset_screen_size as appropriate. Only do this in posix mode
- and only when STRICT_POSIX is defined at compile time
- - new semaphore variable, winsize_assignment, set while doing an
- assignment to LINES or COLUMNS
- - new variable, winsize_assigned, says LINES or COLUMNS was assigned
- to or found in the environment
- - if in the middle of an assignment to LINES or COLUMNS, make
- sh_set_lines_and_columns a no-op
-
-lib/sh/winsize.c
- - get_new_window_size now takes two int * arguments, to return the
- screen dimensions
-
-externs.h
- - change extern declaration for get_new_window_size
-
-{jobs,nojobs}.c, parse.y
- - change callers of get_new_window_size
-
- 11/12
- -----
-lib/readline/terminal.c
- - new variable, rl_prefer_env_winsize, gives LINES and COLUMNS
- precedence over values from the kernel when computing window size
-
-lib/readline/readline.h
- - extern declaration for rl_prefer_env_winsize
-
-lib/readline/doc/rltech.texi
- - document rl_prefer_env_winsize
-
- 11/13
- -----
-lib/readline/rltty.c
- - change rl_prep_terminal to make sure we set and reset the tty
- special characters in the vi insertion keymap if in vi mode. This
- matters if we get accept-line for the previous line while in vi
- command mode
-
- 11/14
- -----
-builtins/pushd.def
- - make sure any call to cd_builtin includes a leading `--' from the
- argument list (or constructs one)
-
- 11/16
- -----
-pcomplete.c
- - fix small memory leak in gen_wordlist_matches
-
-[bash-3.1-rc2 frozen]
-
- 11/21
- -----
-[bash-3.1-rc2 released]
-
- 11/23
- -----
-lib/readline/display.c
- - changes to rl_redisplay to compensate for update_line updating
- _rl_last_c_pos without taking invisible characters in the line into
- account. Important in multibyte locales where _rl_last_c_pos is an
- absolute cursor position
- - changes to _rl_move_cursor_relative to account for _rl_last_c_pos
- being an absolute cursor position in a multibyte character locale
- - rewrote _rl_move_cursor_relative to make it a little simpler
-
- 11/29
- -----
-lib/readline/display.c
- - changes to rl_redisplay and update_line for update_line to communicate
- upward that it took the number of invisible characters on the current
- line into account when modifying _rl_last_c_pos
- - in update_line, adjust _rl_last_c_pos by wrap_offset before calling
- _rl_move_cursor_relative, so we pass correct information about the
- true cursor position
-
- 12/1
- ----
-configure.in
- - changed release status to `release'
-
-[bash-3.1 frozen]
-
- 12/8
- ----
-[bash-3.1 released]
-
- 12/9
- ----
-doc/{bash.1,version.texi},lib/readline/doc/version.texi
- - remove `beta1' from man page footer and texinfo documents
-
-variables.c
- - make sure winsize_assignment is protected by #ifdef READLINE, so
- minimal shell will compile
-
-builtins/read.def
- - make sure error cases free memory and run any unwind-protects to
- avoid memory leaks
-
- 12/10
- -----
-execute_cmd.c
- - change execute_command_internal to set $PIPESTATUS for ((...)) and
- [[ ... ]] commands
-
-doc/{bash.1,bashref.texi,version.texi}
- - add documentation for ulimit -[iqx] and bump revision date
-
- 12/12
- -----
-parse.y
- - make sure parse_compound_assignment saves and restores the
- PST_ASSIGNOK parser state flag around its calls to read_token.
- Fixes bug reported by Mike Frysinger
-
- 12/13
- -----
-parse.y
- - change parse_compound_assignment to save and restore the value of
- last_read_token. Not sure why it was set unconditionally in the
- first place after parsing the complete compound assignment
-
- 12/14
- -----
-lib/readline/text.c
- - don't use return value of rl_kill_text (which always succeeds and
- returns the number of characters killed) in rl_delete as an indication
- of success or failure
- - ditto for return value of rl_delete_text
-
-lib/readline/readline.c
- - don't return the value of the called readline function as the return
- value from _rl_dispatch_subseq; -1 means something different to the
- callers (return 0 all the time to indicate that a readline function
- was found and dispatched). Fix from Andreas Schwab for <DEL><DEL>
- bug in callback interface first reported by Mike Frysinger
-
-execute_cmd.c
- - fixed a typo in execute_case_command
-
- 12/15
- -----
-aclocal.m4
- - add check for wctype() to BASH_CHECK_MULTIBYTE, define HAVE_WCTYPE
-
-config.h.in
- - add HAVE_WCTYPE #define
-
-config-bot.h
- - add HAVE_WCTYPE to the set of checks for HANDLE_MULTIBYTE. This
- should catch the deficient NetBSD multibyte support
-
- 12/16
- -----
-parse.y
- - use CTLESC instead of literal '\001' when decode_prompt_string
- prefixes RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE
-
- 12/20
- -----
-lib/readline/display.c
- - don't treat RL_PROMPT_START_IGNORE specially inside a sequence of
- ignored characters
- - keep track of the start of the current sequence of ignored
- characters; make sure that an empty sequence of such characters
- really is an empty sequence, not one that happens to end with '\001'
- (RL_PROMPT_START_IGNORE)
-
- 12/21
- -----
-subst.c
- - change expand_word_internal to process rest of `tilde-word' as a
- regular part of the word if tilde expansion leaves the tilde-word
- unchanged. This means that ~$USER expands to ~chet, which seems
- more intuitive, and is effectively what bash-3.0 did
-
- 12/23
- -----
-subst.c
- - when making a local array variable in do_compound_assignment, make
- sure that we don't use a variable of the same name from a previous
- context
-
-doc/bash.1
- - documented expansions for word and patterns in case statement
-
-builtins/ulimit.def,doc/{bashref.texi,bash.1}
- - added new -e and -r (nice and rtprio) options to ulimit; documented
- them
-
- 12/26
- -----
-variables.c
- - use `hmax' instead of `num' in sv_histsize to avoid integer overflow
- problems with intmax_t
-
-builtins/read.def
- - add unwind-protect to restore rl_attempted_completion_function in
- case of a timeout
-
-{bashline,variables}.c
- - move initialization of HISTSIZE from initialization path to
- load_history, so it can be overridden by a value assigned in a
- startup file
-
-lib/readline/misc.c
- - add a missing `return r' so that rl_digit_loop returns a meaningful
- value
-
-lib/readline/{bind,callback,display,isearch,rltty,search,text,vi_mode}.c
- - minor cleanups to satisfy compiler warnings, mostly removing unused
- variables
-
- 12/27
- -----
-support/Makefile.in
- - add LIBS_FOR_BUILD support; defaults to ${LIBS}
-
-Makefile.in
- - add LIBS_FOR_BUILD with no default value; use when linking programs
- using CC_FOR_BUILD (e.g., bashversion)
-
- 12/28
- -----
-lib/readline/bind.c
- - fix rl_translate_keyseq bad translation of \M-\C-x sequences
-
-execute_cmd.c
- - in execute_arith_command, if the expression expands to more than one
- word, make sure we join the words into a single string and pass the
- entire thing to evalexp()
-
-expr.c
- - new functions: _is_arithop(c), returns true if C is a valid single-
- character arithmetic operator; _is_multiop(c), returns true if C is
- a token corresponding to a valid multi-character arithmetic operator
- - if we encounter a character that isn't a valid arithmetic
- operator, throw an error. Try to be intelligent about what type of
- error message to print
-
-subst.c
- - new function, expand_arith_string, calls expand_string_if_necessary;
- used where an arithmetic expression needs to be expanded
-
-subst.h
- - new extern declaration for expand_arith_string
-
-arrayfunc.c
- - in array_expand_index, call expand_arith_string to expand the
- subscript in a fashion consistent with other arithmetic expressions
-
-subst.c
- - fix parameter_brace_patsub so that we don't try to anchor the pattern
- at the beginning or end of the string if we're doing global
- replacement -- that combination doesn't doesn't make sense, and
- the changed behavior is compatible with ksh93
-
-doc/{bash.1,bashref.texi}
- - changed description of pattern substitution to match the new
- semantics
-
-tests/new-exp.tests
- - change tests to remove all ${pat//#rep} and ${pat//%rep}
- expansions, since they don't mean the same thing anymore
-
- 12/29
- -----
-support/signames.c
- - new file, initialize_signames() function from old mksignames.c. This
- file builds the signal_names array
-
-support/mksignames.c
- - strip out initialize_signames(), move to signames.c. This file only
- writes signames.h
- - set up to only write a stub signames.h if CROSS_COMPILING is defined,
- with extern declaration for initialize_signames
- - if not cross compiling, #define initialize_signames to nothing
-
-Makefile.in
- - mksignames is now linked from mksignames.o and buildsignames.o
- - add rules to build signames.o, assuming we're building it as part
- of the shell (cross-compiling)
-
-trap.c
- - call initialize_signames from initialize_traps
-
-configure.in
- - set SIGNAMES_O to nothing (normal) or signames.o (cross-compiling),
- substitute into Makefile
- - don't set SIGNAMES_H if cross-compiling any more
-
- 12/30
- -----
-command.h
- - new word flag: W_NOPROCSUB, inhibits process substitution on a word
-
-subst.c
- - change expand_word_internal to suppress process substitution if the
- word has the W_NOPROCSUB flag
-
-shell.c
- - --wordexp turns on W_NOPROCSUB in addition to W_NOCOMSUB
-
-subst.c
- - change string_list_dollar_at and string_list_dollar_star so that
- MB_CUR_MAX is used to size an array only when using gcc, since gcc
- can handle non-constant array sizes using a mechanism like alloca.
- Other compilers, e.g. Sun's compiler, do not implement that
- extension
-
- 12/31
- -----
-builtins/mkbuiltins.c
- - when cross-compiling, don't include <config.h>, since it's for the
- target rather than the host system. Instead, choose a reasonable
- set of default #defines based on a minimal POSIX system
-
-jobs.c
- - change find_process to handle a NULL return value from find_pipeline
- - return immediately from delete_job if jobs[index] is already NULL or
- if it has a null pipeline associated with it
- - in delete_job, if find_last_proc returns NULL, don't try to call
- bgp_delete
-
- 1/7
- ---
-doc/bash.1
- - patch from Tim Waugh to replace some literal single quotes with
- \(aq, the groff special character for it
-
-jobs.c
- - in realloc_jobs_list, make sure to zero out slots after j_lastj
- in the new list
-
- 1/9
- ---
-support/mksignames.c
- - make sure to include <signal.h> to get right value of NSIG from
- (usually) <sys/signal.h>
-
- 1/10
- ----
-parse.y
- - when calling parse_matched_pair on a $(...) command substitution,
- don't pass the P_DQUOTE flag so that single quotes don't get
- stripped from $'...' inside the command substitution. Bug report
- and fix from Mike Stroyan <mike.stroyan@hp.com>
-
-jobs.c
- - start maintaining true count of living children in js.c_living
- - call reset_current in realloc_jobs_list, since old values for current
- and previous job are most likely incorrect
- - don't allocate a new list in realloc_jobs_list if the old size and
- new size are the same; just compact the existing list
- - make sure realloc_jobs_list updates value of js.j_njobs
- - add some more itrace messages about non-null jobs after j_lastj in
- jobs array
-
- 1/11
- ----
-bashjmp.h
- - new value for second argument to longjmp: SIGEXIT. Reserved for
- future use
-
- 1/12
- ----
-jobs.c
- - add logic to make_child to figure out when pids wrap around
- - turn second argument to delete_job into flags word, added flag to
- prevent adding proc to bgpids list
-
- 1/13
- ----
-lib/readline/vi_mode.c
- - move code that moves forward a character out of rl_vi_append_mode
- into a separate function, _rl_vi_append_forward
- - change _rl_vi_append_mode to save `a' as the last command, so it
- can be redone properly
- - new function _rl_vi_backup, moves point back a character taking
- multibyte locales into account
- - change rl_vi_redo to handle redoing an `a' command specially --
- it should be redone like `i' but after moving forward a character
- - change rl_vi_redo to use _rl_vi_backup to move point backward
- after redoing `i' or `a'
-
-jobs.c
- - new function, delete_old_job (pid), checks whether or not PID is in
- a job in the jobs list. If so, and the job is dead, it just removes
- the job from the list. If so, and the job is not dead, it zeros
- the pid in the appropriate PROCESS so pid aliasing doesn't occur
- - make_child calls delete_old_job to potentially remove an already-used
- instance of the pid just forked from the jobs list if pids have
- wrapped around. Finally fixes the bug reported by Tim Waugh
- <twaugh@redhat.com>
-
-trap.c
- - new define, GETORIGSIG(sig), gets the original handling for SIG and
- sets SIG_HARD_IGNORE if that handler is SIG_IGN
- - call GETORIGSIG from initialize_traps, get_original_signal, and
- set_signal
-
-jobs.c
- - in wait_for, if the original SIGINT handler is SIG_IGN, don't set
- the handler to wait_sigint_handler. This keeps scripts started in
- the background (and ignoring SIGINT) from dying due to SIGINT while
- they're waiting for a child to exit. Bug reported by Ingemar
- Nilsson <init@kth.se>
-
-lib/readline/vi_mode.c
- - don't save text to buffer unless undo pointer points to a record of
- type UNDO_INSERT; zero it out instead. This fixes bug reported by
- Craig Turner <craig@synect.com> with redoing `ctd[ESC]' (empty
- insert after change to)
-
-shell.c
- - change set_shell_name so invocations like "-/bin/bash" are marked as
- login shells
-
-doc/bash.1
- - add note about destroying functions with `unset -f' to the section
- on shell functions
-
-lib/readline/terminal.c
- - if readline hasn't been initialized (_rl_term_autowrap == -1, the
- value it's now initialized with), call _rl_init_terminal_io from
- _rl_set_screen_size before deciding whether or not to decrement
- _rl_screenwidth. Fixes bug from Mike Frysinger <vapier@gentoo.org>
-
- 1/14
- ----
-lib/readline/input.c
- - allow rl_set_keyboard_input_timeout to set the timeout to 0, for
- applications that want to use select() like a poll without any
- waiting
-
-lib/readline/doc/rltech.texi
- - documented valid values for timeout in rl_set_keyboard_input_timeout
-
-jobs.c
- - in stop_pipeline, don't have the parent shell call give_terminal_to
- if subshell_environment contains SUBSHELL_ASYNC (no background
- process should ever give the terminal to anything other than
- shell_pgrp)
- - in make_child, don't give the terminal away if subshell_environment
- contains SUBSHELL_ASYNC
-
- 1/15
- ----
-subst.c
- - in parameter_brace_expand, if extracting ${#varname}, only allow
- `}' to end the expansion, since none of the other expansions are
- valid. Fixes Debian bug reported by Jan Nordhorlz <jckn@gmx.net>
-
- 1/17
- ----
-parse.y
- - in parse_matched_pair, protect all character tests with the MBTEST
- macro
- - in parse_dparen, take out extra make_word after call to alloc_word_desc
- (mem leak)
-
- 1/18
- ----
-parse.y
- - in parse_matched_pair, add P_ALLOWESC to flags passed to recursive
- parse_matched_pair call when encountering a single or double quote
- inside a ``-style command substitution
-
-execute_cmd.c
- - add call to QUIT at beginning of execute_command_internal; better
- responsiveness to SIGINT
-
- 1/21
- ----
-lib/readline/bind.c
- - change rl_invoking_keyseqs_in_map to honor the setting of
- convert-meta when listing key bindings, since if convert-meta is off,
- using '\M-' as the prefix for bindings in, for instance,
- emacs-escape-keymap, is wrong. This affects `bind -p' output
- - change rl_untranslate_keyseq to add '\e' instead of '\C-[' for
- ESC
-
-execute_cmd.c
- - add call to QUIT at end of execute_command
-
- 1/23
- ----
-lib/readline/display.c
- - changed two places in update_line where a check of whether the cursor
- is before the last invisible character in the prompt string to
- differentiate between the multibyte character case (where
- _rl_last_c_pos is a physical cursor position) and the single-byte
- case (where it is a buffer index). This prevents many unnecessary
- \r-redraw the line sequences. Reported by Dan Jacobson.
-
- 1/24
- ----
-quit.h
- - wrap QUIT macro in do...while(0) like other compound statement
- macros
- - CHECK_TERMSIG define (placeholder for now); future use will be to
- handle any received signals that should cause the shell to
- terminate (e.g., SIGHUP)
-
-{input,jobs,nojobs}.c
- - add calls to CHECK_TERMSIG where appropriate (reading input and
- waiting for children)
- - include quit.h if necessary
-
- 1/25
- ----
-parse.y
- - undo change that makes `)' in a compound assignment delimit a token.
- It messes up arithmetic expressions in assignments to `let', among
- other things
-
-sig.h,{jobs,nojobs,sig,trap}.c,builtins/trap.def
- - rename termination_unwind_protect to termsig_sighandler
-
-sig.c
- - split termsig_sighandler into two functions: termsig_sighandler, which
- runs as a signal handler and sets a flag noting that a terminating
- signal was received, and termsig_handler, which runs when it is `safe'
- to handle the signal and exit
- - new terminate_immediately variable, similar to interrupt_immediately
- - termsig_sighandler calls termsig_handler immediately if
- terminate_immediately is non-zero
-
-quit.h
- - change CHECK_TERMSIG macro to check terminating_signal and call
- termsig_handler if it's non-zero
- - add same check of terminating_signal and call to termsig_handler to
- QUIT macro
-
-{jobs,nojobs}.c
- - change call to termsig_sighandler to call termsig_handler directly,
- as was intended
-
-parse.y,builtins/read.def
- - set terminate_immediately to non-zero value when reading interactive
- input, as is done with interrupt_immediately
-
- 1/26
- ----
-doc/{bash.1,bashref.texi}
- - reworded the POSIX standard references to remove mention of POSIX.2
- or 1003.2 -- it's all the 1003.1 standard now. Recommended by
- Arnold Robbins
-
- 1/27
- ----
-lib/readline/complete.c
- - move call to filename dequoting function into
- rl_filename_completion_function; call only if directory completion
- hook isn't set. This means that directory-completion-hook now needs
- to dequote the directory name. We don't want to dequote the directory
- name before calling the directory-completion-hook. Bug reported by
- Andrew Parker <andrewparker@bigfoot.com>
-
-bashline.c
- - add necessary directory name dequoting to bash_directory_completion_hook
- and bash_directory_expansion
-
-lib/readline/doc/rltech.texi
- - add note to description of rl_directory_completion_hook that it
- needs to dequote the directory name even if no other expansions are
- performed
-
- 1/28
- ----
-braces.c
- - make sure that we skip over braces that don't start a valid matched
- brace expansion construct in brace_expand -- there might be a valid
- brace expansion after the unmatched `{' later in the string
- - brace_gobbler now checks that when looking for a `}' to end a brace
- expansion word, there is an unquoted `,' or `..' that's not inside
- another pair of braces. Fixes the a{b{c,d}e}f problem reported by
- Tim Waugh
-
-builtins/declare.def
- - when not in posix mode, and operating on shell functions, typeset
- and declare do not require their variable operands to be valid
- shell identifiers. The other `attribute' builtins work this way.
- Fixes inconsistency reported by Mike Frysinger
-
-{configure,config.h}.in
- - add test for setregid, define HAVE_SETREGID and HAVE_DECL_SETREGID
- as appropriate
- - add test for eaccess, define HAVE_EACCESS if found
-
-lib/sh/eaccess.c
- - new file, with sh_stat and sh_eaccess functions, moved from test.c
- - renamed old sh_eaccess as sh_stataccess, since it uses the stat(2)
- information to determine file accessibility
- - new function, sh_euidaccess, to call when uid != euid or gid != egid;
- temporarily swaps uid/euid and gid/egid around call to access
- - rewrote sh_eaccess to call eaccess, access, sh_euidaccess or
- sh_stataccess as appropriate. access(2) will take into account
- things like ACLs, read-only file systems, file flags, and so on.
-
-lib/sh/Makefile.in,Makefile.in
- - add necessary entries for eaccess.[co]
-
-test.c
- - change calls to test_stat to call sh_stat
-
-{test,general}.c
- - change calls to test_eaccess to call sh_eaccess
-
-externs.h
- - new extern declaration for sh_eaccess
-
-test.[ch]
- - remove test_stat and test_eaccess
-
- 1/29
- ----
-braces.c
- - make change from 1/28 dependant on CSH_BRACE_COMPAT not being
- defined (since old bash behavior is what csh does, defining
- CSH_BRACE_COMPAT will produce old bash behavior)
-
- 1/30
- ----
-bashline.c
- - last argument of bash_default_completion is now a flags word:
- DEFCOMP_CMDPOS (in command position) is only current value
- - attempt_shell_completion now computes flags before calling
- bash_default_completion
- - if no_empty_command_completion is set, bash does not attempt command
- word completion even if not at the beginning of the line, as long
- as the word to be completed is empty and start == end (catches
- beginning of line and all whitespace preceding point)
-
- 2/4
- ---
-lib/readline/display.c
- - change _rl_make_prompt_for_search to use rl_prompt and append the
- search character to it, so the call to expand_prompt in rl_message
- will process the non-printing characters correctly. Bug reported
- by Mike Stroyan <mike.stroyan@hp.com>
-
- 2/5
- ---
-lib/readline/display.c
- - fix off-by-one error when comparing against PROMPT_ENDING_INDEX,
- which caused a prompt with invisible characters to be redrawn one
- extra time in a multibyte locale. Change from <= to < fixes
- multibyte locale, but I added 1 to single-byte definition of
- PROMPT_ENDING_INDEX (worth checking) to compensate. Bug reported
- by Egmont Koblinger <egmont@uhulinux.hu>
-
- 2/8
- ---
-lib/readline/terminal.c
- - call _emx_get_screensize with wr, wc like ioctl code for consistency
- - new function, _win_get_screensize, gets screen dimensions using
- standard Windows API for mingw32 (code from Denis Pilat)
- - call _win_get_screensize from _rl_get_screen_size on mingw32
-
-lib/readline/rlconf.h
- - define SYS_INPUTRC (/etc/inputrc) as system-wide default inputrc
- filename
-
-support/shobj-conf
- - changes to make loadable builtins work on MacOS X 10.[34]
-
-builtins/pushd.def
- - changes to make it work as a loadable builtin compiled with gcc4
-
- 2/9
- ---
-lib/readline/bind.c
- - add SYS_INPUTRC as last-ditch default (if DEFAULT_INPUTRC does not
- exist or can't be read) in rl_read_init_file
-
-lib/readline/doc/rluser.texi
- - add description of /etc/inputrc as ultimate default startup file
-
- 2/10
- ----
-lib/readline/bind.c
- - fix problem with rl_function_of_keyseq that returns a non-keymap
- bound to a portion of the passed key sequence without processing
- the entire thing. We can bind maps with existing non-map
- functions using the ANYOTHERKEY binding code.
-
-variables.c
- - shells running in posix mode do not set $HOME, as POSIX apparently
- requires
-
- 2/15
- ----
-braces.c
- - mkseq() now takes the increment as an argument; changed callers
-
- 2/16
- ----
-builtins/hash.def
- - print `hash table empty' message to stdout instead of stderr
-
- 2/17
- ----
-lib/readline/readline.c
- - when resetting rl_prompt in rl_set_prompt, make sure rl_display_prompt
- is set when the function returns
-
- 2/18
- ----
-lib/readline/display.c
- - further fixes to _rl_make_prompt_for_search from Eric Blake to deal
- with multiple calls to expand_prompt
-
- 2/21
- ----
-builtins/hash.def
- - don't print `hash table empty' message in posix mode
-
- 2/27
- ----
-lib/glob/sm_loop.c
- - change extmatch() to turn off FNM_PERIOD in flags passed to recursive
- calls to gmatch() when calling it with a substring after the start
- of the string it receives. Changed `+', `*', `?, `@', and `!' cases
- to do the right thing. Fixes bug reported by Benoit Vila
- <bvila@free.fr>
-
-braces.c
- - add QUIT; statements to mkseq to make large sequence generation
- interruptible
-
- 2/28
- ----
-lib/glob/glob.c
- - initialize nalloca in glob_vector
-
- 3/1
- ---
-lib/glob/glob.c
- - in glob_vector, when freeing up the linked list after some error,
- make sure to set `tmplink' to 0 if `firstlink' is set to 0, else we
- get multiple-free errors
-
- 3/5
- ---
-trap.c
- - inheritance of the DEBUG, RETURN, and ERR traps is now dependent
- only on the `functrace' and `errtrace' shell options, as the
- documentation says, rather than on whether or not the shell is in
- debugging mode. Reported by Philip Susi <psusi@cfl.rr.com>
-
-parse.y
- - in parse_matched_pair, don't recursively parse ${...} or other
- ${...} constructs inside ``
- - in parse_matched_pair, remove special code that recursively parses
- quoted strings inside `` constructs. For Bourne shell compatibility
-
- 3/6
- ---
-builtins/pushd.def
- - let get_directory_stack take take an `int flags' argument and convert
- $HOME to ~ if flags&1 is non-zero
-
-builtins/common.h
- - change extern declaration for get_directory_stack
-
-variables.c
- - call get_directory_stack with an arg of 0 to inhibit converting
- $HOME to ~ in the result. Fixes cd ${DIRSTACK[1]} problem
- reported by Len Lattanzi <llattanzi@apple.com> (cd fails because
- the tildes won't be expanded after variable expansion)
-
-jobs.c
- - changed hangup_all_jobs slightly so stopped jobs marked J_NOHUP
- won't get a SIGCONT
-
-general.c
- - changed check_binary_file() to check for a NUL byte instead of a
- non-printable character. Might at some point want to check
- entire (possibly multibyte) characters instead of just bytes. Hint
- from ksh via David Korn
-
- 3/7
- ---
-builtins/reserved.def
- - changed runs of spaces to tabs in variables help text to make
- indentation better when displayed
-
-builtins/mkbuiltins.c
- - changes to avoid the annoying extra space that keeps gettext from
- being passed an empty string
-
- 3/9
- ---
-lib/glob/glob.c
- - make sure globbing is interrupted if the shell receives a terminating
- signal
-
- 3/14
- ----
-lib/readline/search.c
- - call rl_message with format argument of "%" in _rl_nsearch_init
- to avoid `%' characters in the prompt string from being interpreted
- as format specifiers to vsnprintf/vsprintf
-
- 3/19
- ----
-parse.y, eval.c, input.h
- - change execute_prompt_command to execute_variable_command; takes the
- variable name as a new second argument
-
- 3/25
- ----
-bashline.c
- - command_word_completion_function keeps track of when it's searching
- $PATH and doesn't return directory names as matches in that case.
- Problem reported by Pascal Terjan <pterjan@mandriva.com>
- - command_word_completion_function returns what it's passed as a
- possible match if it's the name of a directory in the current
- directory (only non-absolute pathnames are so tested).
-
- 3/27
- ----
-subst.c
- - expand_arith_string takes a new argument: quoted. Either 0 (outside
- subst.c) or Q_DOUBLE_QUOTES (substitution functions); changed callers
-
-subst.h
- - changed extern declaration for expand_arith_string
-
-arrayfunc.c
- - changed call to expand_arith_string in array_expand_index
-
- 3/31
- ----
-lib/readline/histfile.c
- - change read_history_range to allow windows-like \r\n line endings
+ 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>
+ 11/15
+ -----
execute_cmd.c
- - add new variable, line_number_for_err_trap, currently set but not
- used
-
- 4/2
- ---
-lib/sh/strtrans.c
- - add code to echo -e and echo with xpg_echo enabled to require
- a leading 0 to specify octal constants
-
- 4/3
- ---
-subst.c
- - slight change to wcsdup() replacement: use memcpy instead of wcscpy
-
-parse.y
- - before turning on W_COMPASSIGN, make sure the final character in the
- token is a `(' (avoids problems with things like a=(4*3)/2)
+ - 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>
- 4/4
- ---
-lib/sh/snprintf.c
- - in number() and lnumber(), turn off PF_ZEROPAD if explicit precision
- supplied in format
- - change number() and lnumber() to correctly implement zero-padding
- specified by a non-zero `.precision' part of the format
-
-subst.c
- - new flag for extract_delimited_string: EX_COMMAND. For $(...), so
- we can do things like skip over delimiters in comments. Added to
- appropriate callers
- - changes to extract_delimited_string to skip over shell comments when
- extracting a command for $(...) (EX_COMMAND is contained in the
- flags argument)
-
- 4/5
- ---
-subst.c
- - first argument to skip_single_quoted is now a const char *
- - new function, chk_arithsub, checks for valid arithmetic expressions
- by balancing parentheses. Fix based on a patch from Len Lattanzi
-
- 4/6
- ---
-{configure,config.h}.in
- - add separate test for isnan in libc, instead of piggybacking on
- isinf-in-libc test
+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>
-lib/sh/snprintf.c
- - separate the isnan replacement function so it's guarded by its own
- HAVE_ISNAN_IN_LIBC define
+ 11/20
+ -----
+[bash-4.3-rc1 frozen]
-lib/sh/wcsdup.c
- - new file, contains replacement wcsdup library function from subst.c
- with change back to using wcscpy
+ 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>
-Makefile.in,lib/sh/Makefile.in
- - make sure wcsdup.c is compiled and linked in
+ 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>
-subst.c
- - wcsdup now found in libsh; removed static definition
+ 11/30
+ -----
+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
- 4/10
+ 12/2
----
-lib/readline/callback.c
- - loop over body of rl_callback_read_char as long as there is additional
- input rather than just calling readline_internal_char, which does
- not handle multi-character key sequences or escape-prefixed chars
+lib/readline/{histexpand.c
+ - get_history_event: account for current_history() possibly returning
+ NULL. Report and fix from Pankaj Sharma <pankaj.s01@samsung.com>
-lib/readline/macro.c
- - make sure we turn off RL_STATE_MACROINPUT when the macro stack is
- empty if we are reading additional input with RL_STATE_MOREINPUT
-support/shobj-conf
- - Mac OS X no longer likes the `-bundle' option to gcc when creating a
- dynamic shared library
+ 12/11
+ -----
- 4/11
- ----
-lib/tilde/tilde.c
- - don't try to dereference user_entry if HAVE_GETPWENT isn't defined
+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>
-lib/readline/input.c
- - make sure chars_avail is not used without being assigned a value in
- rl_gather_tyi
- - use _kbhit() to check for available input on Windows consoles, in
- rl_gather_tyi and _rl_input_available
+ 12/13
+ -----
- 4/21
- ----
-lib/readline/display.c
- - calculate (in expand_prompt) and keep track of length of local_prompt
- in local_prompt_len; use where appropriate
- - when using o_pos to check whether or not we need to adjust
- _rl_last_c_pos after calling update_line, assume that it's correct
- (a buffer index in non-multibyte locales and a cursor position in
- multibyte locales) and adjust with wrap_offset as appropriate
- - in update_line, set cpos_adjusted to 1 after calling
- _rl_move_cursor_relative to move to the end of the displayed prompt
- string
- - in _rl_move_cursor_relative, check that the multibyte display
- position is after the last invisible character in the prompt string
- before offsetting it by the number of invisible characters in the
- prompt (woff)
+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
- 4/26
- ----
-lib/readline/doc/{rluser.texi,readline.3}
- - make sure to note that key bindings don't allow any whitespace
- between the key name or sequence to be bound and the colon
+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>
- 4/28
- ----
-lib/readline/display.c
- - in update_line, make sure we compare _rl_last_c_pos as strictly less
- than PROMPT_ENDING_INDEX, since it's 0-based, to avoid multiple
- prompt redraws
+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>
- 5/4
- ---
+ 12/17
+ -----
+support/config.{guess,sub}
+ - updated to latest versions from git
+
+ 12/19
+ -----
parse.y
- - in decode_prompt_string, only prefix the expansion of \[ or \]
- with CTLESC if the corresponding readline escape character is
- CTLESC (coincidentally the same as \[) or CTLNUL. Bug report sent
- by Mike Frysinger <vapier@gentoo.org> prompted the discovery
+ - 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
-aclocal.m4
- - slight change to test for /dev/fd to compensate for a linux
- failing; suggested by Mike Frysinger <vapier@gentoo.org>
+externs.h
+ - parser_expanding_alias, parser_save_alias, parser_restore_alias: new
+ extern function declarations
- 5/9
- ---
-arrayfunc.c
- - broke assign_array_var_from_string into two functions:
- expand_compound_array_assignment and assign_compound_array_list;
- assign_array_var_from_string just calls those functions now
+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.
-arrayfunc.h
- - new extern declarations for expand_compound_array_assignment and
- assign_compound_array_list
+ 12/23
+ -----
+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>
-subst.c
- - in do_compound_assignment, call expand_compound_array_assignment
- before creating the local variable so a previous inherited
- value can be used when expanding the rhs of the compound assignment
- statement
+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
- 5/11
- ----
-doc/{bash.1,bashref.texi}
- - clarifed `trap' description to make it clear that trapped signals
- that are not set to SIG_IGN are reset when a subshell is created
+ 12/27
+ -----
+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>
- 5/18
- ----
-locale.c
- - change reset_locale_vars to call setlocale (LC_ALL, "") if LANG
- is unset or NULL
- - if LANG is unset or NULL, reset the export environment before
- calling setlocale in reset_locale_vars, and trust that it will
- change the environment setlocale() inspects
+Makefile.in
+ - install: make sure to use $(DESTDIR) when installing OTHER_DOCS.
+ Report and fix from Matthias Klose <doko@debian.org>
- 5/21
- ----
-lib/readline/history.c
- - new function, HIST_ENTRY *alloc_history_entry (char *string, char *ts);
- creates a new history entry with text STRING and timestamp TS (both
- of which may be NULL)
- - new function, HIST_ENTRY *copy_history_entry (HIST_ENTRY *hist),
- which copies the line and timestamp entries to new memory but just
- copies the data member, since that's an opaque pointer
- - new function, void replace_history_data (int which, histdata_t *old, histdata_t *new)
- which replaces the `data' member of specified history entries with
- NEW, as long as it is OLD. WHICH says which history entries to
- modify
- - add calls to replace_history_data in rl_free_undo_list and
- rl_do_undo
+doc/texinfo.tex
+ - updated to version of 2013-09-11
+ 12/28
+ -----
lib/readline/undo.c
- - new function, alloc_undo_entry (enum undo_code what, int start, int end, char *text)
- takes care of allocating and populating a struct for an individual
- undo list entry
- - new function: _rl_copy_undo_entry(UNDO_LIST *entry)
- - new function: _rl_copy_undo_list(UNDO_LIST *head)
+ - 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>
-lib/readline/rlprivate.h
- - new extern declarations for _rl_copy_undo_{entry,list}
+ 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
-execute_cmd.c
- - change execute_cond_node so that quoting the rhs of the =~
- operator forces string matching, like the == and != operators
+ 12/31
+ -----
+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]
- 5/23
- ----
-redir.c
- - add_undo_redirect now takes as an additional argument the type of
- redirection we're trying to undo
- - don't add a "preservation" redirection for fds > SHELL_FD_BASE if
- the redirection is closing the fd
+trap.h
+ - set_signal_hard_ignored: new external declaration
- 5/24
- ----
-subst.c
- - make sure that parameter_brace_substring leaves this_command_name
- set to either NULL or its previous value after setting it so that
- arithmetic evaluation errors while expanding substring values
- contain meaningful information
+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
- 6/9
- ---
execute_cmd.c
- - make sure that SUBSHELL_ASYNC and SUBSHELL_PIPE are set as flag bits
- in subshell_environment, rather than setting only a single value
- - change execute_subshell_builtin_or_function to give the `return'
- builtin a place to longjmp to when executed in a subshell or pipeline
- (mostly as the last command in a pipeline). Bug reported by
- Oleg Verych <olecom@gmail.com>
- - in execute_simple_command, make sure to call execute_disk_command
- with the_printed_command_except_trap to keep DEBUG trap command
- strings from overwriting the command strings associated with jobs
- and printed in job control messages. Bug reported by Daniel Kahn
- Gillmor <dkg-debian.org@fifthhorseman.net>
-
-[bash-3.2-alpha frozen]
-
- 6/22
- ----
-syntax.h
- - add new CBLANK (for [:blank:] class) flag value for syntax table and
- shellblank(c) character test macro
-
-mksyntax.c
- - add support for setting CBLANK flag in the syntax table depending on
- whether or not isblank(x) returns true for character x
-
-locale.c
- - change locale_setblanks to set or unset CBLANK flag for each
- character when locale changes
-
-parse.y
- - change call to whitespace(c) in lexical analyzer (read_token()) to
- call shellblank(c) instead, so locale-specific blank characters are
- treated as white space. Fixes bug reported by Serge van deb Boom
- <svdb+bug-bash@stack.nl>
+ - 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
-print_cmd.c
- - when printing redirections, add a space between <, >, and <> and the
- following word, to avoid conflicts with process substitution. Bug
- reported by Ittay Dror <ittyad@qlusters.com>
+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
- 6/26
- ----
-configure.in
- - set CROSS_COMPILE to the empty string by default, so we don't inherit
- a random value from the environment. Bug reported by
- Lee Revell <rlrevell@joe-job.com>
+lib/sh/strdup.c
+ - strdup replacement function for ancient systems that don't have it
- 6/29
- ----
-lib/glob/xmbsrtowcs.c
- - make sure destp is non-null before assigning a 0 to *destp in
- xdupmbstowcs. Fix from Louiwa Salem <loulwas@us.ibm.com>
+lib/sh/itos.c
+ - mitos: new function, itos that uses strdup instead of savestring
-execute_cmd.c
- - fix execute_in_subshell to make sure asynchronous isn't set to 0
- before subshell_environment is set appropriately and
- setup_async_signals is run. Based on report by Louiwa Salem
- <loulwas@us.ibm.com>
+externs.h
+ - strvec_mcreate/strvec_mresize: new extern declarations
+ - mitos: new extern declaration
-lib/readline/bind.c
- - in rl_generic_bind(), make sure that the keys array is freed before
- an error return. Fix from Louiwa Salem <loulwas@us.ibm.com>
+configure.ac
+ - bash version moved to 4.3-rc2
- 7/1
+ 1/6
---
-builtins/read.def
- - make sure all editing code is protected with #ifdef READLINE, esp.
- unwind-protect that restores the default completion function
+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/display.c
- - make sure to set local_prompt_len in rl_message() [in bash-3.2-alpha]
+lib/readline/doc/{version.texi,history.3,*.texi}
+ - updated email addresses and copyright dates
- 7/5
+ 1/7
---
-builtins/printf.def
- - add more of echo's write error handling to printf. Suggested by
- martin.wilck@fujitsu-siemens.com
+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
- 7/7
- ---
-lib/readline/display.c
- - save and restore local_prompt_len in rl_{save,restore}_prompt
- [in bash-3.2-alpha]
+variables.h
+ - delete_var: new extern declaration
- 7/8
- ---
-[bash-3.2-alpha released]
+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>
- 7/9
+ 1/9
---
-lib/readline/display.c
- - make sure that _rl_move_cursor_relative sets cpos_adjusted when it
- offsets `dpos' by wrap_offset in a multi-byte locale. Bug reported
- by Andreas Schwab and Egmont Koblinger
+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
-subst.c
- - make sure that the call to mbstowcs in string_extract_verbatim is
- passed a string with enough space for the closing NUL. Reported
- by Andreas Schwab
+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
- 7/18
+ 1/10
----
-lib/readline/{display,terminal}.c
- - remove #ifdefs for HACK_TERMCAP_MOTION so we can use
- _rl_term_forward_char in the redisplay code unconditionally
-
-lib/readline/rlprivate.h
- - new extern declaration for _rl_term_forward_char
+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
-lib/readline/display.c
- - in _rl_move_cursor_relative, use `dpos' instead of `new' when
- deciding whether or not a CR is faster than moving the cursor from
- its current position
- - in _rl_move_cursor_relative, we can use _rl_term_forward_char to
- move the cursor forward in a multibyte locale, if it's available.
- Since that function doesn't have a handle on where the cursor is in
- the display buffer, it has to output a cr and print all the data.
- Fixes rest of problem reported by Egmont Koblinger
- - change variable denoting the position of the cursor in the line buffer
- from c_pos (variable local to rl_redisplay) to cpos_buffer_position
- (variable local to file) for future use by other functions
+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?
- 7/25
+ 1/11
----
-lib/malloc/{stats,table}.h
- - include <string.h> for prototypes for memset, strlen
+subst.h
+ - SD_GLOB: new define for skip_to_delim; means we are scanning a
+ glob pattern.
-lib/termcap/{termcap,tparam}.c
- - include <string.h> and provide macro replacement for bcopy if
- necessary
+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
- 7/27
+ 1/12
----
-lib/readline/histexpand.c
- - add support for `<<<' here-string redirection operator to
- history_tokenize_word. Bug reported by agriffis@gentoo.org
-
-externs.h
- - don't add prototype for strerror() if HAVE_STRERROR defined
+subst.c
+ - 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>
- 7/29
+ 1/19
----
subst.c
- - in list_string, use `string' instead of `s' -- s is not initialized
+ - list_dequote_escapes: new function; analogue of list_quote_escapes
- 8/9
- ---
-subst.c
- - fix parameter_brace_expand to set W_HASQUOTEDNULL in the WORD_DESC it
- returns if the result of parameter_brace_substring is a quoted null
- ("\177"). Fixes bug reported by Igor Peshansky <pechtcha@cs.nyu.edu>
+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>
- 8/16
+ 1/25
----
-lib/readline/readline.h
- - new #define, READERR, intended to be used to denote read/input errors
+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>
-lib/readline/input.c
- - in rl_getc, if read() returns an error other than EINTR (after the
- EWOULDBLOCK/EAGAIN cases are handled), return READERR rather than
- converting return value to EOF if readline is reading a top-level
- command (RL_STATE_READCMD)
+Makefile.in
+ - variables.o: add dependency on builtins/builtext.h; helps with
+ parallel builds. Report from Linda Walsh <bash@tlinx.org>
-lib/readline/readline.c
- - if rl_read_key returns READERR to readline_internal_char[loop],
- abort as if it had read EOF on an empty line, without any conversion
- to newline, which would cause a partial line to be executed. This
- fixes the bug reported by Mathieu Bonnet <mathieu.bonnet@nalkym.org>
+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>
-aclocal.m4
- - when testing for validity of /dev/fd/3, use /dev/null instead of
- standard input, since the standard input fails with linux and `su'.
- Bug reported by Greg Shafer <gschafer@zip.com.au>
+ 1/27
+ ----
+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>
- 8/17
+ 1/29
----
-Makefile.in
- - switch the TAGS and tags targets so TAGS is the output of `etags' and
- tags is the output of `ctags'. Suggested by Masatake YAMATO
+[bash-4.3-rc2 released]
- 8/25
+ 1/30
----
-execute_cmd.c
- - change code to match documentation: set BASH_COMMAND (which takes its
- value from the_printed_command_except_trap) only when not running a
- trap. Rocky says the debugger is ok with this, and this is what his
- original diffs did
+lib/readline/readline.h
+ - rl_clear_history, rl_free_keymap: add extern declarations. Report
+ from Hiroo Hayashi <hiroo.hayashi@computer.org>
- 8/29
+general.c
+ - include trap.h for any_signals_trapped() prototype
+
+lib/sh/unicode.c
+ - include <stdio.h> for sprintf prototype
+
+ 1/31
----
-variables.c
- - change set_if_not to create shell_variables if it is NULL, since
- -o invocation options can cause variables to be set before the
- environment is scanned
+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 &&
-[bash-3.2-beta frozen]
+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
- 9/5
- ---
-[bash-3.2-beta released]
+lib/glob/glob.c
+ - glob_testdir: now takes a second flags argument (currently unused);
+ changed prototype and callers
- 9/8
+ 2/1
---
-variables.c
- - change dispose_used_env_vars to call maybe_make_export_env
- immediately if we're disposing a temporary environment, since
- `environ' points to the export environment and getenv() will use
- that on systems that don't allow getenv() to be replaced. This
- could cause the temporary environment to affect the shell. Bug
- reported by Vasco Pedro <vp@di.uevora.pt>
-
-builtins/echo.def,doc/{bash.1,bashref.texi}
- - clarify that `echo -e' and echo when the `xpg_echo' shell option is
- enabled require the \0 to precede any octal constant to be expanded.
- Reported by Vasco Pedro <vp@di.uevora.pt>
-
- 9/12
- ----
-builtins/printf.def
- - make sure `%q' format specifier outputs '' for empty string arguments
- Bug reported by Egmont Koblinger <egmont@uhulinux.hu>
+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>
-make_cmd.c
- - change make_here_document to echo lines in here-doc if set -v has
- been executed. Reported by Eduardo Ochs <eduardoochs@gmail.com>
+ 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>
-aclocal.m4
- - change BASH_CHECK_MULTIBYTE:
- o replace check for wctomb with check for wcrtomb
- o add checks for wcscoll, iswctype, iswupper, iswlower,
- towupper, towlower
- o add call to AC_FUNC_MBRTOWC to check for mbrtowc and mbstate_t
- define HAVE_MBSTATE_T manually
- o add checks for wchar_t, wctype_t, wint_t
+doc/{bash.1,bashref.texi}
+ - added slight clarifying language to the description of $*,
+ describing what happens when the expansion is not within double
+ quotes
-config.h.in
- - add defines for wcscoll, iswctype, iswupper, iswlower, towupper,
- towlower functions
- - replace define for wctomb with one for wcrtomb
- - add defines for wchar_t, wint_t, wctype_t types
+ 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
-config-bot.h, lib/readline/rlmbutil.h
- - add check for HAVE_LOCALE_H before defining HANDLE_MULTIBYTE
- - add checks for: ISWCTYPE, ISWLOWER, ISWUPPER, TOWLOWER, TOWUPPER
- - add checks for: WCTYPE_T, WCHAR_T, WCTYPE_T
+ 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>
- 9/13
- ----
-lib/readline/display.c
- - when displaying prompts longer than the screenwidth in rl_redisplay,
- and looking for the index of the last character whose buffer index
- is <= the screen width to set up the inv_lbreaks array, make sure to
- catch the case where the index == the screen width (an off-by-one
- error occurs otherwise with prompts one character longer than the
- screen width). Bug reported by Alexey Toptygin <alexeyt@freeshell.org>
+ 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
-configure.in
- - change DEBUGGER_START_FILE to start with ${ac_default_prefix}/share,
- like bashdb installs itself. Reported by Nick Brown
- <nickbroon@blueyonder.co.uk>
+ 2/7
+ ---
+input.c
+ - 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>
- 9/14
- ----
-lib/readline/display.c
- - make multibyte code that computes the buffer indices of line breaks
- for a multi-line prompt dependent on MB_CUR_MAX, so we don't take
- the function call hit unless we're in a locale that can have
- multibyte characters
+ 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>
- 9/19
+ 2/11
----
-subst.c
- - make dequote_list extern so other parts of the shell can use it
+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>
-subst.h
- - extern declaration for dequote_list
+[changed release status to 4.3-release]
-builtins/read.def
- - call dequote_list before assigning words read to array variable if
- we saw an escape character. Old code left spurious CTLESCs in the
- string after processing backslashes. Bug reported by Daniel Dawson
- <ddawson@icehouse.net>
+ 2/13
+ ----
+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>
- 9/21
+ 2/14
----
-[bash-3.2 frozen]
+variables.c
+ - 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>