commit bash-20151113 snapshot

This commit is contained in:
Chet Ramey
2015-12-01 11:28:06 -05:00
parent f542be5d52
commit f9b024c839
15 changed files with 148 additions and 49 deletions
+81 -34
View File
@@ -6554,7 +6554,7 @@ jobs.c
to 1 if terminal pgrp != shell pgrp
- {stop_pipeline,make_child,wait_for}: if we are running in the
background, don't mess with the terminal's process group; assume that
the parent shell will do that. Fixes bug reprted by Greg Wooledge
the parent shell will do that. Fixes bug reported by Greg Wooledge
<wooledg@eeg.ccf.org>
shell.c
@@ -6880,9 +6880,10 @@ builtins/evalstring.c
10/2
----
jobs.c
- bgp_prune: don't do anything if bgpids.npid == 0 or bgpids.list == NULL.
This can happen if something gets run before the job control framework
is initialized. Bug report from <mancha1@zoho.com>
- bgp_prune: don't do anything if bgpids.npid == 0 or
bgpids.list == NULL. This can happen if something gets run before
the job control framework is initialized. Bug report from
<mancha1@zoho.com>
10/3
----
@@ -9224,14 +9225,15 @@ general.h
enable for load and unload hook functions
builtins/enable.def
- dyn_load_builtin: attempt to execute a function named BUILTIN_builtin_load,
where BUILTIN is the name of the command being loaded. If that
function returns 0, the load fails
- dyn_unload_builtin: attempt to execute a function named BUILTIN_builtin_unload,
where BUILTIN is the name of the command being unloaded. It offers a
dynamic builtin a way to clean up after itself. Inspired by
suggestion from Piotr Grzybowski <narsil.pl@gmail.com> in response
to a bug report from isabella parakiss <izaberina@gmail.com>
- dyn_load_builtin: attempt to execute a function named
BUILTIN_builtin_load, where BUILTIN is the name of the command being
loaded. If that function returns 0, the load fails
- dyn_unload_builtin: attempt to execute a function named
BUILTIN_builtin_unload, where BUILTIN is the name of the command
being unloaded. It offers a dynamic builtin a way to clean up after
itself. Inspired by suggestion from Piotr Grzybowski
<narsil.pl@gmail.com> in response to a bug report from isabella
parakiss <izaberina@gmail.com>
8/6
---
@@ -9319,8 +9321,8 @@ execute_cmd.c
8/10
----
config-top.h
- OPENLOG_OPTS: if SYSLOG_HISTORY is defined, define to LOG_PID, so each
message is tagged with the pid
- OPENLOG_OPTS: if SYSLOG_HISTORY is defined, define to LOG_PID, so
each message is tagged with the pid
bashhist.h
- bash_syslog_history: the first time it's called, call openlog with
@@ -9591,8 +9593,8 @@ variables.c
9/17
----
subst.c
- do_compound_assignment: make sure to dispose of word list generated by
expand_compound_array_assignment; fixes memory leak reported in
- do_compound_assignment: make sure to dispose of word list generated
by expand_compound_array_assignment; fixes memory leak reported in
https://bugzilla.redhat.com/show_bug.cgi?id=1264101
variables.c
@@ -9616,10 +9618,10 @@ array.c
generate the value instead of using sh_double_quote unconditionally
assoc.c
- assoc_to_assign: if either the key or the value of an associative array
element contains non-printable characters (ansic_shouldquote returns
true), use ansic_quote to quote them instead of using double quotes
unconditionally
- assoc_to_assign: if either the key or the value of an associative
array element contains non-printable characters (ansic_shouldquote
returns true), use ansic_quote to quote them instead of using double
quotes unconditionally
9/19
----
@@ -9666,10 +9668,10 @@ lib/readline/rlconf.h
9/24
----
jobs.c
- waitchld: if we get a SIGINT while waiting for a child to exit, but the
kernel doesn't interrupt the waitpid(2) call, assume the child caught
SIGINT if it exited for some reason other than SIGINT. Fix suggested
by Stephane Chazelas <stephane.chazelas@gmail.com>
- waitchld: if we get a SIGINT while waiting for a child to exit, but
the kernel doesn't interrupt the waitpid(2) call, assume the child
caught SIGINT if it exited for some reason other than SIGINT. Fix
suggested by Stephane Chazelas <stephane.chazelas@gmail.com>
input.c
- make_buffered_stream: use B_TEXT in buffered stream flags instead
@@ -9690,8 +9692,8 @@ execute_cmd.c
10/1
----
builtins/kill.def
- kill_builtin: make -L equivalent to -l for compatibility with other (Linux)
versions of kill
- kill_builtin: make -L equivalent to -l for compatibility with other
(Linux) versions of kill
doc/{bash.1,bashref.texi}
- kill: document new `-L' option
@@ -9792,9 +9794,10 @@ doc/{bash.1,bashref.texi}
<446240525@qq.com>
lib/readline/histfile.c
- history_do_write: make sure that we only create and use the tempfile if
the history file exists and is a regular file. Reported several times,
most recent check the result of a report from <marko.teiste@gmail.com>
- history_do_write: make sure that we only create and use the tempfile
if the history file exists and is a regular file. Reported several
times, most recent check the result of a report from
<marko.teiste@gmail.com>
10/22
-----
@@ -9878,11 +9881,12 @@ doc/{bash.1,bashref.texi}
10/30
-----
eval.c
- reader_loop: if PS0 is set in an interactive shell, expand and display it
after reading a (complete) command but before executing it. This differs
from the DEBUG trap because the DEBUG trap is executed once for each
simple command (and some others, like each time through a for loop). From
a patch submitted by Dan Stromberg <dstromberglists@gmail.com>
- reader_loop: if PS0 is set in an interactive shell, expand and
display it after reading a (complete) command but before executing
it. This differs from the DEBUG trap because the DEBUG trap is
executed once for each simple command (and some others, like each
time through a for loop). From a patch submitted by Dan Stromberg
<dstromberglists@gmail.com>
parse.y
- prompt_again: set ps0_prompt from $PS0 in an interactive shell
@@ -9902,3 +9906,46 @@ subst.c
doc/{bash.1,builtins.texi}
- inherit_errexit: add to shopt description; modify Posix mode
description
11/9
----
lib/readline/util.c
- rl_tilde_expand: fix out-of-bounds read caused when this function
is invoked with rl_point == 0. Bug reported by Hanno Böck
<hanno@hboeck.de>
11/11
-----
{nojobs,jobs}.c
- get_original_tty_job_signals: force the original signal disposition
for SIGTSTP/SIGTTIN/SIGTTOU to SIG_DFL in interactive shells. This
will force child processes to get SIG_DFL even if the shell is
started with those signals ignored. From a bug report from
Keith Thompson <keithsthompson@gmail.com>
11/13
-----
make_cmd.c
- make_function_def: if a function is being defined without a source
file, and the shell has not been initialized, assume that the
function is being imported from the environment and set the
source_file struct member to "environment". Set to "main" if the
shell has been initialized. Fixes bug reported on savannah by
Arno-Can Uestuensoez
https://savannah.gnu.org/support/index.php?108903
subst.c
- skip_to_delim: if the shell is in posix mode (posixly_correct != 0)
and performing history expansion ((flags & SD_HISTEXP) != 0), allow
double quotes to quote the history expansion character. TENTATIVE
CHANGE, inspired by
https://savannah.gnu.org/support/index.php?108491
NEEDS DOCUMENTATION
11/14
-----
jobs.c
- wait_for: modify change from 4/23 to only give the terminal to
shell_pgrp if not running in the background and subshell_environment
indicates we're not in a pipeline and not an async command. Fixes
bug reported by konsolebox <konsolebox@gmail.com>
+1
View File
@@ -1015,6 +1015,7 @@ tests/herestr.right f
tests/herestr1.sub f
tests/histexp.tests f
tests/histexp1.sub f
tests/histexp2.sub f
tests/histexp.right f
tests/history.tests f
tests/history.right f
+1 -1
View File
@@ -35,10 +35,10 @@ Options:
-a append history lines from this session to the history file
-n read all history lines not already read from the history file
and append them to the history list
-r read the history file and append the contents to the history
list
-w write the current history to the history file
and append them to the history list
-p perform history expansion on each ARG and display the result
without storing it in the history list
Vendored
+3 -1
View File
@@ -1,5 +1,5 @@
#! /bin/sh
# From configure.ac for Bash 4.4, version 4.074.
# From configure.ac for Bash 4.4, version 4.075.
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for bash 4.4-beta.
#
@@ -16062,6 +16062,8 @@ case "${host_os}-${CC}" in
aix4.2*-*gcc*) LOCAL_LDFLAGS="-Xlinker -bexpall -Xlinker -brtl" ;;
aix4.2*) LOCAL_LDFLAGS="-bexpall -brtl" ;;
bsdi4*-*gcc*) LOCAL_LDFLAGS="-rdynamic" ;; # allow dynamic loading, like Linux
bsdi5*-*gcc*) LOCAL_LDFLAGS="-rdynamic" ;; # allow dynamic loading, like Linux
hpux11*-gcc*) LOCAL_LDFLAGS="-Wl,-E" ;; # allow dynamic loading
esac
case "${host_os}" in
+2 -2
View File
@@ -3925,10 +3925,10 @@ The \fIword\fP undergoes
brace expansion, tilde expansion, parameter and variable expansion,
command substitution, arithmetic expansion, and quote removal.
Pathname expansion and word splitting are not performed.
The result is supplied as a single string to the command on its
The result is supplied as a single string, with a newline appended,
to the command on its
standard input (or file descriptor \fIn\fP if \fIn\fP is specified).
.SS "Duplicating File Descriptors"
.PP
The redirection operator
.RS
+3 -1
View File
@@ -2745,7 +2745,9 @@ The @var{word} undergoes
brace expansion, tilde expansion, parameter and variable expansion,
command substitution, arithmetic expansion, and quote removal.
Pathname expansion and word splitting are not performed.
The result is supplied as a single string to the command on its
The result is supplied as a single string,
with a newline appended,
to the command on its
standard input (or file descriptor @var{n} if @var{n} is specified).
@subsection Duplicating File Descriptors
+13 -4
View File
@@ -2125,9 +2125,18 @@ get_original_tty_job_signals ()
if (fetched == 0)
{
get_original_signal (SIGTSTP);
get_original_signal (SIGTTIN);
get_original_signal (SIGTTOU);
if (interactive_shell)
{
set_original_signal (SIGTSTP, SIG_DFL);
set_original_signal (SIGTTIN, SIG_DFL);
set_original_signal (SIGTTOU, SIG_DFL);
}
else
{
get_original_signal (SIGTSTP);
get_original_signal (SIGTTIN);
get_original_signal (SIGTTOU);
}
fetched = 1;
}
}
@@ -2779,7 +2788,7 @@ if (job == NO_JOB)
itrace("wait_for: job == NO_JOB, giving the terminal to shell_pgrp (%ld)", (long)shell_pgrp);
#endif
/* Don't modify terminal pgrp if we are running in background or a subshell */
if (running_in_background == 0 && subshell_environment == 0)
if (running_in_background == 0 && (subshell_environment&(SUBSHELL_ASYNC|SUBSHELL_PIPE)) == 0)
give_terminal_to (shell_pgrp, 0);
}
+3 -1
View File
@@ -198,12 +198,14 @@ rl_tilde_expand (ignore, key)
xfree (homedir);
return (0);
}
else if (rl_line_buffer[start] != '~')
else if (start >= 0 && rl_line_buffer[start] != '~')
{
for (; !whitespace (rl_line_buffer[start]) && start >= 0; start--)
;
start++;
}
else if (start < 0)
start = 0;
end = start;
do
+8
View File
@@ -56,6 +56,7 @@
extern int line_number, current_command_line_count, parser_state;
extern int last_command_exit_value;
extern int shell_initialized;
/* Object caching */
sh_obj_cache_t wdcache = {0, 0, 0};
@@ -793,11 +794,18 @@ make_function_def (name, command, lineno, lstart)
if (bash_source_a && array_num_elements (bash_source_a) > 0)
temp->source_file = array_reference (bash_source_a, 0);
#endif
/* Assume that shell functions without a source file before the shell is
initialized come from the environment. Otherwise default to "main"
(usually functions being defined interactively) */
if (temp->source_file == 0)
temp->source_file = shell_initialized ? "main" : "environment";
#if defined (DEBUGGER)
bind_function_def (name->word, temp);
#endif
temp->source_file = temp->source_file ? savestring (temp->source_file) : 0;
return (make_command (cm_function_def, (SIMPLE_COM *)temp));
}
+12 -3
View File
@@ -614,9 +614,18 @@ get_original_tty_job_signals ()
if (fetched == 0)
{
#if defined (SIGTSTP)
get_original_signal (SIGTSTP);
get_original_signal (SIGTTIN);
get_original_signal (SIGTTOU);
if (interactive_shell)
{
set_original_signal (SIGTSTP, SIG_DFL);
set_original_signal (SIGTTIN, SIG_DFL);
set_original_signal (SIGTTOU, SIG_DFL);
}
else
{
get_original_signal (SIGTSTP);
get_original_signal (SIGTTIN);
get_original_signal (SIGTTOU);
}
#endif
fetched = 1;
}
+3 -1
View File
@@ -1847,7 +1847,9 @@ skip_to_delim (string, start, delims, flags)
i = skip_single_quoted (string, slen, ++i, SX_COMPLETE);
else if (c == '\'')
i = skip_single_quoted (string, slen, ++i, 0);
else if (histexp && c == '"')
/* The posixly_correct test makes posix-mode shells allow double quotes
to quote the history expansio character */
else if (histexp && posixly_correct == 0 && c == '"')
{
dquote = 1 - dquote;
i++;
+1 -1
View File
@@ -1,4 +1,4 @@
BUILD_DIR=/usr/local/build/chet/bash/bash-current
BUILD_DIR=/usr/local/build/bash/bash-current
THIS_SH=$BUILD_DIR/bash
PATH=$PATH:$BUILD_DIR
+5
View File
@@ -143,3 +143,8 @@ echo a b c d 2 > /dev/null
\!
\!
\!
a
b
c
echo "#!/bin/bash" set -o posix
#!/bin/bash set -o posix
+1
View File
@@ -129,3 +129,4 @@ echo !shopt-1
echo !shopt*
${THIS_SH} ./histexp1.sub
${THIS_SH} ./histexp2.sub
+11
View File
@@ -0,0 +1,11 @@
LANG=C LC_ALL=C
set -o history
echo a
echo b
echo c
set -o histexpand
set -o posix
echo "#!/bin/bash" !!