From 37b22abee700eb1b0c5b6926ab32630a429c1183 Mon Sep 17 00:00:00 2001 From: Chet Ramey Date: Tue, 17 Nov 2020 14:18:49 -0500 Subject: Bash-5.1-rc3 release --- CHANGES | 23 +++++++++++++++++++++-- CWRU/changelog | 16 ++++++++++++++++ MANIFEST | 1 + NEWS | 3 ++- array.h | 2 +- config-top.h | 6 ++++-- configure | 20 ++++++++++---------- configure.ac | 2 +- lib/readline/isearch.c | 1 + subst.c | 6 +++--- test.c | 7 +++++-- tests/assoc.right | 1 + tests/assoc9.sub | 7 +++++++ tests/casemod.right | 2 -- tests/casemod.tests | 4 ++-- tests/glob.right | 4 +++- tests/glob.tests | 1 + tests/glob9.sub | 13 +++++++++++++ tests/history5.sub | 6 ++++-- 19 files changed, 96 insertions(+), 29 deletions(-) create mode 100644 tests/glob9.sub diff --git a/CHANGES b/CHANGES index ef80e17e..7a47c7c5 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,23 @@ +This document details the changes between this version, bash-5.1-rc3, and +the previous version, bash-5.1-rc2. + +1. Changes to Bash + +a. The `assoc_expand_once' option now affects the evaluation of the -v primary + to test and the [[ compound command. + +2. Changes to Readline + +a. Fixed a bug that could cause point to be set beyond the end of the line + buffer when aborting an incremental search. + +3. New Features in Bash + +4. New Features in Readline + +------------------------------------------------------------------------------ This document details the changes between this version, bash-5.1-rc2, and -the previous version, bash-5.1-beta. +the previous version, bash-5.1-rc1. 1. Changes to Bash @@ -599,7 +617,8 @@ e. rl-clear-display: new bindable command that clears the screen and, if f. New active mark and face feature: when enabled, it will highlight the text inserted by a bracketed paste (the `active region') and the text found by - incremental and non-incremental history searches. + incremental and non-incremental history searches. This is tied to bracketed + paste and can be disabled by turning off bracketed paste. g. Readline sets the mark in several additional commands. diff --git a/CWRU/changelog b/CWRU/changelog index edb74c8f..ee5d1627 100644 --- a/CWRU/changelog +++ b/CWRU/changelog @@ -9153,3 +9153,19 @@ lib/readline/isearch.c Report from Detlef Vollmann [bash-5.1-rc2 frozen] + + 11/10 + ----- +lib/readline/isearch.c + - _rl_isearch_dispatch: if we are aborting the search, make sure to + call _rl_fix_point and to make sure the point and mark are less + than the new rl_end, in case they got out of sync. Report and fix + from Tillmann Osswald + +test.c + - unary_test: assume the argument has already been expanded (the code + paths for [[ and [ expand it) and add AV_NOEXPAND to the flags passed + to array_value if assoc_expand_once is enabled. Prompted by a report + from Greg Wooledge + +[bash-5.1-rc3 frozen] diff --git a/MANIFEST b/MANIFEST index bb1c0ac9..54f327cf 100644 --- a/MANIFEST +++ b/MANIFEST @@ -1118,6 +1118,7 @@ tests/glob5.sub f tests/glob6.sub f tests/glob7.sub f tests/glob8.sub f +tests/glob9.sub f tests/glob.right f tests/globstar.tests f tests/globstar.right f diff --git a/NEWS b/NEWS index f59dfa21..a6170be8 100644 --- a/NEWS +++ b/NEWS @@ -167,7 +167,8 @@ e. rl-clear-display: new bindable command that clears the screen and, if f. New active mark and face feature: when enabled, it will highlight the text inserted by a bracketed paste (the `active region') and the text found by - incremental and non-incremental history searches. + incremental and non-incremental history searches. This is tied to bracketed + paste and can be disabled by turning off bracketed paste. g. Readline sets the mark in several additional commands. diff --git a/array.h b/array.h index fe218470..189d646f 100644 --- a/array.h +++ b/array.h @@ -33,8 +33,8 @@ typedef struct array { enum atype type; arrayind_t max_index; int num_elements; - struct array_element *lastref; struct array_element *head; + struct array_element *lastref; } ARRAY; typedef struct array_element { diff --git a/config-top.h b/config-top.h index a96b5587..735f75e3 100644 --- a/config-top.h +++ b/config-top.h @@ -106,9 +106,11 @@ which can be fooled under certain not-uncommon circumstances. */ /* #define SSH_SOURCE_BASHRC */ -/* Define if you want the case-capitalizing operators (~[~]) and the +/* Define if you want the case-toggling operators (~[~]) and the `capcase' variable attribute (declare -c). */ -#define CASEMOD_CAPCASE +/* TAG: bash-5.2 disable */ +#define CASEMOD_TOGGLECASE +#define CASEMOD_CAPCASE /* This is used as the name of a shell function to call when a command name is not found. If you want to name it something other than the diff --git a/configure b/configure index ee6973a3..13a19874 100755 --- a/configure +++ b/configure @@ -1,7 +1,7 @@ #! /bin/sh # From configure.ac for Bash 5.1, version 5.022. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for bash 5.1-rc2. +# Generated by GNU Autoconf 2.69 for bash 5.1-rc3. # # Report bugs to . # @@ -581,8 +581,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='bash' PACKAGE_TARNAME='bash' -PACKAGE_VERSION='5.1-rc2' -PACKAGE_STRING='bash 5.1-rc2' +PACKAGE_VERSION='5.1-rc3' +PACKAGE_STRING='bash 5.1-rc3' PACKAGE_BUGREPORT='bug-bash@gnu.org' PACKAGE_URL='' @@ -1427,7 +1427,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures bash 5.1-rc2 to adapt to many kinds of systems. +\`configure' configures bash 5.1-rc3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1492,7 +1492,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of bash 5.1-rc2:";; + short | recursive ) echo "Configuration of bash 5.1-rc3:";; esac cat <<\_ACEOF @@ -1693,7 +1693,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -bash configure 5.1-rc2 +bash configure 5.1-rc3 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2402,7 +2402,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by bash $as_me 5.1-rc2, which was +It was created by bash $as_me 5.1-rc3, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2800,7 +2800,7 @@ ac_config_headers="$ac_config_headers config.h" BASHVERS=5.1 -RELSTATUS=rc2 +RELSTATUS=rc3 case "$RELSTATUS" in alp*|bet*|dev*|rc*|releng*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; @@ -21057,7 +21057,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by bash $as_me 5.1-rc2, which was +This file was extended by bash $as_me 5.1-rc3, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -21123,7 +21123,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -bash config.status 5.1-rc2 +bash config.status 5.1-rc3 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 5b2fe4d7..dbdc5b85 100644 --- a/configure.ac +++ b/configure.ac @@ -24,7 +24,7 @@ dnl Process this file with autoconf to produce a configure script. AC_REVISION([for Bash 5.1, version 5.022])dnl define(bashvers, 5.1) -define(relstatus, rc2) +define(relstatus, rc3) AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org]) diff --git a/lib/readline/isearch.c b/lib/readline/isearch.c index ef65e5f5..080ba3cb 100644 --- a/lib/readline/isearch.c +++ b/lib/readline/isearch.c @@ -619,6 +619,7 @@ opcode_dispatch: rl_restore_prompt(); rl_clear_message (); + _rl_fix_point (1); /* in case save_line and save_point are out of sync */ return -1; case -5: /* C-W */ diff --git a/subst.c b/subst.c index 915fd50b..9ccbf336 100644 --- a/subst.c +++ b/subst.c @@ -8820,12 +8820,12 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta else #if defined (CASEMOD_EXPANSIONS) /* To enable case-toggling expansions using the `~' operator character - define CASEMOD_CAPCASE in config-top.h */ -# if defined (CASEMOD_CAPCASE) + define CASEMOD_TOGGLECASE in config-top.h */ +# if defined (CASEMOD_TOGGLECASE) name = string_extract (string, &t_index, "#%^,~:-=?+/@}", SX_VARNAME); # else name = string_extract (string, &t_index, "#%^,:-=?+/@}", SX_VARNAME); -# endif /* CASEMOD_CAPCASE */ +# endif /* CASEMOD_TOGGLECASE */ #else name = string_extract (string, &t_index, "#%:-=?+/@}", SX_VARNAME); #endif /* CASEMOD_EXPANSIONS */ diff --git a/test.c b/test.c index ed1d3ffc..e2fd78b3 100644 --- a/test.c +++ b/test.c @@ -627,8 +627,11 @@ unary_test (op, arg) if (valid_array_reference (arg, 0)) { char *t; - int rtype, ret; - t = array_value (arg, 0, 0, &rtype, (arrayind_t *)0); + int rtype, ret, flags; + + /* Let's assume that this has already been expanded once. */ + flags = assoc_expand_once ? AV_NOEXPAND : 0; + t = array_value (arg, 0, flags, &rtype, (arrayind_t *)0); ret = t ? TRUE : FALSE; if (rtype > 0) /* subscript is * or @ */ free (t); diff --git a/tests/assoc.right b/tests/assoc.right index d176bcd4..e9aa9172 100644 --- a/tests/assoc.right +++ b/tests/assoc.right @@ -222,6 +222,7 @@ declare -A a=(["80's"]="Depeche Mode" ) 1+5 declare -A a=(["\$(date >&2)"]="5" ) declare -A myarray=([foo]="bleh" ["foo[bar"]="bleh" ) +foo ./assoc10.sub: line 14: declare: a: cannot convert indexed to associative array f: declare -a a ./assoc10.sub: line 17: declare: a: cannot convert associative to indexed array diff --git a/tests/assoc9.sub b/tests/assoc9.sub index 8f2a23be..b8867187 100644 --- a/tests/assoc9.sub +++ b/tests/assoc9.sub @@ -121,3 +121,10 @@ declare myarray["foo[bar"]=bleh myarray["foo"]=bleh declare -p myarray + +key='$(date >&2)' +declare -A aa +aa[$key]=foo +echo "${aa[$key]}" + +[[ -v aa[$key] ]] || echo bad assoc expansion diff --git a/tests/casemod.right b/tests/casemod.right index a5840171..df124754 100644 --- a/tests/casemod.right +++ b/tests/casemod.right @@ -43,7 +43,5 @@ Be Conservative in what you send and Liberal in what you accept BE CONSERVATIVE IN WHAT YOU SEND AND LIBERAL IN WHAT YOU ACCEPT Be conservative in what you send and liberal in what you accept BE CONSERVATIVE IN WHAT YOU SEND AND LIBERAL IN WHAT YOU ACCEPT -AcknOwlEdgEmEnt acknOwlEdgEmEnt -oeNoPHiLe OEnOphIlE abcdexyz ABCDEXYZ diff --git a/tests/casemod.tests b/tests/casemod.tests index 20cb1cf5..56ab20d9 100644 --- a/tests/casemod.tests +++ b/tests/casemod.tests @@ -114,8 +114,8 @@ echo ${TEXT2^^} M1=${S1^^[aeiou]} M2=${U2,,[AEIOU]} -echo ${M1} ${M1~} -echo ${M2} ${M2~~} +#echo ${M1} ${M1~} +#echo ${M2} ${M2~~} declare -l lower=aBcDe lower+=XyZ diff --git a/tests/glob.right b/tests/glob.right index 8ba1acfe..94966905 100644 --- a/tests/glob.right +++ b/tests/glob.right @@ -119,6 +119,8 @@ searchable/. 6: a\*b a\*b* +é/* +é/* argv[1] = argv[2] = argv[3] = @@ -133,7 +135,7 @@ argv[2] = argv[3] = argv[4] = tmp/l1 tmp/l2 tmp/*4 tmp/l3 -./glob.tests: line 64: no match: tmp/*4 +./glob.tests: line 65: no match: tmp/*4 argv[1] = argv[1] = <*> argv[1] = diff --git a/tests/glob.tests b/tests/glob.tests index 9005e4de..b35d7336 100644 --- a/tests/glob.tests +++ b/tests/glob.tests @@ -29,6 +29,7 @@ ${THIS_SH} ./glob5.sub ${THIS_SH} ./glob6.sub ${THIS_SH} ./glob7.sub ${THIS_SH} ./glob8.sub +${THIS_SH} ./glob9.sub MYDIR=$PWD # save where we are diff --git a/tests/glob9.sub b/tests/glob9.sub new file mode 100644 index 00000000..ef2af2bd --- /dev/null +++ b/tests/glob9.sub @@ -0,0 +1,13 @@ +LANG=en_US.UTF-8 # safest +: ${TMPDIR:=/var/tmp} +HOME=${TMPDIR} + +mkdir ~/ಇಳಿಕೆಗಳು +touch ~/ಇಳಿಕೆಗಳು/{a,b}.txt +echo ~/ಇಳಿಕೆಗಳು/*.txt >/dev/null + +rm -rf ${TMPDIR}/ಇಳಿಕೆಗಳು + +LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 +echo é/* +echo 'é'/* diff --git a/tests/history5.sub b/tests/history5.sub index c44ace8a..245c28d0 100644 --- a/tests/history5.sub +++ b/tests/history5.sub @@ -12,9 +12,9 @@ # along with this program. If not, see . # -trap 'rm -f $HISTFILE' 0 1 2 3 6 15 +trap 'rm -f "$OUT"' 0 1 2 3 6 15 -HISTFILE=$TMPDIR/fchist-$$ +HISTFILE=$TMPDIR/fchist-$$ ; OUT=$HISTFILE unset HISTIGNORE HISTCONTROL set -o history @@ -53,3 +53,5 @@ fc -l 1 99 # other out-of-range behavior for future work echo out of range 4 fc -l -20 -40 + +unset HISTFILE # suppress writing history file -- cgit v1.2.1