Update to 4.3:

This is a terse description of the new features added to bash-4.3 since
the release of bash-4.2.  As always, the manual page (doc/bash.1) is
the place to look for complete descriptions.

1.  New Features in Bash

a.  The `helptopic' completion action now maps to all the help topics, not just
    the shell builtins.

b.  The `help' builtin no longer does prefix substring matching first, so
    `help read' does not match `readonly', but will do it if exact string
    matching fails.

c.  The shell can be compiled to not display a message about processes that
    terminate due to SIGTERM.

d.  Non-interactive shells now react to the setting of checkwinsize and set
    LINES and COLUMNS after a foreground job exits.

e.  There is a new shell option, `globasciiranges', which, when set to on,
    forces globbing range comparisons to use character ordering as if they
    were run in the C locale.

f.  There is a new shell option, `direxpand', which makes filename completion
    expand variables in directory names in the way bash-4.1 did.

g.  In Posix mode, the `command' builtin does not change whether or not a
    builtin it shadows is treated as an assignment builtin.

h.  The `return' and `exit' builtins accept negative exit status arguments.

i.  The word completion code checks whether or not a filename containing a
    shell variable expands to a directory name and appends `/' to the word
    as appropriate.  The same code expands shell variables in command names
    when performing command completion.

j.  In Posix mode, it is now an error to attempt to define a shell function
    with the same name as a Posix special builtin.

k.  When compiled for strict Posix conformance, history expansion is disabled
    by default.

l.  The history expansion character (!) does not cause history expansion when
    followed by the closing quote in a double-quoted string.

m.  `complete' and its siblings compgen/compopt now takes a new `-o noquote'
    option to inhibit quoting of the completions.

n.  Setting HISTSIZE to a value less than zero causes the history list to be
    unlimited (setting it 0 zero disables the history list).

o.  Setting HISTFILESIZE to a value less than zero causes the history file size
    to be unlimited (setting it to 0 causes the history file to be truncated
    to zero size).

p.  The `read' builtin now skips NUL bytes in the input.

q.  There is a new `bind -X' option to print all key sequences bound to Unix
    commands.

r.  When in Posix mode, `read' is interruptible by a trapped signal.  After
    running the trap handler, read returns 128+signal and throws away any
    partially-read input.

s.  The command completion code skips whitespace and assignment statements
    before looking for the command name word to be completed.

t.  The build process has a new mechanism for constructing separate help files
    that better reflects the current set of compilation options.

u.  The -nt and -ot options to test now work with files with nanosecond
    timestamp resolution.

v.  The shell saves the command history in any shell for which history is
    enabled and HISTFILE is set, not just interactive shells.

w.  The shell has `nameref' variables and new -n(/+n) options to declare and
    unset to use them, and a `test -R' option to test for them.

x.  The shell now allows assigning, referencing, and unsetting elements of
    indexed arrays using negative subscripts (a[-1]=2, echo ${a[-1]}) which
    count back from the last element of the array.

y.  The {x}<word redirection feature now allows words like {array[ind]} and
    can use variables with special meanings to the shell (e.g., BASH_XTRACEFD).

z.  There is a new CHILD_MAX special shell variable; its value controls the
    number of exited child statues the shell remembers.

aa. There is a new configuration option (--enable-direxpand-default) that
    causes the `direxpand' shell option to be enabled by default.

bb. Bash does not do anything special to ensure that the file descriptor
    assigned to X in {x}<foo remains open after the block containing it
    completes.

cc. The `wait' builtin has a new `-n' option to wait for the next child to
    change status.

dd. The `printf' %(...)T format specifier now uses the current time if no
    argument is supplied.

ee. There is a new variable, BASH_COMPAT, that controls the current shell
    compatibility level.

ff. The `popd' builtin now treats additional arguments as errors.

gg. The brace expansion code now treats a failed sequence expansion as a
    simple string and will continue to expand brace terms in the remainder
    of the word.

hh. Shells started to run process substitutions now run any trap set on EXIT.

ii. The fc builtin now interprets -0 as the current command line.

jj. Completing directory names containing shell variables now adds a trailing
    slash if the expanded result is a directory.

kk. `cd' has a new `-@' option to browse a file's extended attributes on
    systems that support O_XATTR.

ll. The test/[/[[ `-v variable' binary operator now understands array
    references.

2.  New Features in Readline

a.  Readline is now more responsive to SIGHUP and other fatal signals when
    reading input from the terminal or performing word completion but no
    longer attempts to run any not-allowable functions from a signal handler
    context.

b.  There are new bindable commands to search the history for the string of
    characters between the beginning of the line and the point
    (history-substring-search-forward, history-substring-search-backward)

c.  Readline allows quoted strings as the values of variables when setting
    them with `set'.  As a side effect, trailing spaces and tabs are ignored
    when setting a string variable's value.

d.  The history library creates a backup of the history file when writing it
    and restores the backup on a write error.

e.  New application-settable variable: rl_filename_stat_hook: a function called
    with a filename before using it in a call to stat(2).  Bash uses it to
    expand shell variables so things like $HOME/Downloads have a slash
    appended.

f.  New bindable function `print-last-kbd-macro', prints the most-recently-
    defined keyboard macro in a reusable format.

g.  New user-settable variable `colored-stats', enables use of colored text
    to denote file types when displaying possible completions (colored analog
    of visible-stats).

h.  New user-settable variable `keyseq-timout', acts as an inter-character
    timeout when reading input or incremental search strings.

i.  New application-callable function: rl_clear_history. Clears the history list
    and frees all readline-associated private data.

j.  New user-settable variable, show-mode-in-prompt, adds a characters to the
    beginning of the prompt indicating the current editing mode.

k.  New application-settable variable: rl_input_available_hook; function to be
    called when readline detects there is data available on its input file
    descriptor.

l.  Readline calls an application-set event hook (rl_event_hook) after it gets
    a signal while reading input (read returns -1/EINTR but readline does not
    handle the signal immediately) to allow the application to handle or
    otherwise note it.

m.  If the user-settable variable `history-size' is set to a value less than
    0, the history list size is unlimited.

n.  New application-settable variable: rl_signal_event_hook; function that is
    called when readline is reading terminal input and read(2) is interrupted
    by a signal.  Currently not called for SIGHUP or SIGTERM.

o.  rl_change_environment: new application-settable variable that controls
    whether or not Readline modifies the environment (currently readline
    modifies only LINES and COLUMNS).
This commit is contained in:
wiz 2014-03-12 10:08:46 +00:00
parent af811e5135
commit 4103332619
8 changed files with 24 additions and 189 deletions

View file

@ -1,10 +1,9 @@
# $NetBSD: Makefile,v 1.60 2014/01/11 18:18:46 chopps Exp $
# $NetBSD: Makefile,v 1.61 2014/03/12 10:08:46 wiz Exp $
BASH_VERSION= 4.2
BASH_VERSION= 4.3
DISTNAME= bash-${BASH_VERSION}
#PKGNAME= bash-${BASH_VERSION}.${BASH_PATCHLEVEL}
PKGREVISION= 4
CATEGORIES= shells
MASTER_SITES= ${MASTER_SITE_GNU:=bash/} \
ftp://ftp.cwru.edu/pub/bash/

View file

@ -1,14 +1,26 @@
@comment $NetBSD: PLIST,v 1.6 2011/03/12 15:55:22 wiz Exp $
@comment $NetBSD: PLIST,v 1.7 2014/03/12 10:08:46 wiz Exp $
bin/bash
bin/bashbug
info/bash.info
man/man1/bash.1
man/man1/bashbug.1
share/doc/bash/CHANGES
share/doc/bash/COMPAT
share/doc/bash/FAQ
share/doc/bash/INTRO
share/doc/bash/NEWS
share/doc/bash/POSIX
share/doc/bash/RBASH
share/doc/bash/README
share/doc/bash/bash.html
share/doc/bash/bashref.html
share/locale/af/LC_MESSAGES/bash.mo
share/locale/bg/LC_MESSAGES/bash.mo
share/locale/ca/LC_MESSAGES/bash.mo
share/locale/cs/LC_MESSAGES/bash.mo
share/locale/da/LC_MESSAGES/bash.mo
share/locale/de/LC_MESSAGES/bash.mo
share/locale/el/LC_MESSAGES/bash.mo
share/locale/en@boldquot/LC_MESSAGES/bash.mo
share/locale/en@quot/LC_MESSAGES/bash.mo
share/locale/eo/LC_MESSAGES/bash.mo
@ -17,8 +29,11 @@ share/locale/et/LC_MESSAGES/bash.mo
share/locale/fi/LC_MESSAGES/bash.mo
share/locale/fr/LC_MESSAGES/bash.mo
share/locale/ga/LC_MESSAGES/bash.mo
share/locale/gl/LC_MESSAGES/bash.mo
share/locale/hr/LC_MESSAGES/bash.mo
share/locale/hu/LC_MESSAGES/bash.mo
share/locale/id/LC_MESSAGES/bash.mo
share/locale/it/LC_MESSAGES/bash.mo
share/locale/ja/LC_MESSAGES/bash.mo
share/locale/lt/LC_MESSAGES/bash.mo
share/locale/nl/LC_MESSAGES/bash.mo
@ -27,6 +42,8 @@ share/locale/pt_BR/LC_MESSAGES/bash.mo
share/locale/ro/LC_MESSAGES/bash.mo
share/locale/ru/LC_MESSAGES/bash.mo
share/locale/sk/LC_MESSAGES/bash.mo
share/locale/sl/LC_MESSAGES/bash.mo
share/locale/sr/LC_MESSAGES/bash.mo
share/locale/sv/LC_MESSAGES/bash.mo
share/locale/tr/LC_MESSAGES/bash.mo
share/locale/uk/LC_MESSAGES/bash.mo

View file

@ -1,14 +1,9 @@
$NetBSD: distinfo,v 1.28 2014/01/11 18:07:06 chopps Exp $
$NetBSD: distinfo,v 1.29 2014/03/12 10:08:46 wiz Exp $
SHA1 (bash-4.2.tar.gz) = 487840ab7134eb7901fbb2e49b0ee3d22de15cb8
RMD160 (bash-4.2.tar.gz) = df7ae51783f039a1234d3b720ffcf4bfa5d09673
Size (bash-4.2.tar.gz) = 7009201 bytes
SHA1 (bash-4.3.tar.gz) = 45ac3c5727e7262334f4dfadecdf601b39434e84
RMD160 (bash-4.3.tar.gz) = cd21a9f51ea7780994d4e2c9c7d16d5eb000f845
Size (bash-4.3.tar.gz) = 7955839 bytes
SHA1 (patch-af) = dfd1d1be3d822cfc3ae0fd21bb2bbd3e35b11f0d
SHA1 (patch-ag) = 4da0a43f6b890482affff46b18eef4be67770e48
SHA1 (patch-ai) = 26825922898567841bed0bf62a8dee3bcc50cd75
SHA1 (patch-aj) = 8b3c52c2aee9cf53ee5a9ce64ead243d0970305e
SHA1 (patch-ak) = 6dfb7195f45f81064f687a4c9febb9dcae721aa7
SHA1 (patch-builtins_ulimit.def) = d4cb59bedc6a6199f9a99a3530c99374e428baeb
SHA1 (patch-execute_cmd.c) = ce9fe5820188aa218bac74316d45cbdabadb1785
SHA1 (patch-lib_readline_vi_mode.c) = 104be6ec5f30e39a5ee442de078ff5dcb9380874
SHA1 (patch-lib_sh_eaccess.c) = 484577f09efe67f604c3fb85afdb5a58b64f5b6c

View file

@ -1,15 +0,0 @@
$NetBSD: patch-ai,v 1.1 2011/02/20 14:22:15 wiz Exp $
Add MirBSD.
--- support/shobj-conf.orig Wed Oct 28 13:19:57 2009
+++ support/shobj-conf
@@ -197,7 +197,7 @@ darwin*|macosx*)
SHLIB_LIBS='-lncurses' # see if -lcurses works on MacOS X 10.1
;;
-openbsd*|netbsd*)
+openbsd*|netbsd*|mirbsd*)
SHOBJ_CFLAGS=-fPIC
SHOBJ_LD='${CC}'
SHOBJ_LDFLAGS='-shared'

View file

@ -1,14 +0,0 @@
$NetBSD: patch-ak,v 1.1 2011/02/20 14:22:16 wiz Exp $
Add MirBSD.
--- configure.orig Tue Dec 29 13:34:27 2009
+++ configure
@@ -2192,6 +2192,7 @@ sparc-linux*) opt_bash_malloc=no ;; # sp
#*-freebsd*-gnu) opt_bash_malloc=no ;; # there's some undetermined problem here
#*-freebsd*) opt_bash_malloc=no ;; # they claim it's better; I disagree
*-openbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment
+*-mirbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment
*-aix*) opt_bash_malloc=no ;; # AIX machines
*-nextstep*) opt_bash_malloc=no ;; # NeXT machines running NeXTstep
*-macos*) opt_bash_malloc=no ;; # Apple MacOS X

View file

@ -1,31 +0,0 @@
$NetBSD: patch-execute_cmd.c,v 1.1 2013/02/12 23:31:41 tcort Exp $
Allow bash to compile with JOB_CONTROL disabled.
http://ftp.gnu.org/gnu/bash/bash-4.2-patches/bash42-018
--- execute_cmd.c.orig Wed Feb 9 22:32:25 2011
+++ execute_cmd.c Tue Feb 12 11:48:00 2013
@@ -2196,6 +2196,7 @@
if (ignore_return && cmd)
cmd->flags |= CMD_IGNORE_RETURN;
+#if defined (JOB_CONTROL)
lastpipe_flag = 0;
begin_unwind_frame ("lastpipe-exec");
lstdin = -1;
@@ -2219,11 +2220,14 @@
}
if (prev >= 0)
add_unwind_protect (close, prev);
+#endif
exec_result = execute_command_internal (cmd, asynchronous, prev, pipe_out, fds_to_close);
+#if defined (JOB_CONTROL)
if (lstdin > 0)
restore_stdin (lstdin);
+#endif
if (prev >= 0)
close (prev);

View file

@ -1,79 +0,0 @@
$NetBSD: patch-lib_readline_vi_mode.c,v 1.1 2014/01/11 18:07:06 chopps Exp $
Pull in fix for 'cc', 'dd', commands 'yy' from readline git repository (pre-6.3
release). Prior to this 'dd', et al. simply moved to position 0 but did not cut
the text from the line.
--- lib/readline/vi_mode.c.orig 2010-11-21 00:51:39.000000000 +0000
+++ lib/readline/vi_mode.c
@@ -1114,7 +1114,7 @@ rl_domove_read_callback (m)
rl_beg_of_line (1, c);
_rl_vi_last_motion = c;
RL_UNSETSTATE (RL_STATE_VIMOTION);
- return (0);
+ return (vidomove_dispatch (m));
}
#if defined (READLINE_CALLBACKS)
/* XXX - these need to handle rl_universal_argument bindings */
@@ -1234,11 +1234,19 @@ rl_vi_delete_to (count, key)
_rl_vimvcxt->motion = '$';
r = rl_domove_motion_callback (_rl_vimvcxt);
}
- else if (vi_redoing)
+ else if (vi_redoing && _rl_vi_last_motion != 'd') /* `dd' is special */
{
_rl_vimvcxt->motion = _rl_vi_last_motion;
r = rl_domove_motion_callback (_rl_vimvcxt);
}
+ else if (vi_redoing) /* handle redoing `dd' here */
+ {
+ _rl_vimvcxt->motion = _rl_vi_last_motion;
+ rl_mark = rl_end;
+ rl_beg_of_line (1, key);
+ RL_UNSETSTATE (RL_STATE_VIMOTION);
+ r = vidomove_dispatch (_rl_vimvcxt);
+ }
#if defined (READLINE_CALLBACKS)
else if (RL_ISSTATE (RL_STATE_CALLBACK))
{
@@ -1316,11 +1324,19 @@ rl_vi_change_to (count, key)
_rl_vimvcxt->motion = '$';
r = rl_domove_motion_callback (_rl_vimvcxt);
}
- else if (vi_redoing)
+ else if (vi_redoing && _rl_vi_last_motion != 'c') /* `cc' is special */
{
_rl_vimvcxt->motion = _rl_vi_last_motion;
r = rl_domove_motion_callback (_rl_vimvcxt);
}
+ else if (vi_redoing) /* handle redoing `cc' here */
+ {
+ _rl_vimvcxt->motion = _rl_vi_last_motion;
+ rl_mark = rl_end;
+ rl_beg_of_line (1, key);
+ RL_UNSETSTATE (RL_STATE_VIMOTION);
+ r = vidomove_dispatch (_rl_vimvcxt);
+ }
#if defined (READLINE_CALLBACKS)
else if (RL_ISSTATE (RL_STATE_CALLBACK))
{
@@ -1377,6 +1393,19 @@ rl_vi_yank_to (count, key)
_rl_vimvcxt->motion = '$';
r = rl_domove_motion_callback (_rl_vimvcxt);
}
+ else if (vi_redoing && _rl_vi_last_motion != 'y') /* `yy' is special */
+ {
+ _rl_vimvcxt->motion = _rl_vi_last_motion;
+ r = rl_domove_motion_callback (_rl_vimvcxt);
+ }
+ else if (vi_redoing) /* handle redoing `yy' here */
+ {
+ _rl_vimvcxt->motion = _rl_vi_last_motion;
+ rl_mark = rl_end;
+ rl_beg_of_line (1, key);
+ RL_UNSETSTATE (RL_STATE_VIMOTION);
+ r = vidomove_dispatch (_rl_vimvcxt);
+ }
#if defined (READLINE_CALLBACKS)
else if (RL_ISSTATE (RL_STATE_CALLBACK))
{

View file

@ -1,37 +0,0 @@
$NetBSD: patch-lib_sh_eaccess.c,v 1.1 2012/07/18 15:43:12 spz Exp $
from ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-033
Bash-Release: 4.2
Patch-ID: bash42-033
Bug-Reported-by: David Leverton <levertond@googlemail.com>
Bug-Reference-ID: <4FCCE737.1060603@googlemail.com>
Bug-Reference-URL:
Bug-Description:
Bash uses a static buffer when expanding the /dev/fd prefix for the test
and conditional commands, among other uses, when it should use a dynamic
buffer to avoid buffer overflow.
--- lib/sh/eaccess.c.orig 2011-01-09 01:50:10.000000000 +0000
+++ lib/sh/eaccess.c
@@ -82,6 +82,8 @@ sh_stat (path, finfo)
const char *path;
struct stat *finfo;
{
+ static char *pbuf = 0;
+
if (*path == '\0')
{
errno = ENOENT;
@@ -106,7 +108,7 @@ sh_stat (path, finfo)
trailing slash. Make sure /dev/fd/xx really uses DEV_FD_PREFIX/xx.
On most systems, with the notable exception of linux, this is
effectively a no-op. */
- char pbuf[32];
+ pbuf = xrealloc (pbuf, sizeof (DEV_FD_PREFIX) + strlen (path + 8));
strcpy (pbuf, DEV_FD_PREFIX);
strcat (pbuf, path + 8);
return (stat (pbuf, finfo));