utils/bash: Update to 4.4.18
authorDaniel Engberg <daniel.engberg.lists@pyret.net>
Sun, 1 Apr 2018 10:02:15 +0000 (12:02 +0200)
committerYousong Zhou <yszhou4tech@gmail.com>
Wed, 9 May 2018 07:47:07 +0000 (15:47 +0800)
 - Update bash to 4.4.18
 - Enable PKG_CHECK_FORMAT_SECURITY
 - Use shared libreadline
 - Enable job control

Fixes #5796, Closes #5858

Signed-off-by: Daniel Engberg <daniel.engberg.lists@pyret.net>
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
16 files changed:
utils/bash/Makefile
utils/bash/patches/001-compile-fix.patch [deleted file]
utils/bash/patches/002-force-internal-readline.patch [deleted file]
utils/bash/patches/100-fix-jobs.patch [new file with mode: 0644]
utils/bash/patches/101-upstream-bash44-001.patch [deleted file]
utils/bash/patches/102-upstream-bash44-002.patch [deleted file]
utils/bash/patches/103-upstream-bash44-003.patch [deleted file]
utils/bash/patches/104-upstream-bash44-004.patch [deleted file]
utils/bash/patches/105-upstream-bash44-005.patch [deleted file]
utils/bash/patches/106-upstream-bash44-006.patch [deleted file]
utils/bash/patches/107-upstream-bash44-007.patch [deleted file]
utils/bash/patches/108-upstream-bash44-008.patch [deleted file]
utils/bash/patches/109-upstream-bash44-009.patch [deleted file]
utils/bash/patches/110-upstream-bash44-010.patch [deleted file]
utils/bash/patches/111-upstream-bash44-011.patch [deleted file]
utils/bash/patches/112-upstream-bash44-012.patch [deleted file]

index 9978d4925ea4c0951c991db6b0dfa3c71b692efa..05931463af281d34bb48a8dad798291a100a6781 100644 (file)
@@ -7,22 +7,20 @@
 
 include $(TOPDIR)/rules.mk
 
-BASE_VERSION:=4.4
-
 PKG_NAME:=bash
-PKG_VERSION:=$(BASE_VERSION).12
+PKG_VERSION:=4.4.18
 PKG_RELEASE:=1
 
-PKG_SOURCE:=$(PKG_NAME)-$(BASE_VERSION).tar.gz
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@GNU/bash
-PKG_HASH:=d86b3392c1202e8ff5a423b302e6284db7f8f435ea9f39b5b1b20fd3ac36dfcb
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BASE_VERSION)
+PKG_HASH:=604d9eec5e4ed5fd2180ee44dd756ddca92e0b6aa4217bbab2b6227380317f23
 
 PKG_LICENSE:=GPL-3.0+
 PKG_LICENSE_FILES:=COPYING
 PKG_MAINTAINER:=Marcel Denia <naoir@gmx.net>
 
-PKG_CHECK_FORMAT_SECURITY:=0
+PKG_INSTALL:=1
+
 include $(INCLUDE_DIR)/package.mk
 
 define Package/bash
@@ -30,7 +28,7 @@ define Package/bash
   CATEGORY:=Utilities
   SUBMENU:=Shells
   TITLE:=The GNU Bourne Again SHell
-  DEPENDS:=+libncurses
+  DEPENDS:=+libncurses +libreadline
   URL:=http://www.gnu.org/software/bash/
 endef
 
@@ -40,22 +38,40 @@ define Package/bash/description
   incorporates useful features from the Korn and C shells (ksh and csh).
 endef
 
-
-define Build/Configure
-       $(call Build/Configure/Default, \
-               --without-bash-malloc \
-                --bindir=/bin \
-       )
-endef
-
-
-define Build/Compile
-       $(MAKE) -C $(PKG_BUILD_DIR)/builtins LDFLAGS_FOR_BUILD= mkbuiltins
-       $(MAKE) -C $(PKG_BUILD_DIR) \
-               DESTDIR="$(PKG_INSTALL_DIR)" \
-               SHELL="/bin/bash" \
-               all install
-endef
+# Bash detects and enables certain features by runtest simple piece of code
+# which is not viable when doing cross compilation and default to no in many
+# cases.  Grep for 'cross.compil' in aclocal.m4 and config-bot.h for details
+#
+# bash_cv_job_control_missing: Job control is needed for bash to be used as the
+# default shell
+#
+# bash_cv_getcwd_malloc: The replacement by bash does not work well with
+# overlayfs.  See "bash getcwd errors when running under OverlayFS"
+# http://permalink.gmane.org/gmane.linux.embedded.yocto.general/25204
+#
+# bash_cv_dev_fd: The test is done on build system but OpenWrt currently does
+# not have /dev/fd, it provides /proc/self/fd/ instead
+#
+# bash_cv_sys_named_pipes: Required for process substituion
+CONFIGURE_VARS += \
+       ac_cv_rl_prefix="$(STAGING_DIR)/usr" \
+       ac_cv_rl_version="7.0" \
+       bash_cv_getcwd_malloc=yes \
+       bash_cv_job_control_missing=present \
+       bash_cv_dev_fd=whacky \
+       bash_cv_sys_named_pipes=present \
+
+# The following are some other tests that cannot run when cross-compiling
+CONFIGURE_VARS += \
+       bash_cv_func_sigsetjmp=present \
+       bash_cv_printf_a_format=yes \
+
+CONFIGURE_ARGS+= \
+       --with-installed-readline="$(STAGING_DIR)/usr" \
+       --with-curses \
+       --without-bash-malloc \
+       --bindir=/bin \
+       --disable-rpath \
 
 define Package/bash/postinst
 #!/bin/sh
diff --git a/utils/bash/patches/001-compile-fix.patch b/utils/bash/patches/001-compile-fix.patch
deleted file mode 100644 (file)
index c3ab623..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-Index: bash-4.4/execute_cmd.c
-===================================================================
---- bash-4.4.orig/execute_cmd.c
-+++ bash-4.4/execute_cmd.c
-@@ -2459,7 +2459,11 @@ execute_pipeline (command, asynchronous,
-   /* If the `lastpipe' option is set with shopt, and job control is not
-      enabled, execute the last element of non-async pipelines in the
-      current shell environment. */
--  if (lastpipe_opt && job_control == 0 && asynchronous == 0 && pipe_out == NO_PIPE && prev > 0)
-+  if (lastpipe_opt &&
-+#if defined(JOB_CONTROL)
-+               job_control == 0 && 
-+#endif
-+               asynchronous == 0 && pipe_out == NO_PIPE && prev > 0)
-     {
-       lstdin = move_to_high_fd (0, 1, -1);
-       if (lstdin > 0)
diff --git a/utils/bash/patches/002-force-internal-readline.patch b/utils/bash/patches/002-force-internal-readline.patch
deleted file mode 100644 (file)
index fd0b695..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-Index: bash-4.4/configure
-===================================================================
---- bash-4.4.orig/configure
-+++ bash-4.4/configure
-@@ -5420,8 +5420,7 @@ if test $opt_readline = yes; then
-               # static version specified as -llibname to override the
-               # dynamic version
-               case "${host_os}" in
--              darwin[89]*|darwin10*) READLINE_LIB='${READLINE_LIBRARY}' ;;
--              *)              READLINE_LIB=-lreadline ;;
-+              *) READLINE_LIB='${READLINE_LIBRARY}' ;;
-               esac
-       fi
- else
-Index: bash-4.4/configure.ac
-===================================================================
---- bash-4.4.orig/configure.ac
-+++ bash-4.4/configure.ac
-@@ -573,8 +573,7 @@ if test $opt_readline = yes; then
-               # static version specified as -llibname to override the
-               # dynamic version
-               case "${host_os}" in
--              darwin[[89]]*|darwin10*) READLINE_LIB='${READLINE_LIBRARY}' ;;
--              *)              READLINE_LIB=-lreadline ;;
-+              *) READLINE_LIB='${READLINE_LIBRARY}' ;;
-               esac
-       fi
- else
diff --git a/utils/bash/patches/100-fix-jobs.patch b/utils/bash/patches/100-fix-jobs.patch
new file mode 100644 (file)
index 0000000..aec758c
--- /dev/null
@@ -0,0 +1,31 @@
+Fix builint command jobs
+
+Patch was taken from https://git.alpinelinux.org/cgit/aports/tree/main/bash/fix-jobs.patch
+
+See also "Bash 4.4.12-r2 jobs hangs on arm (alpine 3.7)", https://bugs.alpinelinux.org/issues/8447
+diff --git a/jobs.c b/jobs.c
+index cef3c79..bf99266 100644
+--- a/jobs.c
++++ b/jobs.c
+@@ -4166,10 +4166,8 @@ initialize_job_control (force)
+   if (js.c_childmax < 0)
+     js.c_childmax = DEFAULT_CHILD_MAX;
+-#if 0
+   if (js.c_childmax > MAX_CHILD_MAX)
+     js.c_childmax = MAX_CHILD_MAX;
+-#endif
+   return job_control;
+ }
+@@ -4547,10 +4545,8 @@ mark_dead_jobs_as_notified (force)
+   if (js.c_childmax < 0)
+     js.c_childmax = DEFAULT_CHILD_MAX;
+-#if 0
+   if (js.c_childmax > MAX_CHILD_MAX)
+     js.c_childmax = MAX_CHILD_MAX;
+-#endif
+   /* Don't do anything if the number of dead processes is less than CHILD_MAX
+      and we're not forcing a cleanup. */
diff --git a/utils/bash/patches/101-upstream-bash44-001.patch b/utils/bash/patches/101-upstream-bash44-001.patch
deleted file mode 100644 (file)
index 8481ed2..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-Index: bash-4.4/lib/readline/history.c
-===================================================================
---- bash-4.4.orig/lib/readline/history.c
-+++ bash-4.4/lib/readline/history.c
-@@ -57,6 +57,8 @@ extern int errno;
- /* How big to make the_history when we first allocate it. */
- #define DEFAULT_HISTORY_INITIAL_SIZE  502
-+#define MAX_HISTORY_INITIAL_SIZE      8192
-+
- /* The number of slots to increase the_history by. */
- #define DEFAULT_HISTORY_GROW_SIZE 50
-@@ -307,7 +309,9 @@ add_history (string)
-       if (history_size == 0)
-       {
-         if (history_stifled && history_max_entries > 0)
--          history_size = history_max_entries + 2;
-+          history_size = (history_max_entries > MAX_HISTORY_INITIAL_SIZE)
-+                              ? MAX_HISTORY_INITIAL_SIZE
-+                              : history_max_entries + 2;
-         else
-           history_size = DEFAULT_HISTORY_INITIAL_SIZE;
-         the_history = (HIST_ENTRY **)xmalloc (history_size * sizeof (HIST_ENTRY *));
-Index: bash-4.4/patchlevel.h
-===================================================================
---- bash-4.4.orig/patchlevel.h
-+++ bash-4.4/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_ */
diff --git a/utils/bash/patches/102-upstream-bash44-002.patch b/utils/bash/patches/102-upstream-bash44-002.patch
deleted file mode 100644 (file)
index c3da17a..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-Index: bash-4.4/patchlevel.h
-===================================================================
---- bash-4.4.orig/patchlevel.h
-+++ bash-4.4/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_ */
-Index: bash-4.4/subst.c
-===================================================================
---- bash-4.4.orig/subst.c
-+++ bash-4.4/subst.c
-@@ -5931,6 +5931,7 @@ read_comsub (fd, quoted, rflag)
-   char *istring, buf[128], *bufp, *s;
-   int istring_index, istring_size, c, tflag, skip_ctlesc, skip_ctlnul;
-   ssize_t bufn;
-+  int nullbyte;
-   istring = (char *)NULL;
-   istring_index = istring_size = bufn = tflag = 0;
-@@ -5938,6 +5939,8 @@ read_comsub (fd, quoted, rflag)
-   for (skip_ctlesc = skip_ctlnul = 0, s = ifs_value; s && *s; s++)
-     skip_ctlesc |= *s == CTLESC, skip_ctlnul |= *s == CTLNUL;
-+  nullbyte = 0;
-+
-   /* Read the output of the command through the pipe.  This may need to be
-      changed to understand multibyte characters in the future. */
-   while (1)
-@@ -5956,7 +5959,11 @@ read_comsub (fd, quoted, rflag)
-       if (c == 0)
-       {
- #if 1
--        internal_warning ("%s", _("command substitution: ignored null byte in input"));
-+        if (nullbyte == 0)
-+          {
-+            internal_warning ("%s", _("command substitution: ignored null byte in input"));
-+            nullbyte = 1;
-+          }
- #endif
-         continue;
-       }
diff --git a/utils/bash/patches/103-upstream-bash44-003.patch b/utils/bash/patches/103-upstream-bash44-003.patch
deleted file mode 100644 (file)
index 6d4dea3..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-Index: bash-4.4/lib/glob/sm_loop.c
-===================================================================
---- bash-4.4.orig/lib/glob/sm_loop.c
-+++ bash-4.4/lib/glob/sm_loop.c
-@@ -330,6 +330,12 @@ PARSE_COLLSYM (p, vp)
-   for (pc = 0; p[pc]; pc++)
-     if (p[pc] == L('.') && p[pc+1] == L(']'))
-       break;
-+   if (p[pc] == 0)
-+    {
-+      if (vp)
-+      *vp = INVALID;
-+      return (p + pc);
-+    }
-    val = COLLSYM (p, pc);
-    if (vp)
-      *vp = val;
-@@ -483,6 +489,9 @@ BRACKMATCH (p, test, flags)
-       c = *p++;
-       c = FOLD (c);
-+      if (c == L('\0'))
-+      return ((test == L('[')) ? savep : (CHAR *)0);
-+
-       if ((flags & FNM_PATHNAME) && c == L('/'))
-       /* [/] can never match when matching a pathname.  */
-       return (CHAR *)0;
-Index: bash-4.4/patchlevel.h
-===================================================================
---- bash-4.4.orig/patchlevel.h
-+++ bash-4.4/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/utils/bash/patches/104-upstream-bash44-004.patch b/utils/bash/patches/104-upstream-bash44-004.patch
deleted file mode 100644 (file)
index f1ebff6..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-Index: bash-4.4/jobs.c
-===================================================================
---- bash-4.4.orig/jobs.c
-+++ bash-4.4/jobs.c
-@@ -453,6 +453,21 @@ cleanup_the_pipeline ()
-     discard_pipeline (disposer);
- }
-+void
-+discard_last_procsub_child ()
-+{
-+  PROCESS *disposer;
-+  sigset_t set, oset;
-+
-+  BLOCK_CHILD (set, oset);
-+  disposer = last_procsub_child;
-+  last_procsub_child = (PROCESS *)NULL;
-+  UNBLOCK_CHILD (oset);
-+
-+  if (disposer)
-+    discard_pipeline (disposer);
-+}
-+
- struct pipeline_saver *
- alloc_pipeline_saver ()
- {
-Index: bash-4.4/jobs.h
-===================================================================
---- bash-4.4.orig/jobs.h
-+++ bash-4.4/jobs.h
-@@ -190,6 +190,7 @@ extern JOB **jobs;
- extern void making_children __P((void));
- extern void stop_making_children __P((void));
- extern void cleanup_the_pipeline __P((void));
-+extern void discard_last_procsub_child __P((void));
- extern void save_pipeline __P((int));
- extern PROCESS *restore_pipeline __P((int));
- extern void start_pipeline __P((void));
-Index: bash-4.4/patchlevel.h
-===================================================================
---- bash-4.4.orig/patchlevel.h
-+++ bash-4.4/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_ */
-Index: bash-4.4/subst.c
-===================================================================
---- bash-4.4.orig/subst.c
-+++ bash-4.4/subst.c
-@@ -5808,10 +5808,7 @@ process_substitute (string, open_for_rea
-     {
- #if defined (JOB_CONTROL)
-       if (last_procsub_child)
--      {
--        discard_pipeline (last_procsub_child);
--        last_procsub_child = (PROCESS *)NULL;
--      }
-+      discard_last_procsub_child ();
-       last_procsub_child = restore_pipeline (0);
- #endif
diff --git a/utils/bash/patches/105-upstream-bash44-005.patch b/utils/bash/patches/105-upstream-bash44-005.patch
deleted file mode 100644 (file)
index f9fb018..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-Index: bash-4.4/builtins/evalstring.c
-===================================================================
---- bash-4.4.orig/builtins/evalstring.c
-+++ bash-4.4/builtins/evalstring.c
-@@ -104,12 +104,9 @@ should_suppress_fork (command)
-         running_trap == 0 &&
-         *bash_input.location.string == '\0' &&
-         command->type == cm_simple &&
--#if 0
-         signal_is_trapped (EXIT_TRAP) == 0 &&
-         signal_is_trapped (ERROR_TRAP) == 0 &&
--#else
-         any_signals_trapped () < 0 &&
--#endif
-         command->redirects == 0 && command->value.Simple->redirects == 0 &&
-         ((command->flags & CMD_TIME_PIPELINE) == 0) &&
-         ((command->flags & CMD_INVERT_RETURN) == 0));
-Index: bash-4.4/patchlevel.h
-===================================================================
---- bash-4.4.orig/patchlevel.h
-+++ bash-4.4/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_ */
diff --git a/utils/bash/patches/106-upstream-bash44-006.patch b/utils/bash/patches/106-upstream-bash44-006.patch
deleted file mode 100644 (file)
index a232bff..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-Index: bash-4.4/builtins/pushd.def
-===================================================================
---- bash-4.4.orig/builtins/pushd.def
-+++ bash-4.4/builtins/pushd.def
-@@ -365,7 +365,7 @@ popd_builtin (list)
-       break;
-     }
--  if (which > directory_list_offset || (directory_list_offset == 0 && which == 0))
-+  if (which > directory_list_offset || (which < -directory_list_offset) || (directory_list_offset == 0 && which == 0))
-     {
-       pushd_error (directory_list_offset, which_word ? which_word : "");
-       return (EXECUTION_FAILURE);
-@@ -387,6 +387,11 @@ popd_builtin (list)
-        remove that directory from the list and shift the remainder
-        of the list into place. */
-       i = (direction == '+') ? directory_list_offset - which : which;
-+      if (i < 0 || i > directory_list_offset)
-+      {
-+        pushd_error (directory_list_offset, which_word ? which_word : "");
-+        return (EXECUTION_FAILURE);
-+      }
-       free (pushd_directory_list[i]);
-       directory_list_offset--;
-Index: bash-4.4/patchlevel.h
-===================================================================
---- bash-4.4.orig/patchlevel.h
-+++ bash-4.4/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_ */
diff --git a/utils/bash/patches/107-upstream-bash44-007.patch b/utils/bash/patches/107-upstream-bash44-007.patch
deleted file mode 100644 (file)
index 3e2973d..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-Index: bash-4.4/bashline.c
-===================================================================
---- bash-4.4.orig/bashline.c
-+++ bash-4.4/bashline.c
-@@ -142,7 +142,7 @@ static int executable_completion __P((co
- static rl_icppfunc_t *save_directory_hook __P((void));
- static void restore_directory_hook __P((rl_icppfunc_t));
--static int directory_exists __P((const char *));
-+static int directory_exists __P((const char *, int));
- static void cleanup_expansion_error __P((void));
- static void maybe_make_readline_line __P((char *));
-@@ -3102,18 +3102,20 @@ restore_directory_hook (hookf)
-     rl_directory_rewrite_hook = hookf;
- }
--/* Check whether not the (dequoted) version of DIRNAME, with any trailing slash
--   removed, exists. */
-+/* Check whether not DIRNAME, with any trailing slash removed, exists.  If
-+   SHOULD_DEQUOTE is non-zero, we dequote the directory name first. */
- static int
--directory_exists (dirname)
-+directory_exists (dirname, should_dequote)
-      const char *dirname;
-+     int should_dequote;
- {
-   char *new_dirname;
-   int dirlen, r;
-   struct stat sb;
--  /* First, dequote the directory name */
--  new_dirname = bash_dequote_filename ((char *)dirname, rl_completion_quote_character);
-+  /* We save the string and chop the trailing slash because stat/lstat behave
-+     inconsistently if one is present. */
-+  new_dirname = should_dequote ? bash_dequote_filename ((char *)dirname, rl_completion_quote_character) : savestring (dirname);
-   dirlen = STRLEN (new_dirname);
-   if (new_dirname[dirlen - 1] == '/')
-     new_dirname[dirlen - 1] = '\0';
-@@ -3145,7 +3147,7 @@ bash_filename_stat_hook (dirname)
-   else if (t = mbschr (local_dirname, '`'))   /* XXX */
-     should_expand_dirname = '`';
--  if (should_expand_dirname && directory_exists (local_dirname))
-+  if (should_expand_dirname && directory_exists (local_dirname, 0))
-     should_expand_dirname = 0;
-   
-   if (should_expand_dirname)  
-@@ -3155,7 +3157,7 @@ bash_filename_stat_hook (dirname)
-        have to worry about restoring this setting. */
-       global_nounset = unbound_vars_is_error;
-       unbound_vars_is_error = 0;
--      wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_COMPLETE);      /* does the right thing */
-+      wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_NOPROCSUB|W_COMPLETE);  /* does the right thing */
-       unbound_vars_is_error = global_nounset;
-       if (wl)
-       {
-@@ -3244,13 +3246,13 @@ bash_directory_completion_hook (dirname)
-       should_expand_dirname = '`';
-     }
--  if (should_expand_dirname && directory_exists (local_dirname))
-+  if (should_expand_dirname && directory_exists (local_dirname, 1))
-     should_expand_dirname = 0;
-   if (should_expand_dirname)  
-     {
-       new_dirname = savestring (local_dirname);
--      wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_COMPLETE);      /* does the right thing */
-+      wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_NOPROCSUB|W_COMPLETE);  /* does the right thing */
-       if (wl)
-       {
-         *dirname = string_list (wl);
-Index: bash-4.4/patchlevel.h
-===================================================================
---- bash-4.4.orig/patchlevel.h
-+++ bash-4.4/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_ */
-Index: bash-4.4/subst.c
-===================================================================
---- bash-4.4.orig/subst.c
-+++ bash-4.4/subst.c
-@@ -9458,6 +9458,10 @@ add_twochars:
-               tword->flags |= word->flags & (W_ASSIGNARG|W_ASSIGNRHS);        /* affects $@ */
-             if (word->flags & W_COMPLETE)
-               tword->flags |= W_COMPLETE;     /* for command substitutions */
-+            if (word->flags & W_NOCOMSUB)
-+              tword->flags |= W_NOCOMSUB;
-+            if (word->flags & W_NOPROCSUB)
-+              tword->flags |= W_NOPROCSUB;
-             temp = (char *)NULL;
diff --git a/utils/bash/patches/108-upstream-bash44-008.patch b/utils/bash/patches/108-upstream-bash44-008.patch
deleted file mode 100644 (file)
index 9503b05..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-Index: bash-4.4/expr.c
-===================================================================
---- bash-4.4.orig/expr.c
-+++ bash-4.4/expr.c
-@@ -578,24 +578,23 @@ expcond ()
-   rval = cval = explor ();
-   if (curtok == QUES)         /* found conditional expr */
-     {
--      readtok ();
--      if (curtok == 0 || curtok == COL)
--      evalerror (_("expression expected"));
-       if (cval == 0)
-       {
-         set_noeval = 1;
-         noeval++;
-       }
-+      readtok ();
-+      if (curtok == 0 || curtok == COL)
-+      evalerror (_("expression expected"));
-+
-       val1 = EXP_HIGHEST ();
-       if (set_noeval)
-       noeval--;
-       if (curtok != COL)
-       evalerror (_("`:' expected for conditional expression"));
--      readtok ();
--      if (curtok == 0)
--      evalerror (_("expression expected"));
-+
-       set_noeval = 0;
-       if (cval)
-       {
-@@ -603,7 +602,11 @@ expcond ()
-         noeval++;
-       }
-+      readtok ();
-+      if (curtok == 0)
-+      evalerror (_("expression expected"));
-       val2 = expcond ();
-+
-       if (set_noeval)
-       noeval--;
-       rval = cval ? val1 : val2;
-Index: bash-4.4/patchlevel.h
-===================================================================
---- bash-4.4.orig/patchlevel.h
-+++ bash-4.4/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_ */
diff --git a/utils/bash/patches/109-upstream-bash44-009.patch b/utils/bash/patches/109-upstream-bash44-009.patch
deleted file mode 100644 (file)
index 580d9a2..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-Index: bash-4.4/lib/readline/history.c
-===================================================================
---- bash-4.4.orig/lib/readline/history.c
-+++ bash-4.4/lib/readline/history.c
-@@ -279,6 +279,7 @@ add_history (string)
-      const char *string;
- {
-   HIST_ENTRY *temp;
-+  int new_length;
-   if (history_stifled && (history_length == history_max_entries))
-     {
-@@ -295,13 +296,9 @@ add_history (string)
-       /* Copy the rest of the entries, moving down one slot.  Copy includes
-        trailing NULL.  */
--#if 0
--      for (i = 0; i < history_length; i++)
--      the_history[i] = the_history[i + 1];
--#else
-       memmove (the_history, the_history + 1, history_length * sizeof (HIST_ENTRY *));
--#endif
-+      new_length = history_length;
-       history_base++;
-     }
-   else
-@@ -315,7 +312,7 @@ add_history (string)
-         else
-           history_size = DEFAULT_HISTORY_INITIAL_SIZE;
-         the_history = (HIST_ENTRY **)xmalloc (history_size * sizeof (HIST_ENTRY *));
--        history_length = 1;
-+        new_length = 1;
-       }
-       else
-       {
-@@ -325,14 +322,15 @@ add_history (string)
-             the_history = (HIST_ENTRY **)
-               xrealloc (the_history, history_size * sizeof (HIST_ENTRY *));
-           }
--        history_length++;
-+        new_length = history_length + 1;
-       }
-     }
-   temp = alloc_history_entry ((char *)string, hist_inittime ());
--  the_history[history_length] = (HIST_ENTRY *)NULL;
--  the_history[history_length - 1] = temp;
-+  the_history[new_length] = (HIST_ENTRY *)NULL;
-+  the_history[new_length - 1] = temp;
-+  history_length = new_length;
- }
- /* Change the time stamp of the most recent history entry to STRING. */
-Index: bash-4.4/patchlevel.h
-===================================================================
---- bash-4.4.orig/patchlevel.h
-+++ bash-4.4/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_ */
diff --git a/utils/bash/patches/110-upstream-bash44-010.patch b/utils/bash/patches/110-upstream-bash44-010.patch
deleted file mode 100644 (file)
index 1636b76..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-Index: bash-4.4/builtins/read.def
-===================================================================
---- bash-4.4.orig/builtins/read.def
-+++ bash-4.4/builtins/read.def
-@@ -181,7 +181,8 @@ read_builtin (list)
-      WORD_LIST *list;
- {
-   register char *varname;
--  int size, i, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2;
-+  int size, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2;
-+  volatile int i;
-   int input_is_tty, input_is_pipe, unbuffered_read, skip_ctlesc, skip_ctlnul;
-   int raw, edit, nchars, silent, have_timeout, ignore_delim, fd, lastsig, t_errno;
-   unsigned int tmsec, tmusec;
-Index: bash-4.4/patchlevel.h
-===================================================================
---- bash-4.4.orig/patchlevel.h
-+++ bash-4.4/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/utils/bash/patches/111-upstream-bash44-011.patch b/utils/bash/patches/111-upstream-bash44-011.patch
deleted file mode 100644 (file)
index b6ea030..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-Index: bash-4.4/patchlevel.h
-===================================================================
---- bash-4.4.orig/patchlevel.h
-+++ bash-4.4/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_ */
-Index: bash-4.4/sig.c
-===================================================================
---- bash-4.4.orig/sig.c
-+++ bash-4.4/sig.c
-@@ -585,7 +585,8 @@ termsig_handler (sig)
- #if defined (JOB_CONTROL)
-   if (sig == SIGHUP && (interactive || (subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB))))
-     hangup_all_jobs ();
--  end_job_control ();
-+  if ((subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB)) == 0)
-+    end_job_control ();
- #endif /* JOB_CONTROL */
- #if defined (PROCESS_SUBSTITUTION)
diff --git a/utils/bash/patches/112-upstream-bash44-012.patch b/utils/bash/patches/112-upstream-bash44-012.patch
deleted file mode 100644 (file)
index 83d239e..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-Index: bash-4.4/patchlevel.h
-===================================================================
---- bash-4.4.orig/patchlevel.h
-+++ bash-4.4/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_ */
-Index: bash-4.4/subst.c
-===================================================================
---- bash-4.4.orig/subst.c
-+++ bash-4.4/subst.c
-@@ -2825,11 +2825,15 @@ list_string (string, separators, quoted)
- /* Parse a single word from STRING, using SEPARATORS to separate fields.
-    ENDPTR is set to the first character after the word.  This is used by
--   the `read' builtin.  This is never called with SEPARATORS != $IFS;
--   it should be simplified.
-+   the `read' builtin.
-+   
-+   This is never called with SEPARATORS != $IFS, and takes advantage of that.
-    XXX - this function is very similar to list_string; they should be
-        combined - XXX */
-+
-+#define islocalsep(c) (local_cmap[(unsigned char)(c)] != 0)
-+
- char *
- get_word_from_string (stringp, separators, endptr)
-      char **stringp, *separators, **endptr;
-@@ -2837,6 +2841,7 @@ get_word_from_string (stringp, separator
-   register char *s;
-   char *current_word;
-   int sindex, sh_style_split, whitesep, xflags;
-+  unsigned char local_cmap[UCHAR_MAX+1];      /* really only need single-byte chars here */
-   size_t slen;
-   if (!stringp || !*stringp || !**stringp)
-@@ -2846,20 +2851,23 @@ get_word_from_string (stringp, separator
-                                separators[1] == '\t' &&
-                                separators[2] == '\n' &&
-                                separators[3] == '\0';
--  for (xflags = 0, s = ifs_value; s && *s; s++)
-+  memset (local_cmap, '\0', sizeof (local_cmap));
-+  for (xflags = 0, s = separators; s && *s; s++)
-     {
-       if (*s == CTLESC) xflags |= SX_NOCTLESC;
-       if (*s == CTLNUL) xflags |= SX_NOESCCTLNUL;
-+      local_cmap[(unsigned char)*s] = 1;      /* local charmap of separators */
-     }
-   s = *stringp;
-   slen = 0;
-   /* Remove sequences of whitespace at the beginning of STRING, as
--     long as those characters appear in IFS. */
--  if (sh_style_split || !separators || !*separators)
-+     long as those characters appear in SEPARATORS.  This happens if
-+     SEPARATORS == $' \t\n' or if IFS is unset. */
-+  if (sh_style_split || separators == 0)
-     {
--      for (; *s && spctabnl (*s) && isifs (*s); s++);
-+      for (; *s && spctabnl (*s) && islocalsep (*s); s++);
-       /* If the string is nothing but whitespace, update it and return. */
-       if (!*s)
-@@ -2878,9 +2886,9 @@ get_word_from_string (stringp, separator
-      This obeys the field splitting rules in Posix.2. */
-   sindex = 0;
--  /* Don't need string length in ADVANCE_CHAR or string_extract_verbatim
--     unless multibyte chars are possible. */
--  slen = (MB_CUR_MAX > 1) ? STRLEN (s) : 1;
-+  /* Don't need string length in ADVANCE_CHAR unless multibyte chars are
-+     possible, but need it in string_extract_verbatim for bounds checking */
-+  slen = STRLEN (s);
-   current_word = string_extract_verbatim (s, slen, &sindex, separators, xflags);
-   /* Set ENDPTR to the first character after the end of the word. */
-@@ -2899,19 +2907,19 @@ get_word_from_string (stringp, separator
-   /* Now skip sequences of space, tab, or newline characters if they are
-      in the list of separators. */
--  while (s[sindex] && spctabnl (s[sindex]) && isifs (s[sindex]))
-+  while (s[sindex] && spctabnl (s[sindex]) && islocalsep (s[sindex]))
-     sindex++;
-   /* If the first separator was IFS whitespace and the current character is
-      a non-whitespace IFS character, it should be part of the current field
-      delimiter, not a separate delimiter that would result in an empty field.
-      Look at POSIX.2, 3.6.5, (3)(b). */
--  if (s[sindex] && whitesep && isifs (s[sindex]) && !spctabnl (s[sindex]))
-+  if (s[sindex] && whitesep && islocalsep (s[sindex]) && !spctabnl (s[sindex]))
-     {
-       sindex++;
-       /* An IFS character that is not IFS white space, along with any adjacent
-        IFS white space, shall delimit a field. */
--      while (s[sindex] && spctabnl (s[sindex]) && isifs (s[sindex]))
-+      while (s[sindex] && spctabnl (s[sindex]) && islocalsep(s[sindex]))
-       sindex++;
-     }