Bash-4.1 patchlevel 11

This commit is contained in:
Chet Ramey
2011-11-21 20:57:16 -05:00
parent 0001803f0b
commit 30d188c293
12 changed files with 49 additions and 15 deletions

View File

@@ -1680,7 +1680,7 @@ globword:
a single match (multiple matches that end up reducing the number of a single match (multiple matches that end up reducing the number of
characters in the common prefix are bad) will ever be returned on characters in the common prefix are bad) will ever be returned on
regular completion. */ regular completion. */
if (glob_pattern_p (hint)) if (globpat)
{ {
if (state == 0) if (state == 0)
{ {

View File

@@ -512,7 +512,7 @@ declare_internal (list, local_var)
{ {
/* let bind_{array,assoc}_variable take care of this. */ /* let bind_{array,assoc}_variable take care of this. */
if (assoc_p (var)) if (assoc_p (var))
bind_assoc_variable (var, name, "0", value, aflags); bind_assoc_variable (var, name, savestring ("0"), value, aflags);
else else
bind_array_variable (name, 0, value, aflags); bind_array_variable (name, 0, value, aflags);
} }

View File

@@ -303,6 +303,16 @@ fc_builtin (list)
rh = remember_on_history || ((subshell_environment & SUBSHELL_COMSUB) && enable_history_list); rh = remember_on_history || ((subshell_environment & SUBSHELL_COMSUB) && enable_history_list);
last_hist = i - rh - hist_last_line_added; last_hist = i - rh - hist_last_line_added;
/* XXX */
if (i == last_hist && hlist[last_hist] == 0)
while (last_hist >= 0 && hlist[last_hist] == 0)
last_hist--;
if (last_hist < 0)
{
sh_erange ((char *)NULL, _("history specification"));
return (EXECUTION_FAILURE);
}
if (list) if (list)
{ {
histbeg = fc_gethnum (list->word->word, hlist); histbeg = fc_gethnum (list->word->word, hlist);
@@ -465,7 +475,7 @@ fc_gethnum (command, hlist)
HIST_ENTRY **hlist; HIST_ENTRY **hlist;
{ {
int sign, n, clen, rh; int sign, n, clen, rh;
register int i, j; register int i, j, last_hist;
register char *s; register char *s;
sign = 1; sign = 1;
@@ -485,7 +495,15 @@ fc_gethnum (command, hlist)
has been enabled (interactive or not) should use it in the last_hist has been enabled (interactive or not) should use it in the last_hist
calculation as if it were on. */ calculation as if it were on. */
rh = remember_on_history || ((subshell_environment & SUBSHELL_COMSUB) && enable_history_list); rh = remember_on_history || ((subshell_environment & SUBSHELL_COMSUB) && enable_history_list);
i -= rh + hist_last_line_added; last_hist = i - rh - hist_last_line_added;
if (i == last_hist && hlist[last_hist] == 0)
while (last_hist >= 0 && hlist[last_hist] == 0)
last_hist--;
if (last_hist < 0)
return (-1);
i = last_hist;
/* No specification defaults to most recent command. */ /* No specification defaults to most recent command. */
if (command == NULL) if (command == NULL)

View File

@@ -117,7 +117,7 @@ extern int errno;
else if (have_fieldwidth) \ else if (have_fieldwidth) \
nw = vflag ? vbprintf (f, fieldwidth, func) : printf (f, fieldwidth, func); \ nw = vflag ? vbprintf (f, fieldwidth, func) : printf (f, fieldwidth, func); \
else if (have_precision) \ else if (have_precision) \
nw = vflag ? vbprintf (f, precision, func) : printf (f, fieldwidth, func); \ nw = vflag ? vbprintf (f, precision, func) : printf (f, precision, func); \
else \ else \
nw = vflag ? vbprintf (f, func) : printf (f, func); \ nw = vflag ? vbprintf (f, func) : printf (f, func); \
tw += nw; \ tw += nw; \
@@ -172,7 +172,7 @@ extern int asprintf __P((char **, const char *, ...)) __attribute__((__format__
#endif #endif
#if !HAVE_VSNPRINTF #if !HAVE_VSNPRINTF
extern int vsnprintf __P((char *, size_t, const char *, ...)) __attribute__((__format__ (printf, 3, 4))); extern int vsnprintf __P((char *, size_t, const char *, va_list)) __attribute__((__format__ (printf, 3, 0)));
#endif #endif
static void printf_erange __P((char *)); static void printf_erange __P((char *));

View File

@@ -615,14 +615,15 @@ add_char:
if (unbuffered_read == 0) if (unbuffered_read == 0)
zsyncfd (fd); zsyncfd (fd);
interrupt_immediately--;
terminate_immediately--;
discard_unwind_frame ("read_builtin"); discard_unwind_frame ("read_builtin");
retval = eof ? EXECUTION_FAILURE : EXECUTION_SUCCESS; retval = eof ? EXECUTION_FAILURE : EXECUTION_SUCCESS;
assign_vars: assign_vars:
interrupt_immediately--;
terminate_immediately--;
#if defined (ARRAY_VARS) #if defined (ARRAY_VARS)
/* If -a was given, take the string read, break it into a list of words, /* If -a was given, take the string read, break it into a list of words,
an assign them to `arrayname' in turn. */ an assign them to `arrayname' in turn. */

View File

@@ -2138,7 +2138,7 @@ rl_filename_completion_function (text, state)
All other entries except "." and ".." match. */ All other entries except "." and ".." match. */
if (filename_len == 0) if (filename_len == 0)
{ {
if (_rl_match_hidden_files == 0 && HIDDEN_FILE (entry->d_name)) if (_rl_match_hidden_files == 0 && HIDDEN_FILE (convfn))
continue; continue;
if (convfn[0] != '.' || if (convfn[0] != '.' ||
@@ -2219,7 +2219,7 @@ rl_filename_completion_function (text, state)
temp[dirlen++] = '/'; temp[dirlen++] = '/';
} }
strcpy (temp + dirlen, entry->d_name); strcpy (temp + dirlen, convfn);
} }
else else
temp = savestring (convfn); temp = savestring (convfn);

View File

@@ -5152,7 +5152,7 @@ decode_prompt_string (string)
{ {
t = strrchr (t_string, '/'); t = strrchr (t_string, '/');
if (t) if (t)
strcpy (t_string, t + 1); memmove (t_string, t + 1, strlen (t));
} }
} }
#undef ROOT_PATH #undef ROOT_PATH

View File

@@ -25,6 +25,6 @@
regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
looks for to find the patch level (for the sccs version string). */ looks for to find the patch level (for the sccs version string). */
#define PATCHLEVEL 0 #define PATCHLEVEL 11
#endif /* _PATCHLEVEL_H_ */ #endif /* _PATCHLEVEL_H_ */

View File

@@ -113,6 +113,12 @@ FILE *xtrace_fp = 0;
#define CHECK_XTRACE_FP xtrace_fp = (xtrace_fp ? xtrace_fp : stderr) #define CHECK_XTRACE_FP xtrace_fp = (xtrace_fp ? xtrace_fp : stderr)
#define PRINT_DEFERRED_HEREDOCS(x) \
do { \
if (deferred_heredocs) \
print_deferred_heredocs (x); \
} while (0)
/* Non-zero means the stuff being printed is inside of a function def. */ /* Non-zero means the stuff being printed is inside of a function def. */
static int inside_function_def; static int inside_function_def;
static int skip_this_indent; static int skip_this_indent;
@@ -560,13 +566,15 @@ print_for_command (for_command)
FOR_COM *for_command; FOR_COM *for_command;
{ {
print_for_command_head (for_command); print_for_command_head (for_command);
cprintf (";"); cprintf (";");
newline ("do\n"); newline ("do\n");
indentation += indentation_amount; indentation += indentation_amount;
make_command_string_internal (for_command->action); make_command_string_internal (for_command->action);
PRINT_DEFERRED_HEREDOCS ("");
semicolon (); semicolon ();
indentation -= indentation_amount; indentation -= indentation_amount;
newline ("done"); newline ("done");
} }

3
sig.c
View File

@@ -655,6 +655,9 @@ set_signal_handler (sig, handler)
act.sa_flags |= SA_INTERRUPT; /* XXX */ act.sa_flags |= SA_INTERRUPT; /* XXX */
else else
act.sa_flags |= SA_RESTART; /* XXX */ act.sa_flags |= SA_RESTART; /* XXX */
#else
if (sig == SIGCHLD)
act.sa_flags |= SA_RESTART;
#endif #endif
sigemptyset (&act.sa_mask); sigemptyset (&act.sa_mask);
sigemptyset (&oact.sa_mask); sigemptyset (&oact.sa_mask);

View File

@@ -3808,6 +3808,11 @@ push_func_var (data)
if (tempvar_p (var) && (posixly_correct || (var->attributes & att_propagate))) if (tempvar_p (var) && (posixly_correct || (var->attributes & att_propagate)))
{ {
/* Make sure we have a hash table to store the variable in while it is
being propagated down to the global variables table. Create one if
we have to */
if ((vc_isfuncenv (shell_variables) || vc_istempenv (shell_variables)) && shell_variables->table == 0)
shell_variables->table = hash_create (0);
/* XXX - should we set v->context here? */ /* XXX - should we set v->context here? */
v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0, 0); v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0, 0);
if (shell_variables == global_variables) if (shell_variables == global_variables)

View File

@@ -7481,7 +7481,7 @@ decode_prompt_string (string)
{ {
t = strrchr (t_string, '/'); t = strrchr (t_string, '/');
if (t) if (t)
strcpy (t_string, t + 1); memmove (t_string, t + 1, strlen (t));
} }
} }
#undef ROOT_PATH #undef ROOT_PATH
@@ -8243,4 +8243,3 @@ set_line_mbstate ()
} }
} }
#endif /* HANDLE_MULTIBYTE */ #endif /* HANDLE_MULTIBYTE */