3952 lines
144 KiB
Text
3952 lines
144 KiB
Text
|
|
12/6/2020
|
|
---------
|
|
|
|
[bash-5.1 released]
|
|
|
|
12/7
|
|
----
|
|
Makefile.in
|
|
- bashline.o: add dependency on ${DEFDIR}/builtext.h. Report from
|
|
Fazal Majid <fazal@majid.org>
|
|
|
|
12/11
|
|
-----
|
|
builtins/wait.def
|
|
- wait_builtin: don't assign the variable given with -p if there are no
|
|
jobs to wait for. Report and fix from OÄuz <oguzismailuysal@gmail.com>
|
|
|
|
arrayfunc.c
|
|
- kvpair_assignment_p: return non-zero if argument L appears to be a
|
|
key-value pair associative array compound assignment
|
|
- expand_and_quote_kvpair_word: run a single word in a key-value pair
|
|
associative array compound assignment through the appropriate
|
|
expansions and single-quote the result
|
|
|
|
arrayfunc.h
|
|
- kvpair_assignment_p, expand_and_quote_kvpair_word: extern declarations
|
|
|
|
subst.c
|
|
- expand_oneword: detect whether VALUE appears to be a key-value
|
|
pair compound assignment and call the appropriate function to expand
|
|
each word in the resulting list. Fixes inconsistency reported by
|
|
oguzismailuysal@gmail.com
|
|
|
|
12/12
|
|
-----
|
|
subst.c
|
|
- command_substitute: don't reset pipeline_pgrp to shell_pgrp if we
|
|
are already forked to run a command (SUBSHELL_FORK). Fixes SIGINT
|
|
in command substitution in here-document in forked child issue
|
|
reported by oguzismailuysal@gmail.com
|
|
|
|
12/18
|
|
-----
|
|
execute_cmd.c
|
|
- execute_pipeline: execute the lastpipe code even if prev == 0. It
|
|
can only be 0 here if stdin was closed when this function was
|
|
executed
|
|
- execute_pipeline: if prev == 0, set lstdin to a sentinel (-1) that
|
|
means to close fd 0 after executing the command, and call close(prev)
|
|
before restoring stdin. restore_stdin now understands -1, and closes
|
|
fd 0. Fixes issue reported by Tomas Janousek <tomi@nomi.cz>
|
|
|
|
12/21
|
|
-----
|
|
doc/bashref.texi
|
|
- PROMPT_COMMANDS: clean up a couple of remaining instances of this
|
|
name. Report from Eli Schwartz <eschwartz@archlinux.org>
|
|
|
|
12/26
|
|
-----
|
|
subst.c
|
|
- command_substitute: make sure that the child process always has
|
|
pipeline_pgrp == shell_pgrp: if pipeline_pgrp is non-zero when we
|
|
get to the child, meaning that we're part of an already-forked
|
|
child that is, for instance, running redirections, we need to reset
|
|
shell_pgrp to it to preserve the invariant. Fixes bug with terminal
|
|
being set to the incorrect pgrp reported by oguzismailuysal@gmail.com
|
|
|
|
12/29
|
|
-----
|
|
configure.ac,builtins/shobj-conf,m4/threadlib.m4
|
|
- midnightbsd: update auto-configuration to treat MidnightBSD like
|
|
FreeBSD. From https://savannah.gnu.org/patch/?10006
|
|
|
|
12/30
|
|
-----
|
|
examples/loadables/stat.c
|
|
- stattime: use strftime with a default format or the format supplied
|
|
with the -F option to format the file time information
|
|
- stat_builtin: now takes a -F fmt option for a strftime format string;
|
|
change to function calling sequences to pass the format down to
|
|
stattime
|
|
|
|
examples/loadables/Makefile.in
|
|
- stat: now built and installed by default
|
|
|
|
12/31
|
|
-----
|
|
command.h
|
|
- SUBSHELL_IGNTRAP: new flag value
|
|
|
|
jobs.c
|
|
- make_child: set SUBSHELL_IGNTRAP in subshell_environment in the
|
|
child process, meaning that we should not execute trap handlers for
|
|
trapped signals
|
|
|
|
execute_cmd.c
|
|
- execute_in_subshell, execute_simple_command, execute_disk_command:
|
|
make sure to unset SUBSHELL_IGNTRAP after a child process restores
|
|
the original signal dispositions
|
|
- execute_simple_command: make sure to set SUBSHELL_IGNTRAP after
|
|
make_child returns and we're setting subshell_environment directly
|
|
|
|
subst.c
|
|
- command_substitute,process_substitute: unset SUBSHELL_IGNTRAP after
|
|
the child process has reset the trapped signal dispositions
|
|
|
|
trap.c
|
|
- trap_handler: if we get a signal for which we have set a trap, but
|
|
SUBSHELL_IGNTRAP is set in subshell_environmnent, make sure we
|
|
restore the original signal disposition and resend the signal to
|
|
ourselves. Fixes issue reported by Nikolay Borisov <nborisov@suse.com>
|
|
(or at least makes the race window much smaller)
|
|
|
|
sig.c
|
|
- initialize_terminating_signal: set the original signal handler from
|
|
the return value from sigaction; a minor optimization that saves a
|
|
system call or two
|
|
|
|
1/5/2021
|
|
--------
|
|
builtins/declare.def
|
|
- declare_internal: make some option combinations that don't make
|
|
sense errors (e.g., -f and -a/-A/-i/-n)
|
|
- declare_internal: if we build a new variable name by expanding the
|
|
value of a nameref variable, make sure to chop the `+' in a `+='
|
|
off before going on
|
|
|
|
1/7
|
|
---
|
|
doc/{bash.1,bashref.texi}
|
|
- bind: add an example to the synopsis making it clear that you can
|
|
use any readline command line as a non-option argument, as it says
|
|
in the text. From a report from Dan Jacobson <jidanni@jidanni.org>
|
|
|
|
1/12
|
|
----
|
|
locale.c
|
|
- local_shiftstates -> locale_shiftsates in the non-multibyte code
|
|
branch. Reported by Henry Bent <henry.r.bent@gmail.com>
|
|
|
|
subst.c
|
|
- expand_compound_assignment_word: make sure to call dispose_words on
|
|
the WORD_LIST * returned from expand_oneword after turning it back
|
|
into a string. Fixes memory leak reported by Alexander Mescheryakov
|
|
<alexander.s.m@gmail.com>
|
|
|
|
1/13
|
|
----
|
|
variables.c
|
|
- bind_variable_internal: when performing an assignment to a subscripted
|
|
array variable that was the value of a nameref (used in the original
|
|
assignment), don't call make_variable_value on the value, since that
|
|
messes up +=. Just call assign_array_element and let that take care
|
|
of calling make_variable_value appropriately. Fixes bug reported by
|
|
Oguz <oguzismailuysal@gmail.com>
|
|
|
|
1/14
|
|
----
|
|
findcmd.c
|
|
- search_for_command: if `checkhash' is set, don't add non-executable
|
|
files to the command hash table, since we will just remove them
|
|
later
|
|
|
|
lib/sh/winsize.c
|
|
- get_new_window_size: set *rp and *cp even if READLINE is not defined
|
|
|
|
1/15
|
|
----
|
|
lib/sh/winsize.c
|
|
- get_new_window_size: call rl_set_window_size only if we can determine
|
|
we're using readline: an interactive shell without no-line-editing,
|
|
or if we've already initialized readline, presumably in a non-
|
|
interactive shell
|
|
|
|
support/Makefile.in
|
|
- man2html: add LDFLAGS_FOR_BUILD to the recipe. Report from
|
|
Jeffrey Walton <noloader@gmail.com>
|
|
|
|
1/17
|
|
----
|
|
lib/readline/misc.c
|
|
- rl_operate_and_get_next: fix old K&R function declaration. Report
|
|
from Tom Tromey <tom@tromey.com>
|
|
|
|
lib/readline/readline.c
|
|
- _rl_internal_char_cleanup: move code that cleans up the active region
|
|
and deactivates the mark inside this function so callback mode
|
|
applications get the intended functionality. Report and fix from
|
|
sparrowhawk996@gmail.com
|
|
|
|
lib/readline/bind.c
|
|
- rl_parse_and_bind: when using the arithmetic comparison operators on
|
|
the version, make sure to invert the tests so that we stop parsing
|
|
if the test fails. Report and fix from Tom Tromey <tom@tromey.com>
|
|
|
|
1/19
|
|
----
|
|
Makefile.in
|
|
- pipesize.h: add dependency on ${BUILTINS_LIBRARY} to avoid parallel
|
|
makes trying to create it twice. Report and fix from
|
|
Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
|
|
1/21
|
|
----
|
|
subst.c
|
|
- param_expand: if a nameref expands to array[@] or array[*], make sure
|
|
to call chk_atstar so the right variables are set to split the
|
|
result. Report from Oguz <oguzismailuysal@gmail.com>
|
|
|
|
1/22
|
|
----
|
|
builtins/declare.def
|
|
- Rewrote to reduce complexity. Still needs some work.
|
|
|
|
lib/readline/*.h, lib/tilde/tilde.h
|
|
- PARAMS: remove, rely on compilers understanding function prototypes
|
|
|
|
lib/readline/{undo.c,histlib.h}
|
|
- _hs_replace_history_data: move extern declaration to histlib.h
|
|
|
|
lib/readline/readline.c
|
|
- _rl_parse_colors: instead of an extern declaration for this, include
|
|
"parse-colors.h" for it
|
|
|
|
lib/readline/{histfile.c,histlib.h}
|
|
- _hs_append_history_line: move extern declaration to histlib.h
|
|
|
|
lib/readline/history.h
|
|
- HS_HISTORY_VERSION: define to 0x0801 (current library version) if
|
|
it's not already defined. We conditionally define it in case an
|
|
application has (unwisely) chosen to use it, since the history
|
|
library doesn't do anything with it yet
|
|
|
|
lib/readine/{rlprivate.h,{search,misc,readline}.c}
|
|
- _rl_free_history_entry: add extern declaration to rlprivate.h, remove
|
|
extern declaration from c source files. Use HS_HISTORY_VERSION as a
|
|
sentinel that it's ok to use HIST_ENTRY in rlprivate.h
|
|
|
|
lib/readline/{rlprivate.h,{isearch,search,undo}.c}
|
|
- _rl_saved_line_for_history: add extern declaration to rlprivate.h,
|
|
remove extern declaration from c source files, using HS_HISTORY_VERSION
|
|
in the same way
|
|
|
|
1/24
|
|
----
|
|
lib/readline/signals.c
|
|
- _rl_handle_signal: make sure that all sigprocmask calls are protected
|
|
by HAVE_POSIX_SIGNALS. Report and fix from Tom Tromey <tom@tromey.com>
|
|
|
|
1/26
|
|
----
|
|
lib/readline/callback.c
|
|
- rl_callback_read_char: make sure rl_linefunc is non-NULL before
|
|
calling through the pointer. The line function could have been
|
|
removed by the application before readline processes any typeahead
|
|
input. Bug reported by Matthias Klose <doko@debian.org>, pointer
|
|
to root cause from Koichi Murase <myoga.murase@gmail.com>
|
|
|
|
lib/glob/glob.c
|
|
- skipname,wskipname: put in some additional checks for `.' to ensure
|
|
that we don't get false positives (or incomplete tests) that can
|
|
affect the results of extglob patterns. Reported by
|
|
gregrwm <rhn-users@greatlakedata.com>
|
|
|
|
1/27
|
|
----
|
|
lib/glob/glob.c
|
|
- extglob_skipname,wextglob_skipname: fixed an off-by-one error (SE
|
|
was being set to one character before the end of the pattern string,
|
|
not the null character at the end of the pattern string like other
|
|
callers of glob_patscan) that caused the last character of the last
|
|
subpattern to be cut off when calling skipname
|
|
- extglob_skipname,wextglob_skipname: some cleanups so the code is
|
|
closer to identical for the single-byte and wide character versions
|
|
|
|
2/1
|
|
---
|
|
execute_cmd.c
|
|
- execute_simple_command: in posix mode, if we have a variable
|
|
assignment error while assigning into the temporary environment (e.g.,
|
|
assigning to a readonly variable), a non-interactive shell running a
|
|
special builtin exits; a non-interactive shell running anything else
|
|
jumps back to the top level. A shell compiled with -DSTRICT_POSIX
|
|
exits unconditionally.
|
|
- execute_simple_command: make sure posix mode sets $? to non-zero
|
|
if a variable assignment error occurs preceding a non-special builtin
|
|
|
|
subst.c
|
|
- do_assignment_statements: take the code from expand_word_list_internal
|
|
that performs assignment statements, either standalone or preceding
|
|
simple command names, and factor it out into this function
|
|
- expand_word_list_internal: call do_assignment_statements where
|
|
appropriate
|
|
|
|
2/2
|
|
---
|
|
lib/glob/glob.c
|
|
- dequote_pathname: fix function definition for non-multibyte systems.
|
|
Report and fix from Marc Aurèle La France <tsi@tuyoix.net>
|
|
|
|
Makefile.in,doc/Makefile.in
|
|
- for certain targets, remove files before creating them to deal with
|
|
symlinked build trees.
|
|
Report and fix from Marc Aurèle La France <tsi@tuyoix.net>
|
|
|
|
examples/loadables/accept.c
|
|
- include limits.h before typemax.h
|
|
Report and fix from Marc Aurèle La France <tsi@tuyoix.net>
|
|
|
|
builtins/gen-helpfiles.c
|
|
- if USING_BASH_MALLOC is defined, make sure to undefine malloc as well
|
|
as free. Fixes bug reported by George R Goffe <grgoffe@yahoo.com>
|
|
|
|
builtins/Makefile.in
|
|
- install-help: now depends on $(HELPFILES_TARGET) so we make sure the
|
|
separate helpfiles are created before we try to install them if we
|
|
don't go through the `all' makefile target
|
|
|
|
configure.ac
|
|
- HELPDIR: now ${datadir}/bash/helpfiles
|
|
|
|
2/3
|
|
---
|
|
parse.y
|
|
- parse_string_to_word_list: before expanding a compound assignment
|
|
statement body, make sure to save any alias that's currently being
|
|
expanded. Restore the alias after the compound assignment is parsed.
|
|
Reported back in 11/2020 by Alex fxmbsw7 Ratchev <fxmbsw7@gmail.com>
|
|
|
|
2/4
|
|
---
|
|
lib/readline/histexpand.c
|
|
- history_expand_internal: when calling the history_inhibit_expansion
|
|
function, make sure to call it using the string as we've expanded it
|
|
to that point (RESULT), adding the expansion and next characters
|
|
temporarily, since we make expansion decisions based on what we've
|
|
accumulated, not what we started with. This makes things like
|
|
echo abc!$!$ work, where before the second `!' inhibited expansion
|
|
because bash_history_inhibit_expansion mistakenly took it as the
|
|
second character in a `$!' word expansion. Fixes bug reported back
|
|
in 10/2020 by Paul Fox <paul.d.fox@gmail.com>
|
|
|
|
array.h
|
|
- array_pop: instead of calling array_dispose_element from this macro,
|
|
just call array_shift with the AS_DISPOSE flag
|
|
|
|
2/5
|
|
---
|
|
bashhist.c
|
|
- shell_comment: move condition to return 0 if the delimiter stack is
|
|
not empty or the shell is parsing a here document into the function
|
|
itself, don't have the callers check so the check is in one place.
|
|
Fixes bug reported by Oguz <oguzismailuysal@gmail.com>
|
|
|
|
array.h,variables.c
|
|
- ARRAY_ELEMENT_REPLACE: convenience define for modifying an array
|
|
element's value
|
|
|
|
variables.c
|
|
- pop_args: a couple of code simplifications
|
|
|
|
2/7
|
|
---
|
|
lib/malloc/malloc.c
|
|
- pagesz: at least MALLOC_PAGESIZE_MIN (4096) bytes
|
|
- union mhead: now 16-byte aligned on all systems, 32-bit and 64-bit
|
|
pointers
|
|
- binsizes: since the smallest allocation overhead is now 16 bytes,
|
|
redo the buckets so binsizes[0] == 32; adjust the thresholds for
|
|
split/coalesce/prepopulate/mmap (NBUCKETS = 28; STARTBUCK = 0).
|
|
Sizes stay pretty much the same; indices change
|
|
- consistently use MALLOC_SIZE_T instead of long/unsigned int/int
|
|
- use MAGIC8_NUMBYTES as the length of the mh_magic8 buffer, in case
|
|
it changes later for alignment
|
|
- internal_remap: new function, calls mremap to reallocate a chunk of
|
|
memory allocated using mmap(); called from internal_realloc if the
|
|
old size and new size are both bigger than the mmap threshold
|
|
- internal_realloc: call internal_remap if the old size and new size
|
|
are both above the threshold where we use mmap for allocation
|
|
|
|
2/10
|
|
----
|
|
include/timer.h
|
|
- new file, declaration for a timer struct to be used by a set of
|
|
functions to implement timers using SIGALRM or select/pselect
|
|
|
|
lib/sh/timers.c
|
|
- new file, set of functions to manipulate timer objects and timeouts
|
|
using SIGALRM or select/pselect. Inspired by a patch from
|
|
Koichi Murase <myoga.murase@gmail.com>. Not used yet
|
|
|
|
2/11
|
|
----
|
|
builtins/read.def
|
|
- read_builtin: if there is a timeout set, block SIGCHLD around calls
|
|
to zread and its siblings, or calls to readline for `read -e', so
|
|
SIGCHLD (and the consequent waitpid) doesn't interrupt the read.
|
|
Fixes bug reported by Koichi Murase <myoga.murase@gmail.com>, but
|
|
there may be a different fix coming
|
|
|
|
Makefile.in,builtins/Makefile.in
|
|
- fix up dependencies, especially on builtins.h and builtext.h
|
|
|
|
|
|
2/12
|
|
----
|
|
lib/readline/input.c
|
|
- rl_read_key: if we set rl_done == 1, set RL_STATE_DONE as well
|
|
Reported by Koichi Murase <myoga.murase@gmail.com>
|
|
|
|
lib/readline/isearch.c
|
|
- _rl_search_getchar: only call _rl_read_mbstring if rl_read_key returns
|
|
>= 0, avoid some work
|
|
|
|
lib/readline/vi_mode.c
|
|
- _rl_vi_callback_change_char,_rl_vi_change_char: don't overwrite the
|
|
last replacement string if _rl_vi_callback_getchar returns -1.
|
|
It will likely make no difference, since the next read will return
|
|
an error or EOF, but being careful
|
|
- rl_vi_overstrike: if _rl_overwrite_char doesn't return 0, break out
|
|
of the loop
|
|
|
|
lib/readline/text.c
|
|
- _rl_overwrite_char: return 1 if _rl_read_mbstring returns < 0 so
|
|
we don't try to insert garbage
|
|
|
|
bashline.c
|
|
- posix_edit_macros: handle rl_read_key() returning <= 0
|
|
|
|
2/15
|
|
----
|
|
parse.y
|
|
- read_comsub: make sure to turn on the LEX_RESWDOK flag if we are in
|
|
a case statement and read a `)', since we can get a valid `esac'.
|
|
Fixes bug reported by Oguz <oguzismailuysal@gmail.com>
|
|
- read_comsub: if we're in a case statement, recognize `}' as a
|
|
reserved word and set the LEX_RESWDOK flag for the next word, since
|
|
we can get an esac (or another reserved word) after it
|
|
|
|
2/16
|
|
----
|
|
parse.y
|
|
- reserved_word_acceptable: add ARITH_CMD and COND_END to the list of
|
|
tokens that can precede a reserved word, so you can use reserved
|
|
words after ((...)) and [[...]].
|
|
Reported by Koichi Murase <myoga.murase@gmail.com>
|
|
|
|
2/17
|
|
----
|
|
parse.y
|
|
- parse_comsub: use new LEX_CASEWD flag to track when we are reading
|
|
the WORD in `case WORD in' and turn on the LEX_RESWDOK flag when
|
|
that word ends. This allows $(case x in esac), which no one uses.
|
|
- parse_comsub: use LEX_PATLIST flag to track when we are reading a
|
|
case pattern list so `|' doesn't turn on the LES_RESWDOK flag
|
|
- parse_comsub: case_level: simple counter to count the number of esacs
|
|
we need to see before we're no longer in a case statement; analog of
|
|
esacs_needed_count from the lexer
|
|
|
|
2/19
|
|
----
|
|
parse.y
|
|
- CHECK_FOR_RESERVED_WORD: don't return ESAC if we read `esac' after a
|
|
left paren in a case pattern list. From an austingroup-bugs discussion
|
|
about https://www.austingroupbugs.net/view.php?id=1454
|
|
- parse_comsub: if we read a `(' while looking for a case pattern list
|
|
and LEX_CKESAC is set, we have a leading left paren in the pattern
|
|
list and should turn off LEX_CKESAC so (esac) doesn't prematurely
|
|
terminate the case command. From an austingroup-bugs discussion
|
|
about https://www.austingroupbugs.net/view.php?id=1454
|
|
|
|
2/26
|
|
----
|
|
builtins/history.def
|
|
- history_builtin: when checking negative offsets to -d, which are
|
|
supposed to count back from the end of the history list, check the
|
|
range against 0 instead of history_base, because the calculation is
|
|
done against history_length, which is independent of history_base.
|
|
Report and fix from Christopher Gurnee <chris@gurneeconsulting.net>
|
|
|
|
2/28
|
|
----
|
|
doc/bashref.texi
|
|
- replaced a number of uses of @var with a mixture of @env and @dfn
|
|
to better match up with the texinfo standards
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- clarify some aspects of the coproc description, especially the
|
|
use of NAME and when it's optional
|
|
|
|
3/1
|
|
---
|
|
subst.c
|
|
- read_comsub: fix off-by-one error in mbrtowc that causes a read one
|
|
character past the end of buf. Report and fix from
|
|
Platon Pronko <platon7pronko@gmail.com> in
|
|
https://savannah.gnu.org/patch/?10035
|
|
|
|
3/3
|
|
---
|
|
builtins/ulimit.def
|
|
- ulimit_builtin: Posix compatibility: if the last command specified
|
|
by an option does not have an option argument, but there is an
|
|
operand remaining after all the options are parsed, treat the
|
|
operand as an argument to that last command. From an austin-group
|
|
discussion and a Geoff Clare suggestion back in November, 2020.
|
|
Austin Group interpretation 1418
|
|
|
|
examples/shellmath
|
|
- a package of shell functions to perform floating-point math entirely
|
|
in bash. Contributed by Michael Wood <mawood20@gmail.com>. Available
|
|
at https://github.com/clarity20/shellmath
|
|
|
|
3/4
|
|
---
|
|
support/shobj-conf
|
|
- darwin: take out the -arch-only option in SHOBJ_XLDFLAGS and
|
|
SHOBJ_ARCHFLAGS; no longer needed
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- coprocesses: suggested changes from rms@gnu.org; recommend the
|
|
`coproc NAME { commands; }' form as the simplest and most flexible
|
|
|
|
3/5
|
|
---
|
|
builtins/exec.def
|
|
- exec_builtin: set last_command_exit_value before calling exit_shell
|
|
so any exit trap gets the right value for $?. From Matthew Bauer
|
|
<mjbauer95@gmail.com> via https://savannah.gnu.org/patch/?10039
|
|
|
|
3/8
|
|
---
|
|
include/timer.h
|
|
- SHTIMER_ALRMSET: new flag, indicates that there is an active alarm
|
|
associated with this timer (falarm() was called)
|
|
|
|
lib/sh/timers.c
|
|
- shtimer_set: set the SHTIMER_ALRMSET flag after calling falarm
|
|
- shtimer_unset: don't call falarm(0,0) unless the SHTIMER_ALRMSET flag
|
|
is set
|
|
|
|
3/9
|
|
---
|
|
include/posixtime.h
|
|
- added some BSD convenience defines if they are not present
|
|
|
|
parse.y,shell.h
|
|
- {save,restore}_parser_state: save and restore shell_eof_token and
|
|
pushed_string_list; change callers (e.g., xparse_dolparen) so they
|
|
don't have to manage them
|
|
|
|
3/10
|
|
----
|
|
builtins/common.h
|
|
- extern declarations for moving to timers (sh_timer) for read builtin
|
|
timeouts
|
|
|
|
quit.h
|
|
- CHECK_ALRM: remove, no longer used
|
|
|
|
trap.c
|
|
- check_signals: call check_read_timeout instead of CHECK_ALRM
|
|
|
|
bashline.c
|
|
- bash_event_hook: use read_timeout instead of checking `sigalrm_seen';
|
|
that no longer exists
|
|
- bash_event_hook: accommodate readline timing out (not used yet)
|
|
|
|
lib/sh/zread.c
|
|
- zread: call read_builtin_timeout() to check for a timeout before
|
|
calling a blocking read()
|
|
|
|
builtins/read.def
|
|
- sigalrm,reset_timeout,check_read_timeout,read_builtin_timeout: new
|
|
and modified functions to use sh_timers for timeouts instead of
|
|
SIGALRM. Based on work contributed by Koichi Murase
|
|
<myoga.murase@gmail.com>
|
|
- read_builtin: use sh_timers for read timeouts (-t N) instead of
|
|
using SIGALRM
|
|
- edit_line: simulate receiving SIGALRM if readline times out (not
|
|
used yet)
|
|
|
|
3/11
|
|
----
|
|
lib/readline/readline.c
|
|
- rl_initialize: call _rl_timeout_init to set things up for any timeout
|
|
that was set with rl_set_timeout
|
|
- readline_internal_charloop: if we longjmped because of a timeout,
|
|
make sure to set rl_done/RL_STATE_DONE and return; we are
|
|
abandoning this call to readline(). The readline timeout changes
|
|
were based on work contributed by Koichi Murase
|
|
<myoga.murase@gmail.com>
|
|
|
|
lib/readline/readline.h
|
|
- extern declarations for new timeout functions and hook
|
|
- rl_clear_timeout: new define
|
|
|
|
lib/readline/callback.c
|
|
- rl_callback_read_char: if we longjmped because of a timeout,
|
|
make sure to set rl_done/RL_STATE_DONE and return; we are
|
|
abandoning this call to readline()
|
|
|
|
lib/readline/util.c
|
|
- _rl_abort_internal: if we time out, don't ring the bell; let the
|
|
caller handle it
|
|
|
|
lib/readline/input.c
|
|
- extern declarations for public and readline-library-private functions
|
|
and hooks to implement timeouts
|
|
- rl_set_timeout,rl_timeout_remaining: new public functions
|
|
- _rl_timeout_select: new function, uses select/pselect to implement
|
|
read timeouts that take timeouts set with rl_set_timeout into account;
|
|
calling hook function if a timeout occurs
|
|
- rl_gather_tyi, _rl_input_available: use _rl_timeout_select, taking
|
|
any existing timeout into consideration if it expires before the
|
|
timeout passed as an argument
|
|
- rl_getc: use _rl_timeout_select and handle any timeouts by calling
|
|
_rl_timehout_handle
|
|
- set_alarm,reset_alarm: new functions to implement timeouts using
|
|
SIGALRM for systems that lack a working select/pselect
|
|
- _rl_timeout_init: new function, sets things up for reading input
|
|
with a specified timeout
|
|
- _rl_timeout_handle: a timeout handler; calls any event hook and
|
|
sets up to abort the current readline() call
|
|
- _rl_timeout_handle_sigalrm: a timeout handler for systems using
|
|
SIGALRM to implement timeouts
|
|
|
|
lib/readline/parens.c
|
|
- rl_insert_close: use _rl_timeout_select to take timeouts into account
|
|
|
|
lib/readline/rlprivate.h
|
|
- extern declarations for readline-library-private timeout functions
|
|
|
|
lib/readline/rltty.c
|
|
- rl_deprep_terminal: don't print a newline after the bracketed paste
|
|
disable sequence if we timed out
|
|
|
|
lib/readline/signals.c
|
|
- _rl_handle_signal: if sig is SIGALRM, call _rl_timeout_handle_sigalrm()
|
|
|
|
lib/readline/doc/rltech.texi
|
|
- rl_set_timeout,rl_timeout_remaining: document new public functions
|
|
- RL_STATE_TIMEOUT: document new possible state value for rl_readline_state
|
|
- rl_timeout_event_hook: document new hook function, called when
|
|
readline times out
|
|
|
|
builtins/read.def
|
|
- read_builtin: changes to use the readline timeout functions to
|
|
implement timeouts with `read -e'; these use rl_set_timeout and
|
|
sh_timer structs together
|
|
|
|
3/12
|
|
----
|
|
subst.c
|
|
- expand_string_dollar_quote: new function, expands $'...' and $"..."
|
|
in a string for those code paths that don't expand it themselves
|
|
|
|
subst.h
|
|
- expand_string_dollar_quote: extern declaration
|
|
|
|
parse.y
|
|
- read_secondary_line: if $'...' or $"..." appears in the line, call
|
|
expand_string_dollar_quote to expand them. This now returns new
|
|
memory, need to change callers
|
|
|
|
make_cmd.c
|
|
- make_here_document: account for read_secondary_line returning newly
|
|
allocated memory, free `full_line' appropriately
|
|
|
|
bashline.c
|
|
- shell_expand_line,history_and_alias_expand_line: expand $'...' and
|
|
$"..." in the line by calling expand_string_dollar_quote, since
|
|
that happens after history expansion and before alias expansion in
|
|
normal processing
|
|
|
|
3/15
|
|
----
|
|
subst.c
|
|
- expand_string_dollar_quote: fix out-of-order initialization
|
|
|
|
Makefile.in
|
|
- {TAGS,tags}: add ETAGS/ETAGSFLAGS/CTAGS/CTAGS flags; make sure to
|
|
cd to the source directory before running them to get source files
|
|
that don't have absolute paths. Fix from Mike Jonkmans
|
|
<bashbug@jonkmans.nl>
|
|
|
|
parse.y
|
|
- xparse_dolparen: don't longjmp if FLAGS includes SX_NOLONGJMP. From
|
|
a report by Xu Lu <oliver_lew@outlook.com>
|
|
|
|
3/16
|
|
----
|
|
subst.c
|
|
- process_substitute: set startup_state and parse_and_execute_level
|
|
to see if we can avoid a fork()
|
|
|
|
bashline.c
|
|
- bash_spell_correct_word: bindable command (spell-correct-word) to
|
|
perform spelling correction on the current `shellword', using the
|
|
same code as the `cdspell' option and directory spelling correction
|
|
during completion. Feature suggested by in 10/2020 by
|
|
Karl Kleinpaste <karl@kleinpaste.org>
|
|
- bash_spell_correct_word: bound to "C-x s" by default in emacs mode
|
|
|
|
lib/readline/display.c
|
|
- rl_redisplay: fix redisplay problem that occurs when switching from
|
|
the rl-digit-argument prompt "(arg: N)" back to the regular prompt,
|
|
and the regular prompt contains invisible characters
|
|
|
|
doc/bash.1,lib/readline/doc/rluser.texi
|
|
- spell-correct-word: document new function and its default binding
|
|
|
|
3/17
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- cd: slight changes to specify that it sets PWD and OLDPWD
|
|
- {pushd,popd}: make it clear that these builtins use cd to change
|
|
the current working directory; change wording to simplify the
|
|
description and clarify the exit status
|
|
|
|
3/18
|
|
----
|
|
execute_cmd.c
|
|
- execute_disk_command: after performing redirections, call
|
|
unlink_all_fifos() to remove the FIFOs created as part of
|
|
expanding redirections. They should have been opened by then, and
|
|
we're going to call shell_execve right away anyway, so we won't be
|
|
around to remove the FIFOs. From a report from
|
|
Michael Felt <aixtools@gmail.com>
|
|
|
|
3/22
|
|
----
|
|
parse.y
|
|
- alias_expand_token: slight tweak to check for alias expansion: perform
|
|
expansion unconditionally if PST_ALEXPNEXT is set, and disable it
|
|
in case statement pattern lists if the previous token indicates a
|
|
command name is acceptable.
|
|
From a report by Oguz <oguzismailuysal@gmail.com>
|
|
|
|
config-bot.h
|
|
- HAVE_MKDTEMP: fix typo
|
|
|
|
3/25
|
|
----
|
|
lib/readline/terminal.c
|
|
- look in terminfo for key sequences for page up (kP) and page down
|
|
(kN) and bind them to history-search-{backward,forward},
|
|
respectively. From a patch from Xose Vazquez Perez
|
|
<xose.vazquez@gmail.com>
|
|
|
|
3/30
|
|
----
|
|
doc/bashref.texi
|
|
- expand the node describing $"..." string translation with additional
|
|
details and examples
|
|
|
|
3/31
|
|
----
|
|
misc.c
|
|
- rl_fetch_history: moved here from vi_mode.c
|
|
- rl_fetch_history: negative arguments count back from the end of
|
|
the history, instead of taking you to the beginning of the history
|
|
list
|
|
- rl_fetch_history: in vi mode, an out-of-range argument rings the
|
|
bell and doesn't change the line
|
|
|
|
vi_mode.c
|
|
- rl_vi_fetch_history: call rl_fetch_history
|
|
|
|
readline.h
|
|
- rl_fetch_history: new extern declaration
|
|
|
|
doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
|
|
- rl_fetch_history: add description
|
|
|
|
builtins/setattr.def
|
|
- show_var_attributes: if a variable's value indicates that it should
|
|
be ANSI-C quoted, use ansic_quote instead of sh_double_quote to
|
|
format the value string. From proposal by Greg Wooledge
|
|
<greg@wooledge.org>
|
|
|
|
4/5
|
|
---
|
|
arrayfunc.c
|
|
- unbind_array_element: if FLAGS includes VA_ONEWORD, don't use
|
|
skipsubscript to parse the subscript, just assume the entire SUB is
|
|
the subcript and that it contains the closing `]', so we just want
|
|
everything in SUB except the last character.
|
|
|
|
parse.y:
|
|
- select_command: use compound_list instead of list, like for_command.
|
|
Report by Greywolf <greywolf@starwolf.com>
|
|
- list: move this into compound_list (replacing the instance of `list'
|
|
in the compound_list production), remove from the grammar
|
|
|
|
4/6
|
|
---
|
|
arrayfunc.c
|
|
- unbind_array_element: use VA_NOEXPAND instead of literal 1
|
|
|
|
4/7
|
|
---
|
|
lib/readline/funmap.c
|
|
- default_funmap: add missing `vi-undo' to the list of vi-mode bindable
|
|
functions. Reported by Xirui Zhao <quinean@icloud.com>
|
|
|
|
4/8
|
|
---
|
|
|
|
config-top.h
|
|
- DEFAULT_LOADABLE_BUILTINS_PATH: default value for BASH_LOADABLES_PATH
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- enable: note that it uses $BASH_LOADABLES_PATH, and that the default
|
|
is system-dependent
|
|
|
|
variables.c
|
|
- initialize_shell_variables: initialize BASH_LOADABLES_PATH to the
|
|
default given in DEFAULT_LOADABLE_BUILTINS_PATH
|
|
|
|
4/12
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- add link to git master tar file as a place to get the current version
|
|
|
|
4/14
|
|
----
|
|
bashline.c
|
|
- attempt_shell_completion: use -1 as a sentinel value for
|
|
in_command_position indicating that we cannot be in a command position
|
|
(e.g., because we're the target of a redirection) and should not
|
|
check for a programmable command completion or tell the programmable
|
|
completion code to use command completion. Report and fix from
|
|
Marc Aurèle La France <tsi@tuyoix.net>
|
|
|
|
4/16
|
|
----
|
|
builtins/bind.def
|
|
- bind_builtin: reverse sense of strvec_search return value when
|
|
deciding whether or not to remove a unix-command binding from the
|
|
cmd keymap. Bug report by Dale Sedivec <dale@codefu.org>
|
|
|
|
lib/readline/doc/rltech.texi
|
|
- RL_PROMPT_{START,END}_IGNORE: document current values of \001 and
|
|
\002. Report from Mingye Wang <arthur200126@gmail.com>
|
|
|
|
4/19
|
|
----
|
|
arrayfunc.c
|
|
- assign_assoc_from_kvlist: fix memory leak reported by konsolebox
|
|
<konsolebox@gmail.com>
|
|
|
|
4/20
|
|
----
|
|
command.h,subst.c
|
|
- W_ITILDE: remove, replace with a variable since it's only used inside
|
|
a single call to expand_word_internal
|
|
|
|
4/21
|
|
----
|
|
{subst.c,make_cmd.c,parse.y}
|
|
- W_DQUOTE: no longer used, use W_NOPROCSUB and W_NOTILDE directly
|
|
(for arithmetic commands and words in arithmetic for commands)
|
|
|
|
4/24
|
|
----
|
|
bashline.c
|
|
- executable_completion: since this function gets an unquoted filename
|
|
from rl_filename_completion_function, we need to quote special
|
|
characters before passing it to bash_directory_completion_hook.
|
|
Report from Alex fxmbsw7 Ratchev <fxmbsw7@gmail.com>
|
|
|
|
4/26
|
|
----
|
|
lib/readline/search.c
|
|
- _rl_nsearch_abort: move function calls around so _rl_restore_prompt
|
|
happens before rl_clear_message, like when aborting an incremental
|
|
search. Suggested by sparrowhawk996@gmail.com
|
|
|
|
subst.h
|
|
- ASS_ALLOWALLSUB: new assignment flag value, means to allow @ and * as
|
|
valid array subscripts when assigning to existing associative arrays
|
|
|
|
arrayfunc.c
|
|
- assign_array_element: allow assignment of key `@' to an existing
|
|
associative array if the caller passes ASS_ALLOWALLSUB
|
|
- assign_compound_array_list: allow ( [@]=value ) to an existing
|
|
associative array
|
|
|
|
builtins/declare.def
|
|
- declare_internal: allow assignment of key `@' to an existing
|
|
associative array by passing ASS_ALLOWALLSUB to assign_array_element
|
|
as part of local_aflags. This affects declare, local, and typeset
|
|
|
|
subst.c
|
|
- do_assignment_internal: allow a[@]=value to an existing associative
|
|
array by passing ASS_ALLOWALLSUB to assign_array_element
|
|
|
|
4/27
|
|
----
|
|
builtins/common.[ch]
|
|
- builtin_bind_var_to_int: wrapper for bind_var_to_int to be used by
|
|
builtin commands; placeholder for future work
|
|
|
|
builtins/wait.def
|
|
- builtin_bind_var_to_int: use instead of bind_var_to_int
|
|
|
|
builtins/common.c
|
|
- builtin_bind_variable: allow assignment of key `@' to an existing
|
|
associative array by passing ASS_ALLOWALLSUB to assign_array_element.
|
|
This affects printf and read
|
|
|
|
builtins/variables.[ch]
|
|
- bind_var_to_int: add third `flags' argument to pass to bind_variable
|
|
instead of always passing 0
|
|
|
|
redir.c,builtins/common.c,builtins/printf.def
|
|
- bind_var_to_int: change callers, add third flags argument
|
|
|
|
builtins/common.c
|
|
- builtin_bind_var_to_int: pass ASS_ALLOWALLSUB to bind_var_to_int so
|
|
builtins like wait can assign to assoc[@] and assoc[*]
|
|
|
|
4/28
|
|
----
|
|
bashline.c
|
|
- command_word_completion_function: make sure to initialize
|
|
old_glob_ignore_case before trying to restore from it
|
|
- command_word_completion_function: if we are completing a glob
|
|
pattern, make sure to set rl_filename_completion_desired, so we get
|
|
quoting and appending -- we are completing a filename, after all.
|
|
From a report from Manuel Boni <ziosombrero@gmail.com>
|
|
|
|
lib/readline/bind.c
|
|
- enable-active-region: separate control of the active region and
|
|
bracketed paste. Still set to the same default value as bracketed
|
|
paste, and enabling bracketed paste enables the active region.
|
|
Now you can enable bracketed paste and then turn off the active
|
|
region.
|
|
|
|
doc/bash.1,lib/readline/doc/{readline.3,rltech.texi}
|
|
- enable-active-region: document new bindable readline variable and
|
|
its effects
|
|
|
|
4/30
|
|
----
|
|
command.h
|
|
- W_ARRAYREF: new flag, meaning the word is a valid array reference
|
|
with subscript, replaces W_DOLLARSTAR, which was unused
|
|
|
|
subst.c
|
|
- expand_subscript_string,expand_array_subscript: new functions to
|
|
parse and expand-and-quote array subscripts. For future use
|
|
|
|
5/3
|
|
---
|
|
builtins/mapfile.def
|
|
- mapfile: if the delimiter is a newline, set unbuffered_read = 1
|
|
for any file descriptor that isn't seekable and lseek sets errno
|
|
to ESPIPE (pipes, FIFOs, maybe terminal devices). If it's not a
|
|
newline, only allow buffered reads if the file descriptor is a
|
|
regular file. Report from Koichi Murase <myoga.murase@gmail.com>
|
|
|
|
builtins/read.def
|
|
- read_builtin: only set unbuffered_read = 1 if the input is coming
|
|
from a pipe (which we can't seek on) or the input is a terminal and
|
|
we want to read a specified number of characters or we're using a
|
|
non-standard delimiter
|
|
|
|
5/4
|
|
---
|
|
|
|
builtins/mapfile.def
|
|
- mapfile: call zsyncfd before calling the callback. Suggested by
|
|
Koichi Murase <myoga.murase@gmail.com>; we'll see how it goes
|
|
|
|
5/5
|
|
---
|
|
subst.h
|
|
- expand_subscript_string: extern declaration
|
|
|
|
{arrayfunc,subst}.c
|
|
- expand_subscript_string: replace expand_assignment_string_to_string
|
|
with calls to this when expanding array subscripts
|
|
|
|
subst.c
|
|
- cond_expand_word: call expand_word_internal with Q_ARITH if `special'
|
|
says we should quote for an arithmetic expression context
|
|
- expand_word_internal: call expand_array_subscript when we see `[' in
|
|
arithmetic or array subscript contexts, make conditional on the
|
|
compatibility level later
|
|
- expand_word_internal: make sure W_ARRAYREF makes it through this
|
|
function and into the returned word
|
|
|
|
5/6
|
|
---
|
|
|
|
arrayfunc.c
|
|
- array_expand_index: call evalexp with a flag of 0 since we call
|
|
expand_arith_string with Q_ARITH and we want evalexp to remove
|
|
the quotes
|
|
|
|
execute_cmd.c
|
|
- eval_arith_for_expr,execute_arith_command: now that Q_ARITH has an
|
|
effect on array subscripts (it quotes the special expansion
|
|
characters), call evalexp with 0 as the flags arg so quote removal
|
|
is performed on this quoted argument. Make this conditional on the
|
|
shell compatibility level later
|
|
- execute_cond_command: make sure to expand the argument to -v by
|
|
calling cond_expand_node with Q_ARITH, and correspondingly turn off
|
|
assoc_expand_once when calling unary_test with that argument, since
|
|
we want it to be expanded again to remove the quotes
|
|
- execute_cond_command: expand the arguments to the arithmetic operators
|
|
with Q_ARITH and pass TEST_ARITHEXP to binary_test to ensure that
|
|
it lets evalexp expand the arguments to remove the quoting
|
|
|
|
test.c
|
|
- arithcomp: if TEST_ARITHEXP is in FLAGS, call evalexp with a flag
|
|
if 0 to force evalexp to expand the arguments to remove the quoting
|
|
|
|
subst.c
|
|
- param_expand: since we call expand_arith_string with Q_ARITH, we need
|
|
to call evalexp with 0 instead of EXP_EXPANDED for $((...)) expansion
|
|
- expand_word_internal: if we recursively call expand_word_internal to
|
|
expand the contents of a double-quoted string, make sure we pass
|
|
through Q_ARITH if it appears in QUOTED
|
|
- verify_substring_values: call expand_arith_string with Q_ARITH and
|
|
correspondingly call evalexp with 0 instead of EXP_EXPANDED
|
|
|
|
execute_cmd.c
|
|
- execute_cond_node: if -v is the operator, and the operand is a valid
|
|
array reference, pass TEST_ARRAYEXP flag to unary_test
|
|
|
|
5/7
|
|
---
|
|
builtins/common.[ch]
|
|
- set_expand_once: set array_expand_once to the value passed as the
|
|
first argument, returning the original value
|
|
|
|
builtins.h
|
|
- ARRAYREF_BUILTIN: new flag for shell builtins, means that the builtin
|
|
can take array references, with subscripts, as arguments
|
|
|
|
builtins/mkbuiltins.c
|
|
- set ARRAYREF_BUILTIN flag on builtins given in the arrayvar_builtins
|
|
array
|
|
|
|
execute_cmd.c
|
|
- execute_cond_node: use set_expand_once to set array_expand_once to 0
|
|
before calling unary_test with -v (see change from 5/6)
|
|
|
|
arrayfunc.c
|
|
- unbind_array_element: allow the caller to choose whether or not a
|
|
subscript of `*' or `@' unsets the entire array by passing
|
|
VA_ALLOWALL in FLAGS. Right now, since the unset builtin doesn't
|
|
pass VA_ALLOWALL, those subscripts unset individual elements for
|
|
associative arrays. We preserve the old behavior of unsetting
|
|
indexed arrays for the time being with new indexed-array-specific
|
|
code
|
|
|
|
5/9
|
|
---
|
|
|
|
builtins/shopt.def
|
|
- expand_once_flag: "assoc_expand_once" option now sets this flag,
|
|
calls set_assoc_expand on change
|
|
- set_assoc_expand: sets assoc_expand_once to mirror expand_once_flag;
|
|
placeholder for future changes
|
|
|
|
builtins/common.h
|
|
- expand_once_flag: extern declaration
|
|
|
|
5/10
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- note that case patterns undergo quote removal. Reported by
|
|
AlvinSeville7cf <alvinseville7cf@gmail.com>
|
|
|
|
5/11
|
|
----
|
|
|
|
builtins/bashgetopt.c
|
|
- list_optflags: flags associated with the word corresponding to
|
|
list_optarg, assuming list_optarg is a separate argument
|
|
|
|
builtins/bashgetopt.h
|
|
- list_optflags: extern declaration
|
|
|
|
builtins/set.def
|
|
- unset_builtin: set VFLAGS each time through the loop, since we take
|
|
whether or not the word has W_ARRAYREF set into account
|
|
- unset_builtin: don't pass VA_ALLOWALL to unbind_array_element for
|
|
now
|
|
|
|
test.c
|
|
- unary_test: in the -v case, use assoc_expand_once in the first call
|
|
to valid_array_reference ()
|
|
|
|
builtins/printf.def
|
|
- printf_builtin: only set VA_ONEWORD if the option argument to -v has
|
|
W_ARRAYREF set (look at list_optflags)
|
|
|
|
5/12
|
|
----
|
|
|
|
subst.c
|
|
- expand_array_subscript: don't quote @ or * in the expanded subscript
|
|
at all, even when they are the only character in the subscript. See
|
|
how this works out -- it might uncover places where we need to allow
|
|
`*' and `@' as subscripts where they are not allowed now
|
|
|
|
expr.c
|
|
- expr_bind_variable: pass ASS_ALLOWALLSUB to bind_int_variable so we
|
|
can allow (( A[@]=value )) when A is an existing associative array
|
|
|
|
arrayfunc.h
|
|
- AV_ATSTARKEYS: new flag value, means to accept a[@] and a[*] but
|
|
treat them as keys/expressions and not special values
|
|
|
|
arrayfunc.c
|
|
- array_value_internal: check AV_ATSTARKEYS and don't treat them as
|
|
ALL_ELEMENT_SUB values; they fall through to use as keys/indices
|
|
|
|
test.c
|
|
- unary_test: if -v is passed an array reference, add AV_ATSTARKEYS to
|
|
the flags passed to array_value so we treat @ and * as keys for an
|
|
existing associative array
|
|
|
|
5/13
|
|
----
|
|
|
|
subst.c
|
|
- expand_cond_word: if SPECIAL == 3 (arithmetic expression), dequote the
|
|
resulting WORD_LIST * as if special == 0, because we don't want to
|
|
quote the list for pattern matching. Report from
|
|
Adjudicator Darren <adjudicatordarren@protonmail.com>
|
|
|
|
5/14
|
|
----
|
|
subst.c
|
|
- expand_array_subscript: add double quote (") to the list of characters
|
|
that are backslash-quoted in subscripts after word expansion.
|
|
skipsubscript treats them specially, so you have to quote them to
|
|
do things like `key='"' ; array[$key]=1 ; [[ -v array[$key] ]]'
|
|
|
|
5/16
|
|
----
|
|
|
|
builtins/wait.def
|
|
- wait_builtin: if we longjmp to wait_intr_buf, call unset_waitlist if
|
|
we have called set_waitlist (wflags & JWAIT_WAITING). Fixes bug with
|
|
wait -n interrupted by a trapped signal (not SIGINT) reported by
|
|
Jonas Alfredsson <jonas.alfredsson@protonmail.com>
|
|
|
|
jobs.c
|
|
- wait_sigint_cleanup: restore the old sigint handler before we longjmp
|
|
out by calling restore_sigint_handler()
|
|
|
|
5/17
|
|
----
|
|
builtins/read.def
|
|
- bind_read_variable: now takes an additional argument, flags to pass
|
|
to builtin_bind_variable; change callers
|
|
- SET_VFLAGS: set vflags and bindflags
|
|
- read_builtin: call SET_VFLAGS to set vflags and bindflags from each
|
|
word before calling valid_array_reference and bind_read_variable
|
|
|
|
builtins/common.c
|
|
- builtin_bind_variable: set vflags (for valid_array_reference) and
|
|
bindflags (for bind_variable/assign_array_element) separately for
|
|
clarity
|
|
|
|
arrayfunc.c
|
|
- assign_array_element: sanity check: make sure that the subscript
|
|
returned by array_variable_name consumes the entire NAME, otherwise
|
|
flag it as a subscript error. This keeps things like
|
|
`KEY=' ]'; read assoc[$KEY] <<< hello' from assigning to incomplete
|
|
subscripts
|
|
|
|
builtins/printf.def
|
|
- printf_builtin: if LIST_OPTFLAGS includes W_ARRAYREF, set VA_NOEXPAND
|
|
in VFLAGS
|
|
|
|
5/17
|
|
----
|
|
|
|
lib/readline/complete.c
|
|
- compute_lcd_of_matches: move a couple of strlen calls out of a loop
|
|
in calls to mbrtowc; performance improvement only. Report and fix
|
|
from sparrowhawk996@gmail.com
|
|
|
|
lib/readline/bind.c
|
|
- rl_trim_arg_from_keyseq: take a key sequence and its length and
|
|
return the index into the key sequence following any initial numeric
|
|
argument. Return -1 if there is no numeric argument (the caller is
|
|
expected to make sure) or if the key sequence consists *only* of
|
|
the numeric argument. The caller should use the remainder of the
|
|
key sequence to look up the desired key binding.
|
|
|
|
lib/readline/readline.h
|
|
- rl_trim_arg_from_keyseq: extern declaration
|
|
|
|
bashline.c
|
|
- bash_execute_unix_command: if the argument count is > 1 or we have
|
|
an explicit argument, call rl_trim_arg_from_keyseq to get past the
|
|
numeric argument and deal with the rest of the key sequence. We still
|
|
need a way to pass it to the invoked program or function. From
|
|
a report from Jesper Nygards <jesper.nygards@gmail.com>
|
|
|
|
5/18
|
|
----
|
|
|
|
bashline.c
|
|
- bash_execute_unix_command: if the user supplied a numeric argument
|
|
when invoking bash_execute_unix_command, pass it to the command in
|
|
the READLINE_ARGUMENT variable
|
|
|
|
lib/readline/readline.[ch]
|
|
- _rl_del_executing_keyseq: convenience function to `delete' the last
|
|
character added to the executing key sequence. Intended to be used
|
|
before calling rl_execute_next or similar functions that push input
|
|
back to be re-read
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- READLINE_ARGUMENT: documented new variable available for commands
|
|
defined using `bind -x' keybindings
|
|
|
|
lib/readline/doc/rltech.texi
|
|
- rl_trim_arg_from_keyseq: documented new function
|
|
|
|
5/19
|
|
----
|
|
|
|
builtins/evalstring.c
|
|
- should_suppress_fork: suppress the fork if we're in a process
|
|
substitution subshell, in addition to being a simple command
|
|
without redirections. From a report back in 10/2020 from
|
|
Hyunho Cho <mug896@gmail.com>
|
|
|
|
bashline.c
|
|
- command_word_completion_function: if we're trying to complete an
|
|
absolute program (one containing a slash), don't run strcmp or
|
|
strcasecmp on the return value from rl_filename_completion_function,
|
|
since that duplicates work the filename completion function already
|
|
does. From a report back in 1/2021 by awa54@cdak.net
|
|
|
|
5/22
|
|
----
|
|
parse.y
|
|
- CHECK_FOR_RESERVED_WORD: if we are returning an ESAC and unsetting
|
|
PST_CASESTMT, decrement esacs_needed_count
|
|
|
|
parse.y,shell.h
|
|
- sh_parser_state_t: save and restore esacs_needed_count and
|
|
expecting_in_token in the shell parser state struct and
|
|
save_parser_state/restore_parser_state
|
|
|
|
print_cmd.c
|
|
- print_simple_command: don't bother to call command_print_word_list
|
|
with an empty list
|
|
- print_simple_command: don't print a space before a redirection list
|
|
if there weren't any command words to print
|
|
|
|
5/24
|
|
----
|
|
|
|
lib/sh/input_avail.c
|
|
- nchars_avail: make sure SET and OSET are declared on systems with
|
|
select(2). Reported by Larkin Nickle <me@larbob.org>
|
|
|
|
parse.y
|
|
- cond_term: if we read a `!' toggle CMD_INVERT_RETURN instead of
|
|
setting it unconditionally. Report and patch from
|
|
Vincent Menegaux <vincent.menegaux@gmail.com> via
|
|
https://savannah.gnu.org/patch/?10070
|
|
|
|
5/25
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- test: add the ( $2 $3 ) case to the description of the four-argument
|
|
behavior. Inspired by a discussion with Christoph Anton Mitterer
|
|
<calestyo@scientia.net>
|
|
|
|
5/27
|
|
----
|
|
doc/bashref.texi
|
|
- replace most of the GNU parallel section with a reference to the
|
|
tutorial on gnu.org
|
|
|
|
lib/glob/glob.h
|
|
- GX_NEGATE: new flag; indicates whether the pattern is being negated
|
|
as part of an extglob pattern. Not used yet
|
|
|
|
lib/glob/glob.c
|
|
- extglob_skipname,wextglob_skipname: pass GX_NEGATE to the skipname
|
|
functions if the pattern is being negated. Not checked yet
|
|
|
|
5/28
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- dotglob: add text to clarify that `.' and `..' have to be matched by
|
|
a pattern beginning with `.' or -- and this is the sketchy part --
|
|
that a pattern beginning with `.' has to be one of the patterns in
|
|
an extended glob expression
|
|
|
|
lib/glob/glob.c
|
|
- skipname,wskipname: perform the special checks for `.' only if the
|
|
pattern is not being negated
|
|
|
|
6/3
|
|
---
|
|
parse.y,shell.h
|
|
- eol_ungetc_lookahead: save and restore as part of the parser state
|
|
included in {save,restore}_parser_state
|
|
|
|
6/7
|
|
---
|
|
lib/readline/display.c
|
|
- puts_face: make sure to cast each member of STR to unsigned char, so
|
|
it's not misinterpreted as EOF, which putc_face does not display.
|
|
Report and fix from Volodymyr Prodan <vovcat@gmail.com> in
|
|
https://savannah.gnu.org/patch/?10076
|
|
|
|
examples/shobj-conf
|
|
- aix*gcc: change SHOBJ_LD to ${CC}, prefix the SHOBJ_LDFLAGS flags
|
|
with -Wl, so gcc will pass them to the linker. Report from
|
|
lehel@maxer.hu in https://savannah.gnu.org/support/?110505
|
|
|
|
6/11
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- cd: additional arguments are not ignored; they raise an error.
|
|
Report from Douglas McIlroy <douglas.mcilroy@dartmouth.edu>
|
|
|
|
lib/glob/strmatch.h
|
|
- FNM_DOTDOT: enable special handling for `.' and `..': if FNM_PERIOD
|
|
is not set, `.' and `..' at the start of a string or as a pathname
|
|
component need to be matched by a `.' in the pattern and cannot be
|
|
matched by `?', `*', or a bracket expression
|
|
|
|
lib/glob/glob.c
|
|
- glob_vector: pass FNM_DOTDOT to strmatch() if noglob_dot_filenames
|
|
is not set to enable special handling of `.' and `..'. Prompted by a
|
|
discussion with Nora Platiel <nplatiel@gmx.us>
|
|
- skipname,wskipname: remove special checks for `.' and (disabled)
|
|
checks for `..'
|
|
|
|
lib/glob/sm_loop.c
|
|
- GMATCH: implement special handling for FNM_DOTDOT and `.' and `..':
|
|
make sure they can't be matched by any special glob characters at
|
|
the start of the string or as a pathname component (if FNM_PATHNAME
|
|
is set). This also means that !(pattern) won't return `.' or `..'
|
|
if dotglob is set
|
|
- GMATCH,EXTMATCH: don't pass FNM_DOTDOT down to recursive calls, like
|
|
FNM_PERIOD, once we process the first character in the string or
|
|
pathname component
|
|
|
|
lib/glob/smatch.c
|
|
- ISDIRSEP,PATHSEP,SDOT_OR_DOTDOT,PDOT_OR_DOTDOT: provide definitions
|
|
for single-byte or wide character strings for sm_loop.c to use
|
|
|
|
6/16
|
|
----
|
|
|
|
doc/{bash.1,bashref.texi},lib/readline/doc/{rluser,rltech}.texi
|
|
- slight wording changes to rewrite gender-specific language. From a
|
|
report by Vipul Kumar <kumar+bug-bash@onenetbeyond.org>, suggested
|
|
language from G. Branden Robinson <g.branden.robinson@gmail.com>,
|
|
Lawrence Velázquez <vq@larryv.me>,
|
|
and Andrew Church <achurch+bash@achurch.org>
|
|
|
|
builtins/fc.def
|
|
- fc_builtin: make sure an entry in the history list is non-null
|
|
before trying to write it to stdout or the temporary file. From a
|
|
report from Sibo Dong <sibo.dong@outlook.com>
|
|
|
|
builtins/common.[ch]
|
|
- builtin_arrayref_flags: given a WORD_DESC * (which includes flags)
|
|
and a base set of flags, return a set of flags to pass to
|
|
valid_array_reference and similar functions
|
|
|
|
builtins/set.def
|
|
- unset_builtin: call builtin_arrayref_flags to set vflags
|
|
|
|
6/19
|
|
----
|
|
|
|
parse.y
|
|
- parse_comsub: rewrite to recursively call the parser (yyparse()) and
|
|
return a string constructed from the resulting parse tree. Probably
|
|
will only work with bison. Error reporting is more accurate about
|
|
line numbers and invalid tokens, and command substitution errors
|
|
are caught earlier, before expansion
|
|
- DOLPAREN: new token, never created by yylex; only ever set by
|
|
parse_comsub and xparse_dolparen to indicate we're recursively
|
|
calling the parser for a command substitution
|
|
- comsub: new grammar production that's triggered by DOLPAREN and
|
|
parses a command substitution, returning a <command>. It's one of
|
|
the possible end states for the top-level parser
|
|
- grammar: only call rewind_input_string if the shell's input is
|
|
coming from a string
|
|
- shell_ungets: push a string back onto the shell input; only used by
|
|
make_here_document for backwards compatibility -- allowing a here-
|
|
document to be terminated by a token at the end of a command
|
|
substitution
|
|
- yylex: don't need any more special handling when returning
|
|
shell_eof_token, but we keep the clause for future work
|
|
- read_token_word: don't handle backslashes (leave them in the input
|
|
stream) if we are reading a command substitution (PST_NOEXPAND)
|
|
- reserved_word_acceptable: allow reserved words after DOLPAREN
|
|
- report_syntax_error: better error handling if we hit EOF while
|
|
looking for the ending right paren in a command substitution
|
|
- parse_string_to_word_list,parse_compound_assignment: make sure to
|
|
turn off parse_comsub sentinel temporarily
|
|
|
|
make_cmd.c
|
|
- make_here_document: backwards compatibility: if we end a here
|
|
document on the same line as the end of a command substitution,
|
|
allow the token to terminate the here document (without requiring
|
|
a newline) and push the remainder of the line back for the parser
|
|
to consume and terminate the command substitution
|
|
|
|
builtins/evalstring.c
|
|
- parse_string: if we read shell_eof_token and use it to terminate a
|
|
command, rewind the input string here before returning, instead of
|
|
guessing where to rewind it in the caller
|
|
|
|
6/22
|
|
----
|
|
|
|
redir.c
|
|
- do_redirection_internal: if VARASSIGN_REDIR_AUTOCLOSE is non-zero,
|
|
add a redirect to automatically close {var}<fn and other styles of
|
|
varassign redirection. It's zero by default
|
|
|
|
builtins/shopt.def
|
|
- varredir_close: new shell option, mirrors the value of
|
|
varassign_redir_autoclose. Suggested multiple times by multiple
|
|
people
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- varredir_close: document new shell option (the name is tentative)
|
|
|
|
6/24
|
|
----
|
|
|
|
parse.y
|
|
- yylex: if read_token returns a value < 0, return YYerror to the
|
|
parser
|
|
- parse_comsub: if the current_token is not shell_eof_token when
|
|
yyparse returns, return an error to read_token_word instead of
|
|
trying to keep parsing. Fixes interactive-only (?) bug reported by
|
|
Koichi Murase <myoga.murase@gmail.com>
|
|
|
|
parser.h
|
|
- PST_NOERROR: don't print error messages in yyerror(), just reset
|
|
the parser and return
|
|
|
|
parse.y
|
|
- yyerror: if parser_state & PST_NOERROR, don't print an error message
|
|
- xparse_dolparen: if the flags includes SX_COMPLETE, add PST_NOERROR
|
|
to parser_state, to inhibit error messages. Fixes bug with adding
|
|
lines with incomplete command substitutions to the history list
|
|
reported by Koichi Murase <myoga.murase@gmail.com>
|
|
|
|
subst.c
|
|
- skip_matched_pair: make sure to pass the SX_COMPLETE flag to
|
|
extract_delimited_string
|
|
|
|
6/28
|
|
----
|
|
|
|
lib/readline/bind.c
|
|
- rl_trim_arg_from_keyseq: handle rl_vi_arg_digit if VI_MODE is
|
|
defined. Report and fix from Koichi Murase <myoga.murase@gmail.com>
|
|
- rl_trim_arg_from_keyseq: rework to handle case where the digit
|
|
argument is given as a discrete sequence of multiple rl_digit_argument
|
|
commands (e.g, "M-1 M-2" instead of "M-1 2"). Report and fix from
|
|
Koichi Murase <myoga.murase@gmail.com>
|
|
|
|
subst.c
|
|
- pat_subst: avoid calling RESIZE_MALLOCED_BUFFER with STRLEN(s) as an
|
|
argument, since it ends up going into a loop. Report and fix from
|
|
Koichi Murase <myoga.murase@gmail.com>
|
|
|
|
lib/sh/casemod.c
|
|
- cval: take the string length as an argument, to avoid having to call
|
|
strlen every time (in HANDLE_MULTIBYTE mode). The caller already has
|
|
this info. Report and fix from Koichi Murase <myoga.murase@gmail.com>
|
|
|
|
builtins/complete.def
|
|
- print_cmd_name: single-quote the command name if it contains any
|
|
shell metacharacters
|
|
- print_one_completion: call print_arg with a second arg of 1 if the
|
|
function name contains shell metacharacters. Report and fix from
|
|
Koichi Murase <myoga.murase@gmail.com>
|
|
|
|
6/30
|
|
----
|
|
|
|
configure.ac
|
|
- substitute BASE_CFLAGS_FOR_BUILD and STYLE_CFLAGS into Makefile
|
|
targets
|
|
- take STYLE_CFLAGS out of the CFLAGS_FOR_BUILD variable that gets
|
|
substituted
|
|
- remove STYLE_CFLAGS from CFLAGS
|
|
- use `:+' expansion to set variables based on whether $GCC is set
|
|
or null, since configure can do GCC=
|
|
|
|
support/Makefile.in
|
|
- man2html: remove CCFLAGS_FOR_BUILD from the recipe, leaving only
|
|
LDFLAGS_FOR_BUILD. Report from Jay K <jayk123@hotmail.com>
|
|
- gen-helpfiles: remove CCFLAGS_FOR_BUILD from the recipe, leaving
|
|
only LDFLAGS_FOR_BUILD
|
|
- man2html: use $(STYLE_CFLAGS) in BASE_CCFLAGS variable for C file
|
|
compilation options
|
|
|
|
{,builtins}/Makefile.in, lib/{sh,readline,malloc,glob}/Makefile.in
|
|
- use STYLE_CFLAGS so specifying CFLAGS=-g to make doesn't clutter the
|
|
output with warnings about parens and format strings
|
|
|
|
7/9
|
|
---
|
|
lib/readline/search.c
|
|
- make_history_line_current: call _rl_free_saved_history_line to clean
|
|
up _rl_saved_line_from_history and get all the code that frees it
|
|
into one place
|
|
|
|
lib/readline/misc.c
|
|
- _rl_free_saved_history_line: if rl_undo_list points to the data
|
|
member of _rl_saved_line_from_history, set it to NULL to avoid having
|
|
it point to freed memory, since the next thing we do now is to free
|
|
the undo list the data member points to
|
|
- _rl_start_using_history: call _rl_free_saved_history_line instead of
|
|
calling _rl_free_history_entry directly. Fixes memory leak reported
|
|
by Trung Dam <trungdam@yahoo.com>
|
|
|
|
7/12
|
|
----
|
|
lib/readline/search.c
|
|
- make_history_line_current: free rl_undo_list before replacing the
|
|
current line with the line from history, since it is a private
|
|
undo list from reading the search string
|
|
|
|
lib/readline/rlmbutil.h
|
|
- Since wchar_t/mbrtowc/wcrtomb are limited to 16 bits on Windows
|
|
with MSVC, start abstracting the differences using WCHAR_T/
|
|
MBRTOWC/WCRTOMB
|
|
|
|
7/13
|
|
----
|
|
|
|
lib/readline/{complete,display,input,text,util,vi_mode}.c
|
|
- use WCHAR_T/MBRTOWC/WCRTOMB. Part of a set of Windows MSVC fixes
|
|
from sparrowhawk996@gmail.com
|
|
|
|
builtins/{enable,hash,help}.def
|
|
- enable_builtin: use sh_chkwrite after output to check for write errors
|
|
|
|
7/16
|
|
----
|
|
arrayfunc.c
|
|
- quote_compound_array_word: free SUB and VALUE after assigning from
|
|
sh_single_quote(). From a coverity report from
|
|
Siteshwar Vashisht <svashisht@redhat.com>
|
|
|
|
bashhist.c
|
|
- bash_remove_history_range: free DISCARD_LIST after freeing its
|
|
elements
|
|
|
|
bashline.c
|
|
- bash_directory_expansion: add code to free D as a separate branch,
|
|
though it's never hit in practice
|
|
|
|
builtins/trap.def
|
|
- showtrap: free T even if show_default == 1 if it's a non-default
|
|
trap string
|
|
|
|
7/17
|
|
----
|
|
execute_cmd.c
|
|
- execute_coproc: free NAME on invalid identifier error
|
|
|
|
lib/glob/glob.c
|
|
- glob_vector: make sure NEXTLINK is allocated using malloc before
|
|
passing it to free()
|
|
- glob_filename: free RESULT before returning glob_error_return when
|
|
there is only a filename
|
|
|
|
print_cmd.c
|
|
- indirection_level_string: make sure we free PS4 after calling
|
|
decode_prompt_string if *ps4 == 0
|
|
|
|
subst.c
|
|
- parameter_brace_transform: if vtype == VT_VARIABLE, we need to free
|
|
a non-null VAL
|
|
|
|
variables.c
|
|
- assign_in_env: if NAME is not a valid shell identifier, free it
|
|
after printing the error message and before returning. These are
|
|
the rest of the fixes from Siteshwar Vashisht <svashisht@redhat.com>
|
|
|
|
7/22
|
|
----
|
|
shell.c
|
|
- main: set dollar_vars[0] to shell_script_filename before calling
|
|
run_startup_files() in the non-interactive case. Restore it after
|
|
run_startup_files returns so we can get better error messages if
|
|
we can't open a script file. Suggested by several people, originally
|
|
by Marc Aurèle La France <tsi@tuyoix.net> back in 2/2021 (in a
|
|
different form) and most recently by Tapani Tarvainen
|
|
<bash@tapanitarvainen.fi>
|
|
|
|
7/28
|
|
----
|
|
trap.c
|
|
- any_signals_trapped: return that a signal is trapped only if it's
|
|
not ignored. This is an additional opportunity for optimization,
|
|
reported in https://bugzilla.redhat.com/show_bug.cgi?id=1981926
|
|
|
|
7/30
|
|
----
|
|
examples/loadables/sleep.c
|
|
- main: if the uconvert conversion fails, but the argument appears to
|
|
contain a GNU-like interval specifier like "1m30s", return
|
|
EX_DISKFALLBACK so the execute_builtin code tries to run the
|
|
external version
|
|
|
|
builtins/enable.def
|
|
- enable_shell_builtin: if the builtin isn't found, return EX_NOTFOUND
|
|
to allow the caller (enable_builtin) to react differently if it
|
|
wants to
|
|
- dyn_load_builtin: if the shared object isn't found, return EX_NOTFOUND,
|
|
change enable_builtin to deal with it
|
|
- enable_builtin: if there are no supplied options, and we attempt to
|
|
enable a non-existent builtin, try modifying `enable name' to the
|
|
equivalent of `enable -f name name' and return success if we
|
|
successfully load a builtin from a shared object. Proposed several
|
|
times, most recently by Robert Elz <kre@munnari.OZ.AU>
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- enable: document new behavior of `enable NAME' when NAME is not a
|
|
current shell builtin
|
|
|
|
8/3
|
|
---
|
|
lib/glob/sm_loop.c
|
|
- GMATCH: check for interrupts or terminating signals each time through
|
|
the loop and return FNM_NOMATCH immediately if received. Let the
|
|
higher layers deal with interrupting the match and jumping out.
|
|
Inspired by a report from andrej@podzimek.org
|
|
|
|
8/6
|
|
---
|
|
subst.c
|
|
- {parameter_brace_remove_pattern,parameter_brace_transform,
|
|
parameter_brace_substring,parameter_brace_casemod,
|
|
parameter_brace_patsub}: make sure the IND argument is of type
|
|
arrayind_t to handle the full range of subscripts. Reported by
|
|
felix@f-hauri.ch
|
|
|
|
builtins/printf.def
|
|
- printf_builtin: take new format specifier: %Q. This acts like %q
|
|
but applies any supplied precision to the original unquoted
|
|
argument, then quotes that result and outputs the entire quoted
|
|
string, preserving the original field width. Originally suggested
|
|
back in 4/2020 by Sam Liddicott <sam@liddicott.com>
|
|
|
|
subst.c
|
|
- char_is_quoted: check whether or not we are on the second or later
|
|
line of a command with an unclosed quoted string from a previous
|
|
line. If we are, see if it's closed before the character we're
|
|
checking, so we don't interpret a closing quote as starting a new
|
|
quoted string. Reported several times, most recently by
|
|
Phi Debian <phi.debian@gmail.com> in 6/2021.
|
|
|
|
8/9
|
|
---
|
|
parse.y,subst.c
|
|
- locale_expand: if the variable SINGLEQUOTE_TRANSLATIONS is non-zero,
|
|
single-quote the translated result of $"..." (if it's different from
|
|
the untranslated string)
|
|
|
|
builtins/shopt.def
|
|
- noexpand_translation: new option to expose the value of
|
|
SINGLEQUOTE_TRANSLATIONS
|
|
|
|
8/10
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- noexpand_translation: add description of new option
|
|
|
|
8/16
|
|
----
|
|
builtins/printf.def
|
|
- printf_builtin: initialize retval after parsing arguments, since we
|
|
use it for the `v' option. Bug report from Keith Thompson
|
|
<Keith.S.Thompson@gmail.com>
|
|
|
|
lib/sh/unicode.c
|
|
- u32tocesc: fix typo that returned \uXXXXXXXX instead of \UXXXXXXXX.
|
|
From https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=992257 by
|
|
<nabijaczleweli@nabijaczleweli.xyz>
|
|
|
|
8/17
|
|
----
|
|
siglist.c
|
|
- include command.h before general.h for PARAMS and prototypes. Report
|
|
from Osipov, Michael (LDA IT PLM) <michael.osipov@siemens.com>
|
|
|
|
8/18
|
|
----
|
|
lib/readline/colors.c
|
|
- S_ISBLK: make sure it's defined before we use it, like in complete.c
|
|
|
|
lib/readline/complete.c,{bashline,variables}.c
|
|
- minor changes to prep for making rl_completer_word_break_characters
|
|
`const'
|
|
|
|
subst.[ch],pcomplete.c
|
|
- split_at_delims: the DELIMS argument is now `const'; change callers
|
|
|
|
lib/readline/rlmbutil.h
|
|
- _rl_wcwidth: add function prototype for inline function declaration
|
|
|
|
lib/readline/bind.c
|
|
- _rl_get_keyname: print keys greater than 160 (which are valid UTF-8)
|
|
as octal escape sequences
|
|
|
|
lib/readline/text.c
|
|
- do_lowercase_version: return 99999 to prevent the linker from
|
|
combining it with _rl_null_function and optimizing away the separate
|
|
copy. That messes with function pointer comparisons. Part of this
|
|
batch of fixes from sparrowhawk996@gmail.com
|
|
|
|
8/19
|
|
----
|
|
complete.c,readline.c,readline.h
|
|
- rl_completer_word_break_characters: now const char * like
|
|
rl_basic_word_break_characters; element of readline state struct
|
|
used to save it also const. THIS IS AN API CHANGE
|
|
|
|
bashline.c
|
|
- orig_rl_completer_word_break_characters: now const char * like
|
|
rl_completer_word_break_characters
|
|
|
|
8/20
|
|
----
|
|
bashline.c
|
|
- bash_directory_completion_hook: if direxpand and dirspell are both
|
|
set while trying to complete an absolute pathname as a command, don't
|
|
take a spell-corrected directory name that is shorter than the
|
|
original hint. https://bugzilla.redhat.com/show_bug.cgi?id=1782809
|
|
|
|
builtins/common.[ch]
|
|
- sh_noassign: convenience function to print an error message when a
|
|
user attempts an assignment to a "noassign" variable. Not used yet
|
|
|
|
assoc.[ch]
|
|
- assoc_to_kvpair_list: new function, returns a WORD_LIST containing
|
|
key-value pairs as separate words
|
|
|
|
array.[ch]
|
|
- array_to_kvpair_list: new function, returns a WORD_LIST containing
|
|
index-value pairs as separate words
|
|
|
|
subst.c
|
|
- string_transform: handle '@k' transform like '@K'
|
|
- valid_parameter_transform: 'k' is a valid transform operator
|
|
- array_transform: handle '@k' transformation by calling one of
|
|
array_to_kvpair_list or assoc_to_kvpair_list and treating the
|
|
result as if expanding the array depending on whether the index is
|
|
`@' or `*' with the usual meanings
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- document new '@k' parameter transformation operator
|
|
|
|
8/27
|
|
----
|
|
lib/readline/kill.c
|
|
- rl_unix_filename_rubout: handle pathnames that consist only of one
|
|
or more slashes. The old code went too far and deleted the previous
|
|
word as well. From dabe@dabe.com
|
|
|
|
8/31
|
|
----
|
|
parse.y
|
|
- STRING_SAVER: now save and restore shell_input_line_len; not sure
|
|
why it wasn't done before; fix push_string and pop_string accordingly
|
|
- prompt_again: now takes a parameter FORCE; not used yet (every
|
|
caller passes 0), needs more thought
|
|
|
|
builtins/evalstring.h
|
|
- open_redir_file: broke code that expands the redirection and opens
|
|
the resultant filename into a new function, called from cat_file
|
|
|
|
redir.h
|
|
- open_redir_file: extern declaration here for now
|
|
|
|
builtins/evalstring.c
|
|
- parse_string: takes a new argument: COMMAND **cmdp; if non-null, saves
|
|
the parsed command to *cmdp and lets the caller manage it itself.
|
|
global_command is still not modified. Changed callers in parse.y
|
|
|
|
9/1
|
|
---
|
|
parse.y
|
|
- parse_string_to_command: stripped-down version of xparse_dolparen
|
|
that takes a string, runs it through the parser, and returns the
|
|
resultant COMMAND *; uses parse_string with the new argument
|
|
|
|
externs.h
|
|
- parse_string_to_command: extern declaration
|
|
|
|
builtins/evalstring.c
|
|
- can_optimize_cat_file: new function, takes a COMMAND * argument and
|
|
returns true if the command can be optimized like $(<file); changed
|
|
parse_and_execute to call it
|
|
|
|
subst.c
|
|
- optimize_cat_file: new function, optimizes $(<file) without creating
|
|
a new process. Uses redir_open to open the redirection file, after
|
|
expansion, and calls read_comsub to read from it directly
|
|
- read_comsub: now reads into a 4096 byte buffer (COMSUB_PIPEBUF)
|
|
- command_substitute: if the string begins with a `<' and isn't followed
|
|
by any of "<>&", see if we can optimize the command and call
|
|
optimize_cat_file to do it if we can.
|
|
|
|
9/2
|
|
---
|
|
configure.ac,config.h.in,lib/sh/setlinebuf.c
|
|
- SETVBUF_REVERSED: remove all references
|
|
|
|
configure.ac,aclocal.m4
|
|
- AC_OUTPUT: move created files and commands to AC_CONFIG_FILES and
|
|
AC_CONFIG_COMMANDS; call AC_OUTPUT without any arguments
|
|
- require autoconf version 2.63
|
|
- AC_HELP_STRING -> AS_HELP_STRING
|
|
- replace references to $ac_cv_prog_gcc with $GCC
|
|
- AC_C_LONG_DOUBLE -> AC_TYPE_LONG_DOUBLE
|
|
- enable-alt-array-implementation: new configure option, placeholder
|
|
for later
|
|
|
|
unwind_prot.c
|
|
- stddef.h: include if HAVE_STDDEF_H is defined, not STDC_HEADERS
|
|
|
|
bashansi.h
|
|
- memory.h: don't include any more; assume <string.h> has all the
|
|
necessary defines
|
|
|
|
aclocal.m4
|
|
- AC_HEADER_STDC: remove AC_REQUIRE calls to this; change tests to use
|
|
appropriate checks instead of STDC_HEADERS
|
|
|
|
9/3
|
|
---
|
|
configure.ac,config.h.in
|
|
- AC_TYPE_SIGNAL,BASH_TYPE_SIGHANDLER: remove calls, remove mention of
|
|
RETSIGTYPE and VOID_SIGHANDLER
|
|
- AC_USE_SYSTEM_EXTENSIONS: use this instead of AC_ISC_POSIX (which is
|
|
well and truly obsolete) and AC_MINIX (which just calls it anyway).
|
|
All the right defines are already present
|
|
- AC_HEADER_TIME: removed
|
|
- AC_HEADER_STDC: removed
|
|
- AC_DECL_SYS_SIGLIST: replaced with BASH_DECL_SYS_SIGLIST
|
|
- BASH_FUNC_CTYPE_NONASCII: removed
|
|
|
|
sig.h,lib/readline/signals.c
|
|
- RETSIGTYPE -> void, SIGHANDLER_RETURN -> return
|
|
|
|
include/posixtime.h
|
|
- don't bother with TIME_WITH_SYS_TIME, just include <sys/times.h> if
|
|
we have it and include <time.h> unconditionally
|
|
|
|
include/chartypes.h,lib/readline/chardefs.h
|
|
- IN_CTYPE_DOMAIN: no longer uses STDC_HEADERS define, checks against
|
|
CHAR_MAX for non-C89 systems, still a no-op on C89 systems
|
|
|
|
lib/readline/chardefs.h
|
|
- memory.h: don't include, no need for STDC_HEADERS; assume the mem*
|
|
functions are defined in <string.h> as in C89
|
|
- now that we assume IN_CTYPE_DOMAIN bounds its argument to unsigned
|
|
chars, we don't need NON_NEGATIVE checks at all
|
|
|
|
lib/readline/chardefs.h,util.c
|
|
- ALPHABETIC -> _rl_alphabetic_p
|
|
|
|
9/8
|
|
---
|
|
|
|
lib/sh/strftime.c
|
|
- include <posixtime.h> after reworking above; include <sys/types.h>
|
|
unconditionally in case it defines time_t. From a report by
|
|
Ori Sky Farrell <bash@ori.mx>
|
|
|
|
9/9
|
|
---
|
|
lib/readline/search.c
|
|
- rl_history_search_internal: set rl_undo_list to NULL after calling
|
|
rl_maybe_save_line, since it will be restored one way or another
|
|
after the search completes, and we don't want it to be freed twice
|
|
- rl_history_search_internal: leave the current history offset at the
|
|
position of the last matching history entry. This means that things
|
|
like ^P will start back from that history entry, ^N will move
|
|
forward from there, and operate-and-get-next will work like it does
|
|
with incremental searches. Reported by Vandrus Zoltán
|
|
<vandrus.zoltan@gmail.com>
|
|
|
|
9/10
|
|
----
|
|
aclocal.m4
|
|
- BASH_C_LONG_LONG: removed
|
|
- BASH_TYPE_LONG_DOUBLE: removed
|
|
- BASH_TYPE_LONG_LONG,BASH_TYPE_UNSIGNED_LONG_LONG: removed
|
|
- BASH_FUNC_CTYPE_NONASCII: removed
|
|
- BASH_SYS_SIGNAL_VINTAGE,BASH_SYS_REINSTALL_SIGHANDLERS: don't
|
|
require AC_TYPE_SIGNAL, use void instead of RETSIGTYPE
|
|
- BASH_TYPE_SIGHANDLER: removed
|
|
|
|
configure.ac,aclocal.m4,config.h.in
|
|
- BASH_TYPE_LONG_LONG: removed, call AC_TYPE_LONG_LONG_INT directly,
|
|
change #define to HAVE_LONG_LONG_INT
|
|
- BASH_TYPE_UNSIGNED_LONG_LONG: removed, call AC_TYPE_UNSIGNED_LONG_LONG_INT
|
|
directly, change #define to HAVE_UNSIGNED_LONG_LONG_INT
|
|
|
|
externs.h,include/typemax.h,lib/sh/{fmtullong,snprintf,strtoimax,strtoll,
|
|
strtoull,strtoumax}.c
|
|
- HAVE_LONG_LONG -> HAVE_LONG_LONG_INT
|
|
- HAVE_UNSIGNED_LONG_LONG -> HAVE_UNSIGNED_LONG_LONG_INT
|
|
|
|
configure.ac
|
|
- AC_TRY_COMPILE -> AC_COMPILE_IFELSE
|
|
- BASH_CHECK_TYPE (intmax_t) -> AC_TYPE_INTMAX_T
|
|
- BASH_CHECK_TYPE (uintmax_t) -> AC_TYPE_UINTMAX_T
|
|
- BASH_CHECK_TYPE (sig_atomic_t): removed
|
|
|
|
aclocal.m4
|
|
- BASH_FUNC_STRSIGNAL: changed to use AC_LINK_IFELSE
|
|
- BASH_FUNC_LSTAT: changed to use AC_LINK_IFELSE
|
|
- BASH_FUNC_SBRK: changed to use AC_LINK_IFELSE and AC_RUN_IFELSE,
|
|
fixed typo
|
|
- BASH_CHECK_SPEED_T: changed to use AC_COMPILE_IFELSE
|
|
- BASH_TYPE_SIG_ATOMIC_T: use BASH_CHECK_TYPE instead of AC_CHECK_TYPE
|
|
- BASH_STRUCT_DIRENT: new macro, like _AC_STRUCT_DIRENT but public and
|
|
sets a different bash-specific shell variable
|
|
- BASH_STRUCT_DIRENT_D_{INO,FILENO,NAMLEN}: call BASH_STRUCT_DIRENT
|
|
with a different first argument instead of using inline code and
|
|
AC_TRY_COMPILE
|
|
|
|
9/11
|
|
----
|
|
[prayers for the victims of 9/11/2001]
|
|
|
|
aclocal.m4
|
|
- BASH_CHECK_DECL: just call AC_CHECK_DECLS and use the default
|
|
includes, which includes the files we used to specify
|
|
- BASH_FUNC_INET_ATON: changed to use AC_LINK_IFELSE
|
|
- BASH_STRUCT_WEXITSTATUS_OFFSET: changed to use AC_RUN_IFELSE
|
|
- BASH_FUNC_OPENDIR_CHECK: changed to use AC_RUN_IFELSE
|
|
- BASH_FUNC_ULIMIT_MAXFDS: changed to use AC_RUN_IFELSE
|
|
- BASH_UNDER_SYS_SIGLIST: changed to use AC_RUN_IFELSE
|
|
- BASH_SYS_SIGLIST: changed to use AC_RUN_IFELSE
|
|
- BASH_FUNC_DUP2_CLOEXEC_CHECK: changed to use AC_RUN_IFELSE
|
|
- BASH_FUNC_GETENV: changed to use AC_RUN_IFELSE
|
|
- BASH_FUNC_GETCWD: changed to use AC_RUN_IFELSE
|
|
- BASH_FUNC_FNMATCH_EXTMATCH: changed to use AC_RUN_IFELSE
|
|
- BASH_FUNC_POSIX_SETJMP: changed to use AC_RUN_IFELSE
|
|
- BASH_FUNC_STRCOLL: changed to use AC_RUN_IFELSE
|
|
- BASH_FUNC_PRINTF_A_FORMAT: changed to use AC_RUN_IFELSE
|
|
- BASH_SYS_PGRP_SYNC: changed to use AC_RUN_IFELSE
|
|
- BASH_SYS_SIGNAL_VINTAGE: changed to use AC_RUN_IFELSE
|
|
- BASH_SYS_NAMED_PIPES: changed to use AC_RUN_IFELSE
|
|
- BASH_CHECK_RTSIGS: changed to use AC_RUN_IFELSE
|
|
- BASH_CHECK_MULTIBYTE: changed to use AC_RUN_IFELSE
|
|
- RL_LIB_READLINE_VERSION: changed to use AC_RUN_IFELSE
|
|
- BASH_CHECK_WCONTINUED: changed to use AC_RUN_IFELSE
|
|
- BASH_FUNC_SNPRINTF: changed to use AC_RUN_IFELSE
|
|
- BASH_FUNC_VSNPRINTF: changed to use AC_RUN_IFELSE
|
|
- BASH_FUNC_FNMATCH_EQUIV_FALLBACK: changed to use AC_RUN_IFELSE
|
|
- BASH_DECL_PRINTF: changed to use AC_RUN_IFELSE
|
|
- BASH_TYPE_RLIMIT: rewrote to avoid quad_t, now uses AC_COMPILE_IFELSE
|
|
to determine whether rlim_t is available, otherwise determines the
|
|
value of RLIMTYPE based on sizeof(rlim.rlim_cur): int, long, or
|
|
long long
|
|
- BASH_SIZEOF_RLIMIT,BASH_SIZEOF_QUAD_T: helper macros for
|
|
BASH_TYPE_RLIMIT in the case that rlim_t is not present
|
|
|
|
configure.ac
|
|
- BASH_CHECK_DECL -> AC_CHECK_DECLS
|
|
- quad_t: use AC_CHECK_TYPE (new style) instead of BASH_CHECK_TYPE
|
|
|
|
|
|
9/14
|
|
----
|
|
execute_cmd.c
|
|
- time_command: if we longjmp back to the top_level we saved, make sure
|
|
we're in the same subshell environment before printing the timing
|
|
stats. We could have longjmped back from a child process of the
|
|
command or pipeline we want to time. From a report by
|
|
Sergej Alikov <sergej@alikov.com>
|
|
- time_command: restore command->flags even if we longjmp back
|
|
|
|
general.c
|
|
- check_binary_file: if the first line of the ENOEXEC file starts with
|
|
a `#!', check the rest of the buffer for NULs to determine whether
|
|
this is a binary file. Since we only check the first line, a #! line
|
|
followed by binary data could be confused for a shell script
|
|
|
|
9/16
|
|
----
|
|
bashjmp.h
|
|
- EXITBLTIN: new longjmp `code' value: used by the exit builtin
|
|
|
|
{execute_cmd,shell,subst,trap}.c,builtins/evalstring.c
|
|
- treat EXITBLTIN exactly the same as EXITPROG (for now)
|
|
|
|
builtins/exit.def
|
|
- exit_builtin: jump_to_top_level with value EXITBLTIN
|
|
|
|
builtins/evalstring.c
|
|
- parse_and_execute: EXITBLTIN has its own case, with the same contents
|
|
as EXITPROG
|
|
|
|
9/17
|
|
----
|
|
builtins/evalstring.c
|
|
- parse_and_execute: change EXITBLTIN case to avoid running the
|
|
unwind-protect stack to the `pe_dispose' tag (which has the effect
|
|
of running all the unwind-protects installed by the commands in
|
|
the string) if we're executing in a function and EXIT is trapped.
|
|
This has the effect of running the EXIT trap in the function context,
|
|
which is what we do when we're not in parse_and_execute (eval,
|
|
bash -c, command substitution, etc.)
|
|
|
|
9/18
|
|
----
|
|
arrayfunc.c
|
|
- expand_and_quote_kvpair_word,quote_compound_array_word,
|
|
expand_and_quote_assoc_word,quote_compound_array_list: make sure
|
|
the value has CTLESC characters doubled even when being single-
|
|
quoted, since that's what the parser does with standalone assignment
|
|
statements. From https://savannah.gnu.org/support/?110538
|
|
|
|
9/19
|
|
----
|
|
aclocal.m4
|
|
- AC_TRY_COMPILE -> AC_COMPILE_IFELSE (AC_TRY_LINK calls left to
|
|
modify to avoid obsolete warnings)
|
|
- BASH_STRUCT_WINSIZE: broke out checks for separate headers into new
|
|
macros, call them and work with the results; needed to avoid two
|
|
calls to AC_TRY_COMPILE
|
|
- BASH_CHECK_KERNEL_RLIMIT: avoid multiple calls to AC_TRY_COMPILE by
|
|
breaking basic test for RLIMIT_ defines into a separate test and
|
|
calling the HPUX-specific _KERNEL test only if that fails
|
|
|
|
m4/gettext.m4,configure.ac
|
|
- AM_GNU_GETTEXT -> BASH_GNU_GETTEXT: remove deprecation warning, since
|
|
[no-libtool] is how we use this; rename to avoid someone's local
|
|
copy from overriding ours
|
|
|
|
9/20
|
|
----
|
|
aclocal.m4
|
|
- BASH_CHECK_MULTIBYTE: take out code that checks for nl_langinfo(CODESET)
|
|
since that's already provided by AM_LANGINFO_CODESET, which is
|
|
called by BASH_GNU_GETTEXT. We AC_REQUIRE it here, though, to avoid
|
|
problems from future changes
|
|
- BASH_SYS_SIGNAL_VINTAGE: broke the code that checks for the different
|
|
signal vintages into different AC_DEFUNed macros, changed
|
|
BASH_SYS_SIGNAL_VINTAGE to stitch them together with shell code
|
|
testing the cached variables
|
|
- AC_TRY_LINK -> AC_LINK_IFELSE: there are no more autoconf warnings
|
|
|
|
9/21
|
|
----
|
|
array.[ch]
|
|
- array_from_argv: new convenience function
|
|
|
|
array.h
|
|
- num_elements: now an arrayind_t, since that's the type of indices, it
|
|
makes sense to allow that many elements
|
|
|
|
9/22
|
|
----
|
|
lib/readline/terminal.c
|
|
- rl_term_kP: fix typo. Fix from Koichi Murase <myoga.murase@gmail.com>
|
|
|
|
9/25
|
|
----
|
|
lib/readline/display.c
|
|
- rl_clear_visible_line: call _rl_clear_to_eol with _rl_screenwidth as
|
|
the argument so we clear out the entire line even if the terminal
|
|
doesn't have a clear-to-eol sequence; make sure to add a call to
|
|
rl_cr after that so we know we're always in column 0
|
|
- _rl_redisplay_after_sigwinch: just call rl_clear_visible_line instead
|
|
of erasing the last line of the display
|
|
- _rl_redisplay_after_sigwinch: if the prompt is longer than the screen
|
|
width, make sure to call _rl_reset_prompt to recalculate the
|
|
local_prompt_newlines array. Should fix issue from
|
|
https://savannah.gnu.org/support/index.php?110543
|
|
|
|
redir.c
|
|
- do_redirection_internal: if given [N]<&WORD- or [N]>&WORD- and WORD
|
|
expands to null, make it identical to <&- or >&- and close file
|
|
descriptor N (default 0). From a discussion back in 5/2021
|
|
|
|
9/27
|
|
----
|
|
arrayfunc.c
|
|
- expand_compound_array_assignment: since we run the string through
|
|
the parser to turn it into a list (so we can make sure all shell
|
|
metacharacters are properly quoted), we need to remove the CTLESC
|
|
the parser uses to quote CTLESC and CTLNUL in *unquoted* words.
|
|
The rest of the code assumes this has been done, and assumes that
|
|
any CTLESC characters passed to expansion are part of the original
|
|
word and should themselves be quoted, doubling the number of CTLESCs
|
|
|
|
9/28
|
|
----
|
|
arrayfunc.c
|
|
- expand_and_quote_kvpair_word,quote_compound_array_word,
|
|
expand_and_quote_assoc_word,quote_compound_array_list: if we are
|
|
single-quoting associative array subscripts and associative and
|
|
indexed array values, we need to quote CTLESC characters, because
|
|
that's how they come out of the parser and how the assignment
|
|
statement code expects to see them.
|
|
Fixes https://savannah.gnu.org/support/index.php?110538
|
|
|
|
9/29
|
|
----
|
|
subst.c
|
|
- parameter_brace_transform: invalid transformation operators are now
|
|
fatal errors in non-interactive shells, as with the other word
|
|
expansions. Reported by Martin Schulte <gnu@schrader-schulte.de> in
|
|
https://lists.gnu.org/archive/html/bug-bash/2020-10/msg00026.html
|
|
|
|
execute_cmd.c
|
|
- execute_disk_command: if we're optimizing out the fork (nofork) and
|
|
not directly in a pipeline (pipe_in == pipe_out == NO_PIPE), only
|
|
modify shell_level if subshell_environment says we're not already in
|
|
a pipeline. Reported by Paul Smith <psmith@gnu.org> 10/11/2020
|
|
against GNU make
|
|
|
|
evalstring.c
|
|
- should_suppress_fork: remove #if 1 for code that tries to suppress
|
|
the fork in a process substitution subshell
|
|
|
|
9/30
|
|
----
|
|
builtins/mapfile.def
|
|
- do_chop: make sure we're comparing unsigned chars when checking
|
|
whether the delim is the last character on the line. Reported by
|
|
Greg Wooledge <greg@wooledge.org>
|
|
|
|
10/1
|
|
----
|
|
lib/readline/rltty.c
|
|
- rl_deprep_terminal: if we're not echoing to the terminal
|
|
(_rl_echoing_p == 0), and we just output the bracketed paste end
|
|
sequence, output a newline to compensate for the \r at the end of
|
|
BRACK_PASTE_FINI, since redisplay didn't do it for us. Reported by
|
|
Siteshwar Vashisht <svashisht@redhat.com>
|
|
|
|
shell.h
|
|
- MATCH_EXPREP: new matching flag, understood only by pattern
|
|
substitution; means to expand unquoted `&' in the replacement
|
|
STRING to the match of PATTERN
|
|
|
|
subst.c
|
|
- shouldexp_replacement: uncommented
|
|
- pat_subst: we expand & in the replacement string if MATCH_EXPREP
|
|
appears in MFLAGS
|
|
- parameter_brace_patsub: push call to shouldexp_replacement out here,
|
|
after the replacement string is expanded; set MATCH_EXPREP if there
|
|
is an unquoted `&' (by backslash) in the expanded replacement
|
|
string
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- pattern substitution: overhauled the description, moved each of the
|
|
possible forms to be tags in the tagged paragraph. The description
|
|
now specifies the expansions that the replacement string undergoes
|
|
- pattern substitution: documented new behavior of unquoted & in the
|
|
replacement string
|
|
|
|
10/4
|
|
----
|
|
shell.c
|
|
- include <malloc/shmalloc.h> if we're debugging malloc (MALLOC_DEBUG)
|
|
so we can get an extern declaration of trace_malloc_stats
|
|
|
|
10/5
|
|
----
|
|
subst.c
|
|
- expand_subscript_string: allocate new memory for td.word, copying
|
|
STRING, in case it gets freed on error by expand_word_internal.
|
|
Report and fix from Koichi Murase <myoga.murase@gmail.com>
|
|
|
|
lib/malloc/malloc.c
|
|
- malloc_usable_size: return the allocated size instead of the chunk
|
|
size, since writing over the bounds checking will cause fatal errors.
|
|
Reported by Julien Moutinho <julm+bash@sourcephile.fr>, fix from
|
|
Dominique Martinet <asmadeus@codewreck.org>
|
|
|
|
arrayfunc.c
|
|
- unbind_array_elememnt: pass (flags&VA_NOEXPAND) to skipsubscript(),
|
|
instead of unconditionally passing 1 if we're operating on an
|
|
associative array. This is consistent with how valid_array_reference
|
|
determines the length of the subscript.
|
|
Report and fix from Koichi Murase <myoga.murase@gmail.com>
|
|
|
|
10/6
|
|
----
|
|
|
|
subst.c
|
|
- skip_to_delim: add a new value for FLAGS. If FLAGS&2, we assume that
|
|
START is one character after the opening OPEN. If not, we assume that
|
|
START is at OPEN, and needs to be incremented past it. Part of fix
|
|
from Koichi Murase <myoga.murase@gmail.com>
|
|
|
|
arrayfunc.c
|
|
- unbind_array_element: make sure to pass FLAGS to skipsubscript with
|
|
bit 2 set, since we are passed a SUB index that's one past the
|
|
opening bracket. Rest of fix from
|
|
Koichi Murase <myoga.murase@gmail.com>
|
|
- array_variable_name: make sure we pass (FLAGS&1) to skipsubscript, so
|
|
we don't inadvertently pass a value with bit 2 set, which would
|
|
cause an off-by-one error in subscript parsing
|
|
|
|
10/8
|
|
----
|
|
trap.c
|
|
- restore_traps: inverse of reset_signal_handlers. This understands
|
|
how reset_signal_handlers changes the signal disposition while
|
|
leaving the trap string in place, and knows how to restore flags
|
|
and state based on that preserved trap string and whether or not
|
|
the signal is "special" to the shell.
|
|
|
|
builtins/exec.def
|
|
- exec_builtin: instead of using restore_original_signals to completely
|
|
cancel the traps, call reset_signal_handlers so the trap strings are
|
|
preserved. Then if the exec fails (and we're not exiting) we can
|
|
look at the trap strings and see how to restore the trap state.
|
|
This calls restore_traps after reinitializing the shell signal
|
|
handlers, using the trap strings saved by reset_signal_handlers.
|
|
Fixes issue with not exiting after a failed exec clearing the EXIT
|
|
trap reported by Mark March <march@systempad.org>, using the
|
|
approach suggested by Robert Elz <kre@munnari.OZ.AU>
|
|
|
|
subst.c
|
|
- expand_declaration_argument: when parsing options that modify
|
|
attributes that affect how the value is handled (i, c, u, etc.),
|
|
make sure to create an option string and call make_internal_declare
|
|
with options that start with a `+' so the attribute is off when
|
|
the assignment is performed and changes how the value is expanded.
|
|
From a report by Léa Gris <lea.gris@noiraude.net>
|
|
|
|
lib/readline/complete.c
|
|
- rl_display_match_list: even if _rl_completion_prefix_display_length
|
|
is set to a non-zero value, pass the common prefix length to
|
|
fnprint if we've turned on colored completion prefixes; passes
|
|
through to fnprint via print_filename
|
|
- fnprint: add the ellipsis if prefix_bytes exceeds the
|
|
_rl_completion_prefix_display_length, add explicit check for
|
|
prefix_bytes being longer since print_filename passes it through
|
|
if colored-completion-prefix is set. This means that while
|
|
completion-prefix-display-length still has precedence over
|
|
colored-completion-prefix, it doesn't override it if both are set
|
|
and the common prefix length is shorter than
|
|
completion-prefix-display-length. From a report by
|
|
Christoph Anton Mitterer <calestyo@scientia.net>
|
|
|
|
10/10
|
|
-----
|
|
parse.y
|
|
- parse_dparen: if the last token is FOR, increment word_top and assign
|
|
word_lineno like for other for loops. Fixes bug with LINENO after
|
|
arithmetic for commands reported by
|
|
Tom Coleman <thomas.james.coleman@gmail.com>
|
|
|
|
10/11
|
|
-----
|
|
execute_cmd.c
|
|
- shell_execve: if execve fails with ENOENT, but executable_file()
|
|
succeeds, display a slightly more descriptive error message. Prompted
|
|
by a report from Andrea Monaco <andrea.monaco@autistici.org>
|
|
|
|
stringlib.c
|
|
- strcreplace: allow backslash to escape a backslash, since we allow it
|
|
to escape a `&'
|
|
|
|
10/14
|
|
-----
|
|
pcomplib.c
|
|
- COMPLETE_HASH_BUCKETS: double to 512
|
|
|
|
stringlib.c
|
|
- strcreplace: the last argument is now a flags argument. 1 has its
|
|
previous meaning (glob); 2 means to allow backslash to escape a
|
|
backslash (as added on 10/11)
|
|
|
|
subst.c
|
|
- pat_subst: call strcreplace with 2 as the flags value
|
|
|
|
10/15
|
|
-----
|
|
doc/bashref.texi
|
|
- updates to Installation section
|
|
|
|
doc/{mkposix,mkinst,mkrbash},doc/Makefile.in
|
|
- changes to allow scripts to be run outside the source directory
|
|
|
|
10/18
|
|
-----
|
|
subst.c
|
|
- patsub_replacement: controls whether pattern substitution expands `&'
|
|
in the replacement string. Initialized to 1 by default
|
|
|
|
10/19
|
|
-----
|
|
doc/{bash.1,bashref.texi}
|
|
- document bash's WCE SIGINT behavior when job control is not enabled
|
|
and the shell receives a SIGINT while waiting for the foreground
|
|
command to complete. Added at Red Hat's request. A complete
|
|
discussion is at https://www.cons.org/cracauer/sigint.html
|
|
|
|
10/25
|
|
-----
|
|
builtins/shopt.def
|
|
- patsub_replacement: new shell option, exposes patsub_replacement
|
|
variable controlling whether pattern substitution expands `&' in
|
|
the replacement string. Still enabled by default.
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- patsub_replacement: document new shopt option
|
|
|
|
10/26
|
|
-----
|
|
lib/readline/display.c
|
|
- expand_prompt: group runs of invisible characters at the right edge
|
|
of the screen with the previous physical characters when setting
|
|
local_prompt_newlines, since that's how update_line() expects to
|
|
get it. Fix from sparrowhawk996@gmail.com.
|
|
|
|
lib/readline/macro.c
|
|
- rl_end_kbd_macro: make sure current_macro_index is > 0 after
|
|
subtracting the key sequence length, clamp it to 0 before writing
|
|
the ending NULL. From a fuzzing report by
|
|
Tillmann Osswald <tosswald@ernw.de>
|
|
|
|
lib/readline/isearch.c
|
|
- _rl_isearch_dispatch: in the bracketed paste case, don't assume the
|
|
pasted text is null-terminated, so use memcpy instead of strcpy for
|
|
the length of the pasted text, then make sure the search string is
|
|
null-terminated. From a fuzzing report by
|
|
Tillmann Osswald <tosswald@ernw.de>
|
|
|
|
lib/readline/text.c
|
|
- rl_transpose_words: make sure to preserve the value of rl_end from
|
|
the beginning to the end of the function. From a fuzzing report by
|
|
Tillmann Osswald <tosswald@ernw.de>
|
|
|
|
lib/readline/vi_mode.c
|
|
- rl_vi_delete_to,rl_vi_change_to,rl_vi_yank_to: if we are redoing a
|
|
command (_rl_vi_redoing == 1), save the old _rl_vimvcxt, allocate a
|
|
new one, and restore the old one before returning. Prevents some
|
|
pointer aliasing problems. From a fuzzing report by
|
|
Tillmann Osswald <tosswald@ernw.de>
|
|
|
|
10/29
|
|
-----
|
|
arrayfunc.c
|
|
- tokenize_array_reference: take valid_array_reference and add a third
|
|
argument (char **SUBP), which, if non-NULL, gets the null-terminated
|
|
subscript parsed from the NAME argument. If it's NULL, the caller
|
|
gets the old valid_array_reference behavior. Fix from
|
|
Koichi Murase <myoga.murase@gmail.com>
|
|
- valid_array_reference: just call tokenize_array_reference with a
|
|
NULL third argument
|
|
- unbind_array_element: assume the caller (unset_builtin) passes a
|
|
null-terminated SUB that's already been validated by a call to
|
|
tokenize_array_reference so we don't need to call skipsubscript() or
|
|
check VA_ONEWORD. Fix from Koichi Murase <myoga.murase@gmail.com>
|
|
|
|
arrayfunc.h
|
|
- tokenize_array_reference: extern declaration
|
|
|
|
builtins/set.def
|
|
- unset_builtin: use tokenize_array_reference to figure out T and pass
|
|
that to unbind_array_element. Fix from
|
|
Koichi Murase <myoga.murase@gmail.com>
|
|
- unset_builtin: pass non-null argument to array_variable_part to get
|
|
the length of the subscript (T), then cut off any final `]' before
|
|
passing it to unbind_array_element, since that's what it now
|
|
expects
|
|
|
|
subst.c
|
|
- expand_string_for_rhs,expand_string_for_pat: assign td.word from
|
|
newly-allocated memory in case it gets freed on error during the
|
|
call to call_expand_word_internal(); free it manually when that
|
|
call returns
|
|
|
|
11/1
|
|
----
|
|
findcmd.c
|
|
- search_for_command: if FLAGS includes CMDSRCH_STDPATH, don't look in
|
|
the hash table for the command name. Prompted by a report from
|
|
Roger Morris <roger.morris@gmail.com>
|
|
|
|
aclocal.m4
|
|
- BASH_FUNC_POSIX_SETJMP: add a check by fetching the signal mask
|
|
after the siglongjmp and making sure that SIGINT is not blocked,
|
|
indicating we restored the original signal mask
|
|
|
|
11/2
|
|
----
|
|
subst.c
|
|
- expand_string_assignment: make sure to add W_TILDEEXP to the flags so
|
|
expand_word_internal performs the right tilde expansion on tildes
|
|
following an unquoted colon. Report from Anders Kaseorg
|
|
<andersk@mit.edu>
|
|
|
|
|
|
11/3
|
|
----
|
|
aclocal.m4
|
|
- BASH_FUNC_POSIX_SETJMP: if cross-compiling, default to `present' if
|
|
we've determined we have posix signal functions
|
|
|
|
11/4
|
|
----
|
|
execute_cmd.c
|
|
- SET_LINE_NUMBER: set line_number, but don't set line_number_for_err_trap
|
|
if we're already running the ERR trap
|
|
- GET_LINE_NUMBER: evaluates to line_number_for_err_trap if we're
|
|
running the ERR trap and executing_line_number() otherwise
|
|
- execute_function: use GET_LINE_NUMBER to push the value for the line
|
|
number into the BASH_LINENO array
|
|
- execute_command_internal,execute_arith_command,execute_cond_command:
|
|
use SET_LINE_NUMBER to avoid overwriting line_number_for_err trap
|
|
while executing the ERR trap. Tentative fix for `caller' problem
|
|
reported by Quinn Grier <quinn@quinngrier.com>
|
|
|
|
configure.ac,patchlevel.h
|
|
- set bash version to 5.2-devel, meaning shell_compatibility_level = 52,
|
|
which required updating tests (array.tests, array21.sub,
|
|
quotearray3.sub, new-exp10.sub, history2.sub). The first three are
|
|
because bash-5.2 flushes an indexed array but does not unset the
|
|
variable when given `unset a[@]' or `unset[*]' (that is, it acts
|
|
like `a=()' instead of `unset a'); the other two are because the
|
|
version number changed
|
|
|
|
11/8
|
|
----
|
|
doc/Makefile.in
|
|
- bash.info: use `makeinfo -o' instead of calling infopost.sh to edit
|
|
the filename, since the tags table includes absolute byte offsets to
|
|
nodes. From https://savannah.gnu.org/support/?110557
|
|
|
|
11/15
|
|
-----
|
|
examples/loadables/realpath.c
|
|
- add -a NAME argument to put canonicalized pathnames into an indexed
|
|
array instead of displaying them on stdout. Suggested by
|
|
felix@f-hauri.ch
|
|
|
|
lib/readline/colors.c
|
|
- _rl_custom_readline_prefix: new function, looks in $LS_COLORS for a
|
|
custom extension (*.readline-colored-completion-prefix) and uses that,
|
|
if found, as the default color for the common prefix displayed when
|
|
`colored-completion-prefix' is set. Suggested by
|
|
Christoph Anton Mitterer <calestyo@scientia.net>
|
|
- _rl_print_prefix_color: try the return value from _rl_custom_readline_prefix
|
|
before defaulting to the C_PREFIX (C_SOCK) color. Suggested by
|
|
Christoph Anton Mitterer <calestyo@scientia.net>
|
|
|
|
lib/readline/doc/{readline.3,rluser.texi},doc/bash.1
|
|
- readline-colored-completion-prefix: document new custom suffix for
|
|
readline's colored-completion-prefix color
|
|
|
|
11/16
|
|
-----
|
|
doc/{bash.1,bashref.texi},builtins/set.def
|
|
- set: modify usage synopsis slightly, based on
|
|
https://bugzilla.redhat.com/show_bug.cgi?id=2022324
|
|
|
|
builtins/set.def
|
|
- unset_builtin: add shell compatibility level check <= bash-5.1 to
|
|
force `unset a[@]' to unset array variable `a', like in previous
|
|
versions, instead of unsetting associative array element `@' or
|
|
removing all elements of an indexed array without unsetting the
|
|
variable itself
|
|
|
|
builtins/common.c
|
|
- set_expand_once: now a no-op if the shell compatibility level is
|
|
<= bash-5.1, preserving the previous versions' behavior for [[ -v
|
|
(dependent on assoc_expand_once instead of forcing it)
|
|
|
|
subst.c
|
|
- parameter_brace_expand_rhs: make sure that the final value assigned
|
|
is always returned from ${a:=b}, even when `a' has a variable
|
|
attribute that modifies the value on assignment. Reported back on
|
|
1/20/2021 by oguzismailuysal@gmail.com; bash-5.2 tag removed
|
|
|
|
11/22
|
|
-----
|
|
doc/{bashref.texi,bash.1}
|
|
- unset: change the description of `unset name[@]' (unset name[*])
|
|
to reflect the new behavior (unset associative array subscripts or
|
|
remove all elements from an indexed array) and the difference from
|
|
previous versions
|
|
- set: document -r for restricted shell mode
|
|
- restricted shell: change occurrences of `set +o restricted' to
|
|
`shopt -u restricted_shell'. From a report from
|
|
Jin Xiang <jxiang.sd@gmail.com>
|
|
- read: note that read -t0 may return 0 if a subsequent read will
|
|
return EOF. From a suggestion by Dale R. Worley
|
|
<worley@alum.mit.edu>
|
|
|
|
execute_cmd.c
|
|
- execute_arith_command,eval_arith_for_expr: don't pass EXP_EXPANDED
|
|
to evalexp if shell_compatibility_level > 5.1, assuming that the
|
|
expression has been quoted by Q_ARITH handling
|
|
|
|
test.c
|
|
- test_arithcomp: if we're being called by the conditional command
|
|
code and treating the arguments to the arithmetic operators as
|
|
expressions, don't pass EXP_EXPANDED to evalexp if the shell
|
|
compatibility level is > 5.1, assuming that the expression has been
|
|
quoted by Q_ARITH handling
|
|
|
|
11/29
|
|
-----
|
|
examples/loadables/getconf.[ch]
|
|
- getconf: new implementation of loadable builtin, based on glibc
|
|
getconf
|
|
|
|
examples/loadables/sleep.c
|
|
- parse_gnutimefmt: parse GNU interval format (2m30s), returning
|
|
seconds and microseconds like uconvert
|
|
- sleep: use parse_gnutimefmt if uconvert can't parse the format right
|
|
away and "dhms" appears in the format string. Don't return
|
|
EX_DISKFALLBACK under any circumstances
|
|
|
|
11/30
|
|
-----
|
|
|
|
builtins/wait.def
|
|
- wait_builtin: refer to unset_waitlist only if JOB_CONTROL is enabled.
|
|
Report from Joel Ebel <jbebel@google.com>
|
|
|
|
parse.y,builtins/set.def
|
|
- changes for minimal config restrictions
|
|
|
|
configure.ac,config.h.in
|
|
- --enable-translatable-strings: new configuration option to allow
|
|
$"..." support to be compiled in or out; not included in the minimal
|
|
shell configuration
|
|
|
|
shell.c
|
|
- main: don't include any of the dump-strings options if
|
|
TRANSLATABLE_STRINGS is not defined
|
|
|
|
lib/sh/shquote.c
|
|
- sh_backslash_quote_for_double_quotes: needed for translatable strings
|
|
|
|
parse.y
|
|
- support for translating $"..." strings now conditional on
|
|
TRANSLATABLE_STRINGS
|
|
|
|
locale.c
|
|
- locale_expand: now conditional on TRANSLATABLE_STRINGS
|
|
|
|
subst.c
|
|
- expand_string_dollar_quote: support for $"..." now conditional on
|
|
TRANSLATABLE_STRINGS
|
|
|
|
doc/bashref.texi
|
|
- --enable-translatable-strings: document new configuration option
|
|
|
|
12/2
|
|
----
|
|
subst.c
|
|
- verify_substring_values: now that the default compatibility level is
|
|
52, and the Q_ARITH code is enabled, make the EXP_EXPANDED flag for
|
|
evalexp() dependent on the compatibility level
|
|
- param_expand: arithmetic substitution: make EXP_EXPANDED flag
|
|
for evalexp() dependent on the compatibility level
|
|
- expand_word_internal: don't call expand_array_subscript if the
|
|
shell compatibility level is 51 or below (Q_ARITH)
|
|
|
|
test.c
|
|
- test_unop: if the shell compatibility level is > 51, using [@] with
|
|
an existing associative array will report on a key of `@'
|
|
|
|
arrayfunc.c
|
|
- array_expand_index: if the compatibility level is > 51, Q_ARITH is
|
|
used and we don't pass EXP_EXPANDED to evalexp()
|
|
|
|
COMPAT,doc/bashref.texi
|
|
- shell compatibility mode: document effects of setting the
|
|
compatibility mode to 51
|
|
|
|
12/3
|
|
----
|
|
lib/malloc/malloc.c
|
|
- mremap: only use if MREMAP_MAYMOVE is defined, since we use the Linux
|
|
version of the function signature
|
|
|
|
12/6
|
|
----
|
|
bashhist.c
|
|
- bash_add_history: if we're parsing a here-document (PST_HEREDOC), only
|
|
suppress adding the newline between lines if we're not at the first
|
|
line of the here-document (here_doc_first_line != 0). From a report
|
|
by S0AndS0 <strangerthanbland@gmail.com>
|
|
|
|
12/8
|
|
----
|
|
lib/readline/colors.c
|
|
- _rl_custom_readline_prefix: use STREQN to check for the extension
|
|
string in $LS_COLORS, since it's not necessarily null-terminated.
|
|
From https://savannah.gnu.org/patch/?10158
|
|
|
|
12/10
|
|
-----
|
|
variables.c
|
|
- set_int_value,set_string_value: broke common code for setting int
|
|
and string dynamic variable values out into separate functions;
|
|
changed all callers to use them where appropriate. set_int_value
|
|
takes a flags argument saying whether or not to force the integer
|
|
attribute on
|
|
- assign_random: store the value assigned as the variable value so
|
|
things like RANDOM=42; RANDOM+=7 generate consistent sequences
|
|
like in ksh93
|
|
- assign_seconds: store the value assigned as the variable value so
|
|
things like SECONDS=42 ; SECONDS+=7 generate what's expected
|
|
|
|
doc/Makefile.in
|
|
- changes to allow man pages that include others (.so FN) to be built
|
|
outside the source tree
|
|
|
|
12/13
|
|
-----
|
|
arrayfunc.c
|
|
- assign_array_element_internal: take an additional argument: char **NVALP.
|
|
If non-null, it gets the value eventually assigned to the array
|
|
element
|
|
- assign_array_element: take an additional NVALP argument; pass it to
|
|
assign_array_element_internal
|
|
|
|
arrayfunc.h
|
|
- assign_array_element: new extern function declaration
|
|
|
|
{subst,variables}.c,builtins/{common.c,declare.def}
|
|
- assign_array_element: change callers
|
|
|
|
subst.c
|
|
- parameter_brace_expand_rhs: for the ${param:=value}, use the value
|
|
returned by assign_array_element in NVALP as the return value, since
|
|
it's the value ultimately assigned to the variable after possible
|
|
modification (e.g., arithmetic evaluation). Reported by
|
|
oguzismailuysal@gmail.com after flawed fix applied 11/16
|
|
|
|
12/14
|
|
-----
|
|
arrayfunc.h
|
|
- array_eltstate_t: an object that encapsulates an array element's
|
|
state (type, index, key, value) whether it's an indexed or
|
|
associative array
|
|
|
|
arrayfunc.c
|
|
- {init,flush}_eltstate: new functions to initialize and flush any
|
|
allocated memory from array_eltstate_t objects. No allocation/
|
|
deallocation functions yet; the only use is with a static instance
|
|
- assign_array_element_internal: take an array_eltstate_t * instead of
|
|
a char ** as the final argument, so we can return keys/indices and
|
|
values depending on the type of array; populates it with the
|
|
appropriate values
|
|
- assign_array_element: take array_eltstate_t * as final argument
|
|
instead of a char **; pass it to assign_array_element_internal
|
|
|
|
{subst,variables}.c,builtins/{common.c,declare.def}
|
|
- assign_array_element: change callers to modify final argument
|
|
|
|
12/15
|
|
-----
|
|
arrayfunc.c
|
|
- array_value_internal: now takes an array_eltstate_t * as the final
|
|
argument; there is no more `rtype' argument in favor of the
|
|
`subtype' member; returns the appropriate values in its members
|
|
- array_value: changed to pass array_eltstate_t to array_value_internal,
|
|
saves and fetches its `ind' member into *indp; saves `subtype'
|
|
member into *rtype
|
|
- get_arrary_value: changed to take array_eltstate_t as third argument,
|
|
passes it to array_value_internal
|
|
|
|
{redir,expr}.c
|
|
- get_array_value: changed callers; initializing the array_eltstate_t
|
|
argument as necessary
|
|
|
|
test.c
|
|
- test_builtin: changed to use get_array_value, adding AV_ALLOWALL to
|
|
the flags, since it didn't use any QUOTED argument. Pass
|
|
array_eltstate_t * as final argument and get subtype from it (the
|
|
only thing we're interested in, to deallocate memory)
|
|
|
|
12/16
|
|
-----
|
|
arrayfunc.c
|
|
- array_value: now takes a final argument of array_eltstate_t *, which
|
|
it passes to array_value_internal; no more rtype and indp args.
|
|
Callers are responsible for marshalling values into estatep
|
|
|
|
arrayfunc.h
|
|
- array_value: changed function signature
|
|
|
|
subst.c
|
|
- get_var_and_type,parameter_brace_expand_word: changed calls to
|
|
array_value to use array_eltstate_t argument and initialize it
|
|
appropriately. Copy values back from it to the parameters we need
|
|
to modify
|
|
|
|
variables.c
|
|
- assign_lineno: call set_int_value to store the value, like with
|
|
RANDOM and SECONDS (from 12/10)
|
|
|
|
12/17
|
|
-----
|
|
{eval,execute_cmd}.c
|
|
- when bypassing a parsed command because read_but_dont_execute is
|
|
set, don't modify last_command_exit_value. From a report by
|
|
Robert Elz <kre@munnari.OZ.AU>
|
|
|
|
parse.y
|
|
- parse_comsub: make sure the first call to shell_getc to check whether
|
|
or not it's an arithmetic expansion skips a quoted newline. From a
|
|
report by Robert Elz <kre@munnari.OZ.AU>
|
|
|
|
12/21
|
|
-----
|
|
subst.c
|
|
- parameter_brace_remove_pattern,parameter_brace_patsub,parameter_brace_casemod,
|
|
parameter_brace_transform,parameter_brace_substring: now take an
|
|
array_eltstate_t * argument in place of the arrayind_t argument, pass
|
|
it to get_var_and_type; this generalizes the indexed array behavior
|
|
of expanding array subscripts once to associative arrays via an
|
|
eventual call to array_value_internal with a non-null KEY member
|
|
- get_var_and_type: now takes an array_eltstate_t * argument in place
|
|
of the arrayind_t argument; use it in calls to array_value so we
|
|
can only expand array subscripts once whether they are indexed or
|
|
associative arrays
|
|
- parameter_brace_expand_word: take an array_eltstate_t * argument in
|
|
place of the arrayind_t * argument; pass it to array_value; use a
|
|
static version (which we init and flush) if the argument passed is
|
|
NULL so we can get the right state passed back and forth
|
|
- parameter_brace_expand: pass a pointer to a static array_eltstate_t
|
|
to parameter_brace_expand_word, and use that in the various calls to
|
|
parameter_brace_XXX functions that perform specific expansions in
|
|
place of the old arrayind_t argument; make sure to flush it before
|
|
returning, even on errors
|
|
|
|
12/22
|
|
-----
|
|
{trap,variables}.c
|
|
- internal_warning: calls changed to use translatable strings
|
|
consistently
|
|
|
|
error.[ch]
|
|
- internal_debug: new function, prints a message like internal_warning,
|
|
no-op if DEBUG is not defined
|
|
- INTERNAL_DEBUG: macro that expands to internal_debug when DEBUG is
|
|
defined, and nothing otherwise
|
|
|
|
{jobs,trap}.c
|
|
- changed some internal_warning and internal_inform calls to use
|
|
internal_debug, since they were active only when DEBUG is defined
|
|
|
|
parse.y
|
|
- parse_comsub: add internal_debug call when a command substitution
|
|
ends with unterminated here-documents
|
|
|
|
builtins/common.c
|
|
- number_of_args: unconditionally return posparam_count
|
|
|
|
{jobs,execute_cmd,subst}.c,parse.y,builtins/{command.def,evalstring.c}
|
|
- INTERNAL_DEBUG: use instead of calls to itrace protected by #ifdef
|
|
DEBUG
|
|
|
|
12/26
|
|
-----
|
|
lib/glob/glob.c
|
|
- glob_always_skip_dot_and_dotdot: initialize to 1 (enabled)
|
|
|
|
builtins/shopt.def
|
|
- globskipdots: new shell option, exposes glob_always_skip_dot_and_dotdot
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- globskipdots: document new shell option
|
|
|
|
execute_cmd.c
|
|
- fix_arrayref_words: call valid_array_reference with 0 for third arg
|
|
because the words have not undergone any word expansions yet and
|
|
the quotes are still present. This makes things like
|
|
A=[\[]=set
|
|
unset A[\[]
|
|
work
|
|
|
|
subst.c
|
|
- word_list_split: if a word undergoes word splitting but is not
|
|
changed, preserve any W_ARRAYREF flag into the new word. This makes
|
|
things like
|
|
rkey=']'
|
|
unset A[$rkey]
|
|
work because the unset builtin sees the W_ARRAYREF flag on its
|
|
argument
|
|
|
|
12/29
|
|
-----
|
|
builtins/common.h
|
|
- SET_VFLAGS: take a set of word flags, and set flags for use with
|
|
valid_array_reference (vflags) and assign_array_element/bind_int_variable
|
|
(bindflags) based on those flags and the setting of assoc_expand_once
|
|
(moved from read.def and generalized)
|
|
|
|
arrayfunc.c
|
|
- array_variable_name: now exclusively takes AV_xxx flags; understands
|
|
how to translate AV_NOEXPAND to the right flag for skipsubscript;
|
|
understands AV_ONEWORD and AV_NOEXPAND
|
|
- array_variable_part: just passes the FLAGS arg to array_variable_name
|
|
- assign_array_element: translates ASS_ flags to AV_ flags for
|
|
array_variable_name
|
|
- array_value_internal: now just passes flags straight through to
|
|
array_variable_part (which sends them to array_variable_name)
|
|
|
|
builtins/common.[ch]
|
|
- builtin_bind_var_to_int: now takes a new FLAGS third argument; passes
|
|
it to bind_var_to_int
|
|
|
|
builtins/printf.def
|
|
- printf_builtin: use SET_VFLAGS to set flags for builtin_bind_variable
|
|
(bindflags); makes things like
|
|
declare -A A; key=']' ; printf -v A[$key] "foo"
|
|
work without a subscript error as long as assoc_expand_once is defined
|
|
|
|
builtins/read.def
|
|
- read_builtin: use new common version of SET_VFLAGS instead of
|
|
private version; changed to use new calling sequence; makes things like
|
|
declare -A A; key=']' ; read A[$key] <<<"foo"
|
|
work without a subscript error as long as assoc_expand_once is defined
|
|
|
|
builtins/wait.def
|
|
- wait_builtin: use SET_VFLAGS for variable name with -p option
|
|
- wait_builtin: call builtin_bind_var_to_int with new bindflags third
|
|
argument
|
|
|
|
expr.c
|
|
- expr_streval: just pass TFLAG (AV_xxx flags) straight through to
|
|
array_variable_part
|
|
|
|
variables.c
|
|
- bind_int_variable: translate the assignment flags (ASS_xxx) to
|
|
VA_xxx flags for valid_array_reference calls (ASS_ONEWORD); translate
|
|
assignment flags to AV_xxx flags for array_variable_part
|
|
|
|
12/30
|
|
-----
|
|
subst.c
|
|
- parameter_brace_expand: when expanding an indirect variable, extend
|
|
the special case for array[@] and array[*] (set -u/no positional
|
|
parameters, obeying the baroque quoting rules) to the value of the
|
|
indirection. Report and fix from konsolebox <konsolebox@gmail.com>
|
|
|
|
12/31
|
|
-----
|
|
parse.y
|
|
- compound_list: when parsing a compound_list production, collect any
|
|
pending here-documents after reading a newline, not after reading
|
|
any command terminator. Fixes interactive-only prompting bug
|
|
reported back in 8/2021 by Hyunho Cho <mug896@gmail.com>
|
|
|
|
1/1/2022
|
|
--------
|
|
bashline.c
|
|
- set_filename_quote_chars: break code that modifies
|
|
rl_filename_quote_characters based on whether DIRNAME needs to be
|
|
expanded from bash_directory_completion_hook into its own function
|
|
- bash_check_expchar: break code that checks whether DIRNAME will be
|
|
word expanded from bash_directory_completion_hook into its own
|
|
function
|
|
- bashline_reset,attempt_shell_completion: make sure complete_fullquote
|
|
is set to 1 (as it is by default) in case a completion modifies it
|
|
- bash_quote_filename: if we are completing (but not expanding --
|
|
direxpand is unset) and backslash-quoting a filename with expansion
|
|
characters as determined by bash_check_expchar, make sure
|
|
filename_bstab is set not to include the expansion char (and any
|
|
following char and closer) and set complete_fullquote to 0 so
|
|
sh_backslash_quote uses filename_bstab. Fixes the longstanding issue
|
|
of quoting a `$', for instance, if the rest of the filename contains
|
|
any characters that need quoting in filenames. This assumes that the
|
|
filename is unquoted (*QCP == 0) so the word will be expanded and is
|
|
not part of the filename (if needed, we can use file_exists to check
|
|
whether the expansion characters are actually part of the filename)
|
|
|
|
1/7
|
|
---
|
|
examples/loadables/accept.c
|
|
- new -b bindaddr option to bind to a specific IP address
|
|
- move setsockopt calls before bind() to avoid TIME_WAIT issues. Fixes
|
|
from Dzogovic Vehbo <dzove855@gmail.com>
|
|
|
|
1/10
|
|
----
|
|
configure.ac
|
|
- bumped version to 5.2-alpha.
|
|
|
|
1/16
|
|
----
|
|
|
|
tests/{unicode1,glob2,intl2}.sub, tests/run-intl
|
|
- minor changes to add warnings for missing locales that cause test
|
|
failures
|
|
|
|
1/17
|
|
----
|
|
parse.y
|
|
- history_delimiting_chars: if we have a blank line by the time we
|
|
hit the end of the tests, return a semicolon for the first blank
|
|
line to avoid running lines of a multi-line command together.
|
|
Fixes bug reported by Joakim Lindblad <joakim@cb.uu.se>
|
|
|
|
subst.c
|
|
- expand_string_for_patsub: expand the replacement string for pattern
|
|
substitution assuming that it will eventually be passed to
|
|
strcreplace to replace `&' with the matched portion of the string.
|
|
This calls expand_string_for_pat(), which leaves the string quoted
|
|
and does not perform word splitting, then calls
|
|
quote_string_for_repl to post-process the expanded string.
|
|
- quote_string_for_repl: perform quote removal on passed string while
|
|
replacing CTLESC escaping a `&' or a backslash with a backslash. The
|
|
result must be passed to strcreplace
|
|
- parameter_brace_patsub: call expand_string_for_patsub if
|
|
patsub_replacement is set to quote
|
|
|
|
1/18
|
|
----
|
|
subst.c
|
|
- read_comsub: make istring_index a size_t to avoid overflow with very
|
|
large values of istring_size.
|
|
From https://savannah.gnu.org/support/index.php?110596
|
|
- expand_word_internal: make istring_index a size_t
|
|
|
|
1/20
|
|
----
|
|
buitins/cd.def
|
|
- add a description of `cd -' to the help text. Suggested by
|
|
Rob Landley <rob@landley.net>
|
|
|
|
1/21
|
|
----
|
|
lib/glob/glob.c
|
|
- glob_vector: if we allocate NEXTLINK using malloc, and free it due to
|
|
some allocation failure, reset FIRSTMALLOC to avoid duplicate frees
|
|
later on
|
|
|
|
subst.[ch]
|
|
- sub_append_string: the INDX parameter is now a size_t to avoid
|
|
overflow
|
|
|
|
parse.y
|
|
- decode_prompt_string: RESULT_INDEX is now a size_t to pass to
|
|
sub_append_string
|
|
|
|
jobs.[ch],nojobs.c
|
|
- wait_for_background_pids: now returns the number of jobs/processes
|
|
reaped
|
|
|
|
builtins/wait.def
|
|
- wait_builtin: if -p pid supplied without -n, make sure we do something
|
|
useful if no job/pid arguments are supplied and there are no jobs.
|
|
Reported by Oguz <oguzismailuysal@gmail.com>
|
|
|
|
builtins/read.def
|
|
- read_builtin: if we have a timeout, use SIGALRM instead of select
|
|
when in posix mode, since we use read instead of zread. Fixes bug
|
|
reported by Andreas Schwab <schwab@linux-m68k.org>
|
|
|
|
subst.c
|
|
- expand_string_dollar_quote: handle single-quoted and double-quoted
|
|
strings that might include $' and $" without attempting translation;
|
|
do more error checking for unterminated $' and $" that leaves those
|
|
characters unmodified. This is for use by readline's various line
|
|
expansion functions (shell_expand_line)
|
|
|
|
1/23
|
|
----
|
|
parse.y,make_cmd.c
|
|
- revert change that unconditionally processes $'...' and $"..." in
|
|
here-document bodies; there are only a couple of cases where they
|
|
should be processed in a double-quote environment
|
|
|
|
1/24
|
|
----
|
|
|
|
subst.c
|
|
- extract_dollar_brace_string: if we see another `${' on the rhs of
|
|
the operator, reset the dolbrace_state to DOLBRACE_PARAM while we
|
|
read this new ${...} string
|
|
- extract_heredoc_dolbrace_string: new function, variant of
|
|
extract_dollar_brace_string, to process the WORD in ${PARAM OP WORD}
|
|
while expanding lines of here-document data. It's complicated by the
|
|
requirement to add to the result string as we go along, since we
|
|
need to change the contents of the input string with ansi expansion
|
|
or locale translation.
|
|
- string_extract_single_quoted: take a new third argument: ALLOWESC.
|
|
This allows backslash to escape an embedded single quote, needed by
|
|
extract_heredoc_dolbrace_string to process $'...'; changed callers
|
|
|
|
1/25
|
|
----
|
|
parse.y
|
|
- parse_matched_pair: ansi-expand $'...' in WORD for ${PARAM OP WORD}
|
|
and single-quote the result if dolbrace_state == DOLBRACE_QUOTE
|
|
(posix pattern removal operators) even if extended_quote == 0
|
|
|
|
subst.c
|
|
- extract_heredoc_dolbrace_string: add logic to align with parse.y:
|
|
parse_matched_pair and its $'...' expansion, including handling
|
|
extended_quote
|
|
|
|
1/27
|
|
----
|
|
builtins/evalstring.c
|
|
- should_optimize_fork: broke conditions for optimizing away the fork
|
|
for a simple command out of optimize_fork into new function, call
|
|
from should_suppress_fork and optimize_subshell_command. Call from
|
|
optimize_fork if (subshell_environment & SUBSHELL_PAREN), relying
|
|
on fact that CMD_TRY_OPTIMIZING is only set in a couple of specific
|
|
conditions
|
|
- optimize_fork: call should_suppress_fork only if startup_state == 2;
|
|
it does the extra checks for that specific case
|
|
- optimize_fork: call should_optimize_fork if we're in a (list)
|
|
subshell (subshell_environment & SUBSHELL_PAREN)
|
|
- optimize_subshell_command: set CMD_TRY_OPTIMIZING on the right side
|
|
of a `&&', `||', or `;' list as long as it's a simple command so
|
|
we can check with optimize_fork() when it's time to execute it
|
|
|
|
execute_cmd.c
|
|
- execute_in_subshell: call optimize_subshell_command for (list)
|
|
subshells to either set CMD_NO_FORK for simple commands or set
|
|
CMD_TRY_OPTIMIZING for likely candidates for later optimization
|
|
|
|
builtins/common.h,builtins/evalstring.c
|
|
- optimize_fork: renamed to optimize_connection_fork; changed callers
|
|
|
|
1/31
|
|
----
|
|
include/shmbutil.h
|
|
- COPY_CHAR_I,SCOPY_CHAR_I: add check for locale_utf8locale and
|
|
(c & 0x80) as in other macros
|
|
|
|
lib/sh/shquote.c
|
|
- sh_backslash_quote_for_double_quotes: rewrote to use array indexing
|
|
and COPY_CHAR_I to make it easier to drop in future calls to
|
|
charvis() to make `unsafe' characters visible if FLAGS == 1
|
|
|
|
2/1
|
|
---
|
|
parse.y
|
|
- parse_comsub: if we are currently expanding aliases, temporarily
|
|
turn off alias expansion if we are not in posix mode so we defer
|
|
alias expansion until command_substitute(). Fixes double-expansion
|
|
bug reported by Martijn Dekker <martijn@inlv.org> and aligns with
|
|
https://www.austingroupbugs.net/view.php?id=1342
|
|
- xparse_dolparen: turn off alias expansion entirely while running the
|
|
parser: either we do it in parse_comsub (posix mode) or in
|
|
command_substitute (default mode)
|
|
- parse_string_to_command: ditto
|
|
|
|
subst.c
|
|
- command_substitute: if we are expanding aliases, temporarily turn
|
|
off alias expansion if we are in posix mode, since we already
|
|
performed it in parse_comsub() and are using the command string
|
|
reconstituted from the parse result
|
|
|
|
doc/bashref.texi
|
|
- bash posix mode: add description of alias expansion and command
|
|
substitution parsing and execution
|
|
|
|
2/4
|
|
---
|
|
lib/readline/rltty.c
|
|
- rl_deprep_terminal: set _rl_last_c_pos to 0 after outputting
|
|
BRACK_PASTE_FINI, since the last character in that is \r. Partially
|
|
address issue raised by Markus Schwarzenberg <markus.schwarzenberg@freenet.de>
|
|
in https://lists.gnu.org/archive/html/bug-bash/2022-02/msg00056.html
|
|
|
|
2/5
|
|
---
|
|
doc/{bash.1,bashref.texi}
|
|
- minor typo fixes from Helge Kreutzmann <debian@helgefjell.de>
|
|
|
|
2/7
|
|
---
|
|
{arrayfunc,variables}.c
|
|
- ARRAY_EXPORT: changes to encode array and assoc variables using a
|
|
scheme similar to shell functions so we can export arrays and
|
|
differentiate them from scalar variables and differentiate array
|
|
and assoc variables. Still not enabled by default.
|
|
|
|
variables.c
|
|
- mk_env_string: third argument is now the variable's attributes or 0,
|
|
with all the attributes we can export arrays
|
|
|
|
lib/readline/bind.c
|
|
- active-region-start-color,active-region-end-color: new bindable
|
|
string variables, one to set the active region color (instead of
|
|
standout mode) and one to turn it off (instead of the "se" terminal
|
|
capability). They set _rl_active_region_start_color and
|
|
_rl_active_region_end_color variables via functions
|
|
|
|
lib/readline/display.c
|
|
- putc_face: if setting standout mode, check for both the start color
|
|
and end color variables and output the start color string. If turning
|
|
off standout mode (normal face), output the end color string. Both
|
|
variables must be set
|
|
|
|
lib/readline/{readline.c,rlprivate.h}
|
|
- declarations for _rl_active_region_start_color and
|
|
_rl_active_region_end_color
|
|
|
|
2/8
|
|
---
|
|
bashline.c
|
|
- initialize_readline: add bindable name `vi-edit-and-execute-command'
|
|
|
|
shell.c
|
|
- subshell_exit: make sure to set last_command_exit_value before
|
|
calling the exit trap. Fixes bug reported by Greg Edwards
|
|
<gedwards@ddn.com>
|
|
|
|
2/9
|
|
---
|
|
lib/readline/{terminal.c,rlprivate.h}
|
|
- _rl_region_color_on,_rl_region_color_off: functions to output the
|
|
_rl_active_region_start_color and _rl_active_region_end_color
|
|
- _rl_reset_region_color: function to encapsulate setting the region
|
|
color to an arbitrary string, including doing memory management
|
|
|
|
lib/readline/display.c
|
|
- putc_face: call _rl_region_color_on and _rl_region_color_off instead
|
|
of _rl_standout_on and _rl_standout_off
|
|
|
|
lib/readline/terminal.c
|
|
- _rl_init_terminal_io: initialize _rl_active_region_start_color and
|
|
_rl_active_region_end_color from _rl_term_so and _rl_term_se,
|
|
respectively; reset every time the terminal is changed
|
|
- _rl_init_terminal_io: turn off the active region for a dumb terminal
|
|
|
|
lib/readline/bind.c
|
|
- sv_region_{start,end}_color: call _rl_reset_region_color with the
|
|
appropriate value for WHICH
|
|
|
|
2/10
|
|
----
|
|
lib/readline/doc/{rluser.texi,readline.3},doc/bash.1
|
|
- active-region-start-color,active-region-end-color: documented new
|
|
bindable readline variables
|
|
- enable-active-region: document using active-region-start-color to
|
|
highlight the text in the region
|
|
|
|
2/11
|
|
----
|
|
parse.y
|
|
- read_token,read_token_word: make sure characters read by shell_getc
|
|
are protected by appropriate calls to MBTEST when testing for shell
|
|
metacharacters and operators
|
|
|
|
2/14
|
|
----
|
|
builtins/shopt.def
|
|
- set_compatibility_level: if the current compatibility level is outside
|
|
the range of the compatNN options, just leave it alone when
|
|
unsetting one of the options (which by definition was already
|
|
unset). Fixes issue reported by Mihai Moldovan <ionic@ionic.de>
|
|
|
|
2/16
|
|
----
|
|
lib/readline/search.c
|
|
- rl_history_search_{pos,len,flags}: rename to have a leading `_'
|
|
- _rl_history_search_pos: no longer static so other parts of readline
|
|
can see it
|
|
|
|
lib/readline/rlprivate.h
|
|
- _rl_history_search_pos: extern declaration
|
|
|
|
lib/readline/readline.c
|
|
- readline_internal_teardown: don't run the undo list against the
|
|
current history entry if the non-incremental search functions have
|
|
set _rl_history_search_pos to it, since it doesn't reflect the
|
|
current contents of the line buffer. Fixes issue reported by
|
|
Andreas Schwab <schwab@linux-m68k.org>
|
|
|
|
lib/readline/misc.c
|
|
- _rl_start_using_history: initialize _rl_history_search_pos to
|
|
something invalid so it doesn't match where_history()
|
|
|
|
2/17
|
|
----
|
|
lib/readline/callback.c
|
|
- rl_callback_read_char: make sure _rl_eof_found is set to the value
|
|
of eof before calling the deprep terminal function, so it can do
|
|
different things based on whether the input code read EOF (or the
|
|
user entered the EOF character). From a gdb discussion started by
|
|
Andrew Burgess <aburgess@redhat.com> (still more to do, since this
|
|
is not part of the public API)
|
|
|
|
2/18
|
|
----
|
|
lib/readline/readline.h
|
|
- RL_STATE_EOF: new readline state value; set when readline reads an
|
|
EOF character on an empty line or a read returns an error
|
|
- rl_eof_found: new public variable
|
|
|
|
lib/readline/rprivate.h
|
|
- _rl_eof_found: renamed to rl_eof_found, so not declared here
|
|
|
|
lib/readline/{callback,readline}.c
|
|
- RL_STATE_EOF: set appropriately when readline gets an EOF. Suggested
|
|
by Andrew Burgess <aburgess@redhat.com>
|
|
- RL_STATE_EOF: make sure it's not set when readline starts
|
|
- rl_eof_found: set appropriately when readline gets an EOF
|
|
|
|
lib/readline/{callback,readline,rltty}.c
|
|
- rl_eof_found: new name for _rl_eof_found
|
|
|
|
lib/readline/doc/rltech.texi
|
|
- RL_STATE_EOF: document
|
|
|
|
2/19
|
|
----
|
|
parse.y
|
|
- parse_comsub: turn off parser state flags we don't want to inherit
|
|
into this call to the parser (PST_REGEXP, PST_EXTPAT, PST_CONDCMD,
|
|
PST_CONDEXPR for now). Fixes bug reported by konsolebox
|
|
<konsolebox@gmail.com>
|
|
|
|
2/23
|
|
----
|
|
findcmd.c,builtins/hash.def
|
|
- replace calls to is_directory with file_isdir, which only performs a
|
|
stat and doesn't do the eaccess call to check for an executable file
|
|
|
|
findcmd.c
|
|
- find_in_path_element: takes a new RFLAGSP argument, an int * where
|
|
the status flags for the returned pathname are returned; saves
|
|
additional calls to stat/eaccess
|
|
- search_for_command: get the returned flags from
|
|
find_user_command_in_path so we don't need any additional calls to
|
|
file_status after we find the command in $PATH
|
|
|
|
2/24
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- FUNCTIONS: some small changes to the description of local variables
|
|
and dynamic scoping, with emphasis on how that affects `unset'
|
|
behavior. Inspired by a discussion with
|
|
Christoph Anton Mitterer <calestyo@scientia.net>
|
|
|
|
2/25
|
|
----
|
|
examples/loadables/realpath.c
|
|
- renamed -s option to -q to align with other versions
|
|
- perform array assignment for `-a varname' even if -q option supplied
|
|
- renamed -S option to -s for Linux compatibility
|
|
|
|
2/28
|
|
----
|
|
lib/readline/misc.c
|
|
- _rl_free_saved_history_line: call rl_free_undo_list, saving and
|
|
setting rl_undo_list to the saved history line's data, so the right
|
|
call to _hs_replace_history_data happens and we don't end up with
|
|
a pointer aliasing problem. Fixes core dump reported by
|
|
Andreas Schwab <schwab@linux-m68k.org>, but does not make his
|
|
scenario equivalent to incremental search
|
|
|
|
3/1
|
|
---
|
|
lib/readline/search.c
|
|
- make_history_line_current: save the current line before replacing it
|
|
with the found history entry using rl_maybe_save_line
|
|
- noninc_dosearch: we don't want the saved history line, so free it
|
|
after calling make_history_line_current
|
|
- _rl_history_search_internal: call rl_maybe_replace_line after making
|
|
changes to the line buffer with make_history_line_current so we can
|
|
save the undo list we constructed before we set the history position
|
|
|
|
3/2
|
|
---
|
|
lib/readline/display.c
|
|
- expand_prompt: add missing piece to patch from 10/26/2021: if we are
|
|
recalculating the number of invisible characters on the first line
|
|
of the prompt, we need to update INVFL, even if we already set it
|
|
when we hit the number of physical characters. This ends up being
|
|
assigned to prompt_invis_chars_first_line, and is used in several
|
|
subsequent calculations. Reported by
|
|
Andreas Schwab <schwab@linux-m68k.org>
|
|
|
|
lib/readline/doc/{readline.3,rluser.texi},doc/bash.1
|
|
- enable-bracketed-paste: add some language making it clearer that
|
|
bracketed paste prevents the pasted text from being interpreted as
|
|
editing commands. Suggested by Karl O. Pinc <kop@karlpinc.com>
|
|
|
|
3/4
|
|
---
|
|
make_cmd.c
|
|
- make_here_document: perform quote removal on the here-doc delimiter
|
|
only if it's marked as quoted, which prevents quotes from inside a
|
|
command substitution from being removed (they're supposed to begin a
|
|
new quoting context) when the word itself isn't flagged as quoted
|
|
(which means the body of the here-document gets expanded). You can't
|
|
perform quote removal *and* expand the here-document lines. From an
|
|
austin-group discussion back in early February
|
|
|
|
lib/sh/strvis.c
|
|
- charvis -> sh_charvis; change caller
|
|
- sh_charvis: now take an additional SLEN argument to avoid having to
|
|
compute the string length every time; change callers
|
|
- sh_charvis: add a utf-8 locale-specific check before calling
|
|
COPY_CHAR_I (in practice, doesn't make any real difference)
|
|
|
|
3/10
|
|
----
|
|
arrayfunc.c
|
|
- convert_var_to_array: if we're being asked to create an associative
|
|
array (flags & 2), and we have an existing variable that is not an
|
|
assoc array (and not an existing indexed array), call
|
|
convert_var_to_assoc to make it one
|
|
|
|
3/11
|
|
----
|
|
jobs.c
|
|
- wait_for: don't call get_tty_state() if readline is dispatching
|
|
(RL_STATE_DISPATCHING) with the terminal settings changed
|
|
(RL_STATE_TERMPREPPED), the same way we don't if we are running a
|
|
command for programmable completion. Fixes bug with SIGINT reverting
|
|
to the saved readline terminal settings reported by
|
|
Markus Napierkowski <markus.napierkowski@cyberus-technology.de>
|
|
|
|
parse.y
|
|
- decode_prompt_string: make sure the expansion of \w, \W, and \s
|
|
are all run through sh_strvis before calling
|
|
sh_backslash_quote_for_double_quotes or just through sh_strvis if
|
|
we're not running the prompt string through word expansions.
|
|
Fixes issue reported by Josh Harcome <joshharc@gmail.com> back
|
|
in mid-January
|
|
|
|
3/16
|
|
----
|
|
bashline.c
|
|
- bash_quote_filename: if we have a word to complete that contains
|
|
characters that introduce a word expansion, make sure the passed
|
|
string does *not* exist as a filename before removing those
|
|
characters from the set that must be backslash-quoted. See change
|
|
from 1/1/2022
|
|
|
|
3/18
|
|
----
|
|
lib/readline/search.c
|
|
- make_history_line_current: don't free rl_undo_list or
|
|
_rl_saved_line_for_history; don't unconditionally save the history
|
|
line. This reverts some of the changes to support setting the
|
|
history position in history-search-backward
|
|
- rl_history_search_internal: only free the saved history line if we
|
|
were the ones who created it
|
|
|
|
3/21
|
|
----
|
|
lib/readline/nls.c
|
|
- xmalloc.h: include for systems without setlocale(), so xfree has a
|
|
prototype. Report and fix from András Kucsma <r0maikx02b@gmail.com>
|
|
|
|
lib/readline/search.c
|
|
- _rl_history_search_internal: use previous-history/next-history to
|
|
move to the found history line instead of directly calling
|
|
history_set_pos. This makes the behavior more similar to incremental
|
|
search
|
|
- rl_history_search_internal: make sure to set rl_undo_list to the
|
|
current history undo list around the calls to rl_get_previous_history
|
|
or rl_get_next_history, in order to fool the call to
|
|
maybe_replace_line they make
|
|
|
|
lib/readline/readline.c
|
|
- _rl_executing_func: the currently-executing readline command function
|
|
|
|
lib/readline/rlprivate.h
|
|
- _rl_executing_func: extern declaration
|
|
|
|
lib/readline/search.c
|
|
- _rl_history_search_internal: removed (commented out) code that sets
|
|
the current history entry to the found history entry, too much
|
|
assumes that the current undo list should be applied to the current
|
|
history entry (where_history())
|
|
|
|
3/23
|
|
----
|
|
subst.c
|
|
- parameter_brace_expand_word: if we have double-quoted ${*} or ${@},
|
|
make sure we are setting W_HASQUOTEDNULL in the flags we return to
|
|
the caller if we are returning QUOTED_NULL(word)
|
|
- parameter_brace_expand_word: if we have a double-quoted associative
|
|
array reference using `*' or `@', make sure we are setting
|
|
W_HASQUOTEDNULL in the flags we return to the caller if we are
|
|
returning QUOTED_NULL(word)
|
|
- parameter_brace_expand: if we're using the `[:]+' word expansion
|
|
operator, we need to note a quoted null string and pass the
|
|
W_QUOTEDNULL flag back to the caller
|
|
- expand_word_internal: make sure to return a QUOTED_NULL
|
|
(word[0] == CTLNUL) back to the caller if HAD_QUOTED_NULL is set,
|
|
regardless of whether or not we see a quoted dollar at. Fix for bug
|
|
reported by Andreas Luik <andreas.luik@innovative-navigation.de>
|
|
|
|
arrayfunc.c
|
|
- array_value_internal: fix typo and set estatep->type to ARRAY_INDEXED
|
|
for indexed arrays
|
|
|
|
3/31
|
|
----
|
|
lib/readline/{history.c,histlib.h}
|
|
- _hs_at_end_of_history: convenience function to tell whether or not
|
|
the current history position is at the end of the history list
|
|
|
|
4/1
|
|
---
|
|
lib/readline/search.c
|
|
- make_history_line_current: don't free rl_undo_list if it is equal to
|
|
_rl_saved_line_for_history->data, since we will need to restore it
|
|
later if we got it from a history entry. Fixes issue dating back to
|
|
7/2021 and changes to _rl_free_saved_line_for_history, current issue
|
|
reported by Andreas Schwab <schwab@linux-m68k.org>
|
|
|
|
4/5
|
|
---
|
|
lib/readline/{complete,histfile,histsearch,isearch,terminal}.c
|
|
- xfree: use instead of free
|
|
|
|
4/7
|
|
---
|
|
configure.ac
|
|
- bumped version to bash-5.2-beta
|
|
|
|
[bash-5.2-beta frozen]
|
|
|
|
4/8
|
|
---
|
|
lib/readline/input.c
|
|
- _rl_orig_sigset: need extern declaration if HAVE_SELECT is defined.
|
|
From https://savannah.gnu.org/support/?110634
|
|
|
|
examples/loadables/seq.c
|
|
- PRIdMAX: redefine if PRI_MACROS_BROKEN is defined.
|
|
From https://savannah.gnu.org/support/index.php?110635
|
|
|
|
4/11
|
|
----
|
|
configure.ac
|
|
- BASH_FUNC_STRTOIMAX: replace strtoimax if the system doesn't provide
|
|
a declaration in a standard header file. Uses new m4/strtoimax.m4.
|
|
From https://savannah.gnu.org/support/index.php?110633
|
|
|
|
builtins/printf.def
|
|
- getdouble: new function, parses string into `double' using strtod
|
|
- printf_builtin: check for the `L' length modifier and use long
|
|
doubles for the floating point conversion specifiers. If it's not
|
|
supplied, use `double' when in posix mode (as posix specifies) and
|
|
long double (if it's available, double if not) in default mode.
|
|
From a report from Paul Eggert <eggert@cs.ucla.edu>
|
|
|
|
4/12
|
|
----
|
|
lib/sh/oslib.c
|
|
- bzero: update function signature to modern BSD version
|
|
|
|
4/14
|
|
----
|
|
lib/sh/oslib.c
|
|
- bcopy, gethostname, mkfifo: update function signatures to modern
|
|
versions
|
|
|
|
4/15
|
|
----
|
|
jobs.c,nojobs.c
|
|
- wait_for_single_pid: if the pid or job argument is invalid -- isn't
|
|
a child of this shell -- return 257, which is out of the range of
|
|
valid 8-bit status values
|
|
|
|
execute_cmd.c
|
|
- execute_pipeline: if wait_for_single_pid returns > 256, set it to
|
|
127 (invalid process)
|
|
|
|
jobs.c
|
|
- wait_for_background_pids: if wait_for_single_pid returns > 256, set
|
|
the status we return in PS to 127 (what it was before)
|
|
|
|
builtins/wait.def
|
|
- wait_builtin: if wait_for_single_pid returns > 256, treat it as an
|
|
error and set pstat.pid to NO_PID
|
|
- wait_builtin: if -p supplied, and we get to the end of the argument
|
|
list with PSTAT.PID != NO_PID (which we assume means that the return
|
|
value is set from PSTAT.STATUS), set the variable name to PSTAT.PID.
|
|
From a report by Robert Elz <kre@munnari.OZ.AU>
|
|
- wait_builtin: for compatibility with the netbsd sh, leave the variable
|
|
name specified with `-p' unset if there are no PID arguments.
|
|
From a report by Robert Elz <kre@munnari.OZ.AU>
|
|
|
|
4/17
|
|
----
|
|
parse.y
|
|
- xparse_dolparen: if (flags & SX_NOLONGJMP), don't call
|
|
jump_to_top_level() on errors
|
|
|
|
bashline.c
|
|
- bash_quote_filename: don't call quote_word_break_chars() unless we
|
|
have word break chars initialized. Fixes bug reported by
|
|
Sam James <sam@gentoo.org>
|
|
|
|
4/18
|
|
----
|
|
pcomplete.c
|
|
- gen_globpat_matches: call glob_filename with the GX_GLOBSTAR flag if
|
|
the `globstar' shell option is enabled. From a report by
|
|
Steve <bash@lonetwin.net>
|
|
|
|
lib/malloc/malloc.c
|
|
- internal_free: remove the GLIBC21 code (!)
|
|
- internal_free: make the code that tests against memtop and calls
|
|
lesscore depend on USE_LESSCORE being defined, which it is by
|
|
default
|
|
|
|
lib/malloc/imalloc.h
|
|
- USE_LESSCORE: define
|
|
|
|
parse.y,shell.h
|
|
- token_buffer_size and its corresponding saved value in the shell's
|
|
parser state are now size_t instead of int
|
|
|
|
stringlib.c
|
|
- strsub,strcreplace: use size_t instead of int for local length and
|
|
indexing variables
|
|
|
|
lib/sh/zmapfd.c
|
|
- zmapfd: use size_t instead of int for local length and indexing
|
|
variables
|
|
|
|
lib/sh/zgetline.c
|
|
- zgetline: use size_t instead of int for local length and indexing
|
|
variables
|
|
|
|
4/20
|
|
----
|
|
pcomplete.c
|
|
- init_itemlist_from_varlist: free VLIST after assigning it from
|
|
*SVFUNC and after we get the variable names and values out of it.
|
|
Report from Robert E. Griffith <bobg@junga.com>
|
|
|
|
4/25
|
|
----
|
|
redir.c
|
|
- here_document_to_fd: if the shell compatibility level is bash-5.0 or
|
|
earlier, use tempfiles for all here-documents and here-strings. From
|
|
a bug-bash discussion started by Sam Liddicott <sam@liddicott.com>
|
|
|
|
4/26
|
|
----
|
|
parse.y
|
|
- parse_comsub: non-interactive shells exit on a syntax error while
|
|
parsing the command substitution
|
|
- parse_comsub: unset additional PARSER_STATE flags before calling
|
|
yyparse(). Inspired by https://bugs.gentoo.org/837203; unsetting
|
|
PST_COMPASSIGN is the fix for that bug
|
|
- parse_string_to_word_list: use save_parser_state/restore_parser_state
|
|
instead of saving pieces of the shell state in individual variables
|
|
- parse_compound_assignment: use save_parser_state/restore_parser_state
|
|
instead of saving pieces of the shell state in individual variables
|
|
- parse_compound_assignment: unset additional PARSER_STATE flags before
|
|
calling read_token(); set esacs_needed_count and expecting_in_token
|
|
to 0 like in parse_comsub() since read_token can use them
|
|
|
|
4/27
|
|
----
|
|
lib/sh/strvis.c
|
|
- sh_charvis: changes to handle being compiled without multibyte support
|
|
|
|
4/29
|
|
----
|
|
lib/readline/callback.c
|
|
- rl_callback_read_char: don't set rl_eof_found unless eof is > 0,
|
|
since it can be -3 if we need to read more input in a multi-key
|
|
sequence. Report from Andrew Burgess <aburgess@redhat.com>
|
|
|
|
examples/loadables/Makefile.sample.in
|
|
- new file, containing the rules to build the example shared object
|
|
- includes Makefile.inc from wherever it's installed. Suggested by
|
|
Robert E. Griffith <bobg@junga.com>
|
|
|
|
examples/loadables/Makefile.inc.in
|
|
- remove rules that create the example shared object
|
|
|
|
4/30
|
|
----
|
|
builtins/evalstring.c
|
|
- parse_and_execute: check for terminating signals before returning,
|
|
after any longjmp, to improve responsiveness and fix the -c code
|
|
path before running any exit trap. Report from
|
|
Emanuele Torre <torreemanuele6@gmail.com>
|
|
|
|
5/17
|
|
----
|
|
builtins/suspend.def
|
|
- suspend_builtin: the -f option now forces a suspend even if job
|
|
control is not enabled. Inspired by a discussion with
|
|
Robert Elz <kre@munnari.OZ.AU>
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- suspend: updated description to include expanded -f behavior
|
|
|
|
5/25
|
|
----
|
|
builtins/mkbuiltins.c
|
|
- -includefile: new argument, specifies extern filename to insert
|
|
into the #include statement in the structfile (builtins.c) and
|
|
the filename in the comment in the extern file (builtext.h).
|
|
From Alexander Kanavin <alex.kanavin@gmail.com> via
|
|
https://savannah.gnu.org/patch/?10210
|
|
|
|
builtins/Makefile.in
|
|
- builtins.c: change call to mkbuiltins to add -includefile option
|
|
- builtins.c: change recipe to run all the commands in the same shell
|
|
invocation
|
|
- builtins.c: change recipe to specify new filenames in the call to
|
|
mkbuiltins and move them onto builtins.c/builtext.h if the new ones
|
|
are different; make the new filenames use the current make recipe
|
|
shell pid in the filename ($$RECPID).
|
|
Inspired by Alexander Kanavin <alex.kanavin@gmail.com> via
|
|
https://savannah.gnu.org/patch/?10210
|
|
|
|
6/2
|
|
---
|
|
builtins/common.c
|
|
- builtin_find_indexed_array: new function, factored common code out
|
|
of mapfile and read builtins to find an in-scope indexed array or
|
|
create one
|
|
|
|
builtins/common.h
|
|
- builtin_find_indexed_array: extern declaration
|
|
|
|
builtins/{mapfile,read}.def
|
|
- change callers to use builtin_find_indexed_array
|
|
|
|
variables.c
|
|
- unbind_global_variable, unbind_global_variable_noref: new functions
|
|
that remove variables from the global_variables table
|
|
|
|
lib/sh/shmatch.c
|
|
- sh_regmatch: use unbind_global_variable_noref to make sure we act on
|
|
the copy of BASH_REMATCH in the global scope all the time, ignoring
|
|
any local variables that might exist. Tentative fix for memory leak
|
|
report from Emanuele Torre <torreemanuele6@gmail.com>
|
|
|
|
doc/{bash.1,bashref.texi}
|
|
- BASH_REMATCH: add caveat about making it a local variable
|
|
|
|
6/6
|
|
---
|
|
print_cmd.c
|
|
- print_redirection: if the redirectee for r_duplicating_output_word
|
|
(r_duplicating_input_word) is 1 (0), don't print it; only print a
|
|
non-default file descriptor number
|
|
- print_redirection_list: remove the code that tries to temporarily
|
|
translate a >&word redirection to >&word now that we won't print a
|
|
non-default file descriptor number. Fixes issue with `declare -f' and
|
|
function export reported by Namikaze Minato <lloydsensei@gmail.com>
|
|
|
|
6/13
|
|
----
|
|
configure.ac
|
|
- bumped version to bash-5.2-rc1
|
|
|
|
[bash-5.2-rc1 released]
|
|
|
|
6/15
|
|
----
|
|
parse.y
|
|
- parse_string_to_word_list: save the parser state before any state-
|
|
changing functions like bash_history_disable(). Reported by
|
|
Clark Wang <dearvoid@gmail.com>
|
|
|
|
6/16
|
|
----
|
|
doc/bash.1
|
|
- play tricks with the value of the zZ number register to refer to
|
|
`bash(1)' instead of `above' or `below' when creating the builtins
|
|
man page
|
|
|
|
6/17
|
|
----
|
|
doc/{bash.1,bashref.texi}
|
|
- wait: note that wait will return > 128 if interrupted by a signal.
|
|
Reported by AA <aathan_github@memeplex.com>
|
|
|
|
execute_cmd.c
|
|
- {execute_cond_node,execute_arith_command,eval_arith_for_expr}: make
|
|
sure to reset this_command_name after running any DEBUG trap so the
|
|
DEBUG trap doesn't overwrite it.
|
|
Reported by Emanuele Torre <torreemanuele6@gmail.com>.
|
|
- execute_select_command: set this_command_name to NULL after running
|
|
any DEBUG trap like execute_for_command does
|
|
|
|
6/23
|
|
----
|
|
test.c
|
|
- three_arguments: when given [ ! ! arg ], make sure to advance POS
|
|
after calling two_arguments to avoid a `too many arguments' error.
|
|
Report from Steffen Nurpmeso <steffen@sdaoden.eu>
|
|
|
|
6/27
|
|
----
|
|
subst.c
|
|
- expand_word_internal: when expanding backquoted command substitution,
|
|
call string_extract with the SX_REQMATCH flag (closing backquote
|
|
required) only if the word flags don't contain W_COMPLETE,
|
|
indicating that we're doing this for completion, probably to
|
|
determine whether or not to append something to the word. Fixes bug
|
|
reported by Emanuele Torre <torreemanuele6@gmail.com>.
|
|
|
|
7/5
|
|
---
|
|
execute_cmd.c
|
|
- execute_connection: treat a connector of '\n' the same as ';'
|
|
|
|
print_cmd.c
|
|
- print_comsub: new function, sets flag noting we are printing a
|
|
command substitution and calls make_command_string
|
|
- make_command_string_internal: add '\n' to the ';' case; print command
|
|
list with newline connector appropriately
|
|
|
|
parse.y
|
|
- parse_comsub: call print_comsub instead of make_command_string
|
|
- list1 production (part of compound_list): if a list is separated by
|
|
newlines, and the parser is parsing a command substitution, make
|
|
the connection command with a '\n' connector. Makes the text
|
|
output of parse_comsub closer to the original source text. From a
|
|
report from Martijn Dekker <martijn@inlv.org>
|
|
|
|
7/6
|
|
---
|
|
doc/bash.1,lib/readline/doc/rluser.texi
|
|
- complete: add note about arguments passed to command specified by
|
|
`complete -C'; suggested by Mark Chandler <mcp@synq.so>
|
|
|
|
builtins/setattr.def
|
|
- show_local_var_attributes: special-case `local -', since there is
|
|
no `declare -' equivalent.
|
|
Reported by Emanuele Torre <torreemanuele6@gmail.com>.
|
|
- show_all_var_attributes: use `local -' when printing a variable named
|
|
`-' at the current non-zero variable context
|
|
|
|
parse.y
|
|
- shell_getc: if we are at the end of an alias, returning a space,
|
|
make sure we mark the previous character as single-byte by modifying
|
|
shell_input_line_property so the space we return is properly
|
|
recognized. This would fail before if the last character of the
|
|
alias was a multi-byte character. Reported by
|
|
Vangelis Natsios <vnatsios@gmail.com>
|
|
|
|
7/12
|
|
----
|
|
lib/readline/isearch.c
|
|
- rl_display_search: don't call rl_redisplay_function before returning;
|
|
rl_message already calls it. Reported by
|
|
Frédéric Moulins <frederic@moulins.org>
|
|
|
|
configure.ac
|
|
- bumped version to bash-5.2-rc2
|
|
|
|
7/18
|
|
----
|
|
jobs.c
|
|
- set_job_control: don't bother calling tcgetpgrp if shell_tty < 0,
|
|
since it will just fail
|
|
|
|
variables.c
|
|
- reset_local_contexts: new function, delete all context tables
|
|
associated with shell functions and set variable_context to 0.
|
|
Called when we want to stop executing in a shell function without
|
|
going through the pop_context chain with its side effects
|
|
|
|
variables.h
|
|
- reset_local_contexts: extern declaration
|
|
|
|
builtins/evalstring.c
|
|
- parse_and_execute: call reset_local_contexts instead of setting
|
|
variable_context to 0
|
|
|
|
eval.c
|
|
- reader_loop: call reset_local_contexts in cases where the shell has
|
|
longjmped for a fatal error and errexit is enabled (ERREXIT), but
|
|
not for other cases, and especially not for the exit builtin,
|
|
instead of just setting variable_context to 0. Fixes issue originally
|
|
reported by Robert Stoll <robert.stoll@tegonal.com>
|
|
|
|
subst.c
|
|
- pat_subst: implement sed-like behavior when presented with a null
|
|
pattern that's anchored at the start or end of the string, or when
|
|
presented with a null string: process the replacement string for `&'
|
|
and `\&' and substitute in the result as before. Patch from
|
|
Koichi Murase <myoga.murase@gmail.com>
|
|
|
|
7/20
|
|
----
|
|
|
|
[bash-5.2-rc2 frozen]
|
|
|
|
7/27
|
|
----
|
|
parse.y
|
|
- reset_parser: set need_here_doc, esacs_needed_count, expecting_in_token
|
|
all to 0, since jumping back to a top-level parse needs that
|
|
- parse_comsub: make sure to reset expand_aliases and shell_eof_token
|
|
if we're not going to exit immediately out of this function
|
|
|
|
7/28
|
|
----
|
|
parse.y
|
|
- parse_comsub: if the compatibility level is <= 51, set extglob while
|
|
parsing the command substitution, so bad pattern errors can still be
|
|
caught but valid patterns are let through and can be evaluated at
|
|
runtime, when extglob may have been set. If it isn't set, it will
|
|
still be a parser error when the command substitution is executed.
|
|
Fixes report from Sam James <sam@gentoo.org> about gentoo scripts.
|
|
- reset_parser: set extended_glob from global_extglob if the parser
|
|
state includes PST_CMDSUBST
|
|
- xparse_dolparen: set global_extglob but don't modify extended_glob,
|
|
so parse errors can be caught before forking a child for command
|
|
substitution, as part of word expansion, but after extglob may have
|
|
been set by command execution (e.g., in a shell function)
|
|
|
|
8/5
|
|
---
|
|
[bump version to bash-5.2-rc3]
|
|
|
|
8/6
|
|
---
|
|
trap.c
|
|
- run_pending_traps: move code from evalstring() so we call
|
|
parse_and_execute() directly and handle any `return' invocations so
|
|
we can restore the value of running_trap. Otherwise, if we longjmp
|
|
past this function, we will think we're running a trap after we
|
|
finish. Prompted by post from Koichi Murase <myoga.murase@gmail.com>
|
|
|
|
8/9
|
|
---
|
|
|
|
lib/readline/nls.c
|
|
- _rl_current_locale: private variable, stores the value of the
|
|
LC_CTYPE locale category, as determined by _rl_init_locale; set
|
|
to allocated memory in _rl_init_locale()
|
|
- _rl_set_localevars: new function, code from _rl_init_eightbit that
|
|
checks the current locale (passed as an argument) and sets the
|
|
various locale-aware variables based on it. It accepts a second
|
|
argument: FORCE. If non-zero, it means to restore the default "C"
|
|
locale values if the locale is "C" or "POSIX", now that this
|
|
function can be called multiple times
|
|
- _rl_init_eightbit: now just calls _rl_init_locale and
|
|
_rl_set_localevars
|
|
- _rl_reset_locale: new function, checks whether our the locale has
|
|
changed since we last called _rl_init_locale to set our internal
|
|
idea of its value. If it has changed, call _rl_set_localevars with
|
|
the new locale and a FORCE argument of 1 to change the
|
|
locale-dependent variables.
|
|
|
|
lib/readline/rlprivate.h
|
|
- _rl_reset_locale: extern declaration
|
|
|
|
lib/readline/readline.c
|
|
- rl_initialize: call _rl_reset_locale instead of _rl_init_locale so
|
|
the internal readline variables get set when we move from a non-
|
|
multibyte locale ("C") to a multibyte one ("en_US.UTF-8"). Report
|
|
from Alan Coopersmith <alan.coopersmith@oracle.com>
|
|
|
|
8/16
|
|
----
|
|
lib/sh/setlinebuf.c
|
|
- sh_setlinebuf: allocate buffers for line-buffering stdout and stderr
|
|
only once, the first time it is requested. Only allocate memory if
|
|
we're using setvbuf (we usually are). Double the buffer size to 2016
|
|
if we're using the bash malloc. Otherwise, let stdio handle it.
|
|
|
|
8/17
|
|
----
|
|
builtins/exec.def
|
|
- exec_builtin: make sure to initialize orig_job_control in case the
|
|
command is not found by search_for_command. Report and fix from
|
|
Xiami <i@f2light.com>
|
|
|
|
[bash-5.2-rc3 frozen]
|
|
|
|
8/27
|
|
----
|
|
parse.y
|
|
- parse_comsub: restore extended_glob to a local copy (local_extglob)
|
|
only if we changed it; a safer way to do it. Fixes extglob change
|
|
issue reported by Kerin Millar <kfm@plushkava.net>
|
|
- cond_term: restore extended_glob to a local copy; safer than using
|
|
global_extglob, which we will reserve for error recovery
|
|
|
|
8/30
|
|
----
|
|
parse.y
|
|
- parse_comsub: don't clear the pushed string list; we might need it to
|
|
consume additional input to satisfy this command substitution. When
|
|
we restore the parser state, don't restore the pushed string list in
|
|
case we used it. From
|
|
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1018727
|
|
- parse_comsub: don't modify extended_glob if parser_state includes
|
|
PST_EXTPAT, in which case we've already set extended_glob and
|
|
global_extglob appropriately. Only matters in compatibility mode.
|
|
|
|
8/31
|
|
----
|
|
subst.c
|
|
- parameter_brace_transform: make sure we return an error if *xform
|
|
is '\0'. Report from Ivan Kapranov <koltiradw@yandex.ru>
|
|
|
|
9/7
|
|
---
|
|
[bump version to bash-5.2-rc4]
|
|
|
|
9/8
|
|
---
|
|
[bash-5.2-rc4 frozen]
|
|
|
|
9/20
|
|
----
|
|
lib/readline/history.c
|
|
- replace_history_entry: check for a NULL timestamp before trying to
|
|
copy it. Report from nov.ondrej@gmail.com
|
|
|
|
9/23
|
|
----
|
|
[bash-5.2 frozen]
|