summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--package/busybox/Config.in2
-rw-r--r--package/busybox/busybox-1.17.0/busybox-1.17.0-acpid.patch30
-rw-r--r--package/busybox/busybox-1.17.0/busybox-1.17.0-ask_terminal.patch50
-rw-r--r--package/busybox/busybox-1.17.0/busybox-1.17.0-build_system.patch101
-rw-r--r--package/busybox/busybox-1.17.0/busybox-1.17.0-depmod.patch139
-rw-r--r--package/busybox/busybox-1.17.0/busybox-1.17.0-diff.patch114
-rw-r--r--package/busybox/busybox-1.17.0/busybox-1.17.0-dos2unix.patch12
-rw-r--r--package/busybox/busybox-1.17.0/busybox-1.17.0-mktemp.patch13
-rw-r--r--package/busybox/busybox-1.17.0/busybox-1.17.0-modprobe-l.patch27
-rw-r--r--package/busybox/busybox-1.17.0/busybox-1.17.0-top.patch18
-rw-r--r--package/busybox/busybox-1.17.0/busybox-1.17.0-vi.patch60
-rw-r--r--package/busybox/busybox-1.17.0/busybox-1.17.0-volumeid.patch450
-rw-r--r--package/busybox/busybox-1.17.0/busybox-1.17.0-wget.patch12
-rw-r--r--package/busybox/busybox-1.17.1/busybox-1.17.1-shell.patch86
14 files changed, 87 insertions, 1027 deletions
diff --git a/package/busybox/Config.in b/package/busybox/Config.in
index 001640651..fc342590a 100644
--- a/package/busybox/Config.in
+++ b/package/busybox/Config.in
@@ -45,7 +45,7 @@ config BR2_BUSYBOX_VERSION
default "1.14.4" if BR2_BUSYBOX_VERSION_1_14_X
default "1.15.3" if BR2_BUSYBOX_VERSION_1_15_X
default "1.16.2" if BR2_BUSYBOX_VERSION_1_16_X
- default "1.17.0" if BR2_BUSYBOX_VERSION_1_17_X
+ default "1.17.1" if BR2_BUSYBOX_VERSION_1_17_X
config BR2_PACKAGE_BUSYBOX_FULLINSTALL
bool "Run BusyBox's own full installation"
diff --git a/package/busybox/busybox-1.17.0/busybox-1.17.0-acpid.patch b/package/busybox/busybox-1.17.0/busybox-1.17.0-acpid.patch
deleted file mode 100644
index 664b87e31..000000000
--- a/package/busybox/busybox-1.17.0/busybox-1.17.0-acpid.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-diff -urpN busybox-1.17.0/util-linux/acpid.c busybox-1.17.0-acpid/util-linux/acpid.c
---- busybox-1.17.0/util-linux/acpid.c 2010-06-24 04:40:43.000000000 +0200
-+++ busybox-1.17.0-acpid/util-linux/acpid.c 2010-07-12 06:24:00.000000000 +0200
-@@ -9,9 +9,25 @@
- #include "libbb.h"
-
- #include <linux/input.h>
-+#ifndef EV_SW
-+# define EV_SW 0x05
-+#endif
-+#ifndef EV_KEY
-+# define EV_KEY 0x01
-+#endif
-+#ifndef SW_LID
-+# define SW_LID 0x00
-+#endif
- #ifndef SW_RFKILL_ALL
--# define SW_RFKILL_ALL 3
-+# define SW_RFKILL_ALL 0x03
- #endif
-+#ifndef KEY_POWER
-+# define KEY_POWER 116 /* SC System Power Down */
-+#endif
-+#ifndef KEY_SLEEP
-+# define KEY_SLEEP 142 /* SC System Sleep */
-+#endif
-+
-
- /*
- * acpid listens to ACPI events coming either in textual form
diff --git a/package/busybox/busybox-1.17.0/busybox-1.17.0-ask_terminal.patch b/package/busybox/busybox-1.17.0/busybox-1.17.0-ask_terminal.patch
deleted file mode 100644
index 3b1a99ac4..000000000
--- a/package/busybox/busybox-1.17.0/busybox-1.17.0-ask_terminal.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-diff -urpN busybox-1.17.0/libbb/lineedit.c busybox-1.17.0-ask_terminal/libbb/lineedit.c
---- busybox-1.17.0/libbb/lineedit.c 2010-06-24 04:40:43.000000000 +0200
-+++ busybox-1.17.0-ask_terminal/libbb/lineedit.c 2010-07-18 22:38:47.000000000 +0200
-@@ -151,6 +151,7 @@ struct lineedit_statics {
- CHAR_T delbuf[DELBUFSIZ]; /* a place to store deleted characters */
- #endif
- #if ENABLE_FEATURE_EDITING_ASK_TERMINAL
-+ smallint unknown_width;
- smallint sent_ESC_br6n;
- #endif
-
-@@ -1612,14 +1613,16 @@ static void ask_terminal(void)
- * poll([{fd=0, events=POLLIN}], 1, 4294967295) = 1 ([{fd=0, revents=POLLIN}])
- * read(0, "\n", 1) = 1 <-- oh crap, user's input got in first
- */
-- struct pollfd pfd;
-+ if (S.unknown_width) { /* only if window size is not known */
-+ struct pollfd pfd;
-
-- pfd.fd = STDIN_FILENO;
-- pfd.events = POLLIN;
-- if (safe_poll(&pfd, 1, 0) == 0) {
-- S.sent_ESC_br6n = 1;
-- fputs("\033" "[6n", stdout);
-- fflush_all(); /* make terminal see it ASAP! */
-+ pfd.fd = STDIN_FILENO;
-+ pfd.events = POLLIN;
-+ if (safe_poll(&pfd, 1, 0) == 0) {
-+ S.sent_ESC_br6n = 1;
-+ fputs("\033" "[6n", stdout);
-+ fflush_all(); /* make terminal see it ASAP! */
-+ }
- }
- }
- #else
-@@ -1765,11 +1768,13 @@ static void cmdedit_setwidth(unsigned w,
-
- static void win_changed(int nsig)
- {
-+ int sv_errno = errno;
- unsigned width;
-- get_terminal_width_height(0, &width, NULL);
-+ IF_FEATURE_EDITING_ASK_TERMINAL(S.unknown_width =) get_terminal_width_height(0, &width, NULL);
- cmdedit_setwidth(width, nsig /* - just a yes/no flag */);
- if (nsig == SIGWINCH)
- signal(SIGWINCH, win_changed); /* rearm ourself */
-+ errno = sv_errno;
- }
-
- static int lineedit_read_key(char *read_key_buffer)
diff --git a/package/busybox/busybox-1.17.0/busybox-1.17.0-build_system.patch b/package/busybox/busybox-1.17.0/busybox-1.17.0-build_system.patch
deleted file mode 100644
index 211264498..000000000
--- a/package/busybox/busybox-1.17.0/busybox-1.17.0-build_system.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-diff -urpN busybox-1.17.0/applets/usage_compressed busybox-1.17.0-build_system/applets/usage_compressed
---- busybox-1.17.0/applets/usage_compressed 2010-07-04 23:33:59.000000000 +0200
-+++ busybox-1.17.0-build_system/applets/usage_compressed 2010-07-10 01:31:18.000000000 +0200
-@@ -40,8 +40,4 @@ echo '#define PACKED_USAGE \'
- -e 's/$/ \\/'
- echo ''
-
--if cmp -s "$target.$$" "$target" 2>/dev/null; then
-- rm -- "$target.$$"
--else
-- mv -- "$target.$$" "$target"
--fi
-+mv -- "$target.$$" "$target"
-diff -urpN busybox-1.17.0/init/bootchartd.c busybox-1.17.0-build_system/init/bootchartd.c
---- busybox-1.17.0/init/bootchartd.c 2010-07-04 15:32:24.000000000 +0200
-+++ busybox-1.17.0-build_system/init/bootchartd.c 2010-07-10 01:31:14.000000000 +0200
-@@ -18,7 +18,7 @@
- //config: and stopped using bootchartd stop.
- //config:
- //config:config FEATURE_BOOTCHARTD_BLOATED_HEADER
--//config: bool "bootchartd"
-+//config: bool "Compatible, bloated header"
- //config: default y
- //config: depends on BOOTCHARTD
- //config: help
-@@ -35,7 +35,7 @@
- //config: makes bootchartd applet to dump a subset of it.
- //config:
- //config:config FEATURE_BOOTCHARTD_CONFIG_FILE
--//config: bool "bootchartd"
-+//config: bool "Support bootchartd.conf"
- //config: default y
- //config: depends on BOOTCHARTD
- //config: help
-diff -urpN busybox-1.17.0/scripts/gen_build_files.sh busybox-1.17.0-build_system/scripts/gen_build_files.sh
---- busybox-1.17.0/scripts/gen_build_files.sh 2010-06-26 00:42:29.000000000 +0200
-+++ busybox-1.17.0-build_system/scripts/gen_build_files.sh 2010-07-10 01:31:38.000000000 +0200
-@@ -4,6 +4,8 @@ test $# -ge 2 || { echo "Syntax: $0 SRCT
-
- # cd to objtree
- cd -- "$2" || { echo "Syntax: $0 SRCTREE OBJTREE"; exit 1; }
-+# In separate objtree build, include/ might not exist yet
-+mkdir include 2>/dev/null
-
- srctree="$1"
-
-@@ -46,10 +48,12 @@ if test x"$new" != x"$old"; then
- fi
-
- # (Re)generate */Kbuild and */Config.in
--find -type d | while read -r d; do
-+{ cd -- "$srctree" && find -type d; } | while read -r d; do
- d="${d#./}"
-+
- src="$srctree/$d/Kbuild.src"
- dst="$d/Kbuild"
-+ mkdir -p -- "$d" 2>/dev/null
- if test -f "$src"; then
- #echo " CHK $dst"
-
-@@ -69,6 +73,7 @@ find -type d | while read -r d; do
-
- src="$srctree/$d/Config.src"
- dst="$d/Config.in"
-+ mkdir -p -- "$d" 2>/dev/null
- if test -f "$src"; then
- #echo " CHK $dst"
-
-diff -urpN busybox-1.17.0/scripts/Makefile.build busybox-1.17.0-build_system/scripts/Makefile.build
---- busybox-1.17.0/scripts/Makefile.build 2010-06-24 04:40:43.000000000 +0200
-+++ busybox-1.17.0-build_system/scripts/Makefile.build 2010-07-10 01:31:38.000000000 +0200
-@@ -13,8 +13,13 @@ __build:
- include scripts/Kbuild.include
-
- # The filename Kbuild has precedence over Makefile
-+# bbox: we also try to include Kbuild file in obj tree first
- kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
--include $(if $(wildcard $(kbuild-dir)/Kbuild), $(kbuild-dir)/Kbuild, $(kbuild-dir)/Makefile)
-+include $(if $(wildcard $(src)/Kbuild), $(src)/Kbuild, \
-+ $(if $(wildcard $(kbuild-dir)/Kbuild), $(kbuild-dir)/Kbuild, \
-+ $(kbuild-dir)/Makefile \
-+ ) \
-+ )
-
- include scripts/Makefile.lib
-
-diff -urpN busybox-1.17.0/scripts/test_make_O busybox-1.17.0-build_system/scripts/test_make_O
---- busybox-1.17.0/scripts/test_make_O 1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.17.0-build_system/scripts/test_make_O 2010-07-10 01:31:38.000000000 +0200
-@@ -0,0 +1,11 @@
-+#!/bin/sh
-+
-+b=`basename $PWD`
-+test "${b#busybox}" != "$b" || { echo "Must be run in busybox tree"; exit 1; }
-+
-+rm -rf ../testdir_make_O.$$
-+mkdir ../testdir_make_O.$$
-+odir=`cd ../testdir_make_O.$$ && pwd`
-+test -d "$odir" || exit 1
-+
-+make O="$odir" $MAKEOPTS "$@" defconfig busybox 2>&1 | tee test_make_O.log
diff --git a/package/busybox/busybox-1.17.0/busybox-1.17.0-depmod.patch b/package/busybox/busybox-1.17.0/busybox-1.17.0-depmod.patch
deleted file mode 100644
index 105cd1737..000000000
--- a/package/busybox/busybox-1.17.0/busybox-1.17.0-depmod.patch
+++ /dev/null
@@ -1,139 +0,0 @@
-diff -urpN busybox-1.17.0/modutils/depmod.c busybox-1.17.0-depmod/modutils/depmod.c
---- busybox-1.17.0/modutils/depmod.c 2010-06-24 04:40:43.000000000 +0200
-+++ busybox-1.17.0-depmod/modutils/depmod.c 2010-07-19 00:28:22.000000000 +0200
-@@ -28,16 +28,6 @@ typedef struct module_info {
- struct module_info *dnext, *dprev;
- } module_info;
-
--enum {
-- ARG_a = (1<<0), /* All modules, ignore mods in argv */
-- ARG_A = (1<<1), /* Only emit .ko that are newer than modules.dep file */
-- ARG_b = (1<<2), /* base directory when modules are in staging area */
-- ARG_e = (1<<3), /* with -F, print unresolved symbols */
-- ARG_F = (1<<4), /* System.map that contains the symbols */
-- ARG_n = (1<<5), /* dry-run, print to stdout only */
-- ARG_r = (1<<6) /* Compat dummy. Linux Makefile uses it */
--};
--
- static int FAST_FUNC parse_module(const char *fname, struct stat *sb UNUSED_PARAM,
- void *data, int depth UNUSED_PARAM)
- {
-@@ -58,7 +48,7 @@ static int FAST_FUNC parse_module(const
- *first = info;
-
- info->dnext = info->dprev = info;
-- info->name = xasprintf("/%s", fname);
-+ info->name = xstrdup(fname + 2); /* skip "./" */
- info->modname = xstrdup(filename2modname(fname, modname));
- for (ptr = image; ptr < image + len - 10; ptr++) {
- if (strncmp(ptr, "depends=", 8) == 0) {
-@@ -134,10 +124,44 @@ static void xfreopen_write(const char *f
- bb_perror_msg_and_die("can't open '%s'", file);
- }
-
-+/* Usage:
-+ * [-aAenv] [-C FILE or DIR] [-b BASE] [-F System.map] [VERSION] [MODFILES]...
-+ * -a --all
-+ * Probe all modules. Default if no MODFILES.
-+ * -A --quick
-+ * Check modules.dep's mtime against module files' mtimes.
-+ * -b --basedir BASE
-+ * Use $BASE/lib/modules/VERSION
-+ * -C --config FILE or DIR
-+ * Path to /etc/depmod.conf or /etc/depmod.d/
-+ * -e --errsyms
-+ * When combined with the -F option, this reports any symbols which
-+ * which are not supplied by other modules or kernel.
-+ * -F --filesyms System.map
-+ * -n --dry-run
-+ * Print modules.dep etc to standard output
-+ * -v --verbose
-+ * Print to stdout all the symbols each module depends on
-+ * and the module's file name which provides that symbol.
-+ * -r No-op
-+ *
-+ * So far we only support: [-rn] [-b BASE] [VERSION] [MODFILES]...
-+ * -aAeF are accepted but ignored. -vC are not accepted.
-+ */
-+enum {
-+ //OPT_a = (1 << 0), /* All modules, ignore mods in argv */
-+ //OPT_A = (1 << 1), /* Only emit .ko that are newer than modules.dep file */
-+ OPT_b = (1 << 2), /* base directory when modules are in staging area */
-+ //OPT_e = (1 << 3), /* with -F, print unresolved symbols */
-+ //OPT_F = (1 << 4), /* System.map that contains the symbols */
-+ OPT_n = (1 << 5), /* dry-run, print to stdout only */
-+ OPT_r = (1 << 6) /* Compat dummy. Linux Makefile uses it */
-+};
-+
- int depmod_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
- int depmod_main(int argc UNUSED_PARAM, char **argv)
- {
-- module_info *modules = NULL, *m, *dep;
-+ module_info *modules, *m, *dep;
- const char *moddir_base = "/";
- char *moddir, *version;
- struct utsname uts;
-@@ -152,36 +176,30 @@ int depmod_main(int argc UNUSED_PARAM, c
- /* If a version is provided, then that kernel version's module directory
- * is used, rather than the current kernel version (as returned by
- * "uname -r"). */
-- if (*argv && sscanf(*argv, "%d.%d.%d", &tmp, &tmp, &tmp) == 3) {
-+ if (*argv && sscanf(*argv, "%u.%u.%u", &tmp, &tmp, &tmp) == 3) {
- version = *argv++;
- } else {
- uname(&uts);
- version = uts.release;
- }
- moddir = concat_path_file(&CONFIG_DEFAULT_MODULES_DIR[1], version);
-+ xchdir(moddir);
-+ if (ENABLE_FEATURE_CLEAN_UP)
-+ free(moddir);
-
- /* Scan modules */
-+ modules = NULL;
- if (*argv) {
-- char *modfile;
-- struct stat sb;
- do {
-- modfile = concat_path_file(moddir, *argv);
-- xstat(modfile, &sb);
-- parse_module(modfile, &sb, &modules, 0);
-- free(modfile);
-- } while (*(++argv));
-+ parse_module(*argv, /*sb (unused):*/ NULL, &modules, 0);
-+ } while (*++argv);
- } else {
-- recursive_action(moddir, ACTION_RECURSE,
-+ recursive_action(".", ACTION_RECURSE,
- parse_module, NULL, &modules, 0);
- }
-
-- /* Prepare for writing out the dep files */
-- xchdir(moddir);
-- if (ENABLE_FEATURE_CLEAN_UP)
-- free(moddir);
--
- /* Generate dependency and alias files */
-- if (!(option_mask32 & ARG_n))
-+ if (!(option_mask32 & OPT_n))
- xfreopen_write(CONFIG_DEFAULT_DEPMOD_FILE, stdout);
- for (m = modules; m != NULL; m = m->next) {
- printf("%s:", m->name);
-@@ -200,7 +218,7 @@ int depmod_main(int argc UNUSED_PARAM, c
- }
-
- #if ENABLE_FEATURE_MODUTILS_ALIAS
-- if (!(option_mask32 & ARG_n))
-+ if (!(option_mask32 & OPT_n))
- xfreopen_write("modules.alias", stdout);
- for (m = modules; m != NULL; m = m->next) {
- const char *fname = bb_basename(m->name);
-@@ -218,7 +236,7 @@ int depmod_main(int argc UNUSED_PARAM, c
- }
- #endif
- #if ENABLE_FEATURE_MODUTILS_SYMBOLS
-- if (!(option_mask32 & ARG_n))
-+ if (!(option_mask32 & OPT_n))
- xfreopen_write("modules.symbols", stdout);
- for (m = modules; m != NULL; m = m->next) {
- const char *fname = bb_basename(m->name);
diff --git a/package/busybox/busybox-1.17.0/busybox-1.17.0-diff.patch b/package/busybox/busybox-1.17.0/busybox-1.17.0-diff.patch
deleted file mode 100644
index 98309006f..000000000
--- a/package/busybox/busybox-1.17.0/busybox-1.17.0-diff.patch
+++ /dev/null
@@ -1,114 +0,0 @@
-diff -urpN busybox-1.17.0/editors/diff.c busybox-1.17.0-diff/editors/diff.c
---- busybox-1.17.0/editors/diff.c 2010-06-24 04:40:43.000000000 +0200
-+++ busybox-1.17.0-diff/editors/diff.c 2010-07-19 00:27:45.000000000 +0200
-@@ -121,6 +121,7 @@ typedef struct FILE_and_pos_t {
- struct globals {
- smallint exit_status;
- int opt_U_context;
-+ const char *other_dir;
- char *label[2];
- struct stat stb[2];
- };
-@@ -760,9 +761,11 @@ static int FAST_FUNC add_to_dirlist(cons
- void *userdata, int depth UNUSED_PARAM)
- {
- struct dlist *const l = userdata;
-+ const char *file = filename + l->len;
-+ while (*file == '/')
-+ file++;
- l->dl = xrealloc_vector(l->dl, 6, l->e);
-- /* + 1 skips "/" after dirname */
-- l->dl[l->e] = xstrdup(filename + l->len + 1);
-+ l->dl[l->e] = xstrdup(file);
- l->e++;
- return TRUE;
- }
-@@ -778,6 +781,25 @@ static int FAST_FUNC skip_dir(const char
- add_to_dirlist(filename, sb, userdata, depth);
- return SKIP;
- }
-+ if (!(option_mask32 & FLAG(N))) {
-+ /* -r without -N: no need to recurse into dirs
-+ * which do not exist on the "other side".
-+ * Testcase: diff -r /tmp /
-+ * (it would recurse deep into /proc without this code) */
-+ struct dlist *const l = userdata;
-+ filename += l->len;
-+ if (filename[0]) {
-+ struct stat osb;
-+ char *othername = concat_path_file(G.other_dir, filename);
-+ int r = stat(othername, &osb);
-+ free(othername);
-+ if (r != 0 || !S_ISDIR(osb.st_mode)) {
-+ /* other dir doesn't have similarly named
-+ * directory, don't recurse */
-+ return SKIP;
-+ }
-+ }
-+ }
- return TRUE;
- }
-
-@@ -791,6 +813,7 @@ static void diffdir(char *p[2], const ch
- /*list[i].s = list[i].e = 0; - memset did it */
- /*list[i].dl = NULL; */
-
-+ G.other_dir = p[1 - i];
- /* We need to trim root directory prefix.
- * Using list.len to specify its length,
- * add_to_dirlist will remove it. */
-diff -urpN busybox-1.17.0/testsuite/diff.tests busybox-1.17.0-diff/testsuite/diff.tests
---- busybox-1.17.0/testsuite/diff.tests 2010-06-24 04:40:43.000000000 +0200
-+++ busybox-1.17.0-diff/testsuite/diff.tests 2010-07-10 01:31:51.000000000 +0200
-@@ -4,7 +4,7 @@
-
- . ./testing.sh
-
--# testing "test name" "options" "expected result" "file input" "stdin"
-+# testing "test name" "commands" "expected result" "file input" "stdin"
-
- # diff outputs date/time in the header, which should not be analysed
- # NB: sed has tab character in s command!
-@@ -100,9 +100,11 @@ testing "diff always takes context from
- "abc\na c\ndef\n" \
- "a c\n"
-
--# testing "test name" "options" "expected result" "file input" "stdin"
-+# testing "test name" "commands" "expected result" "file input" "stdin"
-
-+# clean up
- rm -rf diff1 diff2
-+
- mkdir diff1 diff2 diff2/subdir
- echo qwe >diff1/-
- echo asd >diff2/subdir/-
-@@ -187,4 +189,29 @@ SKIP=
- # clean up
- rm -rf diff1 diff2
-
-+# NOT using directory structure from prev test...
-+mkdir diff1 diff2
-+echo qwe >diff1/-
-+echo rty >diff2/-
-+optional FEATURE_DIFF_DIR
-+testing "diff diff1 diff2/" \
-+ "diff -ur diff1 diff2/ | $TRIM_TAB; diff -ur .///diff1 diff2//// | $TRIM_TAB" \
-+"\
-+--- diff1/-
-++++ diff2/-
-+@@ -1 +1 @@
-+-qwe
-++rty
-+--- .///diff1/-
-++++ diff2////-
-+@@ -1 +1 @@
-+-qwe
-++rty
-+" \
-+ "" ""
-+SKIP=
-+
-+# clean up
-+rm -rf diff1 diff2
-+
- exit $FAILCOUNT
diff --git a/package/busybox/busybox-1.17.0/busybox-1.17.0-dos2unix.patch b/package/busybox/busybox-1.17.0/busybox-1.17.0-dos2unix.patch
deleted file mode 100644
index dde59e046..000000000
--- a/package/busybox/busybox-1.17.0/busybox-1.17.0-dos2unix.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -urpN busybox-1.17.0/coreutils/dos2unix.c busybox-1.17.0-dos2unix/coreutils/dos2unix.c
---- busybox-1.17.0/coreutils/dos2unix.c 2010-06-24 04:40:43.000000000 +0200
-+++ busybox-1.17.0-dos2unix/coreutils/dos2unix.c 2010-07-17 22:40:21.021422169 +0200
-@@ -92,7 +92,7 @@ int dos2unix_main(int argc UNUSED_PARAM,
- do {
- /* might be convert(NULL) if there is no filename given */
- convert(*argv, conv_type);
-- } while (*++argv);
-+ } while (*argv && *++argv);
-
- return 0;
- }
diff --git a/package/busybox/busybox-1.17.0/busybox-1.17.0-mktemp.patch b/package/busybox/busybox-1.17.0/busybox-1.17.0-mktemp.patch
deleted file mode 100644
index 023a7cfc2..000000000
--- a/package/busybox/busybox-1.17.0/busybox-1.17.0-mktemp.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -urpN busybox-1.17.0/debianutils/mktemp.c busybox-1.17.0-mktemp/debianutils/mktemp.c
---- busybox-1.17.0/debianutils/mktemp.c 2010-06-24 04:40:43.000000000 +0200
-+++ busybox-1.17.0-mktemp/debianutils/mktemp.c 2010-07-12 03:42:48.000000000 +0200
-@@ -50,7 +50,8 @@ int mktemp_main(int argc UNUSED_PARAM, c
- opts = getopt32(argv, "dqtp:", &path);
-
- chp = argv[optind] ? argv[optind] : xstrdup("tmp.XXXXXX");
-- chp = concat_path_file(path, chp);
-+ if (chp[0] != '/' || (opts & 8))
-+ chp = concat_path_file(path, chp);
-
- if (opts & 1) { /* -d */
- if (mkdtemp(chp) == NULL)
diff --git a/package/busybox/busybox-1.17.0/busybox-1.17.0-modprobe-l.patch b/package/busybox/busybox-1.17.0/busybox-1.17.0-modprobe-l.patch
deleted file mode 100644
index 496a59928..000000000
--- a/package/busybox/busybox-1.17.0/busybox-1.17.0-modprobe-l.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-diff -urpN busybox-1.17.0/modutils/modprobe.c busybox-1.17.0-modprobe-l/modutils/modprobe.c
---- busybox-1.17.0/modutils/modprobe.c 2010-06-24 04:40:43.000000000 +0200
-+++ busybox-1.17.0-modprobe-l/modutils/modprobe.c 2010-07-10 01:25:42.000000000 +0200
-@@ -483,6 +483,11 @@ int modprobe_main(int argc UNUSED_PARAM,
- opt = getopt32(argv, INSMOD_OPTS MODPROBE_OPTS INSMOD_ARGS);
- argv += optind;
-
-+ /* Goto modules location */
-+ xchdir(CONFIG_DEFAULT_MODULES_DIR);
-+ uname(&uts);
-+ xchdir(uts.release);
-+
- if (opt & MODPROBE_OPT_LIST_ONLY) {
- char name[MODULE_NAME_LEN];
- char *colon, *tokens[2];
-@@ -524,11 +529,6 @@ int modprobe_main(int argc UNUSED_PARAM,
- return EXIT_SUCCESS;
- }
-
-- /* Goto modules location */
-- xchdir(CONFIG_DEFAULT_MODULES_DIR);
-- uname(&uts);
-- xchdir(uts.release);
--
- /* Retrieve module names of already loaded modules */
- {
- char *s;
diff --git a/package/busybox/busybox-1.17.0/busybox-1.17.0-top.patch b/package/busybox/busybox-1.17.0/busybox-1.17.0-top.patch
deleted file mode 100644
index 84c91f34a..000000000
--- a/package/busybox/busybox-1.17.0/busybox-1.17.0-top.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff -urpN busybox-1.17.0/procps/top.c busybox-1.17.0-top/procps/top.c
---- busybox-1.17.0/procps/top.c 2010-06-24 04:40:43.000000000 +0200
-+++ busybox-1.17.0-top/procps/top.c 2010-07-19 00:27:04.000000000 +0200
-@@ -686,10 +686,10 @@ static int topmem_sort(char *a, char *b)
- n = offsetof(topmem_status_t, vsz) + (sort_field * sizeof(mem_t));
- l = *(mem_t*)(a + n);
- r = *(mem_t*)(b + n);
--// if (l == r) {
--// l = a->mapped_rw;
--// r = b->mapped_rw;
--// }
-+ if (l == r) {
-+ l = ((topmem_status_t*)a)->dirty;
-+ r = ((topmem_status_t*)b)->dirty;
-+ }
- /* We want to avoid unsigned->signed and truncation errors */
- /* l>r: -1, l=r: 0, l<r: 1 */
- n = (l > r) ? -1 : (l != r);
diff --git a/package/busybox/busybox-1.17.0/busybox-1.17.0-vi.patch b/package/busybox/busybox-1.17.0/busybox-1.17.0-vi.patch
deleted file mode 100644
index cc61c873f..000000000
--- a/package/busybox/busybox-1.17.0/busybox-1.17.0-vi.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-diff -urpN busybox-1.17.0/editors/vi.c busybox-1.17.0-vi/editors/vi.c
---- busybox-1.17.0/editors/vi.c 2010-07-04 04:17:40.000000000 +0200
-+++ busybox-1.17.0-vi/editors/vi.c 2010-07-21 12:19:36.827970040 +0200
-@@ -504,20 +504,17 @@ static int init_text_buffer(char *fn)
- }
-
- #if ENABLE_FEATURE_VI_WIN_RESIZE
--static void query_screen_dimensions(void)
-+static int query_screen_dimensions(void)
- {
--# if ENABLE_FEATURE_VI_ASK_TERMINAL
-- if (!G.get_rowcol_error)
-- G.get_rowcol_error =
--# endif
-- get_terminal_width_height(STDIN_FILENO, &columns, &rows);
-+ int err = get_terminal_width_height(STDIN_FILENO, &columns, &rows);
- if (rows > MAX_SCR_ROWS)
- rows = MAX_SCR_ROWS;
- if (columns > MAX_SCR_COLS)
- columns = MAX_SCR_COLS;
-+ return err;
- }
- #else
--# define query_screen_dimensions() ((void)0)
-+# define query_screen_dimensions() (0)
- #endif
-
- static void edit_file(char *fn)
-@@ -536,7 +533,7 @@ static void edit_file(char *fn)
- rows = 24;
- columns = 80;
- size = 0;
-- query_screen_dimensions();
-+ IF_FEATURE_VI_ASK_TERMINAL(G.get_rowcol_error =) query_screen_dimensions();
- #if ENABLE_FEATURE_VI_ASK_TERMINAL
- if (G.get_rowcol_error /* TODO? && no input on stdin */) {
- uint64_t k;
-@@ -546,9 +543,12 @@ static void edit_file(char *fn)
- if ((int32_t)k == KEYCODE_CURSOR_POS) {
- uint32_t rc = (k >> 32);
- columns = (rc & 0x7fff);
-+ if (columns > MAX_SCR_COLS)
-+ columns = MAX_SCR_COLS;
- rows = ((rc >> 16) & 0x7fff);
-+ if (rows > MAX_SCR_ROWS)
-+ rows = MAX_SCR_ROWS;
- }
-- query_screen_dimensions();
- }
- #endif
- new_screen(rows, columns); // get memory for virtual screen
-@@ -2797,7 +2797,7 @@ static void refresh(int full_screen)
- int li, changed;
- char *tp, *sp; // pointer into text[] and screen[]
-
-- if (ENABLE_FEATURE_VI_WIN_RESIZE) {
-+ if (ENABLE_FEATURE_VI_WIN_RESIZE IF_FEATURE_VI_ASK_TERMINAL(&& !G.get_rowcol_error) ) {
- unsigned c = columns, r = rows;
- query_screen_dimensions();
- full_screen |= (c - columns) | (r - rows);
diff --git a/package/busybox/busybox-1.17.0/busybox-1.17.0-volumeid.patch b/package/busybox/busybox-1.17.0/busybox-1.17.0-volumeid.patch
deleted file mode 100644
index 5fc0cf06c..000000000
--- a/package/busybox/busybox-1.17.0/busybox-1.17.0-volumeid.patch
+++ /dev/null
@@ -1,450 +0,0 @@
-diff -urpN busybox-1.17.0/util-linux/Config.src busybox-1.17.0-volumeid/util-linux/Config.src
---- busybox-1.17.0/util-linux/Config.src 2010-06-24 04:40:43.000000000 +0200
-+++ busybox-1.17.0-volumeid/util-linux/Config.src 2010-07-14 07:12:19.000000000 +0200
-@@ -470,221 +470,6 @@ config FEATURE_USE_TERMIOS
- will be unable to determine the current screen size, and will be
- unable to move the cursor.
-
--config VOLUMEID
-- bool #No description makes it a hidden option
-- default n
--
--config FEATURE_VOLUMEID_EXT
-- bool "Ext filesystem"
-- default y
-- depends on VOLUMEID
-- help
-- TODO
--
--config FEATURE_VOLUMEID_BTRFS
-- bool "btrfs filesystem"
-- default y
-- depends on VOLUMEID
-- help
-- TODO
--
--config FEATURE_VOLUMEID_REISERFS
-- bool "Reiser filesystem"
-- default y
-- depends on VOLUMEID
-- help
-- TODO
--
--config FEATURE_VOLUMEID_FAT
-- bool "fat filesystem"
-- default y
-- depends on VOLUMEID
-- help
-- TODO
--
--config FEATURE_VOLUMEID_HFS
-- bool "hfs filesystem"
-- default y
-- depends on VOLUMEID
-- help
-- TODO
--
--config FEATURE_VOLUMEID_JFS
-- bool "jfs filesystem"
-- default y
-- depends on VOLUMEID
-- help
-- TODO
--
--### config FEATURE_VOLUMEID_UFS
--### bool "ufs filesystem"
--### default y
--### depends on VOLUMEID
--### help
--### TODO
--
--config FEATURE_VOLUMEID_XFS
-- bool "xfs filesystem"
-- default y
-- depends on VOLUMEID
-- help
-- TODO
--
--config FEATURE_VOLUMEID_NTFS
-- bool "ntfs filesystem"
-- default y
-- depends on VOLUMEID
-- help
-- TODO
--
--config FEATURE_VOLUMEID_ISO9660
-- bool "iso9660 filesystem"
-- default y
-- depends on VOLUMEID
-- help
-- TODO
--
--config FEATURE_VOLUMEID_UDF
-- bool "udf filesystem"
-- default y
-- depends on VOLUMEID
-- help
-- TODO
--
--config FEATURE_VOLUMEID_LUKS
-- bool "luks filesystem"
-- default y
-- depends on VOLUMEID
-- help
-- TODO
--
--config FEATURE_VOLUMEID_LINUXSWAP
-- bool "linux swap filesystem"
-- default y
-- depends on VOLUMEID
-- help
-- TODO
--
--### config FEATURE_VOLUMEID_LVM
--### bool "lvm"
--### default y
--### depends on VOLUMEID
--### help
--### TODO
--
--config FEATURE_VOLUMEID_CRAMFS
-- bool "cramfs filesystem"
-- default y
-- depends on VOLUMEID
-- help
-- TODO
--
--### config FEATURE_VOLUMEID_HPFS
--### bool "hpfs filesystem"
--### default y
--### depends on VOLUMEID
--### help
--### TODO
--
--config FEATURE_VOLUMEID_ROMFS
-- bool "romfs filesystem"
-- default y
-- depends on VOLUMEID
-- help
-- TODO
--
--config FEATURE_VOLUMEID_SYSV
-- bool "sysv filesystem"
-- default y
-- depends on VOLUMEID
-- help
-- TODO
--
--### config FEATURE_VOLUMEID_MINIX
--### bool "minix filesystem"
--### default y
--### depends on VOLUMEID
--### help
--### TODO
--
--### These only detect partition tables - not used (yet?)
--### config FEATURE_VOLUMEID_MAC
--### bool "mac filesystem"
--### default y
--### depends on VOLUMEID
--### help
--### TODO
--###
--### config FEATURE_VOLUMEID_MSDOS
--### bool "msdos filesystem"
--### default y
--### depends on VOLUMEID
--### help
--### TODO
--
--config FEATURE_VOLUMEID_OCFS2
-- bool "ocfs2 filesystem"
-- default y
-- depends on VOLUMEID
-- help
-- TODO
--
--### config FEATURE_VOLUMEID_HIGHPOINTRAID
--### bool "highpoint raid"
--### default y
--### depends on VOLUMEID
--### help
--### TODO
--
--### config FEATURE_VOLUMEID_ISWRAID
--### bool "intel raid"
--### default y
--### depends on VOLUMEID
--### help
--### TODO
--
--### config FEATURE_VOLUMEID_LSIRAID
--### bool "lsi raid"
--### default y
--### depends on VOLUMEID
--### help
--### TODO
--
--### config FEATURE_VOLUMEID_VIARAID
--### bool "via raid"
--### default y
--### depends on VOLUMEID
--### help
--### TODO
--
--### config FEATURE_VOLUMEID_SILICONRAID
--### bool "silicon raid"
--### default y
--### depends on VOLUMEID
--### help
--### TODO
--
--### config FEATURE_VOLUMEID_NVIDIARAID
--### bool "nvidia raid"
--### default y
--### depends on VOLUMEID
--### help
--### TODO
--
--### config FEATURE_VOLUMEID_PROMISERAID
--### bool "promise raid"
--### default y
--### depends on VOLUMEID
--### help
--### TODO
--
--config FEATURE_VOLUMEID_LINUXRAID
-- bool "linuxraid"
-- default y
-- depends on VOLUMEID
-- help
-- TODO
--
- config MOUNT
- bool "mount"
- default y
-@@ -937,4 +722,224 @@ config FEATURE_MTAB_SUPPORT
- About the only reason to use this is if you've removed /proc from
- your kernel.
-
-+config VOLUMEID
-+ bool #No description makes it a hidden option
-+ default n
-+
-+menu "Filesystem/Volume identification"
-+ depends on VOLUMEID
-+
-+config FEATURE_VOLUMEID_EXT
-+ bool "Ext filesystem"
-+ default y
-+ depends on VOLUMEID
-+ help
-+ TODO
-+
-+config FEATURE_VOLUMEID_BTRFS
-+ bool "btrfs filesystem"
-+ default y
-+ depends on VOLUMEID
-+ help
-+ TODO
-+
-+config FEATURE_VOLUMEID_REISERFS
-+ bool "Reiser filesystem"
-+ default y
-+ depends on VOLUMEID
-+ help
-+ TODO
-+
-+config FEATURE_VOLUMEID_FAT
-+ bool "fat filesystem"
-+ default y
-+ depends on VOLUMEID
-+ help
-+ TODO
-+
-+config FEATURE_VOLUMEID_HFS
-+ bool "hfs filesystem"
-+ default y
-+ depends on VOLUMEID
-+ help
-+ TODO
-+
-+config FEATURE_VOLUMEID_JFS
-+ bool "jfs filesystem"
-+ default y
-+ depends on VOLUMEID
-+ help
-+ TODO
-+
-+### config FEATURE_VOLUMEID_UFS
-+### bool "ufs filesystem"
-+### default y
-+### depends on VOLUMEID
-+### help
-+### TODO
-+
-+config FEATURE_VOLUMEID_XFS
-+ bool "xfs filesystem"
-+ default y
-+ depends on VOLUMEID
-+ help
-+ TODO
-+
-+config FEATURE_VOLUMEID_NTFS
-+ bool "ntfs filesystem"
-+ default y
-+ depends on VOLUMEID
-+ help
-+ TODO
-+
-+config FEATURE_VOLUMEID_ISO9660
-+ bool "iso9660 filesystem"
-+ default y
-+ depends on VOLUMEID
-+ help
-+ TODO
-+
-+config FEATURE_VOLUMEID_UDF
-+ bool "udf filesystem"
-+ default y
-+ depends on VOLUMEID
-+ help
-+ TODO
-+
-+config FEATURE_VOLUMEID_LUKS
-+ bool "luks filesystem"
-+ default y
-+ depends on VOLUMEID
-+ help
-+ TODO
-+
-+config FEATURE_VOLUMEID_LINUXSWAP
-+ bool "linux swap filesystem"
-+ default y
-+ depends on VOLUMEID
-+ help
-+ TODO
-+
-+### config FEATURE_VOLUMEID_LVM
-+### bool "lvm"
-+### default y
-+### depends on VOLUMEID
-+### help
-+### TODO
-+
-+config FEATURE_VOLUMEID_CRAMFS
-+ bool "cramfs filesystem"
-+ default y
-+ depends on VOLUMEID
-+ help
-+ TODO
-+
-+### config FEATURE_VOLUMEID_HPFS
-+### bool "hpfs filesystem"
-+### default y
-+### depends on VOLUMEID
-+### help
-+### TODO
-+
-+config FEATURE_VOLUMEID_ROMFS
-+ bool "romfs filesystem"
-+ default y
-+ depends on VOLUMEID
-+ help
-+ TODO
-+
-+config FEATURE_VOLUMEID_SYSV
-+ bool "sysv filesystem"
-+ default y
-+ depends on VOLUMEID
-+ help
-+ TODO
-+
-+### config FEATURE_VOLUMEID_MINIX
-+### bool "minix filesystem"
-+### default y
-+### depends on VOLUMEID
-+### help
-+### TODO
-+
-+### These only detect partition tables - not used (yet?)
-+### config FEATURE_VOLUMEID_MAC
-+### bool "mac filesystem"
-+### default y
-+### depends on VOLUMEID
-+### help
-+### TODO
-+###
-+### config FEATURE_VOLUMEID_MSDOS
-+### bool "msdos filesystem"
-+### default y
-+### depends on VOLUMEID
-+### help
-+### TODO
-+
-+config FEATURE_VOLUMEID_OCFS2
-+ bool "ocfs2 filesystem"
-+ default y
-+ depends on VOLUMEID
-+ help
-+ TODO
-+
-+### config FEATURE_VOLUMEID_HIGHPOINTRAID
-+### bool "highpoint raid"
-+### default y
-+### depends on VOLUMEID
-+### help
-+### TODO
-+
-+### config FEATURE_VOLUMEID_ISWRAID
-+### bool "intel raid"
-+### default y
-+### depends on VOLUMEID
-+### help
-+### TODO
-+
-+### config FEATURE_VOLUMEID_LSIRAID
-+### bool "lsi raid"
-+### default y
-+### depends on VOLUMEID
-+### help
-+### TODO
-+
-+### config FEATURE_VOLUMEID_VIARAID
-+### bool "via raid"
-+### default y
-+### depends on VOLUMEID
-+### help
-+### TODO
-+
-+### config FEATURE_VOLUMEID_SILICONRAID
-+### bool "silicon raid"
-+### default y
-+### depends on VOLUMEID
-+### help
-+### TODO
-+
-+### config FEATURE_VOLUMEID_NVIDIARAID
-+### bool "nvidia raid"
-+### default y
-+### depends on VOLUMEID
-+### help
-+### TODO
-+
-+### config FEATURE_VOLUMEID_PROMISERAID
-+### bool "promise raid"
-+### default y
-+### depends on VOLUMEID
-+### help
-+### TODO
-+
-+config FEATURE_VOLUMEID_LINUXRAID
-+ bool "linuxraid"
-+ default y
-+ depends on VOLUMEID
-+ help
-+ TODO
-+
-+endmenu
-+
- endmenu
diff --git a/package/busybox/busybox-1.17.0/busybox-1.17.0-wget.patch b/package/busybox/busybox-1.17.0/busybox-1.17.0-wget.patch
deleted file mode 100644
index d649f65eb..000000000
--- a/package/busybox/busybox-1.17.0/busybox-1.17.0-wget.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -urpN busybox-1.17.0/networking/wget.c busybox-1.17.0-wget/networking/wget.c
---- busybox-1.17.0/networking/wget.c 2010-06-24 04:40:43.000000000 +0200
-+++ busybox-1.17.0-wget/networking/wget.c 2010-07-12 03:27:57.000000000 +0200
-@@ -50,7 +50,7 @@ static void progress_meter(int flag)
- }
-
- bb_progress_update(&G.pmt, G.curfile, G.beg_range, G.transferred,
-- G.chunked ? 0 : G.content_len + G.beg_range);
-+ G.chunked ? 0 : G.beg_range + G.transferred + G.content_len);
-
- if (flag == 0) {
- /* last call to progress_meter */
diff --git a/package/busybox/busybox-1.17.1/busybox-1.17.1-shell.patch b/package/busybox/busybox-1.17.1/busybox-1.17.1-shell.patch
new file mode 100644
index 000000000..04adc8f1d
--- /dev/null
+++ b/package/busybox/busybox-1.17.1/busybox-1.17.1-shell.patch
@@ -0,0 +1,86 @@
+diff -urpN busybox-1.17.1/shell/ash.c busybox-1.17.1-shell/shell/ash.c
+--- busybox-1.17.1/shell/ash.c 2010-07-25 00:12:43.000000000 +0200
++++ busybox-1.17.1-shell/shell/ash.c 2010-07-25 13:09:32.000000000 +0200
+@@ -4515,6 +4515,7 @@ clear_traps(void)
+ INT_ON;
+ }
+ }
++ may_have_traps = 0;
+ }
+
+ /* Lives far away from here, needed for forkchild */
+diff -urpN busybox-1.17.1/shell/ash_test/ash-signals/signal7.right busybox-1.17.1-shell/shell/ash_test/ash-signals/signal7.right
+--- busybox-1.17.1/shell/ash_test/ash-signals/signal7.right 1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.17.1-shell/shell/ash_test/ash-signals/signal7.right 2010-07-25 13:09:32.000000000 +0200
+@@ -0,0 +1 @@
++Bug detected: 0
+diff -urpN busybox-1.17.1/shell/ash_test/ash-signals/signal7.tests busybox-1.17.1-shell/shell/ash_test/ash-signals/signal7.tests
+--- busybox-1.17.1/shell/ash_test/ash-signals/signal7.tests 1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.17.1-shell/shell/ash_test/ash-signals/signal7.tests 2010-07-25 13:09:32.000000000 +0200
+@@ -0,0 +1,18 @@
++bug() {
++ trap : exit
++ # Bug was causing sh to be run in subshell,
++ # as if this line is replaced with (sh -c ...; exit $?) &
++ # here:
++ sh -c 'echo REAL_CHILD=$$' &
++ echo PARENTS_IDEA_OF_CHILD=$!
++ wait # make sure bkgd shell completes
++}
++
++bug | {
++while read varval; do
++ eval $varval
++done
++test x"$REAL_CHILD" != x"" \
++&& test x"$REAL_CHILD" = x"$PARENTS_IDEA_OF_CHILD"
++echo "Bug detected: $?"
++}
+diff -urpN busybox-1.17.1/shell/hush.c busybox-1.17.1-shell/shell/hush.c
+--- busybox-1.17.1/shell/hush.c 2010-07-25 00:12:43.000000000 +0200
++++ busybox-1.17.1-shell/shell/hush.c 2010-07-25 13:09:32.000000000 +0200
+@@ -3901,8 +3901,6 @@ static void insert_bg_job(struct pipe *p
+
+ if (G_interactive_fd)
+ printf("[%d] %d %s\n", job->jobid, job->cmds[0].pid, job->cmdtext);
+- /* Last command's pid goes to $! */
+- G.last_bg_pid = job->cmds[job->num_cmds - 1].pid;
+ G.last_jobid = job->jobid;
+ }
+
+@@ -4825,6 +4823,8 @@ static int run_list(struct pipe *pi)
+ if (G.run_list_level == 1)
+ insert_bg_job(pi);
+ #endif
++ /* Last command's pid goes to $! */
++ G.last_bg_pid = pi->cmds[pi->num_cmds - 1].pid;
+ G.last_exitcode = rcode = EXIT_SUCCESS;
+ debug_printf_exec(": cmd&: exitcode EXIT_SUCCESS\n");
+ } else {
+diff -urpN busybox-1.17.1/shell/hush_test/hush-trap/signal7.right busybox-1.17.1-shell/shell/hush_test/hush-trap/signal7.right
+--- busybox-1.17.1/shell/hush_test/hush-trap/signal7.right 1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.17.1-shell/shell/hush_test/hush-trap/signal7.right 2010-07-25 13:09:32.000000000 +0200
+@@ -0,0 +1 @@
++Bug detected: 0
+diff -urpN busybox-1.17.1/shell/hush_test/hush-trap/signal7.tests busybox-1.17.1-shell/shell/hush_test/hush-trap/signal7.tests
+--- busybox-1.17.1/shell/hush_test/hush-trap/signal7.tests 1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.17.1-shell/shell/hush_test/hush-trap/signal7.tests 2010-07-25 13:09:32.000000000 +0200
+@@ -0,0 +1,18 @@
++bug() {
++ trap : exit
++ # Bug was causing sh to be run in subshell,
++ # as if this line is replaced with (sh -c ...; exit $?) &
++ # here:
++ sh -c 'echo REAL_CHILD=$$' &
++ echo PARENTS_IDEA_OF_CHILD=$!
++ wait # make sure bkgd shell completes
++}
++
++bug | {
++while read varval; do
++ eval $varval
++done
++test x"$REAL_CHILD" != x"" \
++&& test x"$REAL_CHILD" = x"$PARENTS_IDEA_OF_CHILD"
++echo "Bug detected: $?"
++}