summaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2010-02-24 10:39:25 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2010-02-26 14:08:45 +0000
commita0c1d630f4ce18c2bccf053f10f3c4b3e07436e2 (patch)
tree5154ed0875d16514f8f96b04db38af9501a06bc2 /main
parenteaa1f0c2f499d6b72839514bd473973da0cb7393 (diff)
downloadaports-a0c1d630f4ce18c2bccf053f10f3c4b3e07436e2.tar.bz2
aports-a0c1d630f4ce18c2bccf053f10f3c4b3e07436e2.tar.xz
main/busybox: apply patches from upstream
(cherry picked from commit 9f73184dbf63dc608a8a9790a94bb640bcb5a270)
Diffstat (limited to 'main')
-rw-r--r--main/busybox/0001-mount-move-resolve_mount_spec-to-volume_id.patch83
-rw-r--r--main/busybox/0002-add-config-knob-for-default-freq-and-length.patch79
-rw-r--r--main/busybox/0002-swaponoff-add-uuid-label-support.patch58
-rw-r--r--main/busybox/APKBUILD22
-rw-r--r--main/busybox/busybox-1.16.0-ash.patch35
-rw-r--r--main/busybox/busybox-1.16.0-compat.patch317
-rw-r--r--main/busybox/busybox-1.16.0-defconfig.patch438
-rw-r--r--main/busybox/busybox-1.16.0-defconfig.patch.1438
-rw-r--r--main/busybox/busybox-1.16.0-linux_swap.patch16
-rw-r--r--main/busybox/busybox-1.16.0-md5_sha_compat.patch16
-rw-r--r--main/busybox/busybox-1.16.0-syslogd.patch12
-rw-r--r--main/busybox/busybox-1.16.0-tftp.patch12
-rw-r--r--main/busybox/busybox-1.16.0-usage.patch1141
-rw-r--r--main/busybox/busybox-1.16.0-wget.patch20
-rw-r--r--main/busybox/wget-proxy-user.patch12
15 files changed, 2464 insertions, 235 deletions
diff --git a/main/busybox/0001-mount-move-resolve_mount_spec-to-volume_id.patch b/main/busybox/0001-mount-move-resolve_mount_spec-to-volume_id.patch
deleted file mode 100644
index 375da36b..00000000
--- a/main/busybox/0001-mount-move-resolve_mount_spec-to-volume_id.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From 455b23172de8f1fe8378c7c9470bf7041c242305 Mon Sep 17 00:00:00 2001
-From: Natanael Copa <natanael.copa@gmail.com>
-Date: Thu, 17 Sep 2009 09:33:59 +0000
-Subject: [PATCH 1/2] mount: move resolve_mount_spec() to volume_id/
-
-This is so it can be reused by other applets like swaponoff.
-
-Signed-off-by: Natanael Copa <natanael.copa@gmail.com>
----
- include/volume_id.h | 6 ++++++
- util-linux/mount.c | 17 -----------------
- util-linux/volume_id/get_devname.c | 16 ++++++++++++++++
- 3 files changed, 22 insertions(+), 17 deletions(-)
-
-diff --git a/include/volume_id.h b/include/volume_id.h
-index bba32c0..cef5e9a 100644
---- a/include/volume_id.h
-+++ b/include/volume_id.h
-@@ -21,3 +21,9 @@
- char *get_devname_from_label(const char *spec);
- char *get_devname_from_uuid(const char *spec);
- void display_uuid_cache(void);
-+
-+#if ENABLE_FEATURE_MOUNT_LABEL
-+void resolve_mount_spec(char **fsname);
-+#else
-+#define resolve_mount_spec(fsname) ((void)0)
-+#endif
-diff --git a/util-linux/mount.c b/util-linux/mount.c
-index 478dc24..0d12506 100644
---- a/util-linux/mount.c
-+++ b/util-linux/mount.c
-@@ -290,23 +290,6 @@ static int verbose_mount(const char *source, const char *target,
- #define verbose_mount(...) mount(__VA_ARGS__)
- #endif
-
--#if ENABLE_FEATURE_MOUNT_LABEL
--static void resolve_mount_spec(char **fsname)
--{
-- char *tmp = NULL;
--
-- if (!strncmp(*fsname, "UUID=", 5))
-- tmp = get_devname_from_uuid(*fsname + 5);
-- else if (!strncmp(*fsname, "LABEL=", 6))
-- tmp = get_devname_from_label(*fsname + 6);
--
-- if (tmp)
-- *fsname = tmp;
--}
--#else
--#define resolve_mount_spec(fsname) ((void)0)
--#endif
--
- // Append mount options to string
- static void append_mount_options(char **oldopts, const char *newopts)
- {
-diff --git a/util-linux/volume_id/get_devname.c b/util-linux/volume_id/get_devname.c
-index 0686a07..a613b85 100644
---- a/util-linux/volume_id/get_devname.c
-+++ b/util-linux/volume_id/get_devname.c
-@@ -260,3 +260,19 @@ char *get_devname_from_uuid(const char *spec)
- }
- return NULL;
- }
-+
-+#if ENABLE_FEATURE_MOUNT_LABEL
-+void resolve_mount_spec(char **fsname)
-+{
-+ char *tmp = NULL;
-+
-+ if (!strncmp(*fsname, "UUID=", 5))
-+ tmp = get_devname_from_uuid(*fsname + 5);
-+ else if (!strncmp(*fsname, "LABEL=", 6))
-+ tmp = get_devname_from_label(*fsname + 6);
-+
-+ if (tmp)
-+ *fsname = tmp;
-+}
-+#endif
-+
---
-1.6.4.2
-
diff --git a/main/busybox/0002-add-config-knob-for-default-freq-and-length.patch b/main/busybox/0002-add-config-knob-for-default-freq-and-length.patch
deleted file mode 100644
index 5055ae87..00000000
--- a/main/busybox/0002-add-config-knob-for-default-freq-and-length.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From b2e8817293648eac825ef64be4604af505b65d65 Mon Sep 17 00:00:00 2001
-From: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
-Date: Fri, 21 Aug 2009 14:40:29 +0200
-Subject: [PATCH 2/2] add config knob for default freq and length
-
-Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
----
- miscutils/Config.in | 16 ++++++++++++++++
- miscutils/beep.c | 12 ++++++++++--
- scripts/defconfig | 3 +++
- 3 files changed, 29 insertions(+), 2 deletions(-)
-
-diff --git a/miscutils/Config.in b/miscutils/Config.in
-index e56a3fc..f2104bb 100644
---- a/miscutils/Config.in
-+++ b/miscutils/Config.in
-@@ -25,6 +25,22 @@ config BEEP
- help
- The beep applets beeps in a given freq/Hz.
-
-+config FEATURE_BEEP_FREQ
-+ int "default frequency"
-+ range 0 2147483647
-+ default 4000
-+ depends on BEEP
-+ help
-+ Frequency for default beep.
-+
-+config FEATURE_BEEP_LENGTH
-+ int "default length"
-+ range 0 2147483647
-+ default 30
-+ depends on BEEP
-+ help
-+ Length in ms for default beep.
-+
- config CHAT
- bool "chat"
- default n
-diff --git a/miscutils/beep.c b/miscutils/beep.c
-index d5c3531..79e7547 100644
---- a/miscutils/beep.c
-+++ b/miscutils/beep.c
-@@ -19,8 +19,16 @@
- #define OPT_d (1<<2)
- #define OPT_r (1<<3)
- /* defaults */
--#define FREQ (4440)
--#define LENGTH (50)
-+#ifndef CONFIG_FEATURE_BEEP_FREQ
-+# define FREQ (4000)
-+#else
-+# define FREQ (CONFIG_FEATURE_BEEP_FREQ)
-+#endif
-+#ifndef CONFIG_FEATURE_BEEP_LENGTH
-+# define LENGTH (30)
-+#else
-+# define LENGTH (CONFIG_FEATURE_BEEP_LENGTH)
-+#endif
- #define DELAY (0)
- #define REPETITIONS (1)
-
-diff --git a/scripts/defconfig b/scripts/defconfig
-index f991363..d7cef7c 100644
---- a/scripts/defconfig
-+++ b/scripts/defconfig
-@@ -554,6 +554,9 @@ CONFIG_FEATURE_MOUNT_LOOP=y
- #
- CONFIG_ADJTIMEX=y
- # CONFIG_BBCONFIG is not set
-+CONFIG_BEEP=y
-+CONFIG_FEATURE_BEEP_FREQ=4000
-+CONFIG_FEATURE_BEEP_LENGTH=30
- CONFIG_CHAT=y
- CONFIG_FEATURE_CHAT_NOFAIL=y
- # CONFIG_FEATURE_CHAT_TTY_HIFI is not set
---
-1.6.4
-
diff --git a/main/busybox/0002-swaponoff-add-uuid-label-support.patch b/main/busybox/0002-swaponoff-add-uuid-label-support.patch
deleted file mode 100644
index 0abdab8e..00000000
--- a/main/busybox/0002-swaponoff-add-uuid-label-support.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 3e3d6337d442225cc951a2084191dc61afb34661 Mon Sep 17 00:00:00 2001
-From: Natanael Copa <natanael.copa@gmail.com>
-Date: Thu, 17 Sep 2009 11:19:20 +0000
-Subject: [PATCH 2/2] swaponoff: add uuid/label support
-
-This allows swapon -a enable swap when the swap partition is specified by
-either UUID=... or LABEL=... in /etc/fstab
-
-We could have made a separate config option for this but it makes sense
-to have it with MOUNT_LABEL as you will need that to parse the rest of
-fstab anyway.
-
-Signed-off-by: Natanael Copa <natanael.copa@gmail.com>
----
- util-linux/Config.in | 1 +
- util-linux/swaponoff.c | 7 +++++++
- 2 files changed, 8 insertions(+), 0 deletions(-)
-
-diff --git a/util-linux/Config.in b/util-linux/Config.in
-index 5f5adc0..49c57e1 100644
---- a/util-linux/Config.in
-+++ b/util-linux/Config.in
-@@ -689,6 +689,7 @@ config FEATURE_MOUNT_LABEL
- help
- This allows for specifying a device by label or uuid, rather than by
- name. This feature utilizes the same functionality as blkid/findfs.
-+ This also enables label or uuid support for swapon.
-
- config FEATURE_MOUNT_NFS
- bool "Support mounting NFS file systems"
-diff --git a/util-linux/swaponoff.c b/util-linux/swaponoff.c
-index 863f773..d69301f 100644
---- a/util-linux/swaponoff.c
-+++ b/util-linux/swaponoff.c
-@@ -11,6 +11,10 @@
- #include <mntent.h>
- #include <sys/swap.h>
-
-+#if ENABLE_FEATURE_MOUNT_LABEL
-+#include "volume_id.h"
-+#endif
-+
- #if ENABLE_FEATURE_SWAPON_PRI
- struct globals {
- int flags;
-@@ -26,6 +30,9 @@ static int swap_enable_disable(char *device)
- int status;
- struct stat st;
-
-+#if ENABLE_FEATURE_MOUNT_LABEL
-+ resolve_mount_spec(&device);
-+#endif
- xstat(device, &st);
-
- #if ENABLE_DESKTOP
---
-1.6.4.2
-
diff --git a/main/busybox/APKBUILD b/main/busybox/APKBUILD
index 54b4f67c..86bb6672 100644
--- a/main/busybox/APKBUILD
+++ b/main/busybox/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=busybox
pkgver=1.16.0
-pkgrel=1
+pkgrel=2
pkgdesc="Size optimized toolbox of many common UNIX utilities"
url=http://busybox.net
license="GPL-2"
@@ -10,7 +10,15 @@ install="$pkgname.post-install $pkgname.post-upgrade"
triggers="busybox.trigger:/bin /usr/bin /sbin /usr/sbin /lib/modules/*"
source="http://busybox.net/downloads/$pkgname-$pkgver.tar.bz2
$pkgname-1.11.1-bb.patch
- wget-proxy-user.patch
+ busybox-1.16.0-ash.patch
+ busybox-1.16.0-compat.patch
+ busybox-1.16.0-defconfig.patch
+ busybox-1.16.0-linux_swap.patch
+ busybox-1.16.0-md5_sha_compat.patch
+ busybox-1.16.0-syslogd.patch
+ busybox-1.16.0-tftp.patch
+ busybox-1.16.0-usage.patch
+ busybox-1.16.0-wget.patch
busyboxconfig"
_builddir="$srcdir"/$pkgname-$pkgver
@@ -53,5 +61,13 @@ package() {
md5sums="2130884e71a1648bfb63c3250c1d288c busybox-1.16.0.tar.bz2
4c0f3b486eaa0674961b7ddcd0c60a9b busybox-1.11.1-bb.patch
-8e1c898ec233f6759bca72367ee934fd wget-proxy-user.patch
+b788742e46a848c02913c9bd070025b7 busybox-1.16.0-ash.patch
+940aff0065f875b165dac59cc7006c6a busybox-1.16.0-compat.patch
+118e94315a262a23af66c0d3ad83235e busybox-1.16.0-defconfig.patch
+1a406fb181aab8d9667498ea64116d50 busybox-1.16.0-linux_swap.patch
+f4758daa8023f000228e9509cceb02d1 busybox-1.16.0-md5_sha_compat.patch
+86a27167971333a0ddad4f0e8bc0acc6 busybox-1.16.0-syslogd.patch
+e24dc9e56b5de4fff706cfbe5c75d9b2 busybox-1.16.0-tftp.patch
+289c8ee19cc43fe175bbd7933c6b5cdf busybox-1.16.0-usage.patch
+928ca5a26599cd1dbb80e08132140832 busybox-1.16.0-wget.patch
9743e7ecd48f37b0d420f64bef7fb2a8 busyboxconfig"
diff --git a/main/busybox/busybox-1.16.0-ash.patch b/main/busybox/busybox-1.16.0-ash.patch
new file mode 100644
index 00000000..490cf83d
--- /dev/null
+++ b/main/busybox/busybox-1.16.0-ash.patch
@@ -0,0 +1,35 @@
+diff -urpN busybox-1.16.0/shell/ash.c busybox-1.16.0-ash/shell/ash.c
+--- busybox-1.16.0/shell/ash.c 2010-01-25 01:59:38.000000000 +0100
++++ busybox-1.16.0-ash/shell/ash.c 2010-02-21 01:52:22.000000000 +0100
+@@ -4539,7 +4539,7 @@ forkchild(struct job *jp, union node *n,
+ if (mode == FORK_NOJOB /* is it `xxx` ? */
+ && n && n->type == NCMD /* is it single cmd? */
+ /* && n->ncmd.args->type == NARG - always true? */
+- && strcmp(n->ncmd.args->narg.text, "trap") == 0
++ && n->ncmd.args && strcmp(n->ncmd.args->narg.text, "trap") == 0
+ && n->ncmd.args->narg.next == NULL /* "trap" with no arguments */
+ /* && n->ncmd.args->narg.backquote == NULL - do we need to check this? */
+ ) {
+@@ -4627,7 +4627,7 @@ forkchild(struct job *jp, union node *n,
+ }
+ #if JOBS
+ if (n && n->type == NCMD
+- && strcmp(n->ncmd.args->narg.text, "jobs") == 0
++ && n->ncmd.args && strcmp(n->ncmd.args->narg.text, "jobs") == 0
+ ) {
+ TRACE(("Job hack\n"));
+ /* "jobs": we do not want to clear job list for it,
+diff -urpN busybox-1.16.0/shell/ash_test/ash-misc/nulltick1.right busybox-1.16.0-ash/shell/ash_test/ash-misc/nulltick1.right
+--- busybox-1.16.0/shell/ash_test/ash-misc/nulltick1.right 1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.16.0-ash/shell/ash_test/ash-misc/nulltick1.right 2010-02-21 01:52:22.000000000 +0100
+@@ -0,0 +1,3 @@
++Test 1
++Test 2
++Done
+diff -urpN busybox-1.16.0/shell/ash_test/ash-misc/nulltick1.tests busybox-1.16.0-ash/shell/ash_test/ash-misc/nulltick1.tests
+--- busybox-1.16.0/shell/ash_test/ash-misc/nulltick1.tests 1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.16.0-ash/shell/ash_test/ash-misc/nulltick1.tests 2010-02-21 01:52:22.000000000 +0100
+@@ -0,0 +1,3 @@
++echo Test ` ` 1
++echo Test `</dev/null` 2
++echo Done
diff --git a/main/busybox/busybox-1.16.0-compat.patch b/main/busybox/busybox-1.16.0-compat.patch
new file mode 100644
index 00000000..f8439882
--- /dev/null
+++ b/main/busybox/busybox-1.16.0-compat.patch
@@ -0,0 +1,317 @@
+diff -urpN busybox-1.16.0/coreutils/fsync.c busybox-1.16.0-compat/coreutils/fsync.c
+--- busybox-1.16.0/coreutils/fsync.c 2010-01-25 01:59:38.000000000 +0100
++++ busybox-1.16.0-compat/coreutils/fsync.c 2010-02-21 01:54:07.000000000 +0100
+@@ -7,6 +7,9 @@
+ * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
+ */
+ #include "libbb.h"
++#ifndef O_NOATIME
++# define O_NOATIME 0
++#endif
+
+ /* This is a NOFORK applet. Be very careful! */
+
+diff -urpN busybox-1.16.0/editors/diff.c busybox-1.16.0-compat/editors/diff.c
+--- busybox-1.16.0/editors/diff.c 2010-01-25 01:59:38.000000000 +0100
++++ busybox-1.16.0-compat/editors/diff.c 2010-02-21 01:54:07.000000000 +0100
+@@ -227,10 +227,12 @@ struct cand {
+
+ static int search(const int *c, int k, int y, const struct cand *list)
+ {
++ int i, j;
++
+ if (list[c[k]].y < y) /* quick look for typical case */
+ return k + 1;
+
+- for (int i = 0, j = k + 1;;) {
++ for (i = 0, j = k + 1;;) {
+ const int l = (i + j) >> 1;
+ if (l > i) {
+ const int t = list[c[l]].y;
+@@ -265,11 +267,13 @@ static void stone(const int *a, int n, c
+ int clistlen = 100;
+ int k = 0;
+ struct cand *clist = xzalloc(clistlen * sizeof(clist[0]));
++ struct cand cand;
++ struct cand *q;
+ int *klist = xzalloc((n + 2) * sizeof(klist[0]));
+ /*clist[0] = (struct cand){0}; - xzalloc did it */
+ /*klist[0] = 0; */
+
+- for (struct cand cand = {1}; cand.x <= n; cand.x++) {
++ for (cand.x = 1; cand.x <= n; cand.x++) {
+ int j = a[cand.x], oldl = 0;
+ unsigned numtries = 0;
+ if (j == 0)
+@@ -303,7 +307,7 @@ static void stone(const int *a, int n, c
+ } while ((cand.y = b[++j]) > 0 && numtries < bound);
+ }
+ /* Unravel */
+- for (struct cand *q = clist + klist[k]; q->y; q = clist + q->pred)
++ for (q = clist + klist[k]; q->y; q = clist + q->pred)
+ J[q->x + pref] = q->y + pref;
+ free(klist);
+ free(clist);
+@@ -348,10 +352,11 @@ static void equiv(struct line *a, int n,
+
+ static void unsort(const struct line *f, int l, int *b)
+ {
++ int i;
+ int *a = xmalloc((l + 1) * sizeof(a[0]));
+- for (int i = 1; i <= l; i++)
++ for (i = 1; i <= l; i++)
+ a[f[i].serial] = f[i].value;
+- for (int i = 1; i <= l; i++)
++ for (i = 1; i <= l; i++)
+ b[i] = a[i];
+ free(a);
+ }
+@@ -370,12 +375,13 @@ static int line_compar(const void *a, co
+
+ static void fetch(FILE_and_pos_t *ft, const off_t *ix, int a, int b, int ch)
+ {
+- for (int i = a; i <= b; i++) {
++ int i, j, col;
++ for (i = a; i <= b; i++) {
+ seek_ft(ft, ix[i - 1]);
+ putchar(ch);
+ if (option_mask32 & FLAG(T))
+ putchar('\t');
+- for (int j = 0, col = 0; j < ix[i] - ix[i - 1]; j++) {
++ for (j = 0, col = 0; j < ix[i] - ix[i - 1]; j++) {
+ int c = fgetc(ft->ft_fp);
+ if (c == EOF) {
+ printf("\n\\ No newline at end of file\n");
+@@ -410,19 +416,20 @@ static NOINLINE int *create_J(FILE_and_p
+ {
+ int *J, slen[2], *class, *member;
+ struct line *nfile[2], *sfile[2];
+- int pref = 0, suff = 0;
++ int pref = 0, suff = 0, i, j, delta;
+
+ /* Lines of both files are hashed, and in the process
+ * their offsets are stored in the array ix[fileno]
+ * where fileno == 0 points to the old file, and
+ * fileno == 1 points to the new one.
+ */
+- for (int i = 0; i < 2; i++) {
++ for (i = 0; i < 2; i++) {
+ unsigned hash;
+ token_t tok;
+ size_t sz = 100;
+ nfile[i] = xmalloc((sz + 3) * sizeof(nfile[i][0]));
+ /* ft gets here without the correct position, cant use seek_ft */
++ ft[i].ft_pos = 0;
+ fseeko(ft[i].ft_fp, 0, SEEK_SET);
+
+ nlen[i] = 0;
+@@ -460,11 +467,11 @@ start:
+ nlen[i]--;
+ /* Now we copy the line offsets into ix */
+ ix[i] = xmalloc((nlen[i] + 2) * sizeof(ix[i][0]));
+- for (int j = 0; j < nlen[i] + 1; j++)
++ for (j = 0; j < nlen[i] + 1; j++)
+ ix[i][j] = nfile[i][j].offset;
+ }
+
+- /* lenght of prefix and suffix is calculated */
++ /* length of prefix and suffix is calculated */
+ for (; pref < nlen[0] && pref < nlen[1] &&
+ nfile[0][pref + 1].value == nfile[1][pref + 1].value;
+ pref++);
+@@ -475,10 +482,10 @@ start:
+ * the result being sorted and stored in sfile[fileno],
+ * and their sizes are stored in slen[fileno]
+ */
+- for (int j = 0; j < 2; j++) {
++ for (j = 0; j < 2; j++) {
+ sfile[j] = nfile[j] + pref;
+ slen[j] = nlen[j] - pref - suff;
+- for (int i = 0; i <= slen[j]; i++)
++ for (i = 0; i <= slen[j]; i++)
+ sfile[j][i].serial = i;
+ qsort(sfile[j] + 1, slen[j], sizeof(*sfile[j]), line_compar);
+ }
+@@ -494,7 +501,7 @@ start:
+ free(nfile[1]);
+
+ class = xmalloc((slen[0] + 1) * sizeof(class[0]));
+- for (int i = 1; i <= slen[0]; i++) /* Unsorting */
++ for (i = 1; i <= slen[0]; i++) /* Unsorting */
+ class[sfile[0][i].serial] = sfile[0][i].value;
+ free(nfile[0]);
+ #else
+@@ -512,7 +519,7 @@ start:
+ * are initialized with 0 (no matches), so that function stone can
+ * then assign them their right values
+ */
+- for (int i = 0, delta = nlen[1] - nlen[0]; i <= nlen[0]; i++)
++ for (i = 0, delta = nlen[1] - nlen[0]; i <= nlen[0]; i++)
+ J[i] = i <= pref ? i :
+ i > (nlen[0] - suff) ? (i + delta) : 0;
+ /* Here the magic is performed */
+@@ -526,14 +533,14 @@ start:
+ * which, due to limitations intrinsic to any hashing algorithm,
+ * are different but ended up confounded as the same
+ */
+- for (int i = 1; i <= nlen[0]; i++) {
++ for (i = 1; i <= nlen[0]; i++) {
+ if (!J[i])
+ continue;
+
+ seek_ft(&ft[0], ix[0][i - 1]);
+ seek_ft(&ft[1], ix[1][J[i] - 1]);
+
+- for (int j = J[i]; i <= nlen[0] && J[i] == j; i++, j++) {
++ for (j = J[i]; i <= nlen[0] && J[i] == j; i++, j++) {
+ token_t tok0 = 0, tok1 = 0;
+ do {
+ tok0 = read_token(&ft[0], tok0);
+@@ -555,13 +562,18 @@ static bool diff(FILE* fp[2], char *file
+ {
+ int nlen[2];
+ off_t *ix[2];
+- FILE_and_pos_t ft[2] = { { fp[0] }, { fp[1] } };
+- int *J = create_J(ft, nlen, ix);
+-
+- bool anychange = false;
++ FILE_and_pos_t ft[2];
+ typedef struct { int a, b; } vec_t[2];
+ vec_t *vec = NULL;
+- int i = 1, idx = -1;
++ int i = 1, j, k, idx = -1;
++ bool anychange = false;
++ int *J;
++
++ ft[0].ft_fp = fp[0];
++ ft[1].ft_fp = fp[1];
++ /* note that ft[i].ft_pos is unintitalized, create_J()
++ * must not assume otherwise */
++ J = create_J(ft, nlen, ix);
+
+ do {
+ bool nonempty = false;
+@@ -596,8 +608,8 @@ static bool diff(FILE* fp[2], char *file
+ break;
+ }
+
+- for (int j = 0; j < 2; j++)
+- for (int k = v[j].a; k < v[j].b; k++)
++ for (j = 0; j < 2; j++)
++ for (k = v[j].a; k < v[j].b; k++)
+ nonempty |= (ix[j][k+1] - ix[j][k] != 1);
+
+ vec = xrealloc_vector(vec, 6, ++idx);
+@@ -612,6 +624,7 @@ static bool diff(FILE* fp[2], char *file
+ if (idx < 0 || ((option_mask32 & FLAG(B)) && !nonempty))
+ goto cont;
+ if (!(option_mask32 & FLAG(q))) {
++ int lowa;
+ vec_t span, *cvp = vec;
+
+ if (!anychange) {
+@@ -621,7 +634,7 @@ static bool diff(FILE* fp[2], char *file
+ }
+
+ printf("@@");
+- for (int j = 0; j < 2; j++) {
++ for (j = 0; j < 2; j++) {
+ int a = span[j].a = MAX(1, (*cvp)[j].a - opt_U_context);
+ int b = span[j].b = MIN(nlen[j], vec[idx][j].b + opt_U_context);
+
+@@ -635,12 +648,12 @@ static bool diff(FILE* fp[2], char *file
+ * Output changes in "unified" diff format--the old and new lines
+ * are printed together.
+ */
+- for (int lowa = span[0].a; ; lowa = (*cvp++)[0].b + 1) {
++ for (lowa = span[0].a; ; lowa = (*cvp++)[0].b + 1) {
+ bool end = cvp > &vec[idx];
+ fetch(&ft[0], ix[0], lowa, end ? span[0].b : (*cvp)[0].a - 1, ' ');
+ if (end)
+ break;
+- for (int j = 0; j < 2; j++)
++ for (j = 0; j < 2; j++)
+ fetch(&ft[j], ix[j], (*cvp)[j].a, (*cvp)[j].b, j ? '+' : '-');
+ }
+ }
+@@ -660,9 +673,9 @@ static int diffreg(char *file[2])
+ {
+ FILE *fp[2] = { stdin, stdin };
+ bool binary = false, differ = false;
+- int status = STATUS_SAME;
++ int status = STATUS_SAME, i;
+
+- for (int i = 0; i < 2; i++) {
++ for (i = 0; i < 2; i++) {
+ int fd = open_or_warn_stdin(file[i]);
+ if (fd == -1)
+ goto out;
+@@ -688,7 +701,7 @@ static int diffreg(char *file[2])
+ const size_t sz = COMMON_BUFSIZE / 2;
+ char *const buf0 = bb_common_bufsiz1;
+ char *const buf1 = buf0 + sz;
+- int i, j;
++ int j, k;
+ i = fread(buf0, 1, sz, fp[0]);
+ j = fread(buf1, 1, sz, fp[1]);
+ if (i != j) {
+@@ -697,7 +710,7 @@ static int diffreg(char *file[2])
+ }
+ if (i == 0)
+ break;
+- for (int k = 0; k < i; k++) {
++ for (k = 0; k < i; k++) {
+ if (!buf0[k] || !buf1[k])
+ binary = true;
+ if (buf0[k] != buf1[k])
+@@ -771,9 +784,10 @@ static int FAST_FUNC skip_dir(const char
+ static void diffdir(char *p[2], const char *s_start)
+ {
+ struct dlist list[2];
++ int i;
+
+ memset(&list, 0, sizeof(list));
+- for (int i = 0; i < 2; i++) {
++ for (i = 0; i < 2; i++) {
+ /*list[i].s = list[i].e = 0; - memset did it */
+ /*list[i].dl = NULL; */
+
+@@ -815,7 +829,7 @@ static void diffdir(char *p[2], const ch
+ else {
+ char *fullpath[2], *path[2]; /* if -N */
+
+- for (int i = 0; i < 2; i++) {
++ for (i = 0; i < 2; i++) {
+ if (pos == 0 || i == k) {
+ path[i] = fullpath[i] = concat_path_file(p[i], dp[i]);
+ stat(fullpath[i], &stb[i]);
+@@ -883,7 +897,7 @@ static const char diff_longopts[] ALIGN1
+ int diff_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+ int diff_main(int argc UNUSED_PARAM, char **argv)
+ {
+- int gotstdin = 0;
++ int gotstdin = 0, i;
+ char *file[2], *s_start = NULL;
+ llist_t *L_arg = NULL;
+
+@@ -900,7 +914,7 @@ int diff_main(int argc UNUSED_PARAM, cha
+ while (L_arg)
+ label[!!label[0]] = llist_pop(&L_arg);
+ xfunc_error_retval = 2;
+- for (int i = 0; i < 2; i++) {
++ for (i = 0; i < 2; i++) {
+ file[i] = argv[i];
+ /* Compat: "diff file name_which_doesnt_exist" exits with 2 */
+ if (LONE_DASH(file[i])) {
+diff -urpN busybox-1.16.0/miscutils/fbsplash.c busybox-1.16.0-compat/miscutils/fbsplash.c
+--- busybox-1.16.0/miscutils/fbsplash.c 2010-01-25 01:59:38.000000000 +0100
++++ busybox-1.16.0-compat/miscutils/fbsplash.c 2010-02-21 01:54:07.000000000 +0100
+@@ -301,7 +301,7 @@ static void fb_drawimage(void)
+ */
+ static void init(const char *cfg_filename)
+ {
+- static const char const param_names[] ALIGN1 =
++ static const char param_names[] ALIGN1 =
+ "BAR_WIDTH\0" "BAR_HEIGHT\0"
+ "BAR_LEFT\0" "BAR_TOP\0"
+ "BAR_R\0" "BAR_G\0" "BAR_B\0"
diff --git a/main/busybox/busybox-1.16.0-defconfig.patch b/main/busybox/busybox-1.16.0-defconfig.patch
new file mode 100644
index 00000000..c053526e
--- /dev/null
+++ b/main/busybox/busybox-1.16.0-defconfig.patch
@@ -0,0 +1,438 @@
+diff -urpN busybox-1.16.0/scripts/defconfig busybox-1.16.0-defconfig/scripts/defconfig
+--- busybox-1.16.0/scripts/defconfig 2010-01-25 01:59:38.000000000 +0100
++++ busybox-1.16.0-defconfig/scripts/defconfig 2010-02-21 01:53:15.000000000 +0100
+@@ -1,7 +1,7 @@
+ #
+ # Automatically generated make config: don't edit
+-# Busybox version: 1.15.0.svn
+-# Fri Aug 21 00:14:11 2009
++# Busybox version: 1.16.0
++# Wed Jan 27 20:00:00 2010
+ #
+ CONFIG_HAVE_DOT_CONFIG=y
+
+@@ -14,6 +14,8 @@ CONFIG_HAVE_DOT_CONFIG=y
+ #
+ # CONFIG_DESKTOP is not set
+ # CONFIG_EXTRA_COMPAT is not set
++CONFIG_INCLUDE_SUSv2=y
++# CONFIG_USE_PORTABLE_CODE is not set
+ CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
+ # CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+ # CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+@@ -22,7 +24,7 @@ CONFIG_FEATURE_VERBOSE_USAGE=y
+ CONFIG_FEATURE_COMPRESS_USAGE=y
+ CONFIG_FEATURE_INSTALLER=y
+ CONFIG_LOCALE_SUPPORT=y
+-# CONFIG_FEATURE_ASSUME_UNICODE is not set
++CONFIG_FEATURE_ASSUME_UNICODE=y
+ # CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set
+ CONFIG_LONG_OPTS=y
+ CONFIG_FEATURE_DEVPTS=y
+@@ -59,7 +61,6 @@ CONFIG_EXTRA_CFLAGS=""
+ CONFIG_NO_DEBUG_LIB=y
+ # CONFIG_DMALLOC is not set
+ # CONFIG_EFENCE is not set
+-CONFIG_INCLUDE_SUSv2=y
+
+ #
+ # Installation Options
+@@ -120,10 +121,11 @@ CONFIG_FEATURE_CPIO_P=y
+ # CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
+ CONFIG_GUNZIP=y
+ CONFIG_GZIP=y
++CONFIG_FEATURE_GZIP_LONG_OPTIONS=y
+ CONFIG_LZOP=y
+ # CONFIG_LZOP_COMPR_HIGH is not set
+-# CONFIG_RPM2CPIO is not set
+-# CONFIG_RPM is not set
++CONFIG_RPM2CPIO=y
++CONFIG_RPM=y
+ CONFIG_TAR=y
+ CONFIG_FEATURE_TAR_CREATE=y
+ CONFIG_FEATURE_TAR_AUTODETECT=y
+@@ -133,6 +135,7 @@ CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY=
+ CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+ CONFIG_FEATURE_TAR_LONG_OPTIONS=y
+ CONFIG_FEATURE_TAR_UNAME_GNAME=y
++CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y
+ CONFIG_UNCOMPRESS=y
+ CONFIG_UNLZMA=y
+ CONFIG_FEATURE_LZMA_FAST=y
+@@ -148,15 +151,19 @@ CONFIG_CATV=y
+ CONFIG_CHGRP=y
+ CONFIG_CHMOD=y
+ CONFIG_CHOWN=y
++CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y
+ CONFIG_CHROOT=y
+ CONFIG_CKSUM=y
+ CONFIG_COMM=y
+ CONFIG_CP=y
++CONFIG_FEATURE_CP_LONG_OPTIONS=y
+ CONFIG_CUT=y
+ CONFIG_DATE=y
+ CONFIG_FEATURE_DATE_ISOFMT=y
++CONFIG_FEATURE_DATE_COMPAT=y
+ CONFIG_DD=y
+ CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
++CONFIG_FEATURE_DD_THIRD_STATUS_LINE=y
+ CONFIG_FEATURE_DD_IBS_OBS=y
+ CONFIG_DF=y
+ CONFIG_FEATURE_DF_FANCY=y
+@@ -271,7 +278,7 @@ CONFIG_FEATURE_AUTOWIDTH=y
+ CONFIG_FEATURE_HUMAN_READABLE=y
+
+ #
+-# Common options for md5sum, sha1sum
++# Common options for md5sum, sha1sum, sha256sum, sha512sum
+ #
+ CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
+
+@@ -318,9 +325,8 @@ CONFIG_AWK=y
+ CONFIG_FEATURE_AWK_LIBM=y
+ CONFIG_CMP=y
+ CONFIG_DIFF=y
+-CONFIG_FEATURE_DIFF_BINARY=y
++CONFIG_FEATURE_DIFF_LONG_OPTIONS=y
+ CONFIG_FEATURE_DIFF_DIR=y
+-CONFIG_FEATURE_DIFF_MINIMAL=y
+ CONFIG_ED=y
+ CONFIG_PATCH=y
+ CONFIG_SED=y
+@@ -364,6 +370,7 @@ CONFIG_FEATURE_FIND_DELETE=y
+ CONFIG_FEATURE_FIND_PATH=y
+ CONFIG_FEATURE_FIND_REGEX=y
+ # CONFIG_FEATURE_FIND_CONTEXT is not set
++CONFIG_FEATURE_FIND_LINKS=y
+ CONFIG_GREP=y
+ CONFIG_FEATURE_GREP_EGREP_ALIAS=y
+ CONFIG_FEATURE_GREP_FGREP_ALIAS=y
+@@ -453,6 +460,7 @@ CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALRE
+ # Options common to multiple modutils
+ #
+ # CONFIG_FEATURE_2_4_MODULES is not set
++# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set
+ # CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
+ # CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
+ # CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
+@@ -467,8 +475,8 @@ CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
+ #
+ # Linux System Utilities
+ #
+-# CONFIG_ACPID is not set
+-# CONFIG_FEATURE_ACPID_COMPAT is not set
++CONFIG_ACPID=y
++CONFIG_FEATURE_ACPID_COMPAT=y
+ CONFIG_BLKID=y
+ CONFIG_DMESG=y
+ CONFIG_FEATURE_DMESG_PRETTY=y
+@@ -488,12 +496,14 @@ CONFIG_FEATURE_FDISK_ADVANCED=y
+ CONFIG_FINDFS=y
+ CONFIG_FREERAMDISK=y
+ CONFIG_FSCK_MINIX=y
++CONFIG_MKFS_EXT2=y
+ CONFIG_MKFS_MINIX=y
+
+ #
+ # Minix filesystem support
+ #
+ CONFIG_FEATURE_MINIX2=y
++# CONFIG_MKFS_REISER is not set
+ CONFIG_MKFS_VFAT=y
+ CONFIG_GETOPT=y
+ CONFIG_FEATURE_GETOPT_LONG=y
+@@ -506,6 +516,8 @@ CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
+ CONFIG_IPCRM=y
+ CONFIG_IPCS=y
+ CONFIG_LOSETUP=y
++CONFIG_LSPCI=y
++CONFIG_LSUSB=y
+ CONFIG_MDEV=y
+ CONFIG_FEATURE_MDEV_CONF=y
+ CONFIG_FEATURE_MDEV_RENAME=y
+@@ -518,6 +530,7 @@ CONFIG_MORE=y
+ CONFIG_FEATURE_USE_TERMIOS=y
+ CONFIG_VOLUMEID=y
+ CONFIG_FEATURE_VOLUMEID_EXT=y
++CONFIG_FEATURE_VOLUMEID_BTRFS=y
+ CONFIG_FEATURE_VOLUMEID_REISERFS=y
+ CONFIG_FEATURE_VOLUMEID_FAT=y
+ CONFIG_FEATURE_VOLUMEID_HFS=y
+@@ -595,11 +608,12 @@ CONFIG_DEVMEM=y
+ CONFIG_EJECT=y
+ CONFIG_FEATURE_EJECT_SCSI=y
+ CONFIG_FBSPLASH=y
+-# CONFIG_FLASH_LOCK is not set
+-# CONFIG_FLASH_UNLOCK is not set
+-# CONFIG_FLASH_ERASEALL is not set
++CONFIG_FLASHCP=y
++CONFIG_FLASH_LOCK=y
++CONFIG_FLASH_UNLOCK=y
++CONFIG_FLASH_ERASEALL=y
+ CONFIG_IONICE=y
+-# CONFIG_INOTIFYD is not set
++CONFIG_INOTIFYD=y
+ CONFIG_LAST=y
+ # CONFIG_FEATURE_LAST_SMALL is not set
+ CONFIG_FEATURE_LAST_FANCY=y
+@@ -632,8 +646,8 @@ CONFIG_RUNLEVEL=y
+ CONFIG_RX=y
+ CONFIG_SETSID=y
+ CONFIG_STRINGS=y
+-# CONFIG_TASKSET is not set
+-# CONFIG_FEATURE_TASKSET_FANCY is not set
++CONFIG_TASKSET=y
++CONFIG_FEATURE_TASKSET_FANCY=y
+ CONFIG_TIME=y
+ CONFIG_TIMEOUT=y
+ CONFIG_TTYSIZE=y
+@@ -658,6 +672,7 @@ CONFIG_ETHER_WAKE=y
+ CONFIG_FAKEIDENTD=y
+ CONFIG_FTPD=y
+ CONFIG_FEATURE_FTP_WRITE=y
++CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST=y
+ CONFIG_FTPGET=y
+ CONFIG_FTPPUT=y
+ CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
+@@ -723,6 +738,8 @@ CONFIG_NETSTAT=y
+ CONFIG_FEATURE_NETSTAT_WIDE=y
+ CONFIG_FEATURE_NETSTAT_PRG=y
+ CONFIG_NSLOOKUP=y
++CONFIG_NTPD=y
++CONFIG_FEATURE_NTPD_SERVER=y
+ CONFIG_PING=y
+ CONFIG_PING6=y
+ CONFIG_FEATURE_FANCY_PING=y
+@@ -734,13 +751,16 @@ CONFIG_FEATURE_TELNET_TTYPE=y
+ CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+ CONFIG_TELNETD=y
+ CONFIG_FEATURE_TELNETD_STANDALONE=y
++CONFIG_FEATURE_TELNETD_INETD_WAIT=y
+ CONFIG_TFTP=y
+ CONFIG_TFTPD=y
+ CONFIG_FEATURE_TFTP_GET=y
+ CONFIG_FEATURE_TFTP_PUT=y
+ CONFIG_FEATURE_TFTP_BLOCKSIZE=y
++CONFIG_FEATURE_TFTP_PROGRESS_BAR=y
+ # CONFIG_TFTP_DEBUG is not set
+ CONFIG_TRACEROUTE=y
++CONFIG_TRACEROUTE6=y
+ CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
+ # CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
+ # CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+@@ -814,6 +834,7 @@ CONFIG_FEATURE_TOP_SMP_CPU=y
+ CONFIG_FEATURE_TOP_DECIMALS=y
+ CONFIG_FEATURE_TOP_SMP_PROCESS=y
+ CONFIG_FEATURE_TOPMEM=y
++CONFIG_FEATURE_SHOW_THREADS=y
+ CONFIG_UPTIME=y
+ CONFIG_WATCH=y
+
+@@ -878,6 +899,7 @@ CONFIG_HUSH_CASE=y
+ CONFIG_HUSH_FUNCTIONS=y
+ CONFIG_HUSH_LOCAL=y
+ CONFIG_HUSH_EXPORT_N=y
++CONFIG_HUSH_RANDOM_SUPPORT=y
+ # CONFIG_LASH is not set
+ CONFIG_MSH=y
+ CONFIG_SH_MATH_SUPPORT=y
+diff -urpN busybox-1.16.0/TODO_config_nommu busybox-1.16.0-defconfig/TODO_config_nommu
+--- busybox-1.16.0/TODO_config_nommu 2010-01-25 01:59:38.000000000 +0100
++++ busybox-1.16.0-defconfig/TODO_config_nommu 2010-02-21 01:53:15.000000000 +0100
+@@ -1,7 +1,7 @@
+ #
+ # Automatically generated make config: don't edit
+-# Busybox version: 1.15.0.svn
+-# Fri Aug 21 00:13:18 2009
++# Busybox version: 1.16.0
++# Wed Jan 27 21:01:26 2010
+ #
+ CONFIG_HAVE_DOT_CONFIG=y
+
+@@ -14,6 +14,8 @@ CONFIG_HAVE_DOT_CONFIG=y
+ #
+ CONFIG_DESKTOP=y
+ CONFIG_EXTRA_COMPAT=y
++CONFIG_INCLUDE_SUSv2=y
++# CONFIG_USE_PORTABLE_CODE is not set
+ CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
+ # CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+ # CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+@@ -59,7 +61,6 @@ CONFIG_EXTRA_CFLAGS=""
+ CONFIG_NO_DEBUG_LIB=y
+ # CONFIG_DMALLOC is not set
+ # CONFIG_EFENCE is not set
+-CONFIG_INCLUDE_SUSv2=y
+
+ #
+ # Installation Options
+@@ -120,6 +121,7 @@ CONFIG_DPKG_DEB=y
+ CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY=y
+ CONFIG_GUNZIP=y
+ CONFIG_GZIP=y
++CONFIG_FEATURE_GZIP_LONG_OPTIONS=y
+ CONFIG_LZOP=y
+ CONFIG_LZOP_COMPR_HIGH=y
+ CONFIG_RPM2CPIO=y
+@@ -133,6 +135,7 @@ CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY=
+ CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+ CONFIG_FEATURE_TAR_LONG_OPTIONS=y
+ CONFIG_FEATURE_TAR_UNAME_GNAME=y
++CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y
+ CONFIG_UNCOMPRESS=y
+ CONFIG_UNLZMA=y
+ CONFIG_FEATURE_LZMA_FAST=y
+@@ -148,15 +151,19 @@ CONFIG_CATV=y
+ CONFIG_CHGRP=y
+ CONFIG_CHMOD=y
+ CONFIG_CHOWN=y
++CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y
+ CONFIG_CHROOT=y
+ CONFIG_CKSUM=y
+ CONFIG_COMM=y
+ CONFIG_CP=y
++CONFIG_FEATURE_CP_LONG_OPTIONS=y
+ CONFIG_CUT=y
+ CONFIG_DATE=y
+ CONFIG_FEATURE_DATE_ISOFMT=y
++CONFIG_FEATURE_DATE_COMPAT=y
+ CONFIG_DD=y
+ CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
++CONFIG_FEATURE_DD_THIRD_STATUS_LINE=y
+ CONFIG_FEATURE_DD_IBS_OBS=y
+ CONFIG_DF=y
+ CONFIG_FEATURE_DF_FANCY=y
+@@ -271,7 +278,7 @@ CONFIG_FEATURE_AUTOWIDTH=y
+ CONFIG_FEATURE_HUMAN_READABLE=y
+
+ #
+-# Common options for md5sum, sha1sum
++# Common options for md5sum, sha1sum, sha256sum, sha512sum
+ #
+ CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
+
+@@ -318,9 +325,8 @@ CONFIG_AWK=y
+ CONFIG_FEATURE_AWK_LIBM=y
+ CONFIG_CMP=y
+ CONFIG_DIFF=y
+-CONFIG_FEATURE_DIFF_BINARY=y
++CONFIG_FEATURE_DIFF_LONG_OPTIONS=y
+ CONFIG_FEATURE_DIFF_DIR=y
+-CONFIG_FEATURE_DIFF_MINIMAL=y
+ CONFIG_ED=y
+ CONFIG_PATCH=y
+ CONFIG_SED=y
+@@ -364,6 +370,7 @@ CONFIG_FEATURE_FIND_DELETE=y
+ CONFIG_FEATURE_FIND_PATH=y
+ CONFIG_FEATURE_FIND_REGEX=y
+ CONFIG_FEATURE_FIND_CONTEXT=y
++CONFIG_FEATURE_FIND_LINKS=y
+ CONFIG_GREP=y
+ CONFIG_FEATURE_GREP_EGREP_ALIAS=y
+ CONFIG_FEATURE_GREP_FGREP_ALIAS=y
+@@ -453,6 +460,7 @@ CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALRE
+ # Options common to multiple modutils
+ #
+ # CONFIG_FEATURE_2_4_MODULES is not set
++CONFIG_FEATURE_INSMOD_TRY_MMAP=y
+ # CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
+ # CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
+ # CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
+@@ -488,12 +496,14 @@ CONFIG_FEATURE_FDISK_ADVANCED=y
+ CONFIG_FINDFS=y
+ CONFIG_FREERAMDISK=y
+ CONFIG_FSCK_MINIX=y
++CONFIG_MKFS_EXT2=y
+ CONFIG_MKFS_MINIX=y
+
+ #
+ # Minix filesystem support
+ #
+ CONFIG_FEATURE_MINIX2=y
++CONFIG_MKFS_REISER=y
+ CONFIG_MKFS_VFAT=y
+ CONFIG_GETOPT=y
+ CONFIG_FEATURE_GETOPT_LONG=y
+@@ -506,6 +516,8 @@ CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
+ CONFIG_IPCRM=y
+ CONFIG_IPCS=y
+ CONFIG_LOSETUP=y
++CONFIG_LSPCI=y
++CONFIG_LSUSB=y
+ CONFIG_MDEV=y
+ CONFIG_FEATURE_MDEV_CONF=y
+ CONFIG_FEATURE_MDEV_RENAME=y
+@@ -518,6 +530,7 @@ CONFIG_MORE=y
+ CONFIG_FEATURE_USE_TERMIOS=y
+ CONFIG_VOLUMEID=y
+ CONFIG_FEATURE_VOLUMEID_EXT=y
++CONFIG_FEATURE_VOLUMEID_BTRFS=y
+ CONFIG_FEATURE_VOLUMEID_REISERFS=y
+ CONFIG_FEATURE_VOLUMEID_FAT=y
+ CONFIG_FEATURE_VOLUMEID_HFS=y
+@@ -595,6 +608,7 @@ CONFIG_DEVMEM=y
+ CONFIG_EJECT=y
+ CONFIG_FEATURE_EJECT_SCSI=y
+ CONFIG_FBSPLASH=y
++CONFIG_FLASHCP=y
+ # CONFIG_FLASH_LOCK is not set
+ # CONFIG_FLASH_UNLOCK is not set
+ # CONFIG_FLASH_ERASEALL is not set
+@@ -638,6 +652,7 @@ CONFIG_TIME=y
+ CONFIG_TIMEOUT=y
+ CONFIG_TTYSIZE=y
+ CONFIG_VOLNAME=y
++CONFIG_WALL=y
+ CONFIG_WATCHDOG=y
+
+ #
+@@ -657,6 +672,7 @@ CONFIG_ETHER_WAKE=y
+ CONFIG_FAKEIDENTD=y
+ CONFIG_FTPD=y
+ CONFIG_FEATURE_FTP_WRITE=y
++CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST=y
+ CONFIG_FTPGET=y
+ CONFIG_FTPPUT=y
+ CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
+@@ -722,6 +738,8 @@ CONFIG_NETSTAT=y
+ CONFIG_FEATURE_NETSTAT_WIDE=y
+ CONFIG_FEATURE_NETSTAT_PRG=y
+ CONFIG_NSLOOKUP=y
++CONFIG_NTPD=y
++CONFIG_FEATURE_NTPD_SERVER=y
+ CONFIG_PING=y
+ CONFIG_PING6=y
+ CONFIG_FEATURE_FANCY_PING=y
+@@ -733,13 +751,16 @@ CONFIG_FEATURE_TELNET_TTYPE=y
+ CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+ CONFIG_TELNETD=y
+ CONFIG_FEATURE_TELNETD_STANDALONE=y
++CONFIG_FEATURE_TELNETD_INETD_WAIT=y
+ CONFIG_TFTP=y
+ CONFIG_TFTPD=y
+ CONFIG_FEATURE_TFTP_GET=y
+ CONFIG_FEATURE_TFTP_PUT=y
+ CONFIG_FEATURE_TFTP_BLOCKSIZE=y
++CONFIG_FEATURE_TFTP_PROGRESS_BAR=y
+ CONFIG_TFTP_DEBUG=y
+ CONFIG_TRACEROUTE=y
++CONFIG_TRACEROUTE6=y
+ CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
+ CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE=y
+ CONFIG_FEATURE_TRACEROUTE_USE_ICMP=y
+@@ -813,6 +834,7 @@ CONFIG_FEATURE_TOP_SMP_CPU=y
+ CONFIG_FEATURE_TOP_DECIMALS=y
+ CONFIG_FEATURE_TOP_SMP_PROCESS=y
+ CONFIG_FEATURE_TOPMEM=y
++CONFIG_FEATURE_SHOW_THREADS=y
+ CONFIG_UPTIME=y
+ CONFIG_WATCH=y
+
+@@ -881,6 +903,7 @@ CONFIG_HUSH_CASE=y
+ CONFIG_HUSH_FUNCTIONS=y
+ CONFIG_HUSH_LOCAL=y
+ CONFIG_HUSH_EXPORT_N=y
++CONFIG_HUSH_RANDOM_SUPPORT=y
+ CONFIG_LASH=y
+ CONFIG_MSH=y
+ CONFIG_SH_MATH_SUPPORT=y
diff --git a/main/busybox/busybox-1.16.0-defconfig.patch.1 b/main/busybox/busybox-1.16.0-defconfig.patch.1
new file mode 100644
index 00000000..c053526e
--- /dev/null
+++ b/main/busybox/busybox-1.16.0-defconfig.patch.1
@@ -0,0 +1,438 @@
+diff -urpN busybox-1.16.0/scripts/defconfig busybox-1.16.0-defconfig/scripts/defconfig
+--- busybox-1.16.0/scripts/defconfig 2010-01-25 01:59:38.000000000 +0100
++++ busybox-1.16.0-defconfig/scripts/defconfig 2010-02-21 01:53:15.000000000 +0100
+@@ -1,7 +1,7 @@
+ #
+ # Automatically generated make config: don't edit
+-# Busybox version: 1.15.0.svn
+-# Fri Aug 21 00:14:11 2009
++# Busybox version: 1.16.0
++# Wed Jan 27 20:00:00 2010
+ #
+ CONFIG_HAVE_DOT_CONFIG=y
+
+@@ -14,6 +14,8 @@ CONFIG_HAVE_DOT_CONFIG=y
+ #
+ # CONFIG_DESKTOP is not set
+ # CONFIG_EXTRA_COMPAT is not set
++CONFIG_INCLUDE_SUSv2=y
++# CONFIG_USE_PORTABLE_CODE is not set
+ CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
+ # CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+ # CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+@@ -22,7 +24,7 @@ CONFIG_FEATURE_VERBOSE_USAGE=y
+ CONFIG_FEATURE_COMPRESS_USAGE=y
+ CONFIG_FEATURE_INSTALLER=y
+ CONFIG_LOCALE_SUPPORT=y
+-# CONFIG_FEATURE_ASSUME_UNICODE is not set
++CONFIG_FEATURE_ASSUME_UNICODE=y
+ # CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set
+ CONFIG_LONG_OPTS=y
+ CONFIG_FEATURE_DEVPTS=y
+@@ -59,7 +61,6 @@ CONFIG_EXTRA_CFLAGS=""
+ CONFIG_NO_DEBUG_LIB=y
+ # CONFIG_DMALLOC is not set
+ # CONFIG_EFENCE is not set
+-CONFIG_INCLUDE_SUSv2=y
+
+ #
+ # Installation Options
+@@ -120,10 +121,11 @@ CONFIG_FEATURE_CPIO_P=y
+ # CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
+ CONFIG_GUNZIP=y
+ CONFIG_GZIP=y
++CONFIG_FEATURE_GZIP_LONG_OPTIONS=y
+ CONFIG_LZOP=y
+ # CONFIG_LZOP_COMPR_HIGH is not set
+-# CONFIG_RPM2CPIO is not set
+-# CONFIG_RPM is not set
++CONFIG_RPM2CPIO=y
++CONFIG_RPM=y
+ CONFIG_TAR=y
+ CONFIG_FEATURE_TAR_CREATE=y
+ CONFIG_FEATURE_TAR_AUTODETECT=y
+@@ -133,6 +135,7 @@ CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY=
+ CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+ CONFIG_FEATURE_TAR_LONG_OPTIONS=y
+ CONFIG_FEATURE_TAR_UNAME_GNAME=y
++CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y
+ CONFIG_UNCOMPRESS=y
+ CONFIG_UNLZMA=y
+ CONFIG_FEATURE_LZMA_FAST=y
+@@ -148,15 +151,19 @@ CONFIG_CATV=y
+ CONFIG_CHGRP=y
+ CONFIG_CHMOD=y
+ CONFIG_CHOWN=y
++CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y
+ CONFIG_CHROOT=y
+ CONFIG_CKSUM=y
+ CONFIG_COMM=y
+ CONFIG_CP=y
++CONFIG_FEATURE_CP_LONG_OPTIONS=y
+ CONFIG_CUT=y
+ CONFIG_DATE=y
+ CONFIG_FEATURE_DATE_ISOFMT=y
++CONFIG_FEATURE_DATE_COMPAT=y
+ CONFIG_DD=y
+ CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
++CONFIG_FEATURE_DD_THIRD_STATUS_LINE=y
+ CONFIG_FEATURE_DD_IBS_OBS=y
+ CONFIG_DF=y
+ CONFIG_FEATURE_DF_FANCY=y
+@@ -271,7 +278,7 @@ CONFIG_FEATURE_AUTOWIDTH=y
+ CONFIG_FEATURE_HUMAN_READABLE=y
+
+ #
+-# Common options for md5sum, sha1sum
++# Common options for md5sum, sha1sum, sha256sum, sha512sum
+ #
+ CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
+
+@@ -318,9 +325,8 @@ CONFIG_AWK=y
+ CONFIG_FEATURE_AWK_LIBM=y
+ CONFIG_CMP=y
+ CONFIG_DIFF=y
+-CONFIG_FEATURE_DIFF_BINARY=y
++CONFIG_FEATURE_DIFF_LONG_OPTIONS=y
+ CONFIG_FEATURE_DIFF_DIR=y
+-CONFIG_FEATURE_DIFF_MINIMAL=y
+ CONFIG_ED=y
+ CONFIG_PATCH=y
+ CONFIG_SED=y
+@@ -364,6 +370,7 @@ CONFIG_FEATURE_FIND_DELETE=y
+ CONFIG_FEATURE_FIND_PATH=y
+ CONFIG_FEATURE_FIND_REGEX=y
+ # CONFIG_FEATURE_FIND_CONTEXT is not set
++CONFIG_FEATURE_FIND_LINKS=y
+ CONFIG_GREP=y
+ CONFIG_FEATURE_GREP_EGREP_ALIAS=y
+ CONFIG_FEATURE_GREP_FGREP_ALIAS=y
+@@ -453,6 +460,7 @@ CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALRE
+ # Options common to multiple modutils
+ #
+ # CONFIG_FEATURE_2_4_MODULES is not set
++# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set
+ # CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
+ # CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
+ # CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
+@@ -467,8 +475,8 @@ CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
+ #
+ # Linux System Utilities
+ #
+-# CONFIG_ACPID is not set
+-# CONFIG_FEATURE_ACPID_COMPAT is not set
++CONFIG_ACPID=y
++CONFIG_FEATURE_ACPID_COMPAT=y
+ CONFIG_BLKID=y
+ CONFIG_DMESG=y
+ CONFIG_FEATURE_DMESG_PRETTY=y
+@@ -488,12 +496,14 @@ CONFIG_FEATURE_FDISK_ADVANCED=y
+ CONFIG_FINDFS=y
+ CONFIG_FREERAMDISK=y
+ CONFIG_FSCK_MINIX=y
++CONFIG_MKFS_EXT2=y
+ CONFIG_MKFS_MINIX=y
+
+ #
+ # Minix filesystem support
+ #
+ CONFIG_FEATURE_MINIX2=y
++# CONFIG_MKFS_REISER is not set
+ CONFIG_MKFS_VFAT=y
+ CONFIG_GETOPT=y
+ CONFIG_FEATURE_GETOPT_LONG=y
+@@ -506,6 +516,8 @@ CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
+ CONFIG_IPCRM=y
+ CONFIG_IPCS=y
+ CONFIG_LOSETUP=y
++CONFIG_LSPCI=y
++CONFIG_LSUSB=y
+ CONFIG_MDEV=y
+ CONFIG_FEATURE_MDEV_CONF=y
+ CONFIG_FEATURE_MDEV_RENAME=y
+@@ -518,6 +530,7 @@ CONFIG_MORE=y
+ CONFIG_FEATURE_USE_TERMIOS=y
+ CONFIG_VOLUMEID=y
+ CONFIG_FEATURE_VOLUMEID_EXT=y
++CONFIG_FEATURE_VOLUMEID_BTRFS=y
+ CONFIG_FEATURE_VOLUMEID_REISERFS=y
+ CONFIG_FEATURE_VOLUMEID_FAT=y
+ CONFIG_FEATURE_VOLUMEID_HFS=y
+@@ -595,11 +608,12 @@ CONFIG_DEVMEM=y
+ CONFIG_EJECT=y
+ CONFIG_FEATURE_EJECT_SCSI=y
+ CONFIG_FBSPLASH=y
+-# CONFIG_FLASH_LOCK is not set
+-# CONFIG_FLASH_UNLOCK is not set
+-# CONFIG_FLASH_ERASEALL is not set
++CONFIG_FLASHCP=y
++CONFIG_FLASH_LOCK=y
++CONFIG_FLASH_UNLOCK=y
++CONFIG_FLASH_ERASEALL=y
+ CONFIG_IONICE=y
+-# CONFIG_INOTIFYD is not set
++CONFIG_INOTIFYD=y
+ CONFIG_LAST=y
+ # CONFIG_FEATURE_LAST_SMALL is not set
+ CONFIG_FEATURE_LAST_FANCY=y
+@@ -632,8 +646,8 @@ CONFIG_RUNLEVEL=y
+ CONFIG_RX=y
+ CONFIG_SETSID=y
+ CONFIG_STRINGS=y
+-# CONFIG_TASKSET is not set
+-# CONFIG_FEATURE_TASKSET_FANCY is not set
++CONFIG_TASKSET=y
++CONFIG_FEATURE_TASKSET_FANCY=y
+ CONFIG_TIME=y
+ CONFIG_TIMEOUT=y
+ CONFIG_TTYSIZE=y
+@@ -658,6 +672,7 @@ CONFIG_ETHER_WAKE=y
+ CONFIG_FAKEIDENTD=y
+ CONFIG_FTPD=y
+ CONFIG_FEATURE_FTP_WRITE=y
++CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST=y
+ CONFIG_FTPGET=y
+ CONFIG_FTPPUT=y
+ CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
+@@ -723,6 +738,8 @@ CONFIG_NETSTAT=y
+ CONFIG_FEATURE_NETSTAT_WIDE=y
+ CONFIG_FEATURE_NETSTAT_PRG=y
+ CONFIG_NSLOOKUP=y
++CONFIG_NTPD=y
++CONFIG_FEATURE_NTPD_SERVER=y
+ CONFIG_PING=y
+ CONFIG_PING6=y
+ CONFIG_FEATURE_FANCY_PING=y
+@@ -734,13 +751,16 @@ CONFIG_FEATURE_TELNET_TTYPE=y
+ CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+ CONFIG_TELNETD=y
+ CONFIG_FEATURE_TELNETD_STANDALONE=y
++CONFIG_FEATURE_TELNETD_INETD_WAIT=y
+ CONFIG_TFTP=y
+ CONFIG_TFTPD=y
+ CONFIG_FEATURE_TFTP_GET=y
+ CONFIG_FEATURE_TFTP_PUT=y
+ CONFIG_FEATURE_TFTP_BLOCKSIZE=y
++CONFIG_FEATURE_TFTP_PROGRESS_BAR=y
+ # CONFIG_TFTP_DEBUG is not set
+ CONFIG_TRACEROUTE=y
++CONFIG_TRACEROUTE6=y
+ CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
+ # CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
+ # CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+@@ -814,6 +834,7 @@ CONFIG_FEATURE_TOP_SMP_CPU=y
+ CONFIG_FEATURE_TOP_DECIMALS=y
+ CONFIG_FEATURE_TOP_SMP_PROCESS=y
+ CONFIG_FEATURE_TOPMEM=y
++CONFIG_FEATURE_SHOW_THREADS=y
+ CONFIG_UPTIME=y
+ CONFIG_WATCH=y
+
+@@ -878,6 +899,7 @@ CONFIG_HUSH_CASE=y
+ CONFIG_HUSH_FUNCTIONS=y
+ CONFIG_HUSH_LOCAL=y
+ CONFIG_HUSH_EXPORT_N=y
++CONFIG_HUSH_RANDOM_SUPPORT=y
+ # CONFIG_LASH is not set
+ CONFIG_MSH=y
+ CONFIG_SH_MATH_SUPPORT=y
+diff -urpN busybox-1.16.0/TODO_config_nommu busybox-1.16.0-defconfig/TODO_config_nommu
+--- busybox-1.16.0/TODO_config_nommu 2010-01-25 01:59:38.000000000 +0100
++++ busybox-1.16.0-defconfig/TODO_config_nommu 2010-02-21 01:53:15.000000000 +0100
+@@ -1,7 +1,7 @@
+ #
+ # Automatically generated make config: don't edit
+-# Busybox version: 1.15.0.svn
+-# Fri Aug 21 00:13:18 2009
++# Busybox version: 1.16.0
++# Wed Jan 27 21:01:26 2010
+ #
+ CONFIG_HAVE_DOT_CONFIG=y
+
+@@ -14,6 +14,8 @@ CONFIG_HAVE_DOT_CONFIG=y
+ #
+ CONFIG_DESKTOP=y
+ CONFIG_EXTRA_COMPAT=y
++CONFIG_INCLUDE_SUSv2=y
++# CONFIG_USE_PORTABLE_CODE is not set
+ CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
+ # CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+ # CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+@@ -59,7 +61,6 @@ CONFIG_EXTRA_CFLAGS=""
+ CONFIG_NO_DEBUG_LIB=y
+ # CONFIG_DMALLOC is not set
+ # CONFIG_EFENCE is not set
+-CONFIG_INCLUDE_SUSv2=y
+
+ #
+ # Installation Options
+@@ -120,6 +121,7 @@ CONFIG_DPKG_DEB=y
+ CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY=y
+ CONFIG_GUNZIP=y
+ CONFIG_GZIP=y
++CONFIG_FEATURE_GZIP_LONG_OPTIONS=y
+ CONFIG_LZOP=y
+ CONFIG_LZOP_COMPR_HIGH=y
+ CONFIG_RPM2CPIO=y
+@@ -133,6 +135,7 @@ CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY=
+ CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+ CONFIG_FEATURE_TAR_LONG_OPTIONS=y
+ CONFIG_FEATURE_TAR_UNAME_GNAME=y
++CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y
+ CONFIG_UNCOMPRESS=y
+ CONFIG_UNLZMA=y
+ CONFIG_FEATURE_LZMA_FAST=y
+@@ -148,15 +151,19 @@ CONFIG_CATV=y
+ CONFIG_CHGRP=y
+ CONFIG_CHMOD=y
+ CONFIG_CHOWN=y
++CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y
+ CONFIG_CHROOT=y
+ CONFIG_CKSUM=y
+ CONFIG_COMM=y
+ CONFIG_CP=y
++CONFIG_FEATURE_CP_LONG_OPTIONS=y
+ CONFIG_CUT=y
+ CONFIG_DATE=y
+ CONFIG_FEATURE_DATE_ISOFMT=y
++CONFIG_FEATURE_DATE_COMPAT=y
+ CONFIG_DD=y
+ CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
++CONFIG_FEATURE_DD_THIRD_STATUS_LINE=y
+ CONFIG_FEATURE_DD_IBS_OBS=y
+ CONFIG_DF=y
+ CONFIG_FEATURE_DF_FANCY=y
+@@ -271,7 +278,7 @@ CONFIG_FEATURE_AUTOWIDTH=y
+ CONFIG_FEATURE_HUMAN_READABLE=y
+
+ #
+-# Common options for md5sum, sha1sum
++# Common options for md5sum, sha1sum, sha256sum, sha512sum
+ #
+ CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
+
+@@ -318,9 +325,8 @@ CONFIG_AWK=y
+ CONFIG_FEATURE_AWK_LIBM=y
+ CONFIG_CMP=y
+ CONFIG_DIFF=y
+-CONFIG_FEATURE_DIFF_BINARY=y
++CONFIG_FEATURE_DIFF_LONG_OPTIONS=y
+ CONFIG_FEATURE_DIFF_DIR=y
+-CONFIG_FEATURE_DIFF_MINIMAL=y
+ CONFIG_ED=y
+ CONFIG_PATCH=y
+ CONFIG_SED=y
+@@ -364,6 +370,7 @@ CONFIG_FEATURE_FIND_DELETE=y
+ CONFIG_FEATURE_FIND_PATH=y
+ CONFIG_FEATURE_FIND_REGEX=y
+ CONFIG_FEATURE_FIND_CONTEXT=y
++CONFIG_FEATURE_FIND_LINKS=y
+ CONFIG_GREP=y
+ CONFIG_FEATURE_GREP_EGREP_ALIAS=y
+ CONFIG_FEATURE_GREP_FGREP_ALIAS=y
+@@ -453,6 +460,7 @@ CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALRE
+ # Options common to multiple modutils
+ #
+ # CONFIG_FEATURE_2_4_MODULES is not set
++CONFIG_FEATURE_INSMOD_TRY_MMAP=y
+ # CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
+ # CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
+ # CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
+@@ -488,12 +496,14 @@ CONFIG_FEATURE_FDISK_ADVANCED=y
+ CONFIG_FINDFS=y
+ CONFIG_FREERAMDISK=y
+ CONFIG_FSCK_MINIX=y
++CONFIG_MKFS_EXT2=y
+ CONFIG_MKFS_MINIX=y
+
+ #
+ # Minix filesystem support
+ #
+ CONFIG_FEATURE_MINIX2=y
++CONFIG_MKFS_REISER=y
+ CONFIG_MKFS_VFAT=y
+ CONFIG_GETOPT=y
+ CONFIG_FEATURE_GETOPT_LONG=y
+@@ -506,6 +516,8 @@ CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
+ CONFIG_IPCRM=y
+ CONFIG_IPCS=y
+ CONFIG_LOSETUP=y
++CONFIG_LSPCI=y
++CONFIG_LSUSB=y
+ CONFIG_MDEV=y
+ CONFIG_FEATURE_MDEV_CONF=y
+ CONFIG_FEATURE_MDEV_RENAME=y
+@@ -518,6 +530,7 @@ CONFIG_MORE=y
+ CONFIG_FEATURE_USE_TERMIOS=y
+ CONFIG_VOLUMEID=y
+ CONFIG_FEATURE_VOLUMEID_EXT=y
++CONFIG_FEATURE_VOLUMEID_BTRFS=y
+ CONFIG_FEATURE_VOLUMEID_REISERFS=y
+ CONFIG_FEATURE_VOLUMEID_FAT=y
+ CONFIG_FEATURE_VOLUMEID_HFS=y
+@@ -595,6 +608,7 @@ CONFIG_DEVMEM=y
+ CONFIG_EJECT=y
+ CONFIG_FEATURE_EJECT_SCSI=y
+ CONFIG_FBSPLASH=y
++CONFIG_FLASHCP=y
+ # CONFIG_FLASH_LOCK is not set
+ # CONFIG_FLASH_UNLOCK is not set
+ # CONFIG_FLASH_ERASEALL is not set
+@@ -638,6 +652,7 @@ CONFIG_TIME=y
+ CONFIG_TIMEOUT=y
+ CONFIG_TTYSIZE=y
+ CONFIG_VOLNAME=y
++CONFIG_WALL=y
+ CONFIG_WATCHDOG=y
+
+ #
+@@ -657,6 +672,7 @@ CONFIG_ETHER_WAKE=y
+ CONFIG_FAKEIDENTD=y
+ CONFIG_FTPD=y
+ CONFIG_FEATURE_FTP_WRITE=y
++CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST=y
+ CONFIG_FTPGET=y
+ CONFIG_FTPPUT=y
+ CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
+@@ -722,6 +738,8 @@ CONFIG_NETSTAT=y
+ CONFIG_FEATURE_NETSTAT_WIDE=y
+ CONFIG_FEATURE_NETSTAT_PRG=y
+ CONFIG_NSLOOKUP=y
++CONFIG_NTPD=y
++CONFIG_FEATURE_NTPD_SERVER=y
+ CONFIG_PING=y
+ CONFIG_PING6=y
+ CONFIG_FEATURE_FANCY_PING=y
+@@ -733,13 +751,16 @@ CONFIG_FEATURE_TELNET_TTYPE=y
+ CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+ CONFIG_TELNETD=y
+ CONFIG_FEATURE_TELNETD_STANDALONE=y
++CONFIG_FEATURE_TELNETD_INETD_WAIT=y
+ CONFIG_TFTP=y
+ CONFIG_TFTPD=y
+ CONFIG_FEATURE_TFTP_GET=y
+ CONFIG_FEATURE_TFTP_PUT=y
+ CONFIG_FEATURE_TFTP_BLOCKSIZE=y
++CONFIG_FEATURE_TFTP_PROGRESS_BAR=y
+ CONFIG_TFTP_DEBUG=y
+ CONFIG_TRACEROUTE=y
++CONFIG_TRACEROUTE6=y
+ CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
+ CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE=y
+ CONFIG_FEATURE_TRACEROUTE_USE_ICMP=y
+@@ -813,6 +834,7 @@ CONFIG_FEATURE_TOP_SMP_CPU=y
+ CONFIG_FEATURE_TOP_DECIMALS=y
+ CONFIG_FEATURE_TOP_SMP_PROCESS=y
+ CONFIG_FEATURE_TOPMEM=y
++CONFIG_FEATURE_SHOW_THREADS=y
+ CONFIG_UPTIME=y
+ CONFIG_WATCH=y
+
+@@ -881,6 +903,7 @@ CONFIG_HUSH_CASE=y
+ CONFIG_HUSH_FUNCTIONS=y
+ CONFIG_HUSH_LOCAL=y
+ CONFIG_HUSH_EXPORT_N=y
++CONFIG_HUSH_RANDOM_SUPPORT=y
+ CONFIG_LASH=y
+ CONFIG_MSH=y
+ CONFIG_SH_MATH_SUPPORT=y
diff --git a/main/busybox/busybox-1.16.0-linux_swap.patch b/main/busybox/busybox-1.16.0-linux_swap.patch
new file mode 100644
index 00000000..78d60a8d
--- /dev/null
+++ b/main/busybox/busybox-1.16.0-linux_swap.patch
@@ -0,0 +1,16 @@
+diff -urpN busybox-1.16.0/util-linux/volume_id/linux_swap.c busybox-1.16.0-linux_swap/util-linux/volume_id/linux_swap.c
+--- busybox-1.16.0/util-linux/volume_id/linux_swap.c 2010-01-25 01:59:39.000000000 +0100
++++ busybox-1.16.0-linux_swap/util-linux/volume_id/linux_swap.c 2010-02-21 01:53:21.000000000 +0100
+@@ -52,7 +52,11 @@ int FAST_FUNC volume_id_probe_linux_swap
+ goto found;
+ }
+
+- if (memcmp(buf, "SWAPSPACE2", 10) == 0) {
++ if (memcmp(buf, "SWAPSPACE2", 10) == 0
++ || memcmp(buf, "S1SUSPEND", 9) == 0
++ || memcmp(buf, "S2SUSPEND", 9) == 0
++ || memcmp(buf, "ULSUSPEND", 9) == 0
++ ) {
+ sw = volume_id_get_buffer(id, off, sizeof(struct swap_header_v1_2));
+ if (sw == NULL)
+ return -1;
diff --git a/main/busybox/busybox-1.16.0-md5_sha_compat.patch b/main/busybox/busybox-1.16.0-md5_sha_compat.patch
new file mode 100644
index 00000000..e982c0ef
--- /dev/null
+++ b/main/busybox/busybox-1.16.0-md5_sha_compat.patch
@@ -0,0 +1,16 @@
+diff -urpN busybox-1.16.0/coreutils/md5_sha1_sum.c busybox-1.16.0-md5_sha_compat/coreutils/md5_sha1_sum.c
+--- busybox-1.16.0/coreutils/md5_sha1_sum.c 2010-01-25 01:59:38.000000000 +0100
++++ busybox-1.16.0-md5_sha_compat/coreutils/md5_sha1_sum.c 2010-02-21 01:53:28.000000000 +0100
+@@ -101,8 +101,10 @@ int md5_sha1_sum_main(int argc UNUSED_PA
+ unsigned flags;
+ /*hash_algo_t hash_algo = applet_name[3];*/
+
+- if (ENABLE_FEATURE_MD5_SHA1_SUM_CHECK)
+- flags = getopt32(argv, "scw");
++ if (ENABLE_FEATURE_MD5_SHA1_SUM_CHECK) {
++ /* -b "binary", -t "text" are ignored (shaNNNsum compat) */
++ flags = getopt32(argv, "scwbt");
++ }
+ else optind = 1;
+ argv += optind;
+ //argc -= optind;
diff --git a/main/busybox/busybox-1.16.0-syslogd.patch b/main/busybox/busybox-1.16.0-syslogd.patch
new file mode 100644
index 00000000..dcca134f
--- /dev/null
+++ b/main/busybox/busybox-1.16.0-syslogd.patch
@@ -0,0 +1,12 @@
+diff -urpN busybox-1.16.0/sysklogd/syslogd.c busybox-1.16.0-syslogd/sysklogd/syslogd.c
+--- busybox-1.16.0/sysklogd/syslogd.c 2010-01-25 01:59:38.000000000 +0100
++++ busybox-1.16.0-syslogd/sysklogd/syslogd.c 2010-02-21 01:53:33.000000000 +0100
+@@ -698,7 +698,7 @@ int syslogd_main(int argc UNUSED_PARAM,
+ if (!(opts & OPT_nofork)) {
+ bb_daemonize_or_rexec(DAEMON_CHDIR_ROOT, argv);
+ }
+- umask(0);
++ //umask(0); - why??
+ write_pidfile("/var/run/syslogd.pid");
+ do_syslogd();
+ /* return EXIT_SUCCESS; */
diff --git a/main/busybox/busybox-1.16.0-tftp.patch b/main/busybox/busybox-1.16.0-tftp.patch
new file mode 100644
index 00000000..b6fb6c7b
--- /dev/null
+++ b/main/busybox/busybox-1.16.0-tftp.patch
@@ -0,0 +1,12 @@
+diff -urpN busybox-1.16.0/networking/tftp.c busybox-1.16.0-tftp/networking/tftp.c
+--- busybox-1.16.0/networking/tftp.c 2010-01-25 01:59:38.000000000 +0100
++++ busybox-1.16.0-tftp/networking/tftp.c 2010-02-21 01:53:41.000000000 +0100
+@@ -308,7 +308,7 @@ static int tftp_protocol(
+
+ if (!ENABLE_TFTP || our_lsa) { /* tftpd */
+ /* Open file (must be after changing user) */
+- local_fd = open(local_file, open_mode);
++ local_fd = open(local_file, open_mode, 0666);
+ if (local_fd < 0) {
+ error_pkt_reason = ERR_NOFILE;
+ strcpy((char*)error_pkt_str, "can't open file");
diff --git a/main/busybox/busybox-1.16.0-usage.patch b/main/busybox/busybox-1.16.0-usage.patch
new file mode 100644
index 00000000..a2e884bb
--- /dev/null
+++ b/main/busybox/busybox-1.16.0-usage.patch
@@ -0,0 +1,1141 @@
+diff -urpN busybox-1.16.0/include/usage.h busybox-1.16.0-usage/include/usage.h
+--- busybox-1.16.0/include/usage.h 2010-01-25 01:59:38.000000000 +0100
++++ busybox-1.16.0-usage/include/usage.h 2010-02-21 01:53:47.000000000 +0100
+@@ -16,7 +16,7 @@
+ #define NOUSAGE_STR "\b"
+
+ #define acpid_trivial_usage \
+- "[-d] [-c CONFDIR] [-l LOGFILE] [-e PROC_EVENT_FILE] [EVDEV_EVENT_FILE...]"
++ "[-d] [-c CONFDIR] [-l LOGFILE] [-e PROC_EVENT_FILE] [EVDEV_EVENT_FILE]..."
+ #define acpid_full_usage "\n\n" \
+ "Listen to ACPI events and spawn specific helpers on event arrival\n" \
+ "\nOptions:" \
+@@ -33,7 +33,7 @@
+ "# acpid -d /dev/input/event*\n"
+
+ #define addgroup_trivial_usage \
+- "[-g GID] " IF_FEATURE_ADDUSER_TO_GROUP("[user_name] ") "group_name"
++ "[-g GID] " IF_FEATURE_ADDUSER_TO_GROUP("[USER] ") "GROUP"
+ #define addgroup_full_usage "\n\n" \
+ "Add a group " IF_FEATURE_ADDUSER_TO_GROUP("or add a user to a group") "\n" \
+ "\nOptions:" \
+@@ -41,7 +41,7 @@
+ "\n -S Create a system group" \
+
+ #define adduser_trivial_usage \
+- "[OPTIONS] user_name"
++ "[OPTIONS] USER"
+ #define adduser_full_usage "\n\n" \
+ "Add a user\n" \
+ "\nOptions:" \
+@@ -55,16 +55,16 @@
+ "\n -u UID User id" \
+
+ #define adjtimex_trivial_usage \
+- "[-q] [-o offset] [-f frequency] [-p timeconstant] [-t tick]"
++ "[-q] [-o OFF] [-f FREQ] [-p TCONST] [-t TICK]"
+ #define adjtimex_full_usage "\n\n" \
+- "Read and optionally set system timebase parameters. See adjtimex(2).\n" \
++ "Read and optionally set system timebase parameters. See adjtimex(2)\n" \
+ "\nOptions:" \
+- "\n -q Quiet" \
+- "\n -o offset Time offset, microseconds" \
+- "\n -f frequency Frequency adjust, integer kernel units (65536 is 1ppm)" \
+- "\n (positive values make clock run faster)" \
+- "\n -t tick Microseconds per tick, usually 10000" \
+- "\n -p timeconstant" \
++ "\n -q Quiet" \
++ "\n -o OFF Time offset, microseconds" \
++ "\n -f FREQ Frequency adjust, integer kernel units (65536 is 1ppm)" \
++ "\n (positive values make clock run faster)" \
++ "\n -t TICK Microseconds per tick, usually 10000" \
++ "\n -p TCONST" \
+
+ #define ar_trivial_usage \
+ "[-o] [-v] [-p] [-t] [-x] ARCHIVE FILES"
+@@ -78,11 +78,11 @@
+ "\n -v Verbose" \
+
+ #define arp_trivial_usage \
+- "\n[-vn] [-H type] [-i if] -a [hostname]" \
+- "\n[-v] [-i if] -d hostname [pub]" \
+- "\n[-v] [-H type] [-i if] -s hostname hw_addr [temp]" \
+- "\n[-v] [-H type] [-i if] -s hostname hw_addr [netmask nm] pub" \
+- "\n[-v] [-H type] [-i if] -Ds hostname ifa [netmask nm] pub"
++ "\n[-vn] [-H HWTYPE] [-i IF] -a [HOSTNAME]" \
++ "\n[-v] [-i IF] -d HOSTNAME [pub]" \
++ "\n[-v] [-H HWTYPE] [-i IF] -s HOSTNAME HWADDR [temp]" \
++ "\n[-v] [-H HWTYPE] [-i IF] -s HOSTNAME HWADDR [netmask MASK] pub" \
++ "\n[-v] [-H HWTYPE] [-i IF] -Ds HOSTNAME IFACE [netmask MASK] pub"
+ #define arp_full_usage "\n\n" \
+ "Manipulate ARP cache\n" \
+ "\nOptions:" \
+@@ -97,7 +97,7 @@
+ "\n -H HWTYPE Hardware address type" \
+
+ #define arping_trivial_usage \
+- "[-fqbDUA] [-c count] [-w timeout] [-I dev] [-s sender] target"
++ "[-fqbDUA] [-c CNT] [-w TIMEOUT] [-I IFACE] [-s SRC_IP] DST_IP"
+ #define arping_full_usage "\n\n" \
+ "Send ARP requests/replies\n" \
+ "\nOptions:" \
+@@ -108,10 +108,10 @@
+ "\n -U Unsolicited ARP mode, update your neighbors" \
+ "\n -A ARP answer mode, update your neighbors" \
+ "\n -c N Stop after sending N ARP requests" \
+- "\n -w timeout Time to wait for ARP reply, in seconds" \
+- "\n -I dev Interface to use (default eth0)" \
+- "\n -s sender Sender IP address" \
+- "\n target Target IP address" \
++ "\n -w TIMEOUT Time to wait for ARP reply, seconds" \
++ "\n -I IFACE Interface to use (default eth0)" \
++ "\n -s SRC_IP Sender IP address" \
++ "\n DST_IP Target IP address" \
+
+ #define sh_trivial_usage NOUSAGE_STR
+ #define sh_full_usage ""
+@@ -191,19 +191,19 @@
+ ) \
+
+ #define bunzip2_trivial_usage \
+- "[OPTIONS] [FILE]"
++ "[OPTIONS] [FILE]..."
+ #define bunzip2_full_usage "\n\n" \
+- "Uncompress FILE (or standard input)\n" \
++ "Uncompress FILEs (or stdin)\n" \
+ "\nOptions:" \
+- "\n -c Write to standard output" \
++ "\n -c Write to stdout" \
+ "\n -f Force" \
+
+ #define bzip2_trivial_usage \
+ "[OPTIONS] [FILE]..."
+ #define bzip2_full_usage "\n\n" \
+- "Compress FILEs (or standard input) with bzip2 algorithm.\n" \
++ "Compress FILEs (or stdin) with bzip2 algorithm\n" \
+ "\nOptions:" \
+- "\n -c Write to standard output" \
++ "\n -c Write to stdout" \
+ "\n -d Decompress" \
+ "\n -f Force" \
+ "\n -1..-9 Compression level" \
+@@ -214,7 +214,7 @@
+ #define lzop_trivial_usage \
+ "[-cfvd123456789CF] [FILE]..."
+ #define lzop_full_usage "\n\n" \
+- " -c Write to standard output" \
++ " -c Write to stdout" \
+ "\n -f Force" \
+ "\n -v Verbose" \
+ "\n -d Decompress" \
+@@ -231,7 +231,7 @@
+ #define unlzop_trivial_usage \
+ "[-cfvCF] [FILE]..."
+ #define unlzop_full_usage "\n\n" \
+- " -c Write to standard output" \
++ " -c Write to stdout" \
+ "\n -f Force" \
+ "\n -v Verbose" \
+ "\n -F Don't store or verify checksum" \
+@@ -242,11 +242,11 @@
+ "Uncompress to stdout"
+
+ #define unlzma_trivial_usage \
+- "[OPTIONS] [FILE]"
++ "[OPTIONS] [FILE]..."
+ #define unlzma_full_usage "\n\n" \
+- "Uncompress FILE (or standard input)\n" \
++ "Uncompress FILE (or stdin)\n" \
+ "\nOptions:" \
+- "\n -c Write to standard output" \
++ "\n -c Write to stdout" \
+ "\n -f Force" \
+
+ #define lzmacat_trivial_usage \
+@@ -255,7 +255,7 @@
+ "Uncompress to stdout"
+
+ #define cal_trivial_usage \
+- "[-jy] [[month] year]"
++ "[-jy] [[MONTH] YEAR]"
+ #define cal_full_usage "\n\n" \
+ "Display a calendar\n" \
+ "\nOptions:" \
+@@ -436,21 +436,21 @@
+ "\n -c BYTES Limit core file size" \
+ "\n -v Verbose" \
+ "\n -P Create new process group" \
+- "\n -0 Close standard input" \
+- "\n -1 Close standard output" \
+- "\n -2 Close standard error" \
++ "\n -0 Close stdin" \
++ "\n -1 Close stdout" \
++ "\n -2 Close stderr" \
+
+ #define setuidgid_trivial_usage \
+- "account prog args"
++ "USER PROG ARGS"
+ #define setuidgid_full_usage "\n\n" \
+- "Set uid and gid to account's uid and gid, removing all supplementary\n" \
++ "Set uid and gid to USER's uid and gid, removing all supplementary\n" \
+ "groups and run PROG"
+ #define envuidgid_trivial_usage \
+- "account prog args"
++ "USER PROG ARGS"
+ #define envuidgid_full_usage "\n\n" \
+- "Set $UID to account's uid and $GID to account's gid and run PROG"
++ "Set $UID to USER's uid and $GID to USER's gid and run PROG"
+ #define envdir_trivial_usage \
+- "dir prog args"
++ "DIR PROG ARGS"
+ #define envdir_full_usage "\n\n" \
+ "Set various environment variables as specified by files\n" \
+ "in the directory dir and run PROG"
+@@ -477,7 +477,7 @@
+ "\n a SIGXCPU after N seconds" \
+
+ #define chroot_trivial_usage \
+- "NEWROOT [PROG [ARGS]]"
++ "NEWROOT [PROG ARGS]"
+ #define chroot_full_usage "\n\n" \
+ "Run PROG with root directory set to NEWROOT"
+ #define chroot_example_usage \
+@@ -527,7 +527,7 @@
+ "Print the config file which built busybox"
+
+ #define chrt_trivial_usage \
+- "[OPTIONS] [PRIO] [PID | PROG [ARGS]]"
++ "[OPTIONS] [PRIO] [PID | PROG ARGS]"
+ #define chrt_full_usage "\n\n" \
+ "Manipulate real-time attributes of a process\n" \
+ "\nOptions:" \
+@@ -567,7 +567,7 @@
+ "Extract or list files from a cpio archive" \
+ IF_FEATURE_CPIO_O(", or" \
+ "\ncreate an archive" IF_FEATURE_CPIO_P(" (-o) or copy files (-p)") \
+- " using file list on standard input" \
++ " using file list on stdin" \
+ ) \
+ "\n" \
+ "\nMain operation mode:" \
+@@ -658,7 +658,7 @@
+ #define cut_trivial_usage \
+ "[OPTIONS] [FILE]..."
+ #define cut_full_usage "\n\n" \
+- "Print selected fields from each input FILE to standard output\n" \
++ "Print selected fields from each input FILE to stdout\n" \
+ "\nOptions:" \
+ "\n -b LIST Output only bytes from LIST" \
+ "\n -c LIST Output only characters from LIST" \
+@@ -721,7 +721,7 @@
+ "p - print top of the stack (without altering the stack),\n" \
+ "f - print entire stack, o - pop the value and set output radix\n" \
+ "(value must be 10 or 16).\n" \
+- "Examples: 'dc 2 2 add' -> 4, 'dc 8 8 * 2 2 + /' -> 16.\n" \
++ "Examples: 'dc 2 2 add' -> 4, 'dc 8 8 * 2 2 + /' -> 16\n" \
+
+ #define dc_example_usage \
+ "$ dc 2 2 + p\n" \
+@@ -815,7 +815,7 @@
+ "[-Pk" \
+ IF_FEATURE_HUMAN_READABLE("mh") \
+ IF_FEATURE_DF_FANCY("ai] [-B SIZE") \
+- "] [FILESYSTEM...]"
++ "] [FILESYSTEM]..."
+ #define df_full_usage "\n\n" \
+ "Print filesystem usage statistics\n" \
+ "\nOptions:" \
+@@ -847,7 +847,7 @@
+ "/dev/sda3 17381728 17107080 274648 98% /\n"
+
+ #define dhcprelay_trivial_usage \
+- "CLIENT_IFACE[,CLIENT_IFACE2...] SERVER_IFACE [SERVER_IP]"
++ "CLIENT_IFACE[,CLIENT_IFACE2]... SERVER_IFACE [SERVER_IP]"
+ #define dhcprelay_full_usage "\n\n" \
+ "Relay DHCP requests between clients and server" \
+
+@@ -893,15 +893,20 @@
+ "\n -s SIZE Buffer size" \
+
+ #define dnsd_trivial_usage \
+- "[-c config] [-t seconds] [-p port] [-i iface-ip] [-d]"
++ "[-dvs] [-c CONFFILE] [-t TTL_SEC] [-p PORT] [-i ADDR]"
+ #define dnsd_full_usage "\n\n" \
+ "Small static DNS server daemon\n" \
+ "\nOptions:" \
+- "\n -c Config filename" \
+- "\n -t TTL in seconds" \
+- "\n -p Listening port" \
+- "\n -i Listening ip (default all)" \
++ "\n -c FILE Config file" \
++ "\n -t SEC TTL" \
++ "\n -p PORT Listen on PORT" \
++ "\n -i ADDR Listen on ADDR" \
+ "\n -d Daemonize" \
++ "\n -v Verbose" \
++ "\n -s Send successful replies only. Use this if you want" \
++ "\n to use /etc/resolv.conf with two nameserver lines:" \
++ "\n nameserver DNSD_SERVER" \
++ "\n nameserver NORNAL_DNS_SERVER" \
+
+ #define dos2unix_trivial_usage \
+ "[OPTIONS] [FILE]"
+@@ -922,7 +927,7 @@
+ "\n -d unix2dos" \
+
+ #define dpkg_trivial_usage \
+- "[-ilCPru] [-F option] package_name"
++ "[-ilCPru] [-F OPT] PACKAGE"
+ #define dpkg_full_usage "\n\n" \
+ "Install, remove and manage Debian packages\n" \
+ "\nOptions:" \
+@@ -988,7 +993,7 @@
+ #define dumpkmap_trivial_usage \
+ "> keymap"
+ #define dumpkmap_full_usage "\n\n" \
+- "Print a binary keyboard translation table to standard output"
++ "Print a binary keyboard translation table to stdout"
+ #define dumpkmap_example_usage \
+ "$ dumpkmap > keymap\n"
+
+@@ -1031,7 +1036,7 @@
+ */
+
+ #define echo_trivial_usage \
+- IF_FEATURE_FANCY_ECHO("[-neE] ") "[ARG...]"
++ IF_FEATURE_FANCY_ECHO("[-neE] ") "[ARG]..."
+ #define echo_full_usage "\n\n" \
+ "Print the specified ARGs to stdout" \
+ IF_FEATURE_FANCY_ECHO( "\n" \
+@@ -1053,7 +1058,7 @@
+ #define eject_trivial_usage \
+ "[-t] [-T] [DEVICE]"
+ #define eject_full_usage "\n\n" \
+- "Eject specified DEVICE (or default /dev/cdrom)\n" \
++ "Eject DEVICE or default /dev/cdrom\n" \
+ "\nOptions:" \
+ IF_FEATURE_EJECT_SCSI( \
+ "\n -s SCSI device" \
+@@ -1065,7 +1070,7 @@
+ #define ed_full_usage ""
+
+ #define env_trivial_usage \
+- "[-iu] [-] [name=value]... [PROG [ARGS]]"
++ "[-iu] [-] [name=value]... [PROG ARGS]"
+ #define env_full_usage "\n\n" \
+ "Print the current environment or run PROG after setting up\n" \
+ "the specified environment\n" \
+@@ -1087,7 +1092,7 @@
+ #define expand_trivial_usage \
+ "[-i] [-t N] [FILE|-]"
+ #define expand_full_usage "\n\n" \
+- "Convert tabs to spaces, writing to standard output\n" \
++ "Convert tabs to spaces, writing to stdout\n" \
+ "\nOptions:" \
+ IF_FEATURE_EXPAND_LONG_OPTIONS( \
+ "\n -i,--initial Don't convert tabs after non blanks" \
+@@ -1101,7 +1106,7 @@
+ #define expr_trivial_usage \
+ "EXPRESSION"
+ #define expr_full_usage "\n\n" \
+- "Print the value of EXPRESSION to standard output\n" \
++ "Print the value of EXPRESSION to stdout\n" \
+ "\n" \
+ "EXPRESSION may be:\n" \
+ " ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n" \
+@@ -1216,7 +1221,7 @@
+ "$ findfs LABEL=MyDevice"
+
+ #define find_trivial_usage \
+- "[PATH...] [EXPRESSION]"
++ "[PATH]... [EXPRESSION]"
+ #define find_full_usage "\n\n" \
+ "Search for files. The default PATH is the current directory,\n" \
+ "default EXPRESSION is '-print'\n" \
+@@ -1256,7 +1261,7 @@
+ IF_FEATURE_FIND_DEPTH( \
+ "\n -depth Process directory name after traversing it") \
+ IF_FEATURE_FIND_SIZE( \
+- "\n -size N[bck] File size is N (c:bytes,k:kbytes,b:512 bytes(def.))." \
++ "\n -size N[bck] File size is N (c:bytes,k:kbytes,b:512 bytes(def.))" \
+ "\n +/-N: file size is bigger/smaller than N") \
+ IF_FEATURE_FIND_LINKS( \
+ "\n -links N Number of links is greater than (+N), less than (-N)," \
+@@ -1308,10 +1313,9 @@
+ "\n -v Verbose" \
+
+ #define fold_trivial_usage \
+- "[-bs] [-w WIDTH] [FILE]"
++ "[-bs] [-w WIDTH] [FILE]..."
+ #define fold_full_usage "\n\n" \
+- "Wrap input lines in each FILE (standard input by default), writing to\n" \
+- "standard output\n" \
++ "Wrap input lines in each FILE (or stdin), writing to stdout\n" \
+ "\nOptions:" \
+ "\n -b Count bytes rather than columns" \
+ "\n -s Break at spaces" \
+@@ -1336,7 +1340,7 @@
+ "$ freeramdisk /dev/ram2\n"
+
+ #define fsck_trivial_usage \
+- "[-ANPRTV] [-C fd] [-t fstype] [fs-options] [filesys...]"
++ "[-ANPRTV] [-C FD] [-t FSTYPE] [FS_OPTS] [BLOCKDEV]..."
+ #define fsck_full_usage "\n\n" \
+ "Check and repair filesystems\n" \
+ "\nOptions:" \
+@@ -1347,10 +1351,10 @@
+ "\n -T Don't show title on startup" \
+ "\n -V Verbose" \
+ "\n -C n Write status information to specified filedescriptor" \
+- "\n -t type List of filesystem types to check" \
++ "\n -t TYPE List of filesystem types to check" \
+
+ #define fsck_minix_trivial_usage \
+- "[-larvsmf] /dev/name"
++ "[-larvsmf] BLOCKDEV"
+ #define fsck_minix_full_usage "\n\n" \
+ "Check MINIX filesystem\n" \
+ "\nOptions:" \
+@@ -1463,7 +1467,7 @@
+ "#!/bin/sh\n" \
+ "GETOPT=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \\\n" \
+ " -n 'example.busybox' -- \"$@\"`\n" \
+- "if [ $? != 0 ]; then exit 1; fi\n" \
++ "if [ $? != 0 ]; then exit 1; fi\n" \
+ "eval set -- \"$GETOPT\"\n" \
+ "while true; do\n" \
+ " case $1 in\n" \
+@@ -1502,42 +1506,47 @@
+ "\n -H HOST Log HOST into the utmp file as the hostname" \
+
+ #define grep_trivial_usage \
+- "[-HhrilLnqvso" \
++ "[-HhnlLoqvsri" \
+ IF_DESKTOP("w") \
+- "eF" \
++ "F" \
+ IF_FEATURE_GREP_EGREP_ALIAS("E") \
+- IF_FEATURE_GREP_CONTEXT("ABC") \
+ IF_EXTRA_COMPAT("z") \
+- "] PATTERN [FILE]..."
++ "] [-m N] " \
++ IF_FEATURE_GREP_CONTEXT("[-A/B/C N] ") \
++ "PATTERN/-e PATTERN.../-f FILE [FILE]..."
+ #define grep_full_usage "\n\n" \
+- "Search for PATTERN in each FILE or standard input\n" \
++ "Search for PATTERN in FILEs (or stdin)\n" \
+ "\nOptions:" \
+- "\n -H Prefix output lines with filename where match was found" \
+- "\n -h Suppress the prefixing filename on output" \
+- "\n -r Recurse" \
+- "\n -i Ignore case distinctions" \
+- "\n -l List names of files that match" \
+- "\n -L List names of files that don't match" \
+- "\n -n Print line number with output lines" \
++ "\n -H Add 'filename:' prefix" \
++ "\n -h Do not add 'filename:' prefix" \
++ "\n -n Add 'line_no:' prefix" \
++ "\n -l Show only names of files that match" \
++ "\n -L Show only names of files that don't match" \
++ "\n -c Show only count of matching lines" \
++ "\n -o Show only the matching part of line" \
+ "\n -q Quiet. Return 0 if PATTERN is found, 1 otherwise" \
+ "\n -v Select non-matching lines" \
+- "\n -s Suppress file open/read error messages" \
+- "\n -c Only print count of matching lines" \
+- "\n -o Show only the part of a line that matches PATTERN" \
+- "\n -m N Match up to N times per file" \
++ "\n -s Suppress open and read errors" \
++ "\n -r Recurse" \
++ "\n -i Ignore case" \
+ IF_DESKTOP( \
+- "\n -w Match whole words only") \
+- "\n -F PATTERN is a set of newline-separated strings" \
++ "\n -w Match whole words only" \
++ ) \
++ "\n -F PATTERN is a literal (not regexp)" \
+ IF_FEATURE_GREP_EGREP_ALIAS( \
+- "\n -E PATTERN is an extended regular expression") \
+- "\n -e PTRN Pattern to match" \
+- "\n -f FILE Read pattern from file" \
++ "\n -E PATTERN is an extended regexp" \
++ ) \
++ IF_EXTRA_COMPAT( \
++ "\n -z Input is NUL terminated" \
++ ) \
++ "\n -m N Match up to N times per file" \
+ IF_FEATURE_GREP_CONTEXT( \
+ "\n -A N Print N lines of trailing context" \
+ "\n -B N Print N lines of leading context" \
+- "\n -C N Print N lines of output context") \
+- IF_EXTRA_COMPAT( \
+- "\n -z Input is NUL terminated") \
++ "\n -C N Same as '-A N -B N'" \
++ ) \
++ "\n -e PTRN Pattern to match" \
++ "\n -f FILE Read pattern from file" \
+
+ #define grep_example_usage \
+ "$ grep root /etc/passwd\n" \
+@@ -1554,9 +1563,9 @@
+ #define gunzip_trivial_usage \
+ "[OPTIONS] [FILE]..."
+ #define gunzip_full_usage "\n\n" \
+- "Uncompress FILEs (or standard input)\n" \
++ "Uncompress FILEs (or stdin)\n" \
+ "\nOptions:" \
+- "\n -c Write to standard output" \
++ "\n -c Write to stdout" \
+ "\n -f Force" \
+ "\n -t Test file integrity" \
+
+@@ -1570,9 +1579,9 @@
+ #define gzip_trivial_usage \
+ "[OPTIONS] [FILE]..."
+ #define gzip_full_usage "\n\n" \
+- "Compress FILEs (or standard input)\n" \
++ "Compress FILEs (or stdin)\n" \
+ "\nOptions:" \
+- "\n -c Write to standard output" \
++ "\n -c Write to stdout" \
+ "\n -d Decompress" \
+ "\n -f Force" \
+
+@@ -1649,7 +1658,7 @@
+ #define head_trivial_usage \
+ "[OPTIONS] [FILE]..."
+ #define head_full_usage "\n\n" \
+- "Print first 10 lines of each FILE (or standard input) to standard output.\n" \
++ "Print first 10 lines of each FILE (or stdin) to stdout.\n" \
+ "With more than one FILE, precede each with a header giving the file name.\n" \
+ "\nOptions:" \
+ "\n -n N Print first N lines instead of first 10" \
+@@ -1664,9 +1673,9 @@
+ "daemon:x:1:1:daemon:/usr/sbin:/bin/sh\n"
+
+ #define hexdump_trivial_usage \
+- "[-bcCdefnosvx" IF_FEATURE_HEXDUMP_REVERSE("R") "] FILE..."
++ "[-bcCdefnosvx" IF_FEATURE_HEXDUMP_REVERSE("R") "] [FILE]..."
+ #define hexdump_full_usage "\n\n" \
+- "Display FILEs or standard input in a user specified format\n" \
++ "Display FILEs (or stdin) in a user specified format\n" \
+ "\nOptions:" \
+ "\n -b One-byte octal display" \
+ "\n -c One-byte character display" \
+@@ -1795,7 +1804,7 @@
+ " [up|down] ..."
+
+ #define ifenslave_trivial_usage \
+- "[-cdf] master-iface <slave-iface...>"
++ "[-cdf] MASTER_IFACE SLAVE_IFACE..."
+ #define ifenslave_full_usage "\n\n" \
+ "Configure network interfaces for parallel routing\n" \
+ "\nOptions:" \
+@@ -1847,7 +1856,7 @@
+ "\n -k Kill running daemon" \
+
+ #define ifup_trivial_usage \
+- "[-ain"IF_FEATURE_IFUPDOWN_MAPPING("m")"vf] ifaces..."
++ "[-ain"IF_FEATURE_IFUPDOWN_MAPPING("m")"vf] IFACE..."
+ #define ifup_full_usage "\n\n" \
+ "Options:" \
+ "\n -a De/configure all interfaces automatically" \
+@@ -2018,11 +2027,11 @@
+ " ::shutdown:/sbin/swapoff -a\n"
+
+ #define inotifyd_trivial_usage \
+- "PROG FILE1[:MASK] ..."
++ "PROG FILE1[:MASK]..."
+ #define inotifyd_full_usage "\n\n" \
+ "Run PROG on filesystem changes." \
+ "\nWhen a filesystem event matching MASK occurs on FILEn," \
+- "\nPROG <actual_event(s)> <FILEn> [<subfile_name>] is run." \
++ "\nPROG ACTUAL_EVENTS FILEn [SUBFILE] is run." \
+ "\nEvents:" \
+ "\n a File is accessed" \
+ "\n c File is modified" \
+@@ -2042,7 +2051,7 @@
+ "\n d Subfile is deleted" \
+ "\n" \
+ "\ninotifyd waits for PROG to exit." \
+- "\nWhen x event happens for all FILEs, inotifyd exits" \
++ "\nWhen x event happens for all FILEs, inotifyd exits." \
+
+ /* 2.6 style insmod has no options and required filename
+ * (not module name - .ko can't be omitted) */
+@@ -2068,7 +2077,7 @@
+
+ /* -v, -b, -c are ignored */
+ #define install_trivial_usage \
+- "[-cdDsp] [-o USER] [-g GRP] [-m MODE] [source] dest|directory"
++ "[-cdDsp] [-o USER] [-g GRP] [-m MODE] [SOURCE]... DEST"
+ #define install_full_usage "\n\n" \
+ "Copy files and set attributes\n" \
+ "\nOptions:" \
+@@ -2247,7 +2256,7 @@
+ "$ kill 252\n"
+
+ #define killall_trivial_usage \
+- "[-l] [-q] [-SIG] process-name..."
++ "[-l] [-q] [-SIG] PROCESS_NAME..."
+ #define killall_full_usage "\n\n" \
+ "Send a signal (default: TERM) to given processes\n" \
+ "\nOptions:" \
+@@ -2287,8 +2296,7 @@
+ #define less_trivial_usage \
+ "[-EMNmh~I?] [FILE]..."
+ #define less_full_usage "\n\n" \
+- "View a file or list of files. The position within files can be\n" \
+- "changed, and files can be manipulated in various ways.\n" \
++ "View FILE (or stdin) one screenful at a time\n" \
+ "\nOptions:" \
+ "\n -E Quit once the end of a file is reached" \
+ "\n -M,-m Display status line with line numbers" \
+@@ -2306,7 +2314,7 @@
+ #define linuxrc_full_usage ""
+
+ #define setarch_trivial_usage \
+- "personality program [args...]"
++ "personality PROG ARGS"
+ #define setarch_full_usage "\n\n" \
+ "Personality may be:\n" \
+ " linux32 Set 32bit uname emulation\n" \
+@@ -2334,7 +2342,7 @@
+ #define loadfont_trivial_usage \
+ "< font"
+ #define loadfont_full_usage "\n\n" \
+- "Load a console font from standard input" \
++ "Load a console font from stdin" \
+ /* "\n -C TTY Affect TTY instead of /dev/tty" */ \
+
+ #define loadfont_example_usage \
+@@ -2343,7 +2351,7 @@
+ #define loadkmap_trivial_usage \
+ "< keymap"
+ #define loadkmap_full_usage "\n\n" \
+- "Load a binary keyboard translation table from standard input\n" \
++ "Load a binary keyboard translation table from stdin\n" \
+ /* "\n -C TTY Affect TTY instead of /dev/tty" */ \
+
+ #define loadkmap_example_usage \
+@@ -2352,7 +2360,7 @@
+ #define logger_trivial_usage \
+ "[OPTIONS] [MESSAGE]"
+ #define logger_full_usage "\n\n" \
+- "Write MESSAGE to the system log. If MESSAGE is omitted, log stdin.\n" \
++ "Write MESSAGE (or stdin) to syslog\n" \
+ "\nOptions:" \
+ "\n -s Log to stderr as well as the system log" \
+ "\n -t TAG Log using the specified tag (defaults to user name)" \
+@@ -2415,7 +2423,7 @@
+ "\n tcpsvd -E 0 515 softlimit -m 999999 lpd /var/spool ./print" \
+
+ #define lpq_trivial_usage \
+- "[-P queue[@host[:port]]] [-U USERNAME] [-d JOBID...] [-fs]"
++ "[-P queue[@host[:port]]] [-U USERNAME] [-d JOBID]... [-fs]"
+ #define lpq_full_usage "\n\n" \
+ "Options:" \
+ "\n -P lp service to connect to (else uses $PRINTER)" \
+@@ -2764,8 +2772,8 @@
+ "[-L LABEL] " \
+ /* "[-M last-mounted-directory] [-S] [-T filesystem-type] " */ \
+ "BLOCKDEV [KBYTES]"
+-#define mkfs_ext2_full_usage "\n" \
+- "\n -b BLK_SIZE Block size, bytes" \
++#define mkfs_ext2_full_usage "\n\n" \
++ " -b BLK_SIZE Block size, bytes" \
+ /* "\n -c Check device for bad blocks" */ \
+ /* "\n -E opts Set extended options" */ \
+ /* "\n -f size Fragment size in bytes" */ \
+@@ -2790,14 +2798,14 @@
+ /* "\n -v Verbose" */ \
+
+ #define mkfs_minix_trivial_usage \
+- "[-c | -l filename] [-nXX] [-iXX] BLOCKDEV [KBYTES]"
++ "[-c | -l FILE] [-nXX] [-iXX] BLOCKDEV [KBYTES]"
+ #define mkfs_minix_full_usage "\n\n" \
+ "Make a MINIX filesystem\n" \
+ "\nOptions:" \
+ "\n -c Check device for bad blocks" \
+ "\n -n [14|30] Maximum length of filenames" \
+ "\n -i INODES Number of inodes for the filesystem" \
+- "\n -l FILENAME Read bad blocks list from FILENAME" \
++ "\n -l FILE Read bad blocks list from FILE" \
+ "\n -v Make version 2 filesystem" \
+
+ #define mkfs_reiser_trivial_usage \
+@@ -2844,7 +2852,7 @@
+ "$ mknod -m 644 /tmp/pipe p\n"
+
+ #define mkswap_trivial_usage \
+- "[OPTIONS] BLOCKDEV" /* [SIZE_IN_KB] */
++ "[OPTIONS] BLOCKDEV [KBYTES]"
+ #define mkswap_full_usage "\n\n" \
+ "Prepare BLOCKDEV to be used as swap partition\n" \
+ "\nOptions:" \
+@@ -2871,10 +2879,10 @@
+ "-rw------- 1 andersen andersen 0 Apr 25 17:10 /tmp/temp.mWiLjM\n"
+
+ #define modprobe_trivial_usage \
+- IF_MODPROBE_SMALL("[-qfwrsv] MODULE [symbol=value...]") \
++ IF_MODPROBE_SMALL("[-qfwrsv] MODULE [symbol=value]...") \
+ IF_NOT_MODPROBE_SMALL("[-" \
+ IF_FEATURE_2_4_MODULES("k")"nqrsv" \
+- IF_FEATURE_MODPROBE_BLACKLIST("b")"] MODULE [symbol=value...]")
++ IF_FEATURE_MODPROBE_BLACKLIST("b")"] MODULE [symbol=value]...")
+ #define modprobe_full_usage "\n\n" \
+ "Options:" \
+ IF_MODPROBE_SMALL( \
+@@ -2962,7 +2970,7 @@
+ #define more_trivial_usage \
+ "[FILE]..."
+ #define more_full_usage "\n\n" \
+- "View FILE or standard input one screenful at a time"
++ "View FILE (or stdin) one screenful at a time"
+
+ #define more_example_usage \
+ "$ dmesg | more\n"
+@@ -3180,7 +3188,7 @@
+ )
+
+ #define nice_trivial_usage \
+- "[-n ADJUST] [PROG [ARGS]]"
++ "[-n ADJUST] [PROG ARGS]"
+ #define nice_full_usage "\n\n" \
+ "Run PROG with modified scheduling priority\n" \
+ "\nOptions:" \
+@@ -3212,7 +3220,7 @@
+ "nmeter '%250d%t %20c int %i bio %b mem %m forks%p'"
+
+ #define nohup_trivial_usage \
+- "PROG [ARGS]"
++ "PROG ARGS"
+ #define nohup_full_usage "\n\n" \
+ "Run PROG immune to hangups, with output to a non-tty"
+ #define nohup_example_usage \
+@@ -3251,10 +3259,10 @@
+ "[-aBbcDdeFfHhIiLlOovXx] " IF_DESKTOP("[-t TYPE] ") "[FILE]"
+ #define od_full_usage "\n\n" \
+ "Write an unambiguous representation, octal bytes by default, of FILE\n" \
+- "(or standard input) to standard output."
++ "(or stdin) to stdout"
+
+ #define openvt_trivial_usage \
+- "[-c N] [-sw] [PROG [ARGS]]"
++ "[-c N] [-sw] [PROG ARGS]"
+ #define openvt_full_usage "\n\n" \
+ "Start PROG on a new virtual terminal\n" \
+ "\nOptions:" \
+@@ -3334,11 +3342,11 @@
+
+ #if (ENABLE_FEATURE_PIDOF_SINGLE || ENABLE_FEATURE_PIDOF_OMIT)
+ #define pidof_trivial_usage \
+- "[OPTIONS] [NAME...]"
++ "[OPTIONS] [NAME]..."
+ #define USAGE_PIDOF "\n\nOptions:"
+ #else
+ #define pidof_trivial_usage \
+- "[NAME...]"
++ "[NAME]..."
+ #define USAGE_PIDOF /* none */
+ #endif
+ #define pidof_full_usage "\n\n" \
+@@ -3473,13 +3481,13 @@
+ "\n -f Force power off (don't go through init)" \
+
+ #define printenv_trivial_usage \
+- "[VARIABLE...]"
++ "[VARIABLE]..."
+ #define printenv_full_usage "\n\n" \
+- "Print all or part of environment.\n" \
+- "If no environment VARIABLE specified, print them all."
++ "Print environment VARIABLEs.\n" \
++ "If no VARIABLE specified, print all."
+
+ #define printf_trivial_usage \
+- "FORMAT [ARGUMENT...]"
++ "FORMAT [ARGUMENT]..."
+ #define printf_full_usage "\n\n" \
+ "Format and print ARGUMENT(s) according to FORMAT,\n" \
+ "where FORMAT controls the output exactly as in C printf"
+@@ -3610,9 +3618,9 @@
+ "\n -n Disable byte order auto-detection" \
+
+ #define realpath_trivial_usage \
+- "pathname..."
++ "FILE..."
+ #define realpath_full_usage "\n\n" \
+- "Return the absolute pathnames of given argument"
++ "Return the absolute pathnames of given FILE"
+
+ #define reboot_trivial_usage \
+ "[-d DELAY] [-n] [-f]"
+@@ -3628,11 +3636,11 @@
+ #define reformime_full_usage "\n\n" \
+ "Parse MIME-encoded message\n" \
+ "\nOptions:" \
+- "\n -x prefix Extract content of MIME sections to files" \
+- "\n -X prog [args] Filter content of MIME sections through prog." \
++ "\n -x PREFIX Extract content of MIME sections to files" \
++ "\n -X PROG ARGS Filter content of MIME sections through PROG" \
+ "\n Must be the last option" \
+ "\n" \
+- "\nOther options are silently ignored." \
++ "\nOther options are silently ignored" \
+
+ #define renice_trivial_usage \
+ "{{-n INCREMENT} | PRIORITY} [[-p | -g | -u] ID...]"
+@@ -3725,7 +3733,7 @@
+ "\n -A inet" IF_FEATURE_IPV6("{6}") " Select address family" \
+
+ #define rpm_trivial_usage \
+- "-i -q[ildc]p package.rpm"
++ "-i -q[ildc]p PACKAGE.rpm"
+ #define rpm_full_usage "\n\n" \
+ "Manipulate RPM packages\n" \
+ "\nOptions:" \
+@@ -3766,8 +3774,8 @@
+ )
+
+ #define runcon_trivial_usage \
+- "[-c] [-u USER] [-r ROLE] [-t TYPE] [-l RANGE] PROG [ARGS]\n" \
+- " runcon CONTEXT PROG [ARGS]"
++ "[-c] [-u USER] [-r ROLE] [-t TYPE] [-l RANGE] PROG ARGS\n" \
++ " runcon CONTEXT PROG ARGS"
+ #define runcon_full_usage "\n\n" \
+ "Run PROG in a different security context\n" \
+ "\n CONTEXT Complete security context\n" \
+@@ -3813,23 +3821,23 @@
+ "+ shutdown -h +4m"
+
+ #define runlevel_trivial_usage \
+- "[utmp]"
++ "[FILE]"
+ #define runlevel_full_usage "\n\n" \
+ "Find the current and previous system runlevel\n" \
+ "\n" \
+- "If no utmp file exists or if no runlevel record can be found,\n" \
++ "If no utmp FILE exists or if no runlevel record can be found,\n" \
+ "print \"unknown\""
+ #define runlevel_example_usage \
+ "$ runlevel /var/run/utmp\n" \
+ "N 2"
+
+ #define runsv_trivial_usage \
+- "dir"
++ "DIR"
+ #define runsv_full_usage "\n\n" \
+ "Start and monitor a service and optionally an appendant log service"
+
+ #define runsvdir_trivial_usage \
+- "[-P] [-s SCRIPT] dir"
++ "[-P] [-s SCRIPT] DIR"
+ #define runsvdir_full_usage "\n\n" \
+ "Start a runsv process for each subdirectory. If it exits, restart it.\n" \
+ "\n -P Put each runsv in a new session" \
+@@ -3908,7 +3916,7 @@
+ "[-w] [-s SEP] [FIRST [INC]] LAST"
+ #define seq_full_usage "\n\n" \
+ "Print numbers from FIRST to LAST, in steps of INC.\n" \
+- "FIRST, INC default to 1\n" \
++ "FIRST, INC default to 1.\n" \
+ "\nOptions:" \
+ "\n -w Pad to last with leading zeros" \
+ "\n -s SEP String separator" \
+@@ -3949,7 +3957,7 @@
+ "\n -e DIR Exclude DIR" \
+ "\n -F Force reset of context to match file_context for customizable files" \
+ "\n -o FILE Save list of files with incorrect context" \
+- "\n -s Take a list of files from standard input (instead of command line)" \
++ "\n -s Take a list of files from stdin (instead of command line)" \
+ "\n -v Show changes in file labels, if type or role are changing" \
+ "\n -vv Show changes in file labels, if type, role, or user are changing" \
+ "\n -W Display warnings about entries that had no matching files" \
+@@ -3971,7 +3979,7 @@
+ "Set entries into the kernel's scancode-to-keycode map,\n" \
+ "allowing unusual keyboards to generate usable keycodes.\n\n" \
+ "SCANCODE may be either xx or e0xx (hexadecimal),\n" \
+- "and KEYCODE is given in decimal" \
++ "and KEYCODE is given in decimal." \
+
+ #define setkeycodes_example_usage \
+ "$ setkeycodes e030 127\n"
+@@ -3988,7 +3996,7 @@
+ "Change boolean setting"
+
+ #define setsid_trivial_usage \
+- "PROG [ARG...]"
++ "PROG ARGS"
+ #define setsid_full_usage "\n\n" \
+ "Run PROG in a new session. PROG will have no controlling terminal\n" \
+ "and will not be affected by keyboard signals (Ctrl-C etc).\n" \
+@@ -4103,7 +4111,7 @@
+ "$ cat TODO | split -a 2 -l 2 TODO_\n"
+
+ #define start_stop_daemon_trivial_usage \
+- "[OPTIONS] [-S|-K] ... [-- arguments...]"
++ "[OPTIONS] [-S|-K] ... [-- ARGS...]"
+ #define start_stop_daemon_full_usage "\n\n" \
+ "Search for matching processes, and then\n" \
+ "-K: stop all matching processes.\n" \
+@@ -4256,7 +4264,7 @@
+ "\n -s SH Shell to use instead of default shell" \
+
+ #define sulogin_trivial_usage \
+- "[OPTIONS] [TTY]"
++ "[-t N] [TTY]"
+ #define sulogin_full_usage "\n\n" \
+ "Single user login\n" \
+ "\nOptions:" \
+@@ -4271,7 +4279,7 @@
+ "\n -s Use System V sum algorithm (512byte blocks)" \
+
+ #define sv_trivial_usage \
+- "[-v] [-w SEC] command service..."
++ "[-v] [-w SEC] CMD SERVICE_DIR..."
+ #define sv_full_usage "\n\n" \
+ "Control services monitored by runsv supervisor.\n" \
+ "Commands (only first character is enough):\n" \
+@@ -4289,7 +4297,7 @@
+ #define svlogd_trivial_usage \
+ "[-ttv] [-r c] [-R abc] [-l len] [-b buflen] dir..."
+ #define svlogd_full_usage "\n\n" \
+- "Continuously read log data from standard input, optionally\n" \
++ "Continuously read log data from stdin, optionally\n" \
+ "filter log messages, and write the data to one or more automatically\n" \
+ "rotated logs" \
+
+@@ -4326,7 +4334,7 @@
+
+ #define fsync_trivial_usage \
+ "[OPTIONS] FILE..."
+-#define fsync_full_usage \
++#define fsync_full_usage "\n\n" \
+ "Write files' buffered blocks to disk\n" \
+ "\nOptions:" \
+ "\n -d Avoid syncing metadata"
+@@ -4354,11 +4362,11 @@
+ "[OPTIONS]"
+ #define syslogd_full_usage "\n\n" \
+ "System logging utility.\n" \
+- "Note that this version of syslogd ignores /etc/syslog.conf.\n" \
++ "This version of syslogd ignores /etc/syslog.conf\n" \
+ "\nOptions:" \
+ "\n -n Run in foreground" \
+ "\n -O FILE Log to given file (default:/var/log/messages)" \
+- "\n -l n Set local log level" \
++ "\n -l N Set local log level" \
+ "\n -S Smaller logging output" \
+ IF_FEATURE_ROTATE_LOGFILE( \
+ "\n -s SIZE Max size (KB) before rotate (default:200KB, 0=off)" \
+@@ -4385,7 +4393,7 @@
+ #define tail_trivial_usage \
+ "[OPTIONS] [FILE]..."
+ #define tail_full_usage "\n\n" \
+- "Print last 10 lines of each FILE (or standard input) to standard output.\n" \
++ "Print last 10 lines of each FILE (or stdin) to stdout.\n" \
+ "With more than one FILE, precede each with a header giving the file name.\n" \
+ "\nOptions:" \
+ IF_FEATURE_FANCY_TAIL( \
+@@ -4454,7 +4462,7 @@
+ "$ tar -cf /tmp/tarball.tar /usr/local\n"
+
+ #define taskset_trivial_usage \
+- "[-p] [MASK] [PID | PROG [ARGS]]"
++ "[-p] [MASK] [PID | PROG ARGS]"
+ #define taskset_full_usage "\n\n" \
+ "Set or get CPU affinity\n" \
+ "\nOptions:" \
+@@ -4474,7 +4482,7 @@
+ #define tee_trivial_usage \
+ "[OPTIONS] [FILE]..."
+ #define tee_full_usage "\n\n" \
+- "Copy standard input to each FILE, and also to standard output\n" \
++ "Copy stdin to each FILE, and also to stdout\n" \
+ "\nOptions:" \
+ "\n -a Append to the given FILEs, don't overwrite" \
+ "\n -i Ignore interrupt signals (SIGINT)" \
+@@ -4514,9 +4522,9 @@
+ "\n -p PORT Port to listen on" \
+ "\n -b ADDR[:PORT] Address to bind to" \
+ "\n -F Run in foreground" \
+- "\n -i Run as inetd service" \
++ "\n -i Inetd mode" \
+ IF_FEATURE_TELNETD_INETD_WAIT( \
+- "\n -w SEC Run as inetd service in wait mode, linger time SEC" \
++ "\n -w SEC Inetd 'wait' mode, linger time SEC" \
+ "\n -S Log to syslog (implied by -i or without -F and -w)" \
+ ) \
+ )
+@@ -4568,11 +4576,11 @@
+ /* with not-implemented options: */
+ /* "[-hpEvv] [-c N] [-C N[:MSG]] [-b N] [-u USER] [-l NAME] [-i DIR|-x CDB] [-t SEC] IP PORT PROG" */
+ #define tcpsvd_full_usage "\n\n" \
+- "Create TCP socket, bind to IP:PORT and listen\n" \
++ "Create TCP socket, bind to IP:PORT and listen\n" \
+ "for incoming connection. Run PROG for each connection.\n" \
+ "\n IP IP to listen on. '0' = all" \
+ "\n PORT Port to listen on" \
+- "\n PROG [ARGS] Program to run" \
++ "\n PROG ARGS Program to run" \
+ "\n -l NAME Local hostname (else looks up local hostname in DNS)" \
+ "\n -u USER[:GRP] Change to user/group after bind" \
+ "\n -c N Handle up to N connections simultaneously" \
+@@ -4592,7 +4600,7 @@
+ "redirecting all further packets with same peer ip:port to it.\n" \
+ "\n IP IP to listen on. '0' = all" \
+ "\n PORT Port to listen on" \
+- "\n PROG [ARGS] Program to run" \
++ "\n PROG ARGS Program to run" \
+ "\n -l NAME Local hostname (else looks up local hostname in DNS)" \
+ "\n -u USER[:GRP] Change to user/group after bind" \
+ "\n -c N Handle up to N connections simultaneously" \
+@@ -4633,14 +4641,14 @@
+ "\n -u Access files as USER" \
+
+ #define time_trivial_usage \
+- "[OPTIONS] PROG [ARGS]"
++ "[OPTIONS] PROG ARGS"
+ #define time_full_usage "\n\n" \
+- "Run PROG. When it finishes, its resource usage is displayed.\n" \
++ "Run PROG, display resource usage when it exits\n" \
+ "\nOptions:" \
+ "\n -v Verbose" \
+
+ #define timeout_trivial_usage \
+- "[-t SECS] [-s SIG] PROG [ARGS]"
++ "[-t SECS] [-s SIG] PROG ARGS"
+ #define timeout_full_usage "\n\n" \
+ "Runs PROG. Sends SIG to it if it is not gone in SECS seconds.\n" \
+ "Defaults: SECS: 10, SIG: TERM." \
+@@ -4650,7 +4658,8 @@
+ #define top_full_usage "\n\n" \
+ "Provide a view of process activity in real time.\n" \
+ "Read the status of all processes from /proc each SECONDS\n" \
+- "and show the status for however many processes will fit on the screen." \
++ "and display a screenful of them." \
++//TODO: add options and keyboard commands
+
+ #define touch_trivial_usage \
+ "[-c] [-d DATE] FILE [FILE]..."
+@@ -4670,8 +4679,7 @@
+ #define tr_trivial_usage \
+ "[-cds] STRING1 [STRING2]"
+ #define tr_full_usage "\n\n" \
+- "Translate, squeeze, and/or delete characters from\n" \
+- "standard input, writing to standard output\n" \
++ "Translate, squeeze, or delete characters from stdin, writing to stdout\n" \
+ "\nOptions:" \
+ "\n -c Take complement of STRING1" \
+ "\n -d Delete input characters coded STRING1" \
+@@ -4693,7 +4701,7 @@
+ ) \
+ "\n -F Set the don't fragment bit" \
+ "\n -I Use ICMP ECHO instead of UDP datagrams" \
+- "\n -l Display the ttl value of the returned packet" \
++ "\n -l Display the TTL value of the returned packet" \
+ "\n -d Set SO_DEBUG options to socket" \
+ "\n -n Print numeric addresses" \
+ "\n -r Bypass routing tables, send directly to HOST" \
+@@ -4701,7 +4709,7 @@
+ "\n -m Max time-to-live (max number of hops)" \
+ "\n -p Base UDP port number used in probes" \
+ "\n (default 33434)" \
+- "\n -q Number of probes per 'ttl' (default 3)" \
++ "\n -q Number of probes per TTL (default 3)" \
+ "\n -s IP address to use as the source address" \
+ "\n -t Type-of-service in probe packets (default 0)" \
+ "\n -w Time in seconds to wait for a response (default 3)" \
+@@ -4721,7 +4729,7 @@
+ "\n -m Max time-to-live (max number of hops)" \
+ "\n -p Base UDP port number used in probes" \
+ "\n (default is 33434)" \
+- "\n -q Number of probes per 'ttl' (default 3)" \
++ "\n -q Number of probes per TTL (default 3)" \
+ "\n -s IP address to use as the source address" \
+ "\n -t Type-of-service in probe packets (default 0)" \
+ "\n -w Time in seconds to wait for a response (default 3)" \
+@@ -4738,7 +4746,7 @@
+ #define tty_trivial_usage \
+ ""
+ #define tty_full_usage "\n\n" \
+- "Print file name of standard input's terminal" \
++ "Print file name of stdin's terminal" \
+ IF_INCLUDE_SUSv2( "\n" \
+ "\nOptions:" \
+ "\n -s Print nothing, only return exit status" \
+@@ -4750,7 +4758,7 @@
+ #define ttysize_trivial_usage \
+ "[w] [h]"
+ #define ttysize_full_usage "\n\n" \
+- "Print dimension(s) of standard input's terminal, on error return 80x25"
++ "Print dimension(s) of stdin's terminal, on error return 80x25"
+
+ #define tunctl_trivial_usage \
+ "[-f device] ([-t name] | -d name)" IF_FEATURE_TUNCTL_UG(" [-u owner] [-g group] [-b]")
+@@ -4894,7 +4902,7 @@
+ "Linux debian 2.4.23 #2 Tue Dec 23 17:09:10 MST 2003 i686 GNU/Linux\n"
+
+ #define uncompress_trivial_usage \
+- "[-c] [-f] [FILE...]"
++ "[-c] [-f] [FILE]..."
+ #define uncompress_full_usage "\n\n" \
+ "Uncompress .Z file[s]\n" \
+ "\nOptions:" \
+@@ -4904,7 +4912,7 @@
+ #define unexpand_trivial_usage \
+ "[-f][-a][-t N] [FILE|-]"
+ #define unexpand_full_usage "\n\n" \
+- "Convert spaces to tabs, writing to standard output\n" \
++ "Convert spaces to tabs, writing to stdout\n" \
+ "\nOptions:" \
+ IF_FEATURE_UNEXPAND_LONG_OPTIONS( \
+ "\n -a,--all Convert all blanks" \
+@@ -5029,13 +5037,13 @@
+ #define wall_trivial_usage \
+ "[FILE]"
+ #define wall_full_usage "\n\n" \
+- "Write content of FILE or standard-input to all logged-in users"
++ "Write content of FILE or stdin to all logged-in users"
+ #define wall_sample_usage \
+ "echo foo | wall\n" \
+ "wall ./mymessage"
+
+ #define watch_trivial_usage \
+- "[-n seconds] [-t] PROG [ARGS]"
++ "[-n SEC] [-t] PROG ARGS"
+ #define watch_full_usage "\n\n" \
+ "Run PROG periodically\n" \
+ "\nOptions:" \
+@@ -5062,8 +5070,8 @@
+ #define wc_trivial_usage \
+ "[OPTIONS] [FILE]..."
+ #define wc_full_usage "\n\n" \
+- "Print line, word, and byte counts for each FILE, and a total line if\n" \
+- "more than one FILE is specified. With no FILE, read standard input.\n" \
++ "Print line, word, and byte counts for each FILE (or stdin),\n" \
++ "and a total line if more than one FILE is specified\n" \
+ "\nOptions:" \
+ "\n -c Print the byte counts" \
+ "\n -l Print the newline counts" \
+@@ -5078,7 +5086,7 @@
+ IF_FEATURE_WGET_LONG_OPTIONS( \
+ "[-c|--continue] [-s|--spider] [-q|--quiet] [-O|--output-document file]\n" \
+ " [--header 'header: value'] [-Y|--proxy on/off] [-P DIR]\n" \
+- " [-U|--user-agent agent] url" \
++ " [--no-check-certificate] [-U|--user-agent agent] url" \
+ ) \
+ IF_NOT_FEATURE_WGET_LONG_OPTIONS( \
+ "[-csq] [-O file] [-Y on/off] [-P DIR] [-U agent] url" \
+@@ -5115,9 +5123,9 @@
+ "Print the user name associated with the current effective user id"
+
+ #define xargs_trivial_usage \
+- "[OPTIONS] [PROG [ARGS]]"
++ "[OPTIONS] [PROG ARGS]"
+ #define xargs_full_usage "\n\n" \
+- "Run PROG on every item given by standard input\n" \
++ "Run PROG on every item given by stdin\n" \
+ "\nOptions:" \
+ IF_FEATURE_XARGS_SUPPORT_CONFIRMATION( \
+ "\n -p Ask user whether to run each command") \
diff --git a/main/busybox/busybox-1.16.0-wget.patch b/main/busybox/busybox-1.16.0-wget.patch
new file mode 100644
index 00000000..4750a005
--- /dev/null
+++ b/main/busybox/busybox-1.16.0-wget.patch
@@ -0,0 +1,20 @@
+diff -urpN busybox-1.16.0/networking/wget.c busybox-1.16.0-wget/networking/wget.c
+--- busybox-1.16.0/networking/wget.c 2010-01-25 01:59:38.000000000 +0100
++++ busybox-1.16.0-wget/networking/wget.c 2010-02-21 01:53:53.000000000 +0100
+@@ -546,6 +546,8 @@ int wget_main(int argc UNUSED_PARAM, cha
+ "passive-ftp\0" No_argument "\xff"
+ "header\0" Required_argument "\xfe"
+ "post-data\0" Required_argument "\xfd"
++ /* Ignored (we don't do ssl) */
++ "no-check-certificate\0" No_argument "\xfc"
+ ;
+ #endif
+
+@@ -590,6 +592,7 @@ int wget_main(int argc UNUSED_PARAM, cha
+ if (use_proxy) {
+ proxy = getenv(target.is_ftp ? "ftp_proxy" : "http_proxy");
+ if (proxy && proxy[0]) {
++ server.user = NULL;
+ parse_url(proxy, &server);
+ } else {
+ use_proxy = 0;
diff --git a/main/busybox/wget-proxy-user.patch b/main/busybox/wget-proxy-user.patch
deleted file mode 100644
index 1d068095..00000000
--- a/main/busybox/wget-proxy-user.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/networking/wget.c b/networking/wget.c
-index 9d813dc..5977024 100644
---- a/networking/wget.c
-+++ b/networking/wget.c
-@@ -590,6 +590,7 @@ int wget_main(int argc UNUSED_PARAM, char **argv)
- if (use_proxy) {
- proxy = getenv(target.is_ftp ? "ftp_proxy" : "http_proxy");
- if (proxy && proxy[0]) {
-+ server.user = NULL;
- parse_url(proxy, &server);
- } else {
- use_proxy = 0;