diff --git a/.gitignore b/.gitignore index 72362fe..dc0eff1 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ bash-4.1.tar.gz /bash-4.3.tar.gz /bash-4.4.tar.gz /bash-5.0.tar.gz +/bash-5.1.tar.gz diff --git a/bash-2.05a-interpreter.patch b/bash-2.05a-interpreter.patch index 110e44d..e8ca4ca 100644 --- a/bash-2.05a-interpreter.patch +++ b/bash-2.05a-interpreter.patch @@ -1,8 +1,8 @@ diff --git a/config.h.in b/config.h.in -index 0adc903..366e639 100644 +index ab316d4..11d1d68 100644 --- a/config.h.in +++ b/config.h.in -@@ -758,6 +758,9 @@ +@@ -775,6 +775,9 @@ /* Define if you have the pselect function. */ #undef HAVE_PSELECT @@ -12,7 +12,7 @@ index 0adc903..366e639 100644 /* Define if you have the putenv function. */ #undef HAVE_PUTENV -@@ -956,6 +959,9 @@ +@@ -981,6 +984,9 @@ /* Define if you have the header file. */ #undef HAVE_DLFCN_H @@ -23,20 +23,20 @@ index 0adc903..366e639 100644 #undef HAVE_GRP_H diff --git a/configure.ac b/configure.ac -index 2c74f13..4e9c3a4 100644 +index 2fe3e7d..f1b7f1b 100644 --- a/configure.ac +++ b/configure.ac -@@ -782,7 +782,7 @@ dnl checks for system calls - AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getgroups gethostname \ - getpagesize getpeername getrlimit getrusage gettimeofday \ - kill killpg lstat pselect readlink select setdtablesize \ -- setitimer tcgetpgrp uname ulimit waitpid) -+ setitimer tcgetpgrp uname ulimit waitpid pread) +@@ -827,7 +827,7 @@ dnl checks for system calls + AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getentropy getgroups \ + gethostname getpagesize getpeername getrandom getrlimit \ + getrusage gettimeofday kill killpg lstat pselect readlink \ +- select setdtablesize setitimer tcgetpgrp uname ulimit waitpid) ++ select setdtablesize setitimer tcgetpgrp uname ulimit waitpid pread) AC_REPLACE_FUNCS(rename) dnl checks for c library functions diff --git a/execute_cmd.c b/execute_cmd.c -index 4eae19c..0af6f8f 100644 +index d2a0dd7..d2555ad 100644 --- a/execute_cmd.c +++ b/execute_cmd.c @@ -41,6 +41,10 @@ @@ -50,7 +50,7 @@ index 4eae19c..0af6f8f 100644 #include "posixtime.h" #if defined (HAVE_SYS_RESOURCE_H) && !defined (RLIMTYPE) -@@ -5706,6 +5710,14 @@ shell_execve (command, args, env) +@@ -5832,6 +5836,14 @@ shell_execve (command, args, env) { /* The file has the execute bits set, but the kernel refuses to run it for some reason. See why. */ @@ -65,7 +65,7 @@ index 4eae19c..0af6f8f 100644 #if defined (HAVE_HASH_BANG_EXEC) READ_SAMPLE_BUF (command, sample, sample_len); if (sample_len > 0) -@@ -5715,6 +5727,7 @@ shell_execve (command, args, env) +@@ -5841,6 +5853,7 @@ shell_execve (command, args, env) char *interp; int ilen; @@ -73,7 +73,7 @@ index 4eae19c..0af6f8f 100644 interp = getinterp (sample, sample_len, (int *)NULL); ilen = strlen (interp); errno = i; -@@ -5730,7 +5743,138 @@ shell_execve (command, args, env) +@@ -5856,7 +5869,138 @@ shell_execve (command, args, env) return (EX_NOEXEC); } #endif @@ -213,6 +213,3 @@ index 4eae19c..0af6f8f 100644 file_error (command); } return (last_command_exit_value); --- -2.17.2 - diff --git a/bash-3.2-ssh_source_bash.patch b/bash-3.2-ssh_source_bash.patch index 5bd19ce..e675957 100644 --- a/bash-3.2-ssh_source_bash.patch +++ b/bash-3.2-ssh_source_bash.patch @@ -1,12 +1,13 @@ -diff -up bash-4.0/config-top.h.ssh_source_bash bash-4.0/config-top.h ---- bash-4.0/config-top.h.ssh_source_bash 2009-01-21 15:20:06.000000000 +0100 -+++ bash-4.0/config-top.h 2009-01-21 15:25:46.000000000 +0100 -@@ -90,7 +90,7 @@ +diff --git a/config-top.h b/config-top.h +index e5cc147..f5e0a52 100644 +--- a/config-top.h ++++ b/config-top.h +@@ -106,7 +106,7 @@ sshd and source the .bashrc if so (like the rshd behavior). This checks for the presence of SSH_CLIENT or SSH2_CLIENT in the initial environment, which can be fooled under certain not-uncommon circumstances. */ -/* #define SSH_SOURCE_BASHRC */ +#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). */ diff --git a/bash-4.3-memleak-lc_all.patch b/bash-4.3-memleak-lc_all.patch index 77e86de..4de1753 100644 --- a/bash-4.3-memleak-lc_all.patch +++ b/bash-4.3-memleak-lc_all.patch @@ -1,12 +1,13 @@ -diff -up bash-4.3/locale.c.old bash-4.3/locale.c ---- bash-4.3/locale.c.old 2015-07-15 11:55:00.002857301 +0200 -+++ bash-4.3/locale.c 2015-07-15 11:48:36.698086257 +0200 -@@ -77,8 +77,6 @@ set_default_locale () +diff --git a/locale.c b/locale.c +index 17ccc58..a6c07a3 100644 +--- a/locale.c ++++ b/locale.c +@@ -78,8 +78,6 @@ set_default_locale () { #if defined (HAVE_SETLOCALE) default_locale = setlocale (LC_ALL, ""); - if (default_locale) - default_locale = savestring (default_locale); + #else + default_locale = savestring ("C"); #endif /* HAVE_SETLOCALE */ - bindtextdomain (PACKAGE, LOCALEDIR); - textdomain (PACKAGE); diff --git a/bash-4.3-noecho.patch b/bash-4.3-noecho.patch index 8adf36d..f20cd6f 100644 --- a/bash-4.3-noecho.patch +++ b/bash-4.3-noecho.patch @@ -1,8 +1,8 @@ diff --git a/parse.y b/parse.y -index 07e6e3e..4cd373f 100644 +index df1231d..2449fa8 100644 --- a/parse.y +++ b/parse.y -@@ -4410,6 +4410,8 @@ xparse_dolparen (base, string, indp, flags) +@@ -4482,6 +4482,8 @@ xparse_dolparen (base, string, indp, flags) save_parser_state (&ps); save_input_line_state (&ls); orig_eof_token = shell_eof_token; @@ -12,18 +12,18 @@ index 07e6e3e..4cd373f 100644 saved_pushed_strings = pushed_string_list; /* separate parsing context */ pushed_string_list = (STRING_SAVER *)NULL; diff --git a/subst.c b/subst.c -index 9559187..0c2caa6 100644 +index 9ccbf33..8a9ee5c 100644 --- a/subst.c +++ b/subst.c -@@ -9145,6 +9145,7 @@ param_expand (string, sindex, quoted, expanded_something, - WORD_LIST *list; +@@ -9453,6 +9453,7 @@ param_expand (string, sindex, quoted, expanded_something, + WORD_LIST *list, *l; WORD_DESC *tdesc, *ret; - int tflag; + int tflag, nullarg; + int old_echo_input; /*itrace("param_expand: `%s' pflags = %d", string+*sindex, pflags);*/ zindex = *sindex; -@@ -9514,6 +9515,9 @@ arithsub: +@@ -9843,6 +9844,9 @@ arithsub: } comsub: @@ -33,7 +33,7 @@ index 9559187..0c2caa6 100644 if (pflags & PF_NOCOMSUB) /* we need zindex+1 because string[zindex] == RPAREN */ temp1 = substring (string, *sindex, zindex+1); -@@ -9526,6 +9530,7 @@ comsub: +@@ -9855,6 +9859,7 @@ comsub: } FREE (temp); temp = temp1; @@ -41,6 +41,3 @@ index 9559187..0c2caa6 100644 break; /* Do POSIX.2d9-style arithmetic substitution. This will probably go --- -2.17.2 - diff --git a/bash-5.0-patch-1.patch b/bash-5.0-patch-1.patch deleted file mode 100644 index 254fd9e..0000000 --- a/bash-5.0-patch-1.patch +++ /dev/null @@ -1,150 +0,0 @@ -From 4d2e315490b778707b3a3afdfc514d5083a97a11 Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Fri, 18 Jan 2019 15:12:37 -0500 -Subject: [PATCH] Bash-5.0 patch 1: fix pathname expansion of directory names - containing backslashes - ---- - bashline.c | 62 +++++++++++++++++++++++++++++++++++++++++--- - lib/glob/glob_loop.c | 6 ----- - patchlevel.h | 2 +- - 3 files changed, 60 insertions(+), 10 deletions(-) - -diff --git a/bashline.c b/bashline.c -index 2846aabf..75e79f1a 100644 ---- a/bashline.c -+++ b/bashline.c -@@ -231,6 +231,7 @@ static int bash_possible_variable_completions __P((int, int)); - static int bash_complete_command __P((int, int)); - static int bash_possible_command_completions __P((int, int)); - -+static int completion_glob_pattern __P((char *)); - static char *glob_complete_word __P((const char *, int)); - static int bash_glob_completion_internal __P((int)); - static int bash_glob_complete_word __P((int, int)); -@@ -1741,7 +1742,7 @@ bash_default_completion (text, start, end, qc, compflags) - - /* This could be a globbing pattern, so try to expand it using pathname - expansion. */ -- if (!matches && glob_pattern_p (text)) -+ if (!matches && completion_glob_pattern ((char *)text)) - { - matches = rl_completion_matches (text, glob_complete_word); - /* A glob expression that matches more than one filename is problematic. -@@ -1850,7 +1851,7 @@ command_word_completion_function (hint_text, state) - glob_matches = (char **)NULL; - } - -- globpat = glob_pattern_p (hint_text); -+ globpat = completion_glob_pattern ((char *)hint_text); - - /* If this is an absolute program name, do not check it against - aliases, reserved words, functions or builtins. We must check -@@ -3713,6 +3714,61 @@ bash_complete_command_internal (what_to_do) - return bash_specific_completion (what_to_do, command_word_completion_function); - } - -+static int -+completion_glob_pattern (string) -+ char *string; -+{ -+ register int c; -+ char *send; -+ int open; -+ -+ DECLARE_MBSTATE; -+ -+ open = 0; -+ send = string + strlen (string); -+ -+ while (c = *string++) -+ { -+ switch (c) -+ { -+ case '?': -+ case '*': -+ return (1); -+ -+ case '[': -+ open++; -+ continue; -+ -+ case ']': -+ if (open) -+ return (1); -+ continue; -+ -+ case '+': -+ case '@': -+ case '!': -+ if (*string == '(') /*)*/ -+ return (1); -+ continue; -+ -+ case '\\': -+ if (*string == 0) -+ return (0); -+ } -+ -+ /* Advance one fewer byte than an entire multibyte character to -+ account for the auto-increment in the loop above. */ -+#ifdef HANDLE_MULTIBYTE -+ string--; -+ ADVANCE_CHAR_P (string, send - string); -+ string++; -+#else -+ ADVANCE_CHAR_P (string, send - string); -+#endif -+ } -+ return (0); -+} -+ - static char *globtext; - static char *globorig; - -@@ -3877,7 +3933,7 @@ bash_vi_complete (count, key) - t = substring (rl_line_buffer, p, rl_point); - } - -- if (t && glob_pattern_p (t) == 0) -+ if (t && completion_glob_pattern (t) == 0) - rl_explicit_arg = 1; /* XXX - force glob_complete_word to append `*' */ - FREE (t); - -diff --git a/lib/glob/glob_loop.c b/lib/glob/glob_loop.c -index 5f319cc2..7d6ae211 100644 ---- a/lib/glob/glob_loop.c -+++ b/lib/glob/glob_loop.c -@@ -54,17 +54,11 @@ INTERNAL_GLOB_PATTERN_P (pattern) - continue; - - case L('\\'): --#if 0 - /* Don't let the pattern end in a backslash (GMATCH returns no match - if the pattern ends in a backslash anyway), but otherwise return 1, - since the matching engine uses backslash as an escape character - and it can be removed. */ - return (*p != L('\0')); --#else -- /* The pattern may not end with a backslash. */ -- if (*p++ == L('\0')) -- return 0; --#endif - } - - return 0; -diff --git a/patchlevel.h b/patchlevel.h -index 1cd7c96c..40db1a32 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 0 -+#define PATCHLEVEL 1 - - #endif /* _PATCHLEVEL_H_ */ --- -2.17.2 - diff --git a/bash-5.0-patch-10.patch b/bash-5.0-patch-10.patch deleted file mode 100644 index b9b916e..0000000 --- a/bash-5.0-patch-10.patch +++ /dev/null @@ -1,116 +0,0 @@ -From 6a3116f58c876ca58a786f0ddff578ecf126588e Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Thu, 29 Aug 2019 11:20:15 -0400 -Subject: [PATCH] Bash-5.0 patch 10: changes to posix-mode assignment - statements preceding functions and special builtins - ---- - patchlevel.h | 2 +- - tests/varenv.right | 6 +++--- - variables.c | 38 ++++++++++++++++++++++++++------------ - 3 files changed, 30 insertions(+), 16 deletions(-) - -diff --git a/patchlevel.h b/patchlevel.h -index 02f1d606..8002af70 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 9 -+#define PATCHLEVEL 10 - - #endif /* _PATCHLEVEL_H_ */ -diff --git a/tests/varenv.right b/tests/varenv.right -index 159a8773..ca7d4cf1 100644 ---- a/tests/varenv.right -+++ b/tests/varenv.right -@@ -146,9 +146,9 @@ declare -x foo="abc" - inside: declare -x var="value" - outside: declare -- var="one" - inside: declare -x var="value" --outside: declare -x var="value" --inside: declare -- var="local" --outside: declare -x var="global" -+outside: declare -- var="outside" -+inside: declare -x var="global" -+outside: declare -- var="outside" - foo= environment foo= - foo=foo environment foo=foo - foo=foo environment foo=foo -diff --git a/variables.c b/variables.c -index 610629ab..af3fd04a 100644 ---- a/variables.c -+++ b/variables.c -@@ -4460,9 +4460,9 @@ char **tempvar_list; - int tvlist_ind; - - /* Take a variable from an assignment statement preceding a posix special -- builtin (including `return') and create a global variable from it. This -- is called from merge_temporary_env, which is only called when in posix -- mode. */ -+ builtin (including `return') and create a variable from it as if a -+ standalone assignment statement had been performed. This is called from -+ merge_temporary_env, which is only called when in posix mode. */ - static void - push_posix_temp_var (data) - PTR_T data; -@@ -4472,16 +4472,27 @@ push_posix_temp_var (data) - - var = (SHELL_VAR *)data; - -- binding_table = global_variables->table; -- if (binding_table == 0) -- binding_table = global_variables->table = hash_create (VARIABLES_HASH_BUCKETS); -+ /* Just like do_assignment_internal(). This makes assignments preceding -+ special builtins act like standalone assignment statements when in -+ posix mode, satisfying the posix requirement that this affect the -+ "current execution environment." */ -+ v = bind_variable (var->name, value_cell (var), ASS_FORCE|ASS_NOLONGJMP); - -- v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, ASS_FORCE|ASS_NOLONGJMP); -+ /* If this modifies an existing local variable, v->context will be non-zero. -+ If it comes back with v->context == 0, we bound at the global context. -+ Set binding_table appropriately. It doesn't matter whether it's correct -+ if the variable is local, only that it's not global_variables->table */ -+ binding_table = v->context ? shell_variables->table : global_variables->table; - - /* global variables are no longer temporary and don't need propagating. */ -- var->attributes &= ~(att_tempvar|att_propagate); -+ if (binding_table == global_variables->table) -+ var->attributes &= ~(att_tempvar|att_propagate); -+ - if (v) -- v->attributes |= var->attributes; -+ { -+ v->attributes |= var->attributes; -+ v->attributes &= ~att_tempvar; /* not a temp var now */ -+ } - - if (find_special_var (var->name) >= 0) - tempvar_list[tvlist_ind++] = savestring (var->name); -@@ -4575,14 +4586,17 @@ dispose_temporary_env (pushf) - sh_free_func_t *pushf; - { - int i; -+ HASH_TABLE *disposer; - - tempvar_list = strvec_create (HASH_ENTRIES (temporary_env) + 1); - tempvar_list[tvlist_ind = 0] = 0; -- -- hash_flush (temporary_env, pushf); -- hash_dispose (temporary_env); -+ -+ disposer = temporary_env; - temporary_env = (HASH_TABLE *)NULL; - -+ hash_flush (disposer, pushf); -+ hash_dispose (disposer); -+ - tempvar_list[tvlist_ind] = 0; - - array_needs_making = 1; --- -2.21.0 - diff --git a/bash-5.0-patch-11.patch b/bash-5.0-patch-11.patch deleted file mode 100644 index 3a4172e..0000000 --- a/bash-5.0-patch-11.patch +++ /dev/null @@ -1,50 +0,0 @@ -From d894cfd104086ddf68c286e67a5fb2e02eb43b7b Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Thu, 29 Aug 2019 11:21:20 -0400 -Subject: [PATCH] Bash-5.0 patch 11: fix quoted null character removal in - operands of conditional ([[) commands - ---- - patchlevel.h | 2 +- - subst.c | 6 +++++- - 2 files changed, 6 insertions(+), 2 deletions(-) - -diff --git a/patchlevel.h b/patchlevel.h -index 8002af70..772676c8 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 10 -+#define PATCHLEVEL 11 - - #endif /* _PATCHLEVEL_H_ */ -diff --git a/subst.c b/subst.c -index 95591878..fd6db240 100644 ---- a/subst.c -+++ b/subst.c -@@ -3625,7 +3625,9 @@ remove_backslashes (string) - this case, we quote the string specially for the globbing code. If - SPECIAL is 2, this is an rhs argument for the =~ operator, and should - be quoted appropriately for regcomp/regexec. The caller is responsible -- for removing the backslashes if the unquoted word is needed later. */ -+ for removing the backslashes if the unquoted word is needed later. In -+ any case, since we don't perform word splitting, we need to do quoted -+ null character removal. */ - char * - cond_expand_word (w, special) - WORD_DESC *w; -@@ -3646,6 +3648,8 @@ cond_expand_word (w, special) - { - if (special == 0) /* LHS */ - { -+ if (l->word) -+ word_list_remove_quoted_nulls (l); - dequote_list (l); - r = string_list (l); - } --- -2.21.0 - diff --git a/bash-5.0-patch-12.patch b/bash-5.0-patch-12.patch deleted file mode 100644 index 3b383b1..0000000 --- a/bash-5.0-patch-12.patch +++ /dev/null @@ -1,56 +0,0 @@ -From b0852fb54efbcee630847fcfdc435133f82043b9 Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Fri, 7 Feb 2020 15:16:28 -0500 -Subject: [PATCH] Bash-5.0 patch 12: fix problems moving back beyond start of - history - ---- - lib/readline/misc.c | 5 ++++- - patchlevel.h | 2 +- - 2 files changed, 5 insertions(+), 2 deletions(-) - -diff --git a/lib/readline/misc.c b/lib/readline/misc.c -index 64b1457d..42005b0c 100644 ---- a/lib/readline/misc.c -+++ b/lib/readline/misc.c -@@ -576,6 +576,7 @@ int - rl_get_previous_history (int count, int key) - { - HIST_ENTRY *old_temp, *temp; -+ int had_saved_line; - - if (count < 0) - return (rl_get_next_history (-count, key)); -@@ -588,6 +589,7 @@ rl_get_previous_history (int count, int key) - _rl_history_saved_point = (rl_point == rl_end) ? -1 : rl_point; - - /* If we don't have a line saved, then save this one. */ -+ had_saved_line = _rl_saved_line_for_history != 0; - rl_maybe_save_line (); - - /* If the current line has changed, save the changes. */ -@@ -611,7 +613,8 @@ rl_get_previous_history (int count, int key) - - if (temp == 0) - { -- rl_maybe_unsave_line (); -+ if (had_saved_line == 0) -+ _rl_free_saved_history_line (); - rl_ding (); - } - else -diff --git a/patchlevel.h b/patchlevel.h -index 772676c8..93dbe0db 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 11 -+#define PATCHLEVEL 12 - - #endif /* _PATCHLEVEL_H_ */ --- -2.25.1 - diff --git a/bash-5.0-patch-13.patch b/bash-5.0-patch-13.patch deleted file mode 100644 index f9060ae..0000000 --- a/bash-5.0-patch-13.patch +++ /dev/null @@ -1,62 +0,0 @@ -From f747f9ff4c8aed2d51fa54db3cb10e8118034753 Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Fri, 7 Feb 2020 15:17:29 -0500 -Subject: [PATCH] Bash-5.0 patch 13: reading history entries with timestamps - can result in joined entries - ---- - lib/readline/histfile.c | 15 ++++++++++++++- - patchlevel.h | 2 +- - 2 files changed, 15 insertions(+), 2 deletions(-) - -diff --git a/lib/readline/histfile.c b/lib/readline/histfile.c -index a8a92aa3..6c3adc9b 100644 ---- a/lib/readline/histfile.c -+++ b/lib/readline/histfile.c -@@ -369,9 +369,11 @@ read_history_range (const char *filename, int from, int to) - } - - has_timestamps = HIST_TIMESTAMP_START (buffer); -- history_multiline_entries += has_timestamps && history_write_timestamps; -+ history_multiline_entries += has_timestamps && history_write_timestamps; - - /* Skip lines until we are at FROM. */ -+ if (has_timestamps) -+ last_ts = buffer; - for (line_start = line_end = buffer; line_end < bufend && current_line < from; line_end++) - if (*line_end == '\n') - { -@@ -380,7 +382,18 @@ read_history_range (const char *filename, int from, int to) - line. We should check more extensively here... */ - if (HIST_TIMESTAMP_START(p) == 0) - current_line++; -+ else -+ last_ts = p; - line_start = p; -+ /* If we are at the last line (current_line == from) but we have -+ timestamps (has_timestamps), then line_start points to the -+ text of the last command, and we need to skip to its end. */ -+ if (current_line >= from && has_timestamps) -+ { -+ for (line_end = p; line_end < bufend && *line_end != '\n'; line_end++) -+ ; -+ line_start = (*line_end == '\n') ? line_end + 1 : line_end; -+ } - } - - /* If there are lines left to gobble, then gobble them now. */ -diff --git a/patchlevel.h b/patchlevel.h -index 93dbe0db..779671cd 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 12 -+#define PATCHLEVEL 13 - - #endif /* _PATCHLEVEL_H_ */ --- -2.25.1 - diff --git a/bash-5.0-patch-14.patch b/bash-5.0-patch-14.patch deleted file mode 100644 index efc0ee5..0000000 --- a/bash-5.0-patch-14.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 8b6524c482573ea12eb20be756cdb8ca31d945f3 Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Fri, 7 Feb 2020 15:18:41 -0500 -Subject: [PATCH] Bash-5.0 patch 14: edit-and-execute-command does not handle - empty command lines - ---- - bashline.c | 7 ++----- - patchlevel.h | 2 +- - 2 files changed, 3 insertions(+), 6 deletions(-) - -diff --git a/bashline.c b/bashline.c -index 824ea9d9..97adaa0f 100644 ---- a/bashline.c -+++ b/bashline.c -@@ -961,11 +961,8 @@ edit_and_execute_command (count, c, editing_mode, edit_command) - /* This breaks down when using command-oriented history and are not - finished with the command, so we should not ignore the last command */ - using_history (); -- if (rl_line_buffer[0]) -- { -- current_command_line_count++; /* for rl_newline above */ -- bash_add_history (rl_line_buffer); -- } -+ current_command_line_count++; /* for rl_newline above */ -+ bash_add_history (rl_line_buffer); - current_command_line_count = 0; /* for dummy history entry */ - bash_add_history (""); - history_lines_this_session++; -diff --git a/patchlevel.h b/patchlevel.h -index 779671cd..09a3cc84 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 13 -+#define PATCHLEVEL 14 - - #endif /* _PATCHLEVEL_H_ */ --- -2.25.1 - diff --git a/bash-5.0-patch-15.patch b/bash-5.0-patch-15.patch deleted file mode 100644 index ce5e72f..0000000 --- a/bash-5.0-patch-15.patch +++ /dev/null @@ -1,64 +0,0 @@ -From ad1b3e68229273b4983b607c5eeb56551536c583 Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Fri, 7 Feb 2020 15:19:53 -0500 -Subject: [PATCH] Bash-5.0 patch 15: aliases and -c commands can cause - premature termination - ---- - builtins/evalstring.c | 6 ++++-- - patchlevel.h | 2 +- - 2 files changed, 5 insertions(+), 3 deletions(-) - -diff --git a/builtins/evalstring.c b/builtins/evalstring.c -index cadc9bc0..2f13a66a 100644 ---- a/builtins/evalstring.c -+++ b/builtins/evalstring.c -@@ -91,6 +91,7 @@ should_suppress_fork (command) - return (startup_state == 2 && parse_and_execute_level == 1 && - running_trap == 0 && - *bash_input.location.string == '\0' && -+ parser_expanding_alias () == 0 && - command->type == cm_simple && - signal_is_trapped (EXIT_TRAP) == 0 && - signal_is_trapped (ERROR_TRAP) == 0 && -@@ -105,6 +106,7 @@ can_optimize_connection (command) - COMMAND *command; - { - return (*bash_input.location.string == '\0' && -+ parser_expanding_alias () == 0 && - (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR || command->value.Connection->connector == ';') && - command->value.Connection->second->type == cm_simple); - } -@@ -290,7 +292,7 @@ parse_and_execute (string, from_file, flags) - - with_input_from_string (string, from_file); - clear_shell_input_line (); -- while (*(bash_input.location.string)) -+ while (*(bash_input.location.string) || parser_expanding_alias ()) - { - command = (COMMAND *)NULL; - -@@ -545,7 +547,7 @@ parse_string (string, from_file, flags, endp) - ostring = string; - - with_input_from_string (string, from_file); -- while (*(bash_input.location.string)) -+ while (*(bash_input.location.string)) /* XXX - parser_expanding_alias () ? */ - { - command = (COMMAND *)NULL; - -diff --git a/patchlevel.h b/patchlevel.h -index 09a3cc84..6e9ed3fc 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 14 -+#define PATCHLEVEL 15 - - #endif /* _PATCHLEVEL_H_ */ --- -2.25.1 - diff --git a/bash-5.0-patch-16.patch b/bash-5.0-patch-16.patch deleted file mode 100644 index a5e710d..0000000 --- a/bash-5.0-patch-16.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 6c6454cb18d7cd30b3b26d5ba6479431e599f3ed Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Fri, 7 Feb 2020 15:20:38 -0500 -Subject: [PATCH] Bash-5.0 patch 16: bash waits too long to reap /dev/fd - process substitutions with loops and group commands - ---- - execute_cmd.c | 16 ++++++++++++++++ - patchlevel.h | 2 +- - 2 files changed, 17 insertions(+), 1 deletion(-) - -diff --git a/execute_cmd.c b/execute_cmd.c -index f1d74bfe..3864986d 100644 ---- a/execute_cmd.c -+++ b/execute_cmd.c -@@ -1103,6 +1103,22 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, - free ((void *)ofifo_list); - discard_unwind_frame ("internal_fifos"); - } -+# if defined (HAVE_DEV_FD) -+ /* Reap process substitutions at the end of loops */ -+ switch (command->type) -+ { -+ case cm_while: -+ case cm_until: -+ case cm_for: -+ case cm_group: -+# if defined (ARITH_FOR_COMMAND) -+ case cm_arith_for: -+# endif -+ reap_procsubs (); -+ default: -+ break; -+ } -+# endif /* HAVE_DEV_FD */ - #endif - - /* Invert the return value if we have to */ -diff --git a/patchlevel.h b/patchlevel.h -index 6e9ed3fc..9074f4dd 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 15 -+#define PATCHLEVEL 16 - - #endif /* _PATCHLEVEL_H_ */ --- -2.25.1 - diff --git a/bash-5.0-patch-17.patch b/bash-5.0-patch-17.patch deleted file mode 100644 index bca2d4d..0000000 --- a/bash-5.0-patch-17.patch +++ /dev/null @@ -1,213 +0,0 @@ -From 9e49d343e3cd7e20dad1b86ebfb764e8027596a7 Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Fri, 24 Apr 2020 11:05:06 -0400 -Subject: [PATCH] Bash-5.0 patch 17: better fix for reaping process - substitution file descriptors - ---- - execute_cmd.c | 26 ++++++-------------------- - patchlevel.h | 2 +- - subst.c | 35 +++++++++++++++++++++-------------- - subst.h | 5 ++--- - 4 files changed, 30 insertions(+), 38 deletions(-) - -diff --git a/execute_cmd.c b/execute_cmd.c -index 3864986d..4a05758d 100644 ---- a/execute_cmd.c -+++ b/execute_cmd.c -@@ -564,7 +564,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, - volatile int save_line_number; - #if defined (PROCESS_SUBSTITUTION) - volatile int ofifo, nfifo, osize, saved_fifo; -- volatile char *ofifo_list; -+ volatile void *ofifo_list; - #endif - - if (breaking || continuing) -@@ -750,12 +750,14 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, - reap_procsubs (); - # endif - -- if (variable_context != 0) /* XXX - also if sourcelevel != 0? */ -+ /* XXX - also if sourcelevel != 0? */ -+ if (variable_context != 0) - { - ofifo = num_fifos (); - ofifo_list = copy_fifo_list ((int *)&osize); - begin_unwind_frame ("internal_fifos"); -- add_unwind_protect (xfree, ofifo_list); -+ if (ofifo_list) -+ add_unwind_protect (xfree, ofifo_list); - saved_fifo = 1; - } - else -@@ -1099,26 +1101,10 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, - { - nfifo = num_fifos (); - if (nfifo > ofifo) -- close_new_fifos ((char *)ofifo_list, osize); -+ close_new_fifos ((void *)ofifo_list, osize); - free ((void *)ofifo_list); - discard_unwind_frame ("internal_fifos"); - } --# if defined (HAVE_DEV_FD) -- /* Reap process substitutions at the end of loops */ -- switch (command->type) -- { -- case cm_while: -- case cm_until: -- case cm_for: -- case cm_group: --# if defined (ARITH_FOR_COMMAND) -- case cm_arith_for: --# endif -- reap_procsubs (); -- default: -- break; -- } --# endif /* HAVE_DEV_FD */ - #endif - - /* Invert the return value if we have to */ -diff --git a/patchlevel.h b/patchlevel.h -index 9074f4dd..98e714da 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 16 -+#define PATCHLEVEL 17 - - #endif /* _PATCHLEVEL_H_ */ -diff --git a/subst.c b/subst.c -index fd6db240..8884b487 100644 ---- a/subst.c -+++ b/subst.c -@@ -5336,13 +5336,13 @@ clear_fifo_list () - { - } - --char * -+void * - copy_fifo_list (sizep) - int *sizep; - { - if (sizep) - *sizep = 0; -- return (char *)NULL; -+ return (void *)NULL; - } - - static void -@@ -5408,8 +5408,13 @@ unlink_fifo_list () - for (i = j = 0; i < nfifo; i++) - if (fifo_list[i].file) - { -- fifo_list[j].file = fifo_list[i].file; -- fifo_list[j].proc = fifo_list[i].proc; -+ if (i != j) -+ { -+ fifo_list[j].file = fifo_list[i].file; -+ fifo_list[j].proc = fifo_list[i].proc; -+ fifo_list[i].file = (char *)NULL; -+ fifo_list[i].proc = 0; -+ } - j++; - } - nfifo = j; -@@ -5425,10 +5430,11 @@ unlink_fifo_list () - case it's larger than fifo_list_size (size of fifo_list). */ - void - close_new_fifos (list, lsize) -- char *list; -+ void *list; - int lsize; - { - int i; -+ char *plist; - - if (list == 0) - { -@@ -5436,8 +5442,8 @@ close_new_fifos (list, lsize) - return; - } - -- for (i = 0; i < lsize; i++) -- if (list[i] == 0 && i < fifo_list_size && fifo_list[i].proc != -1) -+ for (plist = (char *)list, i = 0; i < lsize; i++) -+ if (plist[i] == 0 && i < fifo_list_size && fifo_list[i].proc != -1) - unlink_fifo (i); - - for (i = lsize; i < fifo_list_size; i++) -@@ -5559,22 +5565,22 @@ clear_fifo_list () - nfds = 0; - } - --char * -+void * - copy_fifo_list (sizep) - int *sizep; - { -- char *ret; -+ void *ret; - - if (nfds == 0 || totfds == 0) - { - if (sizep) - *sizep = 0; -- return (char *)NULL; -+ return (void *)NULL; - } - - if (sizep) - *sizep = totfds; -- ret = (char *)xmalloc (totfds * sizeof (pid_t)); -+ ret = xmalloc (totfds * sizeof (pid_t)); - return (memcpy (ret, dev_fd_list, totfds * sizeof (pid_t))); - } - -@@ -5647,10 +5653,11 @@ unlink_fifo_list () - totfds (size of dev_fd_list). */ - void - close_new_fifos (list, lsize) -- char *list; -+ void *list; - int lsize; - { - int i; -+ pid_t *plist; - - if (list == 0) - { -@@ -5658,8 +5665,8 @@ close_new_fifos (list, lsize) - return; - } - -- for (i = 0; i < lsize; i++) -- if (list[i] == 0 && i < totfds && dev_fd_list[i]) -+ for (plist = (pid_t *)list, i = 0; i < lsize; i++) -+ if (plist[i] == 0 && i < totfds && dev_fd_list[i]) - unlink_fifo (i); - - for (i = lsize; i < totfds; i++) -diff --git a/subst.h b/subst.h -index 34763222..faf831bd 100644 ---- a/subst.h -+++ b/subst.h -@@ -273,9 +273,8 @@ extern int num_fifos __P((void)); - extern void unlink_fifo_list __P((void)); - extern void unlink_fifo __P((int)); - --extern char *copy_fifo_list __P((int *)); --extern void unlink_new_fifos __P((char *, int)); --extern void close_new_fifos __P((char *, int)); -+extern void *copy_fifo_list __P((int *)); -+extern void close_new_fifos __P((void *, int)); - - extern void clear_fifo_list __P((void)); - --- -2.25.1 - diff --git a/bash-5.0-patch-2.patch b/bash-5.0-patch-2.patch deleted file mode 100644 index b9858ae..0000000 --- a/bash-5.0-patch-2.patch +++ /dev/null @@ -1,96 +0,0 @@ -From ddf3f643cb9b9a2ca8e6d996c605e4332204874c Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Fri, 18 Jan 2019 15:13:57 -0500 -Subject: [PATCH] Bash-5.0 patch 2: fix expansion of aliases whose value ends - with an unquoted tab - ---- - parse.y | 5 ++++- - parser.h | 1 + - patchlevel.h | 2 +- - y.tab.c | 5 ++++- - 4 files changed, 10 insertions(+), 3 deletions(-) - -diff --git a/parse.y b/parse.y -index 3ff87bcc..07e6e3e4 100644 ---- a/parse.y -+++ b/parse.y -@@ -2557,12 +2557,14 @@ next_alias_char: - if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE && - pushed_string_list->flags != PSH_DPAREN && - (parser_state & PST_COMMENT) == 0 && -+ (parser_state & PST_ENDALIAS) == 0 && /* only once */ - shell_input_line_index > 0 && -- shell_input_line[shell_input_line_index-1] != ' ' && -+ shellblank (shell_input_line[shell_input_line_index-1]) == 0 && - shell_input_line[shell_input_line_index-1] != '\n' && - shellmeta (shell_input_line[shell_input_line_index-1]) == 0 && - (current_delimiter (dstack) != '\'' && current_delimiter (dstack) != '"')) - { -+ parser_state |= PST_ENDALIAS; - return ' '; /* END_ALIAS */ - } - #endif -@@ -2571,6 +2573,7 @@ pop_alias: - /* This case works for PSH_DPAREN as well */ - if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE) - { -+ parser_state &= ~PST_ENDALIAS; - pop_string (); - uc = shell_input_line[shell_input_line_index]; - if (uc) -diff --git a/parser.h b/parser.h -index 54dd2c88..6d08915d 100644 ---- a/parser.h -+++ b/parser.h -@@ -47,6 +47,7 @@ - #define PST_REPARSE 0x040000 /* re-parsing in parse_string_to_word_list */ - #define PST_REDIRLIST 0x080000 /* parsing a list of redirections preceding a simple command name */ - #define PST_COMMENT 0x100000 /* parsing a shell comment; used by aliases */ -+#define PST_ENDALIAS 0x200000 /* just finished expanding and consuming an alias */ - - /* Definition of the delimiter stack. Needed by parse.y and bashhist.c. */ - struct dstack { -diff --git a/patchlevel.h b/patchlevel.h -index 40db1a32..a988d852 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 1 -+#define PATCHLEVEL 2 - - #endif /* _PATCHLEVEL_H_ */ -diff --git a/y.tab.c b/y.tab.c -index 1abe2c50..7efce3c8 100644 ---- a/y.tab.c -+++ b/y.tab.c -@@ -4873,12 +4873,14 @@ next_alias_char: - if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE && - pushed_string_list->flags != PSH_DPAREN && - (parser_state & PST_COMMENT) == 0 && -+ (parser_state & PST_ENDALIAS) == 0 && /* only once */ - shell_input_line_index > 0 && -- shell_input_line[shell_input_line_index-1] != ' ' && -+ shellblank (shell_input_line[shell_input_line_index-1]) == 0 && - shell_input_line[shell_input_line_index-1] != '\n' && - shellmeta (shell_input_line[shell_input_line_index-1]) == 0 && - (current_delimiter (dstack) != '\'' && current_delimiter (dstack) != '"')) - { -+ parser_state |= PST_ENDALIAS; - return ' '; /* END_ALIAS */ - } - #endif -@@ -4887,6 +4889,7 @@ pop_alias: - /* This case works for PSH_DPAREN as well */ - if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE) - { -+ parser_state &= ~PST_ENDALIAS; - pop_string (); - uc = shell_input_line[shell_input_line_index]; - if (uc) --- -2.17.2 - diff --git a/bash-5.0-patch-3.patch b/bash-5.0-patch-3.patch deleted file mode 100644 index 509f52e..0000000 --- a/bash-5.0-patch-3.patch +++ /dev/null @@ -1,202 +0,0 @@ -From fcf6ae7d069a64741e9484cf219d7fe95de9e796 Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Tue, 19 Mar 2019 10:05:39 -0400 -Subject: [PATCH] Bash-5.0 patch 3: improvements when globbing directory names - containing backslashes - ---- - bashline.c | 2 +- - lib/glob/glob.c | 25 +++++++++++++++++++++---- - lib/glob/glob.h | 1 + - lib/glob/glob_loop.c | 23 ++++++++++++++++------- - patchlevel.h | 2 +- - pathexp.c | 16 ++++++++++++---- - 6 files changed, 52 insertions(+), 17 deletions(-) - -diff --git a/bashline.c b/bashline.c -index 75e79f1a..824ea9d9 100644 ---- a/bashline.c -+++ b/bashline.c -@@ -3752,7 +3752,7 @@ completion_glob_pattern (string) - continue; - - case '\\': -- if (*string == 0) -+ if (*string++ == 0) - return (0); - } - -diff --git a/lib/glob/glob.c b/lib/glob/glob.c -index 22d90a5c..398253b5 100644 ---- a/lib/glob/glob.c -+++ b/lib/glob/glob.c -@@ -1061,7 +1061,7 @@ glob_filename (pathname, flags) - char *directory_name, *filename, *dname, *fn; - unsigned int directory_len; - int free_dirname; /* flag */ -- int dflags; -+ int dflags, hasglob; - - result = (char **) malloc (sizeof (char *)); - result_size = 1; -@@ -1110,9 +1110,12 @@ glob_filename (pathname, flags) - free_dirname = 1; - } - -+ hasglob = 0; - /* If directory_name contains globbing characters, then we -- have to expand the previous levels. Just recurse. */ -- if (directory_len > 0 && glob_pattern_p (directory_name)) -+ have to expand the previous levels. Just recurse. -+ If glob_pattern_p returns != [0,1] we have a pattern that has backslash -+ quotes but no unquoted glob pattern characters. We dequote it below. */ -+ if (directory_len > 0 && (hasglob = glob_pattern_p (directory_name)) == 1) - { - char **directories, *d, *p; - register unsigned int i; -@@ -1175,7 +1178,7 @@ glob_filename (pathname, flags) - if (d[directory_len - 1] == '/') - d[directory_len - 1] = '\0'; - -- directories = glob_filename (d, dflags); -+ directories = glob_filename (d, dflags|GX_RECURSE); - - if (free_dirname) - { -@@ -1332,6 +1335,20 @@ only_filename: - free (directory_name); - return (NULL); - } -+ /* If we have a directory name with quoted characters, and we are -+ being called recursively to glob the directory portion of a pathname, -+ we need to dequote the directory name before returning it so the -+ caller can read the directory */ -+ if (directory_len > 0 && hasglob == 2 && (flags & GX_RECURSE) != 0) -+ { -+ dequote_pathname (directory_name); -+ directory_len = strlen (directory_name); -+ } -+ -+ /* We could check whether or not the dequoted directory_name is a -+ directory and return it here, returning the original directory_name -+ if not, but we don't do that yet. I'm not sure it matters. */ -+ - /* Handle GX_MARKDIRS here. */ - result[0] = (char *) malloc (directory_len + 1); - if (result[0] == NULL) -diff --git a/lib/glob/glob.h b/lib/glob/glob.h -index b9462333..56ac08ba 100644 ---- a/lib/glob/glob.h -+++ b/lib/glob/glob.h -@@ -30,6 +30,7 @@ - #define GX_NULLDIR 0x100 /* internal -- no directory preceding pattern */ - #define GX_ADDCURDIR 0x200 /* internal -- add passed directory name */ - #define GX_GLOBSTAR 0x400 /* turn on special handling of ** */ -+#define GX_RECURSE 0x800 /* internal -- glob_filename called recursively */ - - extern int glob_pattern_p __P((const char *)); - extern char **glob_vector __P((char *, char *, int)); -diff --git a/lib/glob/glob_loop.c b/lib/glob/glob_loop.c -index 7d6ae211..3a4f4f1e 100644 ---- a/lib/glob/glob_loop.c -+++ b/lib/glob/glob_loop.c -@@ -26,10 +26,10 @@ INTERNAL_GLOB_PATTERN_P (pattern) - { - register const GCHAR *p; - register GCHAR c; -- int bopen; -+ int bopen, bsquote; - - p = pattern; -- bopen = 0; -+ bopen = bsquote = 0; - - while ((c = *p++) != L('\0')) - switch (c) -@@ -55,13 +55,22 @@ INTERNAL_GLOB_PATTERN_P (pattern) - - case L('\\'): - /* Don't let the pattern end in a backslash (GMATCH returns no match -- if the pattern ends in a backslash anyway), but otherwise return 1, -- since the matching engine uses backslash as an escape character -- and it can be removed. */ -- return (*p != L('\0')); -+ if the pattern ends in a backslash anyway), but otherwise note that -+ we have seen this, since the matching engine uses backslash as an -+ escape character and it can be removed. We return 2 later if we -+ have seen only backslash-escaped characters, so interested callers -+ know they can shortcut and just dequote the pathname. */ -+ if (*p != L('\0')) -+ { -+ p++; -+ bsquote = 1; -+ continue; -+ } -+ else /* (*p == L('\0')) */ -+ return 0; - } - -- return 0; -+ return bsquote ? 2 : 0; - } - - #undef INTERNAL_GLOB_PATTERN_P -diff --git a/patchlevel.h b/patchlevel.h -index a988d852..e7e960c1 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 2 -+#define PATCHLEVEL 3 - - #endif /* _PATCHLEVEL_H_ */ -diff --git a/pathexp.c b/pathexp.c -index b51729a7..c1bf2d89 100644 ---- a/pathexp.c -+++ b/pathexp.c -@@ -65,11 +65,11 @@ unquoted_glob_pattern_p (string) - { - register int c; - char *send; -- int open; -+ int open, bsquote; - - DECLARE_MBSTATE; - -- open = 0; -+ open = bsquote = 0; - send = string + strlen (string); - - while (c = *string++) -@@ -100,7 +100,14 @@ unquoted_glob_pattern_p (string) - can be removed by the matching engine, so we have to run it through - globbing. */ - case '\\': -- return (*string != 0); -+ if (*string != '\0' && *string != '/') -+ { -+ bsquote = 1; -+ string++; -+ continue; -+ } -+ else if (*string == 0) -+ return (0); - - case CTLESC: - if (*string++ == '\0') -@@ -117,7 +124,8 @@ unquoted_glob_pattern_p (string) - ADVANCE_CHAR_P (string, send - string); - #endif - } -- return (0); -+ -+ return (bsquote ? 2 : 0); - } - - /* Return 1 if C is a character that is `special' in a POSIX ERE and needs to --- -2.17.2 - diff --git a/bash-5.0-patch-4.patch b/bash-5.0-patch-4.patch deleted file mode 100644 index 8993833..0000000 --- a/bash-5.0-patch-4.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 16c907aa3bb427618733e5a6f2f4e2fc5a3488d3 Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Sat, 20 Apr 2019 14:24:28 -0400 -Subject: [PATCH] Bash-5.0 patch 4: the wait builtin without arguments only - waits for known children the shell started - ---- - jobs.c | 4 +--- - patchlevel.h | 2 +- - 2 files changed, 2 insertions(+), 4 deletions(-) - -diff --git a/jobs.c b/jobs.c -index ce2bdf24..ae3c54c6 100644 ---- a/jobs.c -+++ b/jobs.c -@@ -2488,10 +2488,8 @@ wait_for_background_pids () - r = wait_for (last_procsub_child->pid); - wait_procsubs (); - reap_procsubs (); --#if 1 -+#if 0 - /* We don't want to wait indefinitely if we have stopped children. */ -- /* XXX - should add a loop that goes through the list of process -- substitutions and waits for each proc in turn before this code. */ - if (any_stopped == 0) - { - /* Check whether or not we have any unreaped children. */ -diff --git a/patchlevel.h b/patchlevel.h -index e7e960c1..c059f0bd 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 3 -+#define PATCHLEVEL 4 - - #endif /* _PATCHLEVEL_H_ */ --- -2.17.2 - diff --git a/bash-5.0-patch-5.patch b/bash-5.0-patch-5.patch deleted file mode 100644 index 1fb4faf..0000000 --- a/bash-5.0-patch-5.patch +++ /dev/null @@ -1,102 +0,0 @@ -From 41f5420db7a911fb0833be693205f4db41f05434 Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Sat, 20 Apr 2019 14:25:52 -0400 -Subject: [PATCH] Bash-5.0 patch 5: prevent optimizing forks away too - aggressively - ---- - builtins/evalstring.c | 26 +++++++++++++++++++++++--- - command.h | 1 + - execute_cmd.c | 2 ++ - patchlevel.h | 2 +- - 4 files changed, 27 insertions(+), 4 deletions(-) - -diff --git a/builtins/evalstring.c b/builtins/evalstring.c -index 1496eeec..cadc9bc0 100644 ---- a/builtins/evalstring.c -+++ b/builtins/evalstring.c -@@ -100,12 +100,22 @@ should_suppress_fork (command) - ((command->flags & CMD_INVERT_RETURN) == 0)); - } - -+int -+can_optimize_connection (command) -+ COMMAND *command; -+{ -+ return (*bash_input.location.string == '\0' && -+ (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR || command->value.Connection->connector == ';') && -+ command->value.Connection->second->type == cm_simple); -+} -+ - void - optimize_fork (command) - COMMAND *command; - { - if (command->type == cm_connection && -- (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR) && -+ (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR || command->value.Connection->connector == ';') && -+ (command->value.Connection->second->flags & CMD_TRY_OPTIMIZING) && - should_suppress_fork (command->value.Connection->second)) - { - command->value.Connection->second->flags |= CMD_NO_FORK; -@@ -412,8 +422,18 @@ parse_and_execute (string, from_file, flags) - command->flags |= CMD_NO_FORK; - command->value.Simple->flags |= CMD_NO_FORK; - } -- else if (command->type == cm_connection) -- optimize_fork (command); -+ -+ /* Can't optimize forks out here execept for simple commands. -+ This knows that the parser sets up commands as left-side heavy -+ (&& and || are left-associative) and after the single parse, -+ if we are at the end of the command string, the last in a -+ series of connection commands is -+ command->value.Connection->second. */ -+ else if (command->type == cm_connection && can_optimize_connection (command)) -+ { -+ command->value.Connection->second->flags |= CMD_TRY_OPTIMIZING; -+ command->value.Connection->second->value.Simple->flags |= CMD_TRY_OPTIMIZING; -+ } - #endif /* ONESHOT */ - - /* See if this is a candidate for $( value.Connection->connector == OR_OR) && - (exec_result != EXECUTION_SUCCESS))) - { -+ optimize_fork (command); -+ - second = command->value.Connection->second; - if (ignore_return && second) - second->flags |= CMD_IGNORE_RETURN; -diff --git a/patchlevel.h b/patchlevel.h -index c059f0bd..1bc098b8 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 4 -+#define PATCHLEVEL 5 - - #endif /* _PATCHLEVEL_H_ */ --- -2.17.2 - diff --git a/bash-5.0-patch-6.patch b/bash-5.0-patch-6.patch deleted file mode 100644 index bfd8460..0000000 --- a/bash-5.0-patch-6.patch +++ /dev/null @@ -1,39 +0,0 @@ -From dfd2cc6ac5558e252af0a7cb829a9629bf782e17 Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Sat, 20 Apr 2019 14:27:00 -0400 -Subject: [PATCH] Bash-5.0 patch 6: allow building with SYSLOG_HISTORY defined - without defining SYSLOG_SHOPT - ---- - builtins/shopt.def | 2 +- - patchlevel.h | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/builtins/shopt.def b/builtins/shopt.def -index f6dc6f97..1c485361 100644 ---- a/builtins/shopt.def -+++ b/builtins/shopt.def -@@ -122,7 +122,7 @@ extern int assoc_expand_once; - extern int array_expand_once; - #endif - --#if defined (SYSLOG_HISTORY) && defined (SYSLOG_SHOPT) -+#if defined (SYSLOG_HISTORY) - extern int syslog_history; - #endif - -diff --git a/patchlevel.h b/patchlevel.h -index 1bc098b8..14bff9fc 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 5 -+#define PATCHLEVEL 6 - - #endif /* _PATCHLEVEL_H_ */ --- -2.17.2 - diff --git a/bash-5.0-patch-7.patch b/bash-5.0-patch-7.patch deleted file mode 100644 index 2a4315e..0000000 --- a/bash-5.0-patch-7.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 3ba697465bc74fab513a26dea700cc82e9f4724e Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Sat, 20 Apr 2019 14:27:56 -0400 -Subject: [PATCH] Bash-5.0 patch 7: fix exec builtin leaving the terminal in - the wrong process group - ---- - jobs.c | 12 +++++------- - patchlevel.h | 2 +- - 2 files changed, 6 insertions(+), 8 deletions(-) - -diff --git a/jobs.c b/jobs.c -index ae3c54c6..6bc31dca 100644 ---- a/jobs.c -+++ b/jobs.c -@@ -4837,15 +4837,13 @@ void - end_job_control () - { - if (job_control) -- { -- terminate_stopped_jobs (); -+ terminate_stopped_jobs (); - -- if (original_pgrp >= 0) -- give_terminal_to (original_pgrp, 1); -- } -+ if (original_pgrp >= 0 && terminal_pgrp != original_pgrp) -+ give_terminal_to (original_pgrp, 1); - -- if (original_pgrp >= 0) -- setpgid (0, original_pgrp); -+ if (original_pgrp >= 0 && setpgid (0, original_pgrp) == 0) -+ shell_pgrp = original_pgrp; - } - - /* Restart job control by closing shell tty and reinitializing. This is -diff --git a/patchlevel.h b/patchlevel.h -index 14bff9fc..deb9c5b7 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 6 -+#define PATCHLEVEL 7 - - #endif /* _PATCHLEVEL_H_ */ --- -2.17.2 - diff --git a/bash-5.0-patch-8.patch b/bash-5.0-patch-8.patch deleted file mode 100644 index cb23681..0000000 --- a/bash-5.0-patch-8.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 01323582f773ef4d08fa26a90e9a21285a8405f5 Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Wed, 14 Aug 2019 14:57:48 -0400 -Subject: [PATCH] Bash-5.0 patch 8: fix history offset when HISTSIZE == 0 that - can lead to crashes - ---- - bashhist.c | 5 ++++- - patchlevel.h | 2 +- - 2 files changed, 5 insertions(+), 2 deletions(-) - -diff --git a/bashhist.c b/bashhist.c -index 7912cce3..d2155dce 100644 ---- a/bashhist.c -+++ b/bashhist.c -@@ -560,15 +560,18 @@ pre_process_line (line, print_changes, addit) - add that line to the history if ADDIT is non-zero. */ - if (!history_expansion_inhibited && history_expansion && history_expansion_p (line)) - { -+ int old_len; -+ - /* If we are expanding the second or later line of a multi-line - command, decrease history_length so references to history expansions - in these lines refer to the previous history entry and not the - current command. */ -+ old_len = history_length; - if (history_length > 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1) - history_length--; - expanded = history_expand (line, &history_value); - if (history_length >= 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1) -- history_length++; -+ history_length = old_len; - - if (expanded) - { -diff --git a/patchlevel.h b/patchlevel.h -index deb9c5b7..16c87404 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 7 -+#define PATCHLEVEL 8 - - #endif /* _PATCHLEVEL_H_ */ --- -2.21.0 - diff --git a/bash-5.0-patch-9.patch b/bash-5.0-patch-9.patch deleted file mode 100644 index be8a347..0000000 --- a/bash-5.0-patch-9.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 9f597fd10993313262cab400bf3c46ffb3f6fd1e Mon Sep 17 00:00:00 2001 -From: Chet Ramey -Date: Wed, 14 Aug 2019 14:58:44 -0400 -Subject: [PATCH] Bash-5.0 patch 9: fix file descriptor leak with zero-length - history file - ---- - lib/readline/histfile.c | 1 + - patchlevel.h | 2 +- - 2 files changed, 2 insertions(+), 1 deletion(-) - -diff --git a/lib/readline/histfile.c b/lib/readline/histfile.c -index dc64bde1..a8a92aa3 100644 ---- a/lib/readline/histfile.c -+++ b/lib/readline/histfile.c -@@ -305,6 +305,7 @@ read_history_range (const char *filename, int from, int to) - if (file_size == 0) - { - free (input); -+ close (file); - return 0; /* don't waste time if we don't have to */ - } - -diff --git a/patchlevel.h b/patchlevel.h -index 16c87404..02f1d606 100644 ---- a/patchlevel.h -+++ b/patchlevel.h -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 8 -+#define PATCHLEVEL 9 - - #endif /* _PATCHLEVEL_H_ */ --- -2.21.0 - diff --git a/bash-requires.patch b/bash-requires.patch index 6167af1..86d0792 100644 --- a/bash-requires.patch +++ b/bash-requires.patch @@ -11,7 +11,7 @@ index dac95fd..5b7e811 100644 #define BASE_INDENT 4 diff --git a/builtins/mkbuiltins.c b/builtins/mkbuiltins.c -index 4f51201..91c25db 100644 +index e243021..0a7a0e5 100644 --- a/builtins/mkbuiltins.c +++ b/builtins/mkbuiltins.c @@ -69,10 +69,15 @@ extern char *strcpy (); @@ -89,7 +89,7 @@ index 4f51201..91c25db 100644 static int rename (from, to) diff --git a/doc/bash.1 b/doc/bash.1 -index d91f1fd..111a66d 100644 +index 5af7d42..7539368 100644 --- a/doc/bash.1 +++ b/doc/bash.1 @@ -239,6 +239,14 @@ The shell becomes restricted (see @@ -108,10 +108,10 @@ index d91f1fd..111a66d 100644 Equivalent to \fB\-v\fP. .TP diff --git a/doc/bashref.texi b/doc/bashref.texi -index d33cd57..6fc4d18 100644 +index 9e23f58..d02151e 100644 --- a/doc/bashref.texi +++ b/doc/bashref.texi -@@ -6453,6 +6453,13 @@ standard. @xref{Bash POSIX Mode}, for a description of the Bash +@@ -6554,6 +6554,13 @@ standard. @xref{Bash POSIX Mode}, for a description of the Bash @item --restricted Make the shell a restricted shell (@pxref{The Restricted Shell}). @@ -126,10 +126,10 @@ index d33cd57..6fc4d18 100644 Equivalent to @option{-v}. Print shell input lines as they're read. diff --git a/eval.c b/eval.c -index f02d6e4..76c1e8d 100644 +index 1d967da..f197033 100644 --- a/eval.c +++ b/eval.c -@@ -142,7 +142,8 @@ reader_loop () +@@ -137,7 +137,8 @@ reader_loop () if (read_command () == 0) { @@ -137,13 +137,13 @@ index f02d6e4..76c1e8d 100644 + + if (interactive_shell == 0 && (read_but_dont_execute && !rpm_requires)) { - last_command_exit_value = EXECUTION_SUCCESS; + set_exit_status (EXECUTION_SUCCESS); dispose_command (global_command); diff --git a/execute_cmd.c b/execute_cmd.c -index 8b3c83a..4eae19c 100644 +index d2555ad..397e283 100644 --- a/execute_cmd.c +++ b/execute_cmd.c -@@ -542,6 +542,8 @@ async_redirect_stdin () +@@ -543,6 +543,8 @@ async_redirect_stdin () #define DESCRIBE_PID(pid) do { if (interactive) describe_pid (pid); } while (0) @@ -151,8 +151,8 @@ index 8b3c83a..4eae19c 100644 + /* Execute the command passed in COMMAND, perhaps doing it asynchronously. COMMAND is exactly what read_command () places into GLOBAL_COMMAND. - ASYNCHROUNOUS, if non-zero, says to do this command in the background. -@@ -573,7 +575,13 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, + ASYNCHRONOUS, if non-zero, says to do this command in the background. +@@ -574,7 +576,13 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, if (breaking || continuing) return (last_command_exit_value); @@ -167,7 +167,7 @@ index 8b3c83a..4eae19c 100644 return (EXECUTION_SUCCESS); QUIT; -@@ -2819,7 +2827,7 @@ execute_for_command (for_command) +@@ -2836,7 +2844,7 @@ execute_for_command (for_command) save_line_number = line_number; if (check_identifier (for_command->name, 1) == 0) { @@ -177,7 +177,7 @@ index 8b3c83a..4eae19c 100644 last_command_exit_value = EX_BADUSAGE; jump_to_top_level (ERREXIT); diff --git a/execute_cmd.h b/execute_cmd.h -index dc2f15e..506fff4 100644 +index 465030a..9c7fd1c 100644 --- a/execute_cmd.h +++ b/execute_cmd.h @@ -22,6 +22,9 @@ @@ -191,7 +191,7 @@ index dc2f15e..506fff4 100644 #if defined (ARRAY_VARS) struct func_array_state diff --git a/make_cmd.c b/make_cmd.c -index ecbbfd6..3d8bfa4 100644 +index 2d7ac96..ac53526 100644 --- a/make_cmd.c +++ b/make_cmd.c @@ -35,6 +35,8 @@ @@ -264,10 +264,10 @@ index ecbbfd6..3d8bfa4 100644 return (command); } diff --git a/shell.c b/shell.c -index a2b2a55..c5d99b3 100644 +index ce8087f..7dcd000 100644 --- a/shell.c +++ b/shell.c -@@ -193,6 +193,9 @@ int have_devfd = 0; +@@ -194,6 +194,9 @@ int have_devfd = 0; /* The name of the .(shell)rc file. */ static char *bashrc_file = DEFAULT_BASHRC; @@ -277,7 +277,7 @@ index a2b2a55..c5d99b3 100644 /* Non-zero means to act more like the Bourne shell on startup. */ static int act_like_sh; -@@ -259,6 +262,7 @@ static const struct { +@@ -260,6 +263,7 @@ static const struct { { "protected", Int, &protected_mode, (char **)0x0 }, #endif { "rcfile", Charp, (int *)0x0, &bashrc_file }, @@ -285,7 +285,7 @@ index a2b2a55..c5d99b3 100644 #if defined (RESTRICTED_SHELL) { "restricted", Int, &restricted, (char **)0x0 }, #endif -@@ -496,6 +500,12 @@ main (argc, argv, env) +@@ -502,6 +506,12 @@ main (argc, argv, env) if (dump_translatable_strings) read_but_dont_execute = 1; @@ -299,7 +299,7 @@ index a2b2a55..c5d99b3 100644 disable_priv_mode (); diff --git a/shell.h b/shell.h -index 8072605..6c4149d 100644 +index 8b41792..29b0efb 100644 --- a/shell.h +++ b/shell.h @@ -99,6 +99,7 @@ extern int interactive, interactive_shell; diff --git a/bash-tty-tests.patch b/bash-tty-tests.patch index f9b6532..9311746 100644 --- a/bash-tty-tests.patch +++ b/bash-tty-tests.patch @@ -1,5 +1,5 @@ diff --git a/tests/exec.right b/tests/exec.right -index 6075cc8..0b3f02c 100644 +index 0a249dd..fe8a127 100644 --- a/tests/exec.right +++ b/tests/exec.right @@ -51,7 +51,6 @@ this is ohio-state @@ -11,7 +11,7 @@ index 6075cc8..0b3f02c 100644 1 1 diff --git a/tests/execscript b/tests/execscript -index c1819de..9227a4a 100644 +index 2809676..1216828 100644 --- a/tests/execscript +++ b/tests/execscript @@ -108,8 +108,6 @@ ${THIS_SH} ./exec6.sub @@ -24,7 +24,7 @@ index c1819de..9227a4a 100644 ${THIS_SH} ./exec10.sub diff --git a/tests/read.right b/tests/read.right -index 73cb704..a92fe7f 100644 +index 1144083..09cd422 100644 --- a/tests/read.right +++ b/tests/read.right @@ -33,14 +33,6 @@ a = abcdefg @@ -35,18 +35,18 @@ index 73cb704..a92fe7f 100644 - -timeout 2: ok - --./read2.sub: line 23: read: -3: invalid timeout specification +-./read2.sub: line 36: read: -3: invalid timeout specification -1 - -abcde - ./read3.sub: line 4: read: -1: invalid number + ./read3.sub: line 17: read: -1: invalid number abc ab diff --git a/tests/read.tests b/tests/read.tests -index f67cd00..083f4a4 100644 +index 7384f05..43fcf8d 100644 --- a/tests/read.tests +++ b/tests/read.tests -@@ -82,9 +82,6 @@ echo " foo" | { IFS=$':' ; read line; recho "$line"; } +@@ -95,9 +95,6 @@ echo " foo" | { IFS=$':' ; read line; recho "$line"; } # test read -d delim behavior ${THIS_SH} ./read1.sub @@ -56,6 +56,3 @@ index f67cd00..083f4a4 100644 # test read -n nchars behavior ${THIS_SH} ./read3.sub --- -2.17.2 - diff --git a/bash.spec b/bash.spec index 4527da7..e5df999 100644 --- a/bash.spec +++ b/bash.spec @@ -1,12 +1,12 @@ #% define beta_tag rc2 -%define patchleveltag .17 -%define baseversion 5.0 +%define patchleveltag .0 +%define baseversion 5.1 %bcond_without tests Version: %{baseversion}%{patchleveltag} Name: bash Summary: The GNU Bourne Again shell -Release: 3%{?dist} +Release: 1%{?dist} License: GPLv3+ Url: https://www.gnu.org/software/bash Source0: https://ftp.gnu.org/gnu/bash/bash-%{baseversion}.tar.gz @@ -20,7 +20,6 @@ Source3: dot-bash_logout # Official upstream patches # Patches are converted to apply with '-p1' -%{lua:for i=1,17 do print(string.format("Patch%u: bash-5.0-patch-%u.patch\n", i, i)) end} # Other patches # We don't want to add '/etc:/usr/etc' in standard utils path. @@ -44,20 +43,20 @@ Patch109: bash-requires.patch Patch110: bash-setlocale.patch # Disable tty tests while doing bash builds Patch111: bash-tty-tests.patch - + # 484809, check if interp section is NOBITS Patch116: bash-4.0-nobits.patch - + # Do the same CFLAGS in generated Makefile in examples Patch117: bash-4.1-examples.patch - + # Builtins like echo and printf won't report errors # when output does not succeed due to EPIPE Patch118: bash-4.1-broken_pipe.patch # # Enable system-wide .bash_logout for login shells Patch119: bash-4.2-rc2-logout.patch -# + # Static analyzis shows some issues in bash-2.05a-interpreter.patch Patch120: bash-4.2-coverity.patch @@ -68,17 +67,17 @@ Patch122: bash-4.2-manpage_trap.patch # https://www.securecoding.cert.org/confluence/display/seccode/INT32-C.+Ensure+that+operations+on+signed+integers+do+not+result+in+overflow # This patch should be upstreamed. Patch123: bash-4.2-size_type.patch -# + # 1112710 - mention ulimit -c and -f POSIX block size # This patch should be upstreamed. Patch124: bash-4.3-man-ulimit.patch -# + # 1102815 - fix double echoes in vi visual mode Patch125: bash-4.3-noecho.patch -# -# #1241533,1224855 - bash leaks memory when LC_ALL set + +#1241533,1224855 - bash leaks memory when LC_ALL set Patch126: bash-4.3-memleak-lc_all.patch -# + # bash-4.4 builds loadable builtin examples by default # this patch disables it Patch127: bash-4.4-no-loadable-builtins.patch @@ -89,6 +88,7 @@ BuildRequires: ncurses-devel BuildRequires: autoconf, gettext # Required for bash tests BuildRequires: glibc-all-langpacks +BuildRequires: make Requires: filesystem >= 3 Provides: /bin/sh Provides: /bin/bash @@ -129,7 +129,12 @@ autoconf # Recycles pids is neccessary. When bash's last fork's pid was X # and new fork's pid is also X, bash has to wait for this same pid. # Without Recycles pids bash will not wait. -make "CPPFLAGS=-D_GNU_SOURCE -DRECYCLES_PIDS -DDEFAULT_PATH_VALUE='\"/usr/local/bin:/usr/bin\"' `getconf LFS_CFLAGS`" %{?_smp_mflags} +MFLAGS="CPPFLAGS=-D_GNU_SOURCE -DRECYCLES_PIDS -DDEFAULT_PATH_VALUE='\"/usr/local/bin:/usr/bin\"' `getconf LFS_CFLAGS`" + +# work around missing deps in Makefiles +make "$MFLAGS" version.h +make "$MFLAGS" %{?_smp_mflags} -C builtins +make "$MFLAGS" %{?_smp_mflags} %install if [ -e autoconf ]; then @@ -252,7 +257,7 @@ end %postun -p -- Run it only if we are uninstalling -if arg[2] == "0" +if arg[2] == 0 then t={} for line in io.lines("/etc/shells") @@ -308,6 +313,10 @@ end %{_libdir}/pkgconfig/%{name}.pc %changelog +* Wed Jan 6 10:40:25 CET 2021 Siteshwar Vashisht - 5.1.0-1 +- Rebase to bash 5.1 + Resolves: #1904866 + * Fri Dec 4 14:44:06 CET 2020 Siteshwar Vashisht - 5.0.17-3 - Enable sourcing files from ~/.bashrc.d Resolves: #1726397 diff --git a/sources b/sources index dff100d..0e5cb59 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (bash-5.0.tar.gz) = bb4519f06e278f271d08722b531e49d2e842cc3e0b02a6b3eee422e2efcb5b6226111af43f5e5eae56beb85ac8bfebcd6a4aacbabb8f609e529aa4d571890864 +SHA512 (bash-5.1.tar.gz) = c44a0ce381469219548a3a27589af3fea4f22eda1ca4e9434b59fc16da81b471c29ce18e31590e0860a6a251a664b68c2b45e3a17d22cfc02799ffd9a208390c