From 6b306ba7b836261b2abcee6977ff27f909338282 Mon Sep 17 00:00:00 2001
From: Florian Fainelli <florian@openwrt.org>
Date: Mon, 7 Dec 2009 16:56:04 +0000
Subject: [PATCH] update busybox to 1.15.2 (#5926)

SVN-Revision: 18684
---
 package/busybox/Makefile                      |  6 +-
 package/busybox/config/Config.in              | 36 ++++++----
 package/busybox/config/archival/Config.in     | 31 ++++++---
 .../busybox/config/console-tools/Config.in    |  2 +-
 package/busybox/config/coreutils/Config.in    | 26 +++++---
 package/busybox/config/debianutils/Config.in  |  4 +-
 package/busybox/config/findutils/Config.in    | 65 +++++++++----------
 package/busybox/config/init/Config.in         | 20 ++++++
 package/busybox/config/libbb/Config.in        | 25 ++++++-
 package/busybox/config/loginutils/Config.in   | 25 ++++++-
 package/busybox/config/miscutils/Config.in    | 42 ++++++++++++
 package/busybox/config/modutils/Config.in     |  6 +-
 package/busybox/config/networking/Config.in   | 46 ++++++-------
 .../busybox/config/networking/udhcp/Config.in | 13 ++--
 package/busybox/config/procps/Config.in       | 13 +++-
 package/busybox/config/selinux/Config.in      |  4 +-
 package/busybox/config/shell/Config.in        | 34 +++++++---
 package/busybox/config/util-linux/Config.in   | 25 +++++--
 package/busybox/patches/000-autoconf.patch    | 12 ++--
 .../busybox/patches/003-brctl_show_fix.patch  | 12 ++--
 .../busybox/patches/110-wget_getopt_fix.patch |  2 +-
 .../busybox/patches/240-udhcpc_retries.patch  | 14 ++--
 .../241-udhcpc-oversized_packets.patch        | 46 ++++++++-----
 package/busybox/patches/242-udhcpc_msgs.patch |  2 +-
 .../patches/243-udhcpc_changed_ifindex.patch  |  4 +-
 .../patches/244-udhcpc_cidrroute.patch        | 18 -----
 .../busybox/patches/250-ash_export-n.patch    |  4 +-
 package/busybox/patches/300-netmsg.patch      | 24 +++----
 package/busybox/patches/340-lock_util.patch   | 24 +++----
 package/busybox/patches/350-httpd_redir.patch | 32 +++++----
 .../busybox/patches/430-uniq_memleak.patch    |  2 +-
 .../busybox/patches/470-insmod_search.patch   |  2 +-
 package/busybox/patches/480-mount_union.patch |  6 +-
 .../busybox/patches/524-udhcpc_renew.patch    |  2 +-
 .../busybox/patches/902-telnetd_intr.patch    |  4 +-
 35 files changed, 399 insertions(+), 234 deletions(-)

diff --git a/package/busybox/Makefile b/package/busybox/Makefile
index 508c3e99ad..fa97ab1bb1 100644
--- a/package/busybox/Makefile
+++ b/package/busybox/Makefile
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=busybox
-PKG_VERSION:=1.14.4
-PKG_RELEASE:=2
+PKG_VERSION:=1.15.2
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=http://www.busybox.net/downloads \
 		http://distfiles.gentoo.org/distfiles/
-PKG_MD5SUM:=ad6d0b271e60783a3c767c4ccbc7f98e
+PKG_MD5SUM:=d5653e5b74b17dbb1eeecda8b8f22c0a
 
 include $(INCLUDE_DIR)/package.mk
 
diff --git a/package/busybox/config/Config.in b/package/busybox/config/Config.in
index cf656998cf..3beb0d12a0 100644
--- a/package/busybox/config/Config.in
+++ b/package/busybox/config/Config.in
@@ -29,18 +29,6 @@ config BUSYBOX_CONFIG_EXTRA_COMPAT
 	  some GNU extensions in libc. You probably only need this option
 	  if you plan to run busybox on desktop.
 
-config BUSYBOX_CONFIG_FEATURE_ASSUME_UNICODE
-	bool "Assume that 1:1 char/glyph correspondence is not true"
-	default n
-	help
-	  This makes various applets aware that one byte is not
-	  one character on screen.
-
-	  Busybox aims to eventually work correctly with Unicode displays.
-	  Any older encodings are not guaranteed to work.
-	  Probably by the time when busybox will be fully Unicode-clean,
-	  other encodings will be mainly of historic interest.
-
 choice
 	prompt "Buffer allocation policy"
 	default BUSYBOX_CONFIG_FEATURE_BUFFERS_GO_ON_STACK
@@ -113,7 +101,29 @@ config BUSYBOX_CONFIG_LOCALE_SUPPORT
 	  Enable this if your system has locale support and you would like
 	  busybox to support locale settings.
 
-config BUSYBOX_CONFIG_GETOPT_LONG
+config BUSYBOX_CONFIG_FEATURE_ASSUME_UNICODE
+	bool "Support Unicode"
+	default n
+	help
+	  This makes various applets aware that one byte is not
+	  one character on screen.
+
+	  Busybox aims to eventually work correctly with Unicode displays.
+	  Any older encodings are not guaranteed to work.
+	  Probably by the time when busybox will be fully Unicode-clean,
+	  other encodings will be mainly of historic interest.
+
+config BUSYBOX_CONFIG_FEATURE_CHECK_UNICODE_IN_ENV
+	bool "Check $LANG environment variable"
+	default n
+	depends on BUSYBOX_CONFIG_FEATURE_ASSUME_UNICODE && !BUSYBOX_CONFIG_LOCALE_SUPPORT
+	help
+	  With this option on, Unicode support is activated
+	  only if LANG variable has the value of the form "xxxx.utf8"
+
+	  Otherwise, Unicode support will be always enabled and active.
+
+config BUSYBOX_CONFIG_LONG_OPTS
 	bool "Support for --long-options"
 	default y
 	help
diff --git a/package/busybox/config/archival/Config.in b/package/busybox/config/archival/Config.in
index 81534e8402..5103be4848 100644
--- a/package/busybox/config/archival/Config.in
+++ b/package/busybox/config/archival/Config.in
@@ -53,12 +53,12 @@ config BUSYBOX_CONFIG_AR
 	  probably say N here.
 
 config BUSYBOX_CONFIG_FEATURE_AR_LONG_FILENAMES
-	bool "Support for long filenames (not need for debs)"
+	bool "Support for long filenames (not needed for debs)"
 	default n
 	depends on BUSYBOX_CONFIG_AR
 	help
-	  By default the ar format can only store the first 15 characters of
-	  the filename, this option removes that limitation.
+	  By default the ar format can only store the first 15 characters
+	  of the filename, this option removes that limitation.
 	  It supports the GNU ar long filename method which moves multiple long
 	  filenames into a the data section of a new ar entry.
 
@@ -165,6 +165,21 @@ config BUSYBOX_CONFIG_GZIP
 	  gzip is used to compress files.
 	  It's probably the most widely used UNIX compression program.
 
+config BUSYBOX_CONFIG_LZOP
+	bool "lzop"
+	default n
+	help
+	  Lzop compression/decompresion.
+
+config BUSYBOX_CONFIG_LZOP_COMPR_HIGH
+	bool "lzop complession levels 7,8,9 (not very useful)"
+	default n
+	depends on BUSYBOX_CONFIG_LZOP
+	help
+	  High levels (7,8,9) of lzop compression. These levels
+	  are actually slower than gzip at equivalent compression ratios
+	  and take up 3.2K of code.
+
 config BUSYBOX_CONFIG_RPM2CPIO
 	bool "rpm2cpio"
 	default n
@@ -196,11 +211,11 @@ config BUSYBOX_CONFIG_FEATURE_TAR_CREATE
 	  tar archives using the `-c' option.
 
 config BUSYBOX_CONFIG_FEATURE_TAR_AUTODETECT
-	bool "Autodetect gz/bz2 compressed tarballs"
+	bool "Autodetect compressed tarballs"
 	default n
 	depends on BUSYBOX_CONFIG_FEATURE_SEAMLESS_Z || BUSYBOX_CONFIG_FEATURE_SEAMLESS_GZ || BUSYBOX_CONFIG_FEATURE_SEAMLESS_BZ2 || BUSYBOX_CONFIG_FEATURE_SEAMLESS_LZMA
 	help
-	  With this option tar can automatically detect gzip/bzip2 compressed
+	  With this option tar can automatically detect compressed
 	  tarballs. Currently it works only on files (not pipes etc).
 
 config BUSYBOX_CONFIG_FEATURE_TAR_FROM
@@ -241,7 +256,7 @@ config BUSYBOX_CONFIG_FEATURE_TAR_GNU_EXTENSIONS
 config BUSYBOX_CONFIG_FEATURE_TAR_LONG_OPTIONS
 	bool "Enable long options"
 	default n
-	depends on BUSYBOX_CONFIG_TAR && BUSYBOX_CONFIG_GETOPT_LONG
+	depends on BUSYBOX_CONFIG_TAR && BUSYBOX_CONFIG_LONG_OPTS
 	help
 	  Enable use of long options, increases size by about 400 Bytes
 
@@ -283,8 +298,8 @@ config BUSYBOX_CONFIG_FEATURE_LZMA_FAST
 	default n
 	depends on BUSYBOX_CONFIG_UNLZMA
 	help
-	  This option reduces decompression time by about 33% at the cost of
-	  a 2K bigger binary.
+	  This option reduces decompression time by about 25% at the cost of
+	  a 1K bigger binary.
 
 config BUSYBOX_CONFIG_UNZIP
 	bool "unzip"
diff --git a/package/busybox/config/console-tools/Config.in b/package/busybox/config/console-tools/Config.in
index ffc96d1b6c..229cf45c5a 100644
--- a/package/busybox/config/console-tools/Config.in
+++ b/package/busybox/config/console-tools/Config.in
@@ -91,7 +91,7 @@ config BUSYBOX_CONFIG_SETCONSOLE
 config BUSYBOX_CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS
 	bool "Enable long options"
 	default n
-	depends on BUSYBOX_CONFIG_SETCONSOLE && BUSYBOX_CONFIG_GETOPT_LONG
+	depends on BUSYBOX_CONFIG_SETCONSOLE && BUSYBOX_CONFIG_LONG_OPTS
 	help
 	  Support long options for the setconsole applet.
 
diff --git a/package/busybox/config/coreutils/Config.in b/package/busybox/config/coreutils/Config.in
index 4b106cf42e..06e7874e2e 100644
--- a/package/busybox/config/coreutils/Config.in
+++ b/package/busybox/config/coreutils/Config.in
@@ -204,7 +204,7 @@ config BUSYBOX_CONFIG_ENV
 config BUSYBOX_CONFIG_FEATURE_ENV_LONG_OPTIONS
 	bool "Enable long options"
 	default n
-	depends on BUSYBOX_CONFIG_ENV && BUSYBOX_CONFIG_GETOPT_LONG
+	depends on BUSYBOX_CONFIG_ENV && BUSYBOX_CONFIG_LONG_OPTS
 	help
 	  Support long options for the env applet.
 
@@ -217,7 +217,7 @@ config BUSYBOX_CONFIG_EXPAND
 config BUSYBOX_CONFIG_FEATURE_EXPAND_LONG_OPTIONS
 	bool "Enable long options"
 	default n
-	depends on BUSYBOX_CONFIG_EXPAND && BUSYBOX_CONFIG_GETOPT_LONG
+	depends on BUSYBOX_CONFIG_EXPAND && BUSYBOX_CONFIG_LONG_OPTS
 	help
 	  Support long options for the expand applet.
 
@@ -249,6 +249,12 @@ config BUSYBOX_CONFIG_FOLD
 	help
 	  Wrap text to fit a specific width.
 
+config BUSYBOX_CONFIG_FSYNC
+	bool "fsync"
+	default n
+	help
+	  fsync is used to flush file-related cached blocks to disk.
+
 config BUSYBOX_CONFIG_HEAD
 	bool "head"
 	default y
@@ -285,7 +291,7 @@ config BUSYBOX_CONFIG_INSTALL
 config BUSYBOX_CONFIG_FEATURE_INSTALL_LONG_OPTIONS
 	bool "Enable long options"
 	default n
-	depends on BUSYBOX_CONFIG_INSTALL && BUSYBOX_CONFIG_GETOPT_LONG
+	depends on BUSYBOX_CONFIG_INSTALL && BUSYBOX_CONFIG_LONG_OPTS
 	help
 	  Support long options for the install applet.
 
@@ -358,7 +364,7 @@ config BUSYBOX_CONFIG_FEATURE_LS_USERNAME
 config BUSYBOX_CONFIG_FEATURE_LS_COLOR
 	bool "Allow use of color to identify file types"
 	default y
-	depends on BUSYBOX_CONFIG_LS && BUSYBOX_CONFIG_GETOPT_LONG
+	depends on BUSYBOX_CONFIG_LS && BUSYBOX_CONFIG_LONG_OPTS
 	help
 	  This enables the --color option to ls.
 
@@ -388,7 +394,7 @@ config BUSYBOX_CONFIG_MKDIR
 config BUSYBOX_CONFIG_FEATURE_MKDIR_LONG_OPTIONS
 	bool "Enable long options"
 	default n
-	depends on BUSYBOX_CONFIG_MKDIR && BUSYBOX_CONFIG_GETOPT_LONG
+	depends on BUSYBOX_CONFIG_MKDIR && BUSYBOX_CONFIG_LONG_OPTS
 	help
 	  Support long options for the mkdir applet.
 
@@ -415,7 +421,7 @@ config BUSYBOX_CONFIG_MV
 config BUSYBOX_CONFIG_FEATURE_MV_LONG_OPTIONS
 	bool "Enable long options"
 	default n
-	depends on BUSYBOX_CONFIG_MV && BUSYBOX_CONFIG_GETOPT_LONG
+	depends on BUSYBOX_CONFIG_MV && BUSYBOX_CONFIG_LONG_OPTS
 	help
 	  Support long options for the mv applet.
 
@@ -492,7 +498,7 @@ config BUSYBOX_CONFIG_RMDIR
 config BUSYBOX_CONFIG_FEATURE_RMDIR_LONG_OPTIONS
 	bool "Enable long options"
 	default n
-	depends on BUSYBOX_CONFIG_RMDIR && BUSYBOX_CONFIG_GETOPT_LONG
+	depends on BUSYBOX_CONFIG_RMDIR && BUSYBOX_CONFIG_LONG_OPTS
 	help
 	  Support long options for the rmdir applet, including
 	  --ignore-fail-on-non-empty for compatibility with GNU rmdir.
@@ -629,7 +635,7 @@ config BUSYBOX_CONFIG_TAIL
 	  from files.
 
 config BUSYBOX_CONFIG_FEATURE_FANCY_TAIL
-	bool "Enable extra tail options (-q, -s, and -v)"
+	bool "Enable extra tail options (-q, -s, -v, and -F)"
 	default y
 	depends on BUSYBOX_CONFIG_TAIL
 	help
@@ -661,7 +667,7 @@ config BUSYBOX_CONFIG_TEST
 config BUSYBOX_CONFIG_FEATURE_TEST_64
 	bool "Extend test to 64 bit"
 	default y
-	depends on BUSYBOX_CONFIG_TEST || BUSYBOX_CONFIG_ASH_BUILTIN_TEST
+	depends on BUSYBOX_CONFIG_TEST || BUSYBOX_CONFIG_ASH_BUILTIN_TEST || BUSYBOX_CONFIG_HUSH
 	help
 	  Enable 64-bit support in test.
 
@@ -726,7 +732,7 @@ config BUSYBOX_CONFIG_UNEXPAND
 config BUSYBOX_CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS
 	bool "Enable long options"
 	default n
-	depends on BUSYBOX_CONFIG_UNEXPAND && BUSYBOX_CONFIG_GETOPT_LONG
+	depends on BUSYBOX_CONFIG_UNEXPAND && BUSYBOX_CONFIG_LONG_OPTS
 	help
 	  Support long options for the unexpand applet.
 
diff --git a/package/busybox/config/debianutils/Config.in b/package/busybox/config/debianutils/Config.in
index e5f0c26161..e61c661fc4 100644
--- a/package/busybox/config/debianutils/Config.in
+++ b/package/busybox/config/debianutils/Config.in
@@ -35,7 +35,7 @@ config BUSYBOX_CONFIG_RUN_PARTS
 config BUSYBOX_CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS
 	bool "Enable long options"
 	default n
-	depends on BUSYBOX_CONFIG_RUN_PARTS && BUSYBOX_CONFIG_GETOPT_LONG
+	depends on BUSYBOX_CONFIG_RUN_PARTS && BUSYBOX_CONFIG_LONG_OPTS
 	help
 	  Support long options for the run-parts applet.
 
@@ -69,7 +69,7 @@ config BUSYBOX_CONFIG_FEATURE_START_STOP_DAEMON_FANCY
 config BUSYBOX_CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS
 	bool "Enable long options"
 	default n
-	depends on BUSYBOX_CONFIG_START_STOP_DAEMON && BUSYBOX_CONFIG_GETOPT_LONG
+	depends on BUSYBOX_CONFIG_START_STOP_DAEMON && BUSYBOX_CONFIG_LONG_OPTS
 	help
 	  Support long options for the start-stop-daemon applet.
 
diff --git a/package/busybox/config/findutils/Config.in b/package/busybox/config/findutils/Config.in
index 991b97fac5..32a213b468 100644
--- a/package/busybox/config/findutils/Config.in
+++ b/package/busybox/config/findutils/Config.in
@@ -12,17 +12,17 @@ config BUSYBOX_CONFIG_FIND
 	  find is used to search your system to find specified files.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_PRINT0
-	bool "Enable -print0 option"
+	bool "Enable -print0: NUL-terminated output"
 	default y
 	depends on BUSYBOX_CONFIG_FIND
 	help
-	  Causes output names to be separated by a null character
+	  Causes output names to be separated by a NUL character
 	  rather than a newline. This allows names that contain
 	  newlines and other whitespace to be more easily
 	  interpreted by other programs.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_MTIME
-	bool "Enable modified time matching (-mtime option)"
+	bool "Enable -mtime: modified time matching"
 	default n
 	depends on BUSYBOX_CONFIG_FIND
 	help
@@ -30,7 +30,7 @@ config BUSYBOX_CONFIG_FEATURE_FIND_MTIME
 	  files, in days.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_MMIN
-	bool "Enable modified time matching (-mmin option)"
+	bool "Enable -mmin: modified time matching by minutes"
 	default n
 	depends on BUSYBOX_CONFIG_FIND
 	help
@@ -38,14 +38,14 @@ config BUSYBOX_CONFIG_FEATURE_FIND_MMIN
 	  files, in minutes.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_PERM
-	bool "Enable permissions matching (-perm option)"
+	bool "Enable -perm: permissions matching"
 	default y
 	depends on BUSYBOX_CONFIG_FIND
 	help
 	  Enable searching based on file permissions.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_TYPE
-	bool "Enable filetype matching (-type option)"
+	bool "Enable -type: file type matching (file/dir/link/...)"
 	default y
 	depends on BUSYBOX_CONFIG_FIND
 	help
@@ -53,21 +53,21 @@ config BUSYBOX_CONFIG_FEATURE_FIND_TYPE
 	  directory, socket, device, etc.).
 
 config BUSYBOX_CONFIG_FEATURE_FIND_XDEV
-	bool "Enable 'stay in filesystem' option (-xdev)"
+	bool "Enable -xdev: 'stay in filesystem'"
 	default y
 	depends on BUSYBOX_CONFIG_FIND
 	help
 	  This option allows find to restrict searches to a single filesystem.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_MAXDEPTH
-	bool "Enable -maxdepth N option"
+	bool "Enable -maxdepth N"
 	default y
 	depends on BUSYBOX_CONFIG_FIND
 	help
 	  This option enables -maxdepth N option.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_NEWER
-	bool "Enable -newer option for comparing file mtimes"
+	bool "Enable -newer: compare file modification times"
 	default n
 	depends on BUSYBOX_CONFIG_FIND
 	help
@@ -75,14 +75,14 @@ config BUSYBOX_CONFIG_FEATURE_FIND_NEWER
 	  a modified time that is more recent than the specified FILE.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_INUM
-	bool "Enable inode number matching (-inum option)"
+	bool "Enable -inum: inode number matching"
 	default n
 	depends on BUSYBOX_CONFIG_FIND
 	help
 	  Support the 'find -inum' option for searching by inode number.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_EXEC
-	bool "Enable -exec option allowing execution of commands"
+	bool "Enable -exec: execute commands"
 	default y
 	depends on BUSYBOX_CONFIG_FIND
 	help
@@ -90,14 +90,14 @@ config BUSYBOX_CONFIG_FEATURE_FIND_EXEC
 	  the files matched.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_USER
-	bool "Enable username/uid matching (-user option)"
+	bool "Enable -user: username/uid matching"
 	default y
 	depends on BUSYBOX_CONFIG_FIND
 	help
 	  Support the 'find -user' option for searching by username or uid.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_GROUP
-	bool "Enable group/gid matching (-group option)"
+	bool "Enable -group: group/gid matching"
 	default y
 	depends on BUSYBOX_CONFIG_FIND
 	help
@@ -113,7 +113,7 @@ config BUSYBOX_CONFIG_FEATURE_FIND_NOT
 	  the non-POSIX notation '-not'.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_DEPTH
-	bool "Enable the -depth option"
+	bool "Enable -depth"
 	default y
 	depends on BUSYBOX_CONFIG_FIND
 	help
@@ -127,14 +127,14 @@ config BUSYBOX_CONFIG_FEATURE_FIND_PAREN
 	  Enable usage of parens '(' to specify logical order of arguments.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_SIZE
-	bool "Enable -size option allowing matching for file size"
+	bool "Enable -size: file size matching"
 	default y
 	depends on BUSYBOX_CONFIG_FIND
 	help
 	  Support the 'find -size' option for searching by file size.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_PRUNE
-	bool "Enable -prune option allowing to exclude subdirectories"
+	bool "Enable -prune: exclude subdirectories"
 	default y
 	depends on BUSYBOX_CONFIG_FIND
 	help
@@ -142,7 +142,7 @@ config BUSYBOX_CONFIG_FEATURE_FIND_PRUNE
 	  exclusion .svn and CVS directories.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_DELETE
-	bool "Enable -delete option allowing to delete files"
+	bool "Enable -delete: delete files/dirs"
 	default n
 	depends on BUSYBOX_CONFIG_FIND && BUSYBOX_CONFIG_FEATURE_FIND_DEPTH
 	help
@@ -151,21 +151,21 @@ config BUSYBOX_CONFIG_FEATURE_FIND_DELETE
 	  try to protect the user from doing stupid things. Use with care.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_PATH
-	bool "Enable -path option allowing to match pathname patterns"
+	bool "Enable -path: match pathname with shell pattern"
 	default y
 	depends on BUSYBOX_CONFIG_FIND
 	help
 	  The -path option matches whole pathname instead of just filename.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_REGEX
-	bool "Enable -regex: match pathname to regex"
+	bool "Enable -regex: match pathname with regex"
 	default y
 	depends on BUSYBOX_CONFIG_FIND
 	help
 	  The -regex option matches whole pathname against regular expression.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_CONTEXT
-	bool "Enable -context option for matching security context"
+	bool "Enable -context: security context matching"
 	default n
 	depends on BUSYBOX_CONFIG_FIND && BUSYBOX_CONFIG_SELINUX
 	help
@@ -178,7 +178,7 @@ config BUSYBOX_CONFIG_GREP
 	  grep is used to search files for a specified pattern.
 
 config BUSYBOX_CONFIG_FEATURE_GREP_EGREP_ALIAS
-	bool "Support extended regular expressions (egrep & grep -E)"
+	bool "Enable extended regular expressions (egrep & grep -E)"
 	default y
 	depends on BUSYBOX_CONFIG_GREP
 	help
@@ -193,7 +193,7 @@ config BUSYBOX_CONFIG_FEATURE_GREP_FGREP_ALIAS
 	help
 	  fgrep sees the search pattern as a normal string rather than
 	  regular expressions.
-	  grep -F is always builtin, this just creates the fgrep alias.
+	  grep -F always works, this just creates the fgrep alias.
 
 config BUSYBOX_CONFIG_FEATURE_GREP_CONTEXT
 	bool "Enable before and after context flags (-A, -B and -C)"
@@ -208,40 +208,39 @@ config BUSYBOX_CONFIG_XARGS
 	bool "xargs"
 	default y
 	help
-	  xargs is used to execute a specified command on
+	  xargs is used to execute a specified command for
 	  every item from standard input.
 
 config BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION
-	bool "Enable prompt and confirmation option -p"
+	bool "Enable -p: prompt and confirmation"
 	default y
 	depends on BUSYBOX_CONFIG_XARGS
 	help
-	  Support prompt the user about whether to run each command
+	  Support -p: prompt the user whether to run each command
 	  line and read a line from the terminal.
 
 config BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_QUOTES
-	bool "Enable support single and double quotes and backslash"
+	bool "Enable single and double quotes and backslash"
 	default y
 	depends on BUSYBOX_CONFIG_XARGS
 	help
-	  Default xargs unsupport single and double quotes
-	  and backslash for can use aruments with spaces.
+	  Support quoting in the input.
 
 config BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT
-	bool "Enable support options -x"
+	bool "Enable -x: exit if -s or -n is exceeded"
 	default y
 	depends on BUSYBOX_CONFIG_XARGS
 	help
-	  Enable support exit if the size (see the -s or -n option)
+	  Support -x: exit if the command size (see the -s or -n option)
 	  is exceeded.
 
 config BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM
-	bool "Enable null terminated option -0"
+	bool "Enable -0: NUL-terminated input"
 	default y
 	depends on BUSYBOX_CONFIG_XARGS
 	help
-	  Enable input filenames are terminated by a null character
-	  instead of by whitespace, and the quotes and backslash
+	  Support -0: input items are terminated by a NUL character
+	  instead of whitespace, and the quotes and backslash
 	  are not special.
 
 endmenu
diff --git a/package/busybox/config/init/Config.in b/package/busybox/config/init/Config.in
index 75f3298170..9498895631 100644
--- a/package/busybox/config/init/Config.in
+++ b/package/busybox/config/init/Config.in
@@ -93,6 +93,26 @@ config BUSYBOX_CONFIG_HALT
 	help
 	  Stop all processes and either halt, reboot, or power off the system.
 
+config BUSYBOX_CONFIG_FEATURE_CALL_TELINIT
+	bool "Call telinit on shutdown and reboot"
+	default n
+	depends on BUSYBOX_CONFIG_HALT && !BUSYBOX_CONFIG_INIT
+	help
+	  Call an external program (normally telinit) to facilitate
+	  a switch to a proper runlevel.
+
+	  This option is only available if you selected halt and friends,
+	  but did not select init.
+
+config BUSYBOX_CONFIG_TELINIT_PATH
+	string "Path to telinit executable"
+	default "/sbin/telinit"
+	depends on BUSYBOX_CONFIG_FEATURE_CALL_TELINIT
+	help
+	  When busybox halt and friends have to call external telinit
+	  to facilitate proper shutdown, this path is to be used when
+	  locating telinit executable.
+
 config BUSYBOX_CONFIG_MESG
 	bool "mesg"
 	default y
diff --git a/package/busybox/config/libbb/Config.in b/package/busybox/config/libbb/Config.in
index e456dd8e75..8016ef0800 100644
--- a/package/busybox/config/libbb/Config.in
+++ b/package/busybox/config/libbb/Config.in
@@ -13,7 +13,7 @@ config BUSYBOX_CONFIG_PASSWORD_MINLEN
 	  Minimum allowable password length.
 
 config BUSYBOX_CONFIG_MD5_SIZE_VS_SPEED
-	int "MD5: Trade Bytes for Speed"
+	int "MD5: Trade bytes for speed (0:fast, 3:slow)"
 	default 2
 	range 0 3
 	help
@@ -102,6 +102,28 @@ config BUSYBOX_CONFIG_FEATURE_EDITING_FANCY_PROMPT
 	  Setting this option allows for prompts to use things like \w and
 	  \$ and escape codes.
 
+config BUSYBOX_CONFIG_FEATURE_EDITING_ASK_TERMINAL
+	bool "Query cursor position from terminal"
+	default n
+	depends on BUSYBOX_CONFIG_FEATURE_EDITING
+	help
+	  Allow usage of "ESC [ 6 n" sequence. Terminal answers back with
+	  current cursor position. This information is used to make line
+	  editing more robust in some cases.
+	  If you are not sure whether your terminals respond to this code
+	  correctly, or want to save on code size (about 300 bytes),
+	  then do not turn this option on.
+
+config BUSYBOX_CONFIG_FEATURE_NON_POSIX_CP
+	bool "Non-POSIX, but safer, copying to special nodes"
+	default y
+	help
+	  With this option, "cp file symlink" will delete symlink
+	  and create a regular file. This does not conform to POSIX,
+	  but prevents a symlink attack.
+	  Similarly, "cp file device" will not send file's data
+	  to the device.
+
 config BUSYBOX_CONFIG_FEATURE_VERBOSE_CP_MESSAGE
 	bool "Give more precise messages when copy fails (cp, mv etc)"
 	default n
@@ -151,4 +173,5 @@ config BUSYBOX_CONFIG_FEATURE_HWIB
 	help
 	  Support for printing infiniband addresses in
 	  network applets.
+
 endmenu
diff --git a/package/busybox/config/loginutils/Config.in b/package/busybox/config/loginutils/Config.in
index d88876cf93..4498e4e2d4 100644
--- a/package/busybox/config/loginutils/Config.in
+++ b/package/busybox/config/loginutils/Config.in
@@ -97,6 +97,13 @@ config BUSYBOX_CONFIG_ADDGROUP
 	help
 	  Utility for creating a new group account.
 
+config BUSYBOX_CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS
+	bool "Enable long options"
+	default n
+	depends on BUSYBOX_CONFIG_ADDGROUP && BUSYBOX_CONFIG_LONG_OPTS
+	help
+	  Support long options for the addgroup applet.
+
 config BUSYBOX_CONFIG_FEATURE_ADDUSER_TO_GROUP
 	bool "Support for adding users to groups"
 	default n
@@ -141,10 +148,26 @@ config BUSYBOX_CONFIG_ADDUSER
 config BUSYBOX_CONFIG_FEATURE_ADDUSER_LONG_OPTIONS
 	bool "Enable long options"
 	default n
-	depends on BUSYBOX_CONFIG_ADDUSER && BUSYBOX_CONFIG_GETOPT_LONG
+	depends on BUSYBOX_CONFIG_ADDUSER && BUSYBOX_CONFIG_LONG_OPTS
 	help
 	  Support long options for the adduser applet.
 
+config BUSYBOX_CONFIG_FIRST_SYSTEM_ID
+	int "First valid system uid or gid for adduser and addgroup"
+	depends on BUSYBOX_CONFIG_ADDUSER || BUSYBOX_CONFIG_ADDGROUP
+	range 0 64900
+	default 100
+	help
+	  First valid system uid or gid for adduser and addgroup
+
+config BUSYBOX_CONFIG_LAST_SYSTEM_ID
+	int "Last valid system uid or gid for adduser and addgroup"
+	depends on BUSYBOX_CONFIG_ADDUSER || BUSYBOX_CONFIG_ADDGROUP
+	range 0 64900
+	default 999
+	help
+	  Last valid system uid or gid for adduser and addgroup
+
 config BUSYBOX_CONFIG_DELUSER
 	bool "deluser"
 	default n
diff --git a/package/busybox/config/miscutils/Config.in b/package/busybox/config/miscutils/Config.in
index 1ddfb940a8..9dce72ebd5 100644
--- a/package/busybox/config/miscutils/Config.in
+++ b/package/busybox/config/miscutils/Config.in
@@ -19,6 +19,28 @@ config BUSYBOX_CONFIG_BBCONFIG
 	  The bbconfig applet will print the config file with which
 	  busybox was built.
 
+config BUSYBOX_CONFIG_BEEP
+	bool "beep"
+	default n
+	help
+	  The beep applets beeps in a given freq/Hz.
+
+config BUSYBOX_CONFIG_FEATURE_BEEP_FREQ
+	int "default frequency"
+	range 0 2147483647
+	default 4000
+	depends on BUSYBOX_CONFIG_BEEP
+	help
+	  Frequency for default beep.
+
+config BUSYBOX_CONFIG_FEATURE_BEEP_LENGTH_MS
+	int "default length"
+	range 0 2147483647
+	default 30
+	depends on BUSYBOX_CONFIG_BEEP
+	help
+	  Length in ms for default beep.
+
 config BUSYBOX_CONFIG_CHAT
 	bool "chat"
 	default n
@@ -250,6 +272,20 @@ config BUSYBOX_CONFIG_FBSPLASH
 	    "NN" (ASCII decimal number) - percentage to show on progress bar
 	    "exit" - well you guessed it
 
+config BUSYBOX_CONFIG_FLASH_LOCK
+	bool "flash_lock"
+	default n
+	help
+	  The flash_lock binary from mtd-utils as of git head 5ec0c10d0. This
+	  utility locks part or all of the flash device.
+
+config BUSYBOX_CONFIG_FLASH_UNLOCK
+	bool "flash_unlock"
+	default n
+	help
+	  The flash_unlock binary from mtd-utils as of git head 5ec0c10d0. This
+	  utility unlocks part or all of the flash device.
+
 config BUSYBOX_CONFIG_FLASH_ERASEALL
 	bool "flash_eraseall"
 	default n
@@ -576,6 +612,12 @@ config BUSYBOX_CONFIG_TTYSIZE
 	  error, but returns default 80x24.
 	  Usage in shell scripts: width=`ttysize w`.
 
+config BUSYBOX_CONFIG_VOLNAME
+	bool "volname"
+	default n
+	help
+	  Prints a CD-ROM volume name.
+
 config BUSYBOX_CONFIG_WATCHDOG
 	bool "watchdog"
 	default y
diff --git a/package/busybox/config/modutils/Config.in b/package/busybox/config/modutils/Config.in
index e2f880faf2..9ec54b1e92 100644
--- a/package/busybox/config/modutils/Config.in
+++ b/package/busybox/config/modutils/Config.in
@@ -90,12 +90,8 @@ config BUSYBOX_CONFIG_MODPROBE
 	  Handle the loading of modules, and their dependencies on a high
 	  level.
 
-	  Note that in the state, modprobe does not understand multiple
-	  module options from the configuration file. See option below.
-
 config BUSYBOX_CONFIG_FEATURE_MODPROBE_BLACKLIST
-	bool
-	prompt "Blacklist support"
+	bool "Blacklist support"
 	default n
 	depends on BUSYBOX_CONFIG_MODPROBE
 	help
diff --git a/package/busybox/config/networking/Config.in b/package/busybox/config/networking/Config.in
index 0bde42b14f..35dae5f593 100644
--- a/package/busybox/config/networking/Config.in
+++ b/package/busybox/config/networking/Config.in
@@ -12,6 +12,17 @@ config BUSYBOX_CONFIG_FEATURE_IPV6
 	  Enable IPv6 support in busybox.
 	  This adds IPv6 support in the networking applets.
 
+config BUSYBOX_CONFIG_FEATURE_UNIX_LOCAL
+	bool "Enable Unix domain socket support (usually not needed)"
+	default n
+	help
+	  Enable Unix domain socket support in all busybox networking
+	  applets.  Address of the form local:/path/to/unix/socket
+	  will be recognized.
+
+	  This extension is almost never used in real world usage.
+	  You most likely want to say N.
+
 config BUSYBOX_CONFIG_FEATURE_PREFER_IPV4_ADDRESS
 	bool "Prefer IPv4 addresses from DNS queries"
 	default y
@@ -121,7 +132,7 @@ config BUSYBOX_CONFIG_FTPPUT
 config BUSYBOX_CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS
 	bool "Enable long options in ftpget/ftpput"
 	default n
-	depends on BUSYBOX_CONFIG_GETOPT_LONG && (BUSYBOX_CONFIG_FTPGET || BUSYBOX_CONFIG_FTPPUT)
+	depends on BUSYBOX_CONFIG_LONG_OPTS && (BUSYBOX_CONFIG_FTPGET || BUSYBOX_CONFIG_FTPPUT)
 	help
 	  Support long options for the ftpget/ftpput applet.
 
@@ -154,14 +165,6 @@ config BUSYBOX_CONFIG_FEATURE_HTTPD_USE_SENDFILE
 	  When enabled, httpd will use the kernel sendfile() function
 	  instead of read/write loop.
 
-config BUSYBOX_CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP
-	bool "Support reloading of global config file on HUP signal"
-	default y
-	depends on BUSYBOX_CONFIG_HTTPD
-	help
-	  This option enables processing of SIGHUP to reload cached
-	  configuration settings.
-
 config BUSYBOX_CONFIG_FEATURE_HTTPD_SETUID
 	bool "Enable -u <user> option"
 	default n
@@ -188,14 +191,6 @@ config BUSYBOX_CONFIG_FEATURE_HTTPD_AUTH_MD5
 	  Enables basic per URL authentication from /etc/httpd.conf
 	  using md5 passwords.
 
-config BUSYBOX_CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES
-	bool "Support loading additional MIME types at run-time"
-	default y
-	depends on BUSYBOX_CONFIG_HTTPD
-	help
-	  This option enables support for additional MIME types at
-	  run-time to be specified in the configuration file.
-
 config BUSYBOX_CONFIG_FEATURE_HTTPD_CGI
 	bool "Support Common Gateway Interface (CGI)"
 	default y
@@ -312,6 +307,12 @@ config BUSYBOX_CONFIG_IFENSLAVE
 	  Userspace application to bind several interfaces
 	  to a logical interface (use with kernel bonding driver).
 
+config BUSYBOX_CONFIG_IFPLUGD
+	bool "ifplugd"
+	default n
+	help
+	  Network interface plug detection daemon.
+
 config BUSYBOX_CONFIG_IFUPDOWN
 	bool "ifupdown"
 	default n
@@ -577,7 +578,7 @@ config BUSYBOX_CONFIG_FEATURE_IPCALC_FANCY
 config BUSYBOX_CONFIG_FEATURE_IPCALC_LONG_OPTIONS
 	bool "Enable long options"
 	default n
-	depends on BUSYBOX_CONFIG_IPCALC && BUSYBOX_CONFIG_GETOPT_LONG
+	depends on BUSYBOX_CONFIG_IPCALC && BUSYBOX_CONFIG_LONG_OPTS
 	help
 	  Support long options for the ipcalc applet.
 
@@ -842,15 +843,14 @@ config BUSYBOX_CONFIG_TFTP_DEBUG
 	default n
 	depends on BUSYBOX_CONFIG_TFTP || BUSYBOX_CONFIG_TFTPD
 	help
-	  Enable debug settings for tftp. This is useful if you're running
-	  into problems with tftp as the protocol doesn't help you much when
-	  you run into problems.
+	  Make tftp[d] print debugging messages on stderr.
+	  This is useful if you are diagnosing a bug in tftp[d].
 
 config BUSYBOX_CONFIG_TRACEROUTE
 	bool "traceroute"
 	default y
 	help
-	  Utility to trace the route of IP packets
+	  Utility to trace the route of IP packets.
 
 config BUSYBOX_CONFIG_FEATURE_TRACEROUTE_VERBOSE
 	bool "Enable verbose output"
@@ -916,7 +916,7 @@ config BUSYBOX_CONFIG_FEATURE_WGET_AUTHENTICATION
 config BUSYBOX_CONFIG_FEATURE_WGET_LONG_OPTIONS
 	bool "Enable long options"
 	default y
-	depends on BUSYBOX_CONFIG_WGET && BUSYBOX_CONFIG_GETOPT_LONG
+	depends on BUSYBOX_CONFIG_WGET && BUSYBOX_CONFIG_LONG_OPTS
 	help
 	  Support long options for the wget applet.
 
diff --git a/package/busybox/config/networking/udhcp/Config.in b/package/busybox/config/networking/udhcp/Config.in
index 10e06d5e36..22156232f9 100644
--- a/package/busybox/config/networking/udhcp/Config.in
+++ b/package/busybox/config/networking/udhcp/Config.in
@@ -75,11 +75,16 @@ config BUSYBOX_CONFIG_FEATURE_UDHCP_PORT
 	  This feature is typically not needed.
 
 config BUSYBOX_CONFIG_UDHCP_DEBUG
-	bool "Compile udhcp with noisy debugging messages"
-	default n
-	depends on BUSYBOX_CONFIG_APP_UDHCPD || BUSYBOX_CONFIG_APP_UDHCPC
+	int "Maximum verbosity level for udhcp applets (0..9)"
+	default 0
+	range 0 9
+	depends on BUSYBOX_CONFIG_APP_UDHCPD || BUSYBOX_CONFIG_APP_UDHCPC || BUSYBOX_CONFIG_APP_DHCPRELAY
 	help
-	  If selected, udhcpd will output extra debugging output.
+	  Verbosity can be increased with multiple -v options.
+	  This options controls how high it can be cranked up.
+
+	  Bigger values result in bigger code. Levels above 1
+	  are very verbose and useful for debugging only.
 
 config BUSYBOX_CONFIG_FEATURE_UDHCP_RFC3397
 	bool "Support for RFC3397 domain search (experimental)"
diff --git a/package/busybox/config/procps/Config.in b/package/busybox/config/procps/Config.in
index 7343592607..bd21cb377f 100644
--- a/package/busybox/config/procps/Config.in
+++ b/package/busybox/config/procps/Config.in
@@ -91,13 +91,13 @@ config BUSYBOX_CONFIG_PS
 	  ps gives a snapshot of the current processes.
 
 config BUSYBOX_CONFIG_FEATURE_PS_WIDE
-	bool "Enable argument for wide output (-w)"
+	bool "Enable wide output option (-w)"
 	default n
 	depends on BUSYBOX_CONFIG_PS
 	help
 	  Support argument 'w' for wide output.
-	  If given once, 132 chars are printed and given more than
-	  one, the length is unlimited.
+	  If given once, 132 chars are printed, and if given more
+	  than once, the length is unlimited.
 
 config BUSYBOX_CONFIG_FEATURE_PS_TIME
 	bool "Enable time and elapsed time output"
@@ -106,6 +106,13 @@ config BUSYBOX_CONFIG_FEATURE_PS_TIME
 	help
 	  Support -o time and -o etime output specifiers.
 
+config BUSYBOX_CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS
+	bool "Enable additional ps columns"
+	default n
+	depends on BUSYBOX_CONFIG_PS && BUSYBOX_CONFIG_DESKTOP
+	help
+	  Support -o rgroup, -o ruser, -o nice output specifiers.
+
 config BUSYBOX_CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS
 	bool "Support Linux prior to 2.4.0 and non-ELF systems"
 	default n
diff --git a/package/busybox/config/selinux/Config.in b/package/busybox/config/selinux/Config.in
index b5b2d663e6..dbd960630e 100644
--- a/package/busybox/config/selinux/Config.in
+++ b/package/busybox/config/selinux/Config.in
@@ -16,7 +16,7 @@ config BUSYBOX_CONFIG_CHCON
 config BUSYBOX_CONFIG_FEATURE_CHCON_LONG_OPTIONS
 	bool "Enable long options"
 	default n
-	depends on BUSYBOX_CONFIG_CHCON && BUSYBOX_CONFIG_GETOPT_LONG
+	depends on BUSYBOX_CONFIG_CHCON && BUSYBOX_CONFIG_LONG_OPTS
 	help
 	  Support long options for the chcon applet.
 
@@ -67,7 +67,7 @@ config BUSYBOX_CONFIG_RUNCON
 config BUSYBOX_CONFIG_FEATURE_RUNCON_LONG_OPTIONS
 	bool "Enable long options"
 	default n
-	depends on BUSYBOX_CONFIG_RUNCON && BUSYBOX_CONFIG_GETOPT_LONG
+	depends on BUSYBOX_CONFIG_RUNCON && BUSYBOX_CONFIG_LONG_OPTS
 	help
 	  Support long options for the runcon applet.
 
diff --git a/package/busybox/config/shell/Config.in b/package/busybox/config/shell/Config.in
index 233c3a8f41..f3c998cd83 100644
--- a/package/busybox/config/shell/Config.in
+++ b/package/busybox/config/shell/Config.in
@@ -24,9 +24,9 @@ config BUSYBOX_CONFIG_FEATURE_SH_IS_HUSH
 ####	select LASH
 ####	bool "lash"
 
-config BUSYBOX_CONFIG_FEATURE_SH_IS_MSH
-	select BUSYBOX_CONFIG_MSH
-	bool "msh"
+####config FEATURE_SH_IS_MSH
+####	select MSH
+####	bool "msh"
 
 config BUSYBOX_CONFIG_FEATURE_SH_IS_NONE
 	bool "none"
@@ -43,9 +43,6 @@ config BUSYBOX_CONFIG_ASH
 	  shell (by Herbert Xu), which was created by porting the 'ash' shell
 	  (written by Kenneth Almquist) from NetBSD.
 
-comment "Ash Shell Options"
-	depends on BUSYBOX_CONFIG_ASH
-
 config BUSYBOX_CONFIG_ASH_BASH_COMPAT
 	bool "bash-compatible extensions"
 	default y
@@ -169,6 +166,13 @@ config BUSYBOX_CONFIG_HUSH
 	  It does not handle select, aliases, brace expansion,
 	  tilde expansion, &>file and >&file redirection of stdout+stderr.
 
+config BUSYBOX_CONFIG_HUSH_BASH_COMPAT
+	bool "bash-compatible extensions"
+	default y
+	depends on BUSYBOX_CONFIG_HUSH
+	help
+	  Enable bash-compatible extensions.
+
 config BUSYBOX_CONFIG_HUSH_HELP
 	bool "help builtin"
 	default n
@@ -232,6 +236,20 @@ config BUSYBOX_CONFIG_HUSH_FUNCTIONS
 	help
 	  Enable support for shell functions in hush. +800 bytes.
 
+config BUSYBOX_CONFIG_HUSH_LOCAL
+	bool "Support local builtin"
+	default n
+	depends on BUSYBOX_CONFIG_HUSH_FUNCTIONS
+	help
+	  Enable support for local variables in functions.
+
+config BUSYBOX_CONFIG_HUSH_EXPORT_N
+	bool "Support export '-n' option"
+	default n
+	depends on BUSYBOX_CONFIG_HUSH
+	help
+	  Enable support for export '-n' option in hush. It is a bash extension.
+
 config BUSYBOX_CONFIG_LASH
 	bool "lash (deprecated: aliased to hush)"
 	default n
@@ -242,6 +260,7 @@ config BUSYBOX_CONFIG_LASH
 config BUSYBOX_CONFIG_MSH
 	bool "msh (deprecated: please use hush)"
 	default n
+	select BUSYBOX_CONFIG_HUSH
 	help
 	  msh is deprecated and will be removed, please migrate to hush.
 	  If there is a feature msh has but hush does not, please let us know.
@@ -254,9 +273,6 @@ config BUSYBOX_CONFIG_MSH
 #	  It uses only vfork, so it can be used on uClinux systems.
 
 
-comment "Bourne Shell Options"
-	depends on BUSYBOX_CONFIG_MSH || BUSYBOX_CONFIG_LASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH
-
 config BUSYBOX_CONFIG_SH_MATH_SUPPORT
 	bool "POSIX math support"
 	default y
diff --git a/package/busybox/config/util-linux/Config.in b/package/busybox/config/util-linux/Config.in
index 526ea00cc0..9d5462b26a 100644
--- a/package/busybox/config/util-linux/Config.in
+++ b/package/busybox/config/util-linux/Config.in
@@ -250,6 +250,13 @@ config BUSYBOX_CONFIG_GETOPT
 	  written by others, this utility may be for you. Most people will
 	  wisely leave this disabled.
 
+config BUSYBOX_CONFIG_FEATURE_GETOPT_LONG
+	bool "Support option -l"
+	default n if BUSYBOX_CONFIG_LONG_OPTS
+	depends on BUSYBOX_CONFIG_GETOPT
+	help
+	  Enable support for long options (option -l).
+
 config BUSYBOX_CONFIG_HEXDUMP
 	bool "hexdump"
 	default y
@@ -286,7 +293,7 @@ config BUSYBOX_CONFIG_HWCLOCK
 config BUSYBOX_CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS
 	bool "Support long options (--hctosys,...)"
 	default n
-	depends on BUSYBOX_CONFIG_HWCLOCK && BUSYBOX_CONFIG_GETOPT_LONG
+	depends on BUSYBOX_CONFIG_HWCLOCK && BUSYBOX_CONFIG_LONG_OPTS
 	help
 	  By default, the hwclock utility only uses short options. If you
 	  are overly fond of its long options, such as --hctosys, --utc, etc)
@@ -399,15 +406,12 @@ config BUSYBOX_CONFIG_MKSWAP
 	  Once you have created swap space using 'mkswap' you need to enable
 	  the swap space using the 'swapon' utility.
 
-config BUSYBOX_CONFIG_FEATURE_MKSWAP_V0
-	bool "Version 0 support"
+config BUSYBOX_CONFIG_FEATURE_MKSWAP_UUID
+	bool "UUID support"
 	default n
 	depends on BUSYBOX_CONFIG_MKSWAP
-#	depends on MKSWAP && BUSYBOX_CONFIG_DEPRECATED
 	help
-	  Enable support for the old v0 style.
-	  If your kernel is older than 2.1.117, then v0 support is the
-	  only option.
+	  Generate swap spaces with universally unique identifiers.
 
 config BUSYBOX_CONFIG_MORE
 	bool "more"
@@ -764,6 +768,13 @@ config BUSYBOX_CONFIG_SCRIPT
 	help
 	  The script makes typescript of terminal session.
 
+config BUSYBOX_CONFIG_SCRIPTREPLAY
+	bool "scriptreplay"
+	default n
+	help
+	  This program replays a typescript, using timing information
+	  given by script -t.
+
 config BUSYBOX_CONFIG_SETARCH
 	bool "setarch"
 	default n
diff --git a/package/busybox/patches/000-autoconf.patch b/package/busybox/patches/000-autoconf.patch
index 8cb7a4cc76..d0a6f61270 100644
--- a/package/busybox/patches/000-autoconf.patch
+++ b/package/busybox/patches/000-autoconf.patch
@@ -1,18 +1,18 @@
 --- a/applets/Kbuild
 +++ b/applets/Kbuild
-@@ -18,13 +18,13 @@ HOSTCFLAGS_usage.o = -I$(srctree)/includ
+@@ -27,13 +27,13 @@ HOSTCFLAGS_usage.o = -I$(srctree_slash)i
  
  applets/applets.o: include/usage_compressed.h include/applet_tables.h
  
--applets/usage:         .config $(srctree)/applets/usage_compressed
-+applets/usage:         .config $(srctree)/applets/usage_compressed include/autoconf.h
+-applets/usage:         .config $(srctree_slash)applets/usage_compressed
++applets/usage:         .config $(srctree_slash)applets/usage_compressed include/autoconf.h
  applets/applet_tables: .config
  
  quiet_cmd_gen_usage_compressed = GEN     include/usage_compressed.h
-       cmd_gen_usage_compressed = $(srctree)/applets/usage_compressed include/usage_compressed.h applets
+       cmd_gen_usage_compressed = $(srctree_slash)applets/usage_compressed include/usage_compressed.h applets
  
--include/usage_compressed.h: applets/usage $(srctree)/applets/usage_compressed
-+include/usage_compressed.h: applets/usage $(srctree)/applets/usage_compressed include/autoconf.h
+-include/usage_compressed.h: applets/usage $(srctree_slash)applets/usage_compressed
++include/usage_compressed.h: applets/usage $(srctree_slash)applets/usage_compressed include/autoconf.h
  	$(call cmd,gen_usage_compressed)
  
  quiet_cmd_gen_applet_tables = GEN     include/applet_tables.h
diff --git a/package/busybox/patches/003-brctl_show_fix.patch b/package/busybox/patches/003-brctl_show_fix.patch
index f3fc402880..b921c7890e 100644
--- a/package/busybox/patches/003-brctl_show_fix.patch
+++ b/package/busybox/patches/003-brctl_show_fix.patch
@@ -4,23 +4,23 @@
  		"setageing\0" "setfd\0" "sethello\0" "setmaxage\0"
  		"setpathcost\0" "setportprio\0" "setbridgeprio\0"
  	)
--	USE_FEATURE_BRCTL_SHOW("showmacs\0" "show\0");
-+	USE_FEATURE_BRCTL_SHOW("show\0");
+-	IF_FEATURE_BRCTL_SHOW("showmacs\0" "show\0");
++	IF_FEATURE_BRCTL_SHOW("show\0");
  
  	enum { ARG_addbr = 0, ARG_delbr, ARG_addif, ARG_delif
- 		USE_FEATURE_BRCTL_FANCY(,
+ 		IF_FEATURE_BRCTL_FANCY(,
 @@ -112,7 +112,7 @@ int brctl_main(int argc UNUSED_PARAM, ch
  		   ARG_setageing, ARG_setfd, ARG_sethello, ARG_setmaxage,
  		   ARG_setpathcost, ARG_setportprio, ARG_setbridgeprio
  		)
--		USE_FEATURE_BRCTL_SHOW(, ARG_showmacs, ARG_show)
-+		USE_FEATURE_BRCTL_SHOW(, ARG_show)
+-		IF_FEATURE_BRCTL_SHOW(, ARG_showmacs, ARG_show)
++		IF_FEATURE_BRCTL_SHOW(, ARG_show)
  	};
  
  	int fd;
 --- a/networking/Config.in
 +++ b/networking/Config.in
-@@ -66,12 +66,12 @@ config FEATURE_BRCTL_FANCY
+@@ -77,12 +77,12 @@ config FEATURE_BRCTL_FANCY
  	  This adds about 600 bytes.
  
  config FEATURE_BRCTL_SHOW
diff --git a/package/busybox/patches/110-wget_getopt_fix.patch b/package/busybox/patches/110-wget_getopt_fix.patch
index abb03d49f5..617679eab3 100644
--- a/package/busybox/patches/110-wget_getopt_fix.patch
+++ b/package/busybox/patches/110-wget_getopt_fix.patch
@@ -1,6 +1,6 @@
 --- a/networking/wget.c
 +++ b/networking/wget.c
-@@ -485,7 +485,7 @@ int wget_main(int argc UNUSED_PARAM, cha
+@@ -653,7 +653,7 @@ int wget_main(int argc UNUSED_PARAM, cha
  		// "tries\0"            Required_argument "t"
  		// "timeout\0"          Required_argument "T"
  		/* Ignored (we always use PASV): */
diff --git a/package/busybox/patches/240-udhcpc_retries.patch b/package/busybox/patches/240-udhcpc_retries.patch
index 81f120d8e6..bfcc02b7fb 100644
--- a/package/busybox/patches/240-udhcpc_retries.patch
+++ b/package/busybox/patches/240-udhcpc_retries.patch
@@ -1,6 +1,6 @@
 --- a/networking/udhcp/dhcpc.c
 +++ b/networking/udhcp/dhcpc.c
-@@ -363,7 +363,7 @@ int udhcpc_main(int argc UNUSED_PARAM, c
+@@ -380,7 +380,7 @@ int udhcpc_main(int argc UNUSED_PARAM, c
  
  			switch (state) {
  			case INIT_SELECTING:
@@ -8,13 +8,13 @@
 +				if (!discover_retries || packet_num < discover_retries) {
  					if (packet_num == 0)
  						xid = random_xid();
- 
-@@ -394,7 +394,7 @@ int udhcpc_main(int argc UNUSED_PARAM, c
+ 					/* broadcast */
+@@ -409,7 +409,7 @@ int udhcpc_main(int argc UNUSED_PARAM, c
+ 				packet_num = 0;
  				continue;
- 			case RENEW_REQUESTED:
  			case REQUESTING:
 -				if (packet_num < discover_retries) {
 +				if (!discover_retries || packet_num < discover_retries) {
- 					/* send request packet */
- 					if (state == RENEW_REQUESTED) /* unicast */
- 						send_renew(xid, server_addr, requested_ip);
+ 					/* send broadcast select packet */
+ 					send_select(xid, server_addr, requested_ip);
+ 					timeout = discover_timeout;
diff --git a/package/busybox/patches/241-udhcpc-oversized_packets.patch b/package/busybox/patches/241-udhcpc-oversized_packets.patch
index 405a7a52ea..0ee4c542ee 100644
--- a/package/busybox/patches/241-udhcpc-oversized_packets.patch
+++ b/package/busybox/patches/241-udhcpc-oversized_packets.patch
@@ -1,39 +1,40 @@
 --- a/networking/udhcp/packet.c
 +++ b/networking/udhcp/packet.c
-@@ -120,6 +120,10 @@ uint16_t FAST_FUNC udhcp_checksum(void *
+@@ -164,6 +164,11 @@ uint16_t FAST_FUNC udhcp_checksum(void *
  	return ~sum;
  }
  
-+int udhcp_get_payload_len(struct dhcpMessage *payload)
++int udhcp_get_payload_len(struct dhcp_packet *dhcp_pkt)
 +{
-+	return sizeof(struct dhcpMessage) - DHCP_OPTIONS_BUFSIZE + end_option(payload->options) + sizeof(payload->options[0]);
++	return sizeof(struct dhcp_packet) - DHCP_OPTIONS_BUFSIZE + end_option(dhcp_pkt->options) + sizeof(dhcp_pkt->options[0]);
 +}
- 
++
  /* Construct a ip/udp header for a packet, send packet */
- int FAST_FUNC udhcp_send_raw_packet(struct dhcpMessage *payload,
-@@ -132,11 +136,7 @@ int FAST_FUNC udhcp_send_raw_packet(stru
+ int FAST_FUNC udhcp_send_raw_packet(struct dhcp_packet *dhcp_pkt,
+ 		uint32_t source_ip, int source_port,
+@@ -175,11 +180,7 @@ int FAST_FUNC udhcp_send_raw_packet(stru
  	int fd;
  	int result = -1;
  	const char *msg;
 -
 -	enum {
--		IP_UPD_DHCP_SIZE = sizeof(struct udp_dhcp_packet) - CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS,
--		UPD_DHCP_SIZE    = IP_UPD_DHCP_SIZE - offsetof(struct udp_dhcp_packet, udp),
+-		IP_UPD_DHCP_SIZE = sizeof(struct ip_udp_dhcp_packet) - CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS,
+-		UPD_DHCP_SIZE    = IP_UPD_DHCP_SIZE - offsetof(struct ip_udp_dhcp_packet, udp),
 -	};
-+	int p_len = udhcp_get_payload_len(payload);
++	int p_len = udhcp_get_payload_len(dhcp_pkt);
  
  	fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP));
  	if (fd < 0) {
-@@ -146,7 +146,7 @@ int FAST_FUNC udhcp_send_raw_packet(stru
+@@ -189,7 +190,7 @@ int FAST_FUNC udhcp_send_raw_packet(stru
  
  	memset(&dest, 0, sizeof(dest));
  	memset(&packet, 0, sizeof(packet));
--	packet.data = *payload; /* struct copy */
-+	memcpy(&(packet.data), payload, p_len);
+-	packet.data = *dhcp_pkt; /* struct copy */
++	memcpy(&(packet.data), dhcp_pkt, p_len);
  
  	dest.sll_family = AF_PACKET;
  	dest.sll_protocol = htons(ETH_P_IP);
-@@ -163,23 +163,18 @@ int FAST_FUNC udhcp_send_raw_packet(stru
+@@ -206,24 +207,19 @@ int FAST_FUNC udhcp_send_raw_packet(stru
  	packet.ip.daddr = dest_ip;
  	packet.udp.source = htons(source_port);
  	packet.udp.dest = htons(dest_port);
@@ -58,18 +59,31 @@
 -	 * If you need to change this: last byte of the packet is
 -	 * packet.data.options[end_option(packet.data.options)]
 -	 */
+ 	udhcp_dump_packet(dhcp_pkt);
 -	result = sendto(fd, &packet, IP_UPD_DHCP_SIZE, 0,
 +	result = sendto(fd, &packet, p_len, 0,
  				(struct sockaddr *) &dest, sizeof(dest));
  	msg = "sendto";
   ret_close:
-@@ -231,8 +226,7 @@ int FAST_FUNC udhcp_send_kernel_packet(s
+@@ -245,10 +241,6 @@ int FAST_FUNC udhcp_send_kernel_packet(s
+ 	int result = -1;
+ 	const char *msg;
+ 
+-	enum {
+-		DHCP_SIZE = sizeof(struct dhcp_packet) - CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS,
+-	};
+-
+ 	fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
+ 	if (fd < 0) {
+ 		msg = "socket(%s)";
+@@ -274,9 +266,8 @@ int FAST_FUNC udhcp_send_kernel_packet(s
  		goto ret_close;
  	}
  
 -	/* Currently we send full-sized DHCP packets (see above) */
--	result = safe_write(fd, payload, DHCP_SIZE);
-+	result = safe_write(fd, payload, udhcp_get_payload_len(payload));
+ 	udhcp_dump_packet(dhcp_pkt);
+-	result = safe_write(fd, dhcp_pkt, DHCP_SIZE);
++	result = safe_write(fd, dhcp_pkt, udhcp_get_payload_len(dhcp_pkt));
  	msg = "write";
   ret_close:
  	close(fd);
diff --git a/package/busybox/patches/242-udhcpc_msgs.patch b/package/busybox/patches/242-udhcpc_msgs.patch
index 0140c7854f..1200c34c7d 100644
--- a/package/busybox/patches/242-udhcpc_msgs.patch
+++ b/package/busybox/patches/242-udhcpc_msgs.patch
@@ -3,7 +3,7 @@
 @@ -126,6 +126,7 @@ int FAST_FUNC send_decline(uint32_t xid,
  int FAST_FUNC send_discover(uint32_t xid, uint32_t requested)
  {
- 	struct dhcpMessage packet;
+ 	struct dhcp_packet packet;
 +	static int msgs = 0;
  
  	init_packet(&packet, DHCPDISCOVER);
diff --git a/package/busybox/patches/243-udhcpc_changed_ifindex.patch b/package/busybox/patches/243-udhcpc_changed_ifindex.patch
index f0ab34d26a..c5bf9123db 100644
--- a/package/busybox/patches/243-udhcpc_changed_ifindex.patch
+++ b/package/busybox/patches/243-udhcpc_changed_ifindex.patch
@@ -1,6 +1,6 @@
 --- a/networking/udhcp/dhcpc.c
 +++ b/networking/udhcp/dhcpc.c
-@@ -327,6 +327,12 @@ int udhcpc_main(int argc UNUSED_PARAM, c
+@@ -342,6 +342,12 @@ int udhcpc_main(int argc UNUSED_PARAM, c
  		/* silence "uninitialized!" warning */
  		unsigned timestamp_before_wait = timestamp_before_wait;
  
@@ -8,7 +8,7 @@
 +		 * member interfaces were added/removed or if the status of the
 +		 * bridge changed).
 +		 * Workaround: refresh it here before processing the next packet */
-+		udhcp_read_interface(client_config.interface, &client_config.ifindex, NULL, client_config.arp);
++		udhcp_read_interface(client_config.interface, &client_config.ifindex, NULL, client_config.client_mac);
 +
  		//bb_error_msg("sockfd:%d, listen_mode:%d", sockfd, listen_mode);
  
diff --git a/package/busybox/patches/244-udhcpc_cidrroute.patch b/package/busybox/patches/244-udhcpc_cidrroute.patch
index 29313ae79d..e69de29bb2 100644
--- a/package/busybox/patches/244-udhcpc_cidrroute.patch
+++ b/package/busybox/patches/244-udhcpc_cidrroute.patch
@@ -1,18 +0,0 @@
---- a/networking/udhcp/options.c
-+++ b/networking/udhcp/options.c
-@@ -48,6 +48,7 @@ const struct dhcp_option dhcp_options[] 
- #if ENABLE_FEATURE_UDHCP_RFC3397
- 	{ OPTION_STR1035 | OPTION_LIST            , 0x77 }, /* search             */
- #endif
-+	{ OPTION_U8 | OPTION_LIST |     OPTION_REQ, 0x79 }, /* cidr_static_routes */
- 	/* MSIE's "Web Proxy Autodiscovery Protocol" support */
- 	{ OPTION_STRING                           , 0xfc }, /* wpad               */
- 
-@@ -97,6 +98,7 @@ const char dhcp_option_strings[] ALIGN1 
- #if ENABLE_FEATURE_UDHCP_RFC3397
- 	"search" "\0"
- #endif
-+	"cidrroute" "\0"   /* cidr_static_routes */
- 	/* MSIE's "Web Proxy Autodiscovery Protocol" support */
- 	"wpad" "\0"
- 	;
diff --git a/package/busybox/patches/250-ash_export-n.patch b/package/busybox/patches/250-ash_export-n.patch
index f11cb8f799..6a420e221f 100644
--- a/package/busybox/patches/250-ash_export-n.patch
+++ b/package/busybox/patches/250-ash_export-n.patch
@@ -1,6 +1,6 @@
 --- a/shell/ash.c
 +++ b/shell/ash.c
-@@ -12273,8 +12273,17 @@ exportcmd(int argc UNUSED_PARAM, char **
+@@ -12360,8 +12360,17 @@ exportcmd(int argc UNUSED_PARAM, char **
  	const char *p;
  	char **aptr;
  	int flag = argv[0][0] == 'r' ? VREADONLY : VEXPORT;
@@ -19,7 +19,7 @@
  		aptr = argptr;
  		name = *aptr;
  		if (name) {
-@@ -12286,10 +12295,12 @@ exportcmd(int argc UNUSED_PARAM, char **
+@@ -12373,10 +12382,12 @@ exportcmd(int argc UNUSED_PARAM, char **
  					vp = *findvar(hashvar(name), name);
  					if (vp) {
  						vp->flags |= flag;
diff --git a/package/busybox/patches/300-netmsg.patch b/package/busybox/patches/300-netmsg.patch
index 641449eca1..aba146872c 100644
--- a/package/busybox/patches/300-netmsg.patch
+++ b/package/busybox/patches/300-netmsg.patch
@@ -1,16 +1,16 @@
 --- a/include/applets.h
 +++ b/include/applets.h
-@@ -271,6 +271,7 @@ USE_MT(APPLET(mt, _BB_DIR_BIN, _BB_SUID_
- USE_MV(APPLET(mv, _BB_DIR_BIN, _BB_SUID_NEVER))
- USE_NAMEIF(APPLET(nameif, _BB_DIR_SBIN, _BB_SUID_NEVER))
- USE_NC(APPLET(nc, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
-+USE_NETMSG(APPLET(netmsg, _BB_DIR_BIN, _BB_SUID_ALWAYS))
- USE_NETSTAT(APPLET(netstat, _BB_DIR_BIN, _BB_SUID_NEVER))
- USE_NICE(APPLET(nice, _BB_DIR_BIN, _BB_SUID_NEVER))
- USE_NMETER(APPLET(nmeter, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
+@@ -278,6 +278,7 @@ IF_MT(APPLET(mt, _BB_DIR_BIN, _BB_SUID_D
+ IF_MV(APPLET(mv, _BB_DIR_BIN, _BB_SUID_DROP))
+ IF_NAMEIF(APPLET(nameif, _BB_DIR_SBIN, _BB_SUID_DROP))
+ IF_NC(APPLET(nc, _BB_DIR_USR_BIN, _BB_SUID_DROP))
++IF_NETMSG(APPLET(netmsg, _BB_DIR_BIN, _BB_SUID_REQUIRE))
+ IF_NETSTAT(APPLET(netstat, _BB_DIR_BIN, _BB_SUID_DROP))
+ IF_NICE(APPLET(nice, _BB_DIR_BIN, _BB_SUID_DROP))
+ IF_NMETER(APPLET(nmeter, _BB_DIR_USR_BIN, _BB_SUID_DROP))
 --- a/include/usage.h
 +++ b/include/usage.h
-@@ -3010,6 +3010,9 @@
+@@ -3101,6 +3101,9 @@
  
  #endif
  
@@ -18,11 +18,11 @@
 +#define netmsg_full_usage ""
 +
  #define netstat_trivial_usage \
-        "[-laentuwxr"USE_FEATURE_NETSTAT_WIDE("W")USE_FEATURE_NETSTAT_PRG("p")"]"
+        "[-laentuwxr"IF_FEATURE_NETSTAT_WIDE("W")IF_FEATURE_NETSTAT_PRG("p")"]"
  #define netstat_full_usage "\n\n" \
 --- a/networking/Config.in
 +++ b/networking/Config.in
-@@ -600,6 +600,12 @@ config NC
+@@ -617,6 +617,12 @@ config NC
  	  A simple Unix utility which reads and writes data across network
  	  connections.
  
@@ -37,7 +37,7 @@
  	default n
 --- a/networking/Kbuild
 +++ b/networking/Kbuild
-@@ -24,6 +24,7 @@ lib-$(CONFIG_IP)           += ip.o
+@@ -25,6 +25,7 @@ lib-$(CONFIG_IP)           += ip.o
  lib-$(CONFIG_IPCALC)       += ipcalc.o
  lib-$(CONFIG_NAMEIF)       += nameif.o
  lib-$(CONFIG_NC)           += nc.o
diff --git a/package/busybox/patches/340-lock_util.patch b/package/busybox/patches/340-lock_util.patch
index 8cffe45fda..3e90558622 100644
--- a/package/busybox/patches/340-lock_util.patch
+++ b/package/busybox/patches/340-lock_util.patch
@@ -1,16 +1,16 @@
 --- a/include/applets.h
 +++ b/include/applets.h
-@@ -228,6 +228,7 @@ USE_LN(APPLET_NOEXEC(ln, ln, _BB_DIR_BIN
- USE_LOAD_POLICY(APPLET(load_policy, _BB_DIR_USR_SBIN, _BB_SUID_NEVER))
- USE_LOADFONT(APPLET(loadfont, _BB_DIR_USR_SBIN, _BB_SUID_NEVER))
- USE_LOADKMAP(APPLET(loadkmap, _BB_DIR_SBIN, _BB_SUID_NEVER))
-+USE_LOCK(APPLET(lock, _BB_DIR_BIN, _BB_SUID_NEVER))
- USE_LOGGER(APPLET(logger, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
- USE_LOGIN(APPLET(login, _BB_DIR_BIN, _BB_SUID_ALWAYS))
- USE_LOGNAME(APPLET_NOFORK(logname, logname, _BB_DIR_USR_BIN, _BB_SUID_NEVER, logname))
+@@ -233,6 +233,7 @@ IF_LN(APPLET_NOEXEC(ln, ln, _BB_DIR_BIN,
+ IF_LOAD_POLICY(APPLET(load_policy, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
+ IF_LOADFONT(APPLET(loadfont, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
+ IF_LOADKMAP(APPLET(loadkmap, _BB_DIR_SBIN, _BB_SUID_DROP))
++IF_LOCK(APPLET(lock, _BB_DIR_BIN, _BB_SUID_DROP))
+ IF_LOGGER(APPLET(logger, _BB_DIR_USR_BIN, _BB_SUID_DROP))
+ IF_LOGIN(APPLET(login, _BB_DIR_BIN, _BB_SUID_REQUIRE))
+ IF_LOGNAME(APPLET_NOFORK(logname, logname, _BB_DIR_USR_BIN, _BB_SUID_DROP, logname))
 --- a/include/usage.h
 +++ b/include/usage.h
-@@ -2246,6 +2246,9 @@
+@@ -2325,6 +2325,9 @@
  #define loadkmap_example_usage \
         "$ loadkmap < /etc/i18n/lang-keymap\n"
  
@@ -18,11 +18,11 @@
 +#define lock_full_usage ""
 +
  #define logger_trivial_usage \
-        "[OPTION]... [MESSAGE]"
+        "[OPTIONS] [MESSAGE]"
  #define logger_full_usage "\n\n" \
 --- a/miscutils/Config.in
 +++ b/miscutils/Config.in
-@@ -420,6 +420,11 @@ config FEATURE_HDPARM_HDIO_GETSET_DMA
+@@ -456,6 +456,11 @@ config FEATURE_HDPARM_HDIO_GETSET_DMA
  	help
  	  Enables the 'hdparm -d' option to get/set using_dma flag.
  
@@ -36,7 +36,7 @@
  	default n
 --- a/miscutils/Kbuild
 +++ b/miscutils/Kbuild
-@@ -23,6 +23,7 @@ lib-$(CONFIG_INOTIFYD)    += inotifyd.o
+@@ -26,6 +26,7 @@ lib-$(CONFIG_INOTIFYD)    += inotifyd.o
  lib-$(CONFIG_FEATURE_LAST_SMALL)+= last.o
  lib-$(CONFIG_FEATURE_LAST_FANCY)+= last_fancy.o
  lib-$(CONFIG_LESS)        += less.o
diff --git a/package/busybox/patches/350-httpd_redir.patch b/package/busybox/patches/350-httpd_redir.patch
index 912cb6d497..3d3e041ce8 100644
--- a/package/busybox/patches/350-httpd_redir.patch
+++ b/package/busybox/patches/350-httpd_redir.patch
@@ -1,24 +1,22 @@
 --- a/include/usage.h
 +++ b/include/usage.h
-@@ -1638,7 +1638,8 @@
- 	USE_FEATURE_HTTPD_BASIC_AUTH(" [-r realm]") \
- 	USE_FEATURE_HTTPD_AUTH_MD5(" [-m pass]") \
-        " [-h home]" \
--       " [-d/-e string]"
-+       " [-d/-e string]" \
+@@ -1693,6 +1693,7 @@
+ 	IF_FEATURE_HTTPD_BASIC_AUTH(" [-r REALM]") \
+        " [-h HOME]\n" \
+        "or httpd -d/-e" IF_FEATURE_HTTPD_AUTH_MD5("/-m") " STRING"
 +       " [-R <path> [-H <host>]]"
  #define httpd_full_usage "\n\n" \
         "Listen for incoming HTTP requests\n" \
       "\nOptions:" \
-@@ -1656,6 +1657,8 @@
-      "\n	-h HOME		Home directory (default .)" \
+@@ -1710,6 +1711,8 @@
+      "\n	-m STRING	MD5 crypt STRING") \
       "\n	-e STRING	HTML encode STRING" \
       "\n	-d STRING	URL decode STRING" \
 +     "\n	-R PATH 	Redirect target path" \
 +     "\n	-H HOST 	Redirect target host" \
  
  #define hwclock_trivial_usage \
- 	USE_FEATURE_HWCLOCK_LONG_OPTIONS( \
+ 	IF_FEATURE_HWCLOCK_LONG_OPTIONS( \
 --- a/networking/httpd.c
 +++ b/networking/httpd.c
 @@ -248,6 +248,8 @@ struct globals {
@@ -29,7 +27,7 @@
 +	const char *redirect_host;
  	Htaccess_IP *ip_a_d;    /* config allow/deny lines */
  
- 	USE_FEATURE_HTTPD_BASIC_AUTH(const char *g_realm;)
+ 	IF_FEATURE_HTTPD_BASIC_AUTH(const char *g_realm;)
 @@ -294,6 +296,8 @@ struct globals {
  #define index_page        (G.index_page       )
  #define found_mime_type   (G.found_mime_type  )
@@ -76,19 +74,19 @@
 +	c_opt_config_file,
  	d_opt_decode_url,
  	h_opt_home_httpd,
- 	USE_FEATURE_HTTPD_ENCODE_URL_STR(e_opt_encode_url,)
+ 	IF_FEATURE_HTTPD_ENCODE_URL_STR(e_opt_encode_url,)
 @@ -2315,12 +2328,13 @@ int httpd_main(int argc UNUSED_PARAM, ch
  	/* We do not "absolutize" path given by -h (home) opt.
  	 * If user gives relative path in -h,
  	 * $SCRIPT_FILENAME will not be set. */
 -	opt = getopt32(argv, "c:d:h:"
 +	opt = getopt32(argv, "R:H:c:d:h:"
- 			USE_FEATURE_HTTPD_ENCODE_URL_STR("e:")
- 			USE_FEATURE_HTTPD_BASIC_AUTH("r:")
- 			USE_FEATURE_HTTPD_AUTH_MD5("m:")
- 			USE_FEATURE_HTTPD_SETUID("u:")
+ 			IF_FEATURE_HTTPD_ENCODE_URL_STR("e:")
+ 			IF_FEATURE_HTTPD_BASIC_AUTH("r:")
+ 			IF_FEATURE_HTTPD_AUTH_MD5("m:")
+ 			IF_FEATURE_HTTPD_SETUID("u:")
  			"p:ifv",
 +			&redirect_path, &redirect_host,
  			&opt_c_configFile, &url_for_decode, &home_httpd
- 			USE_FEATURE_HTTPD_ENCODE_URL_STR(, &url_for_encode)
- 			USE_FEATURE_HTTPD_BASIC_AUTH(, &g_realm)
+ 			IF_FEATURE_HTTPD_ENCODE_URL_STR(, &url_for_encode)
+ 			IF_FEATURE_HTTPD_BASIC_AUTH(, &g_realm)
diff --git a/package/busybox/patches/430-uniq_memleak.patch b/package/busybox/patches/430-uniq_memleak.patch
index 48127a57ce..93f60eb004 100644
--- a/package/busybox/patches/430-uniq_memleak.patch
+++ b/package/busybox/patches/430-uniq_memleak.patch
@@ -8,4 +8,4 @@
 +				free(s1);
  			}
  
- 			++dups;	 /* note: testing for overflow seems excessive. */
+ 			free((char*)s1);
diff --git a/package/busybox/patches/470-insmod_search.patch b/package/busybox/patches/470-insmod_search.patch
index cc7ca79ce0..022ca24e6a 100644
--- a/package/busybox/patches/470-insmod_search.patch
+++ b/package/busybox/patches/470-insmod_search.patch
@@ -119,7 +119,7 @@
  }
 --- a/modutils/Config.in
 +++ b/modutils/Config.in
-@@ -211,7 +211,7 @@ config FEATURE_MODUTILS_SYMBOLS
+@@ -210,7 +210,7 @@ config FEATURE_MODUTILS_SYMBOLS
  config DEFAULT_MODULES_DIR
  	string "Default directory containing modules"
  	default "/lib/modules"
diff --git a/package/busybox/patches/480-mount_union.patch b/package/busybox/patches/480-mount_union.patch
index 2a22322aee..e520d781b2 100644
--- a/package/busybox/patches/480-mount_union.patch
+++ b/package/busybox/patches/480-mount_union.patch
@@ -1,6 +1,6 @@
 --- a/util-linux/mount.c
 +++ b/util-linux/mount.c
-@@ -42,6 +42,10 @@
+@@ -69,6 +69,10 @@
  #define MS_DIRSYNC      128     // Directory modifications are synchronous
  #endif
  
@@ -11,7 +11,7 @@
  
  #if defined(__dietlibc__)
  // 16.12.2006, Sampo Kellomaki (sampo@iki.fi)
-@@ -152,6 +156,7 @@ static const int32_t mount_options[] = {
+@@ -185,6 +189,7 @@ static const int32_t mount_options[] = {
  		/* "rslave"      */ MS_SLAVE|MS_RECURSIVE,
  		/* "rprivate"    */ MS_SLAVE|MS_RECURSIVE,
  		/* "runbindable" */ MS_UNBINDABLE|MS_RECURSIVE,
@@ -19,7 +19,7 @@
  	)
  
  	// Always understood.
-@@ -206,6 +211,7 @@ static const char mount_option_str[] =
+@@ -239,6 +244,7 @@ static const char mount_option_str[] =
  		"rslave\0"
  		"rprivate\0"
  		"runbindable\0"
diff --git a/package/busybox/patches/524-udhcpc_renew.patch b/package/busybox/patches/524-udhcpc_renew.patch
index 0a43b8fe32..8ba4835ae7 100644
--- a/package/busybox/patches/524-udhcpc_renew.patch
+++ b/package/busybox/patches/524-udhcpc_renew.patch
@@ -1,6 +1,6 @@
 --- a/networking/udhcp/dhcpc.c
 +++ b/networking/udhcp/dhcpc.c
-@@ -69,7 +69,6 @@ static void perform_renew(void)
+@@ -76,7 +76,6 @@ static void perform_renew(void)
  		state = RENEW_REQUESTED;
  		break;
  	case RENEW_REQUESTED: /* impatient are we? fine, square 1 */
diff --git a/package/busybox/patches/902-telnetd_intr.patch b/package/busybox/patches/902-telnetd_intr.patch
index 3b84fc4d3e..92a2d4725c 100644
--- a/package/busybox/patches/902-telnetd_intr.patch
+++ b/package/busybox/patches/902-telnetd_intr.patch
@@ -1,8 +1,6 @@
-diff --git a/networking/telnetd.c b/networking/telnetd.c
-index 2a0ace5..c281feb 100644
 --- a/networking/telnetd.c
 +++ b/networking/telnetd.c
-@@ -308,6 +308,7 @@ make_new_session(
+@@ -306,6 +306,7 @@ make_new_session(
  
  	/* Restore default signal handling ASAP */
  	bb_signals((1 << SIGCHLD) + (1 << SIGPIPE), SIG_DFL);
-- 
2.30.2