Browse Source

update busybox to 1.18.4, patch from Peter Wagner

SVN-Revision: 26455
Florian Fainelli 14 years ago
parent
commit
03e30ae13f

+ 3 - 3
package/busybox/Makefile

@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=busybox
-PKG_VERSION:=1.17.3
-PKG_RELEASE:=2
+PKG_VERSION:=1.18.4
+PKG_RELEASE:=1
 PKG_FLAGS:=essential
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=http://www.busybox.net/downloads \
 		http://distfiles.gentoo.org/distfiles/
-PKG_MD5SUM:=a2ce1a951571da8c6e0eaf75b1acef60
+PKG_MD5SUM:=b03c5b46ced732679e525a920a1a62f5
 
 PKG_BUILD_DEPENDS:=BUSYBOX_USE_LIBRPC:librpc
 PKG_BUILD_PARALLEL:=1

+ 48 - 27
package/busybox/config/Config.in

@@ -46,6 +46,17 @@ config BUSYBOX_CONFIG_USE_PORTABLE_CODE
 	  compiler other than gcc.
 	  If you do use gcc, this option may needlessly increase code size.
 
+config BUSYBOX_CONFIG_PLATFORM_LINUX
+	bool "Enable Linux-specific applets and features"
+	default y
+	help
+	  For the most part, busybox requires only POSIX compatibility
+	  from the target system, but some applets and features use
+	  Linux-specific interfaces.
+
+	  Answering 'N' here will disable such applets and hide the
+	  corresponding configuration options.
+
 choice
 	prompt "Buffer allocation policy"
 	default BUSYBOX_CONFIG_FEATURE_BUFFERS_GO_ON_STACK
@@ -111,6 +122,15 @@ config BUSYBOX_CONFIG_FEATURE_INSTALLER
 	  busybox at runtime to create hard links or symlinks for all the
 	  applets that are compiled into busybox.
 
+config BUSYBOX_CONFIG_INSTALL_NO_USR
+	bool "Don't use /usr"
+	default n
+	depends on BUSYBOX_CONFIG_FEATURE_INSTALLER
+	help
+	  Disable use of /usr. busybox --install and "make install"
+	  will install applets only to /bin and /sbin,
+	  never to /usr/bin or /usr/sbin.
+
 config BUSYBOX_CONFIG_LOCALE_SUPPORT
 	bool "Enable locale support (system needs locale for this to work)"
 	default n
@@ -137,6 +157,7 @@ config BUSYBOX_CONFIG_UNICODE_USING_LOCALE
 	help
 	  With this option on, Unicode support is implemented using libc
 	  routines. Otherwise, internal implementation is used.
+	  Internal implementation is smaller.
 
 config BUSYBOX_CONFIG_FEATURE_CHECK_UNICODE_IN_ENV
 	bool "Check $LANG environment variable"
@@ -262,15 +283,6 @@ config BUSYBOX_CONFIG_FEATURE_CLEAN_UP
 	  Don't enable this unless you have a really good reason to clean
 	  things up manually.
 
-config BUSYBOX_CONFIG_FEATURE_UTMP
-	bool "Support utmp file"
-	default n
-	help
-	  The file /var/run/utmp is used to track who is currently logged in.
-	  With this option on, certain applets (getty, login, telnetd etc)
-	  will create and delete entries there.
-	  "who" applet requires this option.
-
 config BUSYBOX_CONFIG_FEATURE_WTMP
 	bool "Support wtmp file"
 	default n
@@ -282,6 +294,15 @@ config BUSYBOX_CONFIG_FEATURE_WTMP
 	  will append new entries there.
 	  "last" applet requires this option.
 
+config BUSYBOX_CONFIG_FEATURE_UTMP
+	bool "Support utmp file"
+	default n
+	help
+	  The file /var/run/utmp is used to track who is currently logged in.
+	  With this option on, certain applets (getty, login, telnetd etc)
+	  will create and delete entries there.
+	  "who" applet requires this option.
+
 config BUSYBOX_CONFIG_FEATURE_PIDFILE
 	bool "Support writing pidfiles"
 	default y
@@ -294,14 +315,19 @@ config BUSYBOX_CONFIG_FEATURE_SUID
 	default y
 	help
 	  With this option you can install the busybox binary belonging
-	  to root with the suid bit set, and it will automatically drop
-	  priviledges for applets that don't need root access.
+	  to root with the suid bit set, enabling some applets to perform
+	  root-level operations even when run by ordinary users
+	  (for example, mounting of user mounts in fstab needs this).
+
+	  Busybox will automatically drop priviledges for applets
+	  that don't need root access.
 
 	  If you are really paranoid and don't want to do this, build two
 	  busybox binaries with different applets in them (and the appropriate
 	  symlinks pointing to each binary), and only set the suid bit on the
-	  one that needs it. The applets currently marked to need the suid bit
-	  are:
+	  one that needs it.
+
+	  The applets currently marked to need the suid bit are:
 
 	  crontab, dnsd, findfs, ipcrm, ipcs, login, passwd, ping, su,
 	  traceroute, vlock.
@@ -351,6 +377,7 @@ config BUSYBOX_CONFIG_FEATURE_SUID_CONFIG_QUIET
 config BUSYBOX_CONFIG_SELINUX
 	bool "Support NSA Security Enhanced Linux"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Enable support for SELinux in applets ls, ps, and id. Also provide
 	  the option of compiling in SELinux applets.
@@ -637,20 +664,13 @@ endchoice
 
 endmenu
 
-menu 'Installation Options'
-
-config BUSYBOX_CONFIG_INSTALL_NO_USR
-	bool "Don't use /usr"
-	default n
-	help
-	  Disable use of /usr. Don't activate this option if you don't know
-	  that you really want this behaviour.
+menu 'Installation Options ("make install" behavior)'
 
 choice
-	prompt "Applets links"
+	prompt "What kind of applet links to install"
 	default BUSYBOX_CONFIG_INSTALL_APPLET_SYMLINKS
 	help
-	  Choose how you install applets links.
+	  Choose what kind of links to applets are created by "make install".
 
 config BUSYBOX_CONFIG_INSTALL_APPLET_SYMLINKS
 	bool "as soft-links"
@@ -674,8 +694,9 @@ config BUSYBOX_CONFIG_INSTALL_APPLET_DONT
 	bool "not installed"
 	depends on BUSYBOX_CONFIG_FEATURE_INSTALLER || BUSYBOX_CONFIG_FEATURE_SH_STANDALONE || BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS
 	help
-	  Do not install applet links. Useful when using the -install feature
-	  or a standalone shell for rescue purposes.
+	  Do not install applet links. Useful when you plan to use
+	  busybox --install for installing links, or plan to use
+	  a standalone shell and thus don't need applet links.
 
 endchoice
 
@@ -699,8 +720,8 @@ config BUSYBOX_CONFIG_INSTALL_SH_APPLET_HARDLINK
 config BUSYBOX_CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER
 	bool "as script wrapper"
 	help
-	  Install /bin/sh applet as script wrapper that call the busybox
-	  binary.
+	  Install /bin/sh applet as script wrapper that calls
+	  the busybox binary.
 
 endchoice
 

+ 1 - 1
package/busybox/config/archival/Config.in

@@ -204,7 +204,7 @@ config BUSYBOX_CONFIG_RPM2CPIO
 	bool "rpm2cpio"
 	default n
 	help
-	  Converts an RPM file into a CPIO archive.
+	  Converts a RPM file into a CPIO archive.
 
 config BUSYBOX_CONFIG_RPM
 	bool "rpm"

+ 15 - 0
package/busybox/config/console-tools/Config.in

@@ -5,9 +5,12 @@
 
 menu "Console Utilities"
 
+
+
 config BUSYBOX_CONFIG_CHVT
 	bool "chvt"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  This program is used to change to another terminal.
 	  Example: chvt 4 (change to terminal /dev/tty4)
@@ -15,6 +18,7 @@ config BUSYBOX_CONFIG_CHVT
 config BUSYBOX_CONFIG_FGCONSOLE
 	bool "fgconsole"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  This program prints active (foreground) console number.
 
@@ -27,12 +31,14 @@ config BUSYBOX_CONFIG_CLEAR
 config BUSYBOX_CONFIG_DEALLOCVT
 	bool "deallocvt"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  This program deallocates unused virtual consoles.
 
 config BUSYBOX_CONFIG_DUMPKMAP
 	bool "dumpkmap"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  This program dumps the kernel's keyboard translation table to
 	  stdout, in binary format. You can then use loadkmap to load it.
@@ -40,18 +46,21 @@ config BUSYBOX_CONFIG_DUMPKMAP
 config BUSYBOX_CONFIG_KBD_MODE
 	bool "kbd_mode"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  This program reports and sets keyboard mode.
 
 config BUSYBOX_CONFIG_LOADFONT
 	bool "loadfont"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  This program loads a console font from standard input.
 
 config BUSYBOX_CONFIG_LOADKMAP
 	bool "loadkmap"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  This program loads a keyboard translation table from
 	  standard input.
@@ -59,6 +68,7 @@ config BUSYBOX_CONFIG_LOADKMAP
 config BUSYBOX_CONFIG_OPENVT
 	bool "openvt"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  This program is used to start a command on an unused
 	  virtual terminal.
@@ -90,6 +100,7 @@ config BUSYBOX_CONFIG_FEATURE_RESIZE_PRINT
 config BUSYBOX_CONFIG_SETCONSOLE
 	bool "setconsole"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  This program redirects the system console to another device,
 	  like the current tty while logged in via telnet.
@@ -104,6 +115,7 @@ config BUSYBOX_CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS
 config BUSYBOX_CONFIG_SETFONT
 	bool "setfont"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Allows to load console screen map. Useful for i18n.
 
@@ -125,6 +137,7 @@ config BUSYBOX_CONFIG_DEFAULT_SETFONT_DIR
 config BUSYBOX_CONFIG_SETKEYCODES
 	bool "setkeycodes"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  This program loads entries into the kernel's scancode-to-keycode
 	  map, allowing unusual keyboards to generate usable keycodes.
@@ -132,12 +145,14 @@ config BUSYBOX_CONFIG_SETKEYCODES
 config BUSYBOX_CONFIG_SETLOGCONS
 	bool "setlogcons"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  This program redirects the output console of kernel messages.
 
 config BUSYBOX_CONFIG_SHOWKEY
 	bool "showkey"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Shows keys pressed.
 

+ 7 - 1
package/busybox/config/coreutils/Config.in

@@ -36,7 +36,7 @@ config BUSYBOX_CONFIG_FEATURE_DATE_ISOFMT
 config BUSYBOX_CONFIG_FEATURE_DATE_NANO
 	bool "Support %[num]N nanosecond format specifier"
 	default n
-	depends on BUSYBOX_CONFIG_DATE
+	depends on BUSYBOX_CONFIG_DATE && BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Support %[num]N format specifier. Adds ~250 bytes of code.
 
@@ -96,6 +96,11 @@ config BUSYBOX_CONFIG_FEATURE_TR_EQUIV
 	  replace all instances of 'a' with 'xyz'. This option is mainly
 	  useful for cases when no other way of expressing a character
 	  is possible.
+config BUSYBOX_CONFIG_BASE64
+	bool "base64"
+	default n
+	help
+	  Base64 encode and decode
 
 config BUSYBOX_CONFIG_CAL
 	bool "cal"
@@ -681,6 +686,7 @@ config BUSYBOX_CONFIG_FEATURE_SPLIT_FANCY
 config BUSYBOX_CONFIG_STAT
 	bool "stat"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  display file or filesystem status.
 

+ 1 - 0
package/busybox/config/e2fsprogs/Config.in

@@ -31,6 +31,7 @@ config BUSYBOX_CONFIG_FSCK
 config BUSYBOX_CONFIG_LSATTR
 	bool "lsattr"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  lsattr lists the file attributes on a second extended file system.
 

+ 6 - 6
package/busybox/config/editors/Config.in

@@ -5,6 +5,12 @@
 
 menu "Editors"
 
+config BUSYBOX_CONFIG_PATCH
+	bool "patch"
+	default n
+	help
+	  Apply a unified diff formatted patch.
+
 config BUSYBOX_CONFIG_AWK
 	bool "awk"
 	default y
@@ -58,12 +64,6 @@ config BUSYBOX_CONFIG_ED
 	  Small, simple, evil. Part of SUSv3. If you're not already using
 	  this, you don't need it.
 
-config BUSYBOX_CONFIG_PATCH
-	bool "patch"
-	default n
-	help
-	  Apply a unified diff formatted patch.
-
 config BUSYBOX_CONFIG_SED
 	bool "sed"
 	default y

+ 33 - 24
package/busybox/config/init/Config.in

@@ -43,7 +43,31 @@ config BUSYBOX_CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE
 	help
 	  Enable reading and parsing of $PWD/bootchartd.conf
 	  and /etc/bootchartd.conf files.
+config BUSYBOX_CONFIG_HALT
+	bool "poweroff, halt, and reboot"
+	default y
+	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_INIT
 	bool "init"
 	default y
@@ -126,32 +150,17 @@ config BUSYBOX_CONFIG_FEATURE_INITRD
 	  This does not apply to initramfs, which runs /init as PID 1 and
 	  requires no special support.
 
-config BUSYBOX_CONFIG_HALT
-	bool "poweroff, halt, and reboot"
-	default y
-	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
+config BUSYBOX_CONFIG_INIT_TERMINAL_TYPE
+	string "Initial terminal type"
+	default "linux"
+	depends on BUSYBOX_CONFIG_INIT
 	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.
+	  This is the initial value set by init for the TERM environment
+	  variable. This variable is used by programs which make use of
+	  extended terminal capabilities.
 
+	  Note that on Linux, init attempts to detect serial terminal and
+	  sets TERM to "vt102" if one is found.
 config BUSYBOX_CONFIG_MESG
 	bool "mesg"
 	default y

+ 14 - 2
package/busybox/config/libbb/Config.in

@@ -41,6 +41,17 @@ config BUSYBOX_CONFIG_FEATURE_ETC_NETWORKS
 	  a rarely used feature which allows you to use names
 	  instead of IP/mask pairs in route command.
 
+config BUSYBOX_CONFIG_FEATURE_USE_TERMIOS
+	bool "Use termios to manipulate the screen"
+	default n
+	depends on BUSYBOX_CONFIG_MORE || BUSYBOX_CONFIG_TOP || BUSYBOX_CONFIG_POWERTOP
+	help
+	  This option allows utilities such as 'more' and 'top' to determine
+	  the size of the screen. If you leave this disabled, your utilities
+	  that display things on the screen will be especially primitive and
+	  will be unable to determine the current screen size, and will be
+	  unable to move the cursor.
+
 config BUSYBOX_CONFIG_FEATURE_EDITING
 	bool "Command line editing"
 	default y
@@ -76,9 +87,9 @@ config BUSYBOX_CONFIG_FEATURE_EDITING_HISTORY
 config BUSYBOX_CONFIG_FEATURE_EDITING_SAVEHISTORY
 	bool "History saving"
 	default n
-	depends on BUSYBOX_CONFIG_ASH && BUSYBOX_CONFIG_FEATURE_EDITING
+	depends on BUSYBOX_CONFIG_FEATURE_EDITING
 	help
-	  Enable history saving in ash shell.
+	  Enable history saving in shells.
 
 config BUSYBOX_CONFIG_FEATURE_TAB_COMPLETION
 	bool "Tab completion"
@@ -151,6 +162,7 @@ config BUSYBOX_CONFIG_FEATURE_COPYBUF_KB
 config BUSYBOX_CONFIG_MONOTONIC_SYSCALL
 	bool "Use clock_gettime(CLOCK_MONOTONIC) syscall"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Use clock_gettime(CLOCK_MONOTONIC) syscall for measuring
 	  time intervals (time, ping, traceroute etc need this).

+ 54 - 46
package/busybox/config/loginutils/Config.in

@@ -5,6 +5,18 @@
 
 menu "Login/Password Management Utilities"
 
+config BUSYBOX_CONFIG_ADD_SHELL
+       bool "add-shell"
+       default n if BUSYBOX_CONFIG_DESKTOP
+       help
+         Add shells to /etc/shells.
+
+config BUSYBOX_CONFIG_REMOVE_SHELL
+       bool "remove-shell"
+       default n if BUSYBOX_CONFIG_DESKTOP
+       help
+         Remove shells from /etc/shells.
+
 config BUSYBOX_CONFIG_FEATURE_SHADOWPASSWDS
 	bool "Support for shadow passwords"
 	default n
@@ -91,41 +103,18 @@ config BUSYBOX_CONFIG_USE_BB_CRYPT_SHA
 	  With this option off, login will fail password check for any
 	  user which has password encrypted with these algorithms.
 
-config BUSYBOX_CONFIG_ADDGROUP
-	bool "addgroup"
+config BUSYBOX_CONFIG_ADDUSER
+	bool "adduser"
 	default n
 	help
-	  Utility for creating a new group account.
+	  Utility for creating a new user account.
 
-config BUSYBOX_CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS
+config BUSYBOX_CONFIG_FEATURE_ADDUSER_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
-	depends on BUSYBOX_CONFIG_ADDGROUP
-	help
-	  If  called  with two non-option arguments,
-	  addgroup will add an existing user to an
-	  existing group.
-
-config BUSYBOX_CONFIG_DELGROUP
-	bool "delgroup"
-	default n
-	help
-	  Utility for deleting a group account.
-
-config BUSYBOX_CONFIG_FEATURE_DEL_USER_FROM_GROUP
-	bool "Support for removing users from groups"
-	default n
-	depends on BUSYBOX_CONFIG_DELGROUP
+	depends on BUSYBOX_CONFIG_ADDUSER && BUSYBOX_CONFIG_LONG_OPTS
 	help
-	  If called with two non-option arguments, deluser
-	  or delgroup will remove an user from a specified group.
+	  Support long options for the adduser applet.
 
 config BUSYBOX_CONFIG_FEATURE_CHECK_NAMES
 	bool "Enable sanity check on user/group names in adduser and addgroup"
@@ -139,19 +128,6 @@ config BUSYBOX_CONFIG_FEATURE_CHECK_NAMES
 	  For compatibility with Samba machine accounts "$" is also supported
 	  at the end of the user or group name.
 
-config BUSYBOX_CONFIG_ADDUSER
-	bool "adduser"
-	default n
-	help
-	  Utility for creating a new user account.
-
-config BUSYBOX_CONFIG_FEATURE_ADDUSER_LONG_OPTIONS
-	bool "Enable long options"
-	default n
-	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
@@ -168,12 +144,48 @@ config BUSYBOX_CONFIG_LAST_SYSTEM_ID
 	help
 	  Last valid system uid or gid for adduser and addgroup
 
+config BUSYBOX_CONFIG_ADDGROUP
+	bool "addgroup"
+	default n
+	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
+	depends on BUSYBOX_CONFIG_ADDGROUP
+	help
+	  If  called  with two non-option arguments,
+	  addgroup will add an existing user to an
+	  existing group.
+
 config BUSYBOX_CONFIG_DELUSER
 	bool "deluser"
 	default n
 	help
 	  Utility for deleting a user account.
 
+config BUSYBOX_CONFIG_DELGROUP
+	bool "delgroup"
+	default n
+	help
+	  Utility for deleting a group account.
+
+config BUSYBOX_CONFIG_FEATURE_DEL_USER_FROM_GROUP
+	bool "Support for removing users from groups"
+	default n
+	depends on BUSYBOX_CONFIG_DELGROUP
+	help
+	  If called with two non-option arguments, deluser
+	  or delgroup will remove an user from a specified group.
+
 config BUSYBOX_CONFIG_GETTY
 	bool "getty"
 	default n
@@ -184,7 +196,6 @@ config BUSYBOX_CONFIG_GETTY
 config BUSYBOX_CONFIG_LOGIN
 	bool "login"
 	default n
-	select BUSYBOX_CONFIG_FEATURE_SUID
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
 	  login is used when signing onto a system.
@@ -227,7 +238,6 @@ config BUSYBOX_CONFIG_FEATURE_SECURETTY
 config BUSYBOX_CONFIG_PASSWD
 	bool "passwd"
 	default y
-	select BUSYBOX_CONFIG_FEATURE_SUID
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
 	  passwd changes passwords for user and group accounts. A normal user
@@ -263,7 +273,6 @@ config BUSYBOX_CONFIG_CHPASSWD
 config BUSYBOX_CONFIG_SU
 	bool "su"
 	default n
-	select BUSYBOX_CONFIG_FEATURE_SUID
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
 	  su is used to become another user during a login session.
@@ -293,7 +302,6 @@ config BUSYBOX_CONFIG_SULOGIN
 config BUSYBOX_CONFIG_VLOCK
 	bool "vlock"
 	default n
-	select BUSYBOX_CONFIG_FEATURE_SUID
 	help
 	  Build the "vlock" applet which allows you to lock (virtual) terminals.
 

+ 46 - 7
package/busybox/config/miscutils/Config.in

@@ -8,27 +8,43 @@ menu "Miscellaneous Utilities"
 config BUSYBOX_CONFIG_CONSPY
 	bool "conspy"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  A text-mode VNC like program for Linux virtual terminals.
 	  example:  conspy NUM      shared access to console num
 	  or        conspy -nd NUM  screenshot of console num
 	  or        conspy -cs NUM  poor man's GNU screen like
+config BUSYBOX_CONFIG_NANDWRITE
+	bool "nandwrite"
+	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
+	help
+	  Write to the specified MTD device, with bad blocks awareness
 
+config BUSYBOX_CONFIG_NANDDUMP
+	bool "nanddump"
+	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
+	help
+	  Dump the content of raw NAND chip
 config BUSYBOX_CONFIG_UBIATTACH
 	bool "ubiattach"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Attach MTD device to an UBI device.
 
 config BUSYBOX_CONFIG_UBIDETACH
 	bool "ubidetach"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Detach MTD device from an UBI device.
 
 config BUSYBOX_CONFIG_ADJTIMEX
 	bool "adjtimex"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Adjtimex reads and optionally sets adjustment parameters for
 	  the Linux clock adjustment algorithm.
@@ -40,9 +56,24 @@ config BUSYBOX_CONFIG_BBCONFIG
 	  The bbconfig applet will print the config file with which
 	  busybox was built.
 
+config BUSYBOX_CONFIG_FEATURE_COMPRESS_BBCONFIG
+	bool "Compress bbconfig data"
+	default n
+	depends on BUSYBOX_CONFIG_BBCONFIG
+	help
+	  Store bbconfig data in compressed form, uncompress them on-the-fly
+	  before output.
+
+	  If you have a really tiny busybox with few applets enabled (and
+	  bunzip2 isn't one of them), the overhead of the decompressor might
+	  be noticeable. Also, if you run executables directly from ROM
+	  and have very little memory, this might not be a win. Otherwise,
+	  you probably want this.
+
 config BUSYBOX_CONFIG_BEEP
 	bool "beep"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  The beep applets beeps in a given freq/Hz.
 
@@ -139,7 +170,6 @@ config BUSYBOX_CONFIG_CHRT
 config BUSYBOX_CONFIG_CROND
 	bool "crond"
 	default y
-	select BUSYBOX_CONFIG_FEATURE_SUID
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
 	  Crond is a background daemon that parses individual crontab
@@ -174,7 +204,6 @@ config BUSYBOX_CONFIG_FEATURE_CROND_DIR
 config BUSYBOX_CONFIG_CRONTAB
 	bool "crontab"
 	default y
-	select BUSYBOX_CONFIG_FEATURE_SUID
 	help
 	  Crontab manipulates the crontab for a particular user. Only
 	  the superuser may specify a different user and/or crontab directory.
@@ -199,6 +228,7 @@ config BUSYBOX_CONFIG_FEATURE_DC_LIBM
 config BUSYBOX_CONFIG_DEVFSD
 	bool "devfsd (obsolete)"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
 	  This is deprecated and should NOT be used anymore.
@@ -242,6 +272,7 @@ config BUSYBOX_CONFIG_DEVFSD_VERBOSE
 config BUSYBOX_CONFIG_FEATURE_DEVFS
 	bool "Use devfs names for all devices (obsolete)"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  This is obsolete and should NOT be used anymore.
 	  Use linux >= 2.6 (optionally with hotplug) and mdev instead!
@@ -261,6 +292,7 @@ config BUSYBOX_CONFIG_DEVMEM
 config BUSYBOX_CONFIG_EJECT
 	bool "eject"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Used to eject cdroms. (defaults to /dev/cdrom)
 
@@ -275,6 +307,7 @@ config BUSYBOX_CONFIG_FEATURE_EJECT_SCSI
 config BUSYBOX_CONFIG_FBSPLASH
 	bool "fbsplash"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Shows splash image and progress bar on framebuffer device.
 	  Can be used during boot phase of an embedded device. ~2kb.
@@ -324,6 +357,7 @@ config BUSYBOX_CONFIG_FLASH_ERASEALL
 config BUSYBOX_CONFIG_IONICE
 	bool "ionice"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Set/set program io scheduling class and priority
 	  Requires kernel >= 2.6.13
@@ -424,11 +458,12 @@ config BUSYBOX_CONFIG_FEATURE_LESS_LINENUMS
 	default n
 	depends on BUSYBOX_CONFIG_FEATURE_LESS_DASHCMD
 	help
-	  Enable "-N" command.
+	  Enables "-N" command.
 
 config BUSYBOX_CONFIG_HDPARM
 	bool "hdparm"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Get/Set hard drive parameters. Primarily intended for ATA
 	  drives. Adds about 13k (or around 30k if you enable the
@@ -496,15 +531,15 @@ config BUSYBOX_CONFIG_MAKEDEVS
 	help
 	  'makedevs' is a utility used to create a batch of devices with
 	  one command.
-	  .
+
 	  There are two choices for command line behaviour, the interface
 	  as used by LEAF/Linux Router Project, or a device table file.
-	  .
+
 	  'leaf' is traditionally what busybox follows, it allows multiple
 	  devices of a particluar type to be created per command.
 	  e.g. /dev/hda[0-9]
 	  Device properties are passed as command line arguments.
-	  .
+
 	  'table' reads device properties from a file or stdin, allowing
 	  a batch of unrelated devices to be made with one command.
 	  User/group names are allowed as an alternative to uid/gid.
@@ -551,6 +586,7 @@ config BUSYBOX_CONFIG_MT
 config BUSYBOX_CONFIG_RAIDAUTORUN
 	bool "raidautorun"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  raidautorun tells the kernel md driver to
 	  search and start RAID arrays.
@@ -558,7 +594,7 @@ config BUSYBOX_CONFIG_RAIDAUTORUN
 config BUSYBOX_CONFIG_READAHEAD
 	bool "readahead"
 	default n
-	depends on BUSYBOX_CONFIG_LFS
+	depends on BUSYBOX_CONFIG_LFS && BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Preload the files listed on the command line into RAM cache so that
 	  subsequent reads on these files will not block on disk I/O.
@@ -575,6 +611,7 @@ config BUSYBOX_CONFIG_READAHEAD
 config BUSYBOX_CONFIG_RFKILL
 	bool "rfkill"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Enable/disable wireless devices.
 
@@ -595,6 +632,7 @@ config BUSYBOX_CONFIG_RUNLEVEL
 config BUSYBOX_CONFIG_RX
 	bool "rx"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Receive files using the Xmodem protocol.
 
@@ -666,6 +704,7 @@ config BUSYBOX_CONFIG_WALL
 config BUSYBOX_CONFIG_WATCHDOG
 	bool "watchdog"
 	default y
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  The watchdog utility is used with hardware or software watchdog
 	  device drivers. It opens the specified watchdog device special file

+ 2 - 0
package/busybox/config/modutils/Config.in

@@ -1,9 +1,11 @@
+# DO NOT EDIT. This file is generated from Config.src
 #
 # For a description of the syntax of this configuration file,
 # see scripts/kbuild/config-language.txt.
 #
 
 menu "Linux Module Utilities"
+depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 
 config BUSYBOX_CONFIG_MODINFO
 	bool "modinfo"

+ 46 - 2
package/busybox/config/networking/Config.in

@@ -5,6 +5,12 @@
 
 menu "Networking Utilities"
 
+config BUSYBOX_CONFIG_NBDCLIENT
+	bool "nbd-client"
+	default n
+	help
+	  Network block device client
+
 config BUSYBOX_CONFIG_NC
 	bool "nc"
 	default y
@@ -82,18 +88,21 @@ config BUSYBOX_CONFIG_VERBOSE_RESOLUTION_ERRORS
 config BUSYBOX_CONFIG_ARP
 	bool "arp"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Manipulate the system ARP cache.
 
 config BUSYBOX_CONFIG_ARPING
 	bool "arping"
 	default y
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Ping hosts by ARP packets.
 
 config BUSYBOX_CONFIG_BRCTL
 	bool "brctl"
 	default y
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Manage ethernet bridges.
 	  Supports addbr/delbr and addif/delif.
@@ -126,6 +135,7 @@ config BUSYBOX_CONFIG_DNSD
 config BUSYBOX_CONFIG_ETHER_WAKE
 	bool "ether-wake"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Send a magic packet to wake up sleeping machines.
 
@@ -297,9 +307,18 @@ config BUSYBOX_CONFIG_FEATURE_HTTPD_PROXY
 	  Then a request to /url/myfile will be forwarded to
 	  http://hostname[:port]/new/path/myfile.
 
+config BUSYBOX_CONFIG_FEATURE_HTTPD_GZIP
+	bool "Support for GZIP content encoding"
+	default n
+	depends on BUSYBOX_CONFIG_HTTPD
+	help
+	  Makes httpd send files using GZIP content encoding if the
+	  client supports it and a pre-compressed <file>.gz exists.
+
 config BUSYBOX_CONFIG_IFCONFIG
 	bool "ifconfig"
 	default y
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Ifconfig is used to configure the kernel-resident network interfaces.
 
@@ -347,6 +366,7 @@ config BUSYBOX_CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS
 config BUSYBOX_CONFIG_IFENSLAVE
 	bool "ifenslave"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Userspace application to bind several interfaces
 	  to a logical interface (use with kernel bonding driver).
@@ -354,6 +374,7 @@ config BUSYBOX_CONFIG_IFENSLAVE
 config BUSYBOX_CONFIG_IFPLUGD
 	bool "ifplugd"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Network interface plug detection daemon.
 
@@ -395,7 +416,7 @@ config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IP
 config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN
 	bool "Use busybox ip applet"
 	default n
-	depends on BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IP
+	depends on BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IP && BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_IP
 	select BUSYBOX_CONFIG_FEATURE_IP_ADDRESS
 	select BUSYBOX_CONFIG_FEATURE_IP_LINK
@@ -514,6 +535,7 @@ config BUSYBOX_CONFIG_FEATURE_INETD_RPC
 config BUSYBOX_CONFIG_IP
 	bool "ip"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  The "ip" applet is a TCP/IP interface configuration and routing
 	  utility. You generally don't need "ip" to use busybox with
@@ -629,6 +651,7 @@ config BUSYBOX_CONFIG_FEATURE_IPCALC_LONG_OPTIONS
 config BUSYBOX_CONFIG_NAMEIF
 	bool "nameif"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
 	  nameif is used to rename network interface by its MAC address.
@@ -663,6 +686,7 @@ config BUSYBOX_CONFIG_NETMSG
 config BUSYBOX_CONFIG_NETSTAT
 	bool "netstat"
 	default y
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  netstat prints information about the Linux networking subsystem.
 
@@ -691,6 +715,7 @@ config BUSYBOX_CONFIG_NSLOOKUP
 config BUSYBOX_CONFIG_NTPD
 	bool "ntpd"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  The NTP client/server daemon.
 
@@ -705,6 +730,7 @@ config BUSYBOX_CONFIG_FEATURE_NTPD_SERVER
 config BUSYBOX_CONFIG_PING
 	bool "ping"
 	default y
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  ping uses the ICMP protocol's mandatory ECHO_REQUEST datagram to
 	  elicit an ICMP ECHO_RESPONSE from a host or gateway.
@@ -733,12 +759,14 @@ config BUSYBOX_CONFIG_PSCAN
 config BUSYBOX_CONFIG_ROUTE
 	bool "route"
 	default y
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Route displays or manipulates the kernel's IP routing tables.
 
 config BUSYBOX_CONFIG_SLATTACH
 	bool "slattach"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  slattach is a small utility to attach network interfaces to serial
 	  lines.
@@ -819,7 +847,7 @@ config BUSYBOX_CONFIG_TELNETD
 
 		  mount -t devpts devpts /dev/pts
 
-	  You need to be sure that Busybox has LOGIN and
+	  You need to be sure that busybox has LOGIN and
 	  FEATURE_SUID enabled. And finally, you should make
 	  certain that Busybox has been installed setuid root:
 
@@ -925,6 +953,7 @@ config BUSYBOX_CONFIG_TFTP_DEBUG
 config BUSYBOX_CONFIG_TRACEROUTE
 	bool "traceroute"
 	default y
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Utility to trace the route of IP packets.
 
@@ -961,6 +990,7 @@ config BUSYBOX_CONFIG_FEATURE_TRACEROUTE_USE_ICMP
 config BUSYBOX_CONFIG_TUNCTL
 	bool "tunctl"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  tunctl creates or deletes tun devices.
 
@@ -993,6 +1023,7 @@ config BUSYBOX_CONFIG_UDPSVD
 config BUSYBOX_CONFIG_VCONFIG
 	bool "vconfig"
 	default y
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Creates, removes, and configures VLAN interfaces
 
@@ -1024,9 +1055,22 @@ config BUSYBOX_CONFIG_FEATURE_WGET_LONG_OPTIONS
 	help
 	  Support long options for the wget applet.
 
+config BUSYBOX_CONFIG_FEATURE_WGET_TIMEOUT
+	bool "Enable read timeout option -T SEC"
+	default n
+	depends on BUSYBOX_CONFIG_WGET
+	help
+	  Supports network read timeout for wget, so that wget will give
+	  up and timeout when reading network data, through the -T command
+	  line option.  Currently only network data read timeout is
+	  supported (i.e., timeout is not applied to the DNS nor TCP
+	  connection initialization).  When FEATURE_WGET_LONG_OPTIONS is
+	  also enabled, the --timeout option will work in addition to -T.
+
 config BUSYBOX_CONFIG_ZCIP
 	bool "zcip"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
 	  ZCIP provides ZeroConf IPv4 address selection, according to RFC 3927.

+ 5 - 0
package/busybox/config/networking/udhcp/Config.in

@@ -1,11 +1,15 @@
+# DO NOT EDIT. This file is generated from Config.src
 #
 # For a description of the syntax of this configuration file,
 # see scripts/kbuild/config-language.txt.
 #
 
+
+
 config BUSYBOX_CONFIG_UDHCPD
 	bool "udhcp server (udhcpd)"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  udhcpd is a DHCP server geared primarily toward embedded systems,
 	  while striving to be fully functional and RFC compliant.
@@ -49,6 +53,7 @@ config BUSYBOX_CONFIG_DHCPD_LEASES_FILE
 config BUSYBOX_CONFIG_UDHCPC
 	bool "udhcp client (udhcpc)"
 	default y
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  udhcpc is a DHCP client geared primarily toward embedded systems,
 	  while striving to be fully functional and RFC compliant.

+ 23 - 1
package/busybox/config/procps/Config.in

@@ -5,6 +5,26 @@
 
 menu "Process Utilities"
 
+config BUSYBOX_CONFIG_IOSTAT
+	bool "iostat"
+	default n
+	help
+	  Report CPU and I/O statistics
+config BUSYBOX_CONFIG_MPSTAT
+	bool "mpstat"
+	default n
+	help
+	  Per-processor statistics
+config BUSYBOX_CONFIG_PMAP
+       bool "pmap"
+       default n
+       help
+         Display processes' memory mappings.
+config BUSYBOX_CONFIG_POWERTOP
+	bool "powertop"
+	default n
+	help
+	  Analyze power consumption on Intel-based laptops
 config BUSYBOX_CONFIG_SMEMCAP
 	bool "smemcap"
 	default n
@@ -15,6 +35,7 @@ config BUSYBOX_CONFIG_SMEMCAP
 config BUSYBOX_CONFIG_FREE
 	bool "free"
 	default y
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  free displays the total amount of free and used physical and swap
 	  memory in the system, as well as the buffers used by the kernel.
@@ -109,7 +130,7 @@ config BUSYBOX_CONFIG_FEATURE_PS_WIDE
 config BUSYBOX_CONFIG_FEATURE_PS_TIME
 	bool "Enable time and elapsed time output"
 	default n
-	depends on BUSYBOX_CONFIG_PS && BUSYBOX_CONFIG_DESKTOP
+	depends on BUSYBOX_CONFIG_PS && BUSYBOX_CONFIG_DESKTOP && BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Support -o time and -o etime output specifiers.
 
@@ -205,6 +226,7 @@ config BUSYBOX_CONFIG_FEATURE_SHOW_THREADS
 config BUSYBOX_CONFIG_UPTIME
 	bool "uptime"
 	default y
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  uptime gives a one line display of the current time, how long
 	  the system has been running, how many users are currently logged

+ 74 - 65
package/busybox/config/shell/Config.in

@@ -5,8 +5,6 @@
 
 menu "Shells"
 
-
-
 config BUSYBOX_CONFIG_ASH
 	bool "ash"
 	default y
@@ -110,19 +108,55 @@ config BUSYBOX_CONFIG_ASH_EXPAND_PRMT
 	  This option recreates the prompt string from the environment
 	  variable each time it is displayed.
 
+config BUSYBOX_CONFIG_CTTYHACK
+	bool "cttyhack"
+	default n
+	help
+	  One common problem reported on the mailing list is "can't access tty;
+	  job control turned off" error message which typically appears when
+	  one tries to use shell with stdin/stdout opened to /dev/console.
+	  This device is special - it cannot be a controlling tty.
+
+	  Proper solution is to use correct device instead of /dev/console.
+
+	  cttyhack provides "quick and dirty" solution to this problem.
+	  It analyzes stdin with various ioctls, trying to determine whether
+	  it is a /dev/ttyN or /dev/ttySN (virtual terminal or serial line).
+	  If it detects one, it closes stdin/out/err and reopens that device.
+	  Then it executes given program. Opening the device will make
+	  that device a controlling tty. This may require cttyhack
+	  to be a session leader.
+
+	  Example for /etc/inittab (for busybox init):
+
+	  ::respawn:/bin/cttyhack /bin/sh
+
+	  Starting an interactive shell from boot shell script:
+
+	  setsid cttyhack sh
+
+	  Giving controlling tty to shell running with PID 1:
+
+	  # exec cttyhack sh
+
+	  Without cttyhack, you need to know exact tty name,
+	  and do something like this:
+
+	  # exec setsid sh -c 'exec sh </dev/tty1 >/dev/tty1 2>&1'
+
 config BUSYBOX_CONFIG_HUSH
 	bool "hush"
 	default n
 	help
-	  hush is a small shell (22k). It handles the normal flow control
+	  hush is a small shell (25k). It handles the normal flow control
 	  constructs such as if/then/elif/else/fi, for/in/do/done, while loops,
 	  case/esac. Redirections, here documents, $((arithmetic))
 	  and functions are supported.
 
 	  It will compile and work on no-mmu systems.
 
-	  It does not handle select, aliases, brace expansion,
-	  tilde expansion, &>file and >&file redirection of stdout+stderr.
+	  It does not handle select, aliases, tilde expansion,
+	  &>file and >&file redirection of stdout+stderr.
 
 config BUSYBOX_CONFIG_HUSH_BASH_COMPAT
 	bool "bash-compatible extensions"
@@ -131,6 +165,13 @@ config BUSYBOX_CONFIG_HUSH_BASH_COMPAT
 	help
 	  Enable bash-compatible extensions.
 
+config BUSYBOX_CONFIG_HUSH_BRACE_EXPANSION
+	bool "Brace expansion"
+	default n
+	depends on BUSYBOX_CONFIG_HUSH_BASH_COMPAT
+	help
+	  Enable {abc,def} extension.
+
 config BUSYBOX_CONFIG_HUSH_HELP
 	bool "help builtin"
 	default y
@@ -148,6 +189,13 @@ config BUSYBOX_CONFIG_HUSH_INTERACTIVE
 	  from stdin just like a shell script from a file.
 	  No prompt, no PS1/PS2 magic shell variables.
 
+config BUSYBOX_CONFIG_HUSH_SAVEHISTORY
+	bool "Save command history to .hush_history"
+	default n
+	depends on BUSYBOX_CONFIG_HUSH_INTERACTIVE && BUSYBOX_CONFIG_FEATURE_EDITING_SAVEHISTORY
+	help
+	  Enable history saving in hush.
+
 config BUSYBOX_CONFIG_HUSH_JOB
 	bool "Job control"
 	default y
@@ -201,20 +249,35 @@ config BUSYBOX_CONFIG_HUSH_LOCAL
 	help
 	  Enable support for local variables in functions.
 
+config BUSYBOX_CONFIG_HUSH_RANDOM_SUPPORT
+	bool "Pseudorandom generator and $RANDOM variable"
+	default n
+	depends on BUSYBOX_CONFIG_HUSH
+	help
+	  Enable pseudorandom generator and dynamic variable "$RANDOM".
+	  Each read of "$RANDOM" will generate a new pseudorandom value.
+
 config BUSYBOX_CONFIG_HUSH_EXPORT_N
-	bool "Support export '-n' option"
+	bool "Support 'export -n' option"
 	default y
 	depends on BUSYBOX_CONFIG_HUSH
 	help
-	  Enable support for export '-n' option in hush. It is a bash extension.
+	  export -n unexports variables. It is a bash extension.
 
-config BUSYBOX_CONFIG_HUSH_RANDOM_SUPPORT
-	bool "Pseudorandom generator and $RANDOM variable"
+config BUSYBOX_CONFIG_HUSH_MODE_X
+	bool "Support 'hush -x' option and 'set -x' command"
 	default n
 	depends on BUSYBOX_CONFIG_HUSH
 	help
-	  Enable pseudorandom generator and dynamic variable "$RANDOM".
-	  Each read of "$RANDOM" will generate a new pseudorandom value.
+	  This instructs hush to print commands before execution.
+	  Adds ~300 bytes.
+
+config BUSYBOX_CONFIG_MSH
+	bool "msh (deprecated: aliased to hush)"
+	default n
+	select BUSYBOX_CONFIG_HUSH
+	help
+	  msh is deprecated and will be removed, please migrate to hush.
 
 
 choice
@@ -271,29 +334,6 @@ config BUSYBOX_CONFIG_FEATURE_BASH_IS_NONE
 endchoice
 
 
-config BUSYBOX_CONFIG_LASH
-	bool "lash (deprecated: aliased to hush)"
-	default n
-	select BUSYBOX_CONFIG_HUSH
-	help
-	  lash is deprecated and will be removed, please migrate to hush.
-
-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.
-
-#	  The minix shell (adds just 30k) is quite complete and handles things
-#	  like for/do/done, case/esac and all the things you expect a Bourne
-#	  shell to do. It is not always pedantically correct about Bourne
-#	  shell grammar (try running the shell testscript "tests/sh.testcases"
-#	  on it and compare vs bash) but for most things it works quite well.
-#	  It uses only vfork, so it can be used on uClinux systems.
-
-
 config BUSYBOX_CONFIG_SH_MATH_SUPPORT
 	bool "POSIX math support"
 	default y
@@ -367,35 +407,4 @@ config BUSYBOX_CONFIG_FEATURE_SH_NOFORK
 
 	  This feature is relatively new. Use with care.
 
-config BUSYBOX_CONFIG_CTTYHACK
-	bool "cttyhack"
-	default n
-	help
-	  One common problem reported on the mailing list is "can't access tty;
-	  job control turned off" error message which typically appears when
-	  one tries to use shell with stdin/stdout opened to /dev/console.
-	  This device is special - it cannot be a controlling tty.
-
-	  Proper solution is to use correct device instead of /dev/console.
-
-	  cttyhack provides "quick and dirty" solution to this problem.
-	  It analyzes stdin with various ioctls, trying to determine whether
-	  it is a /dev/ttyN or /dev/ttySN (virtual terminal or serial line).
-	  If it detects one, it closes stdin/out/err and reopens that device.
-	  Then it executes given program. Opening the device will make
-	  that device a controlling tty. This may require cttyhack
-	  to be a session leader.
-
-	  Example for /etc/inittab (for busybox init):
-
-	  ::respawn:/bin/cttyhack /bin/sh
-
-	  Giving controlling tty to shell running with PID 1:
-
-	  $ exec cttyhack sh
-
-	  Starting an interactive shell from boot shell script:
-
-	  setsid cttyhack sh
-
 endmenu

+ 19 - 0
package/busybox/config/sysklogd/Config.in

@@ -1,3 +1,4 @@
+# DO NOT EDIT. This file is generated from Config.src
 #
 # For a description of the syntax of this configuration file,
 # see scripts/kbuild/config-language.txt.
@@ -5,6 +6,8 @@
 
 menu "System Logging Utilities"
 
+
+
 config BUSYBOX_CONFIG_SYSLOGD
 	bool "syslogd"
 	default y
@@ -114,6 +117,22 @@ config BUSYBOX_CONFIG_KLOGD
 	  you wish to record the messages produced by the kernel,
 	  you should enable this option.
 
+config BUSYBOX_CONFIG_FEATURE_KLOGD_KLOGCTL
+	bool "Use the klogctl() interface"
+	default y
+	depends on BUSYBOX_CONFIG_KLOGD && BUSYBOX_CONFIG_PLATFORM_LINUX
+	help
+	  The klogd applet supports two interfaces for reading
+	  kernel messages. Linux provides the klogctl() interface
+	  which allows reading messages from the kernel ring buffer
+	  independently from the file system.
+
+	  If you answer 'N' here, klogd will use the more portable
+	  approach of reading them from /proc or a device node.
+	  However, this method requires the file to be available.
+
+	  If in doubt, say 'Y'.
+
 config BUSYBOX_CONFIG_LOGGER
 	bool "logger"
 	default y

+ 38 - 14
package/busybox/config/util-linux/Config.in

@@ -5,6 +5,11 @@
 
 menu "Linux System Utilities"
 
+config BUSYBOX_CONFIG_BLOCKDEV
+	bool "blockdev"
+	default n
+	help
+	  Performs some ioctls with block devices.
 config BUSYBOX_CONFIG_REV
 	bool "rev"
 	default n
@@ -14,6 +19,7 @@ config BUSYBOX_CONFIG_REV
 config BUSYBOX_CONFIG_ACPID
 	bool "acpid"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  acpid listens to ACPI events coming either in textual form from
 	  /proc/acpi/event (though it is marked deprecated it is still widely
@@ -36,6 +42,7 @@ config BUSYBOX_CONFIG_FEATURE_ACPID_COMPAT
 config BUSYBOX_CONFIG_BLKID
 	bool "blkid"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_VOLUMEID
 	help
 	  Lists labels and UUIDs of all filesystems.
@@ -45,6 +52,7 @@ config BUSYBOX_CONFIG_BLKID
 config BUSYBOX_CONFIG_DMESG
 	bool "dmesg"
 	default y
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  dmesg is used to examine or control the kernel ring buffer. When the
 	  Linux kernel prints messages to the system log, they are stored in
@@ -78,6 +86,7 @@ config BUSYBOX_CONFIG_FEATURE_DMESG_PRETTY
 config BUSYBOX_CONFIG_FBSET
 	bool "fbset"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  fbset is used to show or change the settings of a Linux frame buffer
 	  device. The frame buffer device provides a simple and unique
@@ -106,6 +115,7 @@ config BUSYBOX_CONFIG_FEATURE_FBSET_READMODE
 config BUSYBOX_CONFIG_FDFLUSH
 	bool "fdflush"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  fdflush is only needed when changing media on slightly-broken
 	  removable media drives. It is used to make Linux believe that a
@@ -118,12 +128,14 @@ config BUSYBOX_CONFIG_FDFLUSH
 config BUSYBOX_CONFIG_FDFORMAT
 	bool "fdformat"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  fdformat is used to low-level format a floppy disk.
 
 config BUSYBOX_CONFIG_FDISK
 	bool "fdisk"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  The fdisk utility is used to divide hard disks into one or more
 	  logical disks, which are generally called partitions. This utility
@@ -178,6 +190,14 @@ config BUSYBOX_CONFIG_FEATURE_OSF_LABEL
 	  Enabling this option allows you to create or change BSD disklabels
 	  and define and edit BSD disk slices.
 
+config BUSYBOX_CONFIG_FEATURE_GPT_LABEL
+	bool "Support GPT disklabels"
+	default n
+	depends on BUSYBOX_CONFIG_FDISK && BUSYBOX_CONFIG_FEATURE_FDISK_WRITABLE
+	help
+	  Enabling this option allows you to view GUID Partition Table
+	  disklabels.
+
 config BUSYBOX_CONFIG_FEATURE_FDISK_ADVANCED
 	bool "Support expert mode"
 	default n
@@ -191,6 +211,7 @@ config BUSYBOX_CONFIG_FEATURE_FDISK_ADVANCED
 config BUSYBOX_CONFIG_FINDFS
 	bool "findfs"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_VOLUMEID
 	help
 	  Prints the name of a filesystem with given label or UUID.
@@ -206,6 +227,7 @@ config BUSYBOX_CONFIG_FLOCK
 config BUSYBOX_CONFIG_FREERAMDISK
 	bool "freeramdisk"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Linux allows you to create ramdisks. This utility allows you to
 	  delete them and completely free all memory that was used for the
@@ -228,12 +250,14 @@ config BUSYBOX_CONFIG_FSCK_MINIX
 config BUSYBOX_CONFIG_MKFS_EXT2
 	bool "mkfs_ext2"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Utility to create EXT2 filesystems.
 
 config BUSYBOX_CONFIG_MKFS_MINIX
 	bool "mkfs_minix"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  The minix filesystem is a nice, small, compact, read-write filesystem
 	  with little overhead. If you wish to be able to create minix
@@ -251,6 +275,7 @@ config BUSYBOX_CONFIG_FEATURE_MINIX2
 config BUSYBOX_CONFIG_MKFS_REISER
 	bool "mkfs_reiser"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Utility to create ReiserFS filesystems.
 	  Note: this applet needs a lot of testing and polishing.
@@ -258,6 +283,7 @@ config BUSYBOX_CONFIG_MKFS_REISER
 config BUSYBOX_CONFIG_MKFS_VFAT
 	bool "mkfs_vfat"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Utility to create FAT32 filesystems.
 
@@ -306,6 +332,7 @@ config BUSYBOX_CONFIG_HD
 config BUSYBOX_CONFIG_HWCLOCK
 	bool "hwclock"
 	default y
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  The hwclock utility is used to read and set the hardware clock
 	  on a system. This is primarily used to set the current time on
@@ -336,7 +363,6 @@ config BUSYBOX_CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS
 config BUSYBOX_CONFIG_IPCRM
 	bool "ipcrm"
 	default n
-	select BUSYBOX_CONFIG_FEATURE_SUID
 	help
 	  The ipcrm utility allows the removal of System V interprocess
 	  communication (IPC) objects and the associated data structures
@@ -345,7 +371,7 @@ config BUSYBOX_CONFIG_IPCRM
 config BUSYBOX_CONFIG_IPCS
 	bool "ipcs"
 	default n
-	select BUSYBOX_CONFIG_FEATURE_SUID
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  The ipcs utility is used to provide information on the currently
 	  allocated System V interprocess (IPC) objects in the system.
@@ -353,6 +379,7 @@ config BUSYBOX_CONFIG_IPCS
 config BUSYBOX_CONFIG_LOSETUP
 	bool "losetup"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  losetup is used to associate or detach a loop device with a regular
 	  file or block device, and to query the status of a loop device. This
@@ -379,6 +406,7 @@ config BUSYBOX_CONFIG_LSUSB
 config BUSYBOX_CONFIG_MDEV
 	bool "mdev"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  mdev is a mini-udev implementation for dynamically creating device
 	  nodes in the /dev directory.
@@ -463,20 +491,10 @@ config BUSYBOX_CONFIG_MORE
 	  you will probably find this utility very helpful. If you don't have
 	  any need to reading text files, you can leave this disabled.
 
-config BUSYBOX_CONFIG_FEATURE_USE_TERMIOS
-	bool "Use termios to manipulate the screen"
-	default n
-	depends on BUSYBOX_CONFIG_MORE || BUSYBOX_CONFIG_TOP
-	help
-	  This option allows utilities such as 'more' and 'top' to determine
-	  the size of the screen. If you leave this disabled, your utilities
-	  that display things on the screen will be especially primitive and
-	  will be unable to determine the current screen size, and will be
-	  unable to move the cursor.
-
 config BUSYBOX_CONFIG_MOUNT
 	bool "mount"
 	default y
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  All files and filesystems in Unix are arranged into one big directory
 	  tree. The 'mount' utility is used to graft a filesystem onto a
@@ -559,6 +577,7 @@ config BUSYBOX_CONFIG_FEATURE_MOUNT_FSTAB
 config BUSYBOX_CONFIG_PIVOT_ROOT
 	bool "pivot_root"
 	default y
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  The pivot_root utility swaps the mount points for the root filesystem
 	  with some other mounted filesystem. This allows you to do all sorts
@@ -592,6 +611,7 @@ config BUSYBOX_CONFIG_READPROFILE
 config BUSYBOX_CONFIG_RTCWAKE
 	bool "rtcwake"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  Enter a system sleep state until specified wakeup time.
 
@@ -611,6 +631,7 @@ config BUSYBOX_CONFIG_SCRIPTREPLAY
 config BUSYBOX_CONFIG_SETARCH
 	bool "setarch"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  The linux32 utility is used to create a 32bit environment for the
 	  specified program (usually a shell). It only makes sense to have
@@ -620,6 +641,7 @@ config BUSYBOX_CONFIG_SETARCH
 config BUSYBOX_CONFIG_SWAPONOFF
 	bool "swaponoff"
 	default n
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  This option enables both the 'swapon' and the 'swapoff' utilities.
 	  Once you have created some swap space using 'mkswap', you also need
@@ -638,6 +660,7 @@ config BUSYBOX_CONFIG_FEATURE_SWAPON_PRI
 config BUSYBOX_CONFIG_SWITCH_ROOT
 	bool "switch_root"
 	default y
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  The switch_root utility is used from initramfs to select a new
 	  root device. Under initramfs, you have to use this instead of
@@ -657,6 +680,7 @@ config BUSYBOX_CONFIG_SWITCH_ROOT
 config BUSYBOX_CONFIG_UMOUNT
 	bool "umount"
 	default y
+	depends on BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	  When you want to remove a mounted filesystem from its current mount
 	  point, for example when you are shutting down the system, the
@@ -777,7 +801,7 @@ config BUSYBOX_CONFIG_FEATURE_VOLUMEID_JFS
 
 ### config FEATURE_VOLUMEID_UFS
 ###	bool "ufs filesystem"
-###	default y
+###	default n
 ###	depends on VOLUMEID
 ###	help
 ###	  TODO

+ 0 - 11
package/busybox/patches/000-autoconf.patch

@@ -1,11 +0,0 @@
---- a/applets/Kbuild.src
-+++ b/applets/Kbuild.src
-@@ -28,7 +28,7 @@ HOSTCFLAGS_usage_pod.o = -I$(srctree_sla
- applets/applets.o: include/usage_compressed.h include/applet_tables.h
- 
- applets/applet_tables: .config include/applets.h
--applets/usage:         .config include/applets.h
-+applets/usage:         .config include/applets.h include/autoconf.h
- applets/usage_pod:     .config include/applet_tables.h include/applets.h
- 
- quiet_cmd_gen_usage_compressed = GEN     include/usage_compressed.h

+ 0 - 12
package/busybox/patches/000-upstream-sort.patch

@@ -1,12 +0,0 @@
-diff -urpN busybox-1.17.3/coreutils/sort.c busybox-1.17.3-sort/coreutils/sort.c
---- busybox-1.17.3/coreutils/sort.c	2010-10-09 21:57:13.000000000 +0200
-+++ busybox-1.17.3-sort/coreutils/sort.c	2010-10-20 15:17:35.320293543 +0200
-@@ -412,7 +412,7 @@ int sort_main(int argc UNUSED_PARAM, cha
- #if ENABLE_FEATURE_SORT_BIG
- 	/* Open output file _after_ we read all input ones */
- 	if (option_mask32 & FLAG_o)
--		xmove_fd(xopen3(str_o, O_WRONLY, 0666), STDOUT_FILENO);
-+		xmove_fd(xopen3(str_o, O_WRONLY|O_CREAT|O_TRUNC, 0666), STDOUT_FILENO);
- #endif
- 	flag = (option_mask32 & FLAG_z) ? '\0' : '\n';
- 	for (i = 0; i < linecount; i++)

+ 12 - 10
package/busybox/patches/241-udhcpc-oversized_packets.patch

@@ -1,6 +1,8 @@
+diff --git a/networking/udhcp/packet.c b/networking/udhcp/packet.c
+index 2b7528c..94e53dc 100644
 --- a/networking/udhcp/packet.c
 +++ b/networking/udhcp/packet.c
-@@ -165,6 +165,11 @@ uint16_t FAST_FUNC udhcp_checksum(void *
+@@ -165,6 +165,11 @@ uint16_t FAST_FUNC udhcp_checksum(void *addr, int count)
  	return ~sum;
  }
  
@@ -12,7 +14,7 @@
  /* Construct a ip/udp header for a packet, send packet */
  int FAST_FUNC udhcp_send_raw_packet(struct dhcp_packet *dhcp_pkt,
  		uint32_t source_nip, int source_port,
-@@ -173,10 +178,10 @@ int FAST_FUNC udhcp_send_raw_packet(stru
+@@ -173,10 +178,10 @@ int FAST_FUNC udhcp_send_raw_packet(struct dhcp_packet *dhcp_pkt,
  {
  	struct sockaddr_ll dest_sll;
  	struct ip_udp_dhcp_packet packet;
@@ -24,7 +26,7 @@
  
  	fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP));
  	if (fd < 0) {
-@@ -185,8 +190,8 @@ int FAST_FUNC udhcp_send_raw_packet(stru
+@@ -185,8 +190,8 @@ int FAST_FUNC udhcp_send_raw_packet(struct dhcp_packet *dhcp_pkt,
  	}
  
  	memset(&dest_sll, 0, sizeof(dest_sll));
@@ -35,7 +37,7 @@
  
  	dest_sll.sll_family = AF_PACKET;
  	dest_sll.sll_protocol = htons(ETH_P_IP);
-@@ -199,36 +204,24 @@ int FAST_FUNC udhcp_send_raw_packet(stru
+@@ -199,36 +204,24 @@ int FAST_FUNC udhcp_send_raw_packet(struct dhcp_packet *dhcp_pkt,
  		goto ret_close;
  	}
  
@@ -56,14 +58,14 @@
  	packet.udp.source = htons(source_port);
  	packet.udp.dest = htons(dest_port);
 -	/* size, excluding IP header: */
--	packet.udp.len = htons(UPD_DHCP_SIZE - padding);
+-	packet.udp.len = htons(UDP_DHCP_SIZE - padding);
 -	/* for UDP checksumming, ip.len is set to UDP packet len */
 +	p_len += sizeof(packet.udp);
 +	packet.udp.len = htons(p_len);
  	packet.ip.tot_len = packet.udp.len;
--	packet.udp.check = udhcp_checksum(&packet, IP_UPD_DHCP_SIZE - padding);
+-	packet.udp.check = udhcp_checksum(&packet, IP_UDP_DHCP_SIZE - padding);
 -	/* but for sending, it is set to IP packet len */
--	packet.ip.tot_len = htons(IP_UPD_DHCP_SIZE - padding);
+-	packet.ip.tot_len = htons(IP_UDP_DHCP_SIZE - padding);
 +	p_len += sizeof(packet.ip);
 +	packet.udp.check = udhcp_checksum(&packet, p_len);
 +	packet.ip.tot_len = htons(p_len);
@@ -73,12 +75,12 @@
  	packet.ip.check = udhcp_checksum(&packet.ip, sizeof(packet.ip));
  
  	udhcp_dump_packet(dhcp_pkt);
--	result = sendto(fd, &packet, IP_UPD_DHCP_SIZE - padding, /*flags:*/ 0,
+-	result = sendto(fd, &packet, IP_UDP_DHCP_SIZE - padding, /*flags:*/ 0,
 +	result = sendto(fd, &packet, p_len, /*flags:*/ 0,
  			(struct sockaddr *) &dest_sll, sizeof(dest_sll));
  	msg = "sendto";
   ret_close:
-@@ -246,7 +239,6 @@ int FAST_FUNC udhcp_send_kernel_packet(s
+@@ -246,7 +239,6 @@ int FAST_FUNC udhcp_send_kernel_packet(struct dhcp_packet *dhcp_pkt,
  		uint32_t dest_nip, int dest_port)
  {
  	struct sockaddr_in client;
@@ -86,7 +88,7 @@
  	int fd;
  	int result = -1;
  	const char *msg;
-@@ -277,9 +269,7 @@ int FAST_FUNC udhcp_send_kernel_packet(s
+@@ -277,9 +269,7 @@ int FAST_FUNC udhcp_send_kernel_packet(struct dhcp_packet *dhcp_pkt,
  	}
  
  	udhcp_dump_packet(dhcp_pkt);

+ 24 - 18
package/busybox/patches/244-udhcpc_add_6rd_option.patch

@@ -1,24 +1,26 @@
+diff --git a/networking/udhcp/common.c b/networking/udhcp/common.c
+index 0a60261..eaf2b4b 100644
 --- a/networking/udhcp/common.c
 +++ b/networking/udhcp/common.c
-@@ -54,6 +54,8 @@ const struct dhcp_optflag dhcp_optflags[
- 	{ OPTION_SIP_SERVERS                      , 0x78 }, /* DHCP_SIP_SERVERS   */
+@@ -56,6 +56,8 @@ const struct dhcp_optflag dhcp_optflags[] = {
  #endif
  	{ OPTION_STATIC_ROUTES                    , 0x79 }, /* DHCP_STATIC_ROUTES */
+ 	{ OPTION_STATIC_ROUTES                    , 0xf9 }, /* DHCP_MS_STATIC_ROUTES */
 +	{ OPTION_6RD                              , 0xd4 }, /* DHCP_6RD (RFC)     */
 +	{ OPTION_6RD                              , 0x96 }, /* DHCP_6RD (Comcast) */
  	{ OPTION_STRING                           , 0xfc }, /* DHCP_WPAD          */
  
  	/* Options below have no match in dhcp_option_strings[],
-@@ -114,6 +116,8 @@ const char dhcp_option_strings[] ALIGN1 
+@@ -118,6 +120,8 @@ const char dhcp_option_strings[] ALIGN1 =
  // doesn't work in udhcpd.conf since OPTION_STATIC_ROUTES
  // is not handled yet by "string->option" conversion code:
  	"staticroutes" "\0"/* DHCP_STATIC_ROUTES  */
 +	"ip6rd" "\0"       /* DHCP_6RD (RFC)      */
 +	"ip6rd" "\0"       /* DHCP_6RD (Comcast)  */
+ 	"msstaticroutes""\0"/* DHCP_MS_STATIC_ROUTES */
  	"wpad" "\0"        /* DHCP_WPAD           */
  	;
- 
-@@ -141,6 +145,7 @@ const uint8_t dhcp_option_lengths[] ALIG
+@@ -146,6 +150,7 @@ const uint8_t dhcp_option_lengths[] ALIGN1 = {
  	[OPTION_S32] =     4,
  	/* Just like OPTION_STRING, we use minimum length here */
  	[OPTION_STATIC_ROUTES] = 5,
@@ -26,9 +28,23 @@
  };
  
  
+diff --git a/networking/udhcp/common.h b/networking/udhcp/common.h
+index f8f18ff..56cd8b0 100644
+--- a/networking/udhcp/common.h
++++ b/networking/udhcp/common.h
+@@ -88,6 +88,7 @@ enum {
+ 	OPTION_S32,
+ 	OPTION_BIN,
+ 	OPTION_STATIC_ROUTES,
++	OPTION_6RD,
+ #if ENABLE_FEATURE_UDHCP_RFC3397
+ 	OPTION_DNS_STRING,  /* RFC1035 compressed domain name list */
+ 	OPTION_SIP_SERVERS,
+diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c
+index 78aabed..993326f 100644
 --- a/networking/udhcp/dhcpc.c
 +++ b/networking/udhcp/dhcpc.c
-@@ -45,6 +45,7 @@ static const uint8_t len_of_option_as_st
+@@ -45,6 +45,7 @@ static const uint8_t len_of_option_as_string[] = {
  	[OPTION_IP              ] = sizeof("255.255.255.255 "),
  	[OPTION_IP_PAIR         ] = sizeof("255.255.255.255 ") * 2,
  	[OPTION_STATIC_ROUTES   ] = sizeof("255.255.255.255/32 255.255.255.255 "),
@@ -36,7 +52,7 @@
  	[OPTION_STRING          ] = 1,
  #if ENABLE_FEATURE_UDHCP_RFC3397
  	[OPTION_DNS_STRING      ] = 1, /* unused */
-@@ -68,6 +69,23 @@ static int sprint_nip(char *dest, const 
+@@ -68,6 +69,23 @@ static int sprint_nip(char *dest, const char *pre, const uint8_t *ip)
  	return sprintf(dest, "%s%u.%u.%u.%u", pre, ip[0], ip[1], ip[2], ip[3]);
  }
  
@@ -60,7 +76,7 @@
  /* really simple implementation, just count the bits */
  static int mton(uint32_t mask)
  {
-@@ -177,6 +195,70 @@ static NOINLINE char *xmalloc_optname_op
+@@ -177,6 +195,70 @@ static NOINLINE char *xmalloc_optname_optval(uint8_t *option, const struct dhcp_
  
  			return ret;
  		}
@@ -131,13 +147,3 @@
  #if ENABLE_FEATURE_UDHCP_RFC3397
  		case OPTION_DNS_STRING:
  			/* unpack option into dest; use ret for prefix (i.e., "optname=") */
---- a/networking/udhcp/common.h
-+++ b/networking/udhcp/common.h
-@@ -88,6 +88,7 @@ enum {
- 	OPTION_S32,
- 	OPTION_BIN,
- 	OPTION_STATIC_ROUTES,
-+	OPTION_6RD,
- #if ENABLE_FEATURE_UDHCP_RFC3397
- 	OPTION_DNS_STRING,  /* RFC1035 compressed domain name list */
- 	OPTION_SIP_SERVERS,

+ 0 - 22
package/busybox/patches/245-udhcpc_add_msroutes_option.patch

@@ -1,22 +0,0 @@
---- a/networking/udhcp/common.c
-+++ b/networking/udhcp/common.c
-@@ -53,7 +53,8 @@ const struct dhcp_optflag dhcp_optflags[
- 	{ OPTION_DNS_STRING | OPTION_LIST         , 0x77 }, /* DHCP_DOMAIN_SEARCH */
- 	{ OPTION_SIP_SERVERS                      , 0x78 }, /* DHCP_SIP_SERVERS   */
- #endif
--	{ OPTION_STATIC_ROUTES                    , 0x79 }, /* DHCP_STATIC_ROUTES */
-+	{ OPTION_STATIC_ROUTES                    , 0x79 }, /* DHCP_STATIC_ROUTES (RFC)       */
-+	{ OPTION_STATIC_ROUTES                    , 0xf9 }, /* DHCP_STATIC_ROUTES (Microsoft) */
- 	{ OPTION_6RD                              , 0xd4 }, /* DHCP_6RD (RFC)     */
- 	{ OPTION_6RD                              , 0x96 }, /* DHCP_6RD (Comcast) */
- 	{ OPTION_STRING                           , 0xfc }, /* DHCP_WPAD          */
-@@ -115,7 +116,8 @@ const char dhcp_option_strings[] ALIGN1 
- #endif
- // doesn't work in udhcpd.conf since OPTION_STATIC_ROUTES
- // is not handled yet by "string->option" conversion code:
--	"staticroutes" "\0"/* DHCP_STATIC_ROUTES  */
-+	"staticroutes" "\0"  /* DHCP_STATIC_ROUTES (RFC)       */
-+	"msstaticroutes" "\0"/* DHCP_STATIC_ROUTES (Microsoft) */
- 	"ip6rd" "\0"       /* DHCP_6RD (RFC)      */
- 	"ip6rd" "\0"       /* DHCP_6RD (Comcast)  */
- 	"wpad" "\0"        /* DHCP_WPAD           */

+ 30 - 19
package/busybox/patches/300-netmsg.patch

@@ -1,6 +1,8 @@
+diff --git a/include/applets.src.h b/include/applets.src.h
+index f4fab53..f97f2d8 100644
 --- a/include/applets.src.h
 +++ b/include/applets.src.h
-@@ -278,6 +278,7 @@ IF_MT(APPLET(mt, _BB_DIR_BIN, _BB_SUID_D
+@@ -256,6 +256,7 @@ IF_MT(APPLET(mt, _BB_DIR_BIN, _BB_SUID_DROP))
  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))
@@ -8,9 +10,30 @@
  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))
+diff --git a/include/usage.src.h b/include/usage.src.h
+index 30fef24..ac78992 100644
+--- a/include/usage.src.h
++++ b/include/usage.src.h
+@@ -1,3 +1,4 @@
++
+ /* vi: set sw=8 ts=8: */
+ /*
+  * This file suffers from chronically incorrect tabification
+@@ -2706,6 +2707,9 @@ INSERT
+        " or\n" \
+        "$ nameif -c /etc/my_mactab_file\n" \
+ 
++#define netmsg_trivial_usage NOUSAGE_STR
++#define netmsg_full_usage ""
++
+ #define nmeter_trivial_usage \
+        "format_string"
+ #define nmeter_full_usage "\n\n" \
+diff --git a/networking/Config.src b/networking/Config.src
+index 6dd7df7..4682dd3 100644
 --- a/networking/Config.src
 +++ b/networking/Config.src
-@@ -623,6 +623,12 @@ config FEATURE_NAMEIF_EXTENDED
+@@ -640,6 +640,12 @@ config FEATURE_NAMEIF_EXTENDED
  	    new_interface_name  mac=00:80:C8:38:91:B5
  	    new_interface_name  00:80:C8:38:91:B5
  
@@ -23,6 +46,8 @@
  config NETSTAT
  	bool "netstat"
  	default y
+diff --git a/networking/Kbuild.src b/networking/Kbuild.src
+index f41a2df..6070a40 100644
 --- a/networking/Kbuild.src
 +++ b/networking/Kbuild.src
 @@ -27,6 +27,7 @@ lib-$(CONFIG_IP)           += ip.o
@@ -33,6 +58,9 @@
  lib-$(CONFIG_NETSTAT)      += netstat.o
  lib-$(CONFIG_NSLOOKUP)     += nslookup.o
  lib-$(CONFIG_NTPD)         += ntpd.o
+diff --git a/networking/netmsg.c b/networking/netmsg.c
+new file mode 100644
+index 0000000..43aba0d
 --- /dev/null
 +++ b/networking/netmsg.c
 @@ -0,0 +1,63 @@
@@ -99,20 +127,3 @@
 +	close(s);
 +	exit(1);
 +}
---- a/include/usage.src.h
-+++ b/include/usage.src.h
-@@ -1,3 +1,4 @@
-+
- /* vi: set sw=8 ts=8: */
- /*
-  * This file suffers from chronically incorrect tabification
-@@ -2961,6 +2962,9 @@ INSERT
-        " or\n" \
-        "$ nameif -c /etc/my_mactab_file\n" \
- 
-+#define netmsg_trivial_usage NOUSAGE_STR
-+#define netmsg_full_usage ""
-+
- #define netstat_trivial_usage \
-        "[-laentuwxr"IF_FEATURE_NETSTAT_WIDE("W")IF_FEATURE_NETSTAT_PRG("p")"]"
- #define netstat_full_usage "\n\n" \

+ 0 - 39
package/busybox/patches/610-syslog-remote-retry-connection.patch

@@ -1,39 +0,0 @@
---- a/sysklogd/syslogd.c
-+++ b/sysklogd/syslogd.c
-@@ -555,6 +555,7 @@ static void do_syslogd(void)
- {
- 	int sock_fd;
- #if ENABLE_FEATURE_REMOTE_LOG
-+	int send_err = 0;
- 	llist_t *item;
- #endif
- #if ENABLE_FEATURE_SYSLOGD_DUP
-@@ -636,11 +637,23 @@ static void do_syslogd(void)
- 				if (rh->remoteFD == -1)
- 					continue;
- 			}
--			/* Send message to remote logger, ignore possible error */
--			/* TODO: on some errors, close and set G.remoteFD to -1
--			 * so that DNS resolution and connect is retried? */
--			sendto(rh->remoteFD, recvbuf, sz+1, MSG_DONTWAIT,
--				&(rh->remoteAddr->u.sa), rh->remoteAddr->len);
-+			/* Send message to remote logger */
-+			if (sendto(rh->remoteFD, recvbuf, sz+1, MSG_DONTWAIT,
-+				&(rh->remoteAddr->u.sa), rh->remoteAddr->len) == -1)
-+				send_err = errno;
-+
-+			/* On some errors, close and set G.remoteFD to -1
-+			 * so that DNS resolution and connect is retried */
-+			switch (send_err) {
-+				case ECONNRESET:
-+				case EDESTADDRREQ:
-+				case EISCONN:
-+				case ENOTCONN:
-+				case EPIPE:
-+					close(rh->remoteFD);
-+					rh->remoteFD = -1;
-+					break;
-+			}
- 		}
- #endif
- 		if (!ENABLE_FEATURE_REMOTE_LOG || (option_mask32 & OPT_locallog)) {

+ 0 - 35
package/busybox/patches/920-macosx-endian.patch

@@ -1,35 +0,0 @@
---- a/include/platform.h
-+++ b/include/platform.h
-@@ -154,14 +154,14 @@
- # include <sex.h>
- # define __BIG_ENDIAN__ (BYTE_ORDER == BIG_ENDIAN)
- # define __BYTE_ORDER BYTE_ORDER
--#elif defined __FreeBSD__
-+#elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined (__NetBSD__) || defined(__APPLE__)
- # include <sys/resource.h>	/* rlimit */
- # include <machine/endian.h>
- # define bswap_64 __bswap64
- # define bswap_32 __bswap32
- # define bswap_16 __bswap16
- # define __BIG_ENDIAN__ (_BYTE_ORDER == _BIG_ENDIAN)
--#elif !defined __APPLE__
-+#else
- # include <byteswap.h>
- # include <endian.h>
- #endif
-@@ -172,9 +172,15 @@
- #elif defined(__BYTE_ORDER) && __BYTE_ORDER == __BIG_ENDIAN
- # define BB_BIG_ENDIAN 1
- # define BB_LITTLE_ENDIAN 0
-+#elif defined(_BYTE_ORDER) && _BYTE_ORDER == _BIG_ENDIAN
-+# define BB_BIG_ENDIAN 1
-+# define BB_LITTLE_ENDIAN 0
- #elif (defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN) || defined(__386__)
- # define BB_BIG_ENDIAN 0
- # define BB_LITTLE_ENDIAN 1
-+#elif defined(_BYTE_ORDER) && _BYTE_ORDER == _LITTLE_ENDIAN
-+# define BB_BIG_ENDIAN 0
-+# define BB_LITTLE_ENDIAN 1
- #else
- # error "Can't determine endianness"
- #endif