diff --git a/CWRU/CWRU.chlog b/CWRU/CWRU.chlog index 545a6137..5d6eec63 100644 --- a/CWRU/CWRU.chlog +++ b/CWRU/CWRU.chlog @@ -14902,3 +14902,28 @@ execute_cmd.c - execute_command_internal: if redirections attached to a compound command fail, make sure we discard the `internal_fifos' unwind- protect frame after freeing the copied fifo_list and before returning + + 1/30 + ---- +lib/readline/rlprivate.h + - BRACK_PASTE_FINI: add \r to the end of the string to avoid problems + with the tty driver thinking the cursor was in the wrong position. + Fixes issue reported by Egmont Koblinger + + 1/31 + ---- +lib/sh/zread.c + - zread,zreadintr: call check_signals() before calling read() to + minimize the race window between signal delivery, signal handling, + and a blocking read(2). Partial fix for FIFO read issue reported by + Oyvind Hvidsten + +doc/{bash.1,bashref.texi} + - shopt: document `assoc_expand_once' shell option + + 2/1 + --- +config-top.h + - DONT_REPORT_SIGPIPE: define, so non-interactive shells will no + longer print termination messages for child processes killed by + SIGTERM diff --git a/Makefile.in b/Makefile.in index 3a4d66b0..d62ea078 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1047,7 +1047,7 @@ hashlib.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h hashlib.o: make_cmd.h subst.h sig.h pathnames.h externs.h input.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h input.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h input.h error.h externs.h -input.o: quit.h shell.h +input.o: quit.h shell.h pathnames.h list.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h list.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h list.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h @@ -1070,7 +1070,7 @@ make_cmd.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h error.h flags.h m make_cmd.o: variables.h arrayfunc.h conftypes.h array.h hashlib.h subst.h input.h externs.h make_cmd.o: jobs.h quit.h sig.h siglist.h syntax.h dispose_cmd.h parser.h make_cmd.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h ${BASHINCDIR}/ocache.h -make_cmd.o: shell.h execute_cmd.h +make_cmd.o: shell.h execute_cmd.h pathnames.h y.tab.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/memalloc.h y.tab.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h y.tab.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h diff --git a/arrayfunc.c b/arrayfunc.c index a7c7ec1e..10b2b06a 100644 --- a/arrayfunc.c +++ b/arrayfunc.c @@ -44,8 +44,8 @@ once, when performing variable expansion. */ int assoc_expand_once = 0; -/* Ditto for indexed array subscripts */ -int array_expand_once = 1; +/* Ditto for indexed array subscripts -- currently unused */ +int array_expand_once = 0; static SHELL_VAR *bind_array_var_internal __P((SHELL_VAR *, arrayind_t, char *, char *, int)); static SHELL_VAR *assign_array_element_internal __P((SHELL_VAR *, char *, char *, char *, int, char *, int)); diff --git a/builtins/read.def b/builtins/read.def index f769c5b0..45772273 100644 --- a/builtins/read.def +++ b/builtins/read.def @@ -585,6 +585,7 @@ read_builtin (list) } reading = 1; + CHECK_ALRM; if (unbuffered_read == 2) retval = posixly_correct ? zreadintr (fd, &c, 1) : zreadn (fd, &c, nchars - nr); else if (unbuffered_read) diff --git a/config-top.h b/config-top.h index e1f97698..3769625b 100644 --- a/config-top.h +++ b/config-top.h @@ -53,7 +53,7 @@ /* Define DONT_REPORT_SIGTERM if you don't want to see `Terminates' message when a job exits due to SIGTERM, since that's the default signal sent by the kill builtin. */ -/* #define DONT_REPORT_SIGTERM */ +#define DONT_REPORT_SIGTERM /* Define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS if you don't want builtins like `echo' and `printf' to report errors when output does not succeed diff --git a/configure b/configure index b9c01296..47fd47ce 100755 --- a/configure +++ b/configure @@ -1,7 +1,7 @@ #! /bin/sh -# From configure.ac for Bash 4.4, version 4.089. +# From configure.ac for Bash 5.0, version 4.090. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for bash 4.4-maint. +# Generated by GNU Autoconf 2.69 for bash 5.0-alpha. # # Report bugs to . # @@ -581,8 +581,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='bash' PACKAGE_TARNAME='bash' -PACKAGE_VERSION='4.4-maint' -PACKAGE_STRING='bash 4.4-maint' +PACKAGE_VERSION='5.0-alpha' +PACKAGE_STRING='bash 5.0-alpha' PACKAGE_BUGREPORT='bug-bash@gnu.org' PACKAGE_URL='' @@ -1394,7 +1394,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 4.4-maint to adapt to many kinds of systems. +\`configure' configures bash 5.0-alpha to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1459,7 +1459,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of bash 4.4-maint:";; + short | recursive ) echo "Configuration of bash 5.0-alpha:";; esac cat <<\_ACEOF @@ -1655,7 +1655,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -bash configure 4.4-maint +bash configure 5.0-alpha generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2364,7 +2364,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 4.4-maint, which was +It was created by bash $as_me 5.0-alpha, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2758,8 +2758,8 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. ac_config_headers="$ac_config_headers config.h" -BASHVERS=4.4 -RELSTATUS=maint +BASHVERS=5.0 +RELSTATUS=alpha case "$RELSTATUS" in alp*|bet*|dev*|rc*|releng*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; @@ -16814,7 +16814,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 4.4-maint, which was +This file was extended by bash $as_me 5.0-alpha, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -16880,7 +16880,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 4.4-maint +bash config.status 5.0-alpha configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 5080265a..43da66fc 100644 --- a/configure.ac +++ b/configure.ac @@ -21,10 +21,10 @@ dnl Process this file with autoconf to produce a configure script. # You should have received a copy of the GNU General Public License # along with this program. If not, see . -AC_REVISION([for Bash 4.4, version 4.089])dnl +AC_REVISION([for Bash 5.0, version 4.090])dnl -define(bashvers, 4.4) -define(relstatus, maint) +define(bashvers, 5.0) +define(relstatus, alpha) AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org]) diff --git a/doc/bash.1 b/doc/bash.1 index 1c72510a..aa77e883 100644 --- a/doc/bash.1 +++ b/doc/bash.1 @@ -5,12 +5,12 @@ .\" Case Western Reserve University .\" chet.ramey@case.edu .\" -.\" Last Change: Thu Jan 25 10:51:45 EST 2018 +.\" Last Change: Wed Jan 31 11:23:23 EST 2018 .\" .\" bash_builtins, strip all but Built-Ins section .if \n(zZ=1 .ig zZ .if \n(zY=1 .ig zY -.TH BASH 1 "2018 January 25" "GNU Bash 4.4" +.TH BASH 1 "2018 January 31" "GNU Bash 4.4" .\" .\" There's some problem with having a `@' .\" in a tagged paragraph with the BSD man macros. @@ -9691,6 +9691,11 @@ The list of \fBshopt\fP options is: .if n .sp 1v .PD 0 .TP 8 +.B assoc_expand_once +If set, the shell suppresses multiple evaluation of associative array +subscripts during arithmetic expression evaluation and while executing +builtins that can perform variable assignments. +.TP 8 .B autocd If set, a command name that is the name of a directory is executed as if it were the argument to the \fBcd\fP command. diff --git a/doc/bashref.texi b/doc/bashref.texi index cf02af6b..bc3c2649 100644 --- a/doc/bashref.texi +++ b/doc/bashref.texi @@ -3605,7 +3605,7 @@ The @option{-d} option causes the shell to forget the remembered location of each @var{name}. If the @option{-t} option is supplied, the full pathname to which each @var{name} corresponds is printed. If multiple @var{name} arguments are -supplied with @option{-t} the @var{name} is printed before the hashed +supplied with @option{-t}, the @var{name} is printed before the hashed full pathname. The @option{-l} option causes output to be displayed in a format that may be reused as input. @@ -5097,6 +5097,11 @@ option. The list of @code{shopt} options is: @table @code +@item assoc_expand_once +If set, the shell suppresses multiple evaluation of associative array +subscripts during arithmetic expression evaluation and while executing +builtins that can perform variable assignments. + @item autocd If set, a command name that is the name of a directory is executed as if it were the argument to the @code{cd} command. diff --git a/doc/version.texi b/doc/version.texi index b934a1a3..bad22734 100644 --- a/doc/version.texi +++ b/doc/version.texi @@ -2,10 +2,10 @@ Copyright (C) 1988-2018 Free Software Foundation, Inc. @end ignore -@set LASTCHANGE Thu Jan 25 10:51:29 EST 2018 +@set LASTCHANGE Wed Jan 31 11:23:04 EST 2018 @set EDITION 4.4 @set VERSION 4.4 -@set UPDATED 25 January 2018 +@set UPDATED 31 January 2018 @set UPDATED-MONTH January 2018 diff --git a/lib/readline/display.c b/lib/readline/display.c index 5b2663a8..75019efc 100644 --- a/lib/readline/display.c +++ b/lib/readline/display.c @@ -1168,15 +1168,16 @@ rl_redisplay (void) wrap_offset. */ if (linenum == 0 && (mb_cur_max > 1 && rl_byte_oriented == 0) && OLD_CPOS_IN_PROMPT()) _rl_last_c_pos -= prompt_invis_chars_first_line; /* XXX - was wrap_offset */ - else if (linenum == prompt_last_screen_line && + else if (cpos_adjusted == 0 && + linenum == prompt_last_screen_line && prompt_physical_chars > _rl_screenwidth && (mb_cur_max > 1 && rl_byte_oriented == 0) && - cpos_adjusted == 0 && _rl_last_c_pos != o_cpos && _rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - prompt_invis_chars_first_line)) /* XXX - rethink this last one */ /* This assumes that all the invisible characters are split between the first and last lines of the prompt, if the prompt consumes more than two lines. It's usually right */ + /* XXX - not sure this is ever executed */ _rl_last_c_pos -= (wrap_offset-prompt_invis_chars_first_line); /* If this is the line with the prompt, we might need to diff --git a/lib/readline/doc/hsuser.texi b/lib/readline/doc/hsuser.texi index 483a2a04..1c25f813 100644 --- a/lib/readline/doc/hsuser.texi +++ b/lib/readline/doc/hsuser.texi @@ -124,7 +124,7 @@ The @code{lithist} shell option causes the shell to save the command with embedded newlines instead of semicolons. The @code{shopt} builtin is used to set these options. -@xref{Bash Builtins}, for a description of @code{shopt}. +@xref{The Shopt Builtin}, for a description of @code{shopt}. @node Bash History Builtins @section Bash History Builtins @@ -286,7 +286,7 @@ in a double-quoted string. @ifset BashFeatures Several shell options settable with the @code{shopt} -builtin (@pxref{Bash Builtins}) may be used to tailor +builtin (@pxref{The Shopt Builtin}) may be used to tailor the behavior of history expansion. If the @code{histverify} shell option is enabled, and Readline is being used, history substitutions are not immediately passed to diff --git a/lib/readline/rlprivate.h b/lib/readline/rlprivate.h index 1d90c2c8..05ee9302 100644 --- a/lib/readline/rlprivate.h +++ b/lib/readline/rlprivate.h @@ -307,7 +307,7 @@ extern int _rl_search_getchar PARAMS((_rl_search_cxt *)); #define BRACK_PASTE_SLEN 6 #define BRACK_PASTE_INIT "\033[?2004h" -#define BRACK_PASTE_FINI "\033[?2004l" +#define BRACK_PASTE_FINI "\033[?2004l\r" /* macro.c */ extern void _rl_with_macro_input PARAMS((char *)); diff --git a/lib/sh/zread.c b/lib/sh/zread.c index 14b66381..8b7ecedf 100644 --- a/lib/sh/zread.c +++ b/lib/sh/zread.c @@ -53,6 +53,7 @@ zread (fd, buf, len) { ssize_t r; + check_signals (); /* check for signals before a blocking read */ while ((r = read (fd, buf, len)) < 0 && errno == EINTR) /* XXX - bash-5.0 */ /* We check executing_builtin and run traps here for backwards compatibility */ @@ -103,6 +104,7 @@ zreadintr (fd, buf, len) char *buf; size_t len; { + check_signals (); return (read (fd, buf, len)); }