summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChet Ramey <chet.ramey@case.edu>2020-11-17 14:18:49 -0500
committerChet Ramey <chet.ramey@case.edu>2020-11-17 14:18:49 -0500
commit37b22abee700eb1b0c5b6926ab32630a429c1183 (patch)
tree01d22efef9babf0127776b6b3c4387b03dc629ab
parent278db80c368700ed6117fbd390c89a9b44c0240c (diff)
downloadbash-5.1-testing.tar.gz
Bash-5.1-rc3 releasebash-5.1-rc3bash-5.1-testing
-rw-r--r--CHANGES23
-rw-r--r--CWRU/changelog16
-rw-r--r--MANIFEST1
-rw-r--r--NEWS3
-rw-r--r--array.h2
-rw-r--r--config-top.h6
-rwxr-xr-xconfigure20
-rw-r--r--configure.ac2
-rw-r--r--lib/readline/isearch.c1
-rw-r--r--subst.c6
-rw-r--r--test.c7
-rw-r--r--tests/assoc.right1
-rw-r--r--tests/assoc9.sub7
-rw-r--r--tests/casemod.right2
-rw-r--r--tests/casemod.tests4
-rw-r--r--tests/glob.right4
-rw-r--r--tests/glob.tests1
-rw-r--r--tests/glob9.sub13
-rw-r--r--tests/history5.sub6
19 files changed, 96 insertions, 29 deletions
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 <dv@vollmann.ch>
[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 <tosswald@ernw.de>
+
+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 <wooledg@eeg.ccf.org>
+
+[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 <bug-bash@gnu.org>.
#
@@ -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] = <a>
argv[2] = <abc>
argv[3] = <abd>
@@ -133,7 +135,7 @@ argv[2] = <abc>
argv[3] = <abd>
argv[4] = <abe>
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] = <bdir/>
argv[1] = <*>
argv[1] = <a*>
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 <http://www.gnu.org/licenses/>.
#
-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