+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
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.
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]
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
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.
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 {
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
#! /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>.
#
# 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=''
# 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]...
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
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.
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 $@
BASHVERS=5.1
-RELSTATUS=rc2
+RELSTATUS=rc3
case "$RELSTATUS" in
alp*|bet*|dev*|rc*|releng*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;;
# 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
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\\"
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])
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 */
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 */
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);
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
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
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
M1=${S1^^[aeiou]}
M2=${U2,,[AEIOU]}
-echo ${M1} ${M1~}
-echo ${M2} ${M2~~}
+#echo ${M1} ${M1~}
+#echo ${M2} ${M2~~}
declare -l lower=aBcDe
lower+=XyZ
6:
a\*b
a\\ 1*b*
+é/*
+é/*
argv[1] = <a>
argv[2] = <abc>
argv[3] = <abd>
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*>
${THIS_SH} ./glob6.sub
${THIS_SH} ./glob7.sub
${THIS_SH} ./glob8.sub
+${THIS_SH} ./glob9.sub
MYDIR=$PWD # save where we are
--- /dev/null
+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 'é'/*
# 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
# other out-of-range behavior for future work
echo out of range 4
fc -l -20 -40
+
+unset HISTFILE # suppress writing history file