mirror of
https://https.git.savannah.gnu.org/git/bash.git
synced 2026-06-28 07:59:50 +02:00
14653 lines
541 KiB
Plaintext
14653 lines
541 KiB
Plaintext
2/14/2011
|
|
---------
|
|
[bash-4.2 released]
|
|
|
|
2/15
|
|
----
|
|
lib/glob/gmisc.c
|
|
- fix wmatchlen and umatchlen to avoid going past the end of the
|
|
string on an incomplete bracket expression that ends with a
|
|
NUL. Partial fix for bug reported by Clark Wang <dearvoid@gmail.com>
|
|
|
|
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
|
|
|
|
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>
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- document the exact expansions here strings undergo
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
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
|
|
|
|
2/18
|
|
----
|
|
lib/glob/gmisc.c
|
|
- better fix for umatchlen/wmatchlen: keep track of the number of
|
|
characters in a bracket expression as the value to increase
|
|
matchlen by if the bracket expression is not well-formed. Fixes
|
|
bug reported by Clark Wang <dearvoid@gmail.com>
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
variables.h
|
|
- new extern declaration for chkexport
|
|
|
|
|
|
{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>
|
|
|
|
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>
|
|
|
|
support/shobj-conf
|
|
- add a stanza for nsk on the Tandem from Joachim Schmitz
|
|
<jojo@schmitz-digital.de>
|
|
|
|
{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>
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
parse.y
|
|
- fix extended_glob case of read_token_word to allocate an extra
|
|
space in the buffer for the next character read after the extended
|
|
glob specification if it's a CTLESC or CTLNUL. Report and fix from
|
|
Michael Witten <mfwitten@gmail.com>
|
|
- fix shell expansions case of read_token_word to allocate an extra
|
|
space in the buffer for the next character read after the shell
|
|
expansion if it's a CTLESC or CTLNUL. Report and fix from
|
|
Michael Witten <mfwitten@gmail.com>
|
|
- TENTATIVE: fix read_token_word to reduce the amount of buffer space
|
|
required to hold the translated and double-quoted value of $"..."
|
|
strings. Report and fix from Michael Witten <mfwitten@gmail.com>
|
|
- change code around got_character and got_escaped_character labels to
|
|
make sure that we call RESIZE_MALLOCED_BUFFER before adding the
|
|
CTLESC before a CTLESC or CTLNUL, and before adding the character if
|
|
we're not adding a CTLESC. Report and fix from
|
|
Michael Witten <mfwitten@gmail.com>
|
|
|
|
subst.c
|
|
- 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>
|
|
|
|
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>
|
|
|
|
3/5
|
|
---
|
|
lib/readline/rltty.c
|
|
- change rl_deprep_terminal so it uses fileno (stdin) for the tty fd
|
|
if rl_instream is not set, like rl_prep_terminal
|
|
|
|
3/6
|
|
---
|
|
lib/readline/display.c
|
|
- fix rl_message to use a dynamically-allocated buffer instead of a
|
|
fixed-size buffer of 128 chars for the `local message prompt'. Bug
|
|
report and fix from Micah Cowan <micah@cowan.name>
|
|
|
|
3/7
|
|
---
|
|
jobs.c
|
|
- 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>
|
|
|
|
3/8
|
|
---
|
|
shell.c
|
|
- initialize no_line_editing to 1 if READLINE is not defined -- we
|
|
can't have line editing without readline
|
|
|
|
3/12
|
|
----
|
|
lib/readline/signals.c
|
|
- add SIGHUP to the set of signals readline handles
|
|
|
|
lib/readline/doc/rltech.texi
|
|
- document that SIGHUP is now part of the set of signals readline
|
|
handles
|
|
|
|
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
|
|
|
|
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
|
|
|
|
input.c
|
|
- rearrange getc_with_restart so that the return values from read()
|
|
are handled right
|
|
|
|
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
|
|
|
|
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
|
|
|
|
builtins/read.def
|
|
- take out setting terminate_immediately; add calls to CHECK_TERMSIG
|
|
after read calls
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
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/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>
|
|
|
|
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
|
|
|
|
3/22
|
|
----
|
|
lib/glob/glob.c
|
|
- wdequote_pathname falls back to udequote_pathname if xdupmbstowcs
|
|
fails to convert the pathname to a wide-character string
|
|
|
|
lib/glob/xmbsrtowcs.c
|
|
- xdupmbstowcs2: change to fix problem with leading '\\' (results in
|
|
nms == 0, which causes it to short-circuit with failure right
|
|
away). Fixes bug pointed out by Werner Fink <werner@suse.de>
|
|
- xdupmbstowcs2: compensate for mbsnrtowcs returning 0 by taking the
|
|
next single-byte character and going on
|
|
- xdupmbstowcs2: change memory allocation to increase by WSBUF_INC
|
|
bytes; try to avoid calls to realloc (even if they don't actually
|
|
result in more memory being allocated)
|
|
|
|
3/24
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- slightly modify BASH_SUBSHELL description based on complaint from
|
|
Sam Liddicott <sam@liddicott.com>
|
|
|
|
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>
|
|
|
|
3/26
|
|
----
|
|
lib/readline/rltypedefs.h
|
|
- remove old Function/VFunction/CPFunction/CPPFunction typedefs as
|
|
suggested by Tom Tromey <tromey@redhat.com>
|
|
|
|
lib/readline/rlstdc.h
|
|
- move defines for USE_VARARGS/PREFER_STDARG/PREFER_VARARGS from
|
|
config.h.in to here because declaration of rl_message in
|
|
readline.h uses the defines. This makes it hard for another packages
|
|
to use after the header files are installed, since config.h is not
|
|
one of the installed files. Suggested by Tom Tromey
|
|
<tromey@redhat.com>
|
|
|
|
3/27
|
|
----
|
|
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>
|
|
|
|
lib/readline/shell.c
|
|
- change sh_set_lines_and_columns to use static buffers instead of
|
|
allocating the buffers to pass to setenv/putenv
|
|
|
|
lib/readline/terminal.c
|
|
- change _rl_get_screen_size to not call sh_set_lines_and_columns if
|
|
ignore_env == 0
|
|
- _rl_sigwinch_resize_terminal: new function to just retrieve terminal
|
|
size, ignoring environment
|
|
|
|
lib/readline/rlprivate.h
|
|
- new external declaration for _rl_sigwinch_resize_terminal() (currently
|
|
unused)
|
|
|
|
lib/readline/signals.c
|
|
- rl_sigwinch_handler: set _rl_caught_signal to SIGWINCH
|
|
- rl_sigwinch_handler: don't immediately call rl_resize_terminal; just
|
|
leave _rl_caught_signal set for RL_CHECK_SIGNALS to handle
|
|
- _rl_signal_handler: call rl_resize_terminal if sig == SIGWINCH.
|
|
Should fix hang when sending multiple repeated SIGWINCH reported by
|
|
Henning Bekel <h.bekel@googlemail.com>
|
|
|
|
3/29
|
|
----
|
|
lib/sh/snprintf.c
|
|
- include math.h for any defines for isinf/isnan
|
|
- use code from gnulib documentation to implement isinf/isnan if they
|
|
are not defined
|
|
|
|
configure.in
|
|
- don't check for isinf or isnan; c99 says they're macros anyway
|
|
|
|
config.h.in
|
|
- remove defines for ISINF_IN_LIBC and ISNAN_IN_LIBC, no longer used
|
|
by snprintf.c
|
|
|
|
4/2
|
|
---
|
|
braces.c
|
|
- brace_gobbler: fix to understand double-quoted command substitution,
|
|
since the shell understands unquoted comsubs. Fixes bug reported
|
|
by Michael Whitten <mfwitten@gmail.com>
|
|
|
|
lib/readline/display.c
|
|
- include <pc.h> on MDOS
|
|
- get and set screen size using DJGPP-specific calls on MSDOS
|
|
- move cursor up clear screen using DJGPP-specific calls
|
|
- don't call tputs on DJGPP; there is no good terminfo support
|
|
|
|
lib/readline/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>
|
|
|
|
4/6
|
|
---
|
|
|
|
config-top.h
|
|
- change DEFAULT_PATH_VALUE to something more useful and modern
|
|
|
|
4/8
|
|
---
|
|
tests/printf2.sub
|
|
- make sure LC_ALL and LC_CTYPE are set so LANG assignment takes effect.
|
|
Reported by Cedric Arbogast <arbogast.cedric@gmail.com>
|
|
|
|
4/11
|
|
----
|
|
include/chartypes.h
|
|
- fix a couple of dicey defines (though ones that don't cause any
|
|
compiler warnings) in IN_CTYPE_DOMAIN
|
|
|
|
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>
|
|
|
|
pcomplete.c
|
|
- it_init_helptopics: new function to support completing on help topics,
|
|
not just builtins
|
|
- it_helptopics: new programmable completion list of help topics
|
|
- build list of helptopic completions in gen_action_completions on
|
|
demand
|
|
|
|
pcomplete.h
|
|
- new extern declaration for it_helptopics
|
|
|
|
builtins/complete.def
|
|
- the `helptopic' action now maps to CA_HELPTOPIC intead of CA_BUILTIN,
|
|
since there are more help topics than just builtins. Suggested by
|
|
Clark Wang <dearvoid@gmail.com>
|
|
|
|
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
|
|
|
|
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
|
|
|
|
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 `)'
|
|
|
|
4/14
|
|
----
|
|
print_cmd.c
|
|
- change overlapping strcpy in named_function_string to memmove
|
|
|
|
sig.h
|
|
- UNBLOCK_SIGNAL: convenience define, same as UNBLOCK_CHILD, just
|
|
restores an old signal mask
|
|
|
|
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>
|
|
|
|
4/15
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- make it clear that enabling monitor mode means that all jobs run in
|
|
separate process groups
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
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
|
|
|
|
lib/readline/rlprivate.h
|
|
- extern declaration for _rl_disable_meta_key
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
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>
|
|
|
|
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/5
|
|
---
|
|
pcomplib.c
|
|
- the bash_completion project now distributes over 200 completions
|
|
for various programs, with no end in sight, so increase the value
|
|
of COMPLETE_HASH_BUCKETS from 32 to 128
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
5/12
|
|
----
|
|
configure.in
|
|
- set the prefer_shared and prefer_static variables appropriately
|
|
depending on the value of $opt_static_link
|
|
|
|
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>
|
|
|
|
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/help.def
|
|
- help_builtin: change strncmp to strcmp so that `help read' no longer
|
|
matches `readonly'. Suggested by Clark Wang <dearvoid@gmail.com>
|
|
|
|
config.h.in
|
|
- add define for GLIBC21, checked using jm_GLIBC21 as part of the tests
|
|
for libintl
|
|
|
|
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>
|
|
|
|
aclocal.m4
|
|
- BASH_STRUCT_WEXITSTATUS_OFFSET: change AC_RUN_IFELSE to AC_TRY_RUN
|
|
to avoid warning about not using AC_LANG_SOURCE
|
|
|
|
5/14
|
|
----
|
|
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
|
|
|
|
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
|
|
|
|
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>
|
|
|
|
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/readline/{complete,display,mbutil}.c
|
|
- use WCWIDTH instead of wcwidth
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
lib/readline/rlprivate.h
|
|
- extern declaration for _rl_utf8locale
|
|
|
|
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
|
|
|
|
aclocal.m4
|
|
- BASH_WCWIDTH_BROKEN: new test for whether or not wcwidth returns
|
|
zero-width characters like unicode combining characters as having
|
|
display length 1; define WCWIDTH_BROKEN in this case
|
|
|
|
config.h.in
|
|
- WCWIDTH_BROKEN: new define
|
|
|
|
lib/readline/rlmbutil.h
|
|
- change WCWIDTH macro to use _rl_utf8locale and the full range of
|
|
Unicode combining characters (U+0300-U+036F)
|
|
|
|
5/19
|
|
----
|
|
lib/readline/rlprivate.h
|
|
- _rl_search_context: new member, prevc, will hold character read
|
|
prior to lastc
|
|
|
|
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>
|
|
|
|
5/26
|
|
----
|
|
|
|
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>
|
|
|
|
lib/readline/readline.h
|
|
- extern declarations for rl_history_substr_search_{for,back}ward
|
|
|
|
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
|
|
|
|
lib/readline/doc/{rluser.texi,readline.3}
|
|
- document history-substring-search-forward and
|
|
history-substring-search-backward
|
|
|
|
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>
|
|
|
|
config-top.h
|
|
- DONT_REPORT_SIGTERM: new user-modifiable setting. Commented out
|
|
by default
|
|
|
|
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}
|
|
- 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>
|
|
|
|
6/4
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- clarify description of LINES and COLUMNS (and checkwinsize shopt
|
|
option) to make it clear that only interactive shells set a
|
|
handler for SIGWINCH and update LINES and COLUMNS. Original
|
|
report submitted by Jonathan Nieder <jrnieder@gmail.com>
|
|
|
|
arrayfunc.c
|
|
- expand_compound_array_assignment: defer expansion of words between
|
|
parens when performing compound assignmnt to an associative array
|
|
variable
|
|
- assign_compound_array_list: perform the same expansions when doing
|
|
a compound array assignment to an associative array variable as
|
|
when doing a straight array index assignment. The idea is that
|
|
foo=( [ind1]=bar [ind2]=quux)
|
|
is the same as
|
|
foo[ind1]=bar ; foo[ind2]=quux
|
|
|
|
This fixes problems with double-expansion and quote removal being
|
|
performed on the array indices
|
|
|
|
6/13
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- Add a little text to make it clear that the locale determines how
|
|
range expressions in glob patterns are handled.
|
|
|
|
|
|
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>
|
|
|
|
6/24
|
|
----
|
|
{jobs,nojobs}.c
|
|
- non-interactive shells now react to the setting of checkwinsize
|
|
and set LINES and COLUMNS after a foreground job exits. From a
|
|
suggestion by Leslie Rhorer <lrhorer@satx.rr.com>
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- checkwinsize: remove language saying that only interactive shells
|
|
check the window size after each command
|
|
|
|
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
|
|
|
|
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
|
|
- 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
|
|
|
|
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
|
|
- {save,restore}_input_line_state: new functions to save and restore
|
|
shell_input_line and associated variables
|
|
- {save,restore}_parser_state: add code to save and restore the token
|
|
and token buffer size
|
|
- xparse_dolparen: call save_ and restore_input_line_state to avoid
|
|
problems with overwriting shell_input_line when we recursively
|
|
call the parser to parse a command substitution. Fixes bug
|
|
reported by Rui Santos <rsantos@grupopie.com>
|
|
|
|
include/shmbutil.h
|
|
- use locale_mb_cur_max instead of MB_CUR_MAX in ADVANCE_CHAR and
|
|
similar macros
|
|
|
|
lib/glob/smatch.c
|
|
- rangecmp,rangecmp_wc: change to take an additional argument, which
|
|
forces the use of strcoll/wscoll when non-zero. If it's 0, a new
|
|
variable `glob_asciirange' controls whether or not we use strcoll/
|
|
wscoll. If glob_asciirange is non-zero, we use straight
|
|
C-locale-like ordering. Suggested by Aharon Robbins
|
|
<arnold@skeeve.com>
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
lib/readline/signals.c
|
|
- rl_signal_handler: if we're in callback mode, don't interrupt
|
|
immediately on a SIGWINCH
|
|
|
|
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
|
|
|
|
bashline.h
|
|
- extern declaration for set_directory_hook so shopt code can use it
|
|
|
|
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>
|
|
|
|
7/7
|
|
---
|
|
doc/{bash.1,bashref.texi}
|
|
- document new `globasciiranges' shopt option
|
|
|
|
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
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- document new `direxpand' shopt option
|
|
|
|
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
|
|
|
|
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
|
|
|
|
7/24
|
|
----
|
|
lib/readline/isearch.c
|
|
- _rl_isearch_dispatch: save and restore cxt->mb and cxt->pmb
|
|
appropriately when in a multibyte locale
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- correct description of {x}>file (and other redirection operators
|
|
that allocate a file descriptor) to note the the fd range is
|
|
greater than or equal to 10. Fixes problem reported by
|
|
Christian Ullrich
|
|
|
|
lib/readline/signals.c
|
|
- rl_signal_handler: don't interrupt immediately if in callback mode
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- document new Posix-mode behavior of `command' when preceding builtins
|
|
that take assignment statements as arguments
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
builtins/printf.def
|
|
- getint: if garglist == 0, return whatever getintmax returns (0).
|
|
Fixes bug reported by Ralph Coredroy <ralph@inputplus.co.uk>
|
|
|
|
7/28
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- minor changes to the descriptions of the cd and pushd builtins
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
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>
|
|
|
|
8/9
|
|
---
|
|
builtins/common.c
|
|
- get_exitstat: return EX_BADUSAGE (2) on a non-numeric argument
|
|
|
|
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)
|
|
|
|
8/16
|
|
----
|
|
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
|
|
|
|
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)
|
|
|
|
8/27
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- minor changes to the here string description to clarify the
|
|
expansions performed on the word
|
|
|
|
support/shobj-conf
|
|
- handle compilation on Lion (Mac OS X 10.7/darwin11) with changes
|
|
to darwin stanzas. Fixes readline bug reported by Vincent
|
|
Sheffer <vince.sheffer@apisphere.com>
|
|
|
|
lib/sh/strtrans.c
|
|
- ansic_wshouldquote: check a string with multi-byte characters for
|
|
characters that needs to be backslash-octal escaped for $'...'
|
|
- ansic_shouldquote: if is_basic fails for one character, let
|
|
ansic_wshouldquote examine the rest of the string and return what
|
|
it returns. From a patch sent by Roman Rakus <rrakus@redhat.com>
|
|
|
|
8/30
|
|
----
|
|
lib/sh/strtrans.c
|
|
- ansic_quote: changes to quote (or not) multibyte characters. New
|
|
code converts them to wide characters and uses iswprint to check
|
|
valid wide chars. From a patch sent by Roman Rakus
|
|
<rrakus@redhat.com>
|
|
|
|
9/7
|
|
---
|
|
lib/sh/shquote.c
|
|
- sh_backslash_quote: change to be table-driven so we can use a
|
|
different table if we want to
|
|
- sh_backslash_quote: takes a second char table[256] argument;
|
|
|
|
externs.h
|
|
- sh_backslash_quote: add second argument to function prototype
|
|
|
|
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
|
|
----
|
|
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
|
|
|
|
9/15
|
|
----
|
|
builtins/declare.def
|
|
- if assign_array_element fails due to a bad (or empty) subscript, mark
|
|
it as an assignment error and don't attempt any further processing
|
|
of that declaration. Fixes segfault bug reported by Diego Augusto
|
|
Molina <diegoaugustomolina@gmail.com>
|
|
|
|
9/19
|
|
----
|
|
expr.c
|
|
- exppower: replace the simple exponentiation algorithm with an
|
|
implementation of exponentiation by squaring. Inspired by report
|
|
from Nicolas ARGYROU <nargy@yahoo.com>
|
|
|
|
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>
|
|
|
|
9/20
|
|
----
|
|
lib/intl/localealias.c
|
|
- read_alias_file: close resource leak (fp) when returning on error
|
|
|
|
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
|
|
|
|
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
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
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
|
|
|
|
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.
|
|
|
|
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>
|
|
|
|
lib/readline/readline.h
|
|
- new extern declaration for rl_filename_stat_hook
|
|
|
|
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
|
|
|
|
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
|
|
- 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>
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
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
|
|
- push_history: make sure remember_on_history is enabled before we
|
|
try to delete the last history entry -- the `history -s' command
|
|
might not have been saved. Fixes bug reported by
|
|
lester@vmw-les.eng.vmware.com
|
|
|
|
lib/readline/complete.c
|
|
- 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/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
|
|
|
|
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>
|
|
|
|
11/2
|
|
----
|
|
Makefile.in
|
|
- make libbuiltins.a depend on builtext.h to serialize its creation
|
|
and avoid conflict between multiple invocations of mkbuiltins.
|
|
Fix from Mike Frysinger <vapier@gentoo.org>
|
|
|
|
11/5
|
|
----
|
|
findcmd.c
|
|
- user_command_matches: if stat(".", ...) returns -1, set st_dev
|
|
and st_ino fields in dotinfo to 0 to avoid same_file matches
|
|
- find_user_command_in_path: check stat(2) return the same way
|
|
|
|
lib/glob/glob.c
|
|
- glob_vector: don't call strlen(pat) without checking pat == 0
|
|
- glob_dir_to_array: make sure to free `result' and all allocated
|
|
members before returning error due to malloc failure
|
|
- glob_vector: make sure to free `nextname' and `npat' on errors
|
|
(mostly when setting lose = 1)
|
|
- glob_vector: if flags & GX_MATCHDIRS but not GX_ALLDIRS, make
|
|
sure we free `subdir'
|
|
- glob_filename: when expanding ** (GX_ALLDIRS), make sure we
|
|
free temp_results (return value from glob_vector)
|
|
|
|
lib/glob/xmbsrtowcs.c
|
|
- xdupmbstowcs: fix call to realloc to use sizeof (char *) instead
|
|
of sizeof (char **) when assigning idxtmp
|
|
|
|
execute_cmd.c
|
|
- 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
|
|
|
|
builtins/read.def
|
|
- read_builtin: don't call bind_read_variable with a potentially-null
|
|
string
|
|
|
|
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
|
|
|
|
bashline.c
|
|
- command_word_completion_function: don't call restore_tilde with a
|
|
NULL directory_part argument
|
|
- bash_directory_expansion: bugfix: don't throw away results of
|
|
rl_directory_rewrite_hook if it's set and returns non-zero
|
|
- bind_keyseq_to_unix_command: free `kseq' before returning error
|
|
|
|
arrayfunc.c
|
|
- assign_array_element_internal: make sure `akey' is freed if non-null
|
|
before returning error
|
|
- assign_compound_array_list: free `akey' before returning error
|
|
- array_value_internal: free `akey' before returning error
|
|
- unbind_array_element: free `akey' before returning error
|
|
|
|
subst.c
|
|
- array_length_reference: free `akey' before returning error in case
|
|
of expand_assignment_string_to_string error
|
|
- array_length_reference: free `akey' after call to assoc_reference
|
|
- skip_to_delim: if skipping process and command substitution, free
|
|
return value from extract_process_subst
|
|
- parameter_brace_substring: free `val' (vtype == VT_VARIABLE) before
|
|
returning if verify_substring_values fails
|
|
- parameter_brace_expand: remove two duplicate lines that allocate
|
|
ret in parameter_brace_substring case
|
|
- parameter_brace_expand: convert `free (name); name = xmalloc (...)'
|
|
to use `xrealloc (name, ...)'
|
|
- parameter_brace_expand: free `name' before returning when handling
|
|
${!PREFIX*} expansion
|
|
- split_at_delims: fix memory leak by freeing `d2' before returning
|
|
|
|
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()
|
|
|
|
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()
|
|
|
|
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
|
|
|
|
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
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
pcomplete.h
|
|
- COPT_NOQUOTE: new complete/compgen option value
|
|
|
|
builtins/complete.def
|
|
- noquote: new complete/compgen option; will be used to disable
|
|
filename completion quoting
|
|
|
|
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)
|
|
|
|
doc/bash.1,lib/readline/doc/rluser.texi
|
|
- document new -o noquote option to complete/compgen/compopt
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
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
|
|
|
|
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>
|
|
|
|
11/19
|
|
-----
|
|
doc/{bash.1,bashref.texi},lib/readline/doc/hsuser.texi
|
|
- make it clear that bash runs HISTFILESIZE=$HISTSIZE after reading
|
|
the startup files
|
|
- make it clear that bash runs HISTSIZE=500 after reading the
|
|
startup files
|
|
- make it clear that setting HISTSIZE=0 causes commands to not be
|
|
saved in the history list
|
|
- make it clear that setting HISTFILESIZE=0 causes the history file
|
|
to be truncated to zero size
|
|
|
|
variables.c
|
|
- 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
|
|
|
|
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
|
|
- rl_vi_replace: set _rl_vi_last_key_before_insert to invoking key
|
|
|
|
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>
|
|
|
|
lib/readline/vi_mode.c
|
|
- rl_vi_replace: initialize characters before printing characters in
|
|
vi_replace_keymap to their default values in vi_insertion_keymap,
|
|
since we're supposed to be in insert mode replacing characters
|
|
- rl_vi_replace: call rl_vi_start_inserting to set last command to
|
|
`R' for undo
|
|
- rl_vi_replace: set _rl_vi_last_key_before_insert to `R' for future
|
|
use by _rl_vi_done_inserting
|
|
- vi_save_insert_buffer: new function, broke out code that copies text
|
|
into vi_insert_buffer from _rl_vi_save_insert
|
|
- _rl_vi_save_replace: new function, saves text modified by
|
|
rl_vi_replace (using current point and vi_replace_count to figure
|
|
it out) to vi_replace_buffer
|
|
- _rl_vi_save_insert: call vi_save_insert_buffer
|
|
- _rl_vi_done_inserting: if _rl_vi_last_key_before_insert == 'R', call
|
|
_rl_vi_save_replace to save text modified in replace mode (uses
|
|
vi_save_insert_buffer)
|
|
- _rl_vi_replace_insert: new function, replaces the number of chars
|
|
in vi_insert_buffer after rl_point with contents ov vi_insert_buffer
|
|
- rl_vi_redo: call _rl_vi_replace_insert if last command == 'R' and
|
|
there's something in vi_insert_buffer. Fixes bug with `.' not
|
|
redoing the most recent `R' command, reported by Geoff Clare
|
|
<g.clare@opengroup.org> in readline area on savannah
|
|
|
|
11/26
|
|
-----
|
|
lib/readline/rlprivate.h
|
|
- RL_SIG_RECEIVED(): evaluate to non-zero if there is a pending signal
|
|
to be handled
|
|
- RL_SIGINT_RECEIVED(): evaluate to non-zero if there is a pending
|
|
SIGINT to be handled
|
|
|
|
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
|
|
|
|
lib/readline/util.c
|
|
- rl_settracefp: new utility function to set the tracing FILE *
|
|
|
|
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
|
|
|
|
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
|
|
- 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>
|
|
|
|
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
|
|
|
|
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
|
|
- execute_cond_node: added parens to patmatch assignment statement to
|
|
make intent clearer
|
|
|
|
12/3
|
|
----
|
|
configure.in,config.h.in
|
|
- check for imaxdiv, define HAVE_IMAXDIV if present
|
|
|
|
expr.c
|
|
- expassign, exp2: use imaxdiv if available. Doesn't help with checks
|
|
for overflow from 10/25
|
|
|
|
12/6
|
|
----
|
|
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>
|
|
|
|
12/7
|
|
----
|
|
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)
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
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)
|
|
|
|
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
|
|
|
|
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
|
|
|
|
lib/readline/rlprivate.h
|
|
- new extern declaration for _rl_executing_keyseq_size, buffer size
|
|
for rl_executing_keyseq
|
|
|
|
lib/readline/doc/rltech.texi
|
|
- documented new variables: rl_executing_key, rl_executing_keyseq,
|
|
rl_key_sequence_length
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
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>
|
|
|
|
expr.c
|
|
- more minor changes to cases of INTMAX_MIN % -1 and INTMAX_MIN / 1;
|
|
fix typos and logic errors
|
|
|
|
12/16
|
|
-----
|
|
bashline.c
|
|
- find_cmd_start: change flags to remove SD_NOSKIPCMD so it skips over
|
|
command substitutions and doesn't treat them as command separators
|
|
- attempt_shell_completion: instead of taking first return from
|
|
find_cmd_name as command name to use for programmable completion,
|
|
use loop to skip over assignment statements. Fixes problem reported
|
|
by Raphael Droz <raphael.droz+floss@gmail.com>
|
|
- attempt_shell_completion: if we don't find a command name but the
|
|
command line is non-empty, assume the other words are all assignment
|
|
statements and flag that point is in a command position so we can
|
|
do command name completion
|
|
- attempt_shell_completion: if the word being completed is the first
|
|
word following a series of assignment statements, and the
|
|
command line is non-empty, flag that point is in a command position
|
|
so we can do command name completion
|
|
|
|
lib/readline/history.c
|
|
- history_get_time: atol -> strtol
|
|
|
|
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
|
|
|
|
externs.h
|
|
- extern declaration for parser_in_command_position
|
|
|
|
12/19
|
|
-----
|
|
|
|
builtins/read.def
|
|
- read_builtin: make sure all calls to bind_read_variable are passed
|
|
a non-null string. Fixes bug reported by Dan Douglas
|
|
<ormaaj@gmail.com>
|
|
|
|
bashline.c
|
|
- attempt_shell_completion: mark that we're in a command position if
|
|
we're at the start of the line and the parser is ready to accept
|
|
a reserved word or command name. Feature most recently suggested
|
|
by Peng Yu <pengyu.ut@gmail.com>
|
|
|
|
12/21
|
|
-----
|
|
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
|
|
|
|
lib/readline/rlprivate.h
|
|
- _rl_untranslate_macro_value: extern declaration
|
|
|
|
lib/readline/{macro.c,readline.h}
|
|
- rl_print_last_kbd_macro: new bindable function, inspired by patch
|
|
from Mitchel Humpherys
|
|
|
|
lib/readline/funmap.c
|
|
- print-last-kbd-macro: new bindable command, bound to
|
|
rl_print_last_kbd_macro
|
|
|
|
lib/readline/doc/{rluser.texi,readline.3},doc/bash.1
|
|
- print-last-kbd-macro: document.
|
|
|
|
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)
|
|
|
|
bashline.[ch]
|
|
- print_unix_command_map: new function, prints all bound commands in
|
|
cmd_xmap using rl_macro_dumper in a reusable format
|
|
|
|
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)
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- document new `bind -X' option
|
|
|
|
12/24
|
|
-----
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
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)
|
|
|
|
12/29
|
|
-----
|
|
|
|
flags.h
|
|
- new extern declaration for jobs_m_flag
|
|
|
|
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
|
|
|
|
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
|
|
|
|
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
|
|
|
|
1/5
|
|
---
|
|
quit.h
|
|
- LASTSIG(): new macro, expands to signal number of last terminating
|
|
signal received (terminating_signal or SIGINT)
|
|
|
|
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
|
|
- 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
|
|
|
|
1/11
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- slight changes to the descriptions of the compat32 and compat40 shell
|
|
options to clarify their meaning
|
|
|
|
1/12
|
|
----
|
|
lib/readline/{colors.[ch],parse-colors.[ch]}
|
|
- new files, part of color infrastructure support
|
|
|
|
Makefile.in,lib/readline/Makefile.in
|
|
- arrange to have colors.o and parse-colors.o added to readline
|
|
library
|
|
|
|
{configure,config.h}.in
|
|
- check for stdbool.h, define HAVE_STDBOOL_H if found
|
|
|
|
1/14
|
|
----
|
|
lib/readline/bind.c
|
|
- colored_stats: new bindable variable, enables using colors to
|
|
indicate file type when listing completions
|
|
|
|
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>
|
|
|
|
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)
|
|
|
|
lib/readline/rlprivate.h
|
|
- _rl_colored_stats: new extern declaration
|
|
|
|
lib/readline/doc/{readline.3,rluser.texi},doc/bash.1
|
|
- colored-stats: document new bindable readline variable
|
|
|
|
lib/readline/colors.c
|
|
- _rl_print_color_indicator: call rl_filename_stat_hook before calling
|
|
lstat/stat so we can get color indicators for stuff like
|
|
$HOME/Applications
|
|
|
|
lib/readline/complete.c
|
|
- stat_char: call rl_filename_stat_hook before calling lstat/stat
|
|
|
|
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)
|
|
|
|
execute_cmd.c
|
|
- is_dirname: call search_for_command with flags argument of 0 so it
|
|
doesn't try to put something in the command hash table
|
|
|
|
bashline.c
|
|
- bash_command_name_stat_hook: a hook function for readline's
|
|
filename_stat_hook that does $PATH searching the same way that
|
|
execute_cmd.c:execute_disk_command() does it, and rewrites the
|
|
passed filename if found. Does not put names into command hash
|
|
table. This allows command name completion to take advantage
|
|
of `visible-stats' and `colored-stats' settings.
|
|
- executable_completion: new function, calls the directory completion
|
|
hook to expand the filename before calling executable_file or
|
|
executable_or_directory; change command_word_completion_function to
|
|
call executable_completion. This allows $HOME/bin/[TAB] to do
|
|
command completion and display alternatives
|
|
|
|
1/17
|
|
----
|
|
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>
|
|
|
|
1/18
|
|
----
|
|
|
|
{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
|
|
|
|
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
|
|
|
|
lib/readline/util.c
|
|
- _rl_audit_tty: new function, send a string to the kernel tty audit
|
|
system
|
|
|
|
lib/readline/rlprivate.h
|
|
- _rl_audit_tty: new extern declaration
|
|
|
|
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>
|
|
|
|
1/21
|
|
----
|
|
|
|
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
|
|
|
|
parse.y
|
|
- shell_getc: make code that uses the pop_alias dependent on ALIAS
|
|
define
|
|
|
|
variables.h
|
|
- sv_tz: extern define should only depend on HAVE_TZSET
|
|
|
|
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
|
|
|
|
arrayfunc.h
|
|
- AV_ALLOWALL, AV_QUOTED, AV_USEIND: define to 0 if ARRAY_VARS not
|
|
defined; used in subst.c unconditionally
|
|
|
|
sig.h
|
|
- make the signal blocking functions not dependent on JOB_CONTROL
|
|
|
|
sig.c
|
|
- sigprocmask: make the replacement definition not dependent on
|
|
JOB_CONTROL
|
|
|
|
trap.c
|
|
- use BLOCK_SIGNAL/UNBLOCK_SIGNAL instead of code dependent on
|
|
HAVE_POSIX_SIGNALS and BSD signals
|
|
|
|
1/24
|
|
----
|
|
|
|
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>
|
|
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
lib/readline/rlprivate.h
|
|
- _rl_free_undo_list: new extern declaration
|
|
- _rl_keyseq_timeout: new extern declaration (see below)
|
|
|
|
lib/readline/misc.c
|
|
- rl_clear_history: new function. Clears the history list and frees
|
|
all associated data similar to history.c:clear_history(), but
|
|
takes rl_undo_list into account and frees and UNDO_LISTs saved as
|
|
`data' members of a history list entry
|
|
|
|
lib/readline/doc/rltech.texi
|
|
- rl_clear_history: documented
|
|
|
|
lib/readline/readline.c
|
|
- _rl_keyseq_timeout: new variable to hold intra-key timeout value
|
|
from 1/21 fix; specified in milliseconds. Default value is 500
|
|
- _rl_dispatch_subseq: change to use _rl_keyseq_timeout as intra-key
|
|
timeout if it's greater than 0; no timeout if <= 0
|
|
- _rl_dispatch_subseq: don't check for queued keyboard input if we have
|
|
pushed or pending input, or if we're reading input from a macro
|
|
|
|
lib/readline/bind.c
|
|
- keyseq-timeout: new bindable variable, shadows _rl_keyseq_timeout
|
|
- string_varlist: add keyseq-timeout
|
|
- sv_seqtimeout: new function to modify value of _rl_keyseq_timeout;
|
|
clamps negative values at 0 for now
|
|
- _rl_get_string_variable_value: return value for keyseq-timeout
|
|
|
|
doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
|
|
- keyseq-timeout: documented
|
|
|
|
lib/readline/isearch.c
|
|
- _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>
|
|
|
|
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/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
|
|
|
|
Makefile.in
|
|
- when building libbuiltins.a, recursively call make with `targets'
|
|
argument to make sure separate helpfiles get built
|
|
|
|
configure.in
|
|
- substitute `helpdoc' as value of HELPFILES_TARGET if
|
|
--enable-separate-helpfiles supplied as configure argument
|
|
|
|
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
|
|
|
|
2/8
|
|
---
|
|
subst.c
|
|
- make sure last_command_exit_value is set to a non-zero value before
|
|
any calls to report_error, since `-e' set will short-circuit
|
|
report_error. Fixes bug reported by Ewan Mellor
|
|
<Ewan.Mellor@eu.citrix.com>
|
|
|
|
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
|
|
|
|
variable.h,subst.c
|
|
- make_local_array_variable: changed prototype and caller
|
|
|
|
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.
|
|
|
|
2/14
|
|
----
|
|
|
|
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
|
|
|
|
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
|
|
|
|
builtins/common.c
|
|
- get_job_by_name: call internal_error instead of report_error so this
|
|
doesn't exit the shell
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
builtins/printf.def
|
|
- tescape: ditto for printf \u and \U escape sequences
|
|
|
|
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)
|
|
|
|
locale.c
|
|
- call u32reset whenever LC_CTYPE/LC_ALL/LANG is changed to reset the
|
|
cached locale information used by u32cconv. From a report from
|
|
John Kearney <dethrophes@web.de>
|
|
|
|
2/21
|
|
----
|
|
doc/{bash,builtins}.1
|
|
- minor changes from Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
|
|
|
|
lib/sh/unicode.c
|
|
- u32cconv: only assume you can directly call wctomb on the passed
|
|
value if __STDC_ISO_10646__ is defined and the value is <=
|
|
0x7fffffff
|
|
- stub_charset: return locale as default instead of "ASCII", let
|
|
rest of code decide what to do with it
|
|
|
|
lib/readline/parens.c
|
|
- _rl_enable_paren_matching: make paren matching work in vi insert
|
|
mode. Bug report from <derflob@derflob.de>
|
|
|
|
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>
|
|
|
|
2/23
|
|
----
|
|
execute_cmd.c
|
|
- execute_pipeline: wrap the discard_unwind_frame call in #ifdef
|
|
JOB_CONTROL, since the frame is only created if JOB_CONTROL is
|
|
defined. Bug and fix from Doug Kehn <rdkehn@yahoo.com>
|
|
|
|
2/25
|
|
----
|
|
error.c
|
|
- report_error: make sure last_command_exit_value is non-zero before
|
|
we call exit_shell, since the exit trap may reference it. Call
|
|
exit_shell with last_command_exit_value to allow exit statuses
|
|
other than 1
|
|
|
|
unicode.c
|
|
- stub_charset: use local static buffer to hold charset, don't change
|
|
value returned by get_locale_var. Based on idea and code from
|
|
John Kearney <dethrophes@web.de>
|
|
- u32toutf16: function to convert unsigned 32-bit value (unicode) to
|
|
UTF-16. From John Kearney <dethrophes@web.de>
|
|
- u32cconv: call u32toutf16 if __STDC_ISO_10646__ defined and wchar_t
|
|
is two bytes, send result to wcstombs, return if not encoding error.
|
|
From John Kearney <dethrophes@web.de>
|
|
- u32cconv: return UTF-8 conversion if iconv conversion to local
|
|
charset is unsupported
|
|
|
|
3/2
|
|
---
|
|
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>
|
|
|
|
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>
|
|
|
|
subst.c
|
|
- parameter_brace_patsub: run the replacement string through quote
|
|
removal even if the expansion is within double quotes, because
|
|
the parser and string extract functions treat the quotes and
|
|
backslashes as special. If they're treated as special, quote
|
|
removal should remove them (this is the Posix position and
|
|
compatible with ksh93). THIS IS NOT BACKWARDS COMPATIBLE.
|
|
|
|
3/4
|
|
---
|
|
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>
|
|
|
|
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
|
|
|
|
3/7
|
|
---
|
|
m4/timespec.m4
|
|
- new macros, cribbed from gnulib and coreutils: find out whether we
|
|
have `struct timespec' and what file includes it
|
|
|
|
m4/stat-time.m4
|
|
- new macros, cribbed from gnulib and coreutils: find out whether the
|
|
mtime/atime/ctime/etctime fields of struct stat are of type
|
|
struct timespec, and what the name is
|
|
|
|
include/stat-time.h
|
|
- new file, cribbed from gnulib, with additions from coreutils: include
|
|
the right file to get the struct timespec define, or provide our own
|
|
replacement. Provides a bunch of inline functions to turn the
|
|
appropriate members of struct stat into `struct timespec' values,
|
|
zeroing out the tv_nsec field if necessary
|
|
|
|
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
|
|
|
|
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>
|
|
|
|
lib/readline/signals.c
|
|
- make sure all occurrences of SIGWINCH are protected by #ifdef
|
|
|
|
sig.c
|
|
- make sure all occurrences of SIGCHLD are protected by #ifdef
|
|
|
|
nojobs.c
|
|
- make sure SA_RESTART is defined to 0 if the OS doesn't define it
|
|
|
|
version.c
|
|
- show_shell_version: don't use string literals in printf, use %s.
|
|
Has added benefit of removing newline from string to be translated
|
|
|
|
trap.c
|
|
- queue_sigchld_trap: new function, increments the number of pending
|
|
SIGCHLD signals by the argument, which is by convention the number
|
|
of children reaped in a call to waitchld()
|
|
|
|
trap.h
|
|
- queue_sigchld_trap: new extern declaration
|
|
|
|
jobs.c
|
|
- waitchld: if called from the SIGCHLD signal handler (sigchld > 0),
|
|
then call queue_sigchld_trap to avoid running the trap in a signal
|
|
handler context. Report and original fix from Siddhesh Poyarekar
|
|
<siddhesh@redhat.com>
|
|
|
|
lib/sh/unicode.c
|
|
- u32tocesc: take an unsigned 32-bit quantity and encode it using
|
|
ISO C99 string notation (\u/\U)
|
|
- u32cconv: call u32tocesc as a fallback instead of u32cchar
|
|
- u32cconv: call u32tocesc if iconv cannot convert the character.
|
|
Maybe do the same thing if iconv_open fails
|
|
- u32reset: call iconv_close on localconv if u32init == 1
|
|
|
|
3/11
|
|
----
|
|
config-top.h
|
|
- CHECKWINSIZE_DEFAULT: new define, set to initial value of
|
|
check_window_size (shopt checkwinsize): 0 for off, 1 for on.
|
|
Default is 0
|
|
|
|
{jobs,nojobs}.c
|
|
- check_window_size: default initial value to CHECKWINSIZE_DEFAULT
|
|
|
|
3/13
|
|
----
|
|
doc/bashref.texi
|
|
- change text referring to the copying restrictions to that
|
|
recommended by the FSF (no Front-Cover Texts and no Back-Cover
|
|
Texts)
|
|
|
|
lib/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)
|
|
|
|
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
|
|
|
|
3/16
|
|
----
|
|
array.c
|
|
- array_insert: fix memory leak by deleting element to be added in the
|
|
case of an error
|
|
|
|
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
|
|
|
|
3/19
|
|
----
|
|
stringlib.c
|
|
- substring: use memcpy instead of strncpy, since we know the length
|
|
and are going to add our own NUL terminator
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
3/21
|
|
----
|
|
config-top.h
|
|
- OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT: define to 1 to optimize
|
|
sequential indexed array assignment patterns. Defined to 1 by
|
|
default
|
|
|
|
array.c
|
|
- array_insert: if OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT is defined,
|
|
start the search at lastref (see change from 3/15)
|
|
|
|
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
|
|
|
|
4/1
|
|
---
|
|
command.h
|
|
- W_ASSNGLOBAL: new flag, set to indicate declare -g
|
|
|
|
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
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
externs.h
|
|
- sh_mbsnlen: extern declaration for new function
|
|
|
|
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
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- TMOUT: fix description to make it explicit that TMOUT is the timeout
|
|
period for a complete line of input, not just any input. Fixes
|
|
problem reported in Ubuntu bug 957303:
|
|
https://bugs.launchpad.net/ubuntu/+source/bash/+bug/957303
|
|
- HISTFILE: document change to write history list to history file in
|
|
any shell with history enabled, not just interactive shells. This
|
|
seems to be more logical behavior. Suggested by Greg Wooledge
|
|
<wooledg@eeg.ccf.org>
|
|
|
|
4/12
|
|
----
|
|
lib/readline/colors.h
|
|
- only include stdbool.h if HAVE_STDBOOL_H is defined
|
|
- if HAVE_STDBOOL_H is not defined, provide enough definition for the
|
|
library to use `bool', `true', and `false'
|
|
|
|
lib/readline/parse-colors.[ch]
|
|
- don't try to include <stdbool.h> at all; rely on colors.h to do it
|
|
|
|
lib/sh/snprintf.c
|
|
- vsnprintf_internal: only treat '0' as a flag to indicate zero padding
|
|
if `.' hasn't been encountered ((flags&PF_DOT) == 0); otherwise treat
|
|
it as the first digit of a precision specifier. Fixes bug reported
|
|
by Petr Sumbera <petr.sumbera@sun.com>
|
|
|
|
4/15
|
|
----
|
|
lib/sh/snprintf.c
|
|
- vsnprintf_internal: if the '0' and '-' flags both occur, the '0'
|
|
flag is ignored -- Posix. Start of a series of fixes based on
|
|
tests and patches from Petr Sumbera <petr.sumbera@sun.com>
|
|
- PUT_PLUS: make sure PF_PLUS flag is specified before putting the `+'
|
|
- vsnprintf_internal: when '+' is read as a flag, don't set right-
|
|
justify flag if the LADJUST (`-') flag has already been supplied
|
|
- floating: make sure to output space padding before the `+', zero
|
|
padding after
|
|
- exponent: make sure to output space padding before the `+', zero
|
|
padding after
|
|
- exponent: only subtract one from the width for the decimal point
|
|
if we're really going to print one
|
|
- floating: use presence of PF_PLUS flag to decide whether to account
|
|
for the `+' in the padded field width. Ditto for exponent()
|
|
|
|
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
|
|
|
|
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)
|
|
|
|
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"
|
|
|
|
4/20
|
|
----
|
|
lib/sh/strftime.c
|
|
- incoporated new version from Aharon Robbins <arnold@skeeve.com>
|
|
|
|
4/22
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- slight change to the description of /dev/tcp and /dev/udp
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
5/9
|
|
---
|
|
variables.c
|
|
- bind_variable_internal: if we get an array variable here (implicit
|
|
assignment to index 0), call make_array_variable_value, which
|
|
dummies up a fake SHELL_VAR * from array[0]. This matters when
|
|
we're appending and have to use the current value
|
|
- bind_variable_internal: after computing the new value, treat assoc
|
|
variables with higher precedence than simple array variables; it
|
|
might be that a variable has both attributes set
|
|
|
|
arrayfunc.c
|
|
- bind_array_var_internal: break code out that handles creating the
|
|
new value to be assigned to an array variable index into a new
|
|
function, make_array_variable_value. This handles creating a
|
|
dummy SHELL_VAR * for implicit array[0] assignment. Fixes bug
|
|
reported by Dan Douglas <ormaaj@gmail.com>
|
|
|
|
arrayfunc.h
|
|
- make_array_variable_value: new extern declaration
|
|
|
|
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>
|
|
|
|
5/24
|
|
----
|
|
|
|
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
|
|
|
|
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/Makefile.in
|
|
- LDFLAGS_FOR_BUILD: add to compilation recipes for build tools
|
|
gen-helpfiles, psize.aux
|
|
|
|
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>
|
|
|
|
5/27
|
|
----
|
|
subst.c
|
|
- expand_word_internal: make sure has_dollar_at doesn't get reset before
|
|
recursive calls to param_expand or expand_word_internal, since it has
|
|
to save state of what came before. Use temp variable and make sure
|
|
has_dollar_at is incremented if recursive call processes "$@".
|
|
Fixes bug reported by gregrwm <backuppc-users@whitleymott.net> and
|
|
supplemented by Dan Douglas <ormaaj@gmail.com>
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- changes to the description of substring expansion inspired by
|
|
suggestions from Bill Gradwohl <bill@ycc.com>
|
|
|
|
doc/bashref.texi
|
|
- added substring expansion examples inspired by suggestions from
|
|
Bill Gradwohl <bill@ycc.com>
|
|
|
|
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
|
|
|
|
variables.h
|
|
- find_shell_variable: extern declaration
|
|
- find_variable_tempenv: extern declaration
|
|
- find_variable_notempenv: extern declaration
|
|
|
|
arrayfunc.c
|
|
- bind_array_variable: call find_shell_variable instead of calling
|
|
var_lookup directly
|
|
|
|
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
|
|
|
|
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
|
|
|
|
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/vi_mode.c
|
|
- rl_vi_change_to: change to correctly redo `cc', since `c' is not a vi
|
|
motion character. From Red Hat bug 813289
|
|
- rl_vi_delete_to: change to correctly redo `dd', since `d' is not a vi
|
|
motion character
|
|
- rl_vi_yank_to: change to correctly redo `yy', since `y' is not a vi
|
|
motion character
|
|
|
|
6/4
|
|
---
|
|
lib/sh/mktime.c
|
|
- current versions of VMS do not need to include <stddef.h>. Fix from
|
|
John E. Malmberg <wb8tyw@qsl.net>
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
6/6
|
|
---
|
|
braces.c
|
|
- mkseq: try and be smarter about not overallocating elements in
|
|
the return array if the increment is not 1 or -1
|
|
|
|
6/7
|
|
---
|
|
parse.y
|
|
- history_delimiting_chars: if the parser says we're in the middle of
|
|
a compound assignment (PST_COMPASSIGN), just return a space to avoid
|
|
adding a stray semicolon to the history entry. Fixes bug reported
|
|
by "Davide Brini" <dave_br@gmx.com>
|
|
|
|
6/8
|
|
---
|
|
bashline.c
|
|
- 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>
|
|
|
|
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
|
|
|
|
externs.h
|
|
- sh_backslash_quote: declaration now takes a third argument
|
|
|
|
builtins/printf.def
|
|
- printf_builtin: call sh_backslash_quote with 1 as third argument
|
|
so tildes get escaped
|
|
|
|
{bashline,bracecomp}.c
|
|
- call sh_backslash_quote with 0 as third argument so tildes are not
|
|
escaped in completed words
|
|
|
|
doc/bash.1
|
|
- add `coproc' to the list of reserved words. From a report by
|
|
Jens Schweikhardt <schweikh@schweikhardt.net>
|
|
|
|
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
|
|
- 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>
|
|
|
|
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>
|
|
|
|
6/21
|
|
----
|
|
|
|
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>
|
|
|
|
6/22
|
|
----
|
|
mailcheck.c
|
|
- file_mod_date_changed: return 0 right away if mailstat() does not
|
|
return success. Fixes bug with using uninitialized values reported
|
|
by szymon.kalasz@uj.edu.pl
|
|
|
|
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
|
|
|
|
nojobs.c
|
|
- job_control: now declared as int variable, initialized to 0, never
|
|
modified
|
|
|
|
jobs.h
|
|
- job_control: extern declaration no longer dependent on JOB_CONTROL
|
|
|
|
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
|
|
|
|
6/23
|
|
----
|
|
lib/glob/glob.c
|
|
- glob_filename: check for interrupts before returning if glob_vector
|
|
returns NULL or an error. Bug reported by Serge van den Boom
|
|
<svdb@stack.nl>, fix from Andreas Schwab <schwab@linux-m68k.org>
|
|
- call run_pending_traps after each call to QUIT or test of
|
|
interrupt_state, like we do in mainline shell code
|
|
- glob_vector: don't call QUIT; in `if (lose)' code block; just free
|
|
memory, return NULL, and let callers deal with interrupt_state or
|
|
other signals and traps
|
|
|
|
6/25
|
|
----
|
|
lib/readline/input.c
|
|
- rl_read_key: restructure the loop that calls the event hook a little,
|
|
so that the hook is called only after rl_gather_tyi returns no input,
|
|
and any pending input is returned first. This results in better
|
|
efficiency for processing pending input without calling the hook
|
|
on every input character as bash-4.1 did. From a report from
|
|
Max Horn <max@quendi.de>
|
|
|
|
6/26
|
|
----
|
|
trap.c
|
|
- signal_is_pending: return TRUE if SIG argument has been received and
|
|
a trap is waiting to execute
|
|
|
|
trap.h
|
|
- signal_is_pending: extern declaration
|
|
|
|
lib/glob/glob.c
|
|
- glob_vector: check for pending SIGINT trap each time through the loop,
|
|
just like we check for interrupt_state or terminating_signal, and
|
|
set `lose = 1' so we clean up after ourselves and interrupt the
|
|
operation before running the trap. This may require a change later,
|
|
maybe call run_pending_traps and do that if run_pending_traps returns?
|
|
|
|
variables.c
|
|
- sv_histtimefmt: set history_comment_character to default (`#') if
|
|
it's 0 when we're turning on history timestamps. The history code
|
|
uses the history comment character to prefix timestamps, and
|
|
leaving it at 0 effectively removes them from the history. From a
|
|
report to help-bash by Dennis Williamson <dennistwilliamson@gmail.com>
|
|
|
|
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)
|
|
|
|
6/30
|
|
----
|
|
variables.h
|
|
- additional defines for the new `nameref' variable attribute
|
|
(att_nameref): nameref_p, nameref_cell, var_setref
|
|
|
|
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)
|
|
|
|
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]
|
|
|
|
execute_cmd.c
|
|
- execute_for_command: changes to implement ksh93 semantics when index
|
|
variable is a nameref
|
|
|
|
builtins/setattr.def
|
|
- show_var_attributes: change to add `n' to flags list if att_nameref
|
|
is set
|
|
|
|
builtins/set.def
|
|
- unset_builtin: changes to error messages to follow nameref variables
|
|
|
|
builtins/declare.def
|
|
- document new -n option
|
|
- declare_internal: new `-n' and `+n' options
|
|
- declare_internal: handle declare -n var[=value] and
|
|
declare +n var[=value] for existing and non-existant variables.
|
|
Enforce restriction that nameref variables cannot be arrays.
|
|
Implement semi-peculiar ksh93 semantics for typeset +n ref=value
|
|
|
|
7/5
|
|
---
|
|
variables.c
|
|
- unbind_variable: unset whatever a nameref resolves to, leaving the
|
|
nameref variable itself alone
|
|
- unbind_nameref: new function, unsets a nameref variable, not the
|
|
variable it references
|
|
|
|
variables.h
|
|
- unbind_nameref: extern declaration
|
|
|
|
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
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- document namerefs and typeset/declare/local/unset -n
|
|
|
|
7/13
|
|
----
|
|
lib/sh/casemod.c
|
|
- include shmbchar.h for is_basic and supporting pieces
|
|
- sh_casemod: use _to_wupper and _to_wlower to convert wide character
|
|
case instead of TOUPPER and TOLOWER. Fixes bug reported by
|
|
Dennis Williamson <dennistwilliamson@gmail.com>, fix from
|
|
Andreas Schwab <schwab@linux-m68k.org>
|
|
- cval: short-circuit and return ascii value if is_basic tests true
|
|
- sh_casemod: short-circuit and use non-multibyte case modification
|
|
and toggling code if is_basic tests true
|
|
|
|
lib/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()
|
|
|
|
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
|
|
|
|
lib/readline/rltty.c
|
|
- prepare_terminal_settings: don't mess with IXOFF setting if
|
|
USE_XON_XOFF defined
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
7/24
|
|
----
|
|
configure.in
|
|
- interix: define RECYCLES_PIDS. Based on a report from Michael
|
|
Haubenwallner <michael.haubenwallner@salomon.at>
|
|
|
|
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>
|
|
|
|
support/shobj-conf
|
|
- Mac OS X: drop MACOSX_DEPLOYMENT_TARGET=10.3 from the LDFLAGS. We
|
|
can finally kill Panther
|
|
|
|
7/28
|
|
----
|
|
subst.c
|
|
- command_substitute: make sure last_made_pid gets reset if make_child
|
|
fails
|
|
|
|
execute_cmd.c
|
|
- execute_command_internal: case cm_simple: decide whether or not to
|
|
wait_for a child if already_making_children is non-zero, indicates
|
|
that there is an unwaited-for child. More of fix for bug report
|
|
from Michael Haubenwallner <michael.haubenwallner@salomon.at>
|
|
|
|
jobs.c
|
|
- make_child: call delete_old_job (new_pid) unconditionally, don't
|
|
bother to check whether or not pid wrap occurred. Rest of fix for
|
|
bug report from Michael Haubenwallner
|
|
<michael.haubenwallner@salomon.at>
|
|
|
|
7/29
|
|
----
|
|
shell.c
|
|
- subshell_exit: new function, exits the shell (via call to sh_exit())
|
|
after calling any defined exit trap
|
|
|
|
externs.h
|
|
- subshell_exit: new extern declaration
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
8/6
|
|
---
|
|
lib/readline/histexpand.c
|
|
- history_expand_internal: now takes an additional argument saying
|
|
whether the history expansion occurs within a quoted string, set to
|
|
the open quote character
|
|
- history_expand_internal: use new argument instead of checking prev
|
|
char and initializing quoted_search_delimiter, pass qc directly to
|
|
get_history_event, where it allows a matching quote to terminate a
|
|
string defining an event
|
|
- history_expand: change single-quote handling code so that if
|
|
history_quotes_inhibit_expansion is 0, single quotes are treated
|
|
like double quotes
|
|
- history_expand: change call to history_expand_internal to pass new
|
|
argument of `"' if double-quoted string, `'' if single-quoted string;
|
|
this lets history_expand decide what is a quoted string and what
|
|
is not
|
|
|
|
8/7
|
|
---
|
|
configure.in
|
|
- AC_CANONICAL_BUILD: invoke for later use
|
|
|
|
lib/readline/macro.c
|
|
- _rl_prev_macro_key: new function, inverse of _rl_next_macro_key:
|
|
backs up the index into the current macro by 1
|
|
|
|
lib/readline/rlprivate.h
|
|
- _rl_prev_macro_key: extern declaration
|
|
|
|
|
|
lib/readline/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>
|
|
|
|
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
|
|
|
|
builtins/common.h
|
|
- extern declaration for evalstring()
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
builtins/mapfile.def
|
|
- run_callback: call evalstring instead of parse_and_execute
|
|
|
|
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/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
|
|
|
|
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
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
8/21
|
|
----
|
|
command.h
|
|
- W_NOBRACE: new word flag that means to inhibit brace expansion
|
|
|
|
subst.c
|
|
- brace_expand_word_list: suppress brace expansion for words with
|
|
W_NOBRACE flag
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
8/23
|
|
----
|
|
jobs.c
|
|
- remove references to first_pid and pid_wrap, since we're not using
|
|
them for anything anymore
|
|
|
|
8/24
|
|
----
|
|
subst.c
|
|
- changes for W_NOBRACE everywhere appropriate: so it can be displayed
|
|
for debugging, and passed out of expand_word_internal
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- 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>
|
|
|
|
doc/bashref.texi
|
|
- some small formatting changes from Karl Berry <karl@freefriends.org>
|
|
|
|
8/27
|
|
----
|
|
lib/readline/doc/{history,rlman,rluserman}.texi
|
|
- some small formatting changes from Karl Berry <karl@freefriends.org>
|
|
|
|
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>
|
|
|
|
subst.c
|
|
- array_length_reference: changes to make length references to array
|
|
elements using negative indices (${#a[-1]}) work
|
|
|
|
8/28
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- document new treatment of negative indices to indexed arrays when
|
|
assigning, referencing, calculating length, and unsetting
|
|
|
|
8/29
|
|
----
|
|
shell.c
|
|
- show_shell_usage: add -l to list of shell invocation options (short
|
|
for --login). From Red Hat bug 852469
|
|
|
|
configure.ac
|
|
- renamed from configure.in, as latest autoconf versions want. Patches
|
|
Stefano Lattarini <stefano.lattarini@gmail.com>
|
|
|
|
MANIFEST,Makefile.in,doc/bashref.texi,support/mkconffiles
|
|
- configure.in -> configure.ac
|
|
|
|
9/1
|
|
---
|
|
|
|
parse.y
|
|
- read_token_word: allow words like {array[ind]} to be valid redirection
|
|
words for constructs like {x}<file
|
|
|
|
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>
|
|
|
|
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/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
|
|
|
|
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/readline/misc.c
|
|
- rl_emacs_editing_mode: make sure to call _rl_reset_prompt if we're
|
|
showing the editing mode in the prompt
|
|
|
|
lib/readline/rlprivate.h
|
|
- _rl_reset_prompt, _rl_show_mode_in_prompt: extern declarations
|
|
|
|
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>
|
|
|
|
doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
|
|
- document new show-mode-in-prompt variable, off by default
|
|
|
|
9/3
|
|
---
|
|
|
|
jobs.c
|
|
- set_childmax: new function, external mechanism for other parts of
|
|
the shell to set js.c_childmax, the number of saved exited child
|
|
statuses to remember
|
|
jobs.h
|
|
- set_childmax: extern declaration
|
|
|
|
variables.c
|
|
- 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)
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- CHILD_MAX: document new meaning and action when variable is set
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
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/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>
|
|
|
|
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
|
|
|
|
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>
|
|
|
|
9/11
|
|
----
|
|
|
|
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>
|
|
|
|
9/13
|
|
----
|
|
configure.ac,config.h.in
|
|
- enable-direxpand-default: new configure option, turns the `direxpand'
|
|
shell option on by default
|
|
|
|
bashline.c
|
|
- dircomplete_expand, dircomplete_expand_relpath: initialize to 1 if
|
|
DIRCOMPLETE_EXPAND_DEFAULT is defined and non-zero
|
|
|
|
doc/bashref.texi
|
|
- enable-direxpand-default: document new configure option
|
|
|
|
9/14
|
|
----
|
|
shell.c
|
|
- --protected: make option valid only when wordexp is compiled into
|
|
the shell. Fix from Roman Rakus <rrakus@redhat.com>
|
|
|
|
configure.ac
|
|
- HP NonStop (*-nsk*): compile --without-bash-malloc. Change from
|
|
Joachim Schmitz <jojo@schmitz-digital.de>
|
|
|
|
9/16
|
|
----
|
|
subst.c,execute_cmd.c,lib/glob/sm_loop.c,lib/sh/shquote.c
|
|
- minor code cleanups from Joachim Schmitz <jojo@schmitz-digital.de>
|
|
|
|
lib/readline/colors.h
|
|
- workaround for HP NonStop compiler issue with <stdbool.h> from
|
|
Joachim Schmitz <jojo@schmitz-digital.de>
|
|
|
|
9/17
|
|
----
|
|
builtins/printf.def
|
|
- printf_builtin: handle localtime returning NULL, as can happen when
|
|
encountering overflow. Bug report and initial fix from
|
|
Eduardo A. Bustamante López <dualbus@gmail.com>
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
9/23
|
|
----
|
|
lib/readline/input.c
|
|
- rl_input_available_hook: new hook function, called from
|
|
_rl_input_available (or _rl_input_queued) to return whether or not
|
|
input is available wherever the input source is
|
|
|
|
lib/readline/doc/rltech.texi
|
|
- rl_input_available_hook: document
|
|
|
|
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>
|
|
|
|
10/2
|
|
----
|
|
command.h
|
|
- add c_lock member to coproc structure for future use to tell who is
|
|
manipulating it
|
|
|
|
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/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>
|
|
|
|
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
|
|
|
|
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
|
|
|
|
test.c
|
|
- unary_operator: add new -R variable, returns true if variable is set
|
|
and has the nameref attribute. From ksh93
|
|
|
|
builtins/test.def
|
|
- add -R to description of conditional commands for help test
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- document new -R unary conditional operator
|
|
|
|
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
|
|
|
|
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
|
|
|
|
|
|
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)
|
|
|
|
sig.c
|
|
- sigint_sighandler: call bashline_set_event_hook to set the event
|
|
hook if we're executing in a readline signal handler context
|
|
|
|
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)
|
|
|
|
|
|
parse.y
|
|
- yy_readline_get: don't set interrupt_immediately before we call
|
|
readline(). Inspired by report from lanshun zhou
|
|
<zls.sogou@gmail.com>
|
|
|
|
input.c
|
|
- getc_with_restart: add call to run_pending_traps after call to
|
|
CHECK_TERMSIG
|
|
|
|
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
|
|
|
|
builtins/mapfile.def
|
|
- mapfile: don't set interrupt_immediately before calling zgetline()
|
|
(which uses zread internally)
|
|
|
|
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
|
|
|
|
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/20
|
|
-----
|
|
builtins/wait.def
|
|
- WAIT_RETURN: set wait_signal_received back to 0 for the potential
|
|
next call to wait
|
|
|
|
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
|
|
|
|
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
|
|
|
|
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
|
|
|
|
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/24
|
|
-----
|
|
lib/glob/glob.c
|
|
- glob_filename: only check directory_name for globbing chars if
|
|
it's of non-zero length
|
|
|
|
lib/sh/strchrnul.c
|
|
- new simpler implementation
|
|
|
|
subst.c
|
|
- command_substitute: call set_shellopts after turning off errexit
|
|
in subshells so it's reflected in $SHELLOPTS
|
|
|
|
11/7
|
|
----
|
|
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>
|
|
|
|
execute_cmd.c
|
|
- execute_simple_command: call unlink_fifo_list only if this is the
|
|
last element of a pipeline (or not in a pipeline), rather than for
|
|
every child. Fixes difference in behavior between /dev/fd and
|
|
FIFOs reported by Zev Weiss <zev@bewilderbeest.net>
|
|
- execute_null_command: do the same thing in the parent branch after
|
|
make_child
|
|
|
|
11/14
|
|
-----
|
|
subst.c
|
|
- parameter_brace_expand: a variable is null if it's special ($@, $*),
|
|
the expansion occurs within double quotes, and the expansion turns
|
|
into a quoted null. Fixes debian bug 692447 reported by
|
|
Matrosov Dmitriy <sgf.dma@gmail.com>
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
lib/malloc/malloc.c
|
|
- block_signals: renamed to _malloc_block_signals, made public
|
|
- unblock_signals: renamed to _malloc_unblock_signals, made public
|
|
|
|
lib/malloc/imalloc.h
|
|
- extern declarations for _malloc_{un,}block_signals
|
|
|
|
lib/malloc/table.c
|
|
- mregister_alloc, mregister_free: block signals around table
|
|
manipulation
|
|
|
|
11/15
|
|
-----
|
|
trap.c
|
|
- run_pending_traps: set SIG_INPROGRESS flag around calls to
|
|
run_sigchld_handler so other parts of the shell know that the
|
|
SIGCHLD trap handler is executing
|
|
- run_pending_traps: if we get a situation where we are looking at
|
|
running a SIGCHLD trap but the trap string is IMPOSSIBLE_TRAP_HANDLER
|
|
and the SIG_INPROGRESS flag is set, just skip it. This is possible
|
|
if run_pending_traps is called from a SIGCHLD trap handler run by
|
|
run_sigchld_trap
|
|
|
|
doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
|
|
- corrected description of the effect of `set history-size 0'. Report
|
|
from Vesa-Matti J Kari <vmkari@cc.helsinki.fi>
|
|
|
|
include/stdc.h
|
|
- CPP_STRING: new define, replaces __STRING
|
|
|
|
lib/malloc/{malloc.c,imalloc.h}
|
|
- replace __STRING with CPP_STRING
|
|
|
|
11/16
|
|
-----
|
|
lib/readline/bind.c
|
|
- sv_histsize: if argument evaluates to a value < 0, unstifle the
|
|
history
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
jobs.h
|
|
- ANY_PID: new define
|
|
|
|
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>
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- document new `wait -n' option
|
|
|
|
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>
|
|
|
|
11/28
|
|
-----
|
|
|
|
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
|
|
|
|
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>
|
|
|
|
12/2
|
|
----
|
|
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>
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
12/12
|
|
-----
|
|
lib/glob/sm_loop.c
|
|
- PATSCAN (glob_patscan): if passed string already points to end of
|
|
pattern, return NULL immediately. Fixes problem with
|
|
extglob_skipname reported by Raphaël Droz <raphael.droz@gmail.com>
|
|
|
|
12/13
|
|
-----
|
|
execute_cmd.c
|
|
- execute_coproc: handle the command's exit status being inverted
|
|
(an oversight). Fixes bug reported by DJ Mills
|
|
<danielmills1@gmail.com> and Andreas Schwab <schwab@linux-m68k.org>
|
|
|
|
12/14
|
|
-----
|
|
lib/readline/readline.c
|
|
- 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>
|
|
|
|
builtins/printf.def
|
|
- printf_builtin: '%()T' conversion: if there is no argument supplied,
|
|
behave as if -1 had been supplied (current time). ksh93-like feature
|
|
suggested by Clark Wang <dearvoid@gmail.com>
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- document new printf %()T default argument behavior
|
|
|
|
12/15
|
|
-----
|
|
lib/readline/display.c
|
|
- displaying_prompt_first_line: new variable, indicates whether or
|
|
not the first line of output is displaying the prompt. Always true
|
|
in normal mode, sometimes false in horizontal scrolling mode
|
|
- rl_redisplay: set displaying_prompt_first_line to true unless we
|
|
are in horizontal mode; set to false in horizontal mode if the left
|
|
margin of the displayed line is greater than the end of the prompt
|
|
string
|
|
- rl_redisplay: when in horizontal scroll mode, don't adjust
|
|
_rl_last_c_pos by the wrap offset unless the line is displaying
|
|
a prompt containing invisible chars
|
|
- update line: don't adjust _rl_last_c_pos by the wrap offset unless
|
|
the line is displaying a prompt containing invisible chars
|
|
- update_line: if shrinking the line by reducing the number of
|
|
displayed characters, but we have already moved the cursor to the
|
|
beginning of the line where the first difference starts, don't
|
|
try to delete characters
|
|
|
|
builtins/read.def
|
|
- 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>
|
|
|
|
subst.c
|
|
- command_substitute: change direct assignment of exit_immediately_on_error
|
|
to use change_flag ('e', FLAG_OFF) instead
|
|
|
|
flags.c
|
|
- use errexit_flag as the variable modified by changes to the -e
|
|
option, reflect those changes to exit_immediately_on_error
|
|
|
|
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
|
|
|
|
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>
|
|
|
|
12/23
|
|
-----
|
|
include/posixjmp.h
|
|
- setjmp_nosigs: new define, call setjmp in such a way that it will
|
|
not manipulate the signal mask
|
|
|
|
{expr,test,trap}.c
|
|
- setjmp_nosigs: call instead of setjmp; don't need to manipulate
|
|
signal mask
|
|
|
|
builtins/read.def
|
|
- read_builtin: setjmp_nosigs: call instead of setjmp; don't need
|
|
to manipulate signal mask
|
|
|
|
builtins/evalstring.c:
|
|
- parse_and_execute: setjmp_nosigs: call instead of setjmp; don't need
|
|
to manipulate signal mask
|
|
- parse_string: setjmp_nosigs: call instead of setjmp; don't need
|
|
to manipulate signal mask
|
|
- parse_and_execute: save and restore the signal mask if we get a
|
|
longjmp that doesn't cause us to return or exit (case DISCARD)
|
|
|
|
12/24
|
|
-----
|
|
general.c
|
|
- bash_tilde_expand: only set interrupt_immediately if there are no
|
|
signals trapped; we want to jump to top level if interrupted but
|
|
not run any trap commands
|
|
|
|
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
|
|
|
|
input.c
|
|
- getc_with_restart: add call to QUIT instead of CHECK_TERMSIG
|
|
|
|
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)
|
|
|
|
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
|
|
|
|
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
|
|
|
|
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
|
|
|
|
builtins/evalfile.c
|
|
- _evalfile: setjmp_nosigs: call instead of setjmp when saving
|
|
return_catch; don't need to manipulate signal mask
|
|
|
|
builtins/evalstring.c
|
|
- evalstring: setjmp_nosigs: call instead of setjmp when saving
|
|
return_catch; don't need to manipulate signal mask
|
|
|
|
shell.c
|
|
- main: setjmp_nosigs: call instead of setjmp where appropriate when
|
|
saving top_level; don't need to manipulate signal mask if we're
|
|
going to exit right away
|
|
- run_one_command: setjmp_nosigs: call instead of setjmp where
|
|
appropriate when saving top_level; don't need to manipulate signal
|
|
mask if we're going to exit right away
|
|
- run_wordexp: setjmp_nosigs: call instead of setjmp where
|
|
appropriate when saving top_level; don't need to manipulate signal
|
|
mask if we're going to exit right away
|
|
|
|
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)
|
|
|
|
12/26
|
|
-----
|
|
parse.y
|
|
- shell_input_line_{index,size,len}: now of type size_t; in some cases
|
|
the unsigned property makes a difference
|
|
- STRING_SAVER: saved_line_{size,index} now of type size_t
|
|
- shell_getc: don't allow shell_input_line to grow larger than SIZE_MAX;
|
|
lines longer than that are truncated until read sees a newline;
|
|
addresses theoretical buffer overflow described by Paul Eggert
|
|
<eggert@cs.ucla.edu>
|
|
- set_line_mbstate: size_t changes like shell_getc
|
|
- shell_getc: if shell_input_line is larger than 32K, free it and
|
|
start over to avoid large memory allocations sticking around
|
|
|
|
variables.c
|
|
- bind_global_variable: new function, binds value to a variable in
|
|
the global shell_variables table
|
|
|
|
variables.h
|
|
- bind_global_variable: new extern declaration
|
|
|
|
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
|
|
|
|
command.h
|
|
- W_ASSIGNARRAY: new word flag, compound indexed array assignment
|
|
|
|
subst.h
|
|
- ASS_MKGLOBAL: new assignment flag, forcing global assignment even in
|
|
a function context, used by declare -g
|
|
|
|
execute_cmd.c
|
|
- fix_assignment_words: set W_ASSIGNARRAY flag if -a option given to
|
|
declaration builtin
|
|
|
|
subst.c
|
|
- do_assignment_internal: explicitly handle case where we are
|
|
executing in a function and we want to create a global array or
|
|
assoc variable
|
|
- shell_expand_word_list: call make_internal_declare if -a option
|
|
given to declaration builtin (W_ASSIGNARRAY); handle -g option with
|
|
it (W_ASSNGLOBAL). Fixes inconsistency noticed by Vicente Couce
|
|
Diaz <vituko@gmail.com>, where declare -ag foo=(bar) could modify
|
|
array variable foo at previous function scope, not global scope
|
|
|
|
12/27
|
|
-----
|
|
bashline.c
|
|
- Minix needs the third argument to tputs to be a void funtion taking
|
|
an int argument, not an int-returning function. Fix from
|
|
John E. Malmberg <wb8tyw@qsl.net> as part of VMS bash port
|
|
|
|
12/29
|
|
-----
|
|
configure.ac,version.c,patchlevel.h
|
|
- bash-4.3-devel: new version, new shell compatibility level (43)
|
|
|
|
subst.c
|
|
- parameter_brace_patsub: put the bash-4.2 code back in from the
|
|
change of 3/3 that runs the replacement string through quote
|
|
removal, make it dependent on shell_compatibility_level <= 42
|
|
|
|
builtins/shopt.def
|
|
- compat42: new shopt option
|
|
- set_compatibility_level: change logic to set and unset various
|
|
compat variables and shell_compatibility_level
|
|
|
|
COMPAT
|
|
- new documentation for bash-4.3 compatibility changes
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- compat42: document new shopt option
|
|
|
|
builtins/shopt.def
|
|
- set_compatibility_opts: new function, sets the various shopt
|
|
compat variables based on the value of shell_compatibility_level
|
|
|
|
builtins/common.h
|
|
- set_compatibility_opts: new extern declaration
|
|
|
|
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
|
|
|
|
variables.h
|
|
- sv_shcompat: new extern declaration
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- BASH_COMPAT: description of new variable
|
|
|
|
lib/readline/complete.c
|
|
- _rl_colored_stats: default back to 0 for 4.3 release branch
|
|
|
|
1/5/2013
|
|
--------
|
|
quit.h
|
|
- remove spurious call to itrace in CHECK_WAIT_INTR
|
|
|
|
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
|
|
|
|
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
|
|
|
|
lib/readline/readline.h
|
|
- rl_signal_event_hook: new extern declaration
|
|
|
|
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
|
|
|
|
lib/readline/doc/rltech.texi
|
|
- rl_signal_event_hook: document new function
|
|
|
|
bashline.c
|
|
- changes to set rl_signal_event_hook instead of rl_event_hook
|
|
|
|
lib/readline/readline.h
|
|
- change readline version numbers to 6.3
|
|
|
|
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>
|
|
|
|
1/9
|
|
---
|
|
expr.c
|
|
- expassign: invalidate curlval before freeing and NULLing tokstr to
|
|
avoid aliasing issues. Fixes bug reported by Eduardo A. Bustamante
|
|
López<dualbus@gmail.com> and Dan Douglas <ormaaj@gmail.com>
|
|
|
|
braces.c
|
|
- array_concat: don't be so aggressive in trying to short-circuit. We
|
|
can only short-circuit if we have a single-element array where the
|
|
element is an empty string (array[0] == "" array[1] = 0x0). Existing
|
|
practice requires us to replicate arrays and prefix or append empty
|
|
strings. Fixes bug reported by Eduardo A. Bustamante López
|
|
<dualbus@gmail.com>
|
|
|
|
1/11
|
|
----
|
|
execute_cmd.c
|
|
- execute_builtin: since mapfile uses evalstring() to run its callbacks
|
|
internally, just like eval, so it needs to handle the case where the
|
|
temp environment given to mapfile persists throughout the entire
|
|
set of callback commands. This might be a problem with trap also, but
|
|
trap isn't run in the same way. Fixes bug reported by Dan Douglas
|
|
<ormaaj@gmail.com>
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
1/17
|
|
----
|
|
subst.c
|
|
- expand_word_list_internal: make sure tempenv_assign_error is
|
|
initialized to 0
|
|
|
|
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>
|
|
|
|
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]
|
|
|
|
command.h
|
|
- W_GLOBEXP (which was unused) is now W_SPLITSPACE (which isn't used
|
|
yet)
|
|
|
|
{execute_cmd,subst,variables}.c
|
|
- removed all code that mentioned W_GLOBEXP
|
|
- removed mention of gnu_argv_flags and code that set it
|
|
|
|
1/22
|
|
----
|
|
subst.c
|
|
- 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'
|
|
|
|
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>
|
|
|
|
execute_cmd.c
|
|
- execute_command_internal: make sure any subshell forked to run a
|
|
group command or user subshell at the end of a pipeline runs any
|
|
EXIT trap it sets. Fixes debian bash bug 698411
|
|
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=698411
|
|
|
|
subst.c
|
|
- 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'
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
1/26
|
|
----
|
|
redir.c
|
|
- redirection_expand, write_here_string, write_here_document: before
|
|
calling any of the word expansion functions, after setting
|
|
expanding_redir to 1 (which bypasses the temp environment in the
|
|
variable lookup functions), call sv_ifs to reset the cached IFS-
|
|
related variables set by subst.c:setifs(). This ensures that
|
|
redirections will not get any IFS values that are set in the
|
|
temporary environment, as Posix specifies. Then, after the word
|
|
expansions, after resetting expanding_redir to 0, call sv_ifs
|
|
again to make sure the cached IFS values are set from any
|
|
assignments in the temporary environment. We force executing_builtin
|
|
to 1 to `fool' the variable lookup functions into using any temp
|
|
environment, then reset it to its old value after sv_ifs returns.
|
|
This is what allows read() to use the (cached) IFS variables set
|
|
in the temp environment. Fixes inconsistency reported by Dan Douglas
|
|
<ormaaj@gmail.com>
|
|
|
|
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>
|
|
|
|
1/30
|
|
----
|
|
configure.ac
|
|
- changed version to 4.3-alpha
|
|
|
|
redir.c
|
|
- redir_open: handle open returning -1/EINTR, which seems to happen
|
|
a lot with FIFOs and SIGCHLD, and call QUIT to handle other
|
|
signals that can interrupt open(2). Bug report and initial fix
|
|
from Mike Frysinger <vapier@gentoo.org>
|
|
|
|
1/31
|
|
----
|
|
subst.c
|
|
- parameter_brace_expand: make sure to propagate the PF_ASSIGNRHS flag
|
|
to parameter_brace_expand_word
|
|
- parameter_brace_expand_word: make sure that if the PF_ASSIGNRHS flag
|
|
is set and we are expanding ${a[@]} or ${a[*]} we set quoted to
|
|
include Q_DOUBLE_QUOTES before calling array_value_internal, mirroring
|
|
what we do for $@ and $*. Fixes inconsistency reported by Dan
|
|
Douglas <ormaaj@gmail.com>
|
|
|
|
configure.ac
|
|
- use AC_CHECK_TOOL instead of AC_CHECK_PROG to check for ar, since it
|
|
will find $host-prefixed versions of utilities. Report and fix from
|
|
Mike Frysinger <vapier@gentoo.org>
|
|
|
|
builtins/setattr.def
|
|
- set_var_attribute: check whether bind_variable (called when the
|
|
variable whose attributes are being modified is found in the temp
|
|
environment) just modified a read-only global variable, and don't
|
|
bother marking the temporary variable for propagation if so. The
|
|
propagation is superfluous and will result in a strange error
|
|
message
|
|
|
|
2/2
|
|
---
|
|
variables.c
|
|
- 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>
|
|
|
|
2/9
|
|
---
|
|
|
|
builtins/read.def
|
|
- sigalrm_seen, alrmbuf: now global so the rest of the shell (trap.c)
|
|
can use them
|
|
- sigalrm: just sets flag, no longer longjmps to alrmbuf; problem was
|
|
longjmp without manipulating signal mask, leaving SIGALRM blocked
|
|
|
|
quit.h
|
|
- move CHECK_ALRM macro here from builtins/read.def so trap.c:
|
|
check_signals() can call it
|
|
|
|
trap.c
|
|
- check_signals: add call to CHECK_ALRM before QUIT
|
|
- check_signals_and_traps: call check_signals() instead of including
|
|
CHECK_ALRM and QUIT inline. Integrating check for read builtin's
|
|
SIGALRM (where zread call to check_signals_and_traps can see it)
|
|
fixes problem reported by Mike Frysinger <vapier@gentoo.org>
|
|
|
|
2/12
|
|
----
|
|
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>
|
|
|
|
|
|
2/13
|
|
----
|
|
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>
|
|
|
|
2/14
|
|
----
|
|
configure.ac
|
|
- add check for sig_atomic_t; already a placeholder for it in
|
|
config.h.in
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
trap.[ch]
|
|
- get_original_signal: now global so rest of the shell can use it
|
|
|
|
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
|
|
|
|
sig.h
|
|
- sigterm_sighandler: new extern declaration
|
|
|
|
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
|
|
- 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
|
|
- 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
|
|
|
|
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)
|
|
|
|
2/18
|
|
----
|
|
redir.c
|
|
- do_redirection_internal: add undoable redirection for the implicit
|
|
close performed by the <&n- and >&n- redirections. Fixes bug
|
|
reported by Stephane Chazelas <stephane.chazelas@gmail.com>
|
|
|
|
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
|
|
|
|
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)
|
|
|
|
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
|
|
|
|
unwind_prot.c
|
|
- include sig.h before quit.h (reverse order)
|
|
|
|
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
|
|
|
|
jobs.[ch]
|
|
- last_made_pid, last_asynchronous_pid: now volatile. Change from SuSE
|
|
|
|
jobs.c
|
|
- wait_for: if we're using sigaction to install a handler for SIGCHLD,
|
|
make sure we specify SA_RESTART
|
|
|
|
lib/{tilde,readline}/shell.c
|
|
- get_home_dir: instead of looking in the password file every time,
|
|
look once and cache the result
|
|
|
|
sig.[ch]
|
|
- sigwinch_received, sigterm_received: now `volatile' qualified
|
|
|
|
sig.c,quit.h
|
|
- interrupt_state,terminating_signal: now sig_atomic_t
|
|
|
|
3/1
|
|
---
|
|
MANIFEST,examples/*
|
|
- removed around 120 files without FSF copyrights; requested by
|
|
Karl Berry in early January
|
|
|
|
3/2
|
|
---
|
|
lib/malloc/malloc.c
|
|
- morecore: only check whether SIGCHLD is trapped if SIGCHLD is defined
|
|
|
|
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
|
|
|
|
quit.h
|
|
- include "sig.h" for sig_atomic_t
|
|
|
|
lib/readline/display.c
|
|
- update_line: when inserting one or more characters at the end of
|
|
the display line in a non-multibyte environment, just write from the
|
|
first difference to the end of the line and return. We don't have
|
|
to adjust _rl_last_c_pos. This is needed to adjust from the old
|
|
two-part copy to a single call to _rl_output_some_chars (change of
|
|
2/16)
|
|
|
|
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)
|
|
|
|
doc/bash.1
|
|
- add URL to `POSIX' file in `SEE ALSO' section; put pointer to that
|
|
section in --posix and set -o posix descriptions
|
|
|
|
examples/
|
|
- removed around 110 examples at the request of the FSF due to copyright
|
|
issues
|
|
|
|
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>
|
|
|
|
3/9
|
|
---
|
|
include/typemax.h
|
|
- SIZE_MAX: define to 65535 (Posix minimum maximum) if not defined
|
|
|
|
parse.y
|
|
- include "typemax.h" for possible SIZE_MAX definition, make sure we
|
|
include it after shell.h
|
|
|
|
{braces,expr}.c
|
|
- include "typemax.h" for possible INTMAX_MIN and INTMAX_MAX definitions
|
|
|
|
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>
|
|
|
|
[bash-4.3-alpha frozen]
|
|
|
|
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>
|
|
|
|
3/18
|
|
----
|
|
configure.ac
|
|
- socklen_t is defined as `unsigned int' if configure can't find it
|
|
|
|
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
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
subst.c
|
|
- skip_to_delim: handle SD_IGNOREQUOTE. no callers use it for now
|
|
|
|
3/25
|
|
----
|
|
support/config.{guess,sub}
|
|
- updated to versions from autoconf-2.69
|
|
|
|
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
|
|
|
|
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}
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
lib/readline/readline.c
|
|
- readline_internal_setup: call rl_vi_insertion_mode to enter vi
|
|
mode instead of rl_vi_insert_mode to avoid resetting the saved last
|
|
command information. Posix says that `.' can repeat a command
|
|
that was entered on a previous line so we need to save the info.
|
|
Fixes bug reported by Ian A. Watson <watson_ian_a@lilly.com>
|
|
|
|
4/14
|
|
----
|
|
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
|
|
|
|
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
|
|
|
|
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
|
|
- bind_int_variable: make sure invisible flag is unset. Fixes problems
|
|
like "declare -ai a; : $(( a[4]=4 ));"
|
|
|
|
arrayfunc.c
|
|
- array_variable_part: return variable even if invisible flag set,
|
|
callers must handle invisible vars
|
|
|
|
4/18
|
|
----
|
|
builtins/set.def
|
|
- unset_builtin: if -n flag given, call unset_nameref instead of
|
|
unset_variable
|
|
|
|
variables.c
|
|
- find_variable_nameref: print warning message if nameref circular
|
|
reference detected, return NULL and let caller deal with it
|
|
|
|
builtins/declare.def
|
|
- declare_builtin: only disallow global references at this point if
|
|
we are at the global scope
|
|
|
|
5/16
|
|
----
|
|
configure.ac
|
|
- update release status to beta
|
|
|
|
5/23
|
|
----
|
|
trap.c
|
|
- run_pending_traps: save and restore pipeline around calls to
|
|
evalstring() in case we get a trap while running a trap. Have to
|
|
figure out the recursive running traps issue elsewhere. Fixes
|
|
bug reported by Roman Rakus <rrakus@redhat.com>
|
|
- run_pending_traps: make sure to set running_trap to the appropriate
|
|
signal value when running a trap command
|
|
- run_pending_traps: short-circuit immediately if running_trap set
|
|
when invoked. Could change this later to only skip if it would
|
|
run the same trap as currently being run (running_trap == sig + 1)
|
|
|
|
configure.ac
|
|
- add warning if bison not found
|
|
|
|
lib/readline/doc/rltech.texi
|
|
- new section with an example program illustrating the callback
|
|
interface. Suggested by Peng Yu <pengyu.ut@gmail.com>
|
|
|
|
examples/loadables/Makefile.in
|
|
- remove references to `cut' and `getconf', which were removed in
|
|
early March
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
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
|
|
|
|
6/29
|
|
----
|
|
lib/glob/smatch.c
|
|
- glob_asciiranges: initialize to value of GLOBASCII_DEFAULT instead
|
|
of 0 (0 if not defined)
|
|
|
|
configure.ac,config.h.in
|
|
- --enable-glob-asciiranges-default: new option, controls the value of
|
|
GLOBASCII_DEFAULT; use it to turn globasciiranges shopt option on
|
|
by default
|
|
|
|
doc/bashref.texi
|
|
- document new --enable-glob-asciiranges-default configure option
|
|
|
|
variables.c
|
|
- assign_in_env: implement += value appending semantics for assignments
|
|
preceding command names
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
builtins/setattr.def
|
|
- show_func_attributes: display definition (if NODEFS argument is 0) and
|
|
attributes for a particular function; used by `declare -fp name'
|
|
|
|
builtins/declare.def
|
|
- declare_internal: call show_func_attributes if -f supplied with -p.
|
|
Fixes inconsistency observed by Linda Walsh <bash@tlinx.org>
|
|
|
|
builtins/common.h
|
|
- new extern declaration for show_func_attributes
|
|
|
|
builtins/read.def
|
|
- read_builtin: check the first supplied variable name for validity
|
|
before attempting to read any input, since we know we will have to
|
|
at least use that one. Don't check any other names yet. Suggested
|
|
by jidanni@jidanni.org
|
|
|
|
7/10
|
|
----
|
|
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>
|
|
|
|
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>
|
|
|
|
7/13
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- slight change to add a description of `shopt -o' suggested by Bruce
|
|
Korb <bruce.korb@gmail.com>
|
|
|
|
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
|
|
|
|
[bash-4.3-beta frozen]
|
|
|
|
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
|
|
|
|
command.h
|
|
- W_ASSIGNINT: new word flag; used internally for make_internal_declare
|
|
and set by fix_assignment_words
|
|
|
|
execute_cmd.c
|
|
- fix_assignment_words: set W_ASSIGNINT if compound assignment and -i
|
|
given as option. We don't do anything with the value yet
|
|
|
|
subst.c
|
|
- shell_expand_word_list: rework the way the option list that is
|
|
passed to make_internal_declare is created
|
|
|
|
8/1
|
|
---
|
|
doc/{bash.1,bashref.texi}
|
|
- minor changes to description of $! based on a report from Chris
|
|
Down <chris@chrisdown.name>
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
8/3
|
|
---
|
|
Makefile.in
|
|
- pcomplete.o: add dependency on $(DEFDIR)/builtext.h. Suggested by
|
|
Curtis Doty <curtis@greenkey.net>
|
|
|
|
8/5
|
|
---
|
|
lib/glob/sm_loop.c
|
|
- strcompare: short-circuit and return FNM_NOMATCH if the lengths of the
|
|
pattern and string (pe - p and se - s, respectively) are not equal
|
|
- strcompare: don't bother trying to set *pe or *se to '\0' if that's
|
|
what they already are. Fixes bug reported by Geir Hauge
|
|
<geir.hauge@gmail.com>
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
8/13
|
|
----
|
|
builtins/fc.def
|
|
- fc_builtin,fc_gethnum: calculate `real' end of the history list and
|
|
use it if -0 is specified as the beginning or end of the history
|
|
range to list. Doesn't work for fc -e or fc -s by design. Feature
|
|
requested by Mike Fied <micfied@gmail.com>
|
|
|
|
8/16
|
|
----
|
|
trap.c
|
|
- _run_trap_internal: use {save,restore}_parser_state instead of
|
|
{save,restore}_token_state. It's more comprehensive
|
|
|
|
8/23
|
|
----
|
|
doc/bash.1
|
|
- disown: remove repeated text. Report and fix from Thomas Hood
|
|
<jdthood@gmail.com>
|
|
|
|
8/25
|
|
----
|
|
lib/readline/rltty.c
|
|
- set_special_char: fix prototype (last arg is rl_command_func_t *)
|
|
|
|
sig.c
|
|
- set_signal_handler: return oact.sa_handler only if sigaction
|
|
succeeds; if it doesn't, return SIG_DFL (reasonable default). From
|
|
https://bugzilla.redhat.com/show_bug.cgi?id=911404
|
|
|
|
bashline.c
|
|
- attempt_shell_completion: fix to skip assignment statements preceding
|
|
command name even if there are no programmable completions defined.
|
|
From https://bugzilla.redhat.com/show_bug.cgi?id=994659
|
|
- attempt_shell_completion: if still completing command word following
|
|
assignment statements, do command completion even if programmable
|
|
completion defined for partial command name entered so far
|
|
|
|
8/26
|
|
----
|
|
pcomplete.c
|
|
- pcomp_filename_completion_function: make sure rl_filename_dequoting_function
|
|
is non-NULL before trying to call it. Bug and fix from
|
|
Andreas Schwab <schwab@linux-m68k.org>
|
|
|
|
bashline.c
|
|
- 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
|
|
|
|
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>
|
|
|
|
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/{util.c,rldefs.h}
|
|
- _rl_stricmp,_rl_strnicmp: now take const char * string arguments;
|
|
changed prototype declarations
|
|
|
|
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
|
|
|
|
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>
|
|
|
|
9/16
|
|
----
|
|
builtins/{caller,cd,kill,pushd,wait}.def
|
|
- builtin_usage(): make sure call to this sets return status to
|
|
EX_USAGE
|
|
|
|
9/18
|
|
----
|
|
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
|
|
|
|
readline.h
|
|
- rl_change_environment: new extern declaration for applications
|
|
|
|
9/22
|
|
----
|
|
configure.ac
|
|
- relstatus: bumped version to bash-4.3-beta2
|
|
|
|
9/24
|
|
----
|
|
|
|
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>
|
|
|
|
10/19
|
|
-----
|
|
|
|
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/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>
|
|
|
|
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>
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- document new -@ option to cd builtin
|
|
|
|
10/28
|
|
-----
|
|
lib/glob/{{gmisc,glob}.c,glob.h}
|
|
- extglob_pattern renamed to extglob_pattern_p, declared in glob.h
|
|
|
|
subst.c
|
|
- expand_word_internal: typo fix: case to fix " $@\ " bug in bash-4.2
|
|
had a typo (& isexp instead of &&)
|
|
|
|
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>
|
|
|
|
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
|
|
|
|
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>
|
|
|
|
builtins/ulimit.def
|
|
- RLIMIT_NTHR: if RLIMIT_PTHREAD is not defined, but RLIMIT_NTHR is,
|
|
use RLIMIT_NTHR (NetBSD)
|
|
|
|
11/5
|
|
----
|
|
locale.c
|
|
- set_default_locale_vars,set_locale_var: if TEXTDOMAINDIR has been
|
|
set, and default_dir has a non-null value, call bindtextdomain(3)
|
|
when TEXTDOMAIN is assigned a value. Fixes problem reported by
|
|
Michael Arlt <qwertologe@googlemail.com>
|
|
|
|
11/6
|
|
----
|
|
builtins/cd.def
|
|
- 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>
|
|
|
|
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
|
|
- 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>
|
|
|
|
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>
|
|
|
|
11/20
|
|
-----
|
|
[bash-4.3-rc1 frozen]
|
|
|
|
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>
|
|
|
|
11/28
|
|
-----
|
|
jobs.c
|
|
- delete_old_job: fix off-by-one error in job index in call to
|
|
internal_warning. Bug report from Peter Cordes <peter@cordes.ca>
|
|
|
|
11/30
|
|
-----
|
|
doc/bashref.texi
|
|
- add string to description of special parameters with name of
|
|
special parameter prefixed by a $, so you can search for $#,
|
|
for instance
|
|
|
|
12/2
|
|
----
|
|
lib/readline/{histexpand.c
|
|
- get_history_event: account for current_history() possibly returning
|
|
NULL. Report and fix from Pankaj Sharma <pankaj.s01@samsung.com>
|
|
|
|
|
|
12/11
|
|
-----
|
|
|
|
lib/readline/parse-colors.c
|
|
- get_funky_string: don't call abort if we see something we can't
|
|
parse; just return an error
|
|
- _rl_parse_colors: if we encounter an error while parsing $LS_COLORS
|
|
we need to leave _rl_color_ext_list as NULL after freeing its
|
|
elements, then turn off _rl_colored_stats. Report and fix from Martin
|
|
Wesdorp <mwesdorp@casema.nl>
|
|
|
|
12/13
|
|
-----
|
|
|
|
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
|
|
|
|
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>
|
|
|
|
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>
|
|
|
|
12/17
|
|
-----
|
|
support/config.{guess,sub}
|
|
- updated to latest versions from git
|
|
|
|
12/19
|
|
-----
|
|
parse.y
|
|
- 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
|
|
|
|
externs.h
|
|
- parser_expanding_alias, parser_save_alias, parser_restore_alias: new
|
|
extern function declarations
|
|
|
|
builtins/evalstring.c
|
|
- pe_prologue: if the parser is expanding an alias, make sure to add
|
|
an unwind-protect to restore the alias; undoes the work that will be
|
|
performed by parse_and_execute/parse_string
|
|
- parse_and_execute,parse_string: after calling push_stream to save
|
|
bash_input, check whether or not the parser is currently expanding
|
|
an alias (parser_expanding_alias() != 0). If it is, we want to save
|
|
that string in the pushed_string_list, which we do with
|
|
parser_save_alias.
|
|
|
|
12/23
|
|
-----
|
|
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>
|
|
|
|
expr.c
|
|
- exp2: save token pointer before calling readtok(), arrange to use
|
|
saved token pointer when printing error token on a division by 0
|
|
error
|
|
|
|
12/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>
|
|
|
|
Makefile.in
|
|
- install: make sure to use $(DESTDIR) when installing OTHER_DOCS.
|
|
Report and fix from Matthias Klose <doko@debian.org>
|
|
|
|
doc/texinfo.tex
|
|
- updated to version of 2013-09-11
|
|
|
|
12/28
|
|
-----
|
|
lib/readline/undo.c
|
|
- rl_do_undo: if we are undoing from a history entry (rl_undo_list ==
|
|
current_history()->data), make sure the change to rl_line_buffer is
|
|
reflected in the history entry. We use the guts of
|
|
rl_maybe_replace_line to do the work. Fixes problem reported by
|
|
gregrwm <backuppc-users@whitleymott.net>
|
|
|
|
12/30
|
|
-----
|
|
sig.c
|
|
- sigint_sighandler: if we get a SIGINT (and this signal handler is
|
|
installed) while the wait builtin is running, note that we received
|
|
it in the same way as jobs.c:wait_sigint_handler and return. The
|
|
various wait_for functions will look for that with CHECK_WAIT_INTR.
|
|
This fixes the wait builtin not being interruptible in an interactive
|
|
job control shell
|
|
|
|
12/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]
|
|
|
|
trap.h
|
|
- set_signal_hard_ignored: new external declaration
|
|
|
|
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
|
|
|
|
execute_cmd.c
|
|
- setup_async_signals: make sure we get the original dispositions for
|
|
SIGINT and SIGQUIT before starting the subshell, and don't call
|
|
set_signal_ignored because that sets original_signals[sig]. If we
|
|
don't, subsequent attempts to reset handling using trap will fail
|
|
because it thinks the original dispositions were SIG_IGN. Posix
|
|
interpretation 751 (http://austingroupbugs.net/view.php?id=751)
|
|
|
|
1/2/2014
|
|
--------
|
|
lib/sh/stringvec.c
|
|
- strvec_mcreate, strvec_mresize: versions of create and resize that
|
|
use malloc and realloc, respectively, instead of xmalloc/xrealloc
|
|
|
|
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
|
|
|
|
lib/sh/strdup.c
|
|
- strdup replacement function for ancient systems that don't have it
|
|
|
|
lib/sh/itos.c
|
|
- mitos: new function, itos that uses strdup instead of savestring
|
|
|
|
externs.h
|
|
- strvec_mcreate/strvec_mresize: new extern declarations
|
|
- mitos: new extern declaration
|
|
|
|
configure.ac
|
|
- bash version moved to 4.3-rc2
|
|
|
|
1/6
|
|
---
|
|
doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
|
|
- separate the description of what happens when readline reads the
|
|
tty EOF character from the description of delete-char, leaving a
|
|
note in the delete-char description about common binding for ^D.
|
|
From suggestion by Parke <parke.nexus@gmail.com>
|
|
|
|
lib/readline/doc/{version.texi,history.3,*.texi}
|
|
- updated email addresses and copyright dates
|
|
|
|
1/7
|
|
---
|
|
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
|
|
|
|
variables.h
|
|
- delete_var: new extern declaration
|
|
|
|
subst.h
|
|
- ASS_NAMEREF: new define for assignments, means assigning to a nameref
|
|
variable
|
|
|
|
builtins/declare.def
|
|
- declare_internal: if we are creating and assigning to a nameref
|
|
variable, make sure the value is a valid variable name (checks done
|
|
by make_variable_value via bind_variable_value) and display an
|
|
error message, deleting the variable we just created, if it is not.
|
|
Fixes bug reported by Peggy Russell <prusselltechgroup@gmail.com>
|
|
|
|
1/9
|
|
---
|
|
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
|
|
|
|
builtins/setattr.def
|
|
- show_name_attributes: if asked to display attributes and values for
|
|
a nameref variable, don't follow the nameref chain to the end. More
|
|
ksh93 compat
|
|
|
|
1/10
|
|
----
|
|
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
|
|
|
|
bashline.c
|
|
- bash_event_hook: make sure we clean up readline if interrupt_state
|
|
is set, not only when SIGINT is not trapped. check_signals_and_traps
|
|
will call check_signals, which calls QUIT, which will longjmp back
|
|
to top_level, running the interrupt trap along the way. Fixes the
|
|
problem of signal handlers being reset out from under readline, and
|
|
not being set properly the next time readline is called, because
|
|
signals_set_flag is still set to 1. XXX - might need to do this
|
|
for other signals too?
|
|
|
|
1/11
|
|
----
|
|
subst.h
|
|
- SD_GLOB: new define for skip_to_delim; means we are scanning a
|
|
glob pattern.
|
|
|
|
subst.c
|
|
- skip_to_delim: if flags include SD_GLOB, assume we are scanning a
|
|
glob pattern. Currently only used to skip bracket expressions
|
|
which may contain one of the delimiters
|
|
|
|
1/12
|
|
----
|
|
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>
|
|
|
|
1/19
|
|
----
|
|
subst.c
|
|
- list_dequote_escapes: new function; analogue of list_quote_escapes
|
|
|
|
pathexp.c
|
|
- quote_string_for_globbing: fix case where unescaped ^A is last char
|
|
in string; need to pass it through unaltered instead of turning it
|
|
into a bare backslash
|
|
- quote_string_for_globbing: when quoting for regexp matching in [[,
|
|
don't treat backslash as a quote character; quote the backslash as
|
|
any other character. Part of investigation into reports from
|
|
Eduardo A. Bustamante López <dualbus@gmail.com>
|
|
|
|
1/25
|
|
----
|
|
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>
|
|
|
|
Makefile.in
|
|
- variables.o: add dependency on builtins/builtext.h; helps with
|
|
parallel builds. Report from Linda Walsh <bash@tlinx.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>
|
|
|
|
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>
|
|
|
|
1/29
|
|
----
|
|
[bash-4.3-rc2 released]
|
|
|
|
1/30
|
|
----
|
|
lib/readline/readline.h
|
|
- rl_clear_history, rl_free_keymap: add extern declarations. Report
|
|
from Hiroo Hayashi <hiroo.hayashi@computer.org>
|
|
|
|
general.c
|
|
- include trap.h for any_signals_trapped() prototype
|
|
|
|
lib/sh/unicode.c
|
|
- include <stdio.h> for sprintf prototype
|
|
|
|
1/31
|
|
----
|
|
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 &&
|
|
|
|
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
|
|
|
|
lib/glob/glob.c
|
|
- glob_testdir: now takes a second flags argument (currently unused);
|
|
changed prototype and callers
|
|
|
|
2/1
|
|
---
|
|
lib/glob/glob.c
|
|
- glob_testdir: if flags argument includes GX_ALLDIRS (globstar), use
|
|
lstat so we skip symlinks when traversing the directory tree.
|
|
Originally reported by Chris Down <chris@chrisdown.name>
|
|
|
|
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>
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- added slight clarifying language to the description of $*,
|
|
describing what happens when the expansion is not within double
|
|
quotes
|
|
|
|
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
|
|
|
|
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>
|
|
|
|
2/6
|
|
---
|
|
lib/sh/strtrans.c
|
|
- ansic_quote: fixed a bug when copying a printable character that
|
|
consumes more than one byte; byte counter was not being incremented.
|
|
Bug report from jidanni@jidanni.org
|
|
|
|
2/7
|
|
---
|
|
input.c
|
|
- 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>
|
|
|
|
2/9
|
|
---
|
|
bashline.c
|
|
- command_word_completion_function: if a directory in $PATH contains
|
|
quote characters, we need to quote them before passing the candidate
|
|
path to rl_filename_completion_function, which performs dequoting on
|
|
the pathname it's passed. Fixes bug reported by Ilyushkin Nikita
|
|
<ilyushkeane@gmail.com>
|
|
|
|
2/11
|
|
----
|
|
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>
|
|
|
|
[changed release status to 4.3-release]
|
|
|
|
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>
|
|
|
|
2/14
|
|
----
|
|
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>
|
|
|
|
2/26
|
|
----
|
|
[bash-4.3 released]
|
|
|
|
2/27
|
|
----
|
|
aclocal.m4
|
|
- broken wcwidth check: fix typo reported by David Michael
|
|
<fedora.dm0@gmail.com>
|
|
|
|
2/28
|
|
----
|
|
support/bashbug.sh
|
|
- add ${BUGADDR} to error message printed if sending mail fails
|
|
|
|
trap.c
|
|
- _run_trap_internal: don't call {save,restore}_pipeline if running
|
|
DEBUG trap; run_debug_trap calls them itself. Fixes bug reported
|
|
by Moe Tunes <moetunes42@gmail.com>
|
|
|
|
test.c
|
|
- unary_test: fix 'R' case by using find_variable_noref instead of
|
|
find_variable
|
|
- test_unop: add back missing 'R' case. Fixes bug reported by
|
|
NBaH <nbah@sfr.fr>
|
|
|
|
3/2
|
|
---
|
|
jobs.c
|
|
- end_job_control: if job control is active, we changed the terminal's
|
|
process group, so make sure we restore it. Fixes bug reported by
|
|
Eduardo A. Bustamante López <dualbus@gmail.com>
|
|
|
|
3/7
|
|
---
|
|
pcomplete.c
|
|
- pcomp_curtxt: new variable, holds the original text to be completed
|
|
as passed to the programmable completion code
|
|
- pcomp_filename_completion_function: if we are running compgen
|
|
(presumably in a shell function completion) and performing readline
|
|
completion, check the word being completed. If it's not empty, but
|
|
the original word passed to the programmable completion code is an
|
|
empty string (""), call a dequoting function if one is available.
|
|
This compensates for an assumption in bash-completion. Reported by
|
|
Albert Shih <Albert.Shih@obspm.fr>
|
|
|
|
lib/readline/readline.c
|
|
- _rl_dispatch_subseq: when deciding whether or not to set vi mode's
|
|
idea of the last command, use whether or not the dispatching keymap
|
|
is vi_movement_keymap instead of the key sequence length. The `c',
|
|
`d', and `y' commands all take motion commands as `arguments' and
|
|
will produce key sequences longer than 1 character. The arrow keys
|
|
will end up dispatching out of a different keymap, so the test will
|
|
prevent arrow keys from setting the last command (the problem in
|
|
bash-4.2). Bug report from Daan van Rossum <daan@flash.uchicago.edu>
|
|
|
|
lib/readline/vi_mode.c
|
|
- _rl_vi_motion_command: convenience function to test whether a key is
|
|
a vi-mode motion command
|
|
|
|
lib/readline/rlprivate.h
|
|
- _rl_vi_motion_command: extern declaration
|
|
|
|
parse.y
|
|
- parse_matched_pair: we should not skip processing single quotes in
|
|
posix mode if dolbrace_state == DOLBRACE_QUOTE2 (pattern
|
|
substitution). Fixes bug reported by David Sines
|
|
<dave.gma@googlemail.com>
|
|
|
|
3/10
|
|
----
|
|
lib/readline/readline.c
|
|
- _rl_dispatch_callback: treat a return value of -1 as the end of
|
|
a command dispatch sequence if the current context doesn't
|
|
indicate that we're reading a multi-key sequence
|
|
((cxt->flags & KSEQ_SUBSEQ) == 0). Turn off the multikey flag
|
|
and free the context chain in this case. Fixes one bug reported
|
|
by Felix Yan <felixonmars@gmail.com> to bug-readline list
|
|
- _rl_dispatch_callback: treat a return value of > 0 the same as 0
|
|
and return from the function, since only values < 0 cause us to
|
|
simulate recursion. Rest of fix for bug tracked down by
|
|
Anatol Pomozov <anatol.pomozov@gmail.com>
|
|
|
|
3/11
|
|
----
|
|
|
|
execute_cmd.c
|
|
- execute_in_subshell: if a longjmp occurs, set result to
|
|
EXECUTION_FAILURE only if last_command_exit_value == EXECUTION_SUCCESS;
|
|
use value of last_command_exit_value otherwise. Fixes cosmetic
|
|
issue reported by Dennis Lambe Jr. <malsyned@malsyned.net>
|
|
|
|
doc/bash.1
|
|
- shell-kill-word and shell-backward-kill-word should be documented
|
|
as unbound by default. Report from Oliver Hartley
|
|
<ohartley@talktalk.net>
|
|
|
|
trap.c
|
|
- run_pending_traps: save value of $? before running trap commands in
|
|
trap_saved_exit_value, like run_exit_trap
|
|
- _run_trap_internal: save value of $? before running trap commands in
|
|
trap_saved_exit_value, like run_exit_trap
|
|
|
|
builtins/common.c
|
|
- get_exitstat: when running `return' in a trap action, and it is not
|
|
supplied an argument, use the saved exit status in
|
|
trap_saved_exit_value. Fixes Posix problem reported by
|
|
Eduardo A. Bustamante López <dualbus@gmail.com>
|
|
|
|
3/13
|
|
----
|
|
lib/sh/shquote.c
|
|
- sh_contains_quotes: new function, returns true if a given string
|
|
contains any of the shell quote characters (single quote, double
|
|
quote, or backslash)
|
|
|
|
externs.h
|
|
- sh_contains_quotes: new extern declaration
|
|
|
|
pcomplete.c
|
|
- pcomp_filename_completion_function: more changes for the benefit of
|
|
bash-completion: if the argument is not the same as the original
|
|
argument passed to the programmable completion code (pcomp_curtxt),
|
|
and we are being run by compgen as part of a completion, dequote the
|
|
argument as bash-completion expects. Fix for the complete-word-
|
|
with-quoted-special-chars problem with bash-completion
|
|
|
|
3/17
|
|
----
|
|
execute_cmd.c
|
|
- execute_intern_function: when in posix mode, make defining a function
|
|
with the same name as a special builtin a fatal error only when the
|
|
shell is not interactive. Interactive shells display an error
|
|
message and go on. From a discussion with Doug McIlroy
|
|
<doug@cs.dartmouth.edu>
|
|
|
|
3/18
|
|
----
|
|
arrayfunc.c
|
|
- assign_compound_array_list: when using expand_assignment_string_to_string
|
|
to expand the value in a ( [x]=y ) compound assignment, make sure
|
|
that we convert 0x0 to "" when expanding [x]= so it doesn't appear as
|
|
if the index is unset. Fixes bug reported by Geir Hauge
|
|
<geir.hauge@gmail.com>
|
|
|
|
builtins/common.c
|
|
- get_exitstat: update fix of 3/11 to allow the DEBUG trap to use the
|
|
current value of $? instead of the value it had before the trap
|
|
action was run. This is one reason the DEBUG trap exists, and
|
|
extended debug mode uses it. Might want to do this only in Posix
|
|
mode
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- return: add language cribbed from Posix saying what happens when
|
|
return is run without an argument from a trap, including the DEBUG
|
|
trap exception
|
|
|
|
3/19
|
|
----
|
|
lib/glob/gmisc.c
|
|
- extglob_pattern_p: make sure ?(patlist) is flagged as an extglob
|
|
pattern
|
|
|
|
lib/glob/glob.c
|
|
- extglob_skipname: rewrite to handle patterns that begin but do not
|
|
end with an extglob pattern; change test for easy case and loop
|
|
through patterns accordingly. Fixes problem with matching filenames
|
|
with a leading dot reported by Stephane Chazelas
|
|
<stephane.chazelas@gmail.com>
|
|
- wextglob_skipname: make analogous changes
|
|
|
|
3/20
|
|
----
|
|
Makefile.in
|
|
- pass -DDEBUG down to builds in readline and history directories
|
|
|
|
lib/readline/util.c
|
|
- _rl_trace and related functions are now only compiled in if DEBUG
|
|
is defined
|
|
|
|
lib/readline/Makefile.in
|
|
- substitute @DEBUG@ and pass -DDEBUG, if necessary, to compilation
|
|
in LOCAL_CFLAGS
|
|
|
|
3/21
|
|
----
|
|
parse.y
|
|
- shell_getc: when checking whether or not to reallocate
|
|
shell_input_line to add trailing newline, don't try to subtract from
|
|
shell_input_line_size. size_t is unsigned, so if its value is less
|
|
than 3 (like, say, 2), size-3 is a very large number and the string
|
|
will not be reallocated. Use len+3 > size instead of len > size-3.
|
|
Fixes bug reported in
|
|
https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1295467
|
|
|
|
3/27
|
|
----
|
|
lib/readline/display.c
|
|
- _rl_clean_up_for_exit: don't bother to call _rl_move_vert to whatever
|
|
readline thinks the last displayed line is if it's 0. Two reasons: a
|
|
minor optimization, and it protects against unwanted moving if this
|
|
function is called twice, as it is when ^C is pressed. Fixes bug
|
|
reported by Egmont Koblinger <egmont@gmail.com>
|
|
|
|
3/28
|
|
----
|
|
bashline.c
|
|
- invalid_completion: new function, used to identify attempts to
|
|
complete words that are syntax errors
|
|
- attempt_shell_completion: if invalid_completion returns true for a
|
|
word in a command position, punt on all completions. Fixes cosmetic
|
|
issue reported by Uwe Storbeck <uwe@ibr.ch>
|
|
- attempt_shell_completion: add clause so that in_command_position
|
|
remains set to 1 for an empty word following a command separator like
|
|
(, &, or |
|
|
|
|
lib/readline/kill.c
|
|
- rl_yank, rl_yank_nth_arg_internal: don't return -1 from bindable
|
|
functions, return 1 instead
|
|
|
|
lib/readline/text.c
|
|
- rl_rubout, _rl_rubout_char, rl_delete, rl_change_case,
|
|
rl_transpose_chars, rl_transpose_words, _rl_set_mark_at_pos,
|
|
rl_exchange_point_and_mark, _rl_insert_next, _rl_char_search,
|
|
_rl_char_search_internal:
|
|
don't return -1 from bindable functions, return 1 instead
|
|
|
|
lib/readline/vi_mode.c
|
|
- rl_vi_end_word, rl_vi_rubout, rl_vi_delete, rl_vi_char_search,
|
|
rl_vi_match, _rl_vi_set_mark, _rl_vi_goto_mark:
|
|
don't return -1 from bindable functions, return 1 instead
|
|
|
|
lib/readline/macro.c
|
|
- rl_start_kbd_macro, rl_end_kbd_macro:
|
|
don't return -1 from bindable functions, return 1 instead
|
|
|
|
builtins/setattr.def
|
|
- set_var_attribute: honor setting of no_invisible_vars when setting
|
|
att_invisible on a variable
|
|
- include "../flags.h" for no_invisible_vars
|
|
|
|
builtins/declare.def
|
|
- declare_internal: honor setting of no_invisible_vars when setting
|
|
att_invisible on a variable
|
|
- include "../flags.h" for no_invisible_vars
|
|
|
|
Makefile.in,builtins/Makefile.in
|
|
- make sure declare.o and setattr.o depend on flags.h
|
|
|
|
execute_cmd.c
|
|
- decpoint: new function, returns locale's decimal point or `.' default
|
|
- mkfmt: use decpoint() to get decimal point instead of unconditionally
|
|
using `.'. Fixes bug reported by Andrey Tataranovich
|
|
<tataranovich@gmail.com> in debian bug 741669
|
|
|
|
4/10
|
|
----
|
|
lib/readline/rltypedefs.h
|
|
- add back old Function/VFunction/etc typedefs, since other packages
|
|
(python, samba) use them. Mark as deprecated using gcc and clang
|
|
attributes. Report and fix from Max Horn <max@quendi.de>
|
|
|
|
4/14
|
|
----
|
|
jobs.c
|
|
- run_sigchld_trap: unwind-protect value of this_shell_builtin, since
|
|
it matters in some cases whether or not we are running `wait' or
|
|
`eval'. Fixes bug reported by Eduardo A. Bustamante López
|
|
<dualbus@gmail.com>
|
|
|
|
4/18
|
|
----
|
|
shell.h
|
|
- sh_parser_state_t: add `need_here_doc' flags member, since
|
|
xparse_dolparen (via parse_command) sets it to 0
|
|
|
|
parse.y
|
|
- gather_here_documents: make sure need_here_doc is > 0, since we
|
|
don't want to just decrement it forever if it ends up < 0. Partial
|
|
fix for bug reported by Jared Yanovich <slovichon@gmail.com>
|
|
- {save,restore}_parser_state: save and restore need_here_doc flag.
|
|
Rest of fix for bug reported by Jared Yanovich <slovichon@gmail.com>
|
|
|
|
4/19
|
|
----
|
|
subst.c
|
|
- cond_expand_word: since we are not supposed to be performing word
|
|
splitting here, set expand_no_split_dollar_star to 1 in addition to
|
|
setting W_NOSPLIT2
|
|
- expand_word_internal: if we have a case where we have an unquoted
|
|
$@ but we are in a case where we don't want to split (W_NOSPLIT2),
|
|
make sure we return a list consisting of a single word with the
|
|
arguments separated by spaces and don't do word splitting. Fixes
|
|
bug reported by Greg Wooledge <wooledg@eeg.ccf.org> from an IRC
|
|
discussion
|
|
|
|
builtins/hash.def
|
|
- print_portable_hash_info: single-quote pathnames and hashed filenames
|
|
that contain shell metacharacters. Fixes bug reported by
|
|
<g1pi@libero.it> in debian bash bug #739853
|
|
|
|
4/20
|
|
----
|
|
lib/readline/display.c
|
|
- When using horizontal scrolling, the redisplay code erases too much
|
|
of the line containing successful results, so make sure we only
|
|
erase to the end of the line after making sure we move the cursor
|
|
to the end. Fixes bug reported by <Trond.Endrestol@ximalas.info>
|
|
|
|
4/23
|
|
----
|
|
{bashhist,bashline}.c
|
|
builtins{bind,help,type}.def
|
|
lib/glob/glob.c, lib/intl/{loadmsgcat,localealias}.c,lib/sh/mktime.c
|
|
- fixes to memory leaks uncovered by coverity scan
|
|
|
|
4/24
|
|
----
|
|
{bashhist,subst,redir,assoc,jobs,array,trap}.c
|
|
lib/intl/l10flist.c
|
|
builtins/complete.def
|
|
- fixes to memory leaks and other resource usage problems uncovered by
|
|
coverity scan
|
|
|
|
redir.c
|
|
- do_redirection_internal: if dup2 fails (presumably because of a
|
|
resource limit), close the file descriptor we opened before returning
|
|
error
|
|
|
|
4/25
|
|
----
|
|
config-top.h
|
|
- DEFAULT_BASHRC: new define with the name of the default shell
|
|
startup file
|
|
|
|
bashline.c
|
|
- bash_directory_completion_matches: don't dequote the directory name.
|
|
If rl_completion_found_quote is non-zero, readline will dequote the
|
|
filename itself. Fixes bug reported by Clark Wang
|
|
<dearvoid@gmail.com>
|
|
|
|
4/27
|
|
----
|
|
subst.c
|
|
- parameter_brace_expand_rhs: if parameter_brace_find_indir returns
|
|
NULL or "", or if it returns something that is not a valid identifier,
|
|
report an error and return &expand_wdesc_error so the error can
|
|
propagate up. Fixes bug reported by Andre Holzhey
|
|
<andre.holzhey@gmx.de>
|
|
|
|
4/29
|
|
----
|
|
subst.c
|
|
- parameter_brace_substring: don't short-circuit right away if the
|
|
value is NULL but we are looking at the positional parameters. Part
|
|
of fix for bug reported by Pierre Gaston <pierre.gaston@gmail.com>
|
|
- pos_params: if there are no positional parameters, only short-circuit
|
|
if we are looking for $1 and above. Rest of fix for bug reported
|
|
by Pierre Gaston <pierre.gaston@gmail.com>
|
|
|
|
subst.h
|
|
- SD_NOPROCSUB: new flag for skip_to_delim, means to not allow any
|
|
process subsitutions (should not have overloaded SD_NOSKIPCMD)
|
|
|
|
subst.c
|
|
- skip_to_delim: honor SD_NOPROCSUB flag
|
|
|
|
make_cmd.c
|
|
- make_arith_for_expr: set W_NOPROCSUB flag in the created word
|
|
- make_arith_for_command: set SD_NOPROCSUB in the flags argument to
|
|
skip_to_delim so we don't treat <( or >( as a process substitution
|
|
(we won't evaluate them in eval_arith_for_expr anyway). Fixes
|
|
bug reported by Pierre Gaston <pierre.gaston@gmail.com>
|
|
|
|
5/1
|
|
---
|
|
lib/glob/gmisc.c
|
|
- glob_dirscan: new function, takes a pattern and a directory separator
|
|
argument and advances the pattern to the last occurrence of the
|
|
separator. Like strrchr, but understands extended glob patterns and
|
|
uses glob_patscan to skip over them
|
|
|
|
lib/glob/glob.c
|
|
- extglob_skipname: if the extended globbing pattern is invalid, don't
|
|
skip the name
|
|
- glob_filename: if there is a slash in the pattern to be matched, and
|
|
extglob is enabled, use glob_dirscan to find the real last occurrence
|
|
of `/' to avoid being confused by slashes in extglob patterns. Fix
|
|
for bug reported by Pierre Gaston <pierre.gaston@gmail.com>
|
|
|
|
5/6
|
|
---
|
|
variables.c
|
|
- make_local_variable: only set the att_invisible attribute if
|
|
no_invisible_vars isn't set
|
|
- find_variable_for_assignment: new function, intended to be called by
|
|
code that eventually wants to assign a value to the variable; will not
|
|
skip invisible variables; currently identical to find_variable
|
|
- find_variable_no_invisible: new function, finds the first visible
|
|
instance of variable with a given name in the variable context chain;
|
|
eventually will be used to replace find_variable; separate right now
|
|
for testing
|
|
|
|
variables.h
|
|
- find_variable_for_assignment: extern declaration
|
|
- find_variable_no_invisible: extern declaration
|
|
|
|
5/7
|
|
---
|
|
variables.c
|
|
- make_local_variable: don't clear `invisible' attribute if we are
|
|
returning an existing local variable at the right context. Let the
|
|
upper layers do that. Fixes bug reported by Dan Douglas
|
|
<ormaaj@gmail.com>
|
|
|
|
5/8
|
|
---
|
|
lib/readline/input.c
|
|
- rl_getc: call RL_CHECK_SIGNALS if a read(2) is interrupted (-1/EINTR)
|
|
by SIGALRM or SIGVTALRM (placeholder for non-keyboard-generated
|
|
signals of interest)
|
|
|
|
builtins/read.def
|
|
- edit_line: call bashline_set_event_hook and
|
|
bashline_reset_event_hook around call to readline(), so the right
|
|
signal handling happens
|
|
- read_builtin: make sure we add an unwind_protect call to
|
|
bashline_reset_event_hook. These changes fix bug reported in
|
|
https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1317476
|
|
|
|
bashline.c
|
|
- bash_event_hook: make sure we clean up the readline state by calling
|
|
rl_cleanup_after_signal if sigalrm_seen is non-zero. The read builtin
|
|
sets this when it times out
|
|
|
|
5/12
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- clarify language to make it clear that changing attributes of a
|
|
nameref variable (e.g., export), actually changes the attributes of
|
|
the referenced variable. Fixes omission noted by Jeff Haemer
|
|
<jeffrey.haemer@gmail.com>
|
|
|
|
arrayfunc.c
|
|
- bind_array_var_internal: make sure ENTRY no longer has invisible
|
|
attribute before returning. Fixes bug reported by Geir Hauge
|
|
<geir.hauge@gmail.com>
|
|
|
|
5/22
|
|
----
|
|
execute_cmd.c
|
|
- shell_execve: if execve fails and we return 127 or 126, make sure to
|
|
set last_command_exit_value if a call to file_error or report_error
|
|
causes the shell to exit. This ensures that the shell exits with
|
|
the right value.
|
|
|
|
6/6
|
|
---
|
|
shell.c
|
|
- drop_priv_mode: print an error message on setuid() failure, optionally
|
|
exit if errno == EAGAIN, as it can be on Linux when RLIMIT_NPROC for
|
|
the target user is exceeded.
|
|
|
|
config-top.h
|
|
- EXIT_ON_SETUID_FAILURE: new settable define, will cause the shell to
|
|
exit if setuid fails with errno == EAGAIN
|
|
|
|
6/10
|
|
----
|
|
parse.y
|
|
- time_command_acceptable: fix so time is accepted everywhere the
|
|
grammar is looking for a `compound_list'. Fixes bug reported by
|
|
Dale Worley <worley@alum.mit.edu>
|
|
|
|
6/12
|
|
----
|
|
subst.c
|
|
- clear_fifo_list: new function, clears FDs associated with open pipes
|
|
in current FIFO list without closing the file descriptors. Can
|
|
possibly be used when shell_execve fails and the shell jumps back
|
|
to top_level and we don't want the shell to close the open FIFOs
|
|
each time through the read-execute loop. Bug reported by Harald
|
|
Koenig <koenig@tat.physik.uni-tuebingen.de>
|
|
|
|
|
|
6/16
|
|
----
|
|
builtins/shopt.def
|
|
- compat42: make sure the `compat42' option sets the correct variable
|
|
for compatibility level. Fixes bug reported by Ondrej Oprala
|
|
<ooprala@redhat.com>
|
|
|
|
support/bashbug.sh
|
|
- fix typo when echoing $USAGE. Report from Shantanu Kulkarni
|
|
<djbware@shantanukulkarni.org>
|
|
|
|
execute_cmd.c
|
|
- shell_execve: before longjmp back to subshell_top_level, clear out the
|
|
FIFO fd list by calling clear_fifo_list so the FDs (which we inherited
|
|
from our parent) aren't closed every time through the read-eval loop.
|
|
Fix for bug reported by Harald Koenig <koenig@tat.physik.uni-tuebingen.de>
|
|
|
|
6/18
|
|
----
|
|
subst.c
|
|
- extract_process_subst: add additional argument: xflags, allow callers to
|
|
pass flags like extract_command_subst
|
|
- extract_process_subst: call xparse_dolparen like command substitution
|
|
to avoid problems when parsing commands constructs with embedded open
|
|
parens. Fixes bug reported by Tim Friske <me@timfriske.com>
|
|
|
|
subst.h
|
|
- extract_process_subst: modified prototype for extern declaration
|
|
|
|
6/19
|
|
----
|
|
execute_cmd.c
|
|
- execute_pipeline: if running with lastpipe enabled, make sure that we
|
|
check whether or not the job id is valid using INVALID_JOB before
|
|
calling job_exit_status. the jobs list can get frozen and unfrozen in
|
|
the presence of nested pipelines and loops and wait_for can clear a
|
|
job table entry. Fixes bug reported by <scorp.dev.null@gmail.com>
|
|
|
|
jobs.c
|
|
- freeze_jobs_list: now returns old value of jobs_list_frozen; unused at
|
|
current time
|
|
|
|
jobs.h
|
|
- freeze_jobs_list: change return value
|
|
|
|
6/20
|
|
----
|
|
lib/glob/smatch.c
|
|
- MEMCHR: single-byte and wide character defines (memchr/wmemchr)
|
|
|
|
lib/glob/sm_loop.c
|
|
- GMATCH: when the wildcards are the last element of the pattern, make
|
|
sure they do not match a string containing a `/' if FNM_PATHNAME is
|
|
set in FLAGS
|
|
- GMATCH: when recursively calling GMATCH after we see a `*', don't
|
|
try to consume the rest of the pattern with `*' if FNM_PATHNAME is
|
|
set in FLAGS, just consume up to the next slash and then see whether
|
|
or not the rest of the pattern matches. Fixes bug reported by Ian
|
|
Kelling <ian@iankelling.org>
|
|
- GMATCH: when processing `*' in the pattern, after skipping consecutive
|
|
wildcards, if we hit a literal `/' in the pattern and we're looking
|
|
for a pathname, skip characters in the string until we find a `/'
|
|
(no slash means the match fails), and try to match the rest of the
|
|
pattern against the portion of the string after the next `/'. Picked
|
|
up from gnulib/glibc
|
|
|
|
pathexp.c
|
|
- split_ignorespec: since split_ignorespec gets globbing patterns,
|
|
make sure we call skip_to_delim with the SD_GLOB flag so delimiters
|
|
that occur within bracket expressions don't delimit the pattern.
|
|
Fixes problem with [[:digit:]] in GLOBIGNORE reported by Ian Kelling
|
|
<ian@iankelling.org>
|
|
|
|
unwind_prot.c
|
|
- unwind_protect_tag_on_stack: new function, returns 1 if unwind-protect
|
|
frame corresponding to `tag' argument is on unwind-protect stack
|
|
|
|
unwind_prot.h
|
|
- unwind_protect_tag_on_stack: extern declaration
|
|
|
|
6/30
|
|
----
|
|
lib/readline/misc.c
|
|
- _rl_revert_all_lines: set entry->data to 0 after assigning it to
|
|
rl_undo_list to avoid pointer aliasing problems that would result
|
|
in entry->line being freed by an undo. The subsequent free would
|
|
be a double free. Report and fix from Jared Yanovich
|
|
<slovichon@gmail.com>
|
|
|
|
subst.c
|
|
- command_substitute: other shells do not appear to inherit the -v
|
|
option when reading and executing command substitutions. Reported
|
|
by Ondrej Oprala <ooprala@redhat.com>
|
|
|
|
7/1
|
|
---
|
|
config-top.h
|
|
- CHECKHASH_DEFAULT: new define that supplies the default value for
|
|
check_hashed_filenames (`checkhash' shopt option); still 0 by default
|
|
|
|
findcmd.c
|
|
- check_hashed_filenames: initialize using CHECKHASH_DEFAULT
|
|
|
|
lib/readline/histexpand.c
|
|
- history_expand: double quotes can inhibit recognition of the history
|
|
comment character if history_quotes_inhibit_expansion is non-zero
|
|
|
|
lib/readline/doc/{history.3,hstech.texi}
|
|
- history_quotes_inhibit_expansion: expand definition to note that it
|
|
inhibits scanning for the history comment character as well; correct
|
|
typo to make it clear that it only works on double-quoted strings
|
|
|
|
lib/sh/zgetline.c
|
|
- add new fourth argument: DELIM, allows delimiter to be something
|
|
other than newline (if DELIM != '\n', UNBUFFERED_READ should be
|
|
non-zero)
|
|
- UNBUFFERED_READ is now fifth argument
|
|
- check character against DELIM rather than strictly newline
|
|
|
|
externs.h
|
|
- zgetline: change function prototype for extern declaration
|
|
|
|
builtins/mapfile.def
|
|
- mapfile: change calling sequence for zgetline calls
|
|
- mapfile_builtin: new -d option: DELIM, like in read builtin
|
|
- mapfile_builtin: pass `delim' to mapfile() as new argument; default
|
|
to '\n' unless -d option supplied
|
|
- mapfile: take new DELIM argument, pass to zgetline
|
|
- mapfile: if DELIM != '\n', set unbuffered_read to 1
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- mapfile: document new `-d DELIM' option
|
|
|
|
7/5
|
|
---
|
|
lib/readline/histfile.c
|
|
- history_truncate_file: if there is an error writing the truncated
|
|
history list back to the history file, use the same strategy as
|
|
history_do_write: create a backup file, rename the history file to
|
|
the backup file, and restore the original history file from the
|
|
backup file name if the write or the close fails. Suggestion from
|
|
Chen Gang <gang.chen.5i5j@gmail.com> to bug-readline
|
|
|
|
execute_cmd.c
|
|
- evalnest, evalnest_max: new variables establishing maximum number of
|
|
recursive `eval' calls; current max is 4096
|
|
- execute_builtin: unwind-protect value of evalnest around calls to
|
|
eval builtin. Suggested by Oliver Morais <oliver.morais@gmail.com>
|
|
- {initialize_subshell,execute_subshell_builtin_or_function}: reset
|
|
evalnest to 0 in a subshell
|
|
|
|
builtins/setattr.def
|
|
- show_name_attributes: show a variable's attributes even if it's
|
|
invisible (don't show any value since it has none). This means that
|
|
declare -p var will display VAR's attributes even when var marked
|
|
as invisible. Feature request from Peggy Russell
|
|
<prusselltechgroup@gmail.com>
|
|
- show_var_attributes: don't print assignment if array or assoc
|
|
attribute is set but variable marked as invisible
|
|
|
|
tests/array.right
|
|
- special note: changed all declare -a output tests because the shell
|
|
will no longer print out values for invisible array variables. This
|
|
is a change, but one for correctness:
|
|
|
|
declare -a foo='()'
|
|
and
|
|
declare -a foo
|
|
are not equivalent
|
|
|
|
7/22
|
|
----
|
|
subst.c
|
|
- parameter_brace_expand: after calling parameter_brace_expand_indir,
|
|
turn off the W_ARRAYIND flag in the word it returns, because there
|
|
is no way for it to return the index that should be used, and the
|
|
rest of the function assumes that IND is valid if W_ARRAYIND is set.
|
|
Fixes bug reported by Corentin Peuvrel <cpeuvrel@pom-monitoring.com>
|
|
|
|
8/2
|
|
---
|
|
parse.y
|
|
- read_token_word: if we read a character that will end a command
|
|
substitution, don't skip over quoted newlines when we read an
|
|
additional character to figure out whether it's a two-character
|
|
token. This lets the higher layers deal with quoted newlines after
|
|
the command substitution. Fixes bug reported by EmanueL Czirai
|
|
<amanual@riseup.net>
|
|
|
|
8/11
|
|
----
|
|
execute_cmd.c
|
|
- execute_pipeline: check whether lastpipe_jid corresponds to a valid
|
|
job before calling append_process, for the same reason as fix from
|
|
6/19. Fixes bug reported by <lolilolicon@gmail.com>
|
|
|
|
8/12
|
|
----
|
|
lib/sh/unicode.c
|
|
- stub_charset: use strncpy instead of strcpy because we are copying
|
|
into a local fixed-length buffer. Fixes vulnerability reported by
|
|
<romerox.adrian@gmail.com>
|
|
|
|
execute_cmd.c
|
|
- execute_pipeline: if we don't call append_process, call
|
|
wait_for_single_pid to get the status of `lastpid', since that will
|
|
check the status of already-reaped processes. Fixes spurious error
|
|
message about non-existent process from fix of 8/11
|
|
|
|
8/15
|
|
----
|
|
jobs.c
|
|
- running_in_background: new variable, keeps track of whether or not we
|
|
are running in the background (not perfect yet)
|
|
- initialize_job_control: even if we are not turning on job control,
|
|
get the terminal pgrp so we can use it later
|
|
- {set_job_control,initialize_job_control}: set running_in_background
|
|
to 1 if terminal pgrp != shell pgrp
|
|
- {stop_pipeline,make_child,wait_for}: if we are running in the
|
|
background, don't mess with the terminal's process group; assume that
|
|
the parent shell will do that. Fixes bug reported by Greg Wooledge
|
|
<wooledg@eeg.ccf.org>
|
|
|
|
shell.c
|
|
- shell_reinitialize: reset running_in_background back to 0
|
|
|
|
8/24
|
|
----
|
|
execute_cmd.c
|
|
- {execute_connection,execute_command_internal}: make sure that
|
|
asynchronous commands always set $? to 0 and are not affected by the
|
|
command's exit status being inverted using `!'. Fixes bug reported
|
|
by Vincent Lefevre <vincent@vinc17.net>
|
|
|
|
lib/readline/display.c
|
|
- rl_message: call vsnprintf with full msg_bufsiz, since it counts
|
|
one fewer than the buffer length passed as an argument. Bug report
|
|
and fix from Dylan Cali <calid1984@gmail.com>
|
|
|
|
8/26
|
|
----
|
|
builtins/evalstring.c
|
|
- evalstring: if CURRENT_TOKEN == yacc_EOF, reset it to newline. This
|
|
is instead of calling reset_parser(); that might still be needed.
|
|
Fixes bug with eval and a subsequent statement ending with EOF
|
|
reported by <jim.avera@gmail.org>
|
|
|
|
pcomplete.c
|
|
- filter_stringlist: when extglob is on, a leading ! in the filter
|
|
pattern should be left alone when it introduces a !(pat) pattern;
|
|
otherwise it messes up the pattern. Fixes bug reported by David
|
|
Korn <dgkorn@gmail.com>
|
|
|
|
8/27
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- clarify the behavior of bash when given the -c option, since $0 is
|
|
technically not a positional parameter. Bug reported by Stephane
|
|
Chazelas <stephane.chazelas@gmail.com>
|
|
|
|
8/28
|
|
----
|
|
lib/readline/history.c
|
|
- add_history: use history_max_entries (if history is stifled) or
|
|
DEFAULT_HISTORY_INITIAL_SIZE if not (new define, defaults to 502)
|
|
to size the initial allocation of the history array. Assumption
|
|
is that this will reduce the number of allocations
|
|
|
|
8/29
|
|
----
|
|
execute_command.c:
|
|
- sourcenest, sourcenest_max: new variables used to track level of
|
|
sourced files and (maybe) one day catch infinite source recursion
|
|
- execute_builtin: if current source level exceeds sourcenest_max,
|
|
trigger an error and jump back to the top level
|
|
- {initialize_subshell,execute_subshell_builtin_or_function}: reset
|
|
sourcenest to 0 in a subshell
|
|
|
|
9/2
|
|
---
|
|
variables.c
|
|
- bind_variable: if a nameref expands to an array reference, make
|
|
sure that assign_array_element gets called (maybe even
|
|
recursively) instead of bind_variable_internal, so invalid variable
|
|
names (like arr[0]) don't get created. Fixes bug reported by
|
|
<lolilolicon@gmail.com>
|
|
|
|
9/3
|
|
---
|
|
execute_cmd.c
|
|
- evalnest_max,sourcenest_max: initialize from EVALNEST_MAX and
|
|
SOURCENEST_MAX, respectively. Feature suggested by
|
|
<bogun.dmitriy@gmail.com>
|
|
|
|
config-top.h
|
|
- define EVALNEST_MAX and SOURCENEST_MAX to 0
|
|
|
|
9/6
|
|
---
|
|
bashline.c
|
|
- find_cmd_start: fix to (crudely) deal with >| token; even though
|
|
skip_to_delim finds `|' as a delimiter, we call it again and use
|
|
what the second call finds. Fixes bug reported by Dan Jacobson
|
|
<jidanni@jidanni.org>
|
|
|
|
findcmd.c
|
|
- find_in_path_element: if in posix mode, do not expand a literal
|
|
tilde in a $PATH element
|
|
|
|
doc/bashref.texi
|
|
- add change to tilde expansion in $PATH elements to posix mode
|
|
description
|
|
|
|
builtins/common.h
|
|
- ISHELP: new define for builtins that do their own option parsing
|
|
and don't use internal_getopt(); checks whether argument is --help
|
|
- CHECK_HELPOPT: convenience define to help builtins that do their
|
|
own option parsing to check for --help with one line of code
|
|
- CASE_HELPOPT: convenience define to help builtins that use
|
|
internal_getopt() check for --help with one line of code
|
|
|
|
builtins/help.def
|
|
- builtin_help: new function, prints out --help output for current
|
|
builtin
|
|
|
|
builtins/{kill,let,pushd}.def
|
|
- add CHECK_HELPOPT to builtins that use ISOPTION; call builtin_help
|
|
and return EX_USAGE (kill/let/pushd/popd/dirs)
|
|
|
|
builtins/{caller,fg_bg}.def
|
|
- use CHECK_HELPOPT to recognize --help, since these builtins perform
|
|
checks that can cause them to return before calling no_options
|
|
(caller/fg/bg)
|
|
|
|
builtins/{exit,return}.def
|
|
- use CHECK_HELPOPT to recognize --help before calling get_exitstat()
|
|
(return/exit/logout)
|
|
|
|
builtins/{break,shift}.def
|
|
- use CHECK_HELPOPT to recognize --help before any other checks
|
|
(break/continue/shift)
|
|
|
|
builtins/bashgetopt.h
|
|
- GETOPT_EOF: convenience define
|
|
- GETOPT_HELP: new define, to indicate internal_getopt saw --help
|
|
|
|
builtins/bashgetopt.c
|
|
- internal_getopt: return GETOPT_HELP for --help
|
|
|
|
builtins/common.c
|
|
- no_options: recognize --help, call builtin_help and return 2
|
|
(builtin/eval/source/./times)
|
|
|
|
builtins/command.def
|
|
- use CASE_HELPOPT() to handle --help after calling internal_getopt()
|
|
(command)
|
|
|
|
builtins/{colon,echo,test}.def
|
|
- do not recognize --help (:/true/false/echo/test)
|
|
|
|
9/8
|
|
---
|
|
sig.c
|
|
- termsig_sighandler: if readline is active now, set the bashline event
|
|
hook. Old code just set it for interactive shells. Part of fix for
|
|
bug reported by <mickael9@gmail.com>
|
|
|
|
bashline.c
|
|
- bash_event_hook: call rl_cleanup_after_signal if terminating_signal
|
|
is non-zero, since check_signals_and_traps() will cause the shell to
|
|
exit if it is and we want to clean up the readline state first. Rest
|
|
of fix for bug reported by <mickael9@gmail.com>
|
|
|
|
9/9
|
|
---
|
|
jobs.c
|
|
- waitchld: when running the wait builtin in posix mode, with a trap set
|
|
on SIGCHLD, use queue_sigchld_trap instead of trap_handler (SIGCHLD),
|
|
otherwise you will lose SIGCHLDs when children_exited > 1. Fixes bug
|
|
reported by <crispusfairbairn@gmail.com>
|
|
|
|
builtins/read.def
|
|
- read_builtin: if we are changing the tty settings, call
|
|
initialize_terminating_signals so we have a chance to catch all
|
|
terminating signals and potentially clean up the terminal before
|
|
exiting
|
|
- read_builtin: tty_modified: new variable, set to 1 if we change the
|
|
terminal attributes and have to call ttyrestore() to restore them
|
|
- if one of the `reads' returns -1/EINTR due to a terminating signal,
|
|
and we have modified the terminal, call ttyrestore before calling
|
|
CHECK_TERMSIG
|
|
- ttyrestore: set tty_modified to 0 when called
|
|
|
|
9/10
|
|
----
|
|
builtins/read.def
|
|
- termsave: now global to file so other functions can use it
|
|
- read_tty_cleanup: if tty_modified is non-zero, call ttycleanup to
|
|
restore old terminal settings and turn off tty_modified
|
|
|
|
sig.c
|
|
- termsig_handler: call read_tty_cleanup if currently executing read
|
|
builtin; it does the right thing. Final piece of fix for bug reported
|
|
by Jan Rome <jan.rome@gmail.com>
|
|
|
|
9/11
|
|
----
|
|
general.c
|
|
- printable_filename: general function to return a printable
|
|
representation of a string (presumed to be a filename)
|
|
|
|
general.h
|
|
- extern declaration for printable_filename
|
|
|
|
execute_cmd.c
|
|
- execute_disk_command: use printable_filename
|
|
|
|
builtins/{bind,cd,enable,hash,source}.def
|
|
- use printable_filename as appropriate when printing error messages.
|
|
From a suggestion by Vincent Lefevre <vincent@vinc17.net>
|
|
|
|
builtins/bind.def
|
|
- use CASE_HELPOPT() to handle --help after calling internal_getopt()
|
|
(bind)
|
|
|
|
9/12
|
|
----
|
|
builtins/common.h
|
|
- SEVAL_FUNCDEF: new flag for parse_and_execute; it means that we only
|
|
accept a single function definition command, as when we are importing
|
|
functions from the environment
|
|
- SEVAL_ONECMD: new flag for parse_and_execute; for future use
|
|
|
|
builtins/evalstring.c
|
|
- parse_and_execute: if the SEVAL_FUNCDEF flag is set, disallow anything
|
|
but a function definition command
|
|
|
|
variables.c
|
|
- initialize_shell_variables: don't allow functions with invalid names
|
|
to be imported from the environment, even though we still allow them
|
|
to be defined
|
|
- initialize_shell_variables: when importing function definitions from
|
|
the environment, call parse_and_execute with the SEVAL_FUNCDEF flag
|
|
to force the command to be just a function definition
|
|
|
|
subst.c
|
|
- param_expand: when expanding a $name variable expansion, make sure that
|
|
the variable is visible and set before following the nameref chain
|
|
- param_expand: when expanding a $name variable expansion and following the
|
|
nameref chain, make sure the resulting variable is visible and set
|
|
before using it
|
|
|
|
9/13
|
|
----
|
|
variables.c
|
|
- initialize_shell_variables: when importing function definitions from
|
|
environment, use SEVAL_ONECMD flag for parse_and_execute. Part of
|
|
CVE-2014-6271
|
|
|
|
builtins/evalstring.c
|
|
- parse_and_execute: if SEVAL_ONECMD flag set, return immediately after
|
|
calling execute_command_internal. Final piece for fix for bug
|
|
reported by Stephane Chazelas <stephane.chazelas@gmail.com>. Part of
|
|
CVE-2014-6271
|
|
|
|
9/24
|
|
----
|
|
parse.y
|
|
- reset_parser: reset eol_ungetc_lookahead to 0 here, since we don't want
|
|
shell_getc returning it on the next call. Fixes problem reported by
|
|
Tavis Ormandy <taviso@cmpxchg8b.com> and Michal Zalewski
|
|
<lcamtuf@coredump.cx>. Potentially part of CVE-2014-6271; fix for
|
|
CVE-2014-7169
|
|
|
|
9/25
|
|
----
|
|
parse.y
|
|
- push_heredoc: new function, pushes a here-doc redirection onto
|
|
redir_stack handling overflow of redir_stack. Exits on overflow.
|
|
Original fix from Florian Weimer <fweimer@redhat.com>. Fix for
|
|
CVE-2014-7186
|
|
- change straight assignments to redir_stack to call push_redir
|
|
- add one to size of word_lineno stack to avoid off-by-one error
|
|
below in read_token_word. Overflow just results in line numbers
|
|
being wrong. Fix for CVE-2014-7187
|
|
|
|
9/27
|
|
----
|
|
{execute_cmd,trap}.c
|
|
- changes to make minimal-config builds work again, mostly missing
|
|
#ifdefs for optional features
|
|
|
|
builtins/common.c
|
|
- builtin_help: dummy version to be included if HELP_BUILTIN not
|
|
defined, for minimal-config builds
|
|
|
|
variables.c
|
|
- initialize_shell_variables: incorporated patches from Florian
|
|
Weimer <fweimer@redhat.com> to change the strings bash looks
|
|
for when importing shell functions from the environment. It
|
|
adds a prefix (BASH_FUNC_) and a suffix (%%) to the name to
|
|
mark it as having been created by bash as an exported function.
|
|
Fix for remote attacks part of CVE-2014-6271 and CVE-2014-7169
|
|
- mk_env_string: takes new argument, indicating whether we are
|
|
constructing a function
|
|
- mk_env_string: encodes function names as described above, so
|
|
initialize_shell_variables can find them
|
|
|
|
9/28
|
|
----
|
|
copy_cmd.c
|
|
- copy_redirects: before calling savestring on here_doc_eof, make
|
|
sure it's not NULL (it could have been the result of a here
|
|
document delimited by EOF or EOS). Fixes bug reported by
|
|
Michal Zalewski <lcamtuf@coredump.cx>. Fix for CVE-2014-6277
|
|
|
|
make_cmd.c
|
|
- make_redirection: initialize here_doc_eof member to NULL. Rest of
|
|
fix for CVE-2014-6277
|
|
|
|
9/29
|
|
----
|
|
parse.y
|
|
- current_input_line_state: return a sh_input_line_state_t containing
|
|
the current shell_input_line and its index and size variables
|
|
|
|
shell.h
|
|
- current_input_line_state: extern declaration
|
|
|
|
builtins/evalstring.c
|
|
- parse_and_execute: call reset_parser() before returning if
|
|
SEVAL_ONECMD set. Fixes bug reported by Michal Zalewski
|
|
<lcamtuf@coredump.cx> and designated CVE-2014-6278
|
|
- parse_and_execute: if we parse a function definition when
|
|
SEVAL_FUNCDEF is set, but don't consume the entire passed string,
|
|
throw an error, reset the parser, and return. Part of fix for
|
|
CVE-2014-6278
|
|
- parse_and_execute: if parsing the shell function definition when
|
|
SEVAL_FUNCDEF is set transforms the function name (e.g., if it
|
|
begins with a newline or begins or ends with whitespace), throw
|
|
an error, reset the parser, and return. Fixes bug reported by
|
|
Eric Kobrin <ekobrin@akamai.com>
|
|
|
|
10/2
|
|
----
|
|
jobs.c
|
|
- bgp_prune: don't do anything if bgpids.npid == 0 or
|
|
bgpids.list == NULL. This can happen if something gets run before
|
|
the job control framework is initialized. Bug report from
|
|
<mancha1@zoho.com>
|
|
|
|
10/3
|
|
----
|
|
parse.y
|
|
- xparse_dolparen: don't set token_to_read to newline after calling
|
|
parse_string() and cleaning up when the shell is not interactive. This
|
|
makes the parser think it's ok to read new commands even if it's not in
|
|
a state where that should be possible. Underlying fix for bug reported
|
|
by Michal Zalewski <lcamtuf@coredump.cx> and designated CVE-6278
|
|
- parser_remaining_input: new function, returns the portion of
|
|
shell_input_line that hasn't yet been read
|
|
- current_input_line_state: removed
|
|
|
|
shell.h
|
|
- parser_remaining_input: extern declaration
|
|
- current_input_line_state: removed
|
|
|
|
builtins/evalstring.c
|
|
- parse_and_execute: change code that checks whether parse_command has
|
|
consumed the entire passed string when SEVAL_FUNCDEF is used to use
|
|
parser_remaining_input instead of messing around with (new)
|
|
current_input_line_state. Part of fix for CVE-2014-6278
|
|
|
|
variables.c
|
|
- initialize_shell_variables: if we don't call parse_and_execute, free
|
|
the temporary string, since parse_and_execute won't. Report and fix
|
|
from Eric Kobrin <ekobrin@akamai.com>
|
|
|
|
10/4
|
|
----
|
|
print_cmd.c
|
|
- print_function_def: when in posix mode, print shell function
|
|
definitions as posix specifies them, without the leading
|
|
`function' keyword
|
|
|
|
general.c
|
|
- exportable_function_name: return 1 if the passed string can be
|
|
added to the environment as an exported function name. Currently
|
|
prohibits function names containing `/' and `=' from being
|
|
exported
|
|
|
|
general.h
|
|
- exportable_function_name: extern declaration
|
|
|
|
builtins/setattr.def
|
|
- set_or_show_attributes: if exporting a function with export -f,
|
|
call exportable_function_name to determine whether the function
|
|
should be exported; don't export function if it returns 0
|
|
|
|
10/7
|
|
----
|
|
builtins/setattr.def
|
|
- set_or_show_attributes: don't show identifiers that are invisible
|
|
and imported from the environment, since that combination of
|
|
attributes means that the imported variable is not a valid shell
|
|
identifier. Report from Stephane Chazelas
|
|
<stephane.chazelas@gmail.com>
|
|
|
|
10/8
|
|
----
|
|
shell.c
|
|
- shell_initialize: set new variable should_be_restricted, which
|
|
says whether or not the shell will be a restricted one based on the
|
|
shell name; use in calls to initialize_shell_variables (to inhibit
|
|
importing shell functions) and initialize_shell_options (to inhibit
|
|
parsing $SHELLOPTS) and initialize_bashopts (to inhibit parsing
|
|
$BASHOPTS). Report from <paulfm@umn.edu>
|
|
|
|
10/12
|
|
-----
|
|
execute_cmd.c
|
|
- execute_function: unwind-protect loop_level, set loop_level to 0
|
|
when entering a function so break and continue in functions don't
|
|
break loops running outside of the function. Fix picked up from
|
|
dash via Herbert Xu <herbert@gnodor.apana.org.au>
|
|
|
|
10/13
|
|
-----
|
|
doc/Makefile.in
|
|
- bashref.pdf: create using texi2dvi --pdf rather than postprocessing
|
|
the dvi file, so we have PDF bookmarks and links. Fix from
|
|
Siep Kroonenberg <siepo@cybercomm.nl>
|
|
|
|
10/14
|
|
-----
|
|
subst.h
|
|
- Q_ARITH: new quoting flag. Semantics are per Posix's spec for
|
|
arithmetic expansion: act as if string is quoted, but don't treat
|
|
double quotes specially (in this case, they will be removed by quote
|
|
removal)
|
|
- Q_ARRAYSUB: new quoting flag, indicates we are expanding an indexed
|
|
array subscript
|
|
|
|
subst.c
|
|
- expand_arith_string: if we are not expanding the string, but we saw
|
|
a quote with Q_ARITH specified as one of quoting flags, perform
|
|
quote removal even if Q_DOUBLE_QUOTES is specified
|
|
- param_expand: change calls to expand_arith_string for $[ and $((
|
|
cases to specify Q_ARITH. Now $(( "$x" )) and $(( "x" )) work if x
|
|
has a value that evaluates to a valid number, as Posix specifies
|
|
- expand_word_internal: add test for quoted&Q_ARITH to the tilde case,
|
|
so we continue to perform tilde expansion in arithmetic contexts
|
|
- expand_word_internal: if quoted&Q_ARITH, continue processing when we
|
|
see a `"', acting as if the double quote isn't present (already
|
|
Q_DOUBLE_QUOTED)
|
|
|
|
arrayfunc.c
|
|
- array_expand_index: pass Q_DOUBLE_QUOTED|Q_ARITH|Q_ARRAYSUB as quoted
|
|
argument in call to expand_arith_string. This inhibits word
|
|
splitting (Q_DOUBLE_QUOTED) while discarding double quotes (Q_ARITH),
|
|
identical to the quote flags passed while expanding $(( )) and $[ ].
|
|
Q_ARRAYSUB reserved for future use. Fixes problem reported by
|
|
Stephane Chazelas <stephane.chazelas@gmail.com>
|
|
|
|
10/16
|
|
-----
|
|
subst.c
|
|
- parameter_brace_expand_word: if the PF_ASSIGNRHS flag is set and we
|
|
are expanding what looks like an array subscripted with @ or *,
|
|
make sure the variable we're expanding is actually an array before
|
|
we add Q_DOUBLE_QUOTES to the flags. If we don't, things like
|
|
scalar[@] will remain quoted. Fixes ubuntu bug 1381567
|
|
https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1381567
|
|
|
|
10/17
|
|
-----
|
|
{jobs,nojobs}.c
|
|
- get_original_tty_job_signals: get original signal dispostions for
|
|
SIGTSTP, SIGTTIN, SIGTTOU before we start manipulating them in
|
|
make_child
|
|
- default_tty_job_signals: make sure we set SIGTSTP, SIGTTIN, or
|
|
SIGTTOU to SIG_IGN if they were ignored at shell startup instead of
|
|
unconditionally setting them to SIG_DFL. Fixes bug reported by
|
|
idallen@idallen.ca
|
|
|
|
jobs.h
|
|
- get_original_tty_job_signals: extern declaration
|
|
|
|
trap.c
|
|
- initialize_traps: add call to get_original_tty_job_signals
|
|
|
|
10/22
|
|
-----
|
|
subst.c
|
|
- expand_string_for_rhs: when expanding in this context (rhs of a word
|
|
expansion or pattern removal), we don't perform word splitting, so
|
|
we don't want to split $* if IFS is empty. Fixes bug reported by
|
|
Stephane Chazelas <stephane.chazelas@gmail.com>
|
|
|
|
10/23
|
|
-----
|
|
subst.c
|
|
- param_expand: when expanding $* in a pattern context where the
|
|
expansion is quoted (Q_PATQUOTE), don't quote the expansion --
|
|
the outer quotes don't make the characters in the expansion of
|
|
$* special. Posix interp 221. Reported by Stephane Chazelas
|
|
<stephane.chazelas@gmail.com>
|
|
|
|
10/28
|
|
-----
|
|
lib/readline/bind.c
|
|
- enable-bracketed-paste: new bindable variable, enables support for
|
|
a terminal's `bracketed paste mode'. Code contributed by
|
|
Daniel Colascione <dancol@dancol.org>
|
|
|
|
doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
|
|
- enable-bracketed-paste: add description
|
|
|
|
lib/readline/{readline.c,rlprivate.h}
|
|
- _rl_enable_bracketed_paste: declarations
|
|
- #defines for use by bracketed paste implementation
|
|
|
|
lib/readline/rltty.c
|
|
- rl_prep_terminal: send BRACK_PASTE_INIT string to terminal if we
|
|
are supposed to enable bracketed-paste mode; change terminal_prepped
|
|
to indicate we sent that string and need to clean up
|
|
- rl_deprep_terminal: if terminal_prepped indicates we sent the
|
|
bracketed-paste mode init string to the terminal, send the cleanup
|
|
string before restoring the terminal modes
|
|
|
|
lib/readline/kill.c
|
|
- rl_bracketed_paste_begin: function to read bracketed paste until
|
|
BRACK_PASTE_SUFF; discard the suffix, and insert the rest of the
|
|
paste as a single (undoable) object. Bound to BRACK_PASTE_PREF
|
|
|
|
lib/readline/funmap.c
|
|
- bracketed-paste-begin: new bindable command, executes
|
|
rl_bracketed_paste_begin
|
|
|
|
lib/readline/readline.c
|
|
- bind_bracketed_paste_prefix: new function, sets up to recognize
|
|
the bracketed paste prefix sequence (BRACK_PASTE_PREF) in emacs
|
|
keymap and vi insertion keymap
|
|
- readline_initialize_everything: call bind_bracketed_paste_prefix
|
|
|
|
11/1
|
|
----
|
|
builtins/ulimit.def
|
|
- RLIMIT_POSIXLOCKS: now synonym for RLIMIT_LOCKS
|
|
- -k: new option: RLIMIT_KQUEUES, max kqueues allocated for this
|
|
process
|
|
- -P: new option: RLIMIT_NPTS, max number of pseudoterminals available
|
|
to this process
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- document `ulimit -k' option
|
|
- document `ulimit -P' option
|
|
|
|
parse.y
|
|
- `timespec list_terminator' production: if the list terminator is `;'
|
|
set last_read_token to `;' to allow things like `time ; command' to
|
|
time null commands and not throw a syntax error. Patch from
|
|
Piotr Grzybowski <narsil.pl@gmail.com>
|
|
- `BANG list_terminator' production: do the same thing
|
|
|
|
variables.c
|
|
- sv_optind: use find_shell_variable and get_variable_value so we can
|
|
have the variable's context in the case we need to do something
|
|
when we are restoring a previous variable context's value
|
|
|
|
builtins/getopt.h
|
|
- sh_getopt_state_t: struct to save sh_getopt's internal state so we
|
|
can restore it around function calls in the event that we have a
|
|
local copy of OPTIND
|
|
|
|
builtins/getopt.[ch]
|
|
- sh_getopt_{save,restore}_istate: new functions to save and restore
|
|
getopt's internal state
|
|
- sh_getopt_{alloc,dispose}_istate: new functions to allocate and
|
|
deallocate sh_getopt_istate_t objects
|
|
|
|
execute_cmd.c
|
|
- maybe_restore_getopt_state: restore sh_getopt state after executing
|
|
function body iff the funtion declared a local copy of OPTIND
|
|
- execute_function: save sh_getopt state before executing function body
|
|
- execute_function: note in getopt_state->flags whether or not the
|
|
function declared a local copy of OPTIND; used by
|
|
maybe_restore_getopt_state
|
|
- execute_function: maybe restore sh_getopt state before returning via
|
|
call to maybe_restore_getopt_state. Fixes bugs with getopts and
|
|
state between calls reported in 2011 by Bernd Eggink
|
|
<monoped@sudrala.de> and in 2014 by Oyvind Hvidsten
|
|
<oyvind.hvidsten@dampir.no>
|
|
|
|
configure.ac
|
|
- enable-function-import: new option, controls whether function imports
|
|
are included. Enabled by default. Patch from David Galos
|
|
<davegalos@google.com>
|
|
|
|
config.h.in
|
|
- FUNCTION_IMPORT: define controlled by enable-function-import above
|
|
|
|
variables.c
|
|
- initialize_shell_variables: include code to import function
|
|
definitions from the environment if FUNCTION_IMPORT is defined
|
|
|
|
doc/bashref.texi
|
|
- --enable_function-import: document new configuration option
|
|
|
|
11/5
|
|
----
|
|
lib/readline/history.c
|
|
- history_lines_read_from_file: new variable, set by read_history and
|
|
read_history_range to the actual number of lines read from the
|
|
history file. The value is valid immediately after a call to one
|
|
of those functions
|
|
- history_lines_written_to_file: new variable, set by write_history,
|
|
history_do_write, and history_truncate_file to the actual number of
|
|
lines written to the history file. The value is valid immediately
|
|
after a call to one of those functions
|
|
|
|
variables.c
|
|
- sv_histsize: set history_lines_in_file after history_truncate_file()
|
|
only if hmax < history_lines_in_file (lines we've already read); a
|
|
cosmetic change only
|
|
|
|
bashhist.c
|
|
- load_history: set history_lines_in_file after read_history() from
|
|
history_lines_read_from_file, since read_history reads all of the
|
|
lines from the history file even if it's more than $HISTSIZE
|
|
- maybe_save_shell_history: after calling write_history(), set
|
|
history_lines_in_file to history_lines_written_to_file, since we
|
|
can assume that we read everyhing we just wrote
|
|
|
|
builtins/history.def
|
|
- history_builtin: after calling read_history (history -r), set the
|
|
new value of history_lines_in_file, for the same reason as above
|
|
- history_builtin: after calling read_history_range (history -n), set
|
|
history_lines_in_file from history_lines_read_from_file
|
|
|
|
11/6
|
|
----
|
|
lib/readline/histfile.c
|
|
- history_truncate_file: since we move the old file to a backup copy
|
|
before truncating, make sure the new file is owned by the same uid
|
|
as the old
|
|
- history_do_write: use chown in the same way as history_truncate_file
|
|
|
|
11/12
|
|
-----
|
|
lib/readline/display.c
|
|
- expand_prompt: takes a new `flags' argument; only one flag defined
|
|
so far: PMT_MULTILINE
|
|
- expand_prompt: changed all callers to add new flags argument
|
|
- rl_expand_prompt, redraw_prompt: make sure to set PMT_MULTILINE in
|
|
FLAGS argument to expand_prompt if expanding parts of a prompt
|
|
containing embedded newlines
|
|
- expand_prompt: only add mode char to last line of a prompt with
|
|
embedded newlines, so mode indicator doesn't get lost and gets
|
|
updated properly. Fixes problem reported by Renlin Li
|
|
<lirenlin@gmail.com>
|
|
|
|
11/13
|
|
-----
|
|
|
|
lib/readline/display.c
|
|
- prompt_modestr: changed prompt_modechar to return a string denoting
|
|
the editing mode; default strings for emacs and both vi modes are
|
|
#defines in this file. prompt_modestr takes an argument in which
|
|
it returns the length of the mode string
|
|
- expand_prompt: if expanding mode strings in the prompt, get the
|
|
mode string to use and add it at the beginning of the prompt string,
|
|
before expanding it. This will allow future work allowing the mode
|
|
string to contain invisible characters
|
|
|
|
11/15
|
|
-----
|
|
lib/readline/rlprivate.h
|
|
- _rl_{emacs,vi_cmd,vi_ins}_mode_str: extern declarations for
|
|
variables to hold current values of user-settable mode strings;
|
|
variables to hold lengths
|
|
|
|
lib/readline/rlconf.h
|
|
- defines for default values of the mode strings for each editing mode
|
|
and keymap
|
|
|
|
lib/readline/display.c
|
|
- _rl_{emacs,vi_cmd,vi_ins}_mode_str: new variables to hold values of
|
|
user-settable mode strings
|
|
- _rl_{emacs,vi_cmd,vi_ins}_modestr_len: new variables to hold lengths
|
|
of corresponding mode string variables
|
|
- prompt_modestr: return appropriate user-settable mode string
|
|
variables
|
|
|
|
lib/readline/bind.c
|
|
- {emacs,vi-ins,vi-cmd}-mode-string: new user-settable mode string
|
|
variables
|
|
- sv_{emacs,viins,vicmd}_modestr: variable handling functions for user-
|
|
settable mode string variables. Non-null values are run through
|
|
rl_translate_keyseq so users can include invisible character
|
|
sequences in the mode strings; null values restore the default
|
|
- _rl_get_string_variable_value: handle values for new user-settable
|
|
mode string variables. Original code contributed by Dylan Cali
|
|
<calid1984@gmail.com>
|
|
|
|
lib/readline/doc/rluser.texi
|
|
- {emacs,vi-ins,vi-cmd}-mode-string: document, including the fact that
|
|
you can use \1 and \2 to bracket sequences of non-printing
|
|
characters
|
|
|
|
11/16
|
|
-----
|
|
lib/readline/history.c
|
|
- add_history: replace loop that copies history list down one item
|
|
with call to memmove to take advantage of whatever efficiencies
|
|
libc can offer. Won't be any slower than current loop
|
|
|
|
lib/readline/display.c
|
|
- rl_redraw_prompt_last_line: new function, calls redraw_prompt if
|
|
the prompt contains multiple lines; calls rl_forced_update_display
|
|
if not
|
|
|
|
lib/readline/readline.h
|
|
- rl_redraw_prompt_last_line: extern declaration, undocumented in
|
|
texinfo manual until I get it a little more work
|
|
|
|
bashline.c
|
|
- bash_execute_unix_command: instead of unconditionally calling
|
|
rl_forced_update_display, call rl_redraw_prompt_last_line if we
|
|
cleared the last line before executing the command. This keeps
|
|
commands that don't display any other output but just manipulate
|
|
the contents of the line buffer from redisplaying the prompt lines
|
|
before the last newline multiple times. Fixes bug reported by
|
|
Jesper Nygards <jesper.nygards@gmail.com> and Rob Foehl
|
|
<rwf@loonybin.net>. This means that commands that display output
|
|
will *only* display the final line of the prompt
|
|
- bash_execute_unix_command: if the command returns 124, we redraw
|
|
the line unconditionally, including all lines of the prompt
|
|
|
|
11/18
|
|
-----
|
|
builtins/mapfile.def
|
|
- mapfile_builtin: don't allow a valid array reference through to
|
|
mapfile(), since it will just create a shell variable with that name.
|
|
Bug and fix from Eduardo A. Bustamante López <dualbus@gmail.com>
|
|
|
|
11/19
|
|
-----
|
|
lib/readline/complete.c
|
|
- _rl_colored_completion_prefix: new variable, if non-zero, and color
|
|
support is compiled in, and the $LS_COLORS variable exists and
|
|
contains color definitions, display any common prefix of a set of
|
|
completions in blue when displaying all the possible completions.
|
|
Doesn't work with menu-complete, which inserts possible completions
|
|
inline
|
|
- colored_prefix_start(), colored_prefix_end(): new functions, used to
|
|
bracket colored completion prefixes
|
|
- fnprint: if prefix_bytes is non-zero, and _rl_colored_completion_prefix
|
|
is > 0, display the first PREFIX_BYTES bytes of the word bracketed
|
|
by calls to colored_prefix_start and colored_prefix_end
|
|
- print_filename: if _rl_colored_completion_prefix is > 0, compute the
|
|
length in bytes of the common prefix and pass that to fnprint
|
|
|
|
lib/readline/readline.c
|
|
- readline_initialize_everything: initialize the colors from $LS_COLORS
|
|
if _rl_colored_completion_prefix is non-zero
|
|
|
|
lib/readline/colors.c
|
|
- _rl_print_prefix_color: new function, changes text color to that
|
|
defined for the common prefix of a set of possible completions
|
|
(currently cyan, same as directories); currently uses C_PREFIX,
|
|
defined in colors.h as C_DIR
|
|
|
|
lib/readline/colors.h
|
|
- _rl_print_prefix_color: new extern declaration
|
|
|
|
lib/readline/bind.c
|
|
- colored-completion-prefix: new bindable variable, if set, common
|
|
prefix of a set of possible completions is displayed in color.
|
|
Feature requested by several, most recently by Richard Neill
|
|
<rn214@richardneill.org> (in a slightly different form) and
|
|
Duy Nguyen <pclouds@gmail.com>
|
|
|
|
11/20
|
|
-----
|
|
builtins/printf.def
|
|
- printf_builtin: allow null (empty) format strings supplied with
|
|
-v var to set `var' to the empty string. That is, printf -v var ""
|
|
is now the same as var="". Change suggested by Mike Frysinger
|
|
<vapier@gentoo.org>
|
|
|
|
pathexp.h
|
|
- FNMATCH_NOCASEGLOB: macro to decide whether or not to pass
|
|
FNM_CASEFOLD flag to strmatch depending on whether glob_ignore_case
|
|
is set; analogout to FNMATCH_IGNCASE
|
|
|
|
pathexp.c
|
|
- glob_name_is_acceptable: use FNMATCH_NOCASEMATCH to determine flags
|
|
passed to strmatch; if nocaseglob is used to generate glob matches,
|
|
it should be used to generate ignored matches
|
|
|
|
11/21
|
|
-----
|
|
pcomplete.c
|
|
- filter_stringlist: the call to strmatch now honors the setting of
|
|
nocasematch. Feature request from Ville Skytta <ville.skytta@iki.fi>
|
|
back in 2010
|
|
|
|
doc/bash.1,lib/readline/doc/rluser.texi
|
|
- complete -X: document that filtering the list of possible completions
|
|
honors the nocasematch option when performing matching
|
|
|
|
lib/glob/gmisc.c
|
|
- include chartypes.h and strmatch.h for new defines
|
|
- match_pattern_{wchar,char}: now take new third FLAGS argument, flags
|
|
have same meanings as strmatch(); intent is to handle case
|
|
insensitive comparisons under same conditions as strmatch
|
|
- FOLD: imported case-folding define from sm_loop.c; wide and single-
|
|
byte character versions
|
|
- match_pattern_{wchar,char}: use FOLD when comparing characters to
|
|
honor FNM_CASEFOLD if set in FLAGS argument
|
|
|
|
externs.h
|
|
- match_pattern_{wchar,char}: updated extern declarations
|
|
|
|
subst.c
|
|
- match_{upattern,wpattern}: update strmatch/wcsmatch calls to include
|
|
FNMATCH_IGNCASE in flags argument
|
|
- match_{upattern,wpattern}: update match_pattern_{char,wchar} calls
|
|
to include FNMATCH_IGNCASE in flags argument (consistent with calls
|
|
to strmatch). This makes pattern substitution word expansion honor
|
|
nocasematch shell option. Feature requested by Davide Baldini
|
|
<baldiniebaldini@gmail.com>
|
|
- match_wpattern: make sure to fold case if necessary when doing simple
|
|
matching
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- pattern substitution: updated description to include honoring setting
|
|
of nocasematch when performing matching
|
|
|
|
subst.c
|
|
- expand_word_internal: optimize handling of "$@" idiom by calling
|
|
list_rest_of_args() and quote_list() directly at the top of the
|
|
function instead of going through normal code path
|
|
- cached_quoted_dollar_at: WORD_LIST of quoted positional parameters,
|
|
used by same code above that optimizes "$@"; if non-null we just
|
|
return a copy of the list; if null, we save a copy of the list we
|
|
create
|
|
- invalidate_cached_quoted_dollar_at: convenience function to allow
|
|
other parts of the shell (e.g., remember_args()) to destroy the
|
|
cached list of quoted positional parameter when the positional
|
|
parameters change
|
|
|
|
builtins/common.c
|
|
- remember_args: call invalidate_cached_quoted_dollar_at()
|
|
|
|
builtins/shift.def
|
|
- shift_builtin: call invalidate_cached_quoted_dollar_at after modifying
|
|
dollar_vars[]
|
|
|
|
builtins/source.def
|
|
- maybe_pop_dollar_vars: call invalidate_cached_quoted_dollar_at just
|
|
to be safe
|
|
|
|
11/23
|
|
-----
|
|
builtins/evalfile.c
|
|
- _evalfile: return -1 if errno == ENOENT and the flags don't include
|
|
FEVAL_ENOENTOK. If we print an error message we should return an
|
|
error
|
|
- force_execute_file: new function, reads and executes commands from
|
|
a file but returns an error if file doesn't exist
|
|
|
|
builtins/common.h
|
|
- force_execute_file: new extern declaration
|
|
|
|
shell.c
|
|
- main: call start_debugger even if dollar_vars[1] == 0 if the shell
|
|
isn't interactive (interactive_shell == 0)
|
|
- start_debugger: call force_execute_file instead of maybe_execute_file;
|
|
turn off debugging mode if it returns value < 0
|
|
|
|
11/24
|
|
-----
|
|
hashlib.h
|
|
- DEFAULT_HASH_BUCKETS: doubled to 128, cost in memory use is small but
|
|
changes traversal order when not sorting results
|
|
|
|
11/25
|
|
-----
|
|
doc/{bash.1,bashref.texi}
|
|
- make it clearer, by breaking it out into a separate paragraph, that
|
|
referencing an array without a subscript is equivalent to referencing
|
|
it with subscript 0
|
|
- add text saying that referencing any variable using a valid subscript
|
|
is OK
|
|
|
|
11/28
|
|
-----
|
|
|
|
arrayfunc.c
|
|
- bind_array_variable, bind_assoc_variable: allow binding value to a
|
|
readonly variable if the ASS_FORCE flag is set in the FLAGS
|
|
argument
|
|
|
|
subst.h
|
|
- ASS_FORCE: new assignment flag; means to allow assignment even if
|
|
variable is marked readonly
|
|
|
|
builtins/declare.def
|
|
- when assigning a value to an array or assoc variable using
|
|
something like `declare -r foo=bar' where foo is an existing array
|
|
variable, pass the ASS_FORCE to assign_array_var_from_string so
|
|
the assignment is allowed. Fixes debian bug 765759
|
|
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=765759
|
|
|
|
builtins/setattr.def
|
|
- var_attribute_string: new function to return (as argument) a char
|
|
array with attribute flag values for a given variable; returns the
|
|
length of the array
|
|
|
|
lib/sh/shquote.c
|
|
- sh_quote_reusable: function returning a version of its string
|
|
argument that is quoted for reuse
|
|
|
|
externs.h
|
|
- sh_quote_reusable: extern declaration
|
|
|
|
builtins/common.h
|
|
- MAX_ATTRIBUTES: define used to size arrays for attribute flag
|
|
characters
|
|
- var_attribute_string: new extern function declaration
|
|
|
|
subst.c
|
|
- array_remove_pattern: fixed a bug where `var' instead of `v' was
|
|
tested for invisible attribute
|
|
- get_var_and_type: fill in a valid *VARP if returning VT_VARIABLE
|
|
because callers may need to use it
|
|
- parameter_brace_transform: family of functions to implement the new
|
|
mksh-inspired ${param@spec} transformation word expansions. Some
|
|
of the operators transform the (expanded) value of the parameter,
|
|
the rest expand to information about the parameter itself
|
|
(array_transform, parameter_list_transform, list_transform,
|
|
string_transform, pos_params_assignment, array_var_assignment,
|
|
string_var_assignment)
|
|
- parameter_brace_expand: changes to parse the new `@' word expansion
|
|
operator and call parameter_brace_transform appropriately
|
|
- parameter_brace_expand: make sure we handle ${#@} as we have before
|
|
even in the presence of the new `@' operator
|
|
|
|
variables.c
|
|
- push_temp_var: make sure to call bind_variable_internal with the
|
|
ASS_FORCE flag so we override readonly variables created with
|
|
something like `tempvar=foo declare -r foo'.
|
|
- bind_variable_internal: honor ASS_FORCE flag to allow binding even
|
|
if a variable is readonly
|
|
|
|
execute_cmd.c
|
|
- struct func_array_state: new state to save state of BASH_LINENO,
|
|
BASH_SOURCE, and FUNCNAME during function execution so it can be
|
|
restored on a jump to top level
|
|
- restore_funcarray_state: new function to restore func_array_state
|
|
- execute_function: fill in func_array_state variable, add unwind-
|
|
protect to restore it on jump to top level, call explicitly at
|
|
end of function if subshell != 0 (may not be necessary, but safe
|
|
for now). Fixes bug with local assignments to FUNCNAME reported
|
|
by Arfrever Frehtes Taifersar Arahesis <arfrever.fta@gmail.com>
|
|
|
|
11/29
|
|
-----
|
|
arrayfunc.c
|
|
- assign_compound_array_list: turn off ASS_APPEND flag when processing
|
|
each individual assignment inside the parens in var+=(...). The
|
|
outer += should not affect assignments to existing subscripts;
|
|
those should be treated like usual assignments unless += supplied
|
|
inside the parens. Bug report from Maarten Billemont
|
|
<lhunath@lyndir.com>, fix from Eduardo A. Bustamante López
|
|
<dualbus@gmail.com>
|
|
|
|
config.h.in
|
|
- HAVE_PSELECT: define if pselect(2) available
|
|
|
|
configure.ac
|
|
- check for pselect(2), define HAVE_PSELECT if found
|
|
|
|
lib/readline/input.c
|
|
- rl_getc: use pselect(2) to wait for input ready on readline's
|
|
input fd or for a signal to arrive, will handle SIGWINCH (which
|
|
does not interrupt read(2)) and thus allow resize to happen without
|
|
having to wait to read more input. Only works if pselect available
|
|
and returns -1/EINTR on a signal even if the signal was installed
|
|
with SA_RESTART. From a suggestion from Egmont Koblinger
|
|
<egmont@gmail.com>
|
|
|
|
12/3
|
|
----
|
|
variables.c
|
|
- flush_temporary_env: new function, disposes all temp variables in
|
|
temporary_env hash table
|
|
- bind_variable: only try to update a temporary variable's value in the
|
|
temporary env if the value argument is not null. Fixes bug reported
|
|
by <tangqinghao@360.cn>
|
|
|
|
variables.h
|
|
- flush_temporary_env: new extern declaration
|
|
|
|
subst.c
|
|
- command_substitute: if running command substitution as part of
|
|
expanding a redirection (expanding_redir == 1), flush any temporary
|
|
environment we've inherited as part of this command, since we are not
|
|
supposed to have access to the temporary environment. Since
|
|
expanding_redir only controls access to the temporary environment for
|
|
variable lookup and binding, we can turn it off in the subshell
|
|
|
|
12/4
|
|
----
|
|
builtins/printf.def
|
|
- printstr: make sure a missing precision specifier after a `.' is
|
|
treated as 0, as printf(3) specifies. Fixes ubuntu bash bug
|
|
1399087 (https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1399087)
|
|
|
|
12/5
|
|
----
|
|
subst.c
|
|
- skip_to_delim: if scanning past process substitution (skipcmd == 1,
|
|
noprocsub == 0), use extract_delimited_string instead of
|
|
extract_process_subst, which was changed a while back (bash-4.3.23)
|
|
to use xparse_dolparen. xparse_dolparen complains if the command
|
|
or process substitution is unterminated, since it runs the parser,
|
|
which is not what we want here. Command substitution does the same
|
|
thing. Fixes bug reported by Daniel Kahn Gillmor
|
|
<dkg@fifthhorseman.net> as Debian bash bug 771968
|
|
(https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=771968)
|
|
|
|
12/6
|
|
----
|
|
subst.c
|
|
- command_substitute: short-circuit without forking on a command string
|
|
that consists entirely of <blank>s and newlines
|
|
|
|
jobs.c
|
|
- make_child: changes to allow interrupts through if fork fails and
|
|
we are sleeping for `forksleep' seconds
|
|
- waitchld: make things a little more resilient if CHILD ends up NULL
|
|
|
|
12/12
|
|
-----
|
|
lib/readline/complete.c
|
|
- rl_display_match_list: when calculating common prefix to display in
|
|
color, make sure we correctly handle a common prefix with a trailing
|
|
`/' as we do when checking whether or not to add an ellipis.
|
|
printable_part() doesn't return the whole pathname if it ends in a
|
|
slash, to avoid printing null strings, so we have to make sure we
|
|
have the entire prefix
|
|
|
|
lib/readline/complete.c
|
|
- _rl_complete_display_matches_interrupt: new variable, set to 1 by
|
|
_rl_complete_sigcleanup to let rl_display_match_list know it has
|
|
freed the match list
|
|
- display_matches: check for signals during the printing loops with
|
|
RL_SIG_RECEIVED(), return immediately if there is a pending signal
|
|
(might not want to do this if it's SIGWINCH -- CHECK)
|
|
- rl_complete_internal: if _rl_complete_display_matches_interrupt
|
|
set after calling display_matches, just null out `matches' since
|
|
it's already been freed and call any application-set signal hook
|
|
|
|
12/14
|
|
-----
|
|
parse.y
|
|
- time_command_acceptable: if the token before a newline is `|',
|
|
return 0, since it's not really valid to time inside a pipeline.
|
|
Only handles a single newline but allows things like
|
|
echo a |
|
|
time cat
|
|
to invoke /usr/bin/time, which is probably enough to catch the
|
|
stray carriage return. Fixes bug reported by Andre Majorel
|
|
<aym-ung@teaser.fr>
|
|
|
|
builtins/declare.def
|
|
- declare_internal: don't try to perform compound assignments unless
|
|
the WORD_DESC has flags including W_COMPASSIGN (maybe should check
|
|
W_ASSIGNMENT as well), avoiding unexpected evaluation if a word
|
|
is of the form (word) and is assigned to an array variable like so:
|
|
declare -x var=$value. Bug reported by Stephane Chazelas
|
|
<stephane.chazelas@gmail.com>. Will eventually be contingent on
|
|
compatibility level > 43, but not there yet. TENTATIVE
|
|
|
|
12/15
|
|
-----
|
|
lib/sh/Makefile.in
|
|
- add missing dependencies for shmatch.o. Pointed out by Sergey
|
|
Mikhailov <sergey.mikhailov@gmail.com>
|
|
|
|
12/16
|
|
-----
|
|
{execute_cmd,subst}.c
|
|
- W_ASSIGNINT: remove, not used any more
|
|
|
|
execute_cmd.c
|
|
- fix_assignment_words: don't look for `-i' option and set W_ASSIGNINT
|
|
flag any more; doing things a different way
|
|
- shell_expand_word_list: instead of using W_ASSIGNINT flag, since it
|
|
doesn't take into account all options that can transform values on
|
|
assignment (-l/-u/-c can also), go through option arguments looking
|
|
for options that need special handling and add them to the `opts'
|
|
array for make_internal_declare to use. Fixes bug with constructs
|
|
like `declare -al foo=(UPONE UPTWO UPTHREE)' not being lowercased on
|
|
assignment reported by Linda Walsh <bash@tlinx.org>
|
|
|
|
|
|
|
|
12/18
|
|
-----
|
|
lib/readline/readline.c
|
|
- rl_internal_char: when we read EOF on a non-empty line, check for
|
|
signals and invoke any readline signal handling and any application-
|
|
installed signal hook
|
|
|
|
12/20
|
|
-----
|
|
lib/readline/readline.c
|
|
- rl_internal_char: if we read EOF on a non-empty line, set c to
|
|
_rl_eof_char the first time through. If we read EOF the next time,
|
|
return EOF from readline(). If callbacks are defined, this returns
|
|
EOF immediately, since lastc isn't available. Fix for problem
|
|
most recently identified by Jiri Kukacka <jiri.kukacka@orcle.com>,
|
|
it has come up in the past
|
|
|
|
12/21
|
|
-----
|
|
builtins/declare.def
|
|
- declare_internal: keep track of whether or not an assignment statement
|
|
argument to declare is an array subscript assignment; need to
|
|
differentiate assignments from straight declarations (declare a[4])
|
|
which are accepted for backwards compatibility
|
|
- assignment statements like declare a[2]=foo are now treated as
|
|
straight subscript assignment statements if a already exists as an
|
|
array variable
|
|
- declare foo='(1 2 3)' is treated as an assignment to foo[0] if foo
|
|
exists and is an array, just as it would be if it were an assignment
|
|
statement and `declare' was not present. All this from a proposal
|
|
by Stephane Chazelas <stephane.chazelas@gmail.com>
|
|
|
|
12/22
|
|
-----
|
|
builtins/read.def
|
|
- read_tty_modified: function to tell the rest of the shell if the
|
|
read builtin has modified the tty
|
|
- read_builtin: make sure to initialize terminating signals before
|
|
installing a SIGALRM signal handler in case we modify the tty as
|
|
well as ask for a timeout; the subsequent call to
|
|
initialize_terminating_signals would overwrite the read-builtin-
|
|
local SIGALRM handler
|
|
|
|
builtins/common.h
|
|
- read_tty_modified: new extern declaration
|
|
|
|
shell.c
|
|
- exit_shell: if read_tty_modified() returns true, call read_tty_cleanup
|
|
to undo the terminal modifications. Extension of previous fixes;
|
|
fixes bug with read -s reported by Richard W. Marsden
|
|
<richard@marsden.nu>
|
|
|
|
|
|
12/23
|
|
-----
|
|
builtins/setattr.def
|
|
- show_var_attributes: call print_array_assignment and print_assoc_assignment
|
|
with a `not quoted' flag so the assignment statements are not
|
|
surrounded by single quotes. Caused changes to a lot of test output
|
|
|
|
12/29
|
|
-----
|
|
lib/readline/complete.c
|
|
- stat_char: Windows doesn't handle X_OK flag to access(2); use file
|
|
extensions to determine whether or not a file is executable. Bug
|
|
report and fix from Eli Zaretskii <eliz@gnu.org>
|
|
|
|
configure.ac
|
|
- changed version to bash-4.4-devel
|
|
|
|
lib/readline/readline.h
|
|
- changed version to readline-6.4
|
|
|
|
12/30
|
|
-----
|
|
readline.h
|
|
- struct readline_state: fix types of `ignorefunc' and `attemptfunc'
|
|
members
|
|
|
|
lib/sh/shquote.c,externs.h
|
|
- sh_contains_shell_metas, sh_contains_quotes: now take `const char *'
|
|
as parameter
|
|
|
|
stringlib.c,externs.h
|
|
- strcreplace: `text' argument now `const char *'
|
|
|
|
pathexp.[ch]
|
|
- quote_globbing_chars: `string' argument now `const char *', accompanying
|
|
changes to function local variables
|
|
|
|
pcomplete.c
|
|
- preproc_filterpat: `text' argument now `const char *'
|
|
- filter_stringlist: `text' argument now `const char *'
|
|
|
|
12/31
|
|
-----
|
|
builtins/evalstring.c
|
|
- should_suppress_fork: new function, broke code that decides whether
|
|
to turn on CMD_NO_FORK flag out of parse_and_execute into a separate
|
|
function
|
|
|
|
execute_cmd.c
|
|
- execute_command_internal: AND_AND, OR_OR: call should_suppress_fork
|
|
for the RHS of && and ||, make `make' invocations marginally more
|
|
efficient
|
|
|
|
flags.c
|
|
- get_current_flags: returns a bitmap of all single-letter shell
|
|
options with a non-zero value meaning option is enabled
|
|
- set_current_flags: set current single-letter options from a passed
|
|
bitmap, which has presumably been initialized with get_current_flags
|
|
|
|
flags.h
|
|
- {get,set}_current_flags: new extern declarations
|
|
|
|
builtins/declare.def
|
|
- declare_internal: if invoked as `local', interpret name argument of
|
|
`-' to mean to save (and restore at shell return) single-letter
|
|
shell options
|
|
|
|
variables.c
|
|
- push_func_var: if we encounter `-' as the name of a local variable,
|
|
take the value and call set_current_flags on it to restore old
|
|
flag settings
|
|
|
|
builtins/set.def
|
|
- get_current_options: returns a bitmap of all shell options settable
|
|
with `set', with a non-zero value meaning option is enabled
|
|
- set_current_options: set current shell options from a passed
|
|
bitmap, which has presumably been initialized with get_current_options
|
|
|
|
|
|
1/1/2015
|
|
--------
|
|
lib/readline/parens.c
|
|
- _rl_blink_matching_paren: initialize to 0 whether or not select(2) is
|
|
available. Inconsistency reported by Mark Karpov
|
|
<markkarpov@opmbx.org>
|
|
|
|
builtins/declare.def
|
|
- declare_internal: use get_current_options instead of
|
|
get_current_flags, so `local -' can be generalized
|
|
|
|
variables.c
|
|
- push_func_var: use set_current_options instead of set_current_flags
|
|
so `local -' can be generalized
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- document new `local -' feature; originally inspired by Robert Elz
|
|
<kre@munnari.oz.au> describing feature in NetBSD sh
|
|
|
|
1/3
|
|
---
|
|
lib/readline/{complete,funmap,kill,histfile,util}
|
|
lib/readline/readline.h
|
|
lib/tilde/tilde.c
|
|
- fixes for filename- and evironment-related issues on Windows. Fixes
|
|
from Eli Zaretskii <eliz@gnu.org>
|
|
- Windows can paste to the console from the clipboard like Cygwin
|
|
- Windows uses $APPDATA as a pseudo-$HOME
|
|
|
|
lib/readline/input.c
|
|
- rl_getc: use _getch on Windows to avoid being overridden by a getch
|
|
ncurses function
|
|
- win32_isatty: replace Windows isatty(3) with a function that does
|
|
additional checks, sinces Windows isatty returns non-zero for
|
|
every character device. From Eli Zaretskii <eliz@gnu.org>
|
|
|
|
lib/readline/display.c
|
|
- delete_chars: if compiled with ncurses on Windows, this code can
|
|
work, so build it in if NCURSES_VERSION defined
|
|
- open_some_spaces: ditto
|
|
|
|
1/6
|
|
---
|
|
doc/{bash.1,bashref.texi}
|
|
- minor grammar and typo corrections from TonyMc <afmcc@btinternet.com>
|
|
|
|
1/8
|
|
---
|
|
sig.c
|
|
- throw_to_top_level: only attempt to run the interrupt trap if SIGINT
|
|
is trapped -- minor optimization
|
|
- throw_to_top_level: if we are running a trap, call run_trap_cleanup
|
|
to turn off the sigmodes flags
|
|
|
|
trap.c
|
|
- _run_trap_internal: temporarily suppress pending SIGINTs while running
|
|
one of the traps the shell handles internally (e.g., ERR). Fixes bug
|
|
reported by Keith Thompson <keithsthompson@gmail.com>
|
|
|
|
1/10
|
|
----
|
|
bashhist.c
|
|
- bash_history_inhibit_expansion: use skip_to_delim with the history
|
|
expansion character to see whether or not the instance of the
|
|
history expansion character should be skipped because, for instance,
|
|
it is in a command substitution. Fixes issue reported by
|
|
Zigmund.Ozean@zig-home.localdomain
|
|
|
|
1/14
|
|
----
|
|
lib/readline/isearch.c
|
|
- _rl_isearch_dispatch: if we are in a multibyte locale, make sure to
|
|
use _rl_find_prev_mbchar when trying to delete characters from the
|
|
search string, instead of just chopping off the previous byte.
|
|
Fixes bug reported by Kyrylo Shpytsya <kshpitsa@gmail.com>
|
|
|
|
lib/readline/complete.c
|
|
- rl_filename_completion_function: if we tilde-expand `dirname', make
|
|
sure we use the expanded result instead of throwing it away for the
|
|
quote-removed `users_dirname', which still has any leading tilde.
|
|
Fixes bug reported by Dave Rutherford <dave@evilpettingzoo.com>
|
|
|
|
execute_cmd.c
|
|
- select_query: if the read builtin doesn't return anything in REPLY,
|
|
return NULL (failure). Fixes bug reported by Etherial Raine
|
|
<osirisgothra@hotmail.com>
|
|
|
|
builtins/read.def
|
|
- read_builtin: if REPLY has the readonly or noassign attribute, return
|
|
failure
|
|
|
|
1/16
|
|
----
|
|
redir.c
|
|
- redir_open: if open() returns -1/EINTR, check traps as well as
|
|
using QUIT to handle signals
|
|
|
|
1/18
|
|
----
|
|
jobs.c
|
|
- wait_for: make sure queue_sigchld is set to 1 before unblocking
|
|
SIGCHLD if MUST_UNBLOCK_CHLD is defined
|
|
|
|
1/19
|
|
----
|
|
pcomplete.h
|
|
- new progcomp option: COPT_NOSORT, means to not sort list of possible
|
|
completions
|
|
|
|
pcomplete.c
|
|
- pcomp_set_readline_variables: if COPT_NOSORT set in compspec flags,
|
|
set rl_sort_completion_duplicates to 0
|
|
|
|
builtins/complete.def
|
|
- _compopt: new option value: -o nosort, sets COPT_NOSORT in compspec
|
|
option flags. Provides new -o nosort option for complete and compgen
|
|
|
|
bashline.c
|
|
- attempt_shell_completion: make sure rl_sort_completion_matches is
|
|
set to 1 before completion is attempted; allow a compspec to turn
|
|
it off
|
|
|
|
lib/readline/kill.c
|
|
- rl_vi_yank_pop: new function, vi-mode version of yank-pop. Original
|
|
code from Ian Kelling <ian@iankelling.org>
|
|
|
|
lib/readline/funmap.c
|
|
- `vi-yank-pop': bindable name mapped to rl_vi_yank_pop
|
|
|
|
lib/readline/readline.h
|
|
- rl_vi_yank_pop: extern declaration
|
|
|
|
1/21
|
|
----
|
|
lib/sh/shquote.c
|
|
- sh_backslash_quote: change to understand and handle multibyte
|
|
characters, using is_basic, COPY_CHAR_P. See
|
|
https://bugzilla.redhat.com/show_bug.cgi?id=1184320 for original
|
|
report
|
|
|
|
1/23
|
|
----
|
|
include/posixjmp.h
|
|
- use setjmp_sigs instead of redefined setjmp, it fails on Cygwin.
|
|
Report from Eric Blake <eblake@redhat.com>
|
|
|
|
builtins/wait.def,shell.c
|
|
- use setjmp_sigs instead of setjmp call, since setjmp no longer
|
|
redefined to something known
|
|
|
|
include/chartypes.h, lib/readline/chardefs.h
|
|
- make sure all ctype.h macros are called with unsigned char args,
|
|
casting to make sure
|
|
|
|
lib/sh/casemod.c
|
|
- sh_modcase: don't assume that the upper and lower case versions of a
|
|
character are the same width, so don't try to do the conversion in
|
|
place: convert and copy the converted characters one or more at a
|
|
time to the returned string
|
|
- sh_modcase: since upper and lower case versions of same character
|
|
may have different widths in some locales, don't shortcut and assume
|
|
that we can do single-byte case modification (toupper) with a
|
|
single-byte input character (e.g., `i'). Fix for problem reported
|
|
by Stephane Chazelas <stephane.chazelas@gmail.com>
|
|
|
|
1/31
|
|
----
|
|
lib/readline/histfile.c
|
|
- history_truncate_file, history_do_write: if the first rename(2)
|
|
of the history file to the backup file fails, set the backup file
|
|
name to NULL to prevent any later attempts to restore the
|
|
original. Report from Jonathan Hankins <jhankins@homewood.k12.al.us>
|
|
- history_do_write: don't attempt to back up non-regular files.
|
|
Report from Jonathan Hankins <jhankins@homewood.k12.al.us>
|
|
|
|
2/2
|
|
---
|
|
trap.c
|
|
- run_interrupt_trap: now takes an argument indicating whether or not
|
|
it was called just before a longjmp to top_level; change callers
|
|
- run_interrupt_trap: if running a trap and we are being called before
|
|
a longjmp to top_level, call run_trap_cleanup on running trap so
|
|
a QUIT call while running a DEBUG trap, for instance, doesn't leave
|
|
sigmodes[DEBUG_TRAP] including SIG_INPROGRESS. Fixes bug reported
|
|
by Chih-Chieh Chou <ccchou@gmail.com>
|
|
|
|
sig.c
|
|
- throw_to_top_level: change call to run_interrupt_trap to pass arg 1
|
|
- termsig_handler: change call to run_interrupt_trap
|
|
|
|
trap.h
|
|
- run_interrupt_trap: update extern prototype declaration
|
|
|
|
2/4
|
|
---
|
|
lib/readline/histfile.c
|
|
- histfile_backup, histfile_restore: new functions to back up and restore
|
|
history file to `filename-', following (one level of) symlinks through
|
|
so we don't rename the symlink itself. From a suggestion by
|
|
Jonathan Hankins <jhankins@homewood.k12.al.us>
|
|
|
|
assoc.c
|
|
- assoc_to_assign: if an index happens to be `@' or `*', make sure it's
|
|
double-quoted. Bug report from Greg Wooledge <wooledg@eeg.ccf.org>
|
|
|
|
2/5
|
|
---
|
|
lib/readline/bind.c
|
|
- rl_bind_key: if we are rebinding a key that is not bound to a
|
|
function or a macro, construct a key sequence and pass it to
|
|
rl_bind_keyseq. Make sure that '\' when it is used as a key is
|
|
changed to "\\" so it can survive rl_translate_keyseq. Fixes
|
|
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=776743
|
|
|
|
2/8
|
|
---
|
|
include/posixjmp.h
|
|
- _rl_longjmp, sh_longjmp: new defines, expand to siglongjmp or longjmp
|
|
depending on autoconf results, used to avoid redefining longjmp,
|
|
remove _OPENNT conditional code. Report from Eric Blake
|
|
<eblake@redhat.com>
|
|
|
|
{bashjmp,quit}.h,{execute_cmd,expr,jobs,sig,trap}.c,builtins/{evalstring.c,return.def}
|
|
- change calls to longjmp to use sh_longjmp
|
|
|
|
lib/readline/util.c
|
|
- change calls to longjmp to use _rl_longjmp
|
|
|
|
2/18
|
|
----
|
|
variables.c
|
|
- bind_int_variable: make sure `v' is non-null before making it visible
|
|
|
|
2/19
|
|
----
|
|
arrayfunc.c
|
|
- assign_array_var_from_word_list: after assignment, mark variable as no
|
|
longer invisible
|
|
- assign_array_var_from_string: after assignment, mark variable as no
|
|
longer invisible
|
|
|
|
builtins/declare.def
|
|
- declare_internal: add warning if an attempt is made to use a quoted
|
|
compound assignment as an argument to declare (declare -a foo='( 1 2 )');
|
|
backwards compatible with bash-4.3. Still a tentative change
|
|
|
|
2/20
|
|
----
|
|
lib/glob/smatch.c
|
|
- is_wcclass: check malloc() return value, return -1 if it fails
|
|
Report from Tobias Stoeckmann <tobias@stoeckmann.org>
|
|
|
|
lib/sh/shmatch.c
|
|
- sh_regmatch: check malloc() return value, handle NULL value if it
|
|
fails. Report from Tobias Stoeckmann <tobias@stoeckmann.org>
|
|
|
|
2/22
|
|
----
|
|
lib/readline/doc/rltech.texi
|
|
- rl_callback_handler_install: note that the handler function should
|
|
free the line it receives, as with readline. Suggested by
|
|
Ulf Magnusson <ulfalizer@gmail.com>
|
|
- Readline Signal Handling: note that application needs to clean up
|
|
readline's terminal state if it wants to handle a signal before
|
|
the line handler restores it. Suggested by Ulf Magnusson
|
|
<ulfalizer@gmail.com>
|
|
|
|
2/24
|
|
----
|
|
lib/readline/histfile.c
|
|
- history_do_write,history_truncate_file: if the write fails, make sure
|
|
to set history_lines_written_to_file to 0 so we don't lose those
|
|
history entries
|
|
|
|
2/27
|
|
----
|
|
execute_cmd.c
|
|
- execute_function: unwind-protect the value of line_number_for_err_trap,
|
|
so a function that returns a non-zero value and triggers an ERR trap
|
|
has the right value for LINENO. Any simple command in the function
|
|
body can change it. Bug report from Paul Donohue <gnu@paulsd.com>
|
|
|
|
3/5
|
|
---
|
|
lib/sh/shquote.c
|
|
- sh_backslash_quote: cast `c' to `unsigned char' before using as
|
|
index into backslash_table. Report and fix from
|
|
alexeyv.90@gmail.com
|
|
|
|
arrayfunc.[ch]
|
|
- valid_array_reference: added second `flags' argument for future use;
|
|
currently unused
|
|
|
|
parse.y,{redir,subst,variables,test}.c
|
|
builtins/{declare,printf,read,set}.def
|
|
- valid_array_reference: changed callers
|
|
|
|
3/7
|
|
---
|
|
lib/readline/signals.c
|
|
- _rl_handle_signal: if readline gets a SIGTSTP or SIGTTIN, block
|
|
SIGTTOU so a backgrounded readline can reset the terminal settings
|
|
appropriately, otherwise the terminal state and readline's idea
|
|
of it can get messed up. Original report from Dave Wysochanski
|
|
<dwysocha@redhat.com> and Dave Anderson <anderson@redhat.com>
|
|
|
|
trap.c
|
|
- run_pending_traps: don't allow recursive SIGWINCH trap invocations;
|
|
they're wasteful and trying to handle a stream of signals while a
|
|
user resizes the terminal can lead to malloc errors trying to save
|
|
and restore the_pipeline multiple times. Problem reported most
|
|
recently by Martin M. S. Pederson (Fedora bash bug 1197768
|
|
https://bugzilla.redhat.com/show_bug.cgi?id=1197768)
|
|
- reset_or_restore_signal_handlers: set pending_traps to 0 for all
|
|
signals when forking a child. TENTATIVE fix
|
|
|
|
jobs.c
|
|
- {save,restore}_pipeline: block SIGCHLD while manipulating the_pipeline
|
|
like cleanup_the_pipeline does. XXX - may not be necessary
|
|
|
|
lib/readline/display.c
|
|
- rl_redisplay: fixed case where multibyte character in the prompt
|
|
(e.g., \u03bb) in the last screen column causes problems with line
|
|
wrapping because the newline marker is put in the middle of the
|
|
multibyte char. Most recently reported on Ubuntu by
|
|
<sterpe@gmail.com>
|
|
|
|
pathexp.c
|
|
- quote_string_for_globbing: if a bracket expression doesn't have a
|
|
closing right bracket, rescan it from just after the opening
|
|
bracket without treating it as a bracket expression. Bug report
|
|
from Stephane Chazelas <stephane.chazelas@gmail.com>
|
|
|
|
3/9
|
|
---
|
|
subst.c
|
|
- process_substitute: keep the last pipeline created to run a process
|
|
substitution in LAST_PROCSUB_CHILD; discard it when another one is
|
|
created
|
|
|
|
jobs.[ch]
|
|
- discard_pipeline: now global, so process_substitute can call it
|
|
|
|
jobs.c
|
|
- last_procsub_child: new variable, set and modified only by the process
|
|
substitution code
|
|
- find_pipeline: if the requested pid is in LAST_PROCSUB_CHILD, return
|
|
it; analogous to the way this code handles the_pipeline
|
|
- waitchld: if we find a child via find_pipeline that is a part of the
|
|
last process substitution child, mark that child appropriately. If
|
|
the child is dead, add it to the bgp list. This and the previous
|
|
change allow waiting for the most recent process substitution (the
|
|
one corresponding to $!). Original report from Stephane Chazelas
|
|
<stephane.chazelas@gmail.com>
|
|
|
|
3/10
|
|
----
|
|
arrayfunc.c
|
|
- unbind_array_element: make sure skipsubscript() doesn't try to parse
|
|
embedded quotes in the subscript, since this has already been through
|
|
one round of word expansion before calling the unset builtin. (This
|
|
function is only called by the unset builtin). Fixes bug reported by
|
|
<vampyrebat@gmail.com>
|
|
|
|
3/17
|
|
----
|
|
jobs.c
|
|
- waitchld: move code that adds the last process substitution pid to
|
|
the bgpids array from waitchld (where it can call malloc in a signal
|
|
handler context) to cleanup_dead_jobs
|
|
|
|
3/19
|
|
----
|
|
subst.c
|
|
- parameter_brace_expand: if expanding an array in a context where word
|
|
splitting will not take place (W_ASSIGNRHS only for now), make sure
|
|
to pass the double-quoted flag to chk_atstar so we don't get the
|
|
unquoted $* behavior, which will cause unwanted word splitting.
|
|
Fixes bug reported by isabella parakiss <izaberina@gmail.com>
|
|
|
|
arrayfunc.c
|
|
- unbind_array_element: don't assume that caller will check and pass
|
|
only array variables; don't allow non-array variables to be unset
|
|
using the `@' or `*' subscripts and don't allow any subscripts other
|
|
than 0; return -2 in those cases
|
|
- unbind_array_element: unset a non-array variable if passed a subscript
|
|
of `0' (e.g., `unbind "scalar[0]"'). This is new functionality that
|
|
parallels the ${scalar[0]} expansion
|
|
|
|
builtins/set.def
|
|
- unset_builtin: don't check whether a variable is an array if it's
|
|
referenced using array syntax (scalar[0]); pass it to
|
|
unbind_array_element anyway and check the result. This means that
|
|
`unset scalar' and `unset scalar[0]' are equivalent
|
|
|
|
3/20
|
|
----
|
|
builtins/set.def
|
|
- set_builtin: make `-i' an invalid option, unconditionally for now.
|
|
From a bug-bash discussion started by Peng Yu <pengyu.ut@gmail.com>
|
|
|
|
3/21
|
|
----
|
|
lib/readline/colors.c
|
|
- _rl_print_color_indicator: handle dangling symlinks (C_ORPHAN) and
|
|
the `target' specifier for links (dereference S_ISLNK if the target
|
|
exists). Bug report and fix from andreas@stapelspeicher.org
|
|
|
|
{arrayfunc,subst}.c
|
|
- add code to save and restore this_command_name in places that set
|
|
this_command_name to NULL to prevent error messages from arithmetic
|
|
evaluation. Fixes bug reported by brian.carpenter@gmail.com
|
|
|
|
builtins/mapfile.def
|
|
- do_chop: remove a new DELIM argument from the line, instead of
|
|
unconditionally removing newline
|
|
- mapfile: if -d delim is supplied and we are breaking fields at DELIM,
|
|
remove DELIM if the -t option is supplied by passing DELIM to do_chop().
|
|
Suggested by Geir Hauge <geir.hauge@gmail.com>
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- mapfile: document new -t option behavior, defaults are the same
|
|
|
|
builtins/alias.def
|
|
- print_alias: if the first character of an alias name is `-', add a
|
|
`-- ' after `alias' to avoid option errors when trying to reuse the
|
|
output. Bug report and fix on savannah from Pasha Bolokhov
|
|
<pasha.bolokhov@gmail.com>
|
|
|
|
3/22
|
|
----
|
|
builtins/declare.def
|
|
- declare_internal: if creating a variable does not return a valid
|
|
variable in VAR, check for null variable before dereferencing it.
|
|
This happens with nameref variables referencing variables set to
|
|
the empty string.
|
|
Fixes bug reported by Arthur200000 <arthur200126@163.com>
|
|
|
|
3/23
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- INVOCATION: add language to make it clear that non-interactive login
|
|
shells execute ~/.bash_logout if they run the `exit' builtin. From a
|
|
question from Christoph Anton Mitterer <calestyo@scientia.net>
|
|
|
|
4/6
|
|
---
|
|
subst.c
|
|
- process_substitute: increment and decrement subshell_level around
|
|
calls to parse_and_execute, as in command substitution, so
|
|
$BASH_SUBSHELL gets new values in the subshell. Fixes inconsistency
|
|
pointed out by Peng Yu <pengyu.ut@gmail.com>
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- read: add clarifying text to note that the -N option does not split
|
|
on $IFS, but does retain backslash as an escape character subject
|
|
to -r. Report from isabella parakiss <izaberina@gmail.com>
|
|
|
|
builtins/declare.def
|
|
- declare_internal: unless it's the last statement in a {...} block,
|
|
NEXT_VARIABLE must be protected by braces. Bug introduced in patch
|
|
from 3/22, reported by Eduardo A. Bustamante López
|
|
<dualbus@gmail.com>
|
|
|
|
4/7
|
|
---
|
|
parse.y
|
|
- shell_getc: if bash is reading input from a string that ends with an
|
|
unquoted backslash, add another backslash instead of a newline, since
|
|
the backslash and newline will disappear in normal processing. Fixes
|
|
bug with `bash -c 'eval \\; echo y' ' skipping the eval command and
|
|
setting incorrect exit status, and `bash -ic 'eval \\; echo y' '
|
|
seeing EOF on empty line and exiting before the echo. Keep track of
|
|
backslash state with last_was_backslash; set in char reading loop.
|
|
Fixes bug reported by Eduardo A. Bustamante López <dualbus@gmail.com>
|
|
|
|
4/8
|
|
---
|
|
shell.c
|
|
- main: check for $INSIDE_EMACS as well as $EMACS when deciding whether
|
|
or not bash is being run in a GNU emacs shell window. Don't bother
|
|
checking whether $TERM is unset because variable initialization sets
|
|
it to `dumb' if unset. Fixes from Paul Eggert <eggert@CS.UCLA.EDU>
|
|
|
|
parse.y
|
|
- push_token: new function, rotates current_token through last_read_token,
|
|
saving old values like yylex() does, sets current_token to argument
|
|
|
|
evalfile.c
|
|
- _evalfile: if current_token is yacc_EOF, push a newline as the value
|
|
of current_token instead, using push_token(). yacc_EOF can result if
|
|
sourced file doesn't end with a newline but does end with an unescaped
|
|
backslash. Fixes bug reported by Pedro Gimeno
|
|
<pgwr-842@personal.formauri.es>
|
|
|
|
lib/readline/histfile.c
|
|
- use PARAMS(x) instead of __P(x). Bug reported by Evan Gates
|
|
<evan.gates@gmail.com>
|
|
|
|
4/9
|
|
---
|
|
execute_cmd.c
|
|
- execute_simple_command: if we haven't already forked, and we have
|
|
created FIFOs, turn off the no-fork optimization in the simple
|
|
command's flags. Originally reported to savannah by Kuang-che Wu as
|
|
https://savannah.gnu.org/support/index.php?108732
|
|
|
|
4/10
|
|
----
|
|
trap.c
|
|
- trap_if_untrapped: new function, sets a trap on a signal if that
|
|
signal is not already trapped
|
|
- maybe_set_debug_trap: new function, sets DEBUG trap to command string
|
|
argument only if it's not already trapped
|
|
|
|
trap.h
|
|
- maybe_set_debug_trap: new extern declaration
|
|
|
|
|
|
builtins/source.def
|
|
- source_builtin: if the -T option isn't set, use maybe_set_debug_trap
|
|
in the unwind-protect instead of unconditionally restoring the old
|
|
trap string. That means if the sourced file changes the DEBUG trap,
|
|
that new trap will persist instead of being undone when the old
|
|
value is restored. Fixes bug reported by Scott Bronson
|
|
<bronson@rinspin.com>
|
|
|
|
builtins/evalstring.c
|
|
- parse_string: before we jump to top_level, if we are at the `bottom'
|
|
of the parse_and_execute stack (parse_and_execute_level == 0), call
|
|
top_level_cleanup() before jumping so the right cleanup happens (e.g.,
|
|
cleaning up redirections and other state). Fixes bug reported by
|
|
Sam Liddicott <sam@liddicott.com>
|
|
|
|
4/15
|
|
----
|
|
jobs.c
|
|
- delete_job: only add J_ASYNC (and not J_FOREGROUND) jobs to the
|
|
bgpids array, since Posix says shells only need to save the status
|
|
of async jobs. Report and fix from John Fremlin <john@fb.com>
|
|
|
|
4/17
|
|
----
|
|
pcomplib.c
|
|
- COMPLETE_HASH_BUCKETS: increase to 256 since bash-completion is
|
|
over 300 completions by now
|
|
|
|
variables.c
|
|
- VARIABLES_HASH_BUCKETS: constant used to size shell variables hash
|
|
table instead of relying on hash library default. Used in calls
|
|
to hash_create in create_variable_tables(), push_temp_var(), and
|
|
push_func_var(). Currently set to 1024 because why not? From a
|
|
discussion starting at
|
|
https://lists.gnu.org/archive/html/bug-bash/2015-04/msg00089.html
|
|
- initialize_shell_variables: if FUNCTION_IMPORT is not defined, the
|
|
nested conditional compilation causes syntax errors. Bug and fix
|
|
from Eric Blake <eblake@redhat.com>
|
|
|
|
configure.ac
|
|
- function-import: fix typo, assign to correct variable. Found as the
|
|
result of a report by Eric Blake <eblake@redhat.com>
|
|
|
|
shell.c
|
|
- open_shell_script: check whether or not file argument is a
|
|
directory before opening; Posix says that implementations may open
|
|
a directory with O_RDONLY. Bug report from
|
|
Eduardo A. Bustamante López <dualbus@gmail.com>
|
|
|
|
4/19
|
|
----
|
|
ulimit.def
|
|
- fix typo in limits[] declaration of `k'
|
|
|
|
4/20
|
|
----
|
|
configure.ac
|
|
- add template definitions set by AC_USE_SYSTEM_EXTENSIONS from a report
|
|
from Andreas Schwab <schwab@linux-m68k.org>
|
|
|
|
variables.c
|
|
- FUNCTIONS_HASH_BUCKETS: constant used to size the hash tables used for
|
|
shell functions and the text of shell function definitions. Initially
|
|
set to 512, even though it's a really rare case that someone has more
|
|
than around 150 functions, even with bash-completion
|
|
|
|
4/21
|
|
----
|
|
shell.c
|
|
- main: malloc_set_register: change arg to 0 to disable keeping track of
|
|
allocations and frees in table; change to 1 for malloc debugging on
|
|
demand. Table is too small to keep effective track of allocations on
|
|
a modern system, need to use something like valgrind
|
|
|
|
4/22
|
|
----
|
|
shell.c
|
|
- main: move cmd_init() (initialize word desc and word list object
|
|
caches) after startup files are read so the cache doesn't get filled
|
|
up with semi-permanent storage for shell functions and variables
|
|
|
|
execute_cmd.c
|
|
- execute_function: use maybe_set_debug_trap in the same way as source
|
|
builtin change from 4/10 to allow functions to reset a DEBUG trap
|
|
when set -T not in effect. From a report by Peng Yu
|
|
<pengyu.ut@gmail.com>
|
|
|
|
4/23
|
|
----
|
|
execute_cmd.c
|
|
- execute_disk_command: don't overwrite value of subshell_environment
|
|
by assigning SUBSHELL_FORK; just OR in SUBSHELL_FORK so something
|
|
like SUBSHELL_ASYNC or SUBSHELL_PIPE is preserved
|
|
|
|
jobs.c
|
|
- wait_for: don't call give_terminal_to if running in a subshell
|
|
environment, not just if running_in_background is set; don't want
|
|
shell functions waiting for a process to complete in a pipeline to
|
|
give the terminal to the wrong process group. Part of fix for bug
|
|
reported by Valentin Bajrami <valentin.bajrami@gmail.com>
|
|
- make_child: child process should not try to give the terminal to the
|
|
pipeline_pgrp if running as part of a pipeline (SUBSHELL_PIPE in
|
|
subshell_environment); functions in execute_cmd.c don't set that
|
|
flag until after make_child returns and the child process is running.
|
|
Rest of fix for bug reported by Valentin Bajrami
|
|
<valentin.bajrami@gmail.com>
|
|
|
|
4/24
|
|
----
|
|
redir.c
|
|
- redirection_error: if the redirection involves {varname}, only use
|
|
`varname' in the error message if the error code is < 0 (one of the
|
|
internal redirection errors, like ambiguous or bad variable name);
|
|
otherwise the issue is probably with the filename and should be treated
|
|
as usual. Fixes problem reported by Dr. David Alan Gilbert
|
|
<dgilbert@redhat.com>
|
|
|
|
configure.ac,config.h.in
|
|
- sys/ioctl.h: add check in AC_CHECK_HEADERS macro, define HAVE_SYS_IOCTL_H
|
|
|
|
lib/readline/{rltty,terminal}.c
|
|
- sys/ioctl.h: include unconditionally for ioctl declaration, avoid
|
|
issues with `implicit declaration' warnings. Issue originally
|
|
raised on gdb list by Chen Gang <xili_gchen_5257@hotmail.com>
|
|
|
|
4/27
|
|
----
|
|
lib/malloc/table.c
|
|
- mem_table: now a circular buffer showing the state of the last
|
|
REG_TABLE_SIZE allocations rather than a hash table that quickly
|
|
fills up
|
|
|
|
builtins/declare.def
|
|
- typeset_builtin: add -n to list of supported options. Omission
|
|
reported by Valentin Bajrami <valentin.bajrami@gmail.com>
|
|
|
|
unwind_prot.c
|
|
- use object caches instead of malloc/free to allocate and deallocate
|
|
unwind-protect elements
|
|
- uwp_init: initialize unwind-protect element object cache
|
|
|
|
unwind_prot.h
|
|
- uwp_init: extern declaration
|
|
|
|
shell.c
|
|
- main: call uwp_init right after calling cmd_init -- initialize all the
|
|
object caches at the same place
|
|
|
|
lib/malloc/table.[ch]
|
|
- mlocation_table: new table to keep track of allocation locations by
|
|
file and line, functions to initialize table, record an allocation,
|
|
and dump the table to stderr
|
|
- mregister_alloc: call mlocation_register_alloc to record the location
|
|
(source file/line) for each allocation to pinpoint malloc hot spots
|
|
by number of calls. More detail than gprof
|
|
|
|
parse.y
|
|
- set_line_mbstate: replace free/xmalloc pair with xrealloc call
|
|
- read_token_word: call alloc_word_desc instead of xmalloc so we can take
|
|
advantage of the WORD_DESC cache
|
|
|
|
4/28
|
|
----
|
|
execute_cmd.c
|
|
- execute_simple_command: if command execution fails because the command
|
|
is a directory, and the `autocd' option is set, add a `--' argument
|
|
to the constructed `cd' command to protect against command names with
|
|
the same name as options to `cd'. Report and fix from
|
|
isabella parakiss <izaberina@gmail.com>
|
|
|
|
4/30
|
|
----
|
|
jobs.c
|
|
- printable_job_status, j_strsignal: change calls to strcpy and sprintf
|
|
that write to retcode_name_buffer to use strncpy and snprintf to
|
|
avoid buffer overflows caused by malicious translations. Bug and fix
|
|
from Trammell Hudson <Trammell.Hudson@twosigma.com>
|
|
|
|
5/1
|
|
---
|
|
strtrans.c
|
|
- ansicstr: make sure the buffer is at least 12 bytes to ensure enough
|
|
space for any eventual call to u32cesc for one multibyte char
|
|
|
|
5/4
|
|
---
|
|
jobs.c
|
|
- wait_for: if an interactive shell is running a loop and waiting for
|
|
a non-builtin command to exit, and the command exits due to SIGINT,
|
|
act as if the shell received the SIGINT as well and break the loop.
|
|
This matches the behavior when the shell is running a builtin command
|
|
in a loop, and when running a non-builtin command outside a loop, and
|
|
seems more broadly useful than running the trap handler over and over
|
|
again. Report originally from Kaz Kylheku <kkylheku@gnu.org>
|
|
|
|
builtins/set.def
|
|
- unset_builtin: use different variables for keeping the state of the
|
|
-f and -v options than the loop uses to decide whether or not to
|
|
treat a name as a function or a variable. Fixes problem with
|
|
unset_function setting `sticking' after you unset a function when
|
|
invoked with no options. Bug report from Dreamcat4
|
|
<dreamcat4@gmail.com>
|
|
|
|
shell.c
|
|
- open_shell_script: set running_shell_script to 1, set to 0 in every
|
|
other case (new variable)
|
|
- main: when checking whether or not to call start_debugger, test
|
|
running_shell_script instead of dollar_vars[1]. The goal is to not
|
|
invoke the debugger for interactive shells but allow it to run for
|
|
things like `bash --debugger -i /tmp/script'. Problem reported by
|
|
Rocky Bernstein <rocky@gnu.org>
|
|
|
|
lib/readline/histexpand.c
|
|
- history_event_delimiter_chars: new (as yet undocumented) variable
|
|
containing by default characters that can delimit a history event
|
|
specifier without requiring a `:': "^$*%-" as the documentation has
|
|
always said. Fixes bug reported by Anders Granlund
|
|
<anders.granlund.0@gmail.com>
|
|
|
|
5/10
|
|
----
|
|
lib/glob/gmisc.c
|
|
- match_pattern_char, match_pattern_wchar: if passed an empty string,
|
|
return a match if the first character of the pattern is `*'
|
|
|
|
subst.c
|
|
- pat_subst: change to allow empty strings to be replaced as long as
|
|
pattern matches empty string. Report and fix from isabella parakiss
|
|
<izaberina@gmail.com>
|
|
|
|
5/12
|
|
----
|
|
lib/sh/strtrans.c
|
|
- ansic_wshouldquote: make behavior consistent in the event of an
|
|
invalid multibyte sequence: return 1 to the caller so the string
|
|
will be $'...' quoted
|
|
|
|
builtins/cd.def
|
|
- cd_builtin: print the right error message even if printable_filename
|
|
changes errno (e.g., EILSEQ)
|
|
|
|
lib/sh/shquote.c
|
|
- sh_backslash_quote: in multibyte locales, even if is_basic does not
|
|
return true, backslash-quote an ASCII character that backslash_table
|
|
says should be quoted. Part of fix for bug reported by Igor
|
|
Bogomazov <ygrex@ygrex.ru>
|
|
|
|
bashline.c
|
|
- directory_exists: new function, dequotes the string argument, removes
|
|
any trailing slash, and returns true if the result is a valid
|
|
existing filename
|
|
- bash_filename_stat_hook,bash_directory_completion_hook: use
|
|
directory_exists instead of calling lstat/stat on the quoted
|
|
directory name. Rest of fix for bug reported by Igor Bogomazov
|
|
<ygrex@ygrex.ru>
|
|
|
|
5/15
|
|
----
|
|
aclocal.m4
|
|
- BASH_CHECK_MULTIBYTE: when checking for locale_charset, add $LIBINTL
|
|
to $LIBS. If we're using the included lib/intl/libintl.a, it will
|
|
include a version of locale_charset
|
|
|
|
5/17
|
|
----
|
|
lib/readline/bind.c
|
|
- sv_isrchterm: make sure we check for v[end] == 0 while in the loop
|
|
looking for whitespace. Bug report and fix from Sergio Durigan
|
|
Junior <sergiodj@sergiodj.net>
|
|
|
|
lib/sh/shmbchar.c
|
|
- mbstrlen,mbsmbchar: move calculation of MB_CUR_MAX out of loop;
|
|
calculate it once at beginning
|
|
|
|
lib/sh/mbscmp.c
|
|
- mbscmp: move calculation of MB_CUR_MAX out of loop; calculate it once
|
|
at beginning
|
|
|
|
lib/sh/mbscasecmp.c
|
|
- mbscasecmp: move calculation of MB_CUR_MAX out of loop; calculate it
|
|
once at beginning
|
|
|
|
lib/sh/shquote.c
|
|
- sh_backslash_quote: move calculation of MB_CUR_MAX out of loop;
|
|
calculate it once at beginning
|
|
|
|
lib/sh/casemod.c
|
|
- sh_modcase: move calculation of MB_CUR_MAX out of loop; calculate it
|
|
once at beginning
|
|
|
|
subst.c
|
|
- expand_word_internal: move calculation of MB_CUR_MAX out of loops;
|
|
calculate it once at beginning of function (XXX should use
|
|
locale_mb_cur_max)
|
|
|
|
5/22
|
|
----
|
|
lib/readline/rlmbutil.h
|
|
- _rl_wcwidth: new function, short-circuits wcwidth calls for ASCII
|
|
printable characters, returns 1 for those
|
|
- WCWIDTH: call _rl_wcwidth instead of wcwidth
|
|
|
|
lib/readline/display.c
|
|
- rl_redisplay: move calculation of MB_CUR_MAX out of loop; calculate
|
|
it once at beginning. Report and patch from Ole Laursen
|
|
<ole.laursen@gmail.com>
|
|
|
|
5/24
|
|
----
|
|
lib/readline/text.c
|
|
- rl_insert: change to attempt to batch-insert pending typeahead (not
|
|
pushed input or input from a macro) that maps to rl_insert. An
|
|
attempt to suppress redisplay until readline reads all typeahead --
|
|
pasted input, for instance. Inspired by report from Ole Laursen
|
|
<ole.laursen@gmail.com>. XXX - need to make this a bindable
|
|
variable; already controlled by _rl_optimize_typeahead
|
|
|
|
lib/readline/rlprivate.h
|
|
- _rl_optimize_typeahead: extern declaration
|
|
|
|
lib/readline/doc/{hstech.texi,history.3}
|
|
- next_history: clarify under what circumstances the history offset is
|
|
incremented; suggestion from Glenn Golden <gdg@zplane.com>
|
|
|
|
print_cmd.c
|
|
- print_arith_command: should be compiled in if either DPAREN_ARITHMETIC
|
|
or ARITH_FOR_COMMAND is defined. Report from Flavio Medeiros
|
|
<flaviomotamederios@gmail.com>
|
|
|
|
flags.c
|
|
- change_flag: new variable verbose_flag, set when `v' flag modified;
|
|
sets value of echo_input_at_read correspondingly
|
|
|
|
flags.h
|
|
- verbose_flag: new extern declaration
|
|
|
|
shell.c
|
|
- long_options: --verbose now sets verbose_flag
|
|
- main: set echo_input_at_read from verbose_flag after parsing any
|
|
long options
|
|
|
|
builtins/fc.def
|
|
- fc_builtin: don't unwind-protect echo_input_at_read directly; set it
|
|
to 1 before calling fc_execute_file as before, and reset it to value
|
|
of global verbose_flag using set_verbose_flag called from an
|
|
unwind_protect. Report from isabella parakiss <izaberina@gmail.com>
|
|
|
|
builtins/shopt.def
|
|
- shopt_set_debug_mode: new function, called when the extdebug shell
|
|
option changes. Right now, it sets function_trace_mode when extdebug
|
|
is enabled, and turns off when extdebug is disabled. The
|
|
documentation has always said that shopt does this. Report from
|
|
Peng Yu <pengyu.ut@gmail.com>
|
|
|
|
5/27
|
|
----
|
|
findcmd.[ch]
|
|
- add support for EXECIGNORE shell variable, list of extglob patterns
|
|
that prevent matching filenames from being identified as executable
|
|
files
|
|
|
|
variables.c
|
|
- EXECIGNORE: arrange for findcmd.c:setup_exec_ignore to be called when
|
|
$EXECIGNORE changes
|
|
|
|
variables.h
|
|
- sv_execignore: extern declaration
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- document EXECIGNORE variable
|
|
|
|
5/28
|
|
----
|
|
lib/readline/callback.c
|
|
- rl_callback_sigcleanup: new function, cleans up and unsets any state
|
|
rl_callback_read_char uses. Intended to be used after a signal
|
|
|
|
lib/readline/signals.c
|
|
- _rl_handle_signal: call rl_callback_sigcleanup on SIGINT. Fixes bug
|
|
reported to python group by Martin Panter <vadmium+floss@gmail.com>
|
|
|
|
lib/readline/isearch.c
|
|
- _rl_isearch_cleanup: now a public function so rl_callback_cleanup can
|
|
call it
|
|
|
|
lib/readline/search.c
|
|
- _rl_nsearch_cleanup: now a public function so rl_callback_cleanup can
|
|
call it
|
|
|
|
lib/readline/rlprivate.h
|
|
- _rl_[in]search_cleanup: extern declarations
|
|
|
|
lib/readline/readline.h
|
|
- rl_callback_sigcleanup: new extern declaration
|
|
|
|
lib/readline/doc/rltech.texi
|
|
- rl_callback_sigcleanup: documented
|
|
|
|
lib/readline/readline.h
|
|
- bump readline version to 7.0 due to addition of rl_callback_sigcleanup
|
|
|
|
5/29
|
|
----
|
|
builtins/declare.def
|
|
- declare_internal: if we are trying to change attributes or value for
|
|
a nameref variable whose value points to an unset variable, make
|
|
sure we create a new variable whose name is the value of the nameref
|
|
variable. That is,
|
|
|
|
declare -n foo=bar
|
|
unset foo # unsets bar
|
|
declare -i foo
|
|
|
|
should create a (invisible) variable named `bar' with the integer
|
|
attribute. Fixes problem reported by Greg Wooledge
|
|
<wooledg@eeg.ccf.org>
|
|
|
|
builtins/set.def
|
|
- unset_builtin: if we find a nameref variable when we look it up with
|
|
find_variable (the returned variable has a name different from what
|
|
we looked up), make sure we use that new name for the rest of the
|
|
function rather than rely on unbind_variable to do the same thing as
|
|
find_variable. Fixes problem reported by Greg Wooledge
|
|
<wooledg@eeg.ccf.org>
|
|
- unset_builtin: if we try to unset a nameref variable whose value is
|
|
not a set variable, make sure we don't try to unset the nameref
|
|
itself, but rather the variable it points to. This ensures that the
|
|
following always works as it should
|
|
|
|
declare -n foo=bar
|
|
unset foo # unsets bar and leaves foo unchanged
|
|
|
|
lib/readline/funmap.c
|
|
- vi-insertion-mode: make sure it maps to rl_vi_insert_mode, which is
|
|
actually what the `i' keybinding in vi_movement_keymap maps to.
|
|
Cosmetic fix from isabella parakiss <izaberina@gmail.com>
|
|
|
|
6/2
|
|
---
|
|
general.c
|
|
- conf_standard_path: moved get_standard_path here from command.def; made
|
|
public function
|
|
|
|
general.h
|
|
- conf_standard_path: extern declaration
|
|
|
|
|
|
6/3
|
|
---
|
|
parse.y
|
|
- parse_matched_pair: make sure that command substitution constructs
|
|
within ${...} expansions are parsed as such using parse_comsub, so
|
|
the P_FIRSTCLOSE flag doesn't stop parsing if a right brace appears
|
|
within the comsub. Report from Christos Zoulas <christos@zoulas.com>
|
|
|
|
findcmd.c
|
|
- search_for_command: take two new flags for FLAGS arg: CMDSRCH_STDPATH,
|
|
which means use the command -p path, and CMDSRCH_TEMPENV, currently
|
|
unused. Existing flag value of 1 now CMDSRCH_HASH
|
|
- search_for_command: don't set `path' to NULL if it wasn't found in
|
|
the temporary environment; we can use it later
|
|
- search_for_command: look for the hashed file if temp_path == 0, not
|
|
if we set path back to 0 (or path lookup failed)
|
|
- search_for_command: just call find_user_command_in_path with a
|
|
pathlist argument that's set depending on the flags passed
|
|
- find_in_path: new function, just calls find_user_command_in_path at
|
|
this point
|
|
- search_for_command: don't put non-existent files into the hash table
|
|
|
|
findcmd.h
|
|
- CMDSRCH_*: new flags for search_for_command
|
|
- find_in_path: extern declaration
|
|
|
|
execute_cmd.c
|
|
- execute_disk_command: check for CMD_STDPATH and call search_for_command
|
|
with CMDSRCH_STDPATH if it's set
|
|
|
|
builtins/command.def
|
|
- command_builtin: if -p given without -v or -V, set the CMD_STDPATH
|
|
flag in the simple command we construct from the rest of the
|
|
argument list. This fixes the command -p cmd issue with changing
|
|
$PATH for the duration of `cmd's execution reported by
|
|
<sdowdy@rap.ucar.edu>
|
|
|
|
builtins/common.h
|
|
- CDESC_STDPATH: new flag for describe_command; means to use standard
|
|
path for command -pv or -pV
|
|
|
|
builtins/command.def
|
|
- command_builtin: if -p given with -v or -V, pass the CDESC_STDPATH
|
|
flag to describe_command
|
|
|
|
builtins/type.def
|
|
- describe_command: if given the CDESC_STDPATH flag, use find_in_path
|
|
with the conf_standard_path() result. Since `all' will never be on
|
|
with this flag, at least not yet, we can allocate and free the path
|
|
list. Fixes the bug of a temporary environment value for PATH
|
|
preceding a `command -pv' or `command -pV' persisting when the
|
|
command finishes and means we use fewer unwind-protects
|
|
|
|
6/4
|
|
---
|
|
Makefile.in (plus other Makefile.ins)
|
|
- VPATH: remove `.' from VPATH value. It's not needed any more and it
|
|
trips a GNU make 4.1 bug on Cygwin. Report and fix from Eric Blake
|
|
<eblake@redhat.com>
|
|
|
|
lib/readline/histfile.c
|
|
- history_tempfile: new function, takes history file name as template
|
|
and creates a temp file name including the PID
|
|
- history_truncate_file, history_do_write: instead of creating backup
|
|
and restoring it on failure, use history_tempfile to create a temp
|
|
file name, write to it, then rename to original history filename
|
|
(handling symlinks using history_restore()). Original report and
|
|
patch from Russell Stuart <russell-savannah@stuart.id.au>
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- ulimit: clarify that -c and -f are in increments of 512 bytes when
|
|
in posix mode. Fix from Robin Johnson <robbat2@gentoo.org> via
|
|
<vapier@gentoo.org>
|
|
|
|
6/9
|
|
---
|
|
execute_cmd.c
|
|
- execute_in_subshell: don't call restore_default_signal for the exit
|
|
trap, reset_signal_handlers already does the right thing and keeps
|
|
the trap string around; no need to kill trap string. Bug report
|
|
from Miroslav Koskar <mk@mkoskar.com>
|
|
|
|
6/11
|
|
----
|
|
nojobs.c
|
|
- find_proc_slot: now takes pid as an argument to avoid finding old
|
|
procs when pids wrap around
|
|
- add_pid: pass pid to find_proc_slot to avoid multiple instances of
|
|
the same pid in the list when pids wrap around. Fixes bug reported
|
|
by Roy Keene <rkeene@rkeene.org>
|
|
|
|
execute_cmd.c
|
|
- REAP: test for job_control == 0 also to determine whether or not
|
|
to call reap_dead_jobs, since shells without job control enabled
|
|
don't report on background process status
|
|
|
|
doc/bash.1,lib/readline/doc/hsuser.texi
|
|
- history: clarify documentation of -a option to note that it will not
|
|
append the same line to the history file more than once. Fixes
|
|
problem reported by Reuben Thomas <rrt@sc3d.org>
|
|
|
|
6/12
|
|
----
|
|
execute_cmd.c
|
|
- execute_in_subshell: don't bother decrementing subshell_level before
|
|
this returns; the caller will just exit. This means that
|
|
$BASH_SUBSHELL will have consistent values in the subshell and any
|
|
subsequent exit trap. Fixes bug reported by Miroslav Koskar
|
|
<mk@mkoskar.com>
|
|
- shell_execve: before longjmp to subshell_top_level, call reset_parser
|
|
to free up any input line and stack of pushed strings
|
|
|
|
parse.y
|
|
- mk_alexpansion: if the last character of the alias is a shell
|
|
metacharacter, don't add a space to the string following the alias
|
|
value, since that will change the meaning of the command. THIS IS
|
|
NOT BACKWARDS COMPATIBLE AND MAY REQUIRE REVERTING. Inspired by an
|
|
email message from Jilles Tjoelker <jilles@stack.nl> to austin
|
|
group
|
|
|
|
6/13
|
|
----
|
|
subst.c
|
|
- dequote_string: don't turn strings consisting of a single CTLESC
|
|
into empty strings; return them unmodified. The idea is that there
|
|
is nothing to quote. This means that something like
|
|
c=$'\001'
|
|
x=$c
|
|
results in x containing '\001' when IFS=$'\001'. See if this will
|
|
cause problems by adding a debugging statement in the code
|
|
|
|
6/15
|
|
----
|
|
parse.y
|
|
- CHECK_FOR_RESERVED_WORD: don't return ESAC when you read `esac'
|
|
after a `|' while in a case pattern list (parser_state & PST_CASEPAT).
|
|
This is Posix grammar rule 4
|
|
(http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_10_02)
|
|
|
|
6/16
|
|
----
|
|
jobs.c
|
|
- wait_for: make sure we queue SIGCHLD signals if a SIGCHLD trap
|
|
handler is running (signal_in_progress or IMPOSSIBLE_TRAP_HANDLER),
|
|
since we allow recursive trap invocations now
|
|
- wait_for: make sure we treat SIGCHLD as trapped if the trap handler
|
|
is set to IMPOSSIBLE_TRAP_HANDLER so we don't miss signals during
|
|
calls to run_sigchld_trap()
|
|
|
|
trap.c
|
|
- run_pending_traps: since we allow recursive trap handler invocations,
|
|
make sure we set pending_traps[SIGCHLD] to 0 while we mark the
|
|
signal handler in progress (SIG_INPROGRESS) and don't reset it to 0
|
|
after run_sigchld_trap returns in case more SIGCHLDs have been
|
|
queued while it's running
|
|
|
|
6/22
|
|
----
|
|
lib/readline/readline.c
|
|
- _rl_dispatch_subseq: if we shadowed any function, not just self-
|
|
insert, bind that function to the key we shadowed and dispatch on it.
|
|
This preserves and dispatches off the original key, not ANYOTHERKEY,
|
|
and makes sure we are dispatching from a keymap with the right key
|
|
binding. Fixes bug reported by Carlos Pita
|
|
<carlosjosepita@gmail.com>
|
|
|
|
6/23
|
|
----
|
|
bashline.c
|
|
- attempt_shell_completion: don't read past the end of rl_line_buffer
|
|
while skipping assignment statements before command names. Fix for
|
|
bug reported by Hanno Böck <hanno@hboeck.de>
|
|
|
|
lib/readline/parens.c
|
|
- _rl_enable_paren_matching: make paren matching work in vi insert
|
|
mode. Really, this time. Bug report from Carlos Pita
|
|
<carlosjosepita@gmail.com>
|
|
|
|
6/29
|
|
----
|
|
parse.y
|
|
- parse_comsub: when starting to parse a word, make sure that we set
|
|
lex_rwlen to 0 along with lex_wlen if we are in a position where we
|
|
can read a reserved word. Fixes bug reported by Nathan Neulinger
|
|
<nneul@neulinger.org>
|
|
|
|
6/30
|
|
----
|
|
sig.h
|
|
- include <signal.h> unconditionally and rely on guards in sig.h to
|
|
keep from including it more than once. Irix 6.5 defines SIG_DFL
|
|
in other files and defeats the test of SIG_DFL. Fixes bug
|
|
reported by Klaus Ziegler <klausz@haus-gisela.de>
|
|
|
|
alias.c
|
|
- ALIAS_HASH_BUCKETS: table size increased to 64
|
|
|
|
7/7
|
|
---
|
|
|
|
{jobs,nojobs}.c
|
|
- wait_sigint_cleanup: new function, to be called by longjmp targets
|
|
for wait_intr_buf. Performs any necessary cleanup of internal waitchld
|
|
state before going back to top level
|
|
|
|
jobs.h
|
|
- wait_sigint_cleanup: new extern declaration
|
|
|
|
builtins/wait.def
|
|
- wait_builtin: call wait_sigint_cleanup after longjmp back to
|
|
wait_intr_buf on interrupt
|
|
|
|
[bash-4.4-alpha frozen]
|
|
|
|
7/7
|
|
---
|
|
bashline.c
|
|
- attempt_shell_completion: when skipping assignment statements, don't
|
|
skip past rl_point to find the word on which to perform programmable
|
|
completion. Fixes bug reported by Hanno Böck <hanno@hboeck.de>
|
|
|
|
7/10
|
|
----
|
|
|
|
pcomplib.c
|
|
- compspec_copy: set the refcount on the copy to 1, since it's a freshly
|
|
allocated copy and there are no other pointers to it. Fixes memory
|
|
leak from gen_progcomp_completions
|
|
|
|
lib/readline/complete.c
|
|
- printable_part: if the pathname passed is just `/', just return it
|
|
instead of potentially reading before the `/'. Fixes bug reported
|
|
by Hanno Böck <hanno@hboeck.de>
|
|
|
|
7/11
|
|
----
|
|
support/man2html.c
|
|
- change calls to malloc to use xmalloc; provide standard xmalloc
|
|
definition. Report from Bill Parker <wp02855@gmail.com>
|
|
|
|
builtins/wait.def
|
|
- wait_intr_flag: set to denote validity of wait_intr_buf as target
|
|
for longjmp; reset by WAIT_RETURN macro; should always be 0 when
|
|
wait_builtin returns
|
|
|
|
quit.h
|
|
- CHECK_WAIT_INTR: now also checks wait_intr_flag to ensure valid state
|
|
of wait_intr_buf before sh_longjmp
|
|
|
|
{jobs,nojobs}.c
|
|
- wait_intr_flag: extern declaration for use by CHECK_WAIT_INTR
|
|
|
|
sig.c
|
|
- wait_intr_flag: set back to 0 every place the shell resets state after
|
|
a jump to top_level
|
|
- sigint_sighandler: only set wait_signal_received if wait_intr_flag
|
|
indicates that the wait builtin has correctly set wait_intr_buf.
|
|
Final fix for bug reported by Ondrej Oprala <ooprala@redhat.com>
|
|
|
|
subst.c
|
|
- parameter_brace_expand: fix so that ${!vvv@} is not interpreted as
|
|
introducing a `@' operator, but instead retains its meaning as all
|
|
variables whose name begins with vvv. Fixes bug reported by
|
|
konsolebox <konsolebox@gmail.com>
|
|
|
|
7/14
|
|
----
|
|
execute_cmd.c
|
|
- execute_connection: remove the fork optimization from and AND_AND
|
|
and OR_OR cases; it has trouble with `a && b && c', since the `&&'
|
|
is left-associative. Putting that code here can result in unwanted
|
|
fork optimizations since the `b' will end up as `second' on a
|
|
recursive call to execute_command. Bug reported by Mike Frysinger
|
|
<vapier@gentoo.org>
|
|
|
|
builtins/evalstring.c
|
|
- optimize_fork: moved code from execute_connection to here; checks
|
|
whether the RHS of a && or || passes the suppress_fork() tests and
|
|
turns on the NO_FORK bit if so
|
|
- parse_and_execute: if suppress_fork() tests fail, check whether the
|
|
command to be executed is a connection and attempt to optimize the
|
|
fork for the right side using optimize_fork(). The key is dealing
|
|
with the entire command passed to `bash -c' or `eval'
|
|
|
|
builtins/common.h
|
|
- optimize_fork: new extern declaration
|
|
|
|
execute_cmd.c
|
|
- execute_command_internal: enable code put in to undo redirections
|
|
before exiting the shell due to `set -e' in the case of a shell
|
|
function that gets command-not-found or a syntax error. Reported
|
|
back in May, 2014 by Mark Ferrell <major@homeonderanged.org>
|
|
|
|
bashhist.c
|
|
- bash_history_inhibit_expansion: enable change from 1/10 that skips
|
|
over history expansion character in command and process
|
|
substitution
|
|
|
|
7/15
|
|
----
|
|
lib/readline/{history,undo}.c
|
|
- replace_history_data now _hs_replace_history_data
|
|
|
|
7/16
|
|
----
|
|
lib/readline/readline.c
|
|
- make sure _rl_to_lower doesn't ever get characters that are outside
|
|
of its valid range by casting arg to unsigned char
|
|
|
|
lib/readline/colors.h
|
|
- change completion prefix color (C_PREFIX) to be the same as C_SOCK,
|
|
which is less likely to collide with file type colorings (magenta)
|
|
|
|
lib/readline/complete.c
|
|
- fnprint: now takes an additional argument: the full, expanded pathname
|
|
corresponding to the `toprint' argument
|
|
- fnprint: don't zero out prefix_bytes if we're not printing the
|
|
ellipisis but we still want to use prefix_bytes for displaying
|
|
the common prefix in a color
|
|
- print_filename: move colored-stats display responsibility into fnprint
|
|
- fnprint: change so colored-prefix and colored-stats can cooperate
|
|
and display filenames with multiple colors: one for the prefix and
|
|
one for the file type. The prefix is displayed in the prefix color
|
|
and the remainder of the pathname, if any, is displayed in the color
|
|
corresponding to the file type. Report and suggestion from Mike
|
|
Frysinger <vapier@gentoo.org>
|
|
|
|
7/17
|
|
----
|
|
lib/readline/readline.[ch]
|
|
- rl_readline_state: now unsigned long, prepare for more than 32 states
|
|
|
|
|
|
7/18
|
|
----
|
|
lib/readline/history.h
|
|
- history_offset: now declared here, was always a global variable
|
|
- copy_history_entry: now declared here, part of the public interface
|
|
- alloc_history_entry: now declared here, part of the public interface
|
|
|
|
7/20
|
|
----
|
|
lib/readline/readline.h
|
|
- RL_STATE_CHARSEARCH: new state, for vi mode character search. Was
|
|
previously handled by simply setting _rl_callback_func
|
|
|
|
lib/readline/vi_mode.c
|
|
- rl_domove_motion_callback: split into two functions, remaining code
|
|
after _rl_dispatch call goes into new function
|
|
_rl_vi_domove_motion_cleanup
|
|
- rl_vi_char_search: set RL_STATE_CHARSEARCH
|
|
- rl_vi_char_search: sets `i2' member of callback data to the key used
|
|
to invoke the char search
|
|
- _rl_vi_callback_char_search: unset RL_STATE_CHARSEARCH after reading
|
|
the character to find
|
|
- _rl_vi_domove_motion_cleanup: make sure RL_STATE_VIMOTION is unset in
|
|
all cases where this function returns
|
|
- _rl_vi_domove_motion_cleanup: use `end' member of vi motion context
|
|
as value of rl_end to restore after adding blank at end of line in
|
|
rl_domove_motion_callback; avoids need to keep `old_end' and somehow
|
|
pass it between the two functions
|
|
|
|
lib/readline/rlprivate.h
|
|
- _rl_vi_domove_motion_cleanup: new extern declaration
|
|
|
|
lib/readline/callback.c
|
|
- rl_callback_read_char: handle RL_STATE_CHARSEARCH, including case
|
|
where char search is vi motion command for d/c/y/m and RL_STATE_VIMOTION
|
|
is set when this is called. Last of set of fixes for bug reported
|
|
by Carlos Pita <carlosjosepita@gmail.com> with vi-mode `dty' command
|
|
in callback mode
|
|
|
|
7/21
|
|
----
|
|
subst.c
|
|
- command_substitute, process_substitute: add QUIT call in the child
|
|
after restoring original signal handlers to catch post-fork SIGINT
|
|
or terminating signal
|
|
|
|
jobs.c,nojobs.c
|
|
- make_child: after forking, clear interrupt_state in child
|
|
before restoring signal mask so children get their own set of
|
|
interrupts
|
|
|
|
7/22
|
|
----
|
|
lib/sh/shquote.c
|
|
- sh_double_quote: since all uses of the return value from this function
|
|
are for display and not subject to subsequent expansion, we don't
|
|
need to protect CTLESC and CTLNUL with CTLESC. Bug report and fix
|
|
from isabella parakiss <izaberina@gmail.com>
|
|
|
|
parse.y
|
|
- decode_prompt_string: need to protect literal instances of CTLESC
|
|
and CTLNUL with CTLESC, even if they are not coming out of one of
|
|
the backslash-expansions
|
|
|
|
subst.c
|
|
- make_internal_declare: fixed memory leak; make_internal_declare should
|
|
free the memory it allocates to construct the word list. From Red
|
|
Hat bug 1245233; https://bugzilla.redhat.com/show_bug.cgi?id=1245233
|
|
|
|
lib/readline/readline.c
|
|
- _rl_dispatch_subseq: when checking whether an ESC in vi insert mode
|
|
should be treated as part of a key sequence or as a single char,
|
|
make sure we are getting input from the keyboard before we check
|
|
_rl_input_queued(). If we are getting input from a macro, this
|
|
causes a needless delay. Report from Carlos Pita
|
|
<carlosjosepita@gmail.com>
|
|
|
|
7/23
|
|
----
|
|
input.c
|
|
- save_bash_input: before checking to see whether or not a new fd has a
|
|
stale associated buffer, make sure that the new fd is within bounds.
|
|
Bug report and fix from Alexey Makhalov <makhaloff@gmail.com>
|
|
|
|
|
|
7/24
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- note that the `return' builtin accepts arguments beginning with `-'
|
|
without requiring `--'
|
|
|
|
7/27
|
|
----
|
|
examples/loadables/Makefile.in
|
|
- add variables and targets to support `make install'; installs
|
|
supported builtins in $(libdir)/bash
|
|
|
|
7/28
|
|
----
|
|
lib/readline/{readline,rlprivate}.h, lib/readline/display.c
|
|
- rearrange some structure members for better alignment and to reduce
|
|
padding. Fix from <git-dpa@aegee.org>
|
|
|
|
tests/run-*
|
|
- use BASH_TSTOUT instead of hardcoded /tmp/xx as output file
|
|
|
|
trap.[ch]
|
|
- maybe_set_error_trap: set a trap for the ERR trap if it is not already
|
|
trapped; similar to maybe_set_debug_trap back from 4/10
|
|
|
|
lib/malloc/malloc.c
|
|
- internal_free: make sure `ubytes' is initialized if MALLOC_WATCH is
|
|
defined and we'll be passing it to _malloc_ckwatch. Report from
|
|
Flavio Medeiros <flaviomotamederios@gmail.com>
|
|
|
|
execute_cmd.c
|
|
- execute_function: use maybe_set_error_trap in the same way as
|
|
maybe_set_debug_trap. Fixes bug reported by David Waddell
|
|
<David.Waddell@owmobility.com>
|
|
|
|
7/29
|
|
----
|
|
jobs.c
|
|
- wait_for: no longer need to call job_signal_status when checking
|
|
whether a comsub shell reaped a child that died due to SIGINT; code
|
|
now uses child_caught_sigint
|
|
|
|
7/30
|
|
----
|
|
builtins/exec.def
|
|
- exec_builtin: after call to restore_original_signals, need to call
|
|
default_tty_job_signals to undo changes done by initialize_job_signals.
|
|
Fix for problem reported by Andreas Schwab <schwab@suse.de>
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- clarify definition of metacharacter to explicitly include newline;
|
|
prompted by report from George Gallo <georgeggallo@gmail.com>
|
|
|
|
8/3
|
|
---
|
|
lib/readline/search.c
|
|
- _rl_free_history_entry: should be void, not int. Report from
|
|
Dilyan Palauzov <dilyan.palauzov@aegee.org>
|
|
|
|
general.h
|
|
- sh_load_func_t, sh_unload_func_t: new function pointer types, used by
|
|
enable for load and unload hook functions
|
|
|
|
builtins/enable.def
|
|
- dyn_load_builtin: attempt to execute a function named
|
|
BUILTIN_builtin_load, where BUILTIN is the name of the command being
|
|
loaded. If that function returns 0, the load fails
|
|
- dyn_unload_builtin: attempt to execute a function named
|
|
BUILTIN_builtin_unload, where BUILTIN is the name of the command
|
|
being unloaded. It offers a dynamic builtin a way to clean up after
|
|
itself. Inspired by suggestion from Piotr Grzybowski
|
|
<narsil.pl@gmail.com> in response to a bug report from isabella
|
|
parakiss <izaberina@gmail.com>
|
|
|
|
8/6
|
|
---
|
|
lib/readline/colors.[ch]
|
|
- _rl_print_color_indicator: now takes `const char *' argument
|
|
|
|
lib/readline/complete.c
|
|
- colored_stat_start: now takes `const char *' argument
|
|
|
|
lib/malloc/table.h
|
|
- ma_table_t: `file' member is now `const char *'
|
|
|
|
lib/malloc/table.c
|
|
- mlocation_register_alloc: make sure variable assigned to `file' in
|
|
ma_table_t is of type `const char *'. Fixes from Dilyan Palauzov
|
|
<dilyan.palauzov@aegee.org>
|
|
|
|
lib/termcap/termcap.[ch]
|
|
- tputs: should return int instead of void
|
|
|
|
lib/readline/readline.h
|
|
- RL_STATE_DONE: correct value, avoid collision
|
|
|
|
lib/readline/vi_mode.c
|
|
- _rl_vi_redoing: now global, added _rl_ prefix to `vi_redoing'
|
|
|
|
lib/readline/readline.c
|
|
- _rl_subseq_result: call _rl_dispatch_subseq instead of rl_dispatch to
|
|
avoid changing _rl_dispatching_keymap
|
|
- _rl_subseq_result: in the -2 case, set _rl_dispatching_keymap to the
|
|
map passed as an argument. Without this, vi mode doesn't call
|
|
rl_vi_set_last when it should
|
|
- _rl_dispatch_subseq: if redoing a vi mode command with `.'
|
|
(_rl_vi_redoing != 0) in callback mode and we're indirecting into
|
|
another keymap that has shadowed the key corresponding to the command
|
|
we are redoing, just call _rl_subseq_result immediately: vi redo
|
|
doesn't need to read any additional input, and rl_vi_redo assumes
|
|
that a single call to rl_dispatch is sufficient. Fixes bug reported
|
|
by Carlos Pita <carlosjosepita@gmail.com>
|
|
|
|
8/7
|
|
---
|
|
subst.c
|
|
- parameter_brace_expand: if a substitution (parameter expansion) error
|
|
occurs, and shell_compatibility_level is <= 43, return expansion error
|
|
as in all previous versions. If shell_compatibility_level is > 43,
|
|
a posix-mode non-interactive shell will consider this a fatal error.
|
|
Problem reported by Christian Neukirchen <chneukirchen@gmail.com>
|
|
|
|
doc/bashref.texi
|
|
- documented that word expansion errors cause fatal errors in posix mode
|
|
non-interactive shells
|
|
|
|
8/8
|
|
---
|
|
subst.h
|
|
- SD_COMPLETE: skip_to_delim being called as part of word completion
|
|
- SX_COMPLETE: one of the string_extract functions being called as
|
|
part of word completion
|
|
|
|
bashline.c
|
|
- find_cmd_start,find_cmd_end,find_cmd_name: call skip_to_delim with
|
|
SD_COMPLETE flag
|
|
|
|
subst.c
|
|
- skip_double_quoted: takes new flags argument; changed callers
|
|
- skip_double_quoted: if flags argument includes SX_COMPLETE, pass it
|
|
to extract_command_subst
|
|
- extract_command_subst: if flags&SX_COMPLETE, call
|
|
extract_delimited_string instead of xparse_dolparen, since completion
|
|
may call this for unterminated command substitutions. Fixes
|
|
(imperfectly) bug reported by Ingo Ruhnke <grumbel@gmail.com>
|
|
- skip_to_delim: if passed the SD_COMPLETE flag, pass the SX_COMPLETE
|
|
flag to skip_double_quoted
|
|
- char_is_quoted: pass SX_COMPLETE flag to skip_double_quoted
|
|
- unclosed_pair: pass SX_COMPLETE flag to skip_double_quoted
|
|
|
|
8/9
|
|
---
|
|
execute_cmd.c
|
|
- time_command: catch longjmps to top_level and print command timing
|
|
statistics even after a jump to top_level. Fixes issue reported by
|
|
Sam Watkins <sam@nipl.net>
|
|
|
|
8/10
|
|
----
|
|
config-top.h
|
|
- OPENLOG_OPTS: if SYSLOG_HISTORY is defined, define to LOG_PID, so
|
|
each message is tagged with the pid
|
|
|
|
bashhist.h
|
|
- bash_syslog_history: the first time it's called, call openlog with
|
|
OPENLOG_OPTS and SYSLOG_FACILITY
|
|
|
|
8/11
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- GROUPS,FUNCNAME: change description to note that assignments are
|
|
silently ignored, but do not return an error (which would constitute
|
|
an assignment error and cause posix mode shells to abort). Problem
|
|
pointed out by Grzegorz Bajson <gbajson@gmail.com>
|
|
|
|
8/12
|
|
----
|
|
subst.c
|
|
- parameter_brace_expand_indir: if the value of the indirectly expanded
|
|
variable isn't something that the shell would expand if it were inside
|
|
${}, error out right away before calling parameter_brace_expand_word.
|
|
Fixes problem reported by isabella parakiss <izaberina@gmail.com>
|
|
- parameter_brace_expand: handle returning &expand_wdesc_error or
|
|
&expand_wdesc_fatal from parameter_brace_expand_indir in case it does
|
|
that someday
|
|
|
|
8/13
|
|
----
|
|
jobs.c
|
|
- {save,restore}_pipeline: saved_pipeline now a linked list of pipelines,
|
|
new ones allocated in save_pipeline and freed in restore_pipeline.
|
|
This allow multiple nested calls to save_pipeline (e.g., in traps
|
|
and then in process substitution). Fix for bug reported by isabella
|
|
parakiss <izaberina@gmail.com>
|
|
|
|
print_cmd.c
|
|
- named_function_string: if printing a function with the same name as a
|
|
reserved word, add the `function ' keyword before the name to avoid
|
|
parsing problems when trying to reuse it as input. Fix for bug
|
|
reported by isabella parakiss <izaberina@gmail.com>
|
|
|
|
8/14
|
|
----
|
|
lib/readline/text.c
|
|
- rl_insert: when optimizing typeahead, make sure we set rl_last_func
|
|
ourselves if we set pending input, since the mainline code path
|
|
won't set rl_last_func if input is pending. Fixes bug reported by
|
|
Hiroo Hayashi <hiroo.hayashi@computer.org>
|
|
|
|
8/15
|
|
----
|
|
builtins/type.def
|
|
- describe_command: if using the short description (CDESC_SHORTDESC) in
|
|
posix mode, describe posix special builtins as such. Requested by
|
|
Stephane Chazelas <stephane.chazelas@gmail.com>
|
|
|
|
builtins/enable.def
|
|
- BASH_LOADABLES_PATH: a colon-separated list of directories where bash
|
|
looks for loadable builtins specified as arguments to `enable -f'
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- BASH_LOADABLES_PATH: document new shell variable
|
|
|
|
configure.ac,Makefile.in,builtins/Makefile.in
|
|
- loadablesdir: set in configure, substitute into Makefiles. Reserved
|
|
for future use
|
|
|
|
8/18
|
|
----
|
|
subst.c
|
|
- shell_expand_word_list: if make_internal_declare fails, make sure to
|
|
propagate that error return back and make the assignment statement
|
|
fail. Fixes seg fault reported by Sergey Tselikh <stselikh@gmail.com>
|
|
|
|
8/20
|
|
----
|
|
builtins/declare.def
|
|
- declare_internal: made a slight tweak to the warning message about
|
|
quoted compound assignments by printing it only if the array (indexed
|
|
or assoc) does not already exist
|
|
|
|
8/21
|
|
----
|
|
braces.c
|
|
- mkseq: call strvec_dispose before throw_to_top_level if we saw SIGINT
|
|
to avoid a memory leak
|
|
|
|
trap.c
|
|
- maybe_set_return_trap: set the RETURN trap to string if it's not
|
|
already trapped, in the same way as the debug and error traps
|
|
|
|
execute_cmd.c
|
|
- execute_function: use maybe_set_return_trap to allow functions to set
|
|
return traps that persist across calls even if function tracing is
|
|
enabled
|
|
|
|
lib/readline/input.c
|
|
- rl_gather_tyi: make sure errno reset to 0 after select call, for
|
|
ioctl and read
|
|
- rl_gather_tyi: if read returns -1/EIO, return -1
|
|
- rl_read_key: if rl_gather_tyi returns -1/EIO, return READERR if in
|
|
RL_STATE_READCMD (reading command in readline_internal_char), EOF
|
|
if not (like rl_getc). Continue to return '\n' on other errors;
|
|
rl_done = 1 in any case. Fix for issue reported by
|
|
Lubomir Rintel <lkundrak@v3.sk>
|
|
|
|
lib/readline/{misc,text,vi_mode}.c
|
|
- fix return values from rl_read_key to handle < 0
|
|
|
|
8/22
|
|
----
|
|
|
|
parse.y
|
|
- parsing_redirection: macro that expands to true if the last read
|
|
token (always passed as an argument) is a redirection token that
|
|
will leave us reading a word that's the target of the redirection
|
|
- command_token_position: make sure that even if the parser state
|
|
indicates we are reading a simple command (PST_REDIRLIST), we do
|
|
not perform alias expansion on a WORD that is part of a redirection,
|
|
using parsing_redirection() to do so. Fixes but reported to Red Hat
|
|
by Robert Alm Nilsson <rorialni@gmail.com>
|
|
https://bugzilla.redhat.com/show_bug.cgi?id=795795
|
|
|
|
builtins/declare.def
|
|
- declare_internal: only print the warning now if the variable is not
|
|
already an array or if we are not creating an array with -a or -A,
|
|
cuts down the spurious warnings
|
|
- declare_internal: even if the rhs of the assignment looks like a
|
|
compound array, if we're not assigning to an existing array or we're
|
|
not creating an array, make it an array subscript assignment. This
|
|
means things like declare a[1]='(foo)' and a[1]='(foo)' behave
|
|
identically
|
|
|
|
builtins/help.def
|
|
- wdispcolumn: change use of displen and add new dispchars variable to
|
|
deal with locales where each wide character does not take up one
|
|
column position. Fix for bug reported by Mingye (Arthur) Wang
|
|
<arthur200126@hotmail.com>
|
|
|
|
8/23
|
|
----
|
|
sig.c
|
|
- sigint_sighandler: if we get a SIGINT while this_shell_builtin ==
|
|
wait_builtin, perform the special handling only if wait_intr_flag
|
|
is non-zero, don't just use it to set wait_sigint_received. This
|
|
makes sure we run bashline_set_event_hook. Fixes bug reported by
|
|
isabella parakiss <izaberina@gmail.com>
|
|
|
|
8/25
|
|
----
|
|
subst.h
|
|
- SD_HISTEXP: new flag for skip_to_delim, indicates we are looking for
|
|
the history expansion character (special double quote handling)
|
|
- skip_to_delim: handle SD_HISTEXP flag, changes double quote handling
|
|
to be similar to history library: don't call skip_double_quote, make
|
|
sure single quotes aren't special in double quotes, but continue to
|
|
skip over $(), ${}, and other similar constructs
|
|
|
|
8/27
|
|
----
|
|
support/bash.pc.in
|
|
- new file, pkgconfig template for bash, installed to support nascent
|
|
loadable builtins dev environment
|
|
|
|
examples/loadables/Makefile.inc
|
|
- new file, example Makefile with correct definitions for loadable
|
|
builtin development
|
|
|
|
configure.ac
|
|
- headersdir: directory where headers get installed to support loadable
|
|
builtin development
|
|
- examples/loadables/Makefile.inc, support/bash.pc: create
|
|
|
|
Makefile.in
|
|
- INSTALLED_HEADERS, INSTALLED_BUILTINS_HEADERS, INSTALLED_INCFILES,
|
|
CREATED_HEADERS: new variables holding names of include files to
|
|
install into $(headersdir) for loadable builtin development
|
|
- install-headers,install-headers-dirs: new targets to support
|
|
installing headers into $(headersdir) and subdirectories for loadable
|
|
builtin development
|
|
- uninstall-headers: target to uninistall headers in $(headersdir)
|
|
- uninstall: call uninstall-headers whether or not install-headers
|
|
was done; add uninstall in examples/loadables
|
|
- install: add install in examples/loadables
|
|
- clean: add clean in examples/loadables
|
|
|
|
examples/loadables/Makefile.in
|
|
- install-supported, install-unsupported: new targets, make install
|
|
chooses one based on $(SHOBJ_STATUS)
|
|
- install-supported: now cds to the top level build directory and
|
|
installs the header files
|
|
- install-supported: now installs Makefile.inc to $(loadablesdir) as
|
|
an example
|
|
- uninstall-supported,uninistall-unsupported: uninstall targets,
|
|
make uninstall chooses one based on $(SHOBJ_STATUS)
|
|
|
|
8/31
|
|
----
|
|
lib/glob/Makefile.in
|
|
- CPPFLAGS: move after ${INCLUDES} so library-specific include paths
|
|
take precedence. This is what the other parts of the shell do.
|
|
Report from Poor Yorick <org.gnu.lists.bug-bash@pooryorick.com>
|
|
|
|
builtins/read.def
|
|
- reset_alarm: cancel alarm before restoring signal handler to avoid
|
|
possible race condition. Report and fix from Oleg Popov
|
|
<dev-random@mail.ru>
|
|
|
|
subst.c
|
|
- string_extract_verbatim: if SEPARATORS is "'", don't short-circuit
|
|
to string_extract_single_quoted unless the SX_NOCTLESC flag is set.
|
|
Callers expect this function to honor CTLESC, even to quote a single
|
|
quote. Fixes bug reported by isabella parakiss <izaberina@gmail.com>
|
|
and several others
|
|
|
|
9/2
|
|
---
|
|
include/chartypes.h
|
|
- TOCTRL: handle '?' by special-casing it to 0x7f. Fixes a problem
|
|
with $'\c?' reported by Helmut Karlowski <helmut.karlowski@ish.de>
|
|
|
|
redir.c
|
|
- write_here_string: don't word-split the here string document. The
|
|
bash documentation has always said this doesn't happen, even though
|
|
bash has done so for years, and other shells that implement here-
|
|
strings don't perform any word splitting. The practical effect is
|
|
that sequences of IFS characters are collapsed to spaces. Fixes
|
|
bug reported by Clint Hepner <clint.hepner@gmail.com>
|
|
|
|
9/3
|
|
---
|
|
doc/{bash.1,bashref.texi}
|
|
- add \? to the list of backslash escapes expanded by $'...' ANSI-C
|
|
quoting. It was expanded but not documented
|
|
|
|
lib/readline/util.c
|
|
- _rl_audit_tty: updated from Red Hat patch
|
|
|
|
lib/readline/readline.c
|
|
- HAVE_DECL_AUDIT_USER_TTY: correct #define check
|
|
|
|
9/13
|
|
----
|
|
shell.c
|
|
- read_from_stdin: make sure value set to 1 appropriately if the shell
|
|
is reading from standard input, as Posix seems to specify (?)
|
|
|
|
lib/readline/kill.c
|
|
- _rl_copy_to_kill_ring: don't assume that rl_kill_ring has been
|
|
allocated if _rl_last_command_was_kill is non-zero; make sure it's
|
|
non-null before indexing into it
|
|
|
|
9/15
|
|
----
|
|
variables.c
|
|
- initialize_shell_variables: cope with a NULL env pointer. Fixes bug
|
|
reported by ziyunfei <446240525@qq.com>
|
|
|
|
9/16
|
|
----
|
|
builtins/exec.def
|
|
- exec_builtin: if -c is supplied, pass an empty array instead of a NULL
|
|
pointer to shell_execve
|
|
|
|
variables.c
|
|
- set_pwd: only believe $PWD if it begins with a slash; try to
|
|
canonicalize it and set it to physical path if canonicalization fails.
|
|
Reported by ziyunfei <446240525@qq.com>
|
|
|
|
9/17
|
|
----
|
|
subst.c
|
|
- do_compound_assignment: make sure to dispose of word list generated
|
|
by expand_compound_array_assignment; fixes memory leak reported in
|
|
https://bugzilla.redhat.com/show_bug.cgi?id=1264101
|
|
|
|
variables.c
|
|
- adjust_shell_level: clamp the value of shell_level at 1000 and reset
|
|
there, instead of > 1000, since the itos replacement code doesn't
|
|
handle the value 1000. Fixes bug reported by ziyunfei
|
|
<446240525@qq.com>
|
|
|
|
shell.h,parse.y
|
|
- save_parser_state,restore_parser_state: now save and restore
|
|
redir_stack, short-circuiting if need_here_doc == 0. If we save a
|
|
non-zero value for need_here_doc, we have to make sure there is
|
|
something valid for gather_here_documents to work on. Fixes bug
|
|
reported by Brian Carpenter <brian.carpenter@gmail.com>
|
|
|
|
9/18
|
|
----
|
|
array.c
|
|
- array_to_assign: use ansic_shouldquote to check whether each element
|
|
value contains non-printable characters and use ansic_quote to
|
|
generate the value instead of using sh_double_quote unconditionally
|
|
|
|
assoc.c
|
|
- assoc_to_assign: if either the key or the value of an associative
|
|
array element contains non-printable characters (ansic_shouldquote
|
|
returns true), use ansic_quote to quote them instead of using double
|
|
quotes unconditionally
|
|
|
|
9/19
|
|
----
|
|
subst.c
|
|
- pat_subst: handle REP being NULL. Fixes bug reported by Brian
|
|
Carpenter <brian.carpenter@gmail.com>
|
|
|
|
builtins/evalstring.c
|
|
- parse_string: if we get a longjmp to top_level with DISCARD as the
|
|
code (in which case we are going to go on), return -DISCARD to our
|
|
caller (always xparse_dolparen) after doing our own cleanup instead
|
|
of calling jump_to_top_level
|
|
|
|
parse.y
|
|
- xparse_dolparen: if parse_string returns < 0, do the appropriate
|
|
cleanup and then jump_to_top_level with the negative of the return
|
|
value. This allows us to do the appropriate parser cleanup in
|
|
case we're not going to exit the shell. Fixes bug reported by Brian
|
|
Carpenter <brian.carpenter@gmail.com>
|
|
|
|
subst.c
|
|
- extract_delimited_string: if a recursive call to one of the extract_
|
|
functions or a call to ADVANCE_CHAR leaves i past the end of the
|
|
string, cut the loop off at the end of the string. Fixes bug
|
|
reported by Brian Carpenter <brian.carpenter@gmail.com>
|
|
|
|
9/20
|
|
----
|
|
subst.c
|
|
- get_var_and_type: return appropriate values if variable indirection
|
|
results in a NULL variable. Fixes bug reported by Brian Carpenter
|
|
<brian.carpenter@gmail.com>
|
|
|
|
lib/readline/history.c
|
|
- history_get_time: handle strtol overflows caused by malicious
|
|
modifications to timestamps in the history file. Fixes issue
|
|
reported by rens@endoria.net
|
|
|
|
9/21
|
|
----
|
|
lib/readline/rlconf.h
|
|
- ENABLE_AUDIT_TTY_SUPPORT: now undefined (off) by default
|
|
|
|
9/24
|
|
----
|
|
jobs.c
|
|
- waitchld: if we get a SIGINT while waiting for a child to exit, but
|
|
the kernel doesn't interrupt the waitpid(2) call, assume the child
|
|
caught SIGINT if it exited for some reason other than SIGINT. Fix
|
|
suggested by Stephane Chazelas <stephane.chazelas@gmail.com>
|
|
|
|
input.c
|
|
- make_buffered_stream: use B_TEXT in buffered stream flags instead
|
|
of (typo) O_TEXT. Report and fix from Eric Blake <eblake@redhat.com>
|
|
|
|
9/27
|
|
----
|
|
execute_cmd.c
|
|
- shell_execve: call reset_parser before calling initialize_subshell,
|
|
which calls delete_all_aliases. reset_parser wants to free the
|
|
pushed string list, which has pointers back into the alias table
|
|
(use after free)
|
|
- execute_simple_command: if we fork for an async command, make sure
|
|
the child process increments shell_level before performing any
|
|
word expansions, so $BASH_SUBSHELL is incremented. Fixes issue
|
|
reported by ziyunfei <446240525@qq.com>
|
|
|
|
10/1
|
|
----
|
|
builtins/kill.def
|
|
- kill_builtin: make -L equivalent to -l for compatibility with other
|
|
(Linux) versions of kill
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- kill: document new `-L' option
|
|
|
|
10/2
|
|
----
|
|
[bash-4.4-beta frozen]
|
|
|
|
10/5
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- LC_TIME: document that the shell recognizes it and calls setlocale
|
|
when it changes; and that the shell uses it for time formatting
|
|
|
|
10/6
|
|
----
|
|
subst.c
|
|
- skip_single_quoted: now takes an additional `flags' argument, like
|
|
skip_double_quoted; changed callers
|
|
- skip_single_quoted: now pays attention to SX_COMPLETE flag, allows
|
|
backslash to escape single quote, like $'...' allows
|
|
- skip_to_delim: added case where we are completing and we are
|
|
skipping over a $'...' string to call skip_single_quoted with
|
|
SX_COMPLETE flag to allow backslash to quote single quote. Fixes
|
|
bug reported by Daniel Colascione <dancol@dancol.org>
|
|
- char_is_quoted: make analogous changes to handle $'...' so we can
|
|
accommodate $'ab \' cd'
|
|
|
|
10/11
|
|
-----
|
|
subst.c,bashjmp.h
|
|
- no_longjmp_on_fatal_error: now global so other parts of the shell can
|
|
use it
|
|
|
|
arrayfunc.c
|
|
- expand_array_index: if no_longjmp_on_fatal_error is non-zero, don't
|
|
longjmp to top_level, just return 0. Fixes bug reported by
|
|
isabella parakiss <izaberina@gmail.com>
|
|
|
|
subst.c
|
|
- CQ_RETURN: restore old value of no_longjmp_on_fatal_error (oldjmp);
|
|
make sure all callers (skip_matched_pair, skip_to_delim,
|
|
char_is_quoted) save no_longjmp_on_fatal_error to oldjmp before
|
|
setting it to 1
|
|
|
|
expr.c
|
|
- expr_streval: if longjmping after an unbound variable error, jump
|
|
back to expr toplevel (evalbuf) if no_longjmp_on_fatal_error is set
|
|
in an interactive shell
|
|
|
|
variables.c
|
|
- push_func_var: if pushing an array variable, such as when a variable
|
|
in the temporary environment is promoted to an array by mapfile when
|
|
the shell is in posix mode (so variable assignments preceding special
|
|
builtins or shell functions persist in the shell environment after
|
|
the builtin returns), make sure to copy the array or hash table so
|
|
the variable is duplicated correctly. Fixes seg fault reported by
|
|
Linda Walsh <bash@tlinx.org>
|
|
|
|
10/13
|
|
-----
|
|
variables.c
|
|
- initialize_shell_variables: add call to sv_shcompat, so BASH_COMPAT
|
|
can be set in the initial environment
|
|
|
|
execute_cmd.c
|
|
- execute_function: set loop_level to 0 only if shell_compatibility_level
|
|
is greater than bash-4.3; this was kind of an incompatible change.
|
|
Report from Carlos Pita <carolosjosepita@gmail.com>
|
|
|
|
COMPAT,doc/{bash.1,bashref.texi}
|
|
- compat43: added loop_level changes to description
|
|
|
|
10/15
|
|
-----
|
|
lib/sh/casemod.c,lib/readline/display.c
|
|
- make sure mb_cur_max variable is defined outside of HANDLE_MULTIBYTE
|
|
if it's used outside HANDLE_MULTIBYTE. Fixes from Greg Wooledge
|
|
<wooledg@eeg.ccf.org>
|
|
|
|
support/Makefile.in
|
|
- bash.pc: remove as part of distclean, not clean. Report from Andreas
|
|
Schwab <schwab@linux-m68k.org>
|
|
|
|
10/17
|
|
-----
|
|
subst.c
|
|
- array_var_assignment: make sure to call quote_string or quote_escapes
|
|
on the assignment string, so spaces in the assignment survive word
|
|
splitting. Fixes bug reported by isabella parakiss
|
|
<izaberina@gmail.com>
|
|
|
|
10/20
|
|
-----
|
|
doc/{bash.1,bashref.texi}
|
|
- word splitting: make sure that newline is listed as one of the IFS
|
|
whitespace characters. Fixes omission reported by ziyunfei
|
|
<446240525@qq.com>
|
|
|
|
lib/readline/histfile.c
|
|
- history_do_write: make sure that we only create and use the tempfile
|
|
if the history file exists and is a regular file. Reported several
|
|
times, most recent check the result of a report from
|
|
<marko.teiste@gmail.com>
|
|
|
|
10/22
|
|
-----
|
|
jobs.c
|
|
- delete_all_jobs: if running_only == 0, we are eventually going to
|
|
clear the bgpids list, so don't bother to add pids to it in
|
|
delete_job (call with DEL_NOBGPID flag if running_only == 0)
|
|
|
|
10/24
|
|
-----
|
|
jobs.[ch]
|
|
- bgpids: new implementation from a patch from John Fremlin
|
|
<john@fb.com>, uses an array for the list of the last CHILD_MAX
|
|
terminated background pids, and a separate hash table to search it.
|
|
The storage can be freed as a unit, and the size of the hash table
|
|
(currently 4096) is independent of the size of the bgpids table
|
|
|
|
subst.c
|
|
- inherit_errexit: new variable to control whether or not command
|
|
substitution inherits the -e (errexit) option. Disabled by default
|
|
|
|
general.c
|
|
- posix_initialize: set inherit_errexit = 1 when Posix mode is enabled
|
|
|
|
builtins/shopt.def
|
|
- inherit_errexit: new shell option, tracks value of inherit_errexit,
|
|
allows command substitution to inherit the setting of errexit without
|
|
posix mode. From a request and patch submitted by Christoph Gysin
|
|
<christoph.gysin@gmail.com>
|
|
|
|
{version,version2}.c
|
|
- use #if HAVE_SNPRINTF instead of #if defined in case configure
|
|
decides to #define it to 0. Fixes problem reported by Klaus Ziegler
|
|
<klausz@haus-gisela.de>
|
|
|
|
configure.ac
|
|
- when checking for sys/resource.h, make sure to include <sys/time.h>
|
|
for the benefit of both old systems that require it and new versions
|
|
of autoconf that require a header file to compile to report its
|
|
presence. Reported by Klaus Ziegler <klausz@haus-gisela.de>
|
|
|
|
10/26
|
|
-----
|
|
subst.h
|
|
- SD_ARITHEXP: new flag value for skip_to_delim, supports parsing
|
|
arithmetic expressions in parameter expansions
|
|
|
|
subst.c
|
|
- skip_to_delim: handle SD_ARITHEXP flag by skipping parentheses for
|
|
subexpressions and allowing ?: expression to not terminate an
|
|
arithmetic expression delimited by `:'
|
|
- skiparith: just call skip_to_delim with the SD_ARITHEXP option and
|
|
the right delimiter string and return the right result. Fixes bug
|
|
reported by <grishalevit@gmail.com>
|
|
|
|
include/shmbchar.h
|
|
- strip out everything except what is needed to support is_basic and
|
|
similar functions, since the mbchar_t typedef apparently conflicts
|
|
with some AIX-specific type definition. Problem reported by
|
|
Michael Felt <aixtools@gmail.com>
|
|
|
|
10/27
|
|
-----
|
|
builtins/{set,ulimit}.def
|
|
- {set,ulimit}_builtin: make sure that --help is treated the same as
|
|
-? and prints a message and returns. Fixes bug reported by ziyunfei
|
|
<446240525@qq.com>
|
|
|
|
builtins/*.def
|
|
- make sure to consistently use builtin_help() instead of mix of that
|
|
function and builtin_usage()
|
|
|
|
10/29
|
|
-----
|
|
doc/{bash.1,bashref.texi}
|
|
- BASH_CMDS, BASH_ALIASES: note that removing elements from these
|
|
array variables is not currently reflected in the command hash
|
|
table and alias list, respectively. Reported by isabella parakiss
|
|
<izaberina@gmail.com>
|
|
|
|
10/30
|
|
-----
|
|
eval.c
|
|
- reader_loop: if PS0 is set in an interactive shell, expand and
|
|
display it after reading a (complete) command but before executing
|
|
it. This differs from the DEBUG trap because the DEBUG trap is
|
|
executed once for each simple command (and some others, like each
|
|
time through a for loop). From a patch submitted by Dan Stromberg
|
|
<dstromberglists@gmail.com>
|
|
|
|
parse.y
|
|
- prompt_again: set ps0_prompt from $PS0 in an interactive shell
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- PS0: document new prompt string
|
|
|
|
11/3
|
|
----
|
|
subst.c
|
|
- cond_expand_node: if special > 0, remove quoted nulls from the word
|
|
list, since no word splitting takes place. Fixes bug reported by
|
|
Corentin Peuvrel <cpeuvrel@pom-monitoring.com>
|
|
|
|
11/4
|
|
----
|
|
doc/{bash.1,builtins.texi}
|
|
- inherit_errexit: add to shopt description; modify Posix mode
|
|
description
|
|
|
|
11/9
|
|
----
|
|
lib/readline/util.c
|
|
- rl_tilde_expand: fix out-of-bounds read caused when this function
|
|
is invoked with rl_point == 0. Bug reported by Hanno Böck
|
|
<hanno@hboeck.de>
|
|
|
|
11/11
|
|
-----
|
|
{nojobs,jobs}.c
|
|
- get_original_tty_job_signals: force the original signal disposition
|
|
for SIGTSTP/SIGTTIN/SIGTTOU to SIG_DFL in interactive shells. This
|
|
will force child processes to get SIG_DFL even if the shell is
|
|
started with those signals ignored. From a bug report from
|
|
Keith Thompson <keithsthompson@gmail.com>
|
|
|
|
11/13
|
|
-----
|
|
make_cmd.c
|
|
- make_function_def: if a function is being defined without a source
|
|
file, and the shell has not been initialized, assume that the
|
|
function is being imported from the environment and set the
|
|
source_file struct member to "environment". Set to "main" if the
|
|
shell has been initialized. Fixes bug reported on savannah by
|
|
Arno-Can Uestuensoez
|
|
https://savannah.gnu.org/support/index.php?108903
|
|
|
|
subst.c
|
|
- skip_to_delim: if the shell is in posix mode (posixly_correct != 0)
|
|
and performing history expansion ((flags & SD_HISTEXP) != 0), allow
|
|
double quotes to quote the history expansion character. TENTATIVE
|
|
CHANGE, inspired by
|
|
https://savannah.gnu.org/support/index.php?108491
|
|
|
|
11/14
|
|
-----
|
|
jobs.c
|
|
- wait_for: modify change from 4/23 to only give the terminal to
|
|
shell_pgrp if not running in the background and subshell_environment
|
|
indicates we're not in a pipeline and not an async command. Fixes
|
|
bug reported by konsolebox <konsolebox@gmail.com>
|
|
|
|
11/16
|
|
-----
|
|
doc/{bash.1,bashref.texi}
|
|
- document new posix-mode behavior of not giving ! special meaning
|
|
within double quotes, even if histexpand is enabled
|
|
|
|
11/17
|
|
-----
|
|
builtins/evalfile.c
|
|
- fc_execute_file: pass FEVAL_BUILTIN flag to _evalfile so it returns
|
|
the value of parse_and_execute after executing the commands in the
|
|
file. Fixes bug reported by Chris Marusich <cmmarusich@gmail.com>
|
|
|
|
11/20
|
|
-----
|
|
subst.c
|
|
- process_substitute: don't unconditionally set pipeline_pgrp to
|
|
shell_pgrp; do that only if pipeline_pgrp == 0 (we haven't forked
|
|
yet) or if we know we haven't forked for a command, a pipeline,
|
|
or an async command. Fixes bug reported by
|
|
<gnu.20.drkshadow@spamgourmet.com>
|
|
as https://savannah.gnu.org/support/index.php?108593
|
|
|
|
11/24
|
|
-----
|
|
variables.c
|
|
- set_pwd: inherit the value of OLDPWD from the initial environment
|
|
if it names a directory. From a report from John Wiersba
|
|
<jrw32982@yahoo.com>
|
|
|
|
builtins/set.def
|
|
- -T: fix help text to note that the DEBUG and RETURN traps are both
|
|
inherited if this is set. Report from Grisha Levin
|
|
<grishalevit@gmail.com>
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- HISTIGNORE,GLOBIGNORE: note that the pattern matching is subject to
|
|
the setting of the `extglob' variable. Clarification raised by
|
|
Aharon Robbins <arnold@skeeve.com>
|
|
|
|
builtins/jobs.def,doc/{bash.1,bashref.texi}
|
|
- disown: add text to synopsis making it clear that disown takes a
|
|
pid argument. From a report from Matthew Stanfield
|
|
<matthew@i-dig.info>
|
|
|
|
findcmd.c,doc/{bash.1,bashref.texi}
|
|
- EXECIGNORE: change pattern matching to use FNMATCH_EXTFLAG like other
|
|
IGNORE variables. From a report from Aharon Robbins <arnold@skeeve.com>
|
|
|
|
trap.c
|
|
- _run_trap_internal: make sure to catch and use return values supplied
|
|
as arguments to `return'; instead of just catching return, make sure
|
|
we use return_catch_value as well. Fixes bug reported by
|
|
Grisha Levit <grishalevit@gmail.com>, affects RETURN, DEBUG, ERROR
|
|
traps
|
|
|
|
11/30
|
|
-----
|
|
lib/readline/display.c
|
|
- rl_redisplay: fix code that deals with prompts that contain
|
|
multibyte characters whose physical length is longer than the screen
|
|
width (so the prompt line wraps) to deal with invisible characters
|
|
in the prompt and set the inv_lbreaks offsets correctly and set
|
|
lpos appropriately
|
|
- _rl_move_cursor_relative: always called with either visible line or
|
|
invisible line. Decide whether we are being called with the invisible
|
|
line (or a portion thereof) as the DATA argument; make sure to account
|
|
for invisible characters in the last line of the prompt by offsetting
|
|
the desired buffer offset (NEW) by where DATA starts in invisible line
|
|
and checking whether that is past the last invisible character in
|
|
the prompt
|
|
- _rl_move_cursor_relative: do the same for the visible line by using
|
|
the visible line lbreaks array instead of _rl_screenwidth, since
|
|
that fails in the presence of multibyte characters (buffer offset
|
|
vs. physical screen position). These fix bug with prompts with
|
|
multibyte characters and invisible characters that are longer than
|
|
the screen width reported by Ryo Furue <ryofurue@gmail.com>
|
|
|
|
12/1
|
|
----
|
|
parse.y,make_cmd.c
|
|
- here_doc_first_line: new variable, set to non-zero to indicate the
|
|
first line of possibly multiple here documents associated with the
|
|
current command. Set in parse.y:gather_here_documents() before
|
|
reading any here documents, set to 0 after reading the first line
|
|
of any here document in make_cmd.c:make_here_document().
|
|
|
|
parse.y
|
|
- history_delimiting_chars: if parser_state indicates we are reading
|
|
a here document, don't use current_command_line_count to see whether
|
|
or not we're on the first line of a here document -- it can be fooled
|
|
by multi-line commands (or even backslash-escaped newlines). Use
|
|
here_doc_first_line to check that directly. Fixes bug reported by
|
|
Geoffrey Allott <geoffrey@allott.email>
|
|
|
|
shell.h,parse.y
|
|
- save and restore here_doc_first_line as part of the shell's parser
|
|
state
|
|
|
|
lib/sh/tmpfile.c
|
|
- use ANSI-C rand() interface if random() not available. Fixes problem
|
|
with linking on (ancient) Solaris 2.4 reported by Klaus Ziegler
|
|
<klausz@haus-gisela.de>
|
|
|
|
12/2
|
|
----
|
|
aclocal.m4
|
|
- RL_LIB_READLINE_VERSION: if cross-compiling, assume current version
|
|
of readline if cross-compiling bash while using an external readline
|
|
library. Fix from Barry Davis <barry_davis@stormagic.com>
|
|
|
|
execute_cmd.c
|
|
- execute_builtin: save and restore value of builtin_ignoring_errexit
|
|
instead of assuming we can set it back to 0 -- the ignore-errexit
|
|
cases might be nested
|
|
- execute_builtin: after a builtin executes and eval_unwind is set,
|
|
set exit_immediately_on_error to 0 if builtin_ignoring_errexit is
|
|
set, and back to the value of errexit otherwise, just like the
|
|
code that sets -e does. Fixes short-circuiting bug reported by
|
|
Marcin Swigon <swigon.mar@gmail.com>
|
|
|
|
12/5
|
|
----
|
|
builtins/setattr.def
|
|
- set_or_show_attributes: instead of using a fixed string for the
|
|
options argument to `declare', which results in export adding the
|
|
readonly attribute, build the option string dynamically like in
|
|
subst.c:shell_expand_word_list()
|
|
- set_or_show_attributes: don't add the -r option to declare if the
|
|
attribute passed as an argument doesn't include att_readonly; add
|
|
-x if the attribute includes att_exported
|
|
- set_or_show_attributes: add the -g option to declare so readonly
|
|
and export in functions that go through this code path don't create
|
|
local variables. Part of fix for bug reported by ziyunfei
|
|
<446240525@qq.com>
|
|
|
|
execute_cmd.c
|
|
- make_internal_declare: if we have an assignment builtin that isn't
|
|
supposed to create local variables (export/readonly), make sure to
|
|
add the W_ASSNGLOBAL flag to each assignment statement word.
|
|
Part of fix for bug reported by ziyunfei <446240525@qq.com> where
|
|
readonly can create local variables when invoked with a compound
|
|
array assignment as an argument within a shell function
|
|
|
|
subst.c
|
|
- make_internal_declare: added third argument: command name. Not used
|
|
in any useful way yet
|
|
- do_compound_assignment: handle attempted assignments to readonly
|
|
variables and print error messages, like bind_variable does and the
|
|
callers expect. This means that assignments to readonly array
|
|
variables can't go through a code path that allows them to fail
|
|
silently
|
|
|
|
doc/Makefile.in
|
|
- uninstall: run install-info --delete after removing the installed
|
|
info file to update the directory file
|
|
|
|
execute_cmd.c
|
|
- execute_disk_command: since we still (and have always) perform
|
|
redirections in child processes, we need to mark that state so
|
|
we know that we're in a child process. subshell_performing_redirections
|
|
is the new variable; non-zero when executing do_redirections()
|
|
|
|
subst.c
|
|
- process_substitute: if we are executing process substitution in a
|
|
redirection expansion context (expanding_redir == 1), the child
|
|
process should not have access to any temporary environment the
|
|
parent has. Call flush_tempenv() in the child process to get rid
|
|
of it. Fix for bug reported by Clint Hepner <clint.hepner@gmail.com>
|
|
|
|
12/9
|
|
----
|
|
jobs.c
|
|
- waitchld: if in posix mode and attempting to let SIGCHLD interrupt the
|
|
wait builtin, make sure wait_intr_flag is non-zero before trying to
|
|
longjmp to wait_intr_buf. Fixes bug reported by Aharon Robbins
|
|
<arnold@skeeve.com>
|
|
|
|
12/10
|
|
-----
|
|
lib/readline/display.c
|
|
- update_line: if a prompt containing invisible characters changes,
|
|
and the change is within the prompt string, we need to redraw the
|
|
entire prompt. After that redraw, if the cursor position is after
|
|
the first index where the old and new lines differ, we can short-
|
|
circuit the update if the line length stays the same
|
|
- update_line: if we redraw the entire prompt string because the prompt
|
|
contains invisible characters and the first difference is in the
|
|
middle of the prompt, we possibly need to adjust our idea of the
|
|
first differing character in the old and new lines. We punt and do
|
|
a dumb update in this case. Fixes bug with dynamic vi-mode mode
|
|
strings containing invisible characters reported by Dylan Cali
|
|
<calid1984@gmail.com>
|
|
|
|
12/11
|
|
-----
|
|
lib/readline/display.c
|
|
- update_line: if we move up to a new screen line, we need to recompute
|
|
the number of invisible characters on the new current line
|
|
(visible_wrap_offset). Fixes bug reported to bug-readline by
|
|
Per Bothner <per@bothner.com>
|
|
- update_line: update code that attempts to compute where we are in
|
|
the new line buffer. Fixes `vt100' bug reported to bug-readline by
|
|
Per Bothner <per@bothner.com>
|
|
|
|
12/18
|
|
-----
|
|
execute_cmd.c
|
|
- execute_function: unwind-protect and restore BASH_ARGC and BASH_ARGV
|
|
- restore_funcarray_state: now global
|
|
|
|
execute_cmd.h
|
|
- make func_array_state type global, add extern function declaration
|
|
for restore_funcarray_state
|
|
|
|
builtins/evalfile.c
|
|
- _evalfile: use restore_funcarray_state and pop_args as unwind-protects
|
|
to restore BASH_{SOURCE,LINENO,ARGC,ARGV} and FUNCNAME on interrupts.
|
|
Fixes bug reported back on 11/10 by Grisha Levit
|
|
<grishalevit@gmail.com>
|
|
|
|
12/20
|
|
-----
|
|
lib/readline/isearch.c
|
|
- _rl_isearch_dispatch: after removing the only character from the
|
|
search string with DEL, leaving the search string empty, don't match
|
|
the previous line if we didn't have a match before
|
|
|
|
12/22
|
|
-----
|
|
bashhist.c
|
|
- enable_history_list,remember_on_history: initialize to 0 instead of 1
|
|
|
|
shell.c
|
|
- init_interactive,init_interactive_script: set enable_history_list and
|
|
remember_on_history to 1 (defaults)
|
|
|
|
12/23
|
|
-----
|
|
variables.c
|
|
- initialize_shell_variables: don't inherit PS4 from the environment
|
|
if the shell is running with euid == 0; just reset it to `+ '. This
|
|
is a known potential vulnerability, since PS4 expansion performs
|
|
command substitution in the root shell's context before displaying
|
|
it. Discussion started by up201407890@alunos.dcc.fc.up.pt
|
|
|
|
bashhist.c
|
|
- bash_history_reinit: initialize remember_on_history to the value of
|
|
enable_history_list (set -o history). Fixes bug reported by
|
|
Stephane Chazelas <stephane.chazelas@gmail.com> with command-line
|
|
option `-o history' not having any effect
|
|
|
|
12/28
|
|
-----
|
|
lib/readline/{history.h,histfile.c}
|
|
- history_file_version: new int variable, reserved for future use
|
|
- history_multiline_entries: new int variable, can be set by the
|
|
calling application to enable reading multi-line history entries
|
|
from the history file (currently undocumented)
|
|
|
|
lib/readline/history.c
|
|
- _hs_append_history_line: new function, append a line passed as an
|
|
argument to a specified history entry, used to create multi-line
|
|
history entries
|
|
|
|
lib/readline/histfile.c
|
|
- read_history_range: implement a heuristic that temporarily sets the
|
|
history comment character if the first line read from the history
|
|
file looks like it has is a timestamp (#[:digit:]) so we can read
|
|
timestamps from the history file properly. Originally reported
|
|
back in March 2015 by Christoph Anton Mitterer <calestyo@gmail.com>
|
|
- read_history_range: make sure history_multiline_entries is non-zero
|
|
if the history file looks like it has timestamps
|
|
- read_history_range: if we think we have a history file with timestamps
|
|
and we read more than one non-timestamp consecutive history lines,
|
|
assume they are part of a single multi-line history entry and paste
|
|
them together using _hs_append_history_line. Feature most recently
|
|
requested by james harvey <jamespharvey20@gmail.com>, also suggested
|
|
by Christoph Anton Mitterer <calestyo@gmail.com>
|
|
|
|
examples/loadables/setpgid.c
|
|
- setpgid: new loadable builtin, originally contributed by Jason
|
|
Vas Dias <jason.vas.dias@gmail.com>
|
|
|
|
12/29
|
|
-----
|
|
bashhist.c
|
|
- bash_history_inhibit_expansion: fix cases where a history expansion
|
|
should be skipped because it's in a command or process substitution
|
|
but there is another history expansion preceding the substitution
|
|
on the command line. Don't let the previous history expansion fool
|
|
the function into saying the command substitution history expansion
|
|
should be performed
|
|
|
|
builtins/evalstring.c
|
|
- parse_prologue: always unwind-protect history_expansion_inhibited,
|
|
since history expansion can be enabled in non-interactive shells,
|
|
and calling eval once in a non-interactive shell inhibits history
|
|
expansion forever even if `set -o histexpand' was run before the
|
|
eval
|
|
|
|
builtins/common.h
|
|
- SEVAL_NOHISTEXP: new flag for parse_and_execute/parse_string; means
|
|
to not perform history expansion (decouple from SEVAL_NOHIST, which
|
|
now means to not remember commands on history); changed all callers
|
|
that had SEVAL_NOHIST to have SEVAL_NOHIST|SEVAL_NOHISTEXP
|
|
|
|
builtins/evalstring.c
|
|
- parse_prologue: instead of calling bash_history_disable, set
|
|
remember_on_history to 0 if SEVAL_NOHIST and history_expansion_inhibited
|
|
to 1 if SEVAL_NOHISTEXP
|
|
|
|
12/30
|
|
-----
|
|
subst.c
|
|
- skip_to_histexp: new function, a stripped-down version of skip_to_delim.
|
|
Used to skip to the next unquoted instance of the history expansion
|
|
character, handles peculiar quoting and command/process substitution
|
|
requirements. Better fix for bug reported by
|
|
Zigmund.Ozean@zig-home.localdomain back in January, prompted by report
|
|
from Keith Thompson <keithsthompson@gmail.com>
|
|
|
|
bashhist.c
|
|
- bash_history_inhibit_expansion: use skip_to_histexp instead of
|
|
skip_to_delim
|
|
|
|
subst.c
|
|
- parameter_brace_expand_rhs: if the rhs of an expansion is "$@" and
|
|
IFS is null, we need to separate the (quoted) positional parameters
|
|
in the returned word with a space, and mark the word as needing to
|
|
be split on spaces (W_SPLITSPACE). Fix for issues reported back in
|
|
October 2014 as the result of an austin-group discussion, and just
|
|
re-reported by Martijn Dekker <martijn@inlv.org>
|
|
|
|
1/4/2016
|
|
--------
|
|
execute_cmd.c
|
|
- execute_simple_command: if autocd is set, invoke a function named
|
|
`cd' if one exists, instead of the shell builtin. Feature requested
|
|
by transl8czech@gmail.com
|
|
|
|
builtins/mkbuiltins.c
|
|
- if a command's short description is the same as its name (e.g., `true'),
|
|
don't mark the short doc to be translated. Report and fix from
|
|
Benno Schulenberg <bensberg@justemail.net>
|
|
|
|
1/6
|
|
---
|
|
subst.c
|
|
- command_substitute,process_substitute: before replacing the file
|
|
descriptor underlying stdout (fd 1), make sure to purge any pending
|
|
stdio output that hasn't been written successfully, even after a
|
|
call to fflush(). Fixes bug reported by cks@cs.toronto.edu
|
|
|
|
1/7
|
|
---
|
|
builtins/{echo,printf}.def
|
|
- echo_builtin,printf_builtin: don't use terminate_immediately; use
|
|
calls to QUIT in the body of the print loop after writes and flushes.
|
|
Fixes problem with running the signal handler and exit trap in a
|
|
signal context and other bug reported by cks@cs.toronto.edu
|
|
|
|
builtins/common.c
|
|
- sh_chkwrite: put in calls to QUIT to catch signals that interrupt
|
|
writes
|
|
|
|
shell.c
|
|
- get_current_user_info: protect endpwent() with #ifdef HAVE_GETPWENT.
|
|
Fixes bug reported by pb <p-bauer-schriesheim@t-online.de>
|
|
|
|
1/8
|
|
---
|
|
lib/readline/bind.c
|
|
- _rl_init_file_error: now a varargs function so it can take format
|
|
strings and arguments and pass them to vfprintf
|
|
- rl_parse_and_bind: print a warning if we encounter a key binding
|
|
string with one or more hyphens but we don't find a valid modifier
|
|
(`control', `meta', etc.). Prompted by a report from Andrew Kurn
|
|
<kurn@sfu.ca>
|
|
- rl_parse_and_bind: improve several existing error messages now that
|
|
_rl_init_file_error takes a variable number of arguments
|
|
- rl_variable_bind: print error message upon encountering unknown
|
|
variable
|
|
|
|
1/10
|
|
----
|
|
lib/readline/bind.c
|
|
- rl_parse_and_bind: if a `bare' keybinding is supplied without any
|
|
terminating `:' or whitespace separating it from the command to be
|
|
bound, signal an error
|
|
|
|
1/11
|
|
----
|
|
subst.c
|
|
- process_substitute: when compiled without job control (JOB_CONTROL not
|
|
defined), make sure we call stop_making_children like we do in the job
|
|
control code branch, so already_making_children is reset to 0. This
|
|
is what command substitution does. Fixes bug reported by Alastair
|
|
Hughes <hobbitalastair@yandex.com>
|
|
|
|
1/12
|
|
----
|
|
execute_cmd.c
|
|
- execute_in_subshell: if a user subshell (`(command)') or other shell
|
|
compound command has an input pipe, note for later by setting
|
|
stdin_redir. This will inhibit the implicit redirection of standard
|
|
input from /dev/null for async commands executed as part of this
|
|
subshell. Fixes bug reported by Martin D Kealey <martin@kurahaupo.gen.nz>
|
|
- execute_simple_command: if the shell forks to execute this command
|
|
because it has an input pipe, set stdin_redir to inhibit later redirection
|
|
from /dev/null for async commands
|
|
|
|
1/13
|
|
----
|
|
execute_cmd.c
|
|
- HASH_BANG_BUFSIZE: use #define for size of buffer used in
|
|
READ_SAMPLE_BUF instead of straight constant 80
|
|
- HASH_BANG_BUFSIZ: increase to 128 because Linux allows 128 chars in
|
|
exec header. Reported by Ludovic Courtès <ludo@gnu.org>
|
|
|
|
configure.ac
|
|
- remove support for purify and purecoverage
|
|
- change release level to `rc1'
|
|
|
|
1/15
|
|
----
|
|
builtins/enable.def
|
|
- dyn_load_builtin: fix missing argument to builtin_error if load function
|
|
returns an error. Fix from Aharon Robbins <arnold@skeeve.com>
|
|
|
|
1/18
|
|
----
|
|
builtins/history.def
|
|
- histtime: display a better error message for invalid timestamps; use
|
|
existing `??' string for empty/missing timestamps or invalid history
|
|
entries. Suggestion from Reuben Thomas <rrt@sc3d.org>
|
|
|
|
1/21
|
|
----
|
|
lib/readline/text.c
|
|
- rl_insert: when trying to optimize typeahead, make sure to reset the
|
|
key sequence and key sequence length when we read a character that is
|
|
not bound to self-insert. Bug report from Geir Hauge
|
|
<geir.hauge@gmail.com>
|
|
|
|
1/25
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- word splitting: add example showing how -d'' is equivalent to -d
|
|
after word splitting and null argument removal
|
|
|
|
1/27
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- read: modify description to make it more clear that the line is split
|
|
using the same rules as word splitting, and use `delimiters' instead
|
|
of `separators', which people read the wrong way
|
|
|
|
2/2
|
|
---
|
|
variables.c
|
|
- initialize_shell_variables: allow FUNCNEST to set funcnest_max when
|
|
imported from the environment. Inspired by
|
|
https://bugzilla.redhat.com/show_bug.cgi?id=1274553
|
|
|
|
2/11
|
|
----
|
|
bashhist.c
|
|
- bash_history_inhibit_expansion: function should be compiled in only if
|
|
BANG_HISTORY is defined. Report from isabella parakiss
|
|
<izaberina@gmail.com>
|
|
|
|
[bash-4.4-rc1 frozen]
|
|
|
|
2/15
|
|
----
|
|
lib/readline/text.c
|
|
- rl_refresh_line: call rl_redraw_prompt_last_line instead of
|
|
rl_forced_update_display to avoid redrawing all lines of a multiline
|
|
prompt (overwriting the last line of the multiline prompt in the
|
|
process). Report from Hugh Davenport <hugh@davenport.net.nz>
|
|
|
|
2/18
|
|
----
|
|
subst.c
|
|
- parameter_brace_expand: when processing ${!name[@]}, make sure to
|
|
free `name' before returning the list of keys to avoid a memory leak.
|
|
Fixes bug reported by Emilio PastorMira <Emilio.PastorMira@utimaco.com>
|
|
|
|
2/19
|
|
----
|
|
trap.c
|
|
- free_trap_strings: when freeing the `special' traps (NSIG to BASH_NSIG),
|
|
check whether or not the `signal' is trapped, as it would be if the
|
|
subshell inherited it (errtrace) and don't free the trap string in that
|
|
case. Fixes bug reported by Jan Klötzke <jan@kloetzke.net>
|
|
|
|
2/21
|
|
----
|
|
lib/sh/netconn.c
|
|
- isnetconn: return false if getpeername fails with errno == EBADF.
|
|
Bug and fix from Andrew Gregory <andrew.gregory.8@gmail.com>
|
|
|
|
builtins/shopt.def
|
|
- parse_bashopts: when reading BASHOPTS from the environment, make
|
|
sure to call any set functions associated with a variable, instead
|
|
of just setting the value to 1. Report and fix from
|
|
Vehlow, Jörg <Joerg.Vehlow@kratzer-automation.com>
|
|
|
|
2/22
|
|
----
|
|
lib/readline/complete.c
|
|
- rl_display_match_list: don't bother calling strrchr to check the
|
|
return value from printable_part() if rl_filename_completion_desired
|
|
is non-zero, since in that case printable_part just returns its
|
|
argument. Fixes git completion issue reported by
|
|
Dilyan Palauzov <dilyan.palauzov@aegee.org>
|
|
- _rl_colored_completion_prefix: default is now 0, testing is complete
|
|
|
|
2/23
|
|
----
|
|
variables.c
|
|
- assign_hashcmd: if the shell is restricted, reject attempts to add
|
|
pathnames containing slashes to the hash table, as the hash builtin
|
|
does. Fixes bug reported to savannah by Sylvain Beucler as
|
|
https://savannah.gnu.org/support/?108969
|
|
|
|
2/24
|
|
----
|
|
subst.c
|
|
- NEED_FPURGE_DECL: need it before externs.h included, since fpurge
|
|
is now used in this file. Fixes warning reported by Mike
|
|
Frysinger <vapier@gentoo.org>
|
|
- skip_double_quoted: add missing argument to declaration
|
|
|
|
parse.y
|
|
- shell_getc: in call to internal_warning, use %lu to print an argument
|
|
cast explicitly to unsigned long. Fixes warning reported by Mike
|
|
Frysinger <vapier@gentoo.org>
|
|
|
|
2/27
|
|
----
|
|
parse.y
|
|
- decode_prompt_string: quote result of \s expansion in case shell has
|
|
been invoked with a pathname like '$(id)'. Inspired by report from
|
|
Travis Garrell <travis.garrell@oracle.com>
|
|
- decode_prompt_string: quote result of \h and \H expansions in the
|
|
(unlikely) case that the hostname has been changed to something
|
|
malicious including a command substitution. From report from
|
|
Travis Garrell <travis.garrell@oracle.com>
|
|
|
|
builtins/getopts.def
|
|
- getopts_unbind_variable: new static function, just calls unbind_variable
|
|
for now. Placeholder for any future work to do something special if
|
|
OPTARG is readonly. Based on discussion started by Robert Elz
|
|
<kre@munnari.oz.au>
|
|
|
|
lib/readline/vi_mode.c
|
|
- rl_vi_unix_word_rubout: new function, implements ^W as Posix specifies
|
|
it for vi mode, using whitespace and punctuation characters as word
|
|
boundaries. Prompted by question from Carlos Pita
|
|
<carolosjosepita@gmail.com>
|
|
|
|
lib/readline/vi_keymap.c
|
|
- bind rl_vi_unix_word_rubout to ^W by default in both insert and
|
|
command mode
|
|
|
|
lib/readline/rltty.c
|
|
- _rl_bind_tty_special_chars: if in vi mode, bind the WERASE character
|
|
to rl_vi_unix_word_rubout
|
|
|
|
lib/readline/funmap.c
|
|
- vi-unix-word-rubout is new bindable name for rl_vi_unix_word_rubout
|
|
|
|
lib/readline/readline.h
|
|
- rl_vi_unix_word_rubout: new extern declaration
|
|
|
|
2/28
|
|
----
|
|
doc/bash.1
|
|
- document readline blink-matching-paren variable
|
|
- document readline completion-display-width variable
|
|
- document readline completion-map-case variable
|
|
- note that the default value of history-size depends on the value of
|
|
the HISTSIZE variable. All from a message from Branden Robinson
|
|
<g.branden.robinson@gmail.com>
|
|
|
|
doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
|
|
- convert-meta: modify the description to note that readline will turn
|
|
the default to off if the locale contains eight-bit characters
|
|
- input-meta: modify the description to note that readline will turn
|
|
the default to on if the locale contains eight-bit characters
|
|
- output-meta: modify the description to note that readline will turn
|
|
the default to on if the locale contains eight-bit characters. From
|
|
a message from Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
3/6
|
|
---
|
|
examples/loadables/Makefile.in
|
|
- install-dev: make installdirs a prerequisite; don't rely on the
|
|
install-supported target to create it first. Bug with parallel
|
|
install (`make -j 4 install') reported by Chris Staub
|
|
<cstaub67@gmail.com>
|
|
|
|
3/12
|
|
----
|
|
lib/readline/display.c:
|
|
- rl_clear_visible_line: clear all screen lines occupied by the current
|
|
visible readline line. Inspired by report from Lauri Ranta
|
|
<lauri.ranta@gmail.com>
|
|
|
|
lib/readline/readline.h
|
|
- rl_clear_visible_line: extern declaration
|
|
|
|
lib/readline/doc/rltech.texi
|
|
- rl_clear_visible_line: add documentation
|
|
|
|
3/19
|
|
----
|
|
findcmd.c
|
|
- file_status: add inadvertently-dropped test for EXECIGNORE to the
|
|
`other' bits check. The check was in the original patch
|
|
- search_for_command: if the file should not be considered executable
|
|
because it's in the EXECIGNORE blacklist, don't set file_to_lose_on,
|
|
since the attempt to execute the last-ditch path will circumvent the
|
|
EXECIGNORE setting. Fixes bug reported by Dennis Williamson
|
|
<dennistwilliamson@gmail.com>
|
|
|
|
3/28
|
|
----
|
|
lib/readline/display.c
|
|
- rl_redisplay: when computing where the cursor should go (and the
|
|
physical cursor position) after displaying the prompt, don't adjust
|
|
the cursor position by wadjust if there are no multibyte chars in
|
|
the prompt. lpos is already a physical cursor position; _rl_screenwidth
|
|
is the physical screen width, and we're not calling _rl_col_width and
|
|
don't need to take invisible characters into account again. Fixes
|
|
bug reported by Andreas Schwab <schwab@linux-m68k.org>
|
|
|
|
4/1
|
|
---
|
|
parse.y
|
|
- parse_comsub: when we read `esac' followed by a break character,
|
|
turn on the LEX_RESWDOK flag because we can now read another case
|
|
statement or other compound command. Fixes bug reported by
|
|
Christian Franke <Christian.Franke@t-online.de>, original version
|
|
of patch from Piotr Grzybowski <narsil.pl@gmail.com>
|
|
- parse_comsub: leave the reserved-word-ok flag set for four-char
|
|
reserved words (then/else/elif/done/time) that can be followed by
|
|
reserved words; set lex_rwlen to 0 so we know to start reading a
|
|
new one
|
|
|
|
4/7
|
|
---
|
|
builtins/{alias,complete,jobs}.def
|
|
- {alias,compopt,disown}: add missing `CASE_HELPOPT;' so --help option
|
|
prints help longdoc instead of builtin_usage()
|
|
|
|
4/8
|
|
---
|
|
arrayfunc.c
|
|
- assign_array_var_from_word_list: use bind_array_var_internal instead
|
|
of inline code, so value conversions happen on assignment (case
|
|
modification, arithmetic evaluation, etc). Fixes bug reported by
|
|
Geir Hauge <geir.hauge@gmail.com>
|
|
|
|
4/9
|
|
---
|
|
shell.c
|
|
- main: change the logic that determines whether or not bash is running
|
|
under an emacs terminal emulator so it works with future versions of
|
|
emacs, which will change to use only $INSIDE_EMACS. Report and fix
|
|
from Paul Eggert <eggert@cs.ucla.edu>
|
|
|
|
lib/glob/sm_loop.c
|
|
- EXT: if we see ?(pat), we can match 0 or 1 times, so if we don't
|
|
match, we should consume the extglob pattern and go on to attempt
|
|
to match the rest of the pattern against the string. Fixes bug
|
|
reported by Isabella Parakiss <izaberina@gmail.com>
|
|
- GMATCH: in case `*', don't short-circuit and match anything if the
|
|
* is the last character in the pattern until after we check the
|
|
special cases for matching a `.'. Fixes bugs reported back on 3/23
|
|
by Isabella Parakiss <izaberina@gmail.com>
|
|
|
|
4/13
|
|
----
|
|
bashhist.c
|
|
- hc_erasedups: fix memory leak by freeing history entry returned by
|
|
remove_history. Bug and fix from Seiichi Ishitsuka
|
|
<ishitsuka.sc@ncos.nec.co.jp>
|
|
|
|
4/19
|
|
----
|
|
config-top.h
|
|
- CD_COMPLAINS: now settable in config-top.h; enables (fatal) error
|
|
messages if cd is given multiple directory arguments
|
|
|
|
4/20
|
|
----
|
|
execute_cmd.c
|
|
- coproc_setvars: refuse to create variables with names that are not
|
|
valid identifiers. Suggestion from Piotr Grzybowski
|
|
<narsil.pl@gmail.com>
|
|
|
|
rltty.c
|
|
- rl_tty_set_echoing: interface to set _rl_echoing_p, returning old
|
|
value. Inspired by gdb use of _rl_echoing_p when switching
|
|
between terminal and curses modes described by Doug Evans
|
|
<dje@google.com>
|
|
|
|
bashline.c
|
|
- bash_execute_unix_command: use rl_clear_visible_line instead of
|
|
erasing current line on the screen, inspired by same report from
|
|
3/12. Still tentative change
|
|
|
|
configure.ac
|
|
- update release status to rc2, may skip this and go directly to
|
|
release
|
|
|
|
4/21
|
|
----
|
|
arrayfunc.c
|
|
- convert_var_to_array: make sure that the newly-converted array
|
|
variable is not marked as being an associative array. Fixes bug
|
|
reported by Grisha Levit <grishalevit@gmail.com>
|
|
- convert_var_to_assoc: make sure that the newly-converted associative
|
|
array variable is not marked as being an indexed array
|
|
|
|
4/22
|
|
----
|
|
builtins/evalstring.c
|
|
- should_suppress_fork: don't suppress the fork if there are any traps
|
|
set, since that requires that we hang around to react to a signal or
|
|
collect the command's exit status and run something. Fixes bug
|
|
reported by Brian Vandenberg <phantall@gmail.com>
|
|
|
|
histexpand.c
|
|
- history_tokenize_word: handle >| as a single token. Fix from
|
|
Piotr Grzybowski <narsil.pl@gmail.com> from a report from
|
|
idallen@idallen-fibe.dyndns.org
|
|
|
|
4/24
|
|
----
|
|
execute_cmd.
|
|
- coproc_setvars: don't overwrite readonly variables used as coproc
|
|
names. From a report from Grisha Levit <grishalevit@gmail.com>
|
|
|
|
histexpand.c
|
|
- history_tokenize_word: handle strings of digits before redirections
|
|
beginning with `<' or `>' as part of the redirection word; handle
|
|
strings of digits following `<&' or `>&' as part of the redirection
|
|
word. Inspired by patch from Piotr Grzybowski <narsil.pl@gmail.com>
|
|
from a report from idallen@idallen-fibe.dyndns.org
|
|
|
|
lib/readline/complete.c
|
|
- rl_display_match_list: if the common prefix is longer than any of
|
|
the possible matches, set the length of the common prefix to 0 so
|
|
the entire match gets printed for each match
|
|
- rl_display_match_list: make sure to output at least one space
|
|
between each displayed match, even if the displayed length is
|
|
longer than our computed max
|
|
- fnprint: if the length of the prefix (prefix_bytes) is greater than
|
|
or equal to the length of the string to be printed (print_len), make
|
|
sure to set the prefix length to 0 so the entire string is printed.
|
|
From a report from Grisha Levit <grishalevit@gmail.com>
|
|
|
|
4/25
|
|
----
|
|
subst.c
|
|
- command_substitute: update the conditions under which we give the
|
|
terminal to pipeline_pgrp with give_terminal_to to the same ones
|
|
where wait_for uses to decide whether to give the terminal back to
|
|
shell_pgrp. This code exists to undo the work wait_for does; it
|
|
has to give the terminal back to pipeline_pgrp only under those
|
|
conditions when wait_for gives it back to the shell pgrp. Fix for
|
|
bug reported by Paulo Bardes <bardes0022@gmail.com>
|
|
|
|
4/26
|
|
----
|
|
bashline.c
|
|
- bash_filename_stat_hook: temporarily disable the `nounset' shell
|
|
option around calls to expand_prompt_string so we don't get error
|
|
messages during completion. Fixes issue reported by Eric Pruitt
|
|
<eric.pruitt@gmail.com>
|
|
|
|
4/27
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- extdebug: clarify that having this option enabled at shell startup
|
|
acts identically to --debugger. From a report from Grisha Levit
|
|
<grishalevit@gmail.com>
|
|
|
|
jobs.[ch]
|
|
- wait_for_single_pid: now takes additional `int flags' argument
|
|
|
|
{jobs,execute_cmd}.c,builtins/wait.def
|
|
- wait_for_single_pid: changed callers to add extra argument
|
|
|
|
jobs.c
|
|
- wait_for_single_pid: if (flags & 1) == 0, don't print the error
|
|
message if PID isn't found; changed execute_pipeline call when
|
|
lastpipe is set
|
|
|
|
4/28
|
|
----
|
|
general.c
|
|
- bash_tilde_expand: try not setting interrupt_immediately or
|
|
terminate_immediately; see what happens with networked password
|
|
databases
|
|
|
|
4/29
|
|
----
|
|
subst.c
|
|
- parameter_brace_expand, parameter_brace_expand_rhs: now take an
|
|
additional `pflags' argument from its caller so we can pass
|
|
state
|
|
- parameter_brace_expand_rhs: if expand_string_for_rhs returns a
|
|
quoted null, but l_hasdollat is set to 1, meaning we saw a quoted
|
|
"$@" of some form, we need to turn off special handling of "$@"
|
|
so something like "${@-${@-$@}}" expands to an empty string like
|
|
Posix says it should. Fixes bug reported by Grisha Levit
|
|
<grishalevit@gmail.com>
|
|
|
|
5/1
|
|
---
|
|
variables.c
|
|
- bind_variable_internal: if we have a nameref variable with a valid
|
|
array reference that is invalid for assignment (e.g., a[*]), and
|
|
assign_array_element returns NULL, short-circuit and return NULL.
|
|
Fixes bug reported by Grisha Levit <grishalevit@gmail.com>
|
|
|
|
general.[ch]
|
|
- valid_nameref_value: new function, return 1 if passed argument is
|
|
a valid variable name argument for a nameref variable: a valid
|
|
identifier, a valid array reference, or a valid positional
|
|
parameter. Second argument indicates whether the value is to be
|
|
used for an assignment; in this case, return an error if the name
|
|
consists of all digits
|
|
|
|
builtins/declare.def
|
|
- declare_internal: disallow values for nameref variables that don't
|
|
pass the tests in valid_nameref_value. Part of fix for bug
|
|
reported by Grisha Levit <grishalevit@gmail.com>
|
|
|
|
variables.c
|
|
- bind_variable_internal: if trying to assign a value to a nameref
|
|
variable, throw an error if valid_nameref_value fails (with a second
|
|
argument of 1). More fixes for bug reported by Grisha Levit
|
|
<grishalevit@gmail.com>
|
|
|
|
5/2
|
|
---
|
|
builtins/declare.def
|
|
- declare_internal: don't allow nameref attribute to be applied to an
|
|
existing readonly variable; it can be used to circumvent readonly
|
|
value. Fix for bug reported by Grisha Levit <grishalevit@gmail.com>
|
|
|
|
variables.[ch]
|
|
- find_variable_last_nameref, find_global_variable_last_nameref: takes
|
|
a new flags argument. If flags is non-zero, and we find a nameref
|
|
variable that is unset (has no value), return that variable instead
|
|
of NULL.
|
|
|
|
{variables,execute_cmd,arrayfunc,subst}.c,builtins/{declare,set}.def
|
|
- find_variable_last_nameref, find_global_variable_last_nameref: change
|
|
callers to add flags argument (initially 0)
|
|
|
|
5/3
|
|
---
|
|
variables.c
|
|
- bind_variable_internal: make sure we run the value of a namref
|
|
variable through valid_nameref_value before doing the assignment.
|
|
This can go away if we stop allowing namerefs to refer to positional
|
|
parameters
|
|
|
|
execute_cmd.c
|
|
- execute_select_command: if bind_variable returns NULL, handle it as
|
|
an error, as if attempting assignment to a readonly variable
|
|
- execute_for_command: use 1 as second argument to
|
|
find_variable_last_nameref, so it will return an invisible nameref
|
|
to assign for each variable in the list
|
|
- execute_for_command: if the current word in the list is an invalid
|
|
identifier and the loop variable is a nameref, handle it as an error,
|
|
as if attempting assignment to a readonly variable
|
|
|
|
5/4
|
|
---
|
|
variables.c
|
|
- bind_int_variable: add warning if assigning an int to a nameref
|
|
variable
|
|
- assign_in_env: if assigning a variable in the temporary environment
|
|
that is a namref, throw an error if trying to assign an invalid
|
|
value
|
|
- bind_variable_value: use valid_nameref_value instead of calls to
|
|
legal_identifier and valid_array_reference
|
|
|
|
execute_cmd.c
|
|
- coproc_setvars: if we have a nameref variable as the coproc name, but
|
|
it can't be assigned to for some reason, remove the nameref attribute
|
|
and issue a warning that we are doing so
|
|
- coproc_setvars: don't allow assignment to a nameref variable with an
|
|
invalid variable name, using same code as find_or_make_array_variable
|
|
|
|
general.c
|
|
- valid_nameref_value: disallow values consisting solely of digits,
|
|
like the positional parameters
|
|
|
|
builtins/declare.def
|
|
- declare_internal: don't call valid_nameref_value on the existing value
|
|
of a variable that's being converted to a nameref -- that value is
|
|
going to be thrown away and we've already checked the new value
|
|
- declare_internal: call bind_variable_value with the ASS_NAMEREF flag
|
|
if we're assigning to an existing nameref variable (for instance,
|
|
`declare -n x ; declare x=42')
|
|
|
|
5/5
|
|
---
|
|
variables.c
|
|
- make_local_variable: if we are being asked to create a local copy of
|
|
a nameref variable from a prior scope (checked by looking up
|
|
using find_variable_noref), use the nameref variable, not the variable
|
|
it references (which we find using find_variable). Bug report from
|
|
Grisha Levit <grishalevit@gmail.com> ; fix by Piotr Grzybowski
|
|
<narsil.pl@gmail.com>
|
|
|
|
builtins/declare.def
|
|
- declare_internal: if asked to do the same thing as above (difference
|
|
is declare -n r=foo in previous case; declare -n r in this one),
|
|
don't follow reference var from a previous context. Create a new
|
|
local variable (using make_local_variable) and inherit attributes
|
|
from previous scope's nameref as above
|
|
|
|
5/6
|
|
---
|
|
builtins/declare.def
|
|
- declare_internal: if we are assigning a value to an existing
|
|
invisible nameref variable, validate value early so we don't end up
|
|
removing the variable after the assignment fails
|
|
|
|
builtins/shopt.def
|
|
- toggle_shopts: don't call set_bashopts here unless $BASHOPTS exists,
|
|
since we don't want to set it up before it gets read from the
|
|
environment. Keeping BASHOPTS read-only should keep users from
|
|
unsetting it. Fix from Grisha Levit <grishalevit@gmail.com>
|
|
- shopt_set_debug_mode: make sure error_trace_mode reflects the setting
|
|
of extdebug. This one is tentative. Fix from Grisha Levit
|
|
<grishalevit@gmail.com>
|
|
- shopt_set_debug_mode: call set_shellopts after setting error_trace_mode
|
|
or function_trace_mode. Fix from Grisha Levit <grishalevit@gmail.com>
|
|
|
|
shell.c
|
|
- start_debugger: make sure that function_trace_mode and error_trace_mode
|
|
reflect the value of debugging_mode, so they are both disabled if we
|
|
disable debugging mode because we can't find the debugger start file.
|
|
Fix from Grisha Levit <grishalevit@gmail.com>
|
|
- start_debugger: set $SHELLOPTS and $BASHOPTS to the option values are
|
|
reflected if we change or set them here. Fix from Grisha Levit
|
|
<grishalevit@gmail.com>
|
|
|
|
builtins/set.def
|
|
- reset_shell_options: add reset values for: posix, nolog, pipefail.
|
|
Fix from Grisha Levit <grishalevit@gmail.com>
|
|
|
|
builtins/shopt.def
|
|
- reset_shopt_options: add reset values for: autocd, checkjobs,
|
|
complete_fullquote, dirspell, failglob, globstar, gnu_errfmt,
|
|
huponexit, inherit_errexit, interactive_comments, lastpipe,
|
|
no_empty_cmd_completion, progcomp. Fix from Grisha Levit
|
|
<grishalevit@gmail.com>
|
|
- reset_shopt_options: make sure the following options have the right
|
|
defaults based on #defines: checkjobs, checkwinsize, direxpand,
|
|
extglob, globasciiranges. Fix from Grisha Levit
|
|
<grishalevit@gmail.com>
|
|
|
|
flags.c
|
|
- reset_shell_flags: add missing flags, re-initialize history_expansion
|
|
based on STRICT_POSIX
|
|
|
|
5/8
|
|
---
|
|
lib/readline/histexpand.c
|
|
- history_expand: if any expansion returns 1 from history_expand_internal,
|
|
indicating that :p was supplied, make it apply to the entire line
|
|
like tcsh and csh. Fixes bug reported by Dean Stanton
|
|
<dstanton@tintri.com>
|
|
|
|
variables.[ch]
|
|
- ifsname: move define to variables.h
|
|
|
|
execute_cmd.c
|
|
- execute_for_command: check whether or not the word in the for command
|
|
is IFS; call setifs every time the variable is assigned a value.
|
|
Fixes bug report from Grisha Levit <grishalevit@gmail.com>
|
|
|
|
5/16
|
|
----
|
|
general.c
|
|
- valid_nameref_value: explicitly handle name == 0 and *name == 0 right
|
|
away to save calls to legal_identifier
|
|
|
|
builtins/declare.def
|
|
- declare_internal: if trying to set nameref attribute on a variable
|
|
with a null value, flag as invalid assignment, just as if running
|
|
`declare -n r=""'. Fixes bug report from Grisha Levit
|
|
<grishalevit@gmail.com>
|
|
- declare_internal: when creating a variable with a temporary value
|
|
(""), use ASS_FORCE in the assignment flags to bypass name validity
|
|
checks on nameref variable names
|
|
|
|
variables.c
|
|
- bind_variable_internal: don't call valid_nameref_value if we're
|
|
forcing assignment with (flags & ASS_FORCE)
|
|
|
|
builtins/read.def
|
|
- read_builtin: handle bind_variable returning NULL when setting REPLY.
|
|
Report and fix from Grisha Levit <grishalevit@gmail.com>
|
|
|
|
builtins/setattr.def
|
|
- set_var_attribute: handle bind_variable returning NULL
|
|
|
|
lib/sh/tmpfile.c
|
|
- sh_seedrand(): call srandom() to seed the random number generator
|
|
- sh_mktmpname, sh_mktmpfd: if we have random(), assume we have
|
|
srandom() and seed the random number generator. Still looking for
|
|
better value to see random number generator with
|
|
|
|
variables.c
|
|
- check_unbind_variable: use internal_error instead of builtin_error
|
|
|
|
{execute_cmd,variables}.c
|
|
- fix some places where bind_variable could return NULL and it was not
|
|
checked. Fix from Piotr Grzybowski <narsil.pl@gmail.com>
|
|
|
|
5/17
|
|
----
|
|
arrayfunc.c
|
|
- convert_var_to_{array,assoc}: make sure to turn off nameref attribute,
|
|
since namerefs can't be arrays
|
|
|
|
execute_cmd.c
|
|
- coproc_setvars: if the coproc name names a nameref, resolve the
|
|
nameref and use it as the name of the coproc. Suggested by Grisha
|
|
Levit <grishalevit@gmail.com>
|
|
|
|
subst.c
|
|
- command_substitute: don't bother calling QUIT after calling
|
|
reset_signal_handlers in the child, kill the child with SIGINT in
|
|
case we just reset the signal handler to SIG_DFL and we should just
|
|
exit instead of throwing to top level. Fixes bug reported by
|
|
Grisha Levit <grishalevit@gmail.com>
|
|
|
|
5/18
|
|
----
|
|
variables.c
|
|
- find_variable_nameref_for_create: find a nameref variable whose value
|
|
doesn't resolve to an existing variable and see whether or not that
|
|
value is appropriate for a new variable to be created
|
|
- find_variable_nameref_for_assignment: find a nameref variable whose
|
|
value doesn't resolve to an existing variable and see whether or not
|
|
that value is appropriate for a new variable to be created.
|
|
Difference between _assignment and _create is that _assignment
|
|
allows the nameref value to be a subscripted array reference
|
|
|
|
builtins/setattr.def
|
|
- set_var_attribute: if variable lookup doesn't return anything, check
|
|
for a nameref and make sure that any reference value is something we
|
|
should be working on here, using find_variable_nameref_for_create().
|
|
If it fails, error out and return, otherwise it's probably a reference
|
|
to a variable that hasn't been set yet, so let bind_variable take care
|
|
of that. Report from Grisha Levit <grishalevit@gmail.com>
|
|
|
|
arrayfunc.c
|
|
- bind_array_variable: if find_shell_variable returns NULL, check for a
|
|
nameref using find_variable_nameref_for_create and create a new array
|
|
variable with the value if it returns a valid nameref variable.
|
|
Makes `unset var; declare -n ref=var ; ref[0]=foo' work right.
|
|
Report from Grisha Levit <grishalevit@gmail.com>
|
|
|
|
5/19
|
|
----
|
|
variables.[ch]
|
|
- unbind_variable_noref: unset a variable NAME without following any
|
|
nameref chain. If the first instance of the variable with that name
|
|
is a nameref, just unset that nameref variable.
|
|
|
|
builtins/getopts.def
|
|
- getopts_unbind_variable: if OPTARG is going to be unbound, use
|
|
unbind_variable_noref to unbind that name even if it is a nameref
|
|
variable. Issue raised by Grisha Levit <grishalevit@gmail.com>
|
|
|
|
execute_cmd.c
|
|
- coproc_unsetvars: use unbind_variable_noref in case someone sets the
|
|
coproc _PID variable as a nameref pointing to something read-only or
|
|
strange. Issue raised by Grisha Levit <grishalevit@gmail.com>
|
|
|
|
builtins/set.def
|
|
- set_ignoreeof: use unbind_variable_noref to unset "IGNOREEOF" and
|
|
"ignoreeof"
|
|
- set_posix_mode: use unbind_variable_noref to unset "POSIXLY_CORRECT"
|
|
|
|
variables.c
|
|
- make_vers_array: use unbind_variable_noref to unset "BASH_VERSINFO"
|
|
|
|
lib/sh/shmatch.c
|
|
- sh_regmatch: use unbind_variable_noref to unset "BASH_REMATCH"
|
|
|
|
bashline.c
|
|
- bash_execute_unix_command: use check_unbind_variable to unset
|
|
READLINE_LINE and READLINE_POINT
|
|
|
|
pcomplete.c
|
|
- unbind_compfunc_variables: use unbind_variable_noref to unset
|
|
COMP_LINE, COMP_POINT, COMP_WORDS, COMP_CWORD, COMP_TYPE, COMP_KEY
|
|
- gen_shell_function_matches: use unbind_variable_noref to unset
|
|
COMPREPLY
|
|
|
|
config-top.h
|
|
- USE_MKTEMP/USE_MKSTEMP: define by default to use libc version of
|
|
mktemp and mkstemp in lib/sh/tmpfile.c. Recommended by Mike
|
|
Frysinger <vapier@gentoo.org> to fix a FreeBSD problem
|
|
|
|
configure.ac,config.h.in
|
|
- mkstemp: check for mkstemp, define HAVE_MKSTEMP if available
|
|
|
|
config-bot.h
|
|
- USE_MKSTEMP: #undef if HAVE_MKSTEMP not defined
|
|
|
|
5/22
|
|
----
|
|
variables.c
|
|
- assign_in_env: if appending to a variable's value, make sure we call
|
|
make_variable_value with the empty string if expand_assignment_string_to_string
|
|
returns NULL, as do_assignment_internal does. Fixes bug with
|
|
`str=''; val=foo ; val+=str printenv val' reported by Grisha Levit
|
|
<grishalevit@gmail.com>
|
|
- assign_in_env: if assigning to a nameref variable in the temporary
|
|
environment, and the nameref has a valid value for assignment (even
|
|
if the target variable is not set), resolve the nameref and create
|
|
a variable in the temporary environment named by the nameref's value.
|
|
If the nameref variable is invisible or isn't set to a valid value
|
|
for assignment, just create a regular temporary variable with the
|
|
nameref's name. This provides a degree of ksh93 compatibility.
|
|
Suggested by Grisha Levit <grishalevit@gmail.com>
|
|
- find_variable_nameref_context,find_variable_last_nameref_context:
|
|
instead of returning NULL when detecting a loop, return a
|
|
distinguished value: &nameref_maxloop_value
|
|
- bind_variable: catch nameref_maxloop_value so we can do different
|
|
things based on whether or not we get it. Right now we don't do
|
|
anything different, but we could
|
|
|
|
5/24
|
|
----
|
|
lib/readline/display.c
|
|
- update_line,_rl_move_cursor_relative: save value of MB_CUR_MAX in a
|
|
variable and use it throughout the functions instead of recomputing it
|
|
every time (which possibly costs a function call)
|
|
|
|
5/25
|
|
----
|
|
builtins/declare.def
|
|
- declare_internal: only check whether the value being assigned to a
|
|
nameref variable is a valid identifier if we're not appending to an
|
|
existing value. Suggested by Grisha Levit <grishalevit@gmail.com>
|
|
- declare_internal: add a couple of more checks on nameref names:
|
|
o make sure `declare -n x[3]=y' is an error
|
|
o nameref variable self-references now produce a warning when
|
|
in function scope
|
|
o nameref variable self-references using subscripted arrays
|
|
(a=a[0]) now produce warnings at function scope and errors at
|
|
global scope
|
|
|
|
5/29
|
|
----
|
|
builtins/declare.def
|
|
- declare_internal: use name of readonly variable when calling sh_readonly
|
|
instead of name passed as argument to declare in case we've followed
|
|
a nameref chain
|
|
- declare_internal: when turning off attributes on a nameref variable
|
|
after following the nameref chain and turning them off on the target
|
|
variable, don't allow the readonly attribute to be removed. This is
|
|
primarily intended to turn off the nameref attribute. Issue pointed
|
|
out by Grisha Levit <grishalevit@gmail.com>
|
|
- declare_internal: if we are attempting to modify an existing global
|
|
nameref variable, and the -n option is supplied, operate on the
|
|
nameref variable itself, not the variable it references
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- change the descriptions of namerefs and declare -n slightly to note
|
|
that using the -n option to declare will operate on the nameref
|
|
variable itself rather than the variable it references
|
|
|
|
variables.c
|
|
- bind_variable_internal: if trying to assign to a read-only variable,
|
|
print the error message using the variable's name instead of the
|
|
name passed to bind_variable in case we followed a nameref
|
|
|
|
builtins/declare.def
|
|
- declare_internal: when we're creating a (possibly invisible) variable
|
|
as part of another operation, assigning NULL, make sure to use
|
|
ASS_FORCE to avoid warning messages from any existing nameref
|
|
variables we follow
|
|
- declare_internal: allow the nameref attribute to be removed from a
|
|
readonly nameref variable without a value but do not allow it to be
|
|
removed from a readonly nameref variable that has a value, even if it
|
|
doesn't reference an existing variable. This distinction is for ksh93
|
|
compatibility. Pointed out by Grisha Levit <grishalevit@gmail.com>
|
|
|
|
5/31
|
|
----
|
|
builtins/declare.def
|
|
- declare_internal: if the call to bind_variable_value fails for some
|
|
reason, make sure to restore the nameref attribute to flags_on and
|
|
flags_off before calling NEXT_VARIABLE
|
|
|
|
subst.c
|
|
- make_internal_declare: handle += append op
|
|
- shell_expand_word_list: when transforming assignment statement
|
|
arguments to `declare', make sure to handle += append op to avoid
|
|
passing invalid identifiers to declare. Report by Grisha Levit
|
|
<grishalevit@gmail.com>
|
|
|
|
6/1
|
|
---
|
|
builtins/declare.def
|
|
- declare_internal: if a nameref assignment fails, only call delete_var
|
|
to delete the variable if we created it in declare_internal in the
|
|
first place
|
|
|
|
general.c
|
|
- check_selfref: new function, checks a NAME against a VALUE for nameref
|
|
self-reference
|
|
|
|
general.h
|
|
- check_selfref: extern declaration
|
|
|
|
builtins/declare.def
|
|
- declare_internal: call check_selfref to determine whether a given NAME
|
|
and VALUE constitute an invalid nameref variable self-reference
|
|
|
|
variables.c
|
|
- bind_variable_internal: call check_selfref to determine whether a
|
|
given NAME and VALUE constitute an invalid nameref variable self-
|
|
reference
|
|
|
|
6/2
|
|
---
|
|
parse.y
|
|
- clear_shell_input_line: new function, clears contents of shell_input_line
|
|
and sets index to 0, but doesn't free it
|
|
|
|
externs.h
|
|
- clear_shell_input_line: extern declaration
|
|
|
|
builtins/evalstring.c
|
|
- parse_and_execute: call clear_shell_input_line after setting input to
|
|
string to be executed. Fixes problem with command substitution and
|
|
multi-line aliases reported by Grisha Levit <grishalevit@gmail.com>
|
|
|
|
eval.c
|
|
- parse_command: only execute PROMPT_COMMAND if the shell is not
|
|
currently expanding an alias; use the same tests as parse.y:SHOULD_PROMPT
|
|
and parse.y:prompt_again() use to decide whether or not to print a
|
|
prompt. Fixes problems with PROMPT_COMMAND and multi-line aliases
|
|
reported by Grisha Levit <grishalevit@gmail.com>
|
|
|
|
builtins/set.def
|
|
- unset_builtin: changes to fix three problems reported by Grisha
|
|
Levit <grishalevit@gmail.com>:
|
|
o if -n is supplied, we should not try to unset a function if
|
|
a variable isn't found
|
|
o unsetting namerefs whose values are array references does
|
|
not work
|
|
o unset -n n[0], where n is a nameref, would unset the
|
|
referenced variable instead of `n'
|
|
|
|
redir.c
|
|
- redir_varvalue: handle case where nameref var points to subscripted
|
|
array reference. Reported by Grisha Levit <grishalevit@gmail.com>
|
|
|
|
variables.c
|
|
- bind_variable_value: make sure to call check_selfref only if aflags
|
|
includes ASS_NAMEREF and not ASS_FORCE. Reported by Grisha Levit
|
|
<grishalevit@gmail.com>
|
|
|
|
general.c
|
|
- valid_nameref_value: now understands a FLAGS value of 2 to mean that
|
|
the name will be used to create a variable, so only legal_identifier
|
|
matters
|
|
|
|
arrayfunc.c
|
|
- find_or_make_array_variable: call valid_nameref_value with FLAGS value
|
|
of 2 to indicate we will be creating a variable. Fixes mapfile issue
|
|
reported by Grisha Levit <grishalevit@gmail.com>
|
|
|
|
6/5
|
|
---
|
|
builtins/declare.def
|
|
- declare_internal: only pass ASS_FORCE as part of assignment flags to
|
|
assignments concerning arrays
|
|
- declare_internal: when at the global scope, if we resolve a nameref
|
|
and commit to using the new name, go back to to the beginning of the
|
|
loop and use the new name in the checks and variable references.
|
|
Make sure we construct the new name as a straight substitution of
|
|
the nameref value into the old name, including array subscripts and
|
|
rebuilding the correct values for `offset' and `value', since they
|
|
are relative to the original value of name.
|
|
Fixes several issues with checking use of subscripted array variables
|
|
as nameref values
|
|
- declare_internal: when calling assign_array_element, make sure to
|
|
pass ASS_APPEND if aflags includes it, so things like
|
|
declare -a var; var[1]=1; declare var[1]+=4
|
|
append to the value appropriately and var[1] ends up being `14'
|
|
|
|
arrayfunc.c
|
|
- valid_array_reference: make sure the array reference is properly
|
|
terminated after the first subscript; return invalid if there is
|
|
anything following the closing `]'
|
|
|
|
6/12
|
|
----
|
|
variables.c
|
|
- bind_variable_internal: if asked to perform an array subscript
|
|
assignment on a nameref variable, display a warning and remove the
|
|
nameref attribute (as bash-4.3 did). Reported by Dan Douglas
|
|
<ormaaj@gmail.com>
|
|
|
|
6/14
|
|
----
|
|
test.c
|
|
- posixtest: handle four-argument case where argv[1] == '(' and
|
|
argv[4] == ')' by performing two-argument test on $2 and $3.
|
|
Reported by Joerg Schilling <Joerg.Schilling@fokus.fraunhofer.de>
|
|
|
|
6/15
|
|
----
|
|
variables.c
|
|
- sv_ignoreeof: make sure ignoreeof is set only if IGNOREEOF is set and
|
|
has a value (no `local IGNOREEOF'). Reported by Grisha Levit
|
|
<grishalevit@gmail.com>
|
|
- sv_strict_posix: make sure posixly_correct is set only if
|
|
POSIXLY_CORRECT is set and has a value. Reported by Grisha Levit
|
|
<grishalevit@gmail.com>
|
|
|
|
6/16
|
|
----
|
|
builtins/declare.def
|
|
- declare_internal: analogous to 6/12 change; when performing an array
|
|
subscript assignment on a nameref, display a warning, remove the
|
|
nameref attribute, and go on
|
|
|
|
6/21
|
|
----
|
|
execute_cmd.c
|
|
- shell_execve: make sure errno is (re)set appropriately before
|
|
returning error value on exec format error
|
|
|
|
6/23
|
|
----
|
|
subst.c
|
|
- param_expand: when expanding $* in a context where splitting is not
|
|
desired (pflags & PF_ASSIGNRHS), make sure to quote the word and the
|
|
included separators. Reported by Dan Douglas <ormaaj@gmail.com>
|
|
|
|
6/30
|
|
----
|
|
configure.ac
|
|
- release version is now `beta2'
|
|
|
|
execute_cmd.c
|
|
- execute_simple_command: even if already_making_children is non-zero,
|
|
don't call wait_for if last_made_pid == NO_PID. Indirectly inspired
|
|
by report from Nicolas Vivet <nicolas@nzx.io>
|
|
|
|
7/2
|
|
---
|
|
subst.c
|
|
- expand_word_internal: when adding an IFS character to the accumulated
|
|
string, don't quote it if word expansion is not going to be
|
|
performed ((word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0) in the
|
|
default case. This was already the case everwhere else, when we did
|
|
`goto add_ifs_character;'. Fixes bug reported by Ibrahim M. Ghazal
|
|
<imgx64@gmail.com>
|
|
|
|
subst.[ch],arrayfunc.c
|
|
- string_list_dollar_at: now takes a new third argument, currently
|
|
reserved for future use; changed callers and declaration
|
|
|
|
7/7
|
|
---
|
|
[bash-4.4-beta2 frozen]
|
|
|
|
7/9
|
|
---
|
|
bashline.c
|
|
- check_redir: make sure that index is > 0 before checking previous
|
|
char; fixes out of bounds read reported by Hanno Böck
|
|
<hanno@hboeck.de>
|
|
|
|
7/16
|
|
----
|
|
subst.c
|
|
- parameter_brace_expand: if ${array[@]} or ${array[*]} is supplied
|
|
with an unset (or empty) array, and -u is enabled, don't make it
|
|
an unbound variable error, like $@ or $* when there are no
|
|
positional parameters. Based on report from Ian Allen
|
|
<idallen@idallen-fibe.dyndns.org>
|
|
|
|
lib/readline/signals.c
|
|
- rl_pending_signal(): return the number of any signal readline has
|
|
caught but is waiting to handle
|
|
|
|
lib/readline/callback.c
|
|
- rl_persistent_signal_handlers: new variable, restores readline-6.2
|
|
signal handler semantics: installed at rl_callback_handler_install
|
|
time and removed with rl_clear_signals when a complete line has
|
|
been read
|
|
- _rl_callback_newline: call rl_set_signals if rl_persistent_signal_handlers
|
|
is non-zero
|
|
- rl_callback_read_char: install signal handlers with rl_set_signals
|
|
if rl_persistent_signal_handlers is 0 (the default)
|
|
- CALLBACK_READ_RETURN: uninstall signal handlers with rl_clear_signals
|
|
only if rl_persistent_signal_handlers is 0 (the default)
|
|
|
|
lib/readline/readline.h
|
|
- rl_pending_signal: new extern declaration
|
|
- rl_persistent_signal_handlers: new extern declaration
|
|
|
|
7/19
|
|
----
|
|
execute_cmd.c
|
|
- execute_while_or_until: make sure we decrement `continuing' the way
|
|
we decrement `breaking' if the loop test indicates we will be
|
|
breaking out of the loop. That keeps `until continue' from
|
|
keeping `continuing' set to 1. Reported by Dan Douglas
|
|
<ormaaj@gmail.com>
|
|
|
|
7/20
|
|
----
|
|
trap.c
|
|
- run_pending_traps,_run_trap_internal: save and restore temporary_env,
|
|
set temporary_env to 0 before trap runs so traps don't inherit a
|
|
command's temporary env. Fixes bug with IFS assignment in tempenv
|
|
and trap reported by Andriy Martynets <martynets@volia.ua>
|
|
|
|
jobs.c
|
|
- run_sigchld_trap: save and restore temporary_env, set temporary_env
|
|
to 0 before trap runs so traps don't inherit a command's temporary
|
|
env (see above)
|
|
|
|
7/21
|
|
----
|
|
execute_cmd.c
|
|
- execute_function: unwind-protect function_line_number, in case we
|
|
are executing a function inside another function. Reported by
|
|
Grisha Levit <grishalevit@gmail.com> in context of evaled functions
|
|
and DEBUG traps
|
|
- execute_arith_for_command,execute_arith_command,execute_simple_command,
|
|
execute_cond_command: make sure line_number doesn't go < 0 when
|
|
adjusting it by function_line_number
|
|
|
|
7/23
|
|
----
|
|
subst.c,command.h
|
|
- move the PF_ constants to command.h so other files can see them, now
|
|
that PF_ASSIGNRHS has meaning to string_list_dollar_at
|
|
|
|
arrayfunc.h
|
|
- AV_ASSIGNRHS: new flag, indicate that ${a[@]} is being expanded on
|
|
the RHS of an assignment statement
|
|
|
|
arrayfunc.c
|
|
- array_value_internal: if AV_ASSIGNRHS passed for ${a[@]}, pass
|
|
PF_ASSIGNRHS to string_list_dollar_at to support args separated by
|
|
spaces even if $IFS does not have the default value. Reported by
|
|
Dan Douglas <ormaaj@gmail.com>
|
|
|
|
subst.c
|
|
- string_list_dollar_at: if FLAGS argument includes PF_ASSIGNRHS, obey
|
|
rules for $@ on the RHS of an assignment statement: expand to
|
|
postitional parameters separated by spaces no matter what the first
|
|
character of $IFS is. Reported by Dan Douglas <ormaaj@gmail.com>
|
|
- parameter_brace_expand_word: pass AV_ASSIGNRHS as flags value to
|
|
array_value if PF_ASSIGNRHS is set and we are expanding an array
|
|
variable subscripted by @ or *
|
|
- param_expand: pass pflags to string_list_dollar_at in case it contains
|
|
PF_ASSIGNRHS
|
|
- expand_word_internal: if we have an assignment statement argument to
|
|
a declaration builtin (W_ASSIGNARG), turn on W_ASSIGNRHS when we see
|
|
the `=' to enable special $@ behavior
|
|
- expand_word_internal: if W_ASSIGNARG enabled in word flags, pass that
|
|
flag and W_ASSIGNRHS to recursive call to expand_word_internal when
|
|
expanding double-quoted string; handles "$@" when IFS is not the
|
|
default value and word splitting will not be performed
|
|
|
|
subst.c
|
|
- expand_word_internal: change case that handles '' (single-quoted
|
|
empty string) to only discard it if we will not be performing word
|
|
splitting (W_NOSPLIT|W_NOSPLIT2), since we need to add a quoted null
|
|
argument if the subsequent characters will cause word splitting.
|
|
This is how "" (double-quoted empty string) is handled after a bug
|
|
fix back in August 2010. Reported by Grisha Levit
|
|
<grishalevit@gmail.com>, fix for Posix interp 888
|
|
|
|
7/27
|
|
----
|
|
subst.c
|
|
- param_expand: change fix from 6/23 (expanding $* in a context where
|
|
word splitting is not performed) to make sure that $* expands to
|
|
something before trying to quote the string. Bug and fix from
|
|
Andreas Schwab <schwab@suse.de>
|
|
|
|
lib/readline/bind.c
|
|
- _rl_get_string_variable_value: fix a cut-and-paste error that caused
|
|
the emacs mode string to be displayed for both vi insert and command
|
|
mode strings. Report and fix from Steve Jones <sjml@slohj.org>
|
|
|
|
7/28
|
|
----
|
|
lib/readline/display.c
|
|
- update_line: we can't use PROMPT_ENDING_INDEX unless we're testing
|
|
against _rl_last_c_pos; if we are testing buffer indices, we need to
|
|
use prompt_last_invisible directly. Fixes mode string redisplay issue
|
|
with short prompt strings reported by Steve Jones <sjml@slohj.org>
|
|
|
|
8/4
|
|
---
|
|
nojobs.c
|
|
- without_job_control: new function, resets child state that's
|
|
eventually used to decide whether or not to wait_for children
|
|
|
|
execute_cmd.c
|
|
- initialize_subshell: call without_job_control in both the
|
|
JOB_CONTROL and no job control paths so we can reset the state in
|
|
subshells that will not cause them to wait_for children
|
|
inappropriately. Fixes bug reported by Dan Cross <crossd@gmail.com>
|
|
|
|
8/5
|
|
---
|
|
configure.ac
|
|
- release version is now `rc2'
|
|
|
|
bashline.c
|
|
- command_word_completion_function: if direxpand is set, make sure to
|
|
run hint_text through bash_directory_completion_hook, since
|
|
readline will do that and we want to be able to match the results
|
|
readline returns. Fixes bug reported by Pat Somaru
|
|
<tuf18542@temple.edu>
|
|
|
|
command.h
|
|
- W_COMPLETE: new flag word value
|
|
- PF_COMPLETE: new flags value for param_expand
|
|
|
|
subst.h
|
|
- SX_STRIPDQ: new flag, used for string_extract_double_quoted
|
|
|
|
bashline.c
|
|
- bash_filename_stat_hook,bash_directory_completion_hook: pass W_COMPLETE
|
|
flag to expand_prompt_string
|
|
|
|
subst.c
|
|
- expand_word_internal: if W_COMPLETE in word->flags, pass PF_COMPLETE
|
|
to param_expand
|
|
- param_expand: if PF_COMPLETE in pflags, pass SX_COMPLETE to
|
|
extract_command_subst. This allows `"$(echo ~/' to perform
|
|
completion successfully
|
|
- string_extract_double_quoted: turn third argument into a flags arg,
|
|
old STRIPDQ is now set if flags&SX_STRIPDQ
|
|
- string_extract_double_quoted: changed callers, if third argument was
|
|
1, pass SX_STRIPDQ instead
|
|
- expand_word_internal: if W_COMPLETE in word->flags, pass SX_COMPLETE
|
|
in flags to string_extract_double_quoted for case '"'
|
|
- string_extract_double_quoted: if SX_COMPLETE in flags, pass it to
|
|
extract_command_subst
|
|
- expand_word_internal: if W_COMPLETE in word->flags, make sure W_COMPLETE
|
|
is in temp word passed to recursive call to expand_word_internal to
|
|
expand double-quoted string. Fixes bug reported by John Passaro
|
|
<john.a.passaro@gmail.com>
|
|
|
|
8/9
|
|
---
|
|
[bash-4.4-rc2 frozen]
|
|
|
|
8/10
|
|
----
|
|
subst.c
|
|
- sub_append_string: use size_t variable to store string length to
|
|
avoid integer overflow. Report from Siteshwar Vashisht
|
|
<svashisht@redhat.com>
|
|
- sub_append_string: `size' argument is now pointer to size_t; changed
|
|
istring_index in expand_word_internal to accommodate change
|
|
|
|
lib/sh/ufuncs.c
|
|
- include "posixselect.h" if HAVE_SELECT is defined, make sure that
|
|
fd_set and the rest are defined
|
|
|
|
8/11
|
|
----
|
|
lib/readline/histexpand.c
|
|
- history_tokenize_word: use ISDIGIT instead of isdigit for more
|
|
argument checking
|
|
- "chardefs.h": include for ISDIGIT define and <ctype.h>. Fix from
|
|
Mike Frysinger <vapier@gentoo.org>
|
|
|
|
lib/sh/eaccess.c,externs.h
|
|
- sh_eaccess: first argument now const char *
|
|
- sh_stataccess,sh_euidaccess: first argument now const char *, since
|
|
sh_stat and sh_eaccess call them.
|
|
Fix from Mike Frysinger <vapier@gentoo.org>
|
|
|
|
lib/glob/glob.c
|
|
- sh_eaccess: change local prototype
|
|
|
|
general.[ch]
|
|
- all_digits,legal_identifier,valid_nameref_value,importable_function_name,
|
|
exportable_function_name,check_binary_file,file_exists,file_isdir,
|
|
file_iswdir,same_file,make_absolute,valid_nameref_value: first
|
|
argument (always identifier or filename) is now a `const char *';
|
|
some second filename arguments now `const char *'.
|
|
Fix from Mike Frysinger <vapier@gentoo.org>
|
|
|
|
configure.ac,config.h.in
|
|
- uintptr_t: make sure it's defined to an integer type wide enough to
|
|
hold a pointer
|
|
|
|
lib/sh/tmpfile.c
|
|
- sh_seedrand: use `uintptr_t' to cast pointer value to int value,
|
|
instead of allowing truncation to take place, since srandom takes
|
|
an `unsigned int'.
|
|
Fix from Mike Frysinger <vapier@gentoo.org>
|
|
|
|
arrayfunc.[ch]
|
|
- valid_array_reference,array_variable_name,array_variable_part,
|
|
array_value_internal,array_value,get_array_value: first argument
|
|
(always variable name) now a `const char *'
|
|
Fix from Mike Frysinger <vapier@gentoo.org>
|
|
|
|
8/19
|
|
----
|
|
print_cmd.c
|
|
- xtrace_print_word_list: if (xtflags & 2), don't try to quote the
|
|
words in the LIST argument. Intended to be used in places where
|
|
the list has not yet been expanded
|
|
- xtrace_print_for_command_head: call xtrace_print_word_list with
|
|
flags argument of 2. Fixes issue reported by Aharon Robbins
|
|
<arnold@skeeve.com>
|
|
- xtrace_print_select_command_head: call xtrace_print_word_list with
|
|
flags argument of 2
|
|
|
|
8/21
|
|
----
|
|
lib/sh/netopen.c
|
|
- netopen: fix memory leak by freeing allocated path before error
|
|
return. Fix from Dmitry Goncharov <dgoncharov@users.sf.net>
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- change conditional commands description to make it clearer that
|
|
bash doesn't emulate /dev/fd if the OS provides it
|
|
|
|
8/22
|
|
----
|
|
braces.c
|
|
- expand_amble: free partial and tem on failure to allocate memory
|
|
for merged partial+result strvec. Fix from Dmitry Goncharov
|
|
<dgoncharov@users.sf.net>
|
|
|
|
8/23
|
|
----
|
|
jobs.c
|
|
- wait_for: don't call get_tty_state when a job finishes if we're
|
|
running it as part of programmable completion. We test
|
|
rl_readline_state. Fixes bug reported by Jaro Punta
|
|
<silly8888@gmail.com>
|
|
|
|
8/24
|
|
----
|
|
subst.c
|
|
- pat_subst: fix memory leak (mstr). Fix from Dmitry Goncharov
|
|
<dgoncharov@users.sf.net>
|
|
- split_at_delims: fix memory leak (d2). Fix from Dmitry Goncharov
|
|
<dgoncharov@users.sf.net>
|
|
|
|
8/26
|
|
----
|
|
subst.c
|
|
- match_upattern,match_wpattern: make sure that a trailing `*' is
|
|
not escaped (preceded by an odd number of backslashes) before we
|
|
append a `*' when checking whether a pattern matches anywhere in
|
|
the string
|
|
|
|
lib/readline/{input,signals}.c
|
|
- protect instances of SIGQUIT with #ifdef SIGQUIT; apparently
|
|
MinGW doesn't define it
|
|
- protect instances of SIGHUP with #ifdef SIGHUP; apparently
|
|
MinGW doesn't define it. From a report from Simon Sobisch
|
|
<simonsobisch@gnu.org>
|
|
|
|
xmalloc.o
|
|
- allocerr: only try to find the break and report it if we're using
|
|
the bash malloc; there's no guarantee that any other malloc is
|
|
using sbrk()
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- quote removal: add paragraph mentioning quote removal to beginning
|
|
of expansions section, referencing later paragraph. Report from
|
|
Michel Lanne <michel.lanne@gmail.com>
|
|
|
|
8/30
|
|
----
|
|
lib/readline/input.c
|
|
- protect instances of SIGALRM and SIGWINCH with #ifdef; apparently
|
|
MinGW doesn't define them. From a report from Simon Sobisch
|
|
<simonsobisch@gnu.org>
|
|
|
|
subst.c
|
|
- SPECIAL_VAR: make sure name is not the empty string before going on,
|
|
empty strings can result in unitialized reads
|
|
- CHECK_STRING_OVERRUN: semi-general macro to use in *extract* and
|
|
similar functions to to check whether a function called to parse an
|
|
embedded construct (like a backquoted command substitution) doesn't
|
|
consume the entire string because it's unterminated
|
|
- skip_double_quoted: make sure other extraction functions don't
|
|
consume the entire string (which they can if the construct is
|
|
unterminated) before incrementing the index and going on. Uses
|
|
CHECK_STRING_OVERRUN
|
|
- extract_dollar_brace_string: check for unterminated embedded
|
|
constructs consuming the entire string with CHECK_STRING_OVERRUN ('`')
|
|
- skip_matched_pair: use CHECK_STRING_OVERRUN to make sure unterminated
|
|
embedded "`", $(, ${ don't cause out-of-bounds reads
|
|
|
|
parse.y
|
|
- parse_comsub: when parsing a here-document delimiter, make sure we
|
|
don't try to use `nestret' after freeing it. Fixes bug reported by
|
|
Franco Costantini <franco.costantini.20@gmail.com>
|
|
|
|
[bash-4.4 frozen]
|
|
|
|
9/10
|
|
----
|
|
trap.c
|
|
- run_debug_trap: only give the terminal to pipeline_pgrp if
|
|
subshell_environment doesn't include SUBSHELL_ASYNC|SUBSHELL_PIPE.
|
|
Fixes bug reported by Matthew Giassa <matthew@giassa.net>
|
|
|
|
execute_cmd.c
|
|
- execute_simple_command: if user_subshell is set, check and set
|
|
SUBSHELL_ASYNC if asynchronous is set as well as setting
|
|
SUBSHELL_PAREN
|
|
|
|
9/17
|
|
----
|
|
builtins/common.c
|
|
- display_signal_list: if 0 is supplied as an argument to kill -l,
|
|
display a signal-out-of-range error. Fixes bug reported by
|
|
Martijn Dekker <martijn@inlv.org>
|
|
|
|
9/18
|
|
----
|
|
print_cmd.c
|
|
- print_heredoc_bodies: take a list of redirections, all here documents,
|
|
and print the here-document bodies including the ending delimiter,
|
|
followed by a newline
|
|
- print_redirection_list: print the heredoc headers the first time
|
|
through the list of redirections so we print them in the same left-
|
|
to-right order they're supplied; print the bodies and delimiters with
|
|
print_heredoc_bodies after we print all the redirections if we're
|
|
not printing a list of commands (printing_connection == 0). Fix for
|
|
problem reported by Isabella Parakiss <izaberina@gmail.com>
|
|
- print_deferred_heredocs: don't print heredoc headers, since they're
|
|
now printed in print_redirection_list
|
|
- print_deferred_heredocs: use print_heredoc_bodies
|
|
|
|
9/20
|
|
----
|
|
builtins/mapfile.def
|
|
- readarray: update usage synopsis to include -d delim. Report and
|
|
fix from jhankins@homewood.k12.al.us
|
|
|
|
test.c
|
|
- test_binop: if op[0] == '-', make sure op[1] != 0 before checking
|
|
op[2] or op[3]. Fixes out-of-bounds read reported by Franco
|
|
Costantini <franco.costantini.20@gmail.com>
|
|
|
|
parse.y
|
|
- cond_term: if yylval.word->word[0] == '-' make sure word[1] != 0
|
|
before checking word[2] and calling test_unop. Fixes out-of-bounds
|
|
read reported by Franco Costantini <franco.costantini.20@gmail.com>
|
|
- make sure to check all instances of the return value of the
|
|
simple_command production before trying to hook redirections onto it,
|
|
since it can potentially return NULL.
|
|
Reported by Franco Costantini <franco.costantini.20@gmail.com>
|
|
|
|
9/21
|
|
----
|
|
parse.y
|
|
- token_is_assignment: make sure to check that the return value from
|
|
assignment() finds the `=' we just added at index I to avoid false
|
|
positives from g=g=g=g=g=g=(). Reported by Franco Costantini
|
|
<franco.costantini.20@gmail.com>
|
|
|
|
9/22
|
|
----
|
|
parse.y
|
|
- token_is_assignment: if we're not using the bash malloc (which has
|
|
guard bytes after the requested allocation size), use a new
|
|
buffer so we can make sure it's big enough to hold the current
|
|
token and at least two additional characters. Reported by
|
|
Franco Costantini <franco.costantini.20@gmail.com>
|
|
|
|
9/23
|
|
----
|
|
execute_command.c
|
|
- execute_in_subshell: call without_job_control for both job control
|
|
and non-job-control builds to avoid waiting for last_made_pid
|
|
inherited from parent shell. Related to fix from 8/4 to
|
|
initialize_subshell. Fixes bug reported by Martijn Dekker
|
|
<martijn@inlv.org>
|
|
|
|
builtins/declare.def
|
|
- local_builtin: allow `local --help' to work even when not executing
|
|
a function. Suggestion from Norm Abramovitz <norm@starkandwayne.com>
|
|
|
|
9/25
|
|
----
|
|
builtins/printf.def
|
|
- bexpand: if passed a null or empty string, return a newly-allocated
|
|
empty string (so the return value can always be freed) instead of
|
|
NULL.
|
|
- printstr: if passed a null string, treat it as if it were an empty
|
|
string so any precision or fieldwidth arguments are handled
|
|
correctly. Report from isabella parakiss <izaberina@gmail.com>
|
|
|
|
subst.c
|
|
- skip_matched_pair: make the flags argument of 1 affect whether or
|
|
not backslash can quote characters in the string, so it affects
|
|
all quoting mechanisms
|
|
|
|
arrayfunc.c
|
|
- unbind_array_element: now takes a third (flags) argument; flags&1
|
|
means to not expand an associative array index. This is only called
|
|
from a shell builtin context, which means the argument should have
|
|
already undergone word expansion, so it should be ok. Will still
|
|
be a problem for uses like "unset -v 'var[$ind]'", quoted to avoid
|
|
globbing
|
|
- valid_array_reference: pass second flags argument to skipsubscript;
|
|
still set to 0 by all callers
|
|
|
|
arrayfunc.h
|
|
- unbind_array_element: updated prototype
|
|
|
|
builtins/set.def
|
|
- unset_builtin: add third argument of 1 to unbind_array_element calls
|
|
[TEMPORARILY DISABLED]
|
|
- unset_builtin: call valid_array_reference with second arg of 1 to
|
|
handle unmatched pairs of quotes and [/]
|
|
|
|
array.c
|
|
- array_reference: optimize access locality as well as sequential
|
|
access by adding ability to start from last-accessed element and move
|
|
backwards or forwards depending on the desired index. Inspired by
|
|
report from Tom McCurdy <tom.j.mccurdy@gmail.com> and followup from
|
|
Christian Franke <Christian.Franke@t-online.de>
|
|
|
|
variables.c
|
|
- all_array_variables: include associative arrays, not just indexed
|
|
arrays. Reported by Grisha Levit <grishalevit@gmail.com>
|
|
|
|
execute_cmd.c
|
|
- execute_disk_command: if we're optimizing out the fork (CMD_NO_FORK),
|
|
decrement the shell level so we don't end up incrementing it twice.
|
|
We should decrement the shell level for an implicit exec like an
|
|
explicit one. Reported by Stephane Chazelas
|
|
<stephane.chazelas@gmail.com>
|
|
|
|
builtins/exec.def
|
|
- exec_builtin: don't bother to decrement the shell level if we are
|
|
already in a `(command)' subshell. Reported by Stephane Chazelas
|
|
<stephane.chazelas@gmail.com>
|
|
|
|
lib/readline/macro.c
|
|
- macro_level: count of macro nesting level, maintained by
|
|
_rl_push_executing_macro and _rl_pop_executing macro
|
|
- _rl_with_macro_input: if current nesting level exceeds
|
|
MAX_MACRO_LEVEL, abort the current command line with _rl_abort_internal
|
|
and return to the top level. Reported by Christian Klomp
|
|
<christianklomp@gmail.com>
|
|
|
|
lib/readine/history.c
|
|
- add_history: if allocating the history list for the first time,
|
|
make sure the max history list size isn't so large that it will
|
|
cause allocation errors. Cap it at MAX_HISTORY_INITIAL_SIZE
|
|
(8192). Reported by Sean Zha <freeman_cha@hotmail.com>
|
|
|
|
jobs.c
|
|
- wait_for: if a foreground job with job control enabled is killed by a
|
|
SIGINT and sourcelevel != 0, act as if we received the SIGINT so the
|
|
file sourcing can be terminated. Reported by PePa
|
|
<peterkelly@passchier.net>
|
|
|
|
9/26
|
|
----
|
|
subst.c
|
|
- read_comsub: only warn once for null bytes in command substitution
|
|
output, instead of once for every null byte
|
|
|
|
arrayfunc.c
|
|
- array_variable_part: now takes a `flags' argument; changed all callers
|
|
to initially pass 0
|
|
- array_variable_name: now takes a `flags' argument; changed all callers
|
|
to initially pass 0
|
|
- array_variable_name: pass `flags' argument to skipsubscript instead
|
|
of just passing 0
|
|
|
|
arrayfunc.h
|
|
- array_variable_{name,part}: added new argument to prototypes
|
|
|
|
9/29
|
|
----
|
|
bashline.c
|
|
- bash_directory_completion_hook: don't bother to try and expand a
|
|
${ or $( that isn't complete; expand_prompt_string will complain.
|
|
Fixes reports from John Passaro <john.a.passaro@gmail.com> and
|
|
Valentin Bajrami <valentin.bajrami@gmail.com>
|
|
|
|
lib/readline/history.c
|
|
- _hs_append_history_line: use a strategy that attempts to avoid
|
|
realloc copying memory to a newly-allocated block if the history
|
|
line we're appending to gets `too long' (currently 256 bytes).
|
|
We reallocate in powers of 2 starting at 512, and rely on realloc
|
|
not allocating a new block and copying into it if the size is the
|
|
same as the last call to realloc. Addresses issue raised by
|
|
Hubert Schmid <h.schmid@gmx.de>
|
|
|
|
trap.h
|
|
- check_signals: new extern declaration
|
|
- trapped_signal_received: new extern declaration
|
|
|
|
builtins/read.def
|
|
- read_builtin: if one of the zread* functions returns < 0 (which
|
|
usually only happens in Posix mode), make sure we call check_signals()
|
|
before eventually calling run_pending_traps() because zread() isn't
|
|
going to call it
|
|
- include trap.h for correct extern functions and variable declarations
|
|
|
|
lib/sh/zread.c
|
|
- zread: if executing a builtin, call check_signals_and_traps() for
|
|
backwards compatibility. If not, call check_signals() only, because
|
|
we don't want to run traps during, for instance, reading command
|
|
substitution output. Fixes race condition bug reported by Luiz Angelo
|
|
Daros de Luca <luizluca@gmail.com>
|
|
|
|
9/30
|
|
----
|
|
subst.c
|
|
- command_substitute: reset parse_and_execute_level to 0 in the child
|
|
process, since it's independent of the other parse_and_execute
|
|
calls. Adds command substitution inside other parse_and_execute
|
|
calls optimizations to suppress forks, as suggested by
|
|
Martijn Dekker <martijn@inlv.org>
|
|
|
|
10/3
|
|
----
|
|
configure.ac
|
|
- SHOBJ_STATUS: make sure it defaults to unsupported and is substituted
|
|
if the shobj-conf script isn't run. Fixes `make install' bug with
|
|
a minimal config reported by Andrew Tomazos <andrewtomazos@gmail.com>
|
|
|
|
10/5
|
|
----
|
|
support/shobj-conf
|
|
- darwin: set compatibility_version for a shared build of the readline
|
|
library (the standalone readline distribution shares this file) to
|
|
$(SHLIB_MAJOR)$(SHLIB_MINOR). Recommendation from Max Horn
|
|
<max@quendi.de>
|
|
|
|
10/6
|
|
----
|
|
array.h
|
|
- array_first_index: new convenience define
|
|
|
|
array.c
|
|
- ADD_AFTER: new define, complement of ADD_BEFORE
|
|
- UNSET_LASTREF: now takes an array as an argument, prepping for move
|
|
of lastref pointer into the array struct
|
|
- array_insert: check whether we are adding at the beginning of the
|
|
array and take a fast path if so
|
|
- array_insert: use same strategy as array_reference to find the place
|
|
to insert, starting from the last-referenced element and moving
|
|
forward or back from there; use ADD_AFTER if moving backward
|
|
- array_insert: if replacing an existing element, just replace the
|
|
value with new->value instead of the entire element
|
|
- array_reference: short-circuit quickly if looking for an element
|
|
before the first assigned index
|
|
- array_reference: if we don't find the element, leave lastref pointing
|
|
to the closest element under the assumption we will be assigning or
|
|
looking for something close
|
|
- array_reference: take advantage of ordered indexes to short-circuit
|
|
when looking for element that is not set
|
|
|
|
10/7
|
|
----
|
|
array.c
|
|
- array_remove: short-circuit if asked to remove index after max
|
|
index or before first index
|
|
|
|
10/10
|
|
-----
|
|
lib/malloc/malloc.c
|
|
- internal_realloc: if we are requesting reallocation to the same size
|
|
as the block's current size, short-circuit and return `mem' right
|
|
after doing bounds check
|
|
- internal_realloc: if we are reducing the size of an allocation, and
|
|
the new size fits in the next lower bin, just keep the same block
|
|
and adjust the size, so we can avoid some copies
|
|
|
|
parse.y
|
|
- set_line_mbstate: keep track of the allocated size of
|
|
shell_input_line_property, only request reallocation if the size
|
|
increases, but don't let it get too big
|
|
|
|
10/11
|
|
-----
|
|
jobs.c
|
|
- wait_for_background_pids: make sure we wait for pid in
|
|
last_procsub_child since it's not found in any job -- still needs
|
|
more work to wait for multiple process substitutions
|
|
|
|
subst.c
|
|
- process_substitute: if make_child fails, make sure we call
|
|
restore_pipeline to undo the previous save_pipeline()
|
|
|
|
10/15
|
|
-----
|
|
subst.c
|
|
- process_substitute,command_substitute: leave subshell_level (reflected
|
|
as $BASH_SUBSHELL) intact for any exit trap instead of decrementing
|
|
it. Suggested by Martijn Dekker <martijn@inlv.org>
|
|
|
|
builtins/evalstring.c
|
|
- optimize_subshell_command: new function, framework for optimizing
|
|
out forks for command that have already forked and are executing
|
|
in a subshell. Not used yet
|
|
|
|
expr.c
|
|
- readtok: if we have a post-increment or post-decrement, and the
|
|
previous token is not a string, check whether the previous token is
|
|
a number that results from a pre-increment or pre-decrement, and
|
|
make that an error. Report from Conrad Hoffmann <ch@bitfehler.net>
|
|
|
|
10/16
|
|
-----
|
|
aclocal.m4
|
|
- BASH_JOB_CONTROL_MISSING: convert from AC_TRY_RUN to AC_TRY_COMPILE
|
|
with existing set of preprocessor defines, so it can work when
|
|
cross-compiling. Suggested by Felix Janda <felix.janda@posteo.de>
|
|
|
|
10/19
|
|
-----
|
|
variables.c
|
|
- get_bashpid: BASHPID is no longer readonly; assignments to it are
|
|
just ignored.
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- BASHPID: note that assignments are ignored and unsetting BASHPID
|
|
causes it to lose its special properties
|
|
|
|
10/28
|
|
-----
|
|
builtins/pushd.def
|
|
- popd_builtin: make sure to check the normalized stack offset
|
|
(i.e., negatives counting back from the end of the stack) is within
|
|
bounds before trying to free that stack entry. Report from
|
|
Fernando Muñoz <fernando@null-life.com>
|
|
|
|
lib/readline/histfile.c
|
|
- chown: protect calls with HAVE_CHOWN. Fixes for MinGW{64,32} from
|
|
J. Peter Mugaas <jpmugaas@suddenlink.net>
|
|
|
|
lib/readline/colors.c
|
|
- S_ISDIR: add define if missing
|
|
- S_ISUID, S_ISGID, S_ISLNK, S_ISSOCK: don't use unless defined.
|
|
Fixes for MinGW{64,32} from J. Peter Mugaas <jpmugaas@suddenlink.net>
|
|
|
|
bashhist.c
|
|
- current_command_line_comment: set to the most recent line in a
|
|
possibly multi-line command that contains a shell comment; set in
|
|
maybe_add_history and bash_add_history to either the current
|
|
command number or -2
|
|
- maybe_add_history: set current_command_line_comment for first line
|
|
of command
|
|
- bash_add_history: chars_to_add set to "\n" if the current command line
|
|
is one greater than the previous line containing a comment
|
|
(current_command_line_comment). Fixes complaint from back in
|
|
January, 2016 from Dave Rutherford <dave@evilpettingzoo.com>
|
|
|
|
array.h
|
|
- lastref: move last-referenced pointer into each array struct, so all
|
|
arrays can have reference locality
|
|
|
|
array.c
|
|
- array_create: set lastref element to 0
|
|
- array_copy: if copying the lastref in array a, set the new lastref
|
|
in the copy to the same element
|
|
- IS_LASTREF, LASTREF_START, LASTREF, INVALIDATE_LASTREF, SET_LASTREF,
|
|
UNSET_LASTREF: change to use new array `lastref' member
|
|
|
|
pathexp.c
|
|
- quote_string_for_globbing: if quoting for a regexp, make sure to
|
|
skip and copy a leading `^' in a bracket expression, and skip and
|
|
copy a subsequent `]' (after an optional `^'), so that leading
|
|
bracket doesn't close the bracket expression. Report from
|
|
Stephane Chazelas <stephane.chazelas@gmail.com>
|
|
|
|
10/29
|
|
-----
|
|
subst.c
|
|
- extract_delimited_string: add calls to CHECK_STRING_OVERRUN for
|
|
$( inside $((, nested OPENERs, nested ALT_OPENERs, and backquotes
|
|
- skip_to_delim: add calls to CHECK_STRING_OVERRUN for $(, ${,
|
|
process substitution
|
|
- extract_dollar_brace_string: add calls to CHECK_STRING_OVERRUN for
|
|
$(
|
|
- extract_dollar_brace_string: use skipsubscript to skip over the
|
|
array subscript in ${var[sub]} (non-quoted case uses string_extract,
|
|
which already uses skipsubscript). Tagged for bash-5.0
|
|
|
|
10/30
|
|
-----
|
|
variables.c
|
|
- EPOCHSECONDS: new dynamic variable, time in seconds since Unix
|
|
epoch; assignments are ignored. Can be used on systems where
|
|
strftime() doesn't support '%s'
|
|
- EPOCHREALTIME: new dynamic variable, time in seconds since Unix
|
|
epoch with microsecond granularity
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- EPOCHSECONDS documentation
|
|
- EPOCHREALTIME documentation
|
|
|
|
execute_cmd.c
|
|
- decpoint: moved to locale.c, renamed locale_decpoint; changed callers
|
|
|
|
{bashintl,externs}.h
|
|
- locale_decpoint: extern declaration or #define if support for
|
|
localeconv() not there
|
|
|
|
10/31
|
|
-----
|
|
lib/malloc/malloc.c
|
|
- posix_memalign: add new posix-mandated interface
|
|
|
|
examples/loadables/rm.c
|
|
- rm: minimal loadable builtin, removes files and directories, only
|
|
handles -r and -f options. Original from Tim Ruehsen
|
|
<tim.ruehsen@gmx.de>, heavily rewritten for inclusion as loadable
|
|
|
|
examples/loadables/Makefile.in
|
|
- rm: add rules to build rm as one of the `other' targets
|
|
|
|
examples/loadables/stat.c
|
|
- stat: new loadable builtin that takes a filename and loads the info
|
|
returned by stat(2) into an associative array specified by the -A
|
|
argument (default STAT)
|
|
|
|
11/1
|
|
----
|
|
variables.c
|
|
- BASH_ARGV0: new dynamic variable, returns $0 on reference and sets
|
|
$0 on assignment. From a suggestion from Rocky Bernstein <rocky@gnu.org>
|
|
a few years ago
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- BASH_ARGV0: document
|
|
|
|
11/2
|
|
----
|
|
lib/glob/sm_loop.c
|
|
- parse_collsym: make sure to not return an out-of-bounds read if a
|
|
collating symbol is unterminated. Fixes OOB read reported by
|
|
Jerzy Kramarz <op7ica@gmail.com>
|
|
- brackmatch: after incrementing p, before checking whether it's a
|
|
character range, check whether *p was NULL before the increment
|
|
and short-circuit the bracket expression if it is
|
|
|
|
jobs.c
|
|
- discard_last_procsub_child: new function, safely discards
|
|
last_procsub_child and sets it to NULL
|
|
|
|
subst.c
|
|
- process_substitute: call discard_last_procsub_child instead of
|
|
calling discard_pipeline directly. Fixes bug reported by
|
|
Christian Weisgerber <naddy@mips.inka.de>
|
|
|
|
11/3
|
|
----
|
|
shell.h
|
|
- EX_DISKFALLBACK: new special return status available to builtins;
|
|
means to attempt to execute a disk command with the same name as
|
|
the builtin
|
|
|
|
examples/loadables/rm.c
|
|
- if we see the -i option, return EX_DISKFALLBACK
|
|
|
|
execute_cmd.c
|
|
- execute_simple_command: if executing a builtin returns EX_DISKFALLBACK,
|
|
try running execute_disk_command instead
|
|
|
|
bashline.c
|
|
- shell_expand_line: use expand_word to expand the readline line
|
|
buffer, which allows us to pass flags with the word. If a numeric
|
|
argument is supplied, do not perform quote removal (pass
|
|
Q_HERE_DOCUMENT since here-doc quoting does the right thing) and
|
|
do not perform command or process subsitution. From a suggestion
|
|
by Dabrien 'Dabe' Murphy <dabe@dabe.com> based on an old bug-bash
|
|
discussion
|
|
|
|
subst.c
|
|
- expand_word_internal: note that we have added a quoted IFS char to
|
|
istring by setting sentinel has_quoted_ifs. Usually we only add
|
|
one if we are not going to be performing word splitting, but we
|
|
will not perform word splitting if there's no expansion, so we need
|
|
to take care of that case
|
|
- expand_word_internal: when performing final word split, if there are
|
|
no expansions but has_quoted_ifs is non-zero, call remove_quoted_ifs()
|
|
to remove any quoted ifs characters we added while processing
|
|
- remove_quoted_ifs: new function, removes CTLESC chars preceding
|
|
(single-byte) chars in IFS. Used when we are not performing word
|
|
splitting. Fixes bug reported by Martijn Dekker <martijn@inlv.org>
|
|
|
|
11/4
|
|
----
|
|
lib/readline/macro.c
|
|
- _rl_peek_macro_key: return the next character from the current
|
|
keyboard macro; the next character from the `next' keyboard macro,
|
|
if there is one, if at the end of the current macro; or 0 to
|
|
indicate that we are at the end of a keyboard macro sequence
|
|
|
|
lib/readline/rlprivate.h
|
|
- _rl_peek_macro_key: extern declaration
|
|
|
|
lib/readline/readline.c
|
|
- _rl_dispatch_subseq: add test for ESC at the end of a keyboard macro,
|
|
which should cause the keyboard timeout for ESC to kick in. The
|
|
previous test didn't run the timeout code if executing from a macro,
|
|
even if we had read the last character of the macro. Fixes bug
|
|
reported by Clark Wang <clarkw@vmware.com>
|
|
|
|
lib/glob/sm_loop.c
|
|
- GMATCH: allow trailing backslash in pattern to explicitly match a
|
|
backslash that is the last character in the string. Bug report from
|
|
Stephane Chazelas <stephane.chazelas@gmail.com>
|
|
|
|
11/5
|
|
----
|
|
builtins/common.c
|
|
- display_signal_list: if displaying a signal name corresponding to an
|
|
exit status > 128, don't display the SIG prefix at all. Old code
|
|
made displaying the SIG prefix dependent on JOB_CONTROL define.
|
|
Report and fix from Martijn Dekker <martijn@inlv.org>
|
|
|
|
execute_cmd.c
|
|
- execute_subshell_builtin_or_function: call without_job_control even
|
|
if JOB_CONTROL is not defined. Similar to fix from 9/23.
|
|
Report from Martijn Dekker <martijn@inlv.org>
|
|
|
|
execute_cmd.c
|
|
- execute_simple_command: free memory allocated and passed to
|
|
make_child in the child process if JOB_CONTROL is defined
|
|
- execute_command_internal: free memory allocated and passed to
|
|
make_child in the child process created to run a () subshell or a
|
|
compound command within a pipeline if JOB_CONTROL is defined
|
|
- execute_coproc: free memory allocated and passed to make_child in
|
|
the child process if JOB_CONTROL is defined
|
|
- execute_disk_command: free memory allocated and passed to
|
|
make_child in the child process if JOB_CONTROL is defined. This
|
|
series of fixes is the result of reports from
|
|
Eduardo A. Bustamante López <dualbus@gmail.com>
|
|
|
|
11/6
|
|
----
|
|
lib/sh/unicode.c
|
|
- u32toutf16: fix to prevent outputting broken surrogate pairs for
|
|
Japanese locales (ja_JP.UTF-8) on cygwin (which uses UTF-16 natively).
|
|
Report and fix from Koichi MURASE <myoga.murase@gmail.com>
|
|
|
|
builtins/trap.def
|
|
- trap_builtin: if OP is `-' (revert), set the SIGINT signal handler
|
|
to sigint_sighandler if the shell is interactive and sourcing a
|
|
file (interactive_shell && sourcelevel) or running a trap
|
|
(interactive_shell && running_trap) even if it's not currently
|
|
interactive. Report from Martijn Dekker <martijn@inlv.org>
|
|
|
|
builtins/read.def
|
|
- check for and read multibyte characters in all cases, not just when
|
|
we are reading a specific number of characters, as long as
|
|
mb_cur_max > 1
|
|
|
|
subst.c
|
|
- expand_word_internal: some improvements to code that converts istring
|
|
into a WORD_LIST * to avoid multiple allocations and copies of
|
|
istring, which is already malloc'ed memory -- reduce number of malloc
|
|
and free calls
|
|
|
|
test.c
|
|
- unary_test: make sure if we test -v array[@] or array[*] that we
|
|
free the return value from array_value
|
|
|
|
11/8
|
|
----
|
|
expr.c
|
|
- expcond: make sure to set `noeval' before reading tokens depending on
|
|
the result of the conditional test, since readtok() can evaluate
|
|
identifiers (and recursively those containing expressions). Report
|
|
and fix from Koichi MURASE <myoga.murase@gmail.com>
|
|
|
|
builtins/evalstring.c
|
|
- should_suppress_fork: make sure to check for traps on EXIT and
|
|
ERR, since any_signals_trapped() only checks for `real' signals,
|
|
not the fake shell ones. Fixes bug reported by Werner Fink
|
|
<werner@suse.de>
|
|
- optimize_subshell_command: ditto
|
|
|
|
11/9
|
|
----
|
|
eval.c
|
|
- reader_loop: change so that we don't reset the SIGINT handler every
|
|
time through the command loop in an interactive shell if the signal
|
|
is trapped (as the comment noted). Reported by Report from Martijn
|
|
Dekker <martijn@inlv.org>
|
|
|
|
subst.c
|
|
- parameter_brace_{patsub,remove_pattern,transform,casemod}: save and
|
|
restore this_command_name while temporarily setting it for use in
|
|
error messages. Fixes use-after-free error reported by
|
|
Jerzy Kramarz <op7ica@gmail.com>
|
|
- string_extract_verbatim: make sure when we increment i by 2 due to
|
|
a CTLESC or CTLESC-CTLNUL that we don't read past the end of the
|
|
string. This can happen if the string ends with an odd number of
|
|
CTLESC chars. Fixes oob-read error reported by
|
|
Jerzy Kramarz <op7ica@gmail.com>
|
|
|
|
11/11
|
|
-----
|
|
configure.ac,aclocal.m4
|
|
- BASH_FUNC_SBRK: make sure sbrk actually works, instead of being just
|
|
a stub function like on several Linux distributions
|
|
|
|
lib/malloc/malloc.c
|
|
- malloc_usable_size: return the maximum number of bytes available for
|
|
a particular memory allocation (size of block allocated for it)
|
|
|
|
11/12
|
|
-----
|
|
configure.ac
|
|
- changes to make --enable-profiling work on Linux (-pg, no static link,
|
|
no -static in LDFLAGS)
|
|
|
|
Makefile.in
|
|
- changes to make --enable-profiling work on Linux (take
|
|
${PROFILE_FLAGS} out of BASE_CCFLAGS, add to CCFLAGS instead; add
|
|
BASE_LDFLAGS define that doesn't include -pg or -static; use
|
|
BASE_LDFLAGS in LDFLAGS; move ${PROFILE_FLAGS} and ${STATIC_LD} to
|
|
LDFLAGS)
|
|
|
|
tests/run-gprof
|
|
- changes to make profiling test suite with gprof work on Linux (set
|
|
GMON_OUT_PREFIX to handle multiple profiled processes per test;
|
|
change default filename to gmon.out from bash.gmon; look for
|
|
gprof output files in ${TMPDIR} instead of /tmp; handle multiple
|
|
profiling files starting with $GMON_OUT_PREFIX)
|
|
|
|
locale.c
|
|
- locale_isutf8: use locale_charset() if it's available and nl_langinfo
|
|
isn't
|
|
- locale_isutf8: add code to parse a locale specification and determine
|
|
whether the encoding is UTF-8 (or utf8) in the absence of
|
|
nl_langinfo and locale_charset
|
|
- set_default_locale: make sure to set locale_utf8locale early on
|
|
- locale_utf8locale: set via call to locale_isutf8 wherever LANG,
|
|
LC_ALL, or LC_CTYPE is set
|
|
|
|
11/13
|
|
-----
|
|
lib/readline/display.c
|
|
- rl_redisplay: handle report of potential integer overflow in
|
|
horizontal display mode from Mateusz Lenik <mlen@mlen.pl>
|
|
|
|
lib/sh/mbschr.c
|
|
- mbschr: if in a UTF-8 locale (locale_utf8locale) and we are looking
|
|
for an ASCII character, use (essentially) strchr as a shortcut
|
|
|
|
lib/sh/shmbchar.c
|
|
- utf8_{mbstrlen,mblen,mbsmbchar,mbsnlen}: UTF-8-specific replacement
|
|
functions (should also be able to use utf8_mblen in subst.c:
|
|
string_extract_verbatim)
|
|
- mbsmbchar: if locale_utf8locale is true, call utf8_mbsmbchar
|
|
- mbsmbchar: in UTF-8 locale, use utf8_mblen instead of mbrlen (not
|
|
used if earlier shortcut taken)
|
|
|
|
lib/sh/unicode.c
|
|
- u32cconv: don't use nl_langinfo early to call u32toutf8()
|
|
- u32cconv: use locale_utf8locale to set utf8locale
|
|
- u32cconv: when initializing (u32init == 0), use locale_charset, then
|
|
nl_langinfo, then stub_charset to determine the charset
|
|
- u32cconv: even if we don't have iconv, if locale_utf8locale is non-
|
|
zero, return u32toutf8
|
|
|
|
11/15
|
|
-----
|
|
lib/readline/nls.c
|
|
- _rl_init_locale: new function, split off code that determines current
|
|
locale from _rl_init_eightbit, use it to set _rl_utf8locale
|
|
|
|
lib/readiline/rlprivate.h
|
|
- _rl_init_locale: new extern declaration
|
|
|
|
lib/readline/readline.c
|
|
- rl_initialize: if not initializing everything the first time, call
|
|
_rl_init_locale to check current locale and set _rl_utf8locale
|
|
|
|
lib/readline/text.c
|
|
- _rl_insert_char: optimize cases where we are inserting a single-byte
|
|
character in a locale with multibyte characters
|
|
- _rl_insert_char: check whether character is single byte if we know
|
|
we are in a UTF-8 locale, optimize single-byte case to avoid calls
|
|
to mbrtowc and memmove/memcpy
|
|
|
|
lib/readline/mbutil.c
|
|
- _rl_char_value: if we are in a UTF-8 locale (_rl_utf8locale) and the
|
|
current character does not have the eighth bit set ((c & 0x80) == 0),
|
|
return that char without bothering to call mbrtowc
|
|
- _rl_adjust_point: don't bother calling mbrlen if we are in a UTF-8
|
|
locale and the current character is not a multibyte character
|
|
- _rl_find_next_mbchar_internal: if we are in a UTF-8 locale, use that
|
|
to avoid calls to mbrtowc
|
|
|
|
lib/readline/display.c
|
|
- _rl_col_width: if in a UTF-8 locale, take advantage of that to avoid
|
|
calls to mbrlen and mbrtowc
|
|
- rl_redisplay: if in a UTF-8 locale, take advantage of that to avoid
|
|
calls to mbrtowc
|
|
|
|
11/17
|
|
-----
|
|
lib/readline/histlib.h
|
|
- PATTERN_SEARCH: new flag for history search interfaces, means to
|
|
search for a pattern as Posix specifies
|
|
|
|
lib/readline/histsearch.c
|
|
- history_search_internal: now takes a `flags' argument instead of just
|
|
an `anchored' argument to accommodate PATTERN_SEARCH
|
|
- _hs_history_patsearch: new internal interface to use when flags
|
|
specify PATTERN_SEARCH
|
|
|
|
lib/readline/rlprivate.h
|
|
- SF_PATTERN: new flag for non-incremental search contexts, means to
|
|
treat search string as a pattern (maps to PATTERN_SEARCH)
|
|
|
|
lib/readline/search.c
|
|
- noninc_dosearch: takes an additional `flags' argument for SF_PATTERN
|
|
- noninc_search_from_pos: takes an additional `flags' argument for
|
|
SF_PATTERN
|
|
- noninc_dosearch: pass flags argument through to noninc_search_from_pos
|
|
- _rl_nsearch_init: if we are in vi command mode, and `pchar' (key used
|
|
to invoke the search) is `?' or `/', add SF_PATTERN to the flags
|
|
to conform to Posix spec for vi-mode editing
|
|
- _rl_nsearch_dosearch: if cxt->sflags indicates that we should do a
|
|
pattern search, pass SF_PATTERN to noninc_search_from_pos
|
|
- rl_noninc_forward_search_again: if in vi command mode and key == `N',
|
|
make sure flags arg passed to noninc_dosearch includes SF_PATTERN
|
|
- rl_noninc_reverse_search_again: if in vi command mode and key == `n',
|
|
make sure flags arg passed to noninc_dosearch includes SF_PATTERN
|
|
- rl_history_search_internal: pass extra flags arg to noninc_search_from_pos
|
|
|
|
11/18
|
|
-----
|
|
lib/readline/search.c
|
|
- noninc_search_from_pos: takes a new argument, a pointer to int where
|
|
it stores the offset of the match in the history line (if non-NULL),
|
|
modified callers
|
|
- rl_history_search_internal: pass newcol pointer to
|
|
noninc_search_from_pos to avoid having to recompute the match offset
|
|
in the matching history entry
|
|
|
|
config.h.in
|
|
- define HAVE_FNMATCH if we have the fnmatch function (configure was
|
|
already checking for it)
|
|
|
|
lib/readline/histsearch.c
|
|
- _hs_history_patsearch: transform the pattern into one ending in a
|
|
`*' to avoid having to perform multiple match attempts from each
|
|
index in the history line
|
|
- history_search_internal: changes to handle pattern matching if
|
|
PATTERN_SEARCH is in the flags and HAVE_FNMATCH is defined. This
|
|
makes vi-mode history searching treat the user-specified search
|
|
string as an fnmatch pattern, as Posix requires. Fixes issue
|
|
reported by <jwdevel@gmail.com>
|
|
|
|
11/19
|
|
-----
|
|
builtins/shopt.def
|
|
- shopt_enable_hostname_completion: only declare this if READLINE
|
|
defined, since that's the only time it's used. Reported by
|
|
isabella parakiss <izaberina@gmail.com>
|
|
|
|
11/20
|
|
-----
|
|
builtins/common.c
|
|
- display_signal_list: make `kill -l 0' print `EXIT', modifying change
|
|
from 9/17
|
|
|
|
11/21
|
|
-----
|
|
subst.c
|
|
- expand_word_internal: when the shell encounters a backslash as the
|
|
last character of the string, don't try to add a '\'0' to the end
|
|
of the string if the string is quoted, just add a <CTLESC><\> and
|
|
skip to the end of string processing. Fixes oob-read error
|
|
reported by Jerzy Kramarz <op7ica@gmail.com>
|
|
|
|
test.c
|
|
- two_arguments: check argv[pos][1] before checking argv[pos][2] when
|
|
looking for a unary argument. Fixes oob-read error on single `-'
|
|
in unary operator position reported by Jerzy Kramarz
|
|
<op7ica@gmail.com>
|
|
- ANDOR: check s[1] before checking s[2] in case s[1] == end of string.
|
|
Fixes oob-read error reported by Jerzy Kramarz <op7ica@gmail.com>
|
|
|
|
subst.c
|
|
- command_substitute: now takes additional flags argument, changed one
|
|
caller (param_expand) to pass through PF_ASSIGNRHS flag; other callers
|
|
pass 0
|
|
- command_substitute: pass through flags argument to read_comsub
|
|
- read_comsub: now takes additional new flags argument to indicate
|
|
whether or not the word is in a context where word splitting will
|
|
eventually be performed
|
|
- read_comsub: if we are running in a context where word splitting
|
|
will not take place (PF_ASSIGNRHS), we read a CTLESC, and CTLESC is
|
|
in $IFS, add a CTLESC to make sure it gets through a round of
|
|
dequoting
|
|
|
|
11/23
|
|
-----
|
|
parse.y
|
|
- xparse_dolparen: since reset_parser frees the pushed string list,
|
|
and this is supposed to be a separate parsing context, we need to
|
|
save and restore pushed_string_list around the call to parse_string
|
|
and reset_parser. Fixes bug reported by Dan Douglas
|
|
<ormaaj@gmail.com>
|
|
|
|
bashhist.h
|
|
- HISTEXPAND_DEFAULT: default value of history_expansion, moved here
|
|
from flags.c
|
|
|
|
flags.[ch]
|
|
- histexp_flag: new variable, this is what set -H/set -o histexpand
|
|
sets; history_expansion set to value of this variable; defaults to 0
|
|
- history_expansion: now set to HISTEXPAND_DEFAULT
|
|
|
|
bashhist.c
|
|
- bash_history_reinit: if interact == 0, set history_expansion to the
|
|
value of histexp_flag, to allow -H option to enable history
|
|
expansion
|
|
- bash_history_reinit: if interact == 0, make sure
|
|
history_expansion_inhibited is set opposite of histexp_flag, so
|
|
enabling history expansion with -H invocation option turns off
|
|
inhibited expansion. If interactive shell, we turn it off so
|
|
history_expansion controls whether or not history expansion takes
|
|
place. In practice, this function is always called with interact == 0,
|
|
and -c command still doesn't perform history expansion
|
|
|
|
shell.c
|
|
- init_interactive: make sure histexp_flag and history_expansion are
|
|
identical in an interactive shell; allows both -H/+H option and
|
|
default compilation options (HISTEXPAND_DEFAULT) to work
|
|
|
|
11/24
|
|
-----
|
|
subst.c
|
|
- get_word_from_string: take advantage of the fact that SEPARATORS is
|
|
always a (possibly local) copy of IFS, so build a local charmap of
|
|
separators and use it instead of the (cached and possibly stale)
|
|
ifs_cmap map and isifs macro. Fixes bug with -N stripping leading
|
|
whitespace reported by Clark Wang <clarkw@vmware.com>
|
|
|
|
11/25
|
|
-----
|
|
builtins/read.def
|
|
- read_builtin: make `i' volatile, since auto variables are technically
|
|
undefined after a longjmp, and a timeout on SIGALRM causes one.
|
|
Fix suggested by Dmitry Goncharov <dgoncharov@users.sf.net>
|
|
|
|
11/27
|
|
-----
|
|
parse.y
|
|
- shell_getc: if we are reading input from a string, and we get the
|
|
ending '\0', and we are not expanding an alias, return EOF right
|
|
away. It might be an eval'ed string that has a syntax error.
|
|
Fixes bug reported by Dan Douglas <ormaaj@gmail.com>
|
|
|
|
11/28
|
|
-----
|
|
subst.c
|
|
- expand_word_internal: if we're expanding a quoted string containing
|
|
a tilde as the first character of a word, only expand the tilde if
|
|
we're expanding an array subscript (Q_ARRAYSUB), not if we're
|
|
expanding any arithmetic expression (Q_ARITH). This fixes a
|
|
backwards compatibility issue with expressions like ~0 reported by
|
|
Bize Ma <binaryzebra@gmail.com>
|
|
|
|
subst.c
|
|
- parameter_brace_expand_indir: if the variable is not special and
|
|
the indirect variable is unset (!variable where variable is unset),
|
|
report an error. This is a slight incompatibility with previous
|
|
versions, which did not differentiate between indirecting an unset
|
|
variable and an indirect expansion resulting in an unset variable.
|
|
Fixes omission reported by otenba@protonmail.com
|
|
|
|
11/30
|
|
-----
|
|
lib/readline/doc/{rluser.texi,readline.3},doc/bash.1
|
|
- do-uppercase-version: since this doesn't actually exist, replace it
|
|
with do-lowercase-version, with the caveat that do-lowercase-version
|
|
results in undefined behavior if bound to a character that's
|
|
already lowercase. Suggested by Branden Robinson
|
|
<g.branden.robinson@gmail.com>
|
|
|
|
lib/readline/doc/rluser.texi
|
|
- history-substring-search-forward: was misspelled as "substr-search";
|
|
ditto for search-backward
|
|
|
|
doc/bash.1
|
|
- history-substring-search-{backward,forward}: add documentation, text
|
|
straight from readline.3
|
|
|
|
jobs.c
|
|
- initialize_job_control: if the terminal's process group is valid,
|
|
but the shell is not the foreground process, check for terminating
|
|
signals (like SIGHUP, which the kernel would send if the process
|
|
group were orphaned) during the loop where we try to stop the shell
|
|
if it's not in the foreground. Not a perfect solution; the kernel
|
|
might not send SIGHUP
|
|
|
|
12/1
|
|
----
|
|
jobs.c
|
|
- initialize_job_control: only go through the SIGTTIN loop 16 times at
|
|
most before deciding we're in the background and probably a member of
|
|
an orphaned process group; set original_pgrp to the terminal's pgrp
|
|
(so the eventual give_terminal_to doesn't leave the terminal in the
|
|
wrong pgrp); and bail on job control initialization
|
|
|
|
tests/run-all
|
|
- unset SHELLOPTS to avoid its options `polluting' the test
|
|
environment. Suggestion from Vladimir Marek
|
|
<Vladimir.Marek@oracle.com>
|
|
|
|
tests/execscript
|
|
- use $PWD/exec8.sub to protect against someone who has a cd command
|
|
in his bashrc. Report from Vladimir Marek
|
|
<Vladimir.Marek@oracle.com>
|
|
|
|
12/2
|
|
----
|
|
shell.c
|
|
- open_shell_script: call end_job_control before exiting the shell in
|
|
case we were run as `bash -i script' and there is a problem with
|
|
executing `script'. If we don't, the terminal ends up in the wrong
|
|
process group. Fix from Clark Wang <clarkw@vmware.com>
|
|
|
|
12/3
|
|
----
|
|
parse.y
|
|
- read_comsub: if we look for a character following a `<' and it's
|
|
not `<' (indicating that we don't have to read a here-document),
|
|
make sure we push that character back and go through the loop again
|
|
so we note the right word start location. Fixes bug reported by
|
|
parasite parasite <42parasite@gmail.com>
|
|
|
|
subst.c
|
|
- parameter_brace_expand_indir: clean up checks for unset variables to
|
|
minimize incompatibilities with previous versions
|
|
|
|
12/5
|
|
----
|
|
lib/readline/history.c
|
|
- add_history: don't update history_length until all of the updates to
|
|
the_history are complete, so history_length is always consistent.
|
|
Report and fix from Hong Cho <hong.cho@citrix.com>
|
|
|
|
bashline.c
|
|
- bash_backward_shellword: fix to work better at the end of the line,
|
|
with multiple trailing whitespace characters. Inspired by report
|
|
from Kirill Timofeev <kt97679@gmail.com>
|
|
|
|
Makefile.in
|
|
- bashbug: use `^' as the sed delimiter instead of `%'; some compilers
|
|
use `%' in CFLAGS. Report from Vladimir Marek
|
|
<Vladimir.Marek@oracle.com>
|
|
|
|
12/6
|
|
----
|
|
test.c
|
|
- test_unop: make sure op[1] != 0 before testing op[2]
|
|
- term: make sure argv[pos][1] != 0 before testing argv[pos][2]. Fixes
|
|
oob-read reported by Jerzy Kramarz <op7ica@gmail.com>
|
|
|
|
12/7
|
|
----
|
|
lib/glob/glob.c
|
|
- glob_filename: assign the return value of realloc (results, ...) to
|
|
a temp pointer, so if realloc returns NULL, we make sure we free
|
|
results. Report from Kirill Timofeev <kt97679@gmail.com>
|
|
|
|
12/12
|
|
-----
|
|
lib/sh/shquote.c
|
|
- sh_backslash_quote: if FLAGS&2, backslash-quote other single-byte
|
|
characters that are in the current locale's <blank> character class
|
|
|
|
builtins/printf.def
|
|
- printf_builtin: when processing the `%q' format, make sure to
|
|
backslash quote all <blank> characters by making sure that FLAGS
|
|
passed to sh_backslash_quote includes 2. Fixes issue for certain
|
|
iso-8859-1 locales where character 160 (octal 240, hex 0xa0) is a
|
|
non-breaking space. Report from Stephane Chazelas
|
|
<stephane.chazelas@gmail.com>
|
|
|
|
lib/sh/eaccess.c
|
|
- sh_stat: if DEV_FD_STAT_BROKEN is defined, take /dev/fd/N and turn
|
|
it into a stat on file descriptor N, as if /dev/fd were not
|
|
available. This is the case on some old versions of SunOS. Report
|
|
and patch from Dmitry Goncharov <dgoncharov@users.sf.net>
|
|
|
|
config.h.in
|
|
- DEV_FD_STAT_BROKEN: add define
|
|
|
|
configure.ac
|
|
- --enable-dev-fd-stat-broken: new command-line option, defines
|
|
DEV_FD_STAT_BROKEN if supplied at configure time
|
|
|
|
doc/bashref.texi
|
|
- --enable-dev-fd-stat-broken: document new command-line option for
|
|
configure
|
|
|
|
arrayfunc.c
|
|
- assoc_expand_once: new variable, declared here just because
|
|
|
|
arrayfunc.h
|
|
- assoc_expand_once: extern declaration
|
|
- AV_NOEXPAND: new flag value for the array_value family of functions:
|
|
means to not run associative array subscripts through word expansion
|
|
|
|
builtins/set.def
|
|
- unset_builtin: call unbind_array_element with assoc_expand_once as
|
|
third arg, controls whether we expand associative array subscripts
|
|
(if 1, we suppress the usual expansion). With accompanying shopt,
|
|
provides backwards compatible option to solve problem with quotes
|
|
and other characters in associative array subscripts pointed out
|
|
most recently by Mingye Wang (Arthur2e5) <arthur200126@gmail.com>
|
|
|
|
builtins/shopt.def
|
|
- assoc_expand_once: new option, controls value of internal variable
|
|
with the same name. Currently undocumented because I'm not completely
|
|
sold on the name
|
|
|
|
expr.c
|
|
- evalexp: now takes a second argument, flags. Changed all callers in
|
|
multiple other files (builtins/let.def,execute_cmd.c,arrayfunc.c,
|
|
subst.c,test.c,variables.c)
|
|
|
|
externs.h
|
|
- EXP_EXPANDED, new flag for second argument to evalexp
|
|
|
|
builtins/let.def
|
|
- let_builtin: add EXP_EXPANDED to flags passed to evalexp
|
|
|
|
execute_cmd.c
|
|
- execute_arith_command: add EXP_EXPANDED to flags passed to evalexp,
|
|
since the command string is run through expand_words_no_vars before
|
|
being evaluated
|
|
|
|
expr.c
|
|
- set expression-global variable already_expanded if flags arg to
|
|
evalexp contains EXP_EXPANDED
|
|
- if assoc_expand_once option set and already_expanded flag set, pass
|
|
1 in flags to array_variable_part to skip over quotes and expansions
|
|
in the subscript
|
|
- if those two variables set, pass AV_NOEXPAND as flag to
|
|
get_array_value to prevent word expansions on the subscript
|
|
|
|
arrayfunc.c
|
|
- if flags passed to unbind_array_element includes 1, pass flag on to
|
|
skipsubscript so we don't expect matched quotes or process
|
|
expansions in the subscript
|
|
- if flags to array_value_internal include AV_NOEXPAND, pass 1 as flag
|
|
to array_variable_part to pass along to skipsubscript
|
|
- if flags to array_value_internal include AV_NOEXPAND, don't call
|
|
expand_assignment_string_to_string; just use the unexpanded subscript
|
|
to produce the key [THIS IS A WORK IN PROGRESS]
|
|
|
|
12/14
|
|
-----
|
|
subst.h
|
|
- ASS_NOEXPAND: assignment flag that inhibits expansion of associative
|
|
array subscripts
|
|
|
|
variables.c
|
|
- bind_int_variable: takes new flags arg; flags are taken from the
|
|
ASS_ set of assignment flags, changed callers (bashline.c, expr.c,
|
|
pcomplete.c)
|
|
- bind_int_variable: if flags includes ASS_NOEXPAND, pass 1 as flag to
|
|
valid_array_reference and array_variable_part to pass along to
|
|
skipsubscript, so we don't try to skip over quoted strings in the
|
|
subscript
|
|
- bind_int_variable: pass flags along to assign_array_element
|
|
|
|
variables.h
|
|
- bind_int_variable: updated extern declaration with new flags arg
|
|
|
|
expr.c
|
|
- expr_bind_variable: if the assoc_expand_once option is enabled, and
|
|
the flags to evalexp indicate that we have already run the expression
|
|
through word expansion, pass ASS_NOEXPAND as flag to bind_int_variable
|
|
|
|
arrayfunc.c
|
|
- assign_array_element: if flags includes ASS_NOEXPAND, pass 1 as flag
|
|
to array_variable_name to pass along to skipsubscript
|
|
- assign_array_element: if flags includes ASS_NOEXPAND, don't run an
|
|
associative array subscript through word expansion, just use as-is
|
|
|
|
subst.c
|
|
- param_expand: call evalexp with EXP_EXPANDED flag for arithmetic
|
|
substitution because the string has already been expanded with
|
|
expand_arith_string
|
|
|
|
12/15
|
|
-----
|
|
builtins/read.def
|
|
- read_builtin: use value of assoc_expand_once for valid_array_reference
|
|
as with other uses
|
|
- bind_read_variable: if assoc_expand_once is set, pass ASS_NOEXPAND
|
|
to assign_array_element
|
|
|
|
general.c
|
|
- assignment: instead of checking whether flags == 0 to allow a `[',
|
|
explicitly check for (flags&1) to disallow it. This leaves the door
|
|
open for additional flag values
|
|
|
|
builtins/printf.def
|
|
- printf_builtin: use value of assoc_expand_once for
|
|
valid_array_reference as with other uses
|
|
- bind_printf_variable: if assoc_expand_once is set, pass ASS_NOEXPAND
|
|
to assign_array_element
|
|
|
|
12/16
|
|
-----
|
|
builtins/history.def
|
|
- change history -d option to handle negative arguments; negative
|
|
arguments offset from the end of the history list (last_position + 1
|
|
so history -d -1 deletes the history -d command that just got
|
|
added). Original patch from Piotr Grzybowski <narsil.pl@gmail.com>
|
|
|
|
doc/bash.1,lib/readline/doc/hsuser.texi
|
|
- documented new behavior of negative offsets for `history -d'
|
|
|
|
12/17
|
|
-----
|
|
lib/readline/history.c
|
|
- remove_history: use memmove to move the history list around instead
|
|
of a loop that copies pointers one at a time, similar to add_history
|
|
|
|
12/19
|
|
-----
|
|
configure.ac
|
|
- linux: make sure PGRP_PIPE is defined unconditionally for all kernel
|
|
versions greater than 2.3.*
|
|
|
|
lib/readline/history.c
|
|
- clear_history: when clearing the history, reset history_base to 1
|
|
(its default)
|
|
- remove_history_range: new function, removes a set of history entries
|
|
and returns them all for deallocation
|
|
|
|
lib/readline/history.h
|
|
- remove_history_range: extern declaration
|
|
|
|
12/20
|
|
-----
|
|
execute_cmd.c
|
|
- eval_arith_for_expr: pass EXP_EXPANDED to evalexp, since we run the
|
|
expression through expand_words_no_vars
|
|
|
|
12/21
|
|
-----
|
|
input.c
|
|
- b_fill_buffer: when read returns EOF or error, and we reset the
|
|
buffer and pointers, reset the input pointer to 0. Fixes issue
|
|
reported by Stephane Chazelas <stephane.chazelas@gmail.com>
|
|
|
|
12/22
|
|
-----
|
|
arrayfunc.[ch],subst.c
|
|
- array_expand_index: added new FLAGS argument, reserved for future use,
|
|
changed callers
|
|
|
|
|
|
12/24
|
|
-----
|
|
variables.c
|
|
- can_optimize_assignment,optimized_assignment: see if we can detect
|
|
whether or not we're trying to append a string to a string variable,
|
|
and optimize that using realloc/strcpy. Based on a log-ago
|
|
suggestion from Aharon Robbins <arnold@skeeve.com>
|
|
|
|
12/27
|
|
-----
|
|
builtins/help.def
|
|
- help_builtin: don't pass return value from ngettext() directly to
|
|
printf
|
|
|
|
12/28
|
|
-----
|
|
sig.c
|
|
- set_signal_handler: set SA_RESTART for SIGWINCH, so window size
|
|
changes don't interrupt open/read/write. Suggested by
|
|
Andriy Prystupa <andriy.prystupa@globallogic.com> back in 10/2016
|
|
|
|
12/30
|
|
-----
|
|
execute_cmd.c
|
|
- coproc_pidchk: if MULTIPLE_COPROCS, call cpl_search to find coproc
|
|
associated with pid, don't remove it from the list with cpl_delete.
|
|
Just mark as dead and wait for coproc_reap/cpl_reap to take care
|
|
of disposing it
|
|
- execute_coproc: NEW FEATURE: run the coproc name through word
|
|
expansion before creating the coproc; this allows unique coprocs
|
|
to be created in loops. Originally requested way back in 2012 by
|
|
Erik Brandsberg <ebrandsberg@juniper.net>
|
|
|
|
command.h
|
|
- subshell_com: now has a line number member: line
|
|
|
|
make_cmd.c
|
|
- make_subshell_command: assign current line number (line number of the
|
|
ending right paren) to `line' member
|
|
|
|
copy_cmd.c
|
|
- copy_subshell_command: copy the `line' member
|
|
|
|
execute_command.c
|
|
- execute_command_internal: when executing a user subshell (`(command)'),
|
|
set the line number and line number for the ERR trap from the line
|
|
number saved in the subshell command struct. Fix from
|
|
Eduardo A. Bustamante López <dualbus@gmail.com>
|
|
- execute_arith_command: set line number for ERR trap from line number
|
|
saved in the arith command struct. Fix from
|
|
Eduardo A. Bustamante López <dualbus@gmail.com>
|
|
- execute_cond_command: set line number for ERR trap from line number
|
|
saved in the cond command struct. Fix from
|
|
Eduardo A. Bustamante López <dualbus@gmail.com>
|
|
|
|
variables.c
|
|
- bind_variable_internal: move can_optimize_assignment call to the
|
|
right place
|
|
|
|
12/31
|
|
-----
|
|
variables.c
|
|
- find_variable_nameref: treat a circular variable reference as
|
|
referring to a variable of that name in the global scope (for now),
|
|
if one exists. PROVISIONAL change: inspired by suggestion back in
|
|
6/2016 by Grisha Levit <grishalevit@gmail.com>
|
|
|
|
1/2/2017
|
|
--------
|
|
{expr,general,hashcmd}.c
|
|
- include flags.h for flag values
|
|
|
|
make_cmd.c
|
|
- include shell.h instead of the files it includes
|
|
|
|
flags.h
|
|
- new extern declarations for want_pending_command, read_from_stdin
|
|
|
|
subst.h
|
|
- add extern declaration for expanding_redir, assigning_in_environment
|
|
|
|
trap.h
|
|
- add extern declaration for running_trap
|
|
|
|
execute_cmd.h
|
|
- added extern declarations for variables declared in execute_cmd.c,
|
|
changed files that declare lots of extern variables
|
|
|
|
shell.h
|
|
- added extern declarations for variables declared in shell.c,
|
|
changed files that declare lots of extern variables
|
|
|
|
parser.h
|
|
- added extern declarations for variables declared in parse.y,
|
|
changed files that declare lots of extern variables
|
|
|
|
[lots of changes to reduce the number of extern declarations in C and DEF files]
|
|
|
|
parse.y
|
|
- xparse_dolparen: need ALIAS or DPAREN_ARITHMETIC to be defined to
|
|
use STRING_SAVER
|
|
|
|
1/3
|
|
---
|
|
sig.c
|
|
- termsig_handler: don't call end_job_control if subshell_environment
|
|
indicates that we're in a command or process substitution.
|
|
Provisional fix for bug reported by Russell King <rmk@armlinux.org.uk>
|
|
|
|
jobs.c
|
|
- end_job_control: only attempt to give the terminal back to
|
|
original_pgrp if job_control != 0; don't test interactive_shell
|
|
|
|
execute_cmd.c
|
|
- execute_disk_command: call QUIT after search_for_command, since
|
|
the only time QUIT gets called is when the path is actually
|
|
searched. It doesn't happen for an absolute pathname. Fix for
|
|
bug reported by Russell King <rmk@armlinux.org.uk>
|
|
|
|
1/16
|
|
----
|
|
lib/glob/glob.c
|
|
- extglob_skipname,wextglob_skipname: if we don't find a reason to
|
|
not skip the name in any subpattern (r returns 0 for any subpattern),
|
|
return 1 because we should skip the name
|
|
- extglob_skipname,wextglob_skipname: if we don't find a reason to
|
|
not skip the name in any subpattern, but the first part of the extglob
|
|
pattern is a wildcard (`*(pat)'), check the rest of the pattern, if
|
|
any, to decide whether or not to skip the name. Fixes bug reported
|
|
by Grisha Levit <grishalevit@gmail.com>
|
|
|
|
lib/glob/glob_loop.c
|
|
- CHAR -> GCHAR (unsigned char); change uses of CHAR to GCHAR
|
|
|
|
lib/glob/glob.c
|
|
- wchkname -> wskipname
|
|
- wskipname: now takes a third `flags' argument, like the other variants
|
|
of skipname
|
|
|
|
1/17
|
|
----
|
|
redir.c
|
|
- here_document_to_fd: set the file descriptor open for writing to the
|
|
here document to be close-on-exec. Fixes bug reported by
|
|
Siteshwar Vashisht <svashisht@redhat.com>
|
|
|
|
1/18
|
|
----
|
|
{gmisc,gm_loop}.c
|
|
- match_pattern_char,match_pattern_wchar: moved to gm_loop.c (new file),
|
|
compile twice for single and wide characters as with the rest of
|
|
the functions
|
|
- umatchlen,wmatchlen: ditto
|
|
- extglob_pattern_p: move to gm_loop.c, generalize for regular and
|
|
wide-char versions
|
|
|
|
1/19
|
|
----
|
|
lib/readline/complete.c
|
|
- stat_char: fix small memory leak if stat/lstat returns -1
|
|
|
|
bashline.c
|
|
- bash_filename_stat_hook,bash_directory_completion_hook: make sure
|
|
expand_prompt_string is caled wth W_NOPROCSUB flag
|
|
- directory_exists: don't dequote the filename passed as an argument;
|
|
this function should never get quoted pathnames
|
|
|
|
subst.c
|
|
- expand_word_internal: when calling expand_word_internal recursively
|
|
after reading a double-quoted string, make sure the W_NOCOMSUB and
|
|
W_NOPROCSUB flags make it to the recursive invocation. Fixes bug
|
|
reported by Jens Heyens <jens.heyens@cispa.saarland>
|
|
|
|
1/23
|
|
----
|
|
lib/readline/signals.c
|
|
- _rl_orig_sigset: original signal mask, set and restored by
|
|
rl_set_signals (rl_clear_signals doesn't block signals). If we
|
|
are not installing signal handlers, just save signal mask each
|
|
time rl_set_signals is called
|
|
|
|
lib/readline/input.c
|
|
- rl_getc: use _rl_orig_sigmask in the call to pselect(), so we block
|
|
the set of signals originally blocked by the calling application.
|
|
Fixes bug reported by Frédéric Brière <fbriere@fbriere.net>
|
|
|
|
parse.y
|
|
- yy_readline_get: try to unset NONBLOCK mode on readline's input
|
|
file descriptor before calling readline(). Inspired by report from
|
|
Siteshwar Vashisht <svashisht@redhat.com>
|
|
|
|
1/30
|
|
----
|
|
parse.y
|
|
- parse_comsub: don't unconditionally set the LEX_WASDOL flag when we
|
|
see a `$'; we should toggle it to accommodate things like $$.
|
|
Fixes bug reported by Christian Weisgerber <naddy@mips.inka.de>
|
|
- parse_matched_pair: do the same thing with LEX_WASDOL
|
|
|
|
2/1
|
|
---
|
|
jobs.h
|
|
- JWAIT_PERROR,JWAIT_FORCE: new defines for the wait_for_ family of
|
|
functions
|
|
|
|
jobs.c
|
|
- wait_for_job, wait_for_any_job: take new flags argument for use by
|
|
the wait builtin
|
|
- wait_for_job: if JWAIT_FORCE flag supplied, loop waiting for job to
|
|
terminate instead of change state
|
|
- wait_for_single_pid: if JWAIT_FORCE flag supplied, loop waiting for
|
|
child process to terminate instead of change state
|
|
|
|
builtins/wait.def
|
|
- takes a new `-f' option, signifying to wait until the specified job
|
|
or process terminates, instead of changes state
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- wait: document the new -f option and its behavior when job control
|
|
is enabled
|
|
- job control: add a paragraph describing how the wait builtin changes
|
|
behavior when job control is enabled: it returns when a job changes
|
|
state
|
|
|
|
2/2
|
|
---
|
|
examples/loadables/fdflags.c
|
|
- fdflags: new loadable builtin to set and unset file descriptor flags
|
|
(such as non-blocking, though bash undoes that) for descriptors bash
|
|
has open. Developed in consultation with Christos Zoulas
|
|
<christos@zoulas.com>
|
|
|
|
2/3
|
|
---
|
|
|
|
lib/readline/text.c
|
|
- rl_previous_screen_line: attempt to move to the same column on the
|
|
previous screen line of the current readline buffer by moving back
|
|
a number of characters equal to the screen width
|
|
- rl_next_screen_line: attempt to move to the same column on the
|
|
next screen line of the current readline buffer by moving forward
|
|
a number of characters equal to the screen width. Both originally
|
|
suggested by Hans Ginzel <hans@matfyz.cz>
|
|
|
|
lib/readline/readline.h
|
|
- rl_{next,previous}_screen_line: extern declarations
|
|
|
|
lib/readline/funmap.c
|
|
- {next,previous}-screen-line: new bindable command names
|
|
|
|
lib/readline/doc/{rluser.texi,readline.3}
|
|
- {next,previous}-screen-line: document behavior, including limitations
|
|
|
|
2/5
|
|
---
|
|
lib/readline/input.c
|
|
- rl_read_key: when reading input from a macro, make sure to return
|
|
the next character as an unsigned char, so we handle multibyte
|
|
character sequences correctly. Report and fix from Grisha Levit
|
|
<grishalevit@gmail.com>
|
|
|
|
2/6
|
|
---
|
|
shell.c
|
|
- --pretty-print: new invocation option, currently undocumented, dumps
|
|
a pretty-printed version of a shell script given as an argument to
|
|
stdout
|
|
- main: call pretty_print_loop() if we're in pretty-printing mode in
|
|
a non-interactive shell
|
|
|
|
eval.c
|
|
- pretty_print_loop: new function, similar to reader_loop, reads
|
|
commands and prints them by displaying the result from
|
|
make_command_string()
|
|
|
|
externs.h
|
|
- pretty_print_loop: new extern declaration
|
|
|
|
2/9
|
|
---
|
|
doc/{bash.1,bashref.texi}
|
|
- here strings: correct documentation to note they do not undergo
|
|
brace expansion. Report from Conor McCarthy <mr.spuratic@gmail.com>
|
|
|
|
2/9
|
|
---
|
|
lib/readline/display.c
|
|
- expand_prompt: instead of recomputing the line break offsets for
|
|
prompts that span multiple screen lines on every call to rl_redisplay,
|
|
do it here. Manage a local array local_prompt_newlines; set an offset
|
|
every time `physchars' hits a multiple of the screen width. Inspired
|
|
by https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=843819
|
|
- rl_redisplay: don't calculate multi-line prompt line break indices
|
|
here; use the values calculated by expand_prompt
|
|
- rl_{save,restore}_prompt: save and restore local_prompt_newlines
|
|
|
|
2/11
|
|
----
|
|
lib/readline/mbutil.c
|
|
- _rl_find_prev_mbchar_internal: since we're traversing the string
|
|
from the beginning, shortcut non-multibyte characters in a UTF-8
|
|
locale
|
|
|
|
parse.y
|
|
- parse_comsub: if we are parsing a here document with a quoted
|
|
delimiter (LEX_QUOTEDDOC), we should not remove <backslash><newline>
|
|
pairs from the body of the here document. Need to add LEX_QUOTEDDOC
|
|
to the values in tflags when calling shell_getc. Fixes bug reported
|
|
by Michael Homer <michael.homer@ecs.vuw.ac.nz>, patch was originally
|
|
contributed by Geir Hauge <geir.hauge@gmail.com>
|
|
|
|
2/15
|
|
----
|
|
jobs.c
|
|
- bgp_add: if hashed pid collides with bgpids.head index, print a
|
|
warning and move to the next index. Attempt to avoid collision
|
|
problem reported by Graham Northup <northug@clarkson.edu>
|
|
|
|
2/17
|
|
----
|
|
subst.c
|
|
- process_substitute: call remove_quoted_escapes on the command string
|
|
like command substitution does, since the string will be run through
|
|
the parser again. Fixes bug reported by David Simmons
|
|
<bug-bash@tmp.davidsimmons.com>
|
|
|
|
config-top.h
|
|
- STATIC_PATH_VALUE: new config variable, undefined by default
|
|
|
|
variables.c
|
|
- shell_initialize: if STATIC_PATH_VALUE is defined, use it to set the
|
|
PATH variable at shell startup, overriding the environment and any
|
|
value for DEFAULT_PATH_VALUE. Based on a suggestion from
|
|
Lonnie Abelbeck <lonnie@abelbeck.com>
|
|
|
|
2/18
|
|
----
|
|
shell.c
|
|
- maybe_make_restricted: clear the hash table before making the PATH
|
|
variable read-only by calling stupidly_hack_special_variables.
|
|
Suggestion from Lonnie Abelbeck <lonnie@abelbeck.com>
|
|
|
|
subst.c
|
|
- expand_string_for_pat: change expansion of WORD in ${param[%[%]][#[#]]word}
|
|
to use this new function, initially identical to
|
|
expand_string_for_rhs
|
|
- getpattern: use expand_string_for_pat to expand the pattern
|
|
|
|
2/19
|
|
----
|
|
subst.c
|
|
- expand_string_for_rhs: now that this is only used to expand the RHS
|
|
of the various non-pattern ${paramOPword} expansions, set
|
|
expand_no_split_dollar_star depending on whether or not the entire
|
|
brace expansion is going to be subjected to word splitting: if it's
|
|
quoted or if IFS is set but null, we will not be splitting so we set
|
|
this to 1 and let $* expand to separate fields separated by a space.
|
|
This was heavily debated back in October 2014 and resulted in Posix
|
|
interp 888. Reported by Martijn Dekker <martijn@inlv.org>
|
|
|
|
2/20
|
|
----
|
|
subst.c
|
|
- expand_string_for_rhs: now takes `op' (brace expansion operator) as
|
|
an additional argument; changed call in parameter_brace_expand_rhs
|
|
- expand_string_for_rhs: make sure to set expand_no_split_dollar_star
|
|
if `op' is `=', since we are supposed to preserve the assignment
|
|
statement expansion semantics on the RHS of ${param=word}
|
|
|
|
jobs.c
|
|
- bgp_delindex: make sure to set ps->pid to NO_PID so we more
|
|
effectively remove it from the hash table. It shouldn't matter as
|
|
long as nothing in pidstat_table points to it, but better to be safe
|
|
- bgp_delete,bgp_search: generalize previous collision detection to
|
|
loop detection: abort search if we are going to go back to the
|
|
first index we tried
|
|
|
|
2/21
|
|
----
|
|
lib/readline/vi_mode.c
|
|
- rl_vi_bword: if we're trying to move backward to non-whitespace
|
|
in a line that begins with whitespace, make sure we don't move
|
|
point to 0 and test memory locations before the start of the
|
|
buffer. Report and fix from Jason Hood <jadoxa@yahoo.com.au>
|
|
|
|
lib/readline/display.c
|
|
- expand_prompt: if _rl_screenwith == 0, call rl_reset_screen_size to
|
|
initialize it. If it's still 0 after that, guess that the screen
|
|
width is 80 and use that to guess how many screen lines the prompt
|
|
consumes
|
|
|
|
lib/readline/readline.c
|
|
- readline_internal_setup: if in emacs editing mode, and we are
|
|
showing the editing mode in the prompt, call _rl_reset_prompt() to
|
|
make sure that the updated setting of _rl_show_mode_in_prompt
|
|
(presumably set in an inputrc file) is reflected in the redisplay
|
|
performed by rl_callback_newline via readline_internal_setup.
|
|
Fix from Jason Hood <jadoxa@yahoo.com.au>
|
|
|
|
2/22
|
|
----
|
|
builtins/complete.def
|
|
- print_one_completion,print_compopts: make sure to display the
|
|
`nosort' and `noquote' options if they've been set for a particular
|
|
compspec. Fix from Grisha Levit <grishalevit@gmail.com>
|
|
|
|
builtins/read.def
|
|
- read_builtin: if -e is supplied, read needs to free rlbuf before
|
|
returning, since it uses discard_unwind_frame at that point. Bug
|
|
and fix from ZhangXiao <xiao.zhang@windriver.com>
|
|
|
|
execute_cmd.c
|
|
- execute_for_command: when using a nameref as the for loop control
|
|
variable, make sure we check for readonly namerefs and make sure
|
|
that we force bind_variable to enforce restrictions on nameref
|
|
assignments. Fix from Grisha Levit <grishalevit@gmail.com>
|
|
|
|
2/23
|
|
----
|
|
general.c
|
|
- make_absolute: convert deprecated cygwin_conv_to_full_posix_path
|
|
to cygwin_conv_path (CCP_WIN_A_TO_POSIX, ...)
|
|
|
|
{shell,variables}.c,config-top.h
|
|
- modify change from 2/17: rename STATIC_PATH_VALUE to RBASH_STATIC_PATH_VALUE;
|
|
don't use it in shell_initialize; set PATH to it just before
|
|
imposing restricted shell restrictions
|
|
|
|
2/24
|
|
----
|
|
subst.c
|
|
- expand_string_for_rhs: revert change from 2/19 concerning setting
|
|
expand_no_split_dollar_star so we are consistent with the Posix
|
|
examples. This anticipates Martijn Dekker initiating an austin
|
|
group discussion about this case
|
|
|
|
2/25
|
|
----
|
|
pcomplete.c
|
|
- gen_shell_function_matches: if COMPREPLY is an associative array,
|
|
don't coerce it to an indexed array, which will fail to produce any
|
|
matches anyway. Report from Grisha Levit <grishalevit@gmail.com>
|
|
- bind_comp_words: if COMP_WORDS exists as a nameref variable, ignore
|
|
the nameref attribute. Report from Grisha Levit
|
|
<grishalevit@gmail.com>
|
|
|
|
subst.c
|
|
- parameter_brace_expand: if expand_no_split_dollar_star is set, make
|
|
sure chk_atstar treats ${var[*]} as quoted by passing Q_DOUBLE_QUOTES
|
|
as the second argument. Fixes differing treatment of $* and ${v[*]}
|
|
reported by Grisha Levit <grishalevit@gmail.com>, because otherwise
|
|
*contains_dollar_at gets set to 1 and the word is inappropriately
|
|
split
|
|
|
|
3/1
|
|
---
|
|
subst.c
|
|
- expand_word_list_internal: if a variable assignment fails (e.g., due
|
|
to a readonly variable) in a non-interactive posix mode shell, don't
|
|
abort the shell if the assignment is being performed by the command
|
|
builtin, even if it's something like `command eval v=1'. Fixes
|
|
RedHat bug https://bugzilla.redhat.com/show_bug.cgi?id=1389838
|
|
(reported by Denys Vlasenko)
|
|
|
|
3/3
|
|
---
|
|
builtins/shopt.def
|
|
- set_compatibility_level: make sure that changing the compatibility
|
|
level sets or modifies BASH_COMPAT. Fixes bug reported by
|
|
Stephane Chazelas <stephane.chazelas@gmail.com>
|
|
|
|
lib/glob/smatch.c
|
|
- is_cclass: broke into two functions: is_valid_cclass and cclass_test,
|
|
for future expansion. No functionality change
|
|
|
|
lib/glob/sm_loop.c
|
|
- BRACKMATCH: when testing a character against a character class name,
|
|
use the unfolded (original) character, since we're not performing a
|
|
comparison. This is what glibc does. Fixes bug reported by
|
|
Lukáš Ba�inka <lukas.barinka@boxtrap.net>
|
|
|
|
3/4
|
|
---
|
|
doc/{bash.1,bashref.texi}
|
|
- note that the arguments to -eq and the rest of the arithmetic
|
|
operators are evaluated as expressions when using [[. Report from
|
|
Rob la Lau <rob@ohreally.nl>
|
|
|
|
|
|
3/7
|
|
---
|
|
lib/readline/display.c
|
|
- update_line: completely rewrote the code that handles line wrapping
|
|
in the presence of multibyte/double-width characters; punts to a
|
|
dumb update in cases where the number of screen positions doesn't
|
|
match
|
|
- update_line: in one case, where we are deleting characters from the
|
|
line, if we are writing a non-space into the last screen character
|
|
position, note that we are no longer using a space as a placeholder
|
|
for a line wrap where there is a multi-width character that won't
|
|
fit on the screen line (wrapped_line[current_line+1] = 0)
|
|
|
|
3/10
|
|
----
|
|
lib/readline/readline.c
|
|
- bind_arrow_keys_internal: add default key bindings for control-
|
|
arrow keys, suggested by Per Bothner <per@bothner.com>
|
|
|
|
3/13
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- clarify the prompt strings the undergo expansion (PS0, PS1, PS2, and
|
|
PS4) before being displayed. Based on a report from Grisha Levit
|
|
<grishalevit@gmail.com>
|
|
|
|
3/14
|
|
----
|
|
input.c
|
|
- bufstream_ungetc: return EOF if being asked to unget a character to
|
|
a NULL buffer
|
|
- buffered_getchar: check buffered_fd is valid and buffers[buffered_fd]
|
|
is non-NULL before trying to dereference. Fixes bug reported by
|
|
floyd <floyd@floyd.ch>
|
|
|
|
execute_cmd.c
|
|
- execute_null_command: if we fork to execute the command, the subshell
|
|
is not interactive
|
|
- execute_null_command: for safety's sake, if a redirection attached
|
|
to a null command affects fd 0 or the fd the shell is reading for
|
|
input, and the redirection can potentially change or close that file
|
|
descriptor, force a fork so the redirection is done in a subshell
|
|
|
|
3/15
|
|
----
|
|
lib/readline/display.c
|
|
- update_line: if we have to output some bytes, and we are outputting
|
|
the prompt string, make sure we correct _rl_last_c_pos if we are
|
|
at the wrap offset -- what if all of the characters in the prompt
|
|
are invisible, so the visible length is 0? Fixes display bug
|
|
reported by Grisha Levit <grishalevit@gmail.com>
|
|
|
|
execute_cmd.c
|
|
- undo_partial_redirects: new function, performs redirections specified
|
|
in redirection_undo_list and disposes of them. Intended to be used
|
|
to unwind redirections performed before a redirection error
|
|
- dispose_partial_redirects: new function, disposes of
|
|
redirection_undo_list and nulls the list
|
|
- execute_command_internal: use undo_partial_redirects
|
|
|
|
execute_cmd.h
|
|
- undo_partial_redirects: extern declaration
|
|
- dispose_partial_redirects: extern declaration
|
|
|
|
subst.c
|
|
- exp_jump_to_top_level: if we are throwing an expansion error while
|
|
expanding a redirection (expanding_redir != 0), undo any undoable
|
|
redirections by calling undo_partial_redirects() so we don't leave
|
|
any in place
|
|
|
|
variables.c
|
|
- initialize_shell_variables: if SHELLOPTS is in the environment,
|
|
unset the readonly attribute on any existing variable with that
|
|
name. It may have been created by processing a -o option on the
|
|
command line. Fixes issue reported by Stephane Chazelas
|
|
<stephane.chazelas@gmail.com>
|
|
|
|
3/16
|
|
----
|
|
lib/readline/histfile.c
|
|
- read_history_range: short-circuit and do nothing if the history file
|
|
is of 0 size
|
|
- read_history_range: make sure the buffer is zero-terminated so the
|
|
timestamp tests work right for history files of 1 character. Report
|
|
and recommended fix from Denis Martinez <denis.martinez@gmx.com>
|
|
|
|
lib/readline/complete.c
|
|
- compute_lcd_of_matches: when trying to compute the common prefix
|
|
of a set of matches while performing case-insensitive completion
|
|
matching, don't sort the match list unless rl_sort_completion_matches
|
|
is non-zero. Fixes problem reported by Roee Bar <roee@arista.com>
|
|
|
|
3/18
|
|
----
|
|
subst.c
|
|
- extract_dollar_brace_string: handle process substitution embedded in
|
|
a ${...} expansion in the same way as command substitution. Reported
|
|
by D630 <d630@posteo.net>
|
|
|
|
parse.y
|
|
- LEX_GTLT: new flag, set by parse_matched_pair when a `<' or '>' is
|
|
read
|
|
- parse_matched_pair: handle an embedded process substitution like an
|
|
embedded command substitution if we are parsing an array index or
|
|
a dollar-brace expansion. Reported by D630 <d630@posteo.net>
|
|
|
|
3/21
|
|
----
|
|
subst.h
|
|
- ASS_NOEVAL, ASS_NOLONGJMP: new values for assignments, used by
|
|
make_variable_value
|
|
|
|
variables.c
|
|
- make_variable_value: ASS_NOEVAL: if this is set, don't attempt
|
|
arithmetic evaluation or case modification, just produce the value
|
|
(still honor ASS_APPEND)
|
|
- make_variable_value: ASS_NOLONGJMP: don't longjmp back to top_level
|
|
if arithmetic evaluation fails due to a syntax error
|
|
- bind_variable_internal: make sure aflags is passed to all calls to
|
|
make_variable_value
|
|
- push_temp_var: add ASS_NOLONGJMP to the flags passed to
|
|
bind_variable_internal. Fixes bug reported by D630 <d630@posteo.net>
|
|
|
|
bashline.c
|
|
- bash_execute_unix_command: don't bother to attempt optimization by
|
|
checking whether the call to parse_and_execute changes $READLINE_LINE;
|
|
it can be defeated by the new code that optimizes appends to string
|
|
variables. Bug reported by Grisha Levit <grishalevit@gmail.com>
|
|
|
|
3/22
|
|
----
|
|
subst.c
|
|
- expand_string_for_rhs: re-apply change from 2/19 based on discussion
|
|
on the austin-group mailing list about how unquoted ${var-$*}
|
|
expands when IFS is null. Originally reported by Martijn Dekker
|
|
<martijn@inlv.org>
|
|
|
|
3/25
|
|
----
|
|
parse.y
|
|
- read_token_word: if we read a WORD immediately after a CASE, FOR, or
|
|
SELECT, increment `expecting_in_token' to note that we're going to
|
|
be reading IN as the next non-newline token
|
|
- special_case_tokens: if we're expecting an IN (expecting_in_token > 0)
|
|
and we have an "in", return IN and decrement expecting_in_token. This
|
|
is a better implementation of Posix grammar rule 6 than the previous
|
|
code in that function (which is still there for posterity, but should
|
|
eventually be removed). Fixes bug reported by Torka Noda
|
|
<kanito.tasoga@gmail.com>
|
|
|
|
subst.c
|
|
- string_list_pos_params: if the expansion is not quoted, and IFS is
|
|
null, return a string containing the quoted positional parameters
|
|
separated by spaces. Callers know what to do with the string
|
|
- parameter_brace_substring,parameter_brace_remove_pattern,
|
|
parameter_brace_transform,parameter_brace_patsub,parameter_brace_casemod:
|
|
for the VT_POSPARMS case, after calling the operator-specific
|
|
expansion function, which eventually calls string_list_pos_params,
|
|
leave the returned string alone, since it's already quoted properly
|
|
- parameter_brace_expand: after calling the above functions to perform
|
|
expansions, if the expansion is being performed on an unquoted $*
|
|
when IFS is null, set the W_SPLITSPACE flag in the return WORD_DESC
|
|
so that splitting on spaces is performed on the already-quoted word.
|
|
Fixes bug reported by Grisha Levit <grishalevit@gmail.com>
|
|
|
|
3/28
|
|
----
|
|
subst.c
|
|
- process_substitute: change so the subshell doesn't inherit the 'v'
|
|
option, like command substitution now does (as of bash-4.4).
|
|
Suggested by Grisha Levit <grishalevit@gmail.com>
|
|
|
|
3/30
|
|
----
|
|
subst.c
|
|
- parameter_brace_casemod: now takes a pflags parameter, like
|
|
parameter_brace_patsub; changed callers
|
|
- parameter_brace_transform: now takes a pflags parameter, like
|
|
parameter_brace_patsub; changed callers
|
|
- pos_params_pat_subst,pos_params_modcase: if mflags indicates we're
|
|
on the rhs of an assignment statement and not going to perform
|
|
word splitting, we're expanding $*, and $IFS is null, make sure
|
|
string_list_pos_params treats the expansion as double-quoted, so
|
|
the positional parameters will be concatenated. Fixes bug reported
|
|
by Grisha Levit <grishalevit@gmail.com>
|
|
|
|
3/31
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- add notes to the description of pipelines emphasizing that each
|
|
element of a pipeline is executed in a subshell, referring to the
|
|
description of a command execution environment, and that the
|
|
lastpipe option can modify that behavior. From a discussion with
|
|
Jean Delvare <jdelvare@suse.de>
|
|
|
|
4/1
|
|
---
|
|
subst.c
|
|
- expand_word_internal: set had_quoted_null to note for later if we
|
|
expand '', "", or "$x" when x is unset
|
|
- expand_word_internal: if we expand "$param" (or "${param}") and we
|
|
come back with a single word with the W_HAVEQUOTEDNULL flag set,
|
|
make sure we set had_quoted_null to remember it for later. In this
|
|
case, if we already have seen a quoted null and we expanded $@ in
|
|
this (sub)string expansion, we don't want to do any of the special
|
|
$@ handling. In particular, we don't want to set *expanded_something,
|
|
because that will result in word splitting and quoted null removal.
|
|
Fixes bug reported by Grisha Levit <grishalevit@gmail.com>
|
|
- parameter_brace_patsub: when expanding ${*/pat/sub} in the case
|
|
where ifs_is_null != 0 and (pflags & PF_NOSPLIT2) (meaning we aren't
|
|
going to be doing word splitting), pass MATCH_ASSIGNRHS so we do
|
|
the right thing in this case. Part of a set of cases inspired by
|
|
Grisha Levit <grishalevit@gmail.com>
|
|
- param_expand: case '*': if we are on the rhs of an assignment
|
|
(PF_ASSIGNRHS) and ifs is unset, and $1 == " ", we need to make sure
|
|
string_list_dollar_at gets called with Q_DOUBLE_QUOTES so it quotes
|
|
the positional parameters before joining them into a string with
|
|
string_list_internal. Otherwise, that first space gets removed by
|
|
the implicit word splitting that gets performed. Reported by
|
|
Grisha Levit <grishalevit@gmail.com>
|
|
|
|
array.c
|
|
- array_patsub,array_modcase: handle ${A[*]} identically to $* when
|
|
not quoted and IFS is null (separate with spaces). Makes things
|
|
like ${A[*]/x/y} behave the same as ${*/x/y} when IFS is null
|
|
|
|
subst.c
|
|
- parameter_brace_patsub,parameter_brace_casemod: if expanding ${A[*]}
|
|
when the match is on the rhs of an assignment statement (PF_ASSIGNRHS)
|
|
and ifs is null, make sure the match is performed as if it were
|
|
quoted
|
|
- parameter_brace_substring: now takes a PFLAGS argument
|
|
- parameter_brace_substring: if expanding $* in a context where we
|
|
don't want to do word splitting (expand_no_split_dollar_star &&
|
|
PF_NOSPLIT2), make sure we expand $* as if it were quoted
|
|
- parameter_brace_substring: if expanding an unquoted $* on the rhs of
|
|
an assignment statement when IFS is null, make sure we expand the $*
|
|
as if it were quoted
|
|
|
|
4/4
|
|
---
|
|
doc/{bash.1,bashref.texi}
|
|
- read: document that a delim argument of '' terminates each line when
|
|
a NUL character appears
|
|
|
|
4/5
|
|
---
|
|
subst.c
|
|
- parameter_brace_expand_word: handle case where unquoted $@ is
|
|
expanded in a context where word splitting is not performed (PF_NOSPLIT2)
|
|
and IFS is not equal to the standard value
|
|
- param_expand: handle case where unquoted $@ is expanded in a context
|
|
where word splitting is not performed (PF_NOSPLIT2) and IFS is not
|
|
equal to the standard value. Fixes bug with IFS == $1 when expanding
|
|
unquoted $@ reported by Grisha Levit <grishalevit@gmail.com>
|
|
|
|
4/7
|
|
---
|
|
subst.c
|
|
- pos_params_pat_subst: if MATCH_ASSIGNRHS is set, don't expand $*
|
|
as quoted unless expand_no_split_dollar_star is also set. Fixes
|
|
expansion bug reported on 4/4 by Grisha Levit <grishalevit@gmail.com>
|
|
- parameter_brace_transform: if we transform unquoted A[@] or A[*]
|
|
when IFS is null, don't quote the result of array_transform in the
|
|
same way we don't quote the result of parameter_list_transform,
|
|
since it will come back quoted. Fixes bug reported by
|
|
Grisha Levit <grishalevit@gmail.com>
|
|
- list_transform: if we transform unquoted $* or ${a[*]} when IFS is
|
|
null and expand_no_split_dollar_star is non-zero, call
|
|
string_list_pos_params with Q_DOUBLE_QUOTES to inhibit splitting.
|
|
We do this in all cases except @Q, which is inconsistent but more
|
|
intuitive.
|
|
Fixes bug reported by Grisha Levit <grishalevit@gmail.com>
|
|
|
|
4/8
|
|
---
|
|
builtins/read.def
|
|
- read_mbchar: if unbuffered == 2, we are running read -N and need to
|
|
use zreadn to read the rest of the multibyte char, since the
|
|
previous call to zreadn may have buffered characters. Fixes bug
|
|
reported by Stephane Chazelas <stephane.chazelas@gmail.com>
|
|
|
|
pathexp.h
|
|
- QGLOB_CTLESC: new flag for quote_string_for_globbing: means to turn
|
|
CTLESC CTLESC (quoted CTLESC that's usually removed as part of
|
|
word splitting or quote removal) into CTLESC
|
|
|
|
pathexp.c
|
|
- quote_string_for_globbing: if QGLOB_CTLESC is present in flags,
|
|
turn CTLESC CTLESC into CTLESC, even if the first CTLESC is preceded
|
|
by a backslash. Callers can't do this because the remaining CTLESC
|
|
will be treated as a quoting character and turned into a backslash
|
|
|
|
execute_cmd.c
|
|
- execute_case_command: if the pattern is not quoted, make sure to tell
|
|
quote_string_for_globbing to turn CTLESC CTLESC into CTLESC by
|
|
passing QGLOB_CTLESC. Fixes bug reported 4/2 by Martijn Dekker
|
|
<martijn@inlv.org>
|
|
|
|
4/9
|
|
---
|
|
subst.c
|
|
- string_transform: after calling ansiexpand for the `E' transformation,
|
|
need to call dequote_escapes because ansiexpand assumes it is being
|
|
called by the parser and arranges for ansicstr to quote CTLESC and
|
|
CTLNUL with CTLESC. Reported by Grisha Levit <grishalevit@gmail.com>
|
|
|
|
variables.c
|
|
- mk_env_string: when exporting functions, run them through
|
|
dequote_escapes because any strings containing CTLESC or CTLNUL are
|
|
still quoted with CTLESC. Reported by Grisha Levit
|
|
<grishalevit@gmail.com>
|
|
|
|
subst.[ch]
|
|
- quote_escapes,dequote_escapes: now take const char * argument
|
|
|
|
execute_cmd.c
|
|
- execute_intern_function: if the function name contains CTLESC, run
|
|
it through dequote_escapes just in case it got CTLESC quoting
|
|
CTLESC or CTLNUL from the parser
|
|
|
|
4/11
|
|
----
|
|
eval.c
|
|
- reader_loop: make sure PS0 is expanded and displayed before
|
|
incrementing the command number
|
|
|
|
parse.y
|
|
- prompt_history_number: function to make history number as reported
|
|
by \!, or posix mode !!, be the same index that the (possibly multi-
|
|
line) command will be stored with. The history library increments
|
|
history_offset as soon as a new line is entered, and it's up to the
|
|
history code to store the second and subsequent lines of a command
|
|
in the same history entry. If we are expanding PS0 or PS4, or
|
|
a ${var@P} expansion, we're already past the history entry no
|
|
matter what. Inspired by patch from Grisha Levit
|
|
<grishalevit@gmail.com>
|
|
- decode_prompt_string: call prompt_history_number
|
|
- decode_prompt_string: if expanding PS4 or ${var@P}, make the
|
|
command number the same as reported by PS0/PS1/PS2
|
|
|
|
4/12
|
|
----
|
|
support/Makefile.in
|
|
- clean: remove man2html.o as part of this production instead of
|
|
waiting until `distclean'. Reported by chrlis <chrlis@sbrella.com>
|
|
|
|
subst.c
|
|
- string_list_pos_params: if we are expanding $* in a context where
|
|
IFS is null and expand_no_split_dollar_star is set (no word
|
|
splitting), use string_list_dollar_star to force the positional
|
|
parameters to be joined without first separating them into a list
|
|
and attempting to join them later. Fixes problem with constructs
|
|
like ${var=${*:1}}, pointed out by Grisha Levit
|
|
<grishalevit@gmail.com>. This undoes change to @Q from 4/7, so
|
|
list_transform change reverted
|
|
|
|
4/19
|
|
----
|
|
builtins.h
|
|
- added BUILTINS_H include guard
|
|
|
|
examples/loadables/Makefile.in
|
|
- install loadables.h as sample include file, along with Makefile.inc
|
|
|
|
4/23
|
|
----
|
|
bashline.c
|
|
- maybe_make_readline_line: don't try to do anything if the passed
|
|
NEW_LINE is NULL. Report from Jaren Stangret <sirjaren@gmail.com>,
|
|
fix from Eduardo Bustamante <dualbus@gmail.com>
|
|
|
|
4/24
|
|
----
|
|
parse.y
|
|
- xparse_dolparen: if the current token (the last thing read_token
|
|
returned to yylex) is shell_eof_token, assume that it is the new
|
|
bison lookahead token and clear it. Fixes bug reported by
|
|
Werner Fink <werner@suse.de>
|
|
|
|
4/25
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- cmdhist: clarify that this option only has an effect if history is
|
|
enabled. Suggested by Matthew Braun <matthew@powerplug.com>
|
|
|
|
4/26
|
|
----
|
|
jobs.c
|
|
- wait_for: if a non-interactive shell with job control enabled (set -m)
|
|
detects that a foreground job died due to SIGINT, act as if the shell
|
|
also received the SIGINT. Prompted by an austin-group-l discussion
|
|
- waitchld: run SIGCHLD trap for each child exited even if job control
|
|
is not enabled when in Posix mode. Prompted by an austin-group-l
|
|
discussion
|
|
|
|
4/27
|
|
----
|
|
lib/readline/histfile.c
|
|
- read_history_range: if the history file is empty, free the history
|
|
filename before returning. Report and fix from Eduardo Bustamante
|
|
<dualbus@gmail.com>
|
|
|
|
lib/readline/bind.c
|
|
- rl_parse_and_bind: make sure there is something, even if it's a
|
|
quoted empty string, before the `:' in a key binding. Report from
|
|
Eduardo Bustamante <dualbus@gmail.com>
|
|
- rl_parse_and_bind: if the right side of a key binding starts with a
|
|
quote, make sure there's a matching close quote before treating it
|
|
as a macro definition
|
|
- rl_translate_keyseq: if a key sequence ends with \C- or \M- (or
|
|
\C-\M-) make sure we break out of the loop if moving to the character
|
|
to be translated is a NUL. Old code did this only in the \C-\M-
|
|
case. Report from Eduardo Bustamante <dualbus@gmail.com>
|
|
|
|
4/28
|
|
----
|
|
lib/glob/sm_loop.c
|
|
- GMATCH: implement a clever technique from glibc that avoids
|
|
backtracking past a `*' if we've already chosen to use it and need
|
|
matches beyond it. Look at https://research.swtch.com/glob for a
|
|
longer explanation. This results in a significant speedup for globs
|
|
with multiple instances of `*', especially with more than 4.
|
|
|
|
5/2
|
|
---
|
|
lib/readline/bind.c
|
|
- rl_translate_keyseq: make sure a trailing backslash in the key
|
|
sequence is preserved. Report from Eduardo Bustamante
|
|
<dualbus@gmail.com>
|
|
|
|
5/3
|
|
---
|
|
builtins/builtin.def
|
|
- builtin_builtin: make sure to set this_shell_builtin to the builtin
|
|
command being executed, overwriting `builtin'. Leave
|
|
last_shell_builtin alone. Fixes bug reported by Luiz Angelo Daros
|
|
de Luca <luizluca@gmail.com>
|
|
|
|
jobs.c
|
|
- waitchld: modify change of 4/26 to run SIGCHLD traps even if job
|
|
control is not enabled
|
|
|
|
lib/readline/misc.c
|
|
- rl_get_previous_history: if we didn't find a previous history entry
|
|
to use, call rl_maybe_unsave_line before returning because we
|
|
aren't going to use the saved line, and it has the same undo list
|
|
as rl_undo_list. Fixes fuzzing bug reported by Eduardo Bustamante
|
|
<dualbus@gmail.com>
|
|
- rl_get_{next,previous}_history: if there is no history list, don't
|
|
bother doing anything
|
|
|
|
5/4
|
|
---
|
|
expr.c
|
|
- popexp: if we error out due to stack underflow, make sure to zero out
|
|
expression and lasttp; they may contain undefined values we don't
|
|
want evalerror to print
|
|
- expr_unwind: handle expr_depth decrementing below zero
|
|
- evalexp: restore the old value of evalbuf even if we error and
|
|
longjmp; we may have called evalexp recursively
|
|
- evalerror: make sure expression is non-NULL before trying to print it.
|
|
These fix fuzzing bug reported by Eduardo Bustamante
|
|
<dualbus@gmail.com>, happens only in cases where we don't longjmp on
|
|
a fatal expansion error
|
|
|
|
5/5
|
|
---
|
|
parse.y
|
|
- read_token_word: when checking for a word that's a target of a
|
|
redirection, we can potentially call valid_array_reference, which
|
|
can end up calling the parser recursively. If it does that, we
|
|
need to make sure that yylval.word doesn't change, so we set it back
|
|
to the_word. Fixes another fuzzing bug
|
|
|
|
parse.y
|
|
- arith_for_command: make syntax errors in the arithmetic for command
|
|
(signaled by make_arith_for_command returning NULL) more like
|
|
language syntax errors by calling YYERROR. Avoids complicated
|
|
attempts at error recovery and dealing with NULL returns from
|
|
command productions. Pointed out by Eduardo Bustamante
|
|
<dualbus@gmail.com>
|
|
|
|
lib/readline/kill.c
|
|
- _rl_copy_to_kill_ring: make sure the current slot in the kill ring
|
|
has something in it, even if the last command was a kill, before
|
|
trying to modify it. Another fuzzing bug
|
|
|
|
5/6
|
|
---
|
|
builtins/read.def
|
|
- read_builtin: if we see a backslash when not in raw mode (not -r),
|
|
only back up `i' when we read the next character if we know we added
|
|
a CTLESC the last time through the loop (skip_ctlesc == 0),
|
|
especially if i == 0. Another fuzzing bug from Eduardo Bustamante
|
|
<dualbus@gmail.com>
|
|
|
|
5/8
|
|
---
|
|
builtins/read.def
|
|
- read_mbchar: handle zreadn/zreadc/zread returning EOF in the middle
|
|
of an incomplete multibyte sequence. Fixes another fuzzing bug
|
|
- read_builtin: use mb_cur_max instead of constant 4 when deciding
|
|
whether the next character can exceed the number of bytes available
|
|
in input_string
|
|
|
|
lib/readline/input.c
|
|
- MinGW: include <conio.h> before <io.h>. Fix from Eli Zaretskii
|
|
<eliz@gnu.org>
|
|
|
|
builtins/read.def
|
|
- read_builtin: if we get input from readline, we need to get the
|
|
remainder of a multibyte character from rlbuf instead of calling
|
|
read_mbchar. Bug reported by Eduardo Bustamante <dualbus@gmail.com>
|
|
|
|
5/9
|
|
---
|
|
parse.y
|
|
- token_is_assignment: use the allocated buffer approach in all cases,
|
|
not just if we're not using bash malloc. This avoids the assignment
|
|
to t[i+1] writing beyond the end of the allocated token if
|
|
i == token_buffer_size - 1. Another fuzzing bug
|
|
- xparse_dolparen: if parse_string returns < 0, we clear out the
|
|
current shell_input_line before performing a longjmp, since we're
|
|
abandoning parsing of this command. This is consistent with how
|
|
the parser resynchronizes after other syntax errors
|
|
- GRAMMAR: add 'error yacc_EOF' production to handle a syntax error
|
|
that's immediately followed by an EOF after resynchronization.
|
|
Fixes another fuzzing bug
|
|
|
|
5/10
|
|
----
|
|
lib/readline/text.c
|
|
- _rl_set_mark_at_pos: don't let the mark be set to a position < 0.
|
|
Fixes a fuzzing bug
|
|
- rl_exchange_point_and_mark: don't do anything if the mark is already
|
|
less than 0
|
|
|
|
5/12
|
|
----
|
|
lib/readline/rlmbutil.h
|
|
- wchar_t: make sure this is defined as int if multibyte characters
|
|
aren't supported
|
|
|
|
lib/readline/text.c
|
|
- _rl_change_case: don't force use of ascii toupper and tolower if
|
|
isascii returns true; it's not defined to work on characters outside
|
|
the 0..255 (really 0..127) range. Bug reported by
|
|
Eduardo Bustamante <dualbus@gmail.com>
|
|
|
|
5/14
|
|
----
|
|
lib/readline/text.c
|
|
- rl_change_case: handle case where the old and new characters (after
|
|
the case change) are not the same number of bytes. Pointed out in
|
|
http://lists.gnu.org/archive/html/bug-bash/2015-01/msg00091.html
|
|
|
|
lib/readline/display.c
|
|
- expand_prompt: use `ret' as first parameter to _rl_find_prev_mbchar
|
|
since that needs the base of the array. Bug from fuzzing reported by
|
|
Eduardo Bustamante <dualbus@gmail.com>
|
|
|
|
5/15
|
|
----
|
|
execute_cmd.c
|
|
- execute_simple_command, execute_arith_command, execute_cond_command,
|
|
execute_arith_for_command: adjust the line number when executing a
|
|
function interactively so that the first command in the function is
|
|
line 1, not line 0, as Posix requires. Reported by Robert Elz
|
|
<kre@bmunnari.OZ.AU>
|
|
- execute_simple_command, execute_arith_command, execute_cond_command,
|
|
execute_arith_for_command: ony adjust the line number when executing
|
|
a function interactively if we are not sourcing a file
|
|
(sourcelevel == 0), so this is consistent everywhere we adjust the
|
|
line number
|
|
|
|
5/16
|
|
----
|
|
bashline.c
|
|
- bash_directory_completion_hook: when calling split_at_delims to see
|
|
whether a ${ or $( is closed, use the right value for `start' relative
|
|
to the substring beginning at `$'. Bug from fuzzing reported by
|
|
Eduardo Bustamante <dualbus@gmail.com>
|
|
|
|
expr.c
|
|
- expassign: if the call to expcond generates a syntax error in a
|
|
context when the shell won't longjmp (like when evaluating $PS1),
|
|
it will end up NULL and we need to catch it before calling strlen.
|
|
Bug from fuzzing reported by Eduardo Bustamante <dualbus@gmail.com>
|
|
|
|
examples/bash-completion/
|
|
- new place to include a current or recent version of the
|
|
bash-completion package
|
|
|
|
5/19
|
|
----
|
|
lib/readline/display.c
|
|
- CHECK_INV_LBREAKS: new versions for multibyte and single-byte chars,
|
|
so the multibyte version can check and increase the size of
|
|
line_state_invisible->wbsize and line_state_invisible->wrapped_line,
|
|
callers who call CHECK_INV_LBREAKS must update
|
|
wrapped_line[newlines] when in HANDLE_MULTIBYTE mode. Fuzzing bug
|
|
reported by Eduardo Bustamante <dualbus@gmail.com>
|
|
|
|
5/24
|
|
----
|
|
lib/readline/search.c
|
|
- _rl_nsearch_callback,noninc_search: handle _rl_search_getchar
|
|
returning -1 (EOF or read error) by aborting the search.
|
|
Fuzzing bug reported by Eduardo Bustamante <dualbus@gmail.com>
|
|
|
|
5/25
|
|
----
|
|
variables.c
|
|
- localvar_inherit: new variable, controlled by shopt localvar_inherit
|
|
option
|
|
- make_local_variable: if localvar_inherit is set, the new local
|
|
variable inherits a previous scope's variable's value, attributes
|
|
(except nameref), and dynamic variable information. If a local
|
|
variable inherits a value, the local is not invisible
|
|
|
|
builtins/shopt.def
|
|
- localvar_inherit: new option
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- localvar_inherit: document new shopt option
|
|
|
|
5/29
|
|
----
|
|
lib/readline/readline.c
|
|
- _rl_subseq_result: only return -1 and back up the chain if we are
|
|
dealing with a result (r) that's already < 0 and we are at the end
|
|
of a multi-key sequence. Otherwise, a failing readline command (e.g.,
|
|
delete-char at the end of a line) could cause this code to be
|
|
executed. Report from Nuzhna Pomoshch <nuzhna_pomoshch@yahoo.com>
|
|
|
|
lib/readline/histfile.c
|
|
- read_history_range: if the file isn't a regular file, return an
|
|
error. Bug report from Eduardo Bustamante <dualbus@gmail.com>,
|
|
relaying from IRC
|
|
|
|
5/30
|
|
----
|
|
variables.c
|
|
- set_pwd: if in Posix mode, and PWD appears in initial environment as
|
|
an absolute pathname to the current directory, set PWD to the result
|
|
of canonicalizing the environment value, or to the physical path if
|
|
canonicalization fails. From a suggestion by Eduardo Bustamante
|
|
<dualbus@gmail.com>
|
|
|
|
5/31
|
|
----
|
|
builtins/read.def
|
|
- read_builtin: if -n or -N option is supplied with a 0 argument,
|
|
don't attempt to read any characters; bail out right away. Reported
|
|
by Eduardo Bustamante <dualbus@gmail.com>, relaying from IRC
|
|
|
|
6/3
|
|
---
|
|
config.h.in
|
|
- HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC: add define, used by stat-time.h
|
|
to construct a timespec from struct stat. Report and fix from
|
|
Siteshwar Vashisht <svashisht@redhat.com>
|
|
|
|
variables.h
|
|
- att_regenerate: new internal variable attribute: if set, regenerate
|
|
dynamic variable's value when it's exported and we are creating the
|
|
export environment
|
|
|
|
variables.c
|
|
- init_dynamic_variables: LINENO, EPOCHSECONDS, EPOCHREALTIME: set
|
|
internal regenerate attribute for these dynamic variables
|
|
- make_env_array_from_var_list: if a dynamic variable has the
|
|
regenerate attribute set, call the dynamic value function to generate
|
|
an updated value before placing it in the environment. From a report
|
|
about exporting LINENO from by Robert Elz <kre@bmunnari.OZ.AU>
|
|
|
|
6/4
|
|
---
|
|
lib/glob/sm_loop.c
|
|
- BRACKMATCH: at the matched: label, make sure we get the bracket
|
|
character we're looking for (char class, collating symbol. etc.)
|
|
before we decrement the count of braces we're looking for. Eventually
|
|
we could do something about badly-formed bracket expressions
|
|
|
|
6/7
|
|
---
|
|
lib/readline/histlib.h
|
|
- strchr: only declare if __STDC__ is not defined, since we already
|
|
include <string.h>. Report from Chi-Hsuan Yen <yan12125@gmail.com>
|
|
|
|
6/9
|
|
---
|
|
lib/readline/display.c
|
|
- update_line: when wrapping lines with multibyte chars at the end of
|
|
the new line being wrapped, make sure we copy the NULL byte in old
|
|
when moving the contents of old around. Fuzzing bug reported by
|
|
Eduardo Bustamante <dualbus@gmail.com>
|
|
|
|
lib/readline/mbutil.c
|
|
- _rl_get_char_len: use MB_CUR_MAX in the call to mbrlen; there's no
|
|
need to look at the rest of the string when we're just interested in
|
|
the length of a single character
|
|
|
|
6/12
|
|
----
|
|
jobs.c
|
|
- wait_for: when waiting for the next child to exit (ANY_PID), make
|
|
sure to restore the old SIGINT handler before returning. Fixes
|
|
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864649
|
|
|
|
6/14
|
|
----
|
|
lib/readline/display.c
|
|
- expand_prompt: make sure `ret' is NULL-terminated before calling
|
|
_rl_prev_mbchar_internal, since that calls strlen, which requires
|
|
the passed string to be NULL-terminated. Another fuzzing bug.
|
|
|
|
6/15
|
|
----
|
|
lib/readline/isearch.c
|
|
- _rl_isearch_fini: use rl_replace_line instead of strcpy so rl_end
|
|
gets set right
|
|
- _rl_isearch_fini: after restoring rl_point, call _rl_fix_point so
|
|
we don't set rl_point > rl_end. Fixes a fuzzing bug
|
|
|
|
lib/readline/mbutil.c
|
|
- _rl_find_next_mbchar_internal: if _rl_adjust_point returns < 0,
|
|
just punt, treat the value as a byte, and advance point by 1
|
|
|
|
lib/readline/util.c
|
|
- rl_tilde_expand: rearrange code in the whitespace loop so that
|
|
`start' gets tested first and we don't try to dereference
|
|
rl_line_buffer[-1]. Another fuzzing bug from dualbus@gmail.com
|
|
|
|
bashline.c
|
|
- bash_dequote_filename: make sure that pointers that are used as
|
|
indices into sh_syntaxtab are cast to unsigned char first, to
|
|
avoid problems with signed chars > 128. Fixes a fuzzing bug.
|
|
|
|
lib/readline/kill.c
|
|
- _rl_copy_to_kill_ring: when reallocating the kill ring, make sure to
|
|
allocate one more than the max number of kills so the loop that
|
|
copies the kill ring entries down runs right (and to mirror the
|
|
initial allocation). Fixes a fuzzing bug.
|
|
|
|
lib/readline/isearch.c
|
|
- _rl_isearch_dispatch: make sure that cxt->sline_index never goes < 0
|
|
even when searching a line in reverse. Fixes a fuzzing bug
|
|
|
|
6/16
|
|
----
|
|
parse.y
|
|
- xparse_dolparen: short-circuit immediately if passed a empty string
|
|
|
|
lib/readline/display.c
|
|
- update_line: when wrapping multibyte characters, make sure we deal
|
|
with WCWIDTH returning -1. Fixes a fuzzing bug
|
|
|
|
6/17
|
|
----
|
|
execute_cmd.c
|
|
- execute_coproc: make sure `invert' is set before trying to use it
|
|
when returning failure on invalid coproc name. Report and fix from
|
|
Eduardo Bustamante <dualbus@gmail.com>
|
|
- execute_command_internal: make sure execute_coproc sets
|
|
last_command_exit_value if it returns failure, so an invalid name
|
|
can set $? = 1. Report and fix from Eduardo Bustamante
|
|
<dualbus@gmail.com>
|
|
|
|
lib/readline/display.c
|
|
- update_line: make sure all references to `wrapped_line' are wrapped
|
|
with #ifdef HANDLE_MULTIBYTE. Report and fix from Eduardo Bustamante
|
|
<dualbus@gmail.com>
|
|
|
|
lib/readline/vi_mode.c
|
|
- _rl_vi_change_char: don't use rl_point++ when you mean to move
|
|
forward a character; use _rl_vi_append_forward to account for
|
|
multibyte characters and take vi end of line handling into account
|
|
- _rl_vi_last_replacement: now an array of chars whether we are
|
|
using multibyte chars or not. If we're not, the character we read
|
|
to use as the replacement is saved as the first element of the array
|
|
- rl_vi_change_char,_rl_vi_callback_change_char: changes to deal with
|
|
_rl_vi_last_replacement being an array. Fixes bug reported by
|
|
Eduardo Bustamante <dualbus@gmail.com>
|
|
|
|
lib/readline/mbutil.c
|
|
- _rl_get_char_len: look at at most MB_CUR_MAX characters, but maybe
|
|
fewer if the length of the string is less
|
|
|
|
builtins/bind.def
|
|
- unbind_keyseq: new function for the -r option; checks whether the
|
|
key sequence is actually bound before trying to bind it to NULL.
|
|
Partial fix for https://savannah.gnu.org/support/?109329
|
|
|
|
parse.y
|
|
- augment `error yacc_EOF' production to call YYABORT in non-interactive
|
|
shells or calls to parse_and_execute (eval, command substitution,
|
|
etc.) Fixes bug reported by Martijn Dekker <martijn@inlv.org>
|
|
|
|
6/19
|
|
----
|
|
bashline.c
|
|
- edit_and_execute_command: don't add rl_line_buffer to the history
|
|
list if it's empty; consistent with how other code treats an empty
|
|
line
|
|
|
|
execute_cmd.c
|
|
- execute_builtin: make sure to preserve the temporary env across the
|
|
execution of the `read' builtin or `fc' builtin if HISTORY is
|
|
defined, in case `read -e' calls edit-and-execute-command. Should
|
|
have no side effects. Reported by Eduardo Bustamante
|
|
<dualbus@gmail.com>
|
|
|
|
general.c
|
|
- line_isblank: new function: returns true if passed string is composed
|
|
entirely of blanks
|
|
|
|
general.h
|
|
- line_isblank: new extern declaration
|
|
|
|
parse.y
|
|
- history_delimiting_chars: return "" for a blank line, since there's
|
|
nothing to delimit with `;'
|
|
|
|
6/21
|
|
----
|
|
jobs.c
|
|
- wait_for: make sure to call restore_sigint_handler before returning
|
|
if we return out of the loop due to no children. Report from
|
|
Eduardo Bustamante <dualbus@gmail.com>
|
|
|
|
subst.c
|
|
- expand_word_internal: if split_on_spaces is set, and the word is
|
|
unquoted, and IFS is null, split the results of the previous steps
|
|
on $' \t\n' instead of just ' '. This relies on the previous steps
|
|
quoting the portions of the word that should not be split. Fixes
|
|
bug reported by Kevin Brodsky <corax26@gmail.com>
|
|
|
|
expr.c
|
|
- evalexp: after running expr_unwind, make sure we reset expr_depth
|
|
to 0 for the next call
|
|
- expr_streval: if after a call to get_array_value (which can call
|
|
the expression evaluator recursively) we discover that expr_depth
|
|
is less than it was before we called it, we assume there has been
|
|
some kind of error and an expr_unwind, so we treat it as an
|
|
error and either longjmp back to the expression top level or return
|
|
0 immediately. Fixes bug reported by Eduardo Bustamante
|
|
<dualbus@gmail.com>
|
|
|
|
6/23
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- add text noting that $* and ${array[*]} (unquoted) can also expand
|
|
to multiple words
|
|
|
|
6/29
|
|
----
|
|
general.[ch]
|
|
- default_columns: new function, returns the value of COLUMNS, or
|
|
refreshes it if check_window_size is set and COLUMNS is unset. By
|
|
default, it returns 80
|
|
|
|
execute_cmd.c
|
|
- select_query: use default_columns() instead of fetching value of
|
|
COLUMNS directly
|
|
|
|
builtins/help.def
|
|
- show_builtin_command_help: use default_columns() instead of fetching
|
|
value of COLUMNS directly
|
|
|
|
6/30
|
|
----
|
|
builtins/read.def
|
|
- read_builtin: call QUIT during the read loop, just in case we get a
|
|
signal we should act on that didn't cause read to be interrupted.
|
|
Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1466737
|
|
- read_builtin: if -n or -N is supplied with a 0 argument, try a zero-
|
|
length read to detect errors and return failure if that read returns
|
|
a value < 0. Suggested by dualbus@gmail.com
|
|
|
|
7/4
|
|
---
|
|
bashhist.c
|
|
- maybe_add_history: keep track of whether the current line is a shell
|
|
comment, even if we're not adding it because it's in a multi-line
|
|
command, so we use appropriate delimiters between it and any
|
|
subsequent lines. Fixes bug reported by Grisha Levit
|
|
<grishalevit@gmail.com> back on 2/28/2017
|
|
|
|
bashline.c
|
|
- operate_and_get_next: if given an explicit argument, use that to
|
|
choose which line in the history to use.
|
|
|
|
lib/readline/doc/rluser.texi,doc/bash.1
|
|
- operate-and-get-next: document new effect of explicit numeric arg
|
|
|
|
lib/readline/complete.c
|
|
- fnprint: make sure print_len is initialized before using it on
|
|
systems without multibyte character support. Report and fix from
|
|
Juan Manuel Guerrero <juan.guerrero@gmx.de>
|
|
|
|
7/6
|
|
---
|
|
builtins/printf.def
|
|
- PRETURN,printf_builtin: check variable returned by bind_printf_variable,
|
|
return failure if that indicates we can't perform an assignment
|
|
because the variable is marked readonly or noassign. Fixes bug
|
|
reported by Arnaud Gaillard <arnaud.mgaillard@gmail.com>
|
|
|
|
7/7
|
|
---
|
|
lib/readline/text.c
|
|
- rl_quoted_insert: new feature: a negative argument means to insert
|
|
the next -COUNT characters using quoted-insert. Original feature
|
|
from Jason Hood <jadoxa@yahoo.com.au>. Still needs work on
|
|
redisplay
|
|
- _rl_insert_next_callback: implement support for negative arguments
|
|
similar to rl_quoted_insert: we just insert one at a time and keep
|
|
increasing the count until it hits 0
|
|
|
|
lib/readline/misc.c
|
|
- _rl_arg_callback: if the return value from _rl_arg_dispatch indicates
|
|
we should keep reading a numeric argument, update the message with
|
|
the new arg value
|
|
|
|
7/8
|
|
---
|
|
lib/readline/signals.c
|
|
- _rl_handle_signal: make sure all uses of any of the job control
|
|
signals are protected by a check for SIGTSTP being defined. Report
|
|
from Juan Manuel Guerrero <juan.guerrero@gmx.de>
|
|
|
|
7/11
|
|
----
|
|
lib/readline/vi_mode.c
|
|
- rl_vi_replace: when making the new keymap for vi replacement mode,
|
|
make sure that ANYOTHERKEY is set correctly, otherwise some input
|
|
will cause _rl_dispatch to return -2 to the top level. Fixes fuzzing
|
|
bug reported by Ben Wong <benjamin.a.wong@gmail.com>
|
|
|
|
7/19
|
|
----
|
|
builtins/read.def
|
|
- struct ttsave: make the attrs member a struct, not a pointer, to force
|
|
a structure copy that will survive a longjmp to another context.
|
|
Leaving it as a pointer to a local struct is not portable
|
|
|
|
9/10
|
|
----
|
|
execute_cmd.c
|
|
- execute_builtin: make sure that we set up the unwind-protect for
|
|
pop_scope (temporary_env is non-zero) so that the temporary env
|
|
is propagated to the current environment only for special builtins
|
|
(source/eval/unset) not run by the command builtin
|
|
(flags & CMD_COMMAND_BUILTIN == 0). Fixes bug reported by
|
|
Martijn Dekker <martijn@inlv.org>
|
|
|
|
9/17
|
|
----
|
|
builtins/printf.def
|
|
- asciicode: don't use mblen to check whether or not a character is a
|
|
valid multibyte character; use mbtowc right away and then inspect
|
|
the return value. Fixes bug reported by Stephane Chazelas
|
|
<stephane.chazelas@gmail.com>
|
|
|
|
9/27
|
|
----
|
|
{jobs,subst}.h
|
|
- move declaration of last_command_subst_pid to subst.h, since it's
|
|
declared in subst.c and doesn't depend on job control. Reported by
|
|
Martijn Dekker <martijn@inlv.org>
|
|
|
|
builtins/read.def,variables.c
|
|
- fixed a couple of problems (READLINE, ARRAY_VARS) that prevented
|
|
the minimal config from building
|
|
|
|
10/1
|
|
----
|
|
parse.y
|
|
- special_case_tokens: if we are returning DO in a case where the last
|
|
two tokens read are `FOR' and `WORD' make sure we decrement
|
|
expecting_in_token. Fixes bug reported by Martijn Dekker
|
|
<martijn@inlv.org>
|
|
|
|
10/4
|
|
----
|
|
subst.c
|
|
- expand_string_for_rhs: now takes an additional PFLAGS argument from
|
|
its caller (one so far); passes that through to call_expand_word_internal
|
|
as W_ASSIGNRHS. Fixes bug reported by Martijn Dekker
|
|
<martijn@inlv.org>
|
|
- expand_string_for_rhs: expanding b in ${a[:]=b} is now done as if
|
|
b were the rhs of an assignment statement. This means that splitting
|
|
isn't done, but tilde expansion is performed as if the statement
|
|
were `a=b'. Fixes splitting bug with $* reported by Martijn Dekker
|
|
<martijn@inlv.org>
|
|
|
|
command.h
|
|
- W_NOASSNTILDE: new word flag, means to not perform tilde expansion
|
|
following a `:' even if the word has the W_ASSIGNRHS flag enabled
|
|
|
|
subst.c
|
|
- expand_word_internal: if we see a `:' with the W_NOASSNTILDE flag
|
|
set, just add the character and inhibit any subsequent tilde
|
|
expansion. Currently not set anywhere, but it could be set in
|
|
expand_string_for_rhs to satisfy its peculiar semantics
|
|
|
|
10/6
|
|
----
|
|
lib/sh/casemod.c
|
|
- sh_modcase: convert even single-byte wide characters to wide upper
|
|
or lowercase equivalents to accommodate locales where single-byte
|
|
characters have multibyte upper and lower case conversions. Bug
|
|
reported by Stephane Chazelas <stephane.chazelas@gmail.com>
|
|
|
|
10/7
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- slight changes to the description of command_not_found_handle to
|
|
clarify that it's executed in a separate execution environment,
|
|
just like if the command was found. Reported by Martijn Dekker
|
|
<martijn@inlv.org>
|
|
|
|
10/8
|
|
----
|
|
lib/readline/doc/{history.3,hstech.texi}
|
|
- history_get: clarify the range of valid values for the OFFSET
|
|
argument. From a report by Kevin Ryde <user42_kevin@yahoo.com.au>
|
|
|
|
10/21
|
|
-----
|
|
subst.c
|
|
- expand_string_for_rhs: set W_NOASSNTILDE if the operator is `='
|
|
for backwards compatibility with bash-4.4
|
|
|
|
shell.c
|
|
- main: set positional parameters before running the startup files,
|
|
so the startup files can inspect $@. Often-requested feature,
|
|
most recently from Stephane Chazelas <stephane.chazelas@gmail.com>
|
|
|
|
10/27
|
|
-----
|
|
doc/{bash.1,bashref.texi}
|
|
- Arrays: add some clarifying language to make it clear that array
|
|
references that don't use the ${a[s]} syntax are subject to
|
|
globbing when passed as arguments to commands such as unset, and
|
|
should be quoted for safety. Change prompted by a report from
|
|
Eli Barzilay <eli@barzilay.org>
|
|
|
|
parse.y
|
|
- parse_comsub: make sure we don't run off the end of the `ret'
|
|
buffer when checking for the here doc delimiter. Report from
|
|
Jakub Wilk <jwilk@jwilk.net>, the result of a fuzzing test. Pointer
|
|
to place for the fix from Eduardo Bustamante <dualbus@gmail.com>
|
|
|
|
10/30
|
|
-----
|
|
builtins/pushd.def
|
|
- get_directory_stack: make sure the current directory (element 0 of
|
|
the stack) is passed to polite_directory_format under the same
|
|
conditions as the rest of the stack entries (flags & 1). Otherwise
|
|
something like `cd ${DIRSTACK[0]}' will fail. Fixes bug reported
|
|
by Steve Jones <sjml@slohj.org>
|
|
|
|
builtins/declare.def
|
|
- declare_internal: when checking for a `[' to see whether or not this
|
|
is an array variable declaration (declare -a foo[12]), make sure
|
|
we don't do the check if we're just dealing with shell functions.
|
|
Bug and pointer to fix from PJ Eby <pje@telecommunity.com>
|
|
|
|
11/1
|
|
----
|
|
parse.y
|
|
- parse_comsub: if we read a four-character word followed by a break
|
|
character, and that word is not one of the reserved words, set
|
|
lex_rwlen to 0 since we are no longer in a reserved word. It only
|
|
hurts if another break character immediately follows, so that test
|
|
succeeds again. Turn off the RESWDOK flag only if it's not a shell
|
|
metacharacter, too. Fixes bug reported by Kjetil Torgrim Homme
|
|
<kjetilho@scribus.ms.redpill-linpro.com>
|
|
|
|
11/3
|
|
----
|
|
lib/readline/isearch.c
|
|
- _rl_isearch_dispatch: if we are searching in reverse order, let
|
|
sline_index go to -1 to avoid searching the same line twice. It
|
|
gets reset right after that, so there's no danger of indexing into
|
|
the history line with a negative index.
|
|
|
|
11/7
|
|
----
|
|
execute_cmd.c
|
|
- time_command: only restore command->flags if CODE indicates we didn't
|
|
perform a longjmp back to top_level. If we did, `command' has already
|
|
been freed. Fixes bug reported on savannah by
|
|
ukuvbu oibws <xyzdr4gon333@googlemail.com>
|
|
https://savannah.gnu.org/support/?109403
|
|
|
|
11/10
|
|
-----
|
|
lib/sh/unicode.c
|
|
- u32cconv: make sure to initialize localconv to -1 (error) in case
|
|
we switch from a utf-8 locale to something else and call
|
|
iconv_close. Report from Egmont Koblinger <egmont@gmail.com>; fix
|
|
from Eduardo Bustamante <dualbus@gmail.com>
|
|
|
|
11/16
|
|
-----
|
|
subst.c
|
|
- parse_comsub: istring_index should be a size_t to avoid integer
|
|
overflow when allocating large pieces of memory. Report and fix
|
|
from Siteshwar Vashisht <svashisht@redhat.com>, originally based on
|
|
http://lists.gnu.org/archive/html/bug-bash/2017-11/msg00047.html
|
|
|
|
11/24
|
|
-----
|
|
lib/readline/bind.c
|
|
- rl_empty_keymap: new public function, returns non-zero if there are
|
|
no keys bound in the keymap passed as an argument
|
|
|
|
lib/readline/readline.h
|
|
- rl_empty_keymap: new public extern declaration
|
|
|
|
lib/readline/doc/rltech.texi
|
|
- rl_empty_keymap: document new function
|
|
|
|
lib/readline/bind.c
|
|
- rl_generic_bind: keep track of the previous keymap and previous
|
|
index in a multi-key key sequence so we can remove an empty terminal
|
|
keymap and remove a previous override to ANYOTHERKEY. Right now,
|
|
this only works for one previous keymap level. Inspired by a report
|
|
from Clark Wang <dearvoid@gmail.com>
|
|
|
|
11/25
|
|
-----
|
|
lib/readline/display.c
|
|
- _rl_update_final: make sure that computing the length of the visible
|
|
bottom line (botline_length) takes any invisible characters in the
|
|
prompt into account (woff). This value is used as part of the check
|
|
whether or not we want to remove the line-wrapping indicator on
|
|
terminals like xterm
|
|
- _rl_update_final: when removing the line-wrapping indicator on xterm,
|
|
make sure we take invisible characters in the prompt (woff) into
|
|
account when computing the character in the rightmost physical
|
|
screen position. Fixes cosmetic line-wrapping issue reported by
|
|
Egmont Koblinger <egmont@gmail.com>
|
|
|
|
11/27
|
|
-----
|
|
lib/sh/ufuncs.c
|
|
- fsleep: if using select to implement sleep, use restart after
|
|
a signal interrupts the select and handle pending signals. If
|
|
pselect is available, use that instead and block SIGCHLD while
|
|
pselect is executing.
|
|
Fixes report from Thiruvadi Rajaraman <trajaraman@mvista.com>
|
|
|
|
11/28
|
|
-----
|
|
lib/readline/signals.c
|
|
- rl_check_signals: new public function: a wrapper for RL_CHECK_SIGNALS
|
|
that can be used by applications that install a wrapper for
|
|
rl_getc (rl_getc_function) so they can respond to signals that
|
|
arrive while waiting for input in the same way as rl_getc. The app
|
|
can use rl_pending_signal() to get the most recently-received
|
|
signal. From a discussion about Gnuplot initiated by
|
|
Rin Okuyama <rokuyama@rk.phys.keio.ac.jp>
|
|
|
|
lib/readline/readline.h
|
|
- rl_check_signals: new extern declaration
|
|
|
|
lib/readline/doc/rltech.texi
|
|
- rl_check_signals: document new public function
|
|
|
|
variables.c
|
|
- set_pwd: test for and force an inherited OLDPWD to be a directory
|
|
if OLDPWD_CHECK_DIRECTORY is defined in config-top.h (it is by
|
|
default). Issue raised by Mikulas Patocka <mikulas@twibright.com>
|
|
|
|
config-top.h
|
|
- OLDPWD_CHECK_DIRECTORY: new define, defined to 1 by default
|
|
|
|
11/29
|
|
-----
|
|
Makefile.in
|
|
- pathexp.o: add dependencies on libintl.h. Reported by
|
|
Ross Burton <ross@burtonini.com>
|
|
|
|
12/1
|
|
----
|
|
lib/sh/ufuncs.c
|
|
- fsleep: add blocking and releasing SIGCHLD using sigprocmask
|
|
around call to select(2) even if pselect(2) is not available
|
|
|
|
12/3
|
|
----
|
|
execute_cmd.c
|
|
- coproc_setstatus: new utility function, take a pointer to a coproc
|
|
and a status and mark the coproc as dead and having been reaped
|
|
with that status. Used by child processes who want to invalidate
|
|
the coproc's pid
|
|
|
|
12/5
|
|
----
|
|
subst.c
|
|
- process_substitute: instead of just having a flag to denote that a
|
|
file descriptor is connected to a process substitution, store the
|
|
pid of the child process (still needs work)
|
|
- find_procsub_child,set_procsub_status,reap_procsubs: utility
|
|
functions to allow the job control code to detect that a process
|
|
substitution child has died and deallocate the file descriptors
|
|
or pathname
|
|
|
|
subst.h
|
|
- find_procsub_child,set_procsub_status,reap_procsubs: extern
|
|
declarations
|
|
|
|
nojobs.c
|
|
- set_pid_status: if we are reaping a process substitution, call
|
|
set_procsub_status to record the fact
|
|
|
|
jobs.c
|
|
- waitchld: if we are reaping a process substitution, call
|
|
set_procsub_status to record the fact. Doesn't really do anything
|
|
yet
|
|
|
|
12/6
|
|
----
|
|
execute_cmd.c
|
|
- execute_command: don't call unlink_fifo_list if we're in the
|
|
middle of executing a list of commands (executing_list != 0).
|
|
Partial fix for bug reported by Stephane Chazelas
|
|
<stephane.chazelas@gmail.com>
|
|
- execute_simple_command: don't close process substitution file
|
|
descriptors in the parent after forking children in a pipeline;
|
|
defer until pipeline completes, since parent may have inherited
|
|
fds from a calling scope (e.g., via `.'). EXPERIMENTAL
|
|
- execute_disk_command: don't close process substitution file
|
|
descriptors in the parent after forking the child. EXPERIMENTAL
|
|
|
|
12/7
|
|
----
|
|
doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
|
|
- show-mode-in-prompt: clarify that this must be enabled before the
|
|
vi and emacs mode strings are prefixed to the prompt. Report from
|
|
Rob Foehl <rwf@loonybin.net>
|
|
|
|
12/8
|
|
----
|
|
execute_cmd.c
|
|
- execute_coproc: don't warn about an existing coproc if the write and
|
|
read file descriptors are unusable (-1), as they will be after a
|
|
call to coproc_closeall in a subshell. Fixes spurious warning
|
|
reported by Tobias Hoffmann <lfile-list@thax.hardliners.org>
|
|
|
|
jobs.c
|
|
- bgp_resize: avoid overflow when calculating the new size if the
|
|
child process limit is something ridiculously large. Report and
|
|
fix from Natanael Copa <ncopa@alpinelinux.org>
|
|
|
|
execute_cmd.c
|
|
- execute_builtin_or_function: if we return via the return builtin, we
|
|
don't get a chance to free the saved fifo list, so add an unwind-
|
|
protect to make sure it happens. Part of fix for leak reported by
|
|
Oyvind Hvidsten <oyvind.hvidsten@dhampir.no>
|
|
- execute_command_internal: if we unwind via the return builtin (e.g.,
|
|
we execute a function which then returns via the return builtin to
|
|
a previous function), we don't free the saved fifo list, so add an
|
|
unwind-protect to make sure the free happens. Rest of fix for leak
|
|
reported by Oyvind Hvidsten <oyvind.hvidsten@dhampir.no>
|
|
|
|
subst.c
|
|
- add_fifo_list: for the FIFO case (no /dev/fd), make sure we
|
|
initialize the new members of the fifo list after xrealloc
|
|
|
|
12/9
|
|
----
|
|
subst.c
|
|
- dev_fd_list: now a list of type `pid_t' so we can store process
|
|
associated with the pipe fd into the right element; change all
|
|
necessary functions (copy_fifo_list, add_fifo_list)
|
|
- process_substitute: store pid of child process into the right
|
|
index in dev_fd_list after opening the pipe. Process ID of -1 means
|
|
process has been reaped and fd needs to be closed (or FIFO needs to
|
|
be unlinked); value of 0 means slot is unused
|
|
|
|
jobs.c
|
|
- wait_for_background_pids: call reap_procsubs to make sure we clean
|
|
up all reaped process substitutions before trying to wait for
|
|
everything (still needs work)
|
|
|
|
tests/{run-procsub,procsub.{tests,right}}
|
|
- new file, tests of process substitution that have failed in the past
|
|
|
|
12/10
|
|
-----
|
|
jobs.c
|
|
- wait_for_background_pids: warn if one of the jobs is stopped
|
|
|
|
subst.c
|
|
- wait_procsubs: new function, call wait_for for every "live" process
|
|
substitution
|
|
|
|
jobs.c
|
|
- wait_for_background_pids: call wait_procsubs to reap any living
|
|
process subsitutions
|