diff --git a/openwrt/package/busybox/Makefile b/openwrt/package/busybox/Makefile
index 6a359688a5621d2599a058d0f8ac4e55456f4d0e..6e9cf4194a42db696fcf06707d8d79dc730c6c7e 100644
--- a/openwrt/package/busybox/Makefile
+++ b/openwrt/package/busybox/Makefile
@@ -9,13 +9,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=busybox
-PKG_VERSION:=1.1.3
+PKG_VERSION:=1.2.1
 PKG_RELEASE:=1
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=http://www.busybox.net/downloads
-PKG_MD5SUM:=19a0b475169335f17e421cf644616fe7
+PKG_MD5SUM:=362b3dc0f2023ddfda901dc1f1a74391
 PKG_CAT:=bzcat
 
 include $(INCLUDE_DIR)/package.mk
diff --git a/openwrt/package/busybox/config/Config.in b/openwrt/package/busybox/config/Config.in
index eedb4ba4076d985459e860a692915845a16d896c..6a5d6a74d1d5c10c290f9eda7e8a7bea74bca950 100644
--- a/openwrt/package/busybox/config/Config.in
+++ b/openwrt/package/busybox/config/Config.in
@@ -12,9 +12,26 @@ menu "Busybox Settings"
 
 menu "General Configuration"
 
+config BUSYBOX_CONFIG_NITPICK
+	bool "See lots more (probably unnecessary) configuration options."
+	default n
+	help
+	  Some BusyBox applets have more configuration options than anyone
+	  will ever care about.  To avoid drowining people in complexity, most
+	  of the applet features that can be set to a sane default value are
+	  hidden, unless you hit the above switch.
+
+	  This is better than to telling people to edit the busybox source
+	  code, but not by much.
+
+	  See http://en.wikipedia.org/wiki/Fibber_McGee_and_Molly#The_Closet
+
+	  You have been warned.
+
 choice
 	prompt "Buffer allocation policy"
 	default BUSYBOX_CONFIG_FEATURE_BUFFERS_GO_ON_STACK
+	depends on BUSYBOX_CONFIG_NITPICK
 	help
 	  There are 3 ways BusyBox can handle buffer allocations:
 	  - Use malloc. This costs code size for the call to xmalloc.
@@ -36,15 +53,39 @@ config BUSYBOX_CONFIG_FEATURE_BUFFERS_GO_IN_BSS
 
 endchoice
 
+config BUSYBOX_CONFIG_SHOW_USAGE
+	bool "Show terse applet usage messages"
+	default y
+	help
+	  All BusyBox applets will show help messages when invoked with
+	  wrong arguments. You can turn off printing these terse usage
+	  messages if you say no here.
+	  This will save you up to 7k.
+
 config BUSYBOX_CONFIG_FEATURE_VERBOSE_USAGE
 	bool "Show verbose applet usage messages"
 	default y
+	select BUSYBOX_CONFIG_SHOW_USAGE
 	help
 	  All BusyBox applets will show more verbose help messages when
 	  busybox is invoked with --help.  This will add a lot of text to the
 	  busybox binary.  In the default configuration, this will add about
 	  13k, but it can add much more depending on your configuration.
 
+config BUSYBOX_CONFIG_FEATURE_COMPRESS_USAGE
+	bool "Store applet usage messages in compressed form"
+	default n
+	depends on BUSYBOX_CONFIG_SHOW_USAGE && BUSYBOX_CONFIG_NITPICK
+	help
+	  Store usage messages in compressed form, uncompress them on-the-fly
+	  when <applet> --help is called.
+
+	  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_FEATURE_INSTALLER
 	bool "Support --install [-s] to install applet links at runtime"
 	default n
@@ -61,25 +102,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_FEATURE_DEVFS
-	bool "Support for devfs"
+config BUSYBOX_CONFIG_GETOPT_LONG
+	bool
 	default y
-	help
-	  Enable if you want BusyBox to work with devfs.
+#	bool "Enable support for --long-options"
+#	default n
+#	help
+#	  Enable this if you want busybox applets to use the gnu --long-option
+#	  style, in addition to single character -a -b -c style options.
 
 config BUSYBOX_CONFIG_FEATURE_DEVPTS
 	bool "Use the devpts filesystem for Unix98 PTYs"
-	default y if BUSYBOX_CONFIG_FEATURE_DEVFS
+	default y
 	help
 	  Enable if you want BusyBox to use Unix98 PTY support. If enabled,
 	  busybox will use /dev/ptmx for the master side of the pseudoterminal
 	  and /dev/pts/<number> for the slave side.  Otherwise, BSD style
 	  /dev/ttyp<number> will be used. To use this option, you should have
-	  devpts or devfs mounted.
+	  devpts mounted.
 
 config BUSYBOX_CONFIG_FEATURE_CLEAN_UP
 	bool "Clean up all memory before exiting (usually not needed)"
 	default n
+	depends on BUSYBOX_CONFIG_NITPICK
 	help
 	  As a size optimization, busybox normally exits without explicitly
 	  freeing dynamically allocated memory or closing files.  This saves
@@ -93,15 +138,25 @@ config BUSYBOX_CONFIG_FEATURE_SUID
 	bool "Support for SUID/SGID handling"
 	default y
 	help
-	  Support SUID and SGID binaries.
+	  With this option you can install the busybox binary belonging
+	  to root with the suid bit set, and it'll and it'll automatically drop
+	  priviledges for applets that don't need root access.
+
+	  If you're 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 login, passwd, su, ping, traceroute, crontab, dnsd, ipcrm, ipcs,
+	  and vlock.
 
 config BUSYBOX_CONFIG_FEATURE_SUID_CONFIG
 	bool "Runtime SUID/SGID configuration via /etc/busybox.conf"
 	default n if BUSYBOX_CONFIG_FEATURE_SUID
 	depends on BUSYBOX_CONFIG_FEATURE_SUID
 	help
-	  Allow the SUID / SGID state of an applet to be determined runtime by
-	  checking /etc/busybox.conf.  The format of this file is as follows:
+	  Allow the SUID / SGID state of an applet to be determined at runtime
+	  by checking /etc/busybox.conf.  (This is sort of a poor man's sudo.)
+	  The format of this file is as follows:
 
 	  <applet> = [Ssx-][Ssx-][x-] (<username>|<uid>).(<groupname>|<gid>)
 
@@ -138,17 +193,32 @@ config BUSYBOX_CONFIG_SELINUX
 	bool "Support NSA Security Enhanced Linux"
 	default n
 	help
-	  Enable support for SE Linux in applets ls, ps, and id.  Also provide
-	  the option of compiling in SE Linux applets.
+	  Enable support for SELinux in applets ls, ps, and id.  Also provide
+	  the option of compiling in SELinux applets.
 
-	  If you do not have a complete SE Linux Full Userland installed, this
-	  stuff will not compile.  Go visit
+	  If you do not have a complete SELinux userland installed, this stuff
+	  will not compile. Go visit
 		http://www.nsa.gov/selinux/index.html
-	  to download the necessary stuff to allow busybox to compile with this
-	  option enabled.
+	  to download the necessary stuff to allow busybox to compile with
+	  this option enabled. Specifially, libselinux 1.28 or better is
+	  directly required by busybox. If the installation is located in a
+	  non-standard directory, provide it by invoking make as follows:
+		CFLAGS=-I<libselinux-include-path> \
+		LDFLAGS=-L<libselinux-lib-path> \
+		make
 
 	  Most people will leave this set to 'N'.
 
+config BUSYBOX_CONFIG_BUSYBOX_EXEC_PATH
+	string "Path to BusyBox executable"
+	default "/proc/self/exe"
+	help
+	  When Busybox applets need to run other busybox applets, BusyBox
+	  sometimes needs to exec() itself.  When the /proc filesystem is
+	  mounted, /proc/self/exe always points to the currently running
+	  executable.  If you haven't got /proc, set this to wherever you
+	  want to run BusyBox from.
+
 endmenu
 
 menu 'Build Options'
@@ -167,21 +237,18 @@ config BUSYBOX_CONFIG_STATIC
 
 	  Most people will leave this set to 'N'.
 
-# The busybox shared library feature is there so make standalone can produce
-# smaller applets.  Since make standalone isn't in yet, there's nothing using
-# this yet, and so it's disabled.
-config BUSYBOX_CONFIG_DISABLE_SHARED
-	bool
-	default n
-
 config BUSYBOX_CONFIG_BUILD_LIBBUSYBOX
 	bool "Build shared libbusybox"
 	default n
-	depends on BUSYBOX_CONFIG_DISABLE_SHARED
 	help
 	  Build a shared library libbusybox.so which contains all
 	  libraries used inside busybox.
 
+	  This is an experimental feature intended to support the upcoming
+	  "make standalone" mode.  Enabling it against the one big busybox
+	  binary serves no purpose (and increases the size).  You should
+	  almost certainly say "no" to this right now.
+
 config BUSYBOX_CONFIG_FEATURE_FULL_LIBBUSYBOX
 	bool "Feature-complete libbusybox"
 	default n if !CONFIG_FEATURE_SHARED_BUSYBOX
@@ -239,15 +306,6 @@ config BUSYBOX_CROSS_COMPILER_PREFIX
 	  then I would enter '/usr/i386-linux-uclibc/bin/i386-uclibc-' here,
 	  which will ensure the correct compiler is used.
 
-config BUSYBOX_EXTRA_CFLAGS_OPTIONS
-	string
-	default "-Os "
-	help
-	  Do you want to pass any extra CFLAGS options to the compiler as
-	  you build BusyBox? If so, this is the option for you...  For example,
-	  if you want to add some simple compiler switches (like -march=i686),
-	  or check for warnings using -Werror, just those options here.
-
 config BUSYBOX_CONFIG_BUILD_AT_ONCE
 	bool "Compile all sources at once"
 	default n
@@ -272,17 +330,27 @@ endmenu
 menu 'Debugging Options'
 
 config BUSYBOX_CONFIG_DEBUG
-	bool "Build BusyBox with Debugging symbols"
+	bool "Build BusyBox with extra Debugging symbols"
 	default n
 	help
-	  Say Y here if you wish to compile BusyBox with debugging symbols.
-	  This will allow you to use a debugger to examine BusyBox internals
-	  while applets are running.  This increases the size of the binary
-	  considerably and should only be used when doing development.
-	  If you are doing development and want to debug BusyBox, answer Y.
+	  Say Y here if you wish to examine BusyBox internals while applets are
+	  running.  This increases the size of the binary considerably, and
+	  should only be used when doing development.  If you are doing
+	  development and want to debug BusyBox, answer Y.
 
 	  Most people should answer N.
 
+config BUSYBOX_CONFIG_DEBUG_PESSIMIZE
+	bool "Disable compiler optimizations."
+	default n
+	depends on BUSYBOX_CONFIG_DEBUG
+	help
+	  The compiler's optimization of source code can eliminate and reorder
+	  code, resulting in an executable that's hard to understand when
+	  stepping through it with a debugger.  This switches it off, resulting
+	  in a much bigger executable that more closely matches the source
+	  code.
+
 choice
 	prompt "Additional debugging library"
 	default BUSYBOX_CONFIG_NO_DEBUG_LIB
@@ -329,7 +397,7 @@ config BUSYBOX_CONFIG_DEBUG_YANK_SUSv2
 	bool "Disable obsolete features removed before SUSv3?"
 	default y
 	help
-	  This option will disable backwards compatability with SuSv2,
+	  This option will disable backwards compatibility with SuSv2,
 	  specifically, old-style numeric options ('command -1 <file>')
 	  will not be supported in head, tail, and fold.  (Note: should
 	  yank from renice too.)
diff --git a/openwrt/package/busybox/config/archival/Config.in b/openwrt/package/busybox/config/archival/Config.in
index bd5c4b140f72f11d07829babc854589de13ffa42..ac71d753a222e4d4bcba7eea7a89feeccc243ac5 100644
--- a/openwrt/package/busybox/config/archival/Config.in
+++ b/openwrt/package/busybox/config/archival/Config.in
@@ -29,7 +29,7 @@ config BUSYBOX_CONFIG_AR
 	  probably say N here.
 
 config BUSYBOX_CONFIG_FEATURE_AR_LONG_FILENAMES
-	bool "  Enable support for long filenames (not need for debs)"
+	bool "Enable support for long filenames (not need for debs)"
 	default n
 	depends on BUSYBOX_CONFIG_AR
 	help
@@ -89,7 +89,7 @@ config BUSYBOX_CONFIG_DPKG_DEB
 	  probably say N here.
 
 config BUSYBOX_CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY
-	bool "  extract only (-x)"
+	bool "extract only (-x)"
 	default n
 	depends on BUSYBOX_CONFIG_DPKG_DEB
 	help
@@ -106,7 +106,7 @@ config BUSYBOX_CONFIG_GUNZIP
 	  an archive, without decompressing it.
 
 config BUSYBOX_CONFIG_FEATURE_GUNZIP_UNCOMPRESS
-	bool "  Uncompress support"
+	bool "Uncompress support"
 	default y
 	depends on BUSYBOX_CONFIG_GUNZIP
 	help
@@ -150,7 +150,7 @@ config BUSYBOX_CONFIG_TAR
 	  UNIX archive program.
 
 config BUSYBOX_CONFIG_FEATURE_TAR_CREATE
-	bool "  Enable archive creation"
+	bool "Enable archive creation"
 	default y
 	depends on BUSYBOX_CONFIG_TAR
 	help
@@ -158,7 +158,7 @@ config BUSYBOX_CONFIG_FEATURE_TAR_CREATE
 	  tar archives using the `-c' option.
 
 config BUSYBOX_CONFIG_FEATURE_TAR_BZIP2
-	bool "  Enable -j option to handle .tar.bz2 files"
+	bool "Enable -j option to handle .tar.bz2 files"
 	default y
 	depends on BUSYBOX_CONFIG_TAR
 	help
@@ -166,7 +166,7 @@ config BUSYBOX_CONFIG_FEATURE_TAR_BZIP2
 	  archives compressed with bzip2.
 
 config BUSYBOX_CONFIG_FEATURE_TAR_LZMA
-	bool "  Enable -a option to handle .tar.lzma files"
+	bool "Enable -a option to handle .tar.lzma files"
 	default n
 	depends on BUSYBOX_CONFIG_TAR
 	help
@@ -174,7 +174,7 @@ config BUSYBOX_CONFIG_FEATURE_TAR_LZMA
 	  archives compressed with lzma.
 
 config BUSYBOX_CONFIG_FEATURE_TAR_FROM
-	bool "  Enable -X (exclude from) and -T (include from) options)"
+	bool "Enable -X (exclude from) and -T (include from) options)"
 	default y
 	depends on BUSYBOX_CONFIG_TAR
 	help
@@ -182,7 +182,7 @@ config BUSYBOX_CONFIG_FEATURE_TAR_FROM
 	  a list of files to include or exclude from an archive.
 
 config BUSYBOX_CONFIG_FEATURE_TAR_GZIP
-	bool "  Enable -z option"
+	bool "Enable -z option"
 	default y
 	depends on BUSYBOX_CONFIG_TAR
 	help
@@ -190,15 +190,15 @@ config BUSYBOX_CONFIG_FEATURE_TAR_GZIP
 	  when creating or extracting tar gziped archives.
 
 config BUSYBOX_CONFIG_FEATURE_TAR_COMPRESS
-	bool "  Enable -Z option"
+	bool "Enable -Z option"
 	default n
 	depends on BUSYBOX_CONFIG_TAR
 	help
 	  If you enable this option tar will be able to call uncompress,
 	  when extracting .tar.Z archives.
 
-config BUSYBOX_CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY
-	bool "  Enable support for old tar header format"
+config BUSYBOX_CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY
+	bool "Enable support for old tar header format"
 	default n
 	depends on BUSYBOX_CONFIG_TAR
 	help
@@ -207,7 +207,7 @@ config BUSYBOX_CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY
 	  repacking your ancient archives with the new format.
 
 config BUSYBOX_CONFIG_FEATURE_TAR_GNU_EXTENSIONS
-	bool "  Enable support for some GNU tar extensions"
+	bool "Enable support for some GNU tar extensions"
 	default y
 	depends on BUSYBOX_CONFIG_TAR
 	help
@@ -215,9 +215,9 @@ config BUSYBOX_CONFIG_FEATURE_TAR_GNU_EXTENSIONS
 	  linknames.
 
 config BUSYBOX_CONFIG_FEATURE_TAR_LONG_OPTIONS
-	bool "  Enable long options"
+	bool "Enable long options"
 	default n
-	depends on BUSYBOX_CONFIG_TAR
+	depends on BUSYBOX_CONFIG_TAR && BUSYBOX_CONFIG_GETOPT_LONG
 	help
 		Enable use of long options, increases size by about 400 Bytes
 
@@ -244,11 +244,11 @@ config BUSYBOX_CONFIG_UNLZMA
 	  should probably say N here.
 
 config BUSYBOX_CONFIG_FEATURE_LZMA_FAST
-	bool "  Optimze unlzma for speed"
+	bool "Optimze unlzma for speed"
 	default n
 	depends on BUSYBOX_CONFIG_UNLZMA
 	help
-	  This option reduce decompression time by about 33% at the cost of
+	  This option reduces decompression time by about 33% at the cost of
 	  a 2K bigger binary.
 
 config BUSYBOX_CONFIG_UNZIP
@@ -265,7 +265,7 @@ comment "Common options for cpio and tar"
 	depends on BUSYBOX_CONFIG_CPIO || BUSYBOX_CONFIG_TAR
 
 config BUSYBOX_CONFIG_FEATURE_UNARCHIVE_TAPE
-	bool "  Enable tape drive support"
+	bool "Enable tape drive support"
 	default n
 	depends on BUSYBOX_CONFIG_CPIO || BUSYBOX_CONFIG_TAR
 	help
@@ -275,7 +275,7 @@ comment "Common options for dpkg and dpkg_deb"
 	depends on BUSYBOX_CONFIG_DPKG || BUSYBOX_CONFIG_DPKG_DEB
 
 config BUSYBOX_CONFIG_FEATURE_DEB_TAR_GZ
-	bool "  gzip debian packages (normal)"
+	bool "gzip debian packages (normal)"
 	default n if BUSYBOX_CONFIG_DPKG || BUSYBOX_CONFIG_DPKG_DEB
 	depends on BUSYBOX_CONFIG_DPKG || BUSYBOX_CONFIG_DPKG_DEB
 	help
@@ -284,7 +284,7 @@ config BUSYBOX_CONFIG_FEATURE_DEB_TAR_GZ
 	  If you want compatibility with standard .deb's you should say yes here.
 
 config BUSYBOX_CONFIG_FEATURE_DEB_TAR_BZ2
-	bool "  bzip2 debian packages"
+	bool "bzip2 debian packages"
 	default n
 	depends on BUSYBOX_CONFIG_DPKG || BUSYBOX_CONFIG_DPKG_DEB
 	help
@@ -295,7 +295,7 @@ config BUSYBOX_CONFIG_FEATURE_DEB_TAR_BZ2
 	  use an internal control.tar.bz2 or data.tar.bz2.
 
 config BUSYBOX_CONFIG_FEATURE_DEB_TAR_LZMA
-	bool "  lzma debian packages"
+	bool "lzma debian packages"
 	default n
 	depends on BUSYBOX_CONFIG_DPKG || BUSYBOX_CONFIG_DPKG_DEB
 	help
diff --git a/openwrt/package/busybox/config/console-tools/Config.in b/openwrt/package/busybox/config/console-tools/Config.in
index 4faaeb44b6cbe657d8a69a8f21fd996aaae2e69f..1efe300982e4a46b43d12043ee9fab830e4f330b 100644
--- a/openwrt/package/busybox/config/console-tools/Config.in
+++ b/openwrt/package/busybox/config/console-tools/Config.in
@@ -65,6 +65,13 @@ config BUSYBOX_CONFIG_SETCONSOLE
 	  This program redirects the system console to another device,
 	  like the current tty while logged in via telnet.
 
+config BUSYBOX_CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS
+	bool "Enable long options"
+	default n
+	depends on BUSYBOX_CONFIG_SET_CONSOLE && BUSYBOX_CONFIG_GETOPT_LONG
+	help
+	  Support long options for the setconsole applet.
+
 config BUSYBOX_CONFIG_SETKEYCODES
 	bool "setkeycodes"
 	default n
@@ -72,4 +79,10 @@ config BUSYBOX_CONFIG_SETKEYCODES
 	  This program loads entries into the kernel's scancode-to-keycode
 	  map, allowing unusual keyboards to generate usable keycodes.
 
+config BUSYBOX_CONFIG_SETLOGCONS
+	bool "setlogcons"
+	default n
+	help
+	  This program redirects the output console of kernel messages.
+
 endmenu
diff --git a/openwrt/package/busybox/config/coreutils/Config.in b/openwrt/package/busybox/config/coreutils/Config.in
index 53984e3951ce0145d7c86db9a29e47fca814f5f3..6aaee5eb997704cb2746d8f8010f1a63df61a1ab 100644
--- a/openwrt/package/busybox/config/coreutils/Config.in
+++ b/openwrt/package/busybox/config/coreutils/Config.in
@@ -26,6 +26,13 @@ config BUSYBOX_CONFIG_CAT
 	  cat is used to concatenate files and print them to the standard
 	  output.  Enable this option if you wish to enable the 'cat' utility.
 
+config BUSYBOX_CONFIG_CATV
+	bool "catv"
+	default n
+	help
+	  Display nonprinting characters as escape sequences (like some
+	  implementations' cat -v option).
+
 config BUSYBOX_CONFIG_CHGRP
 	bool "chgrp"
 	default y
@@ -52,6 +59,12 @@ config BUSYBOX_CONFIG_CHROOT
 	  chroot is used to change the root directory and run a command.
 	  The default command is `/bin/sh'.
 
+config BUSYBOX_CONFIG_CKSUM
+	bool "cksum"
+	default n
+	help
+	  cksum is used to calculate the CRC32 checksum of a file.
+
 config BUSYBOX_CONFIG_CMP
 	bool "cmp"
 	default n
@@ -87,7 +100,7 @@ config BUSYBOX_CONFIG_DATE
 	  current time in the given format.
 
 config BUSYBOX_CONFIG_FEATURE_DATE_ISOFMT
-	bool "  Enable ISO date format output (-I)"
+	bool "Enable ISO date format output (-I)"
 	default y
 	depends on BUSYBOX_CONFIG_DATE
 	help
@@ -102,6 +115,26 @@ config BUSYBOX_CONFIG_DD
 	  by default) using specific input and output blocksizes,
 	  while optionally performing conversions on it.
 
+config BUSYBOX_CONFIG_FEATURE_DD_SIGNAL_HANDLING
+	bool "Enable DD signal handling for status reporting"
+	default y
+	depends on BUSYBOX_CONFIG_DD
+	help
+	  sending a SIGUSR1 signal to a running `dd' process makes it 
+	  print to standard error the number of records read and written 
+	  so far, then to resume copying.
+
+	  $ dd if=/dev/zero of=/dev/null& pid=$! $ kill -USR1 $pid; sleep 1; kill $pid 
+	  10899206+0 records in 10899206+0 records out
+
+config BUSYBOX_CONFIG_FEATURE_DD_IBS_OBS
+	bool "Enable ibs, obs and conv options"
+	default n
+	depends on BUSYBOX_CONFIG_DD
+	help
+	  Enables support for writing a certain number of bytes in and out,
+	  at a time, and performing conversions on the data stream.
+
 config BUSYBOX_CONFIG_DF
 	bool "df"
 	default y
@@ -109,6 +142,38 @@ config BUSYBOX_CONFIG_DF
 	  df reports the amount of disk space used and available
 	  on filesystems.
 
+config BUSYBOX_CONFIG_DIFF
+	bool "diff"
+	default n
+	help
+	  diff compares two files or directories and outputs the
+	  differences between them in a form that can be given to
+	  the patch command.
+
+config BUSYBOX_CONFIG_FEATURE_DIFF_BINARY
+	bool "Enable checks for binary files"
+	default n
+	depends on BUSYBOX_CONFIG_DIFF
+	help
+	  This option enables support for checking for binary files
+	  before a comparison is carried out.
+
+config BUSYBOX_CONFIG_FEATURE_DIFF_DIR
+	bool "Enable directory support"
+	default n
+	depends on BUSYBOX_CONFIG_DIFF
+	help
+	  This option enables support for directory and subdirectory
+	  comparison.
+
+config BUSYBOX_CONFIG_FEATURE_DIFF_MINIMAL
+	bool "Enable -d option to find smaller sets of changes"
+	default n
+	depends on BUSYBOX_CONFIG_DIFF
+	help
+	  Enabling this option allows the use of -d to make diff
+	  try hard to find the smallest possible set of changes.
+
 config BUSYBOX_CONFIG_DIRNAME
 	bool "dirname"
 	default y
@@ -127,6 +192,9 @@ config BUSYBOX_CONFIG_UNIX2DOS
 	bool
 	default n
 	depends on BUSYBOX_CONFIG_DOS2UNIX
+	help
+	  unix2dos is used to convert a text file from UNIX format to
+	  DOS format, and vice versa.
 
 config BUSYBOX_CONFIG_DU
 	bool "du (default blocksize of 512 bytes)"
@@ -135,8 +203,8 @@ config BUSYBOX_CONFIG_DU
 	  du is used to report the amount of disk space used
 	  for specified files.
 
-config BUSYBOX_CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K
-	bool "  Use a default blocksize of 1024 bytes (1K)"
+config BUSYBOX_CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K
+	bool "Use a default blocksize of 1024 bytes (1K)"
 	default y
 	depends on BUSYBOX_CONFIG_DU
 	help
@@ -150,7 +218,7 @@ config BUSYBOX_CONFIG_ECHO
 
 # this entry also appears in shell/Config.in, next to the echo builtin
 config BUSYBOX_CONFIG_FEATURE_FANCY_ECHO
-	bool "  Enable echo options (-n and -e)"
+	bool "Enable echo options (-n and -e)"
 	default y
 	depends on BUSYBOX_CONFIG_ECHO
 	help
@@ -164,6 +232,13 @@ config BUSYBOX_CONFIG_ENV
 	  a command; without options it displays the current
 	  environment.
 
+config BUSYBOX_CONFIG_FEATURE_ENV_LONG_OPTIONS
+	bool "Enable long options"
+	default n
+	depends on BUSYBOX_CONFIG_ENV && BUSYBOX_CONFIG_GETOPT_LONG
+	help
+	  Support long options for the env applet.
+
 config BUSYBOX_CONFIG_EXPR
 	bool "expr"
 	default y
@@ -172,7 +247,7 @@ config BUSYBOX_CONFIG_EXPR
 	  to standard output.
 
 config BUSYBOX_CONFIG_EXPR_MATH_SUPPORT_64
-	bool "    Extend Posix numbers support to 64 bit"
+	bool "Extend Posix numbers support to 64 bit"
 	default n
 	depends on BUSYBOX_CONFIG_EXPR
 	help
@@ -200,7 +275,7 @@ config BUSYBOX_CONFIG_HEAD
 	  from files.
 
 config BUSYBOX_CONFIG_FEATURE_FANCY_HEAD
-	bool "  Enable head options (-c, -q, and -v)"
+	bool "Enable head options (-c, -q, and -v)"
 	default y
 	depends on BUSYBOX_CONFIG_HEAD
 	help
@@ -225,6 +300,13 @@ config BUSYBOX_CONFIG_INSTALL
 	help
 	  Copy files and set attributes.
 
+config BUSYBOX_CONFIG_FEATURE_INSTALL_LONG_OPTIONS
+	bool "Enable long options"
+	default n
+	depends on BUSYBOX_CONFIG_INSTALL && BUSYBOX_CONFIG_GETOPT_LONG
+	help
+	  Support long options for the install applet.
+
 config BUSYBOX_CONFIG_LENGTH
 	bool "length"
 	default y
@@ -250,56 +332,56 @@ config BUSYBOX_CONFIG_LS
 	  ls is used to list the contents of directories.
 
 config BUSYBOX_CONFIG_FEATURE_LS_FILETYPES
-	bool "  Enable filetyping options (-p and -F)"
+	bool "Enable filetyping options (-p and -F)"
 	default y
 	depends on BUSYBOX_CONFIG_LS
 	help
 	  Enable the ls options (-p and -F).
 
 config BUSYBOX_CONFIG_FEATURE_LS_FOLLOWLINKS
-	bool "  Enable symlinks dereferencing (-L)"
+	bool "Enable symlinks dereferencing (-L)"
 	default y
 	depends on BUSYBOX_CONFIG_LS
 	help
 	  Enable the ls option (-L).
 
 config BUSYBOX_CONFIG_FEATURE_LS_RECURSIVE
-	bool "  Enable recursion (-R)"
+	bool "Enable recursion (-R)"
 	default y
 	depends on BUSYBOX_CONFIG_LS
 	help
 	  Enable the ls option (-R).
 
 config BUSYBOX_CONFIG_FEATURE_LS_SORTFILES
-	bool "  Sort the file names"
+	bool "Sort the file names"
 	default y
 	depends on BUSYBOX_CONFIG_LS
 	help
 	  Allow ls to sort file names alphabetically.
 
 config BUSYBOX_CONFIG_FEATURE_LS_TIMESTAMPS
-	bool "  Show file timestamps"
+	bool "Show file timestamps"
 	default y
 	depends on BUSYBOX_CONFIG_LS
 	help
 	  Allow ls to display timestamps for files.
 
 config BUSYBOX_CONFIG_FEATURE_LS_USERNAME
-	bool "  Show username/groupnames"
+	bool "Show username/groupnames"
 	default y
 	depends on BUSYBOX_CONFIG_LS
 	help
 	  Allow ls to display username/groupname for files.
 
 config BUSYBOX_CONFIG_FEATURE_LS_COLOR
-	bool "  Allow use of color to identify file types"
+	bool "Allow use of color to identify file types"
 	default y
-	depends on BUSYBOX_CONFIG_LS
+	depends on BUSYBOX_CONFIG_LS && BUSYBOX_CONFIG_GETOPT_LONG
 	help
 	  This enables the --color option to ls.
 
 config BUSYBOX_CONFIG_FEATURE_LS_COLOR_IS_DEFAULT
-	bool "  Produce colored ls output by default"
+	bool "Produce colored ls output by default"
 	default y
 	depends on BUSYBOX_CONFIG_FEATURE_LS_COLOR
 	help
@@ -321,6 +403,13 @@ config BUSYBOX_CONFIG_MKDIR
 	help
 	  mkdir is used to create directories with the specified names.
 
+config BUSYBOX_CONFIG_FEATURE_MKDIR_LONG_OPTIONS
+	bool "Enable long options"
+	default n
+	depends on BUSYBOX_CONFIG_MKDIR && BUSYBOX_CONFIG_GETOPT_LONG
+	help
+	  Support long options for the mkdir applet.
+
 config BUSYBOX_CONFIG_MKFIFO
 	bool "mkfifo"
 	default y
@@ -341,6 +430,13 @@ config BUSYBOX_CONFIG_MV
 	help
 	  mv is used to move or rename files or directories.
 
+config BUSYBOX_CONFIG_FEATURE_MV_LONG_OPTIONS
+	bool "Enable long options"
+	default n
+	depends on BUSYBOX_CONFIG_MV && BUSYBOX_CONFIG_GETOPT_LONG
+	help
+	  Support long options for the mv applet.
+
 config BUSYBOX_CONFIG_NICE
 	bool "nice"
 	default n
@@ -416,7 +512,7 @@ config BUSYBOX_CONFIG_SLEEP
 	  sleep is used to pause for a specified number of seconds,
 
 config BUSYBOX_CONFIG_FEATURE_FANCY_SLEEP
-	bool "  Enable multiple integer args and optional time suffixes"
+	bool "Enable multiple integer args and optional time suffixes"
 	default y
 	depends on BUSYBOX_CONFIG_SLEEP
 	help
@@ -429,7 +525,7 @@ config BUSYBOX_CONFIG_SORT
 	  sort is used to sort lines of text in specified files.
 
 config BUSYBOX_CONFIG_FEATURE_SORT_BIG
-	bool "  full SuSv3 compliant sort (Support -ktcsbdfiozgM)"
+	bool "full SuSv3 compliant sort (Support -ktcsbdfiozgM)"
 	default n
 	depends on BUSYBOX_CONFIG_SORT
 	help
@@ -447,7 +543,7 @@ config BUSYBOX_CONFIG_STAT
 	  display file or filesystem status.
 
 config BUSYBOX_CONFIG_FEATURE_STAT_FORMAT
-	bool "  Enable custom formats (-c)"
+	bool "Enable custom formats (-c)"
 	default n
 	depends on BUSYBOX_CONFIG_STAT
 	help
@@ -481,7 +577,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, and -v)"
 	default y
 	depends on BUSYBOX_CONFIG_TAIL
 	help
@@ -496,7 +592,7 @@ config BUSYBOX_CONFIG_TEE
 	  to standard output and files.
 
 config BUSYBOX_CONFIG_FEATURE_TEE_USE_BLOCK_IO
-	bool "  Enable block i/o (larger/faster) instead of byte i/o."
+	bool "Enable block i/o (larger/faster) instead of byte i/o."
 	default y
 	depends on BUSYBOX_CONFIG_TEE
 	help
@@ -507,11 +603,11 @@ config BUSYBOX_CONFIG_TEST
 	default y
 	help
 	  test is used to check file types and compare values,
-	  returning an appropriate exit code. The shells (ash
-	  and bash) have test builtin.
+	  returning an appropriate exit code.  The bash shell
+	  has test built in, ash can build it in optionally.
 
 config BUSYBOX_CONFIG_FEATURE_TEST_64
-	bool "  Extend test to 64 bit"
+	bool "Extend test to 64 bit"
 	default n
 	depends on BUSYBOX_CONFIG_TEST
 	help
@@ -532,7 +628,7 @@ config BUSYBOX_CONFIG_TR
 	  input, writing to standard output.
 
 config BUSYBOX_CONFIG_FEATURE_TR_CLASSES
-	bool "  Enable character classes (such as [:upper:])"
+	bool "Enable character classes (such as [:upper:])"
 	default n
 	depends on BUSYBOX_CONFIG_TR
 	help
@@ -540,7 +636,7 @@ config BUSYBOX_CONFIG_FEATURE_TR_CLASSES
 	  tr [:upper:] [:lower:] to convert input into lowercase.
 
 config BUSYBOX_CONFIG_FEATURE_TR_EQUIV
-	bool "  Enable equivalence classes"
+	bool "Enable equivalence classes"
 	default n
 	depends on BUSYBOX_CONFIG_TR
 	help
@@ -633,7 +729,7 @@ comment "Common options for cp and mv"
 	depends on BUSYBOX_CONFIG_CP || BUSYBOX_CONFIG_MV
 
 config BUSYBOX_CONFIG_FEATURE_PRESERVE_HARDLINKS
-	bool "  Preserve hard links"
+	bool "Preserve hard links"
 	default y
 	depends on BUSYBOX_CONFIG_CP || BUSYBOX_CONFIG_MV
 	help
@@ -643,7 +739,7 @@ comment "Common options for ls, more and telnet"
 	depends on BUSYBOX_CONFIG_LS || BUSYBOX_CONFIG_MORE || BUSYBOX_CONFIG_TELNET
 
 config BUSYBOX_CONFIG_FEATURE_AUTOWIDTH
-	bool "  Calculate terminal & column widths"
+	bool "Calculate terminal & column widths"
 	default y
 	depends on BUSYBOX_CONFIG_LS || BUSYBOX_CONFIG_MORE || BUSYBOX_CONFIG_TELNET
 	help
@@ -657,7 +753,7 @@ comment "Common options for df, du, ls"
 	depends on BUSYBOX_CONFIG_DF || BUSYBOX_CONFIG_DU || BUSYBOX_CONFIG_LS
 
 config BUSYBOX_CONFIG_FEATURE_HUMAN_READABLE
-	bool "  Support for human readable output (example 13k, 23M, 235G)"
+	bool "Support for human readable output (example 13k, 23M, 235G)"
 	default y
 	depends on BUSYBOX_CONFIG_DF || BUSYBOX_CONFIG_DU || BUSYBOX_CONFIG_LS
 	help
@@ -667,7 +763,7 @@ comment "Common options for md5sum, sha1sum"
 	depends on BUSYBOX_CONFIG_MD5SUM || BUSYBOX_CONFIG_SHA1SUM
 
 config BUSYBOX_CONFIG_FEATURE_MD5_SHA1_SUM_CHECK
-	bool "  Enable -c, -s and -w options"
+	bool "Enable -c, -s and -w options"
 	default y
 	depends on BUSYBOX_CONFIG_MD5SUM || BUSYBOX_CONFIG_SHA1SUM
 	help
diff --git a/openwrt/package/busybox/config/debianutils/Config.in b/openwrt/package/busybox/config/debianutils/Config.in
index 71f2bf38af7768372751871b17bf1328a65c4bb7..bc98103c72fd9d38c6504dab00b481484c2d1b3f 100644
--- a/openwrt/package/busybox/config/debianutils/Config.in
+++ b/openwrt/package/busybox/config/debianutils/Config.in
@@ -25,7 +25,7 @@ config BUSYBOX_CONFIG_READLINK
 	  of the file it points to
 
 config BUSYBOX_CONFIG_FEATURE_READLINK_FOLLOW
-	bool "  Enable canonicalization by following all symlinks (-f)"
+	bool "Enable canonicalization by following all symlinks (-f)"
 	default n
 	depends on BUSYBOX_CONFIG_READLINK
 	help
@@ -46,6 +46,13 @@ config BUSYBOX_CONFIG_RUN_PARTS
 	  Unless you know that run-parts is used in some of your scripts
 	  you can safely say N here.
 
+config BUSYBOX_CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS
+	bool "Enable long options"
+	default n
+	depends on BUSYBOX_CONFIG_RUN_PARTS && BUSYBOX_CONFIG_GETOPT_LONG
+	help
+	  Support long options for the run-parts applet.
+
 config BUSYBOX_CONFIG_START_STOP_DAEMON
 	bool "start-stop-daemon"
 	default n
@@ -54,6 +61,22 @@ config BUSYBOX_CONFIG_START_STOP_DAEMON
 	  termination of system-level processes, usually the ones
 	  started during the startup of the system.
 
+config BUSYBOX_CONFIG_FEATURE_START_STOP_DAEMON_FANCY
+	bool "Support additional arguments"
+	default n
+	depends on BUSYBOX_CONFIG_START_STOP_DAEMON
+	help
+	  Support additional arguments.
+	  -o|--oknodo ignored since we exit with 0 anyway
+	  -v|--verbose
+
+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
+	help
+	  Support long options for the start-stop-daemon applet.
+
 config BUSYBOX_CONFIG_WHICH
 	bool "which"
 	default y
diff --git a/openwrt/package/busybox/config/editors/Config.in b/openwrt/package/busybox/config/editors/Config.in
index 85074b333f3304f64077176d901aadcc1306074e..3c1a320bc375bf09ff8f110f2c60d3939efc69af 100644
--- a/openwrt/package/busybox/config/editors/Config.in
+++ b/openwrt/package/busybox/config/editors/Config.in
@@ -13,13 +13,21 @@ config BUSYBOX_CONFIG_AWK
 	  the BusyBox implementation of that programming language.
 
 config BUSYBOX_CONFIG_FEATURE_AWK_MATH
-	bool "  Enable math functions (requires libm)"
+	bool "Enable math functions (requires libm)"
 	default y
 	depends on BUSYBOX_CONFIG_AWK
 	help
 	  Enable math functions of the Awk programming language.
 	  NOTE: This will require libm to be present for linking.
 
+config BUSYBOX_CONFIG_ED
+	bool "ed"
+	default n
+	help
+	  The original 1970's Unix text editor, from the days of teletypes.
+	  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
@@ -43,7 +51,7 @@ config BUSYBOX_CONFIG_VI
 	  you may wish to use something else.
 
 config BUSYBOX_CONFIG_FEATURE_VI_COLON
-	bool "  Enable \":\" colon commands (no \"ex\" mode)"
+	bool "Enable \":\" colon commands (no \"ex\" mode)"
 	default y
 	depends on BUSYBOX_CONFIG_VI
 	help
@@ -51,7 +59,7 @@ config BUSYBOX_CONFIG_FEATURE_VI_COLON
 	  provide an "ex" mode.
 
 config BUSYBOX_CONFIG_FEATURE_VI_YANKMARK
-	bool "  Enable yank/put commands and mark cmds"
+	bool "Enable yank/put commands and mark cmds"
 	default y
 	depends on BUSYBOX_CONFIG_VI
 	help
@@ -59,7 +67,7 @@ config BUSYBOX_CONFIG_FEATURE_VI_YANKMARK
 	  busybox vi.
 
 config BUSYBOX_CONFIG_FEATURE_VI_SEARCH
-	bool "  Enable search and replace cmds"
+	bool "Enable search and replace cmds"
 	default y
 	depends on BUSYBOX_CONFIG_VI
 	help
@@ -67,7 +75,7 @@ config BUSYBOX_CONFIG_FEATURE_VI_SEARCH
 	  busybox vi.
 
 config BUSYBOX_CONFIG_FEATURE_VI_USE_SIGNALS
-	bool "  Catch signals"
+	bool "Catch signals"
 	default y
 	depends on BUSYBOX_CONFIG_VI
 	help
@@ -76,14 +84,14 @@ config BUSYBOX_CONFIG_FEATURE_VI_USE_SIGNALS
 	  Ctrl-Z and Ctrl-C and alarms.
 
 config BUSYBOX_CONFIG_FEATURE_VI_DOT_CMD
-	bool "  Remember previous cmd and \".\" cmd"
+	bool "Remember previous cmd and \".\" cmd"
 	default y
 	depends on BUSYBOX_CONFIG_VI
 	help
 	  Make busybox vi remember the last command and be able to repeat it.
 
 config BUSYBOX_CONFIG_FEATURE_VI_READONLY
-	bool "  Enable -R option and \"view\" mode"
+	bool "Enable -R option and \"view\" mode"
 	default y
 	depends on BUSYBOX_CONFIG_VI
 	help
@@ -91,28 +99,28 @@ config BUSYBOX_CONFIG_FEATURE_VI_READONLY
 	  open a file in read-only mode.
 
 config BUSYBOX_CONFIG_FEATURE_VI_SETOPTS
-	bool "  Enable set-able options, ai ic showmatch"
+	bool "Enable set-able options, ai ic showmatch"
 	default y
 	depends on BUSYBOX_CONFIG_VI
 	help
 	  Enable the editor to set some (ai, ic, showmatch) options.
 
 config BUSYBOX_CONFIG_FEATURE_VI_SET
-	bool "  Support for :set"
+	bool "Support for :set"
 	default y
 	depends on BUSYBOX_CONFIG_VI
 	help
 	  Support for ":set".
 
 config BUSYBOX_CONFIG_FEATURE_VI_WIN_RESIZE
-	bool "  Handle window resize"
+	bool "Handle window resize"
 	default y
 	depends on BUSYBOX_CONFIG_VI
 	help
 	  Make busybox vi behave nicely with terminals that get resized.
 
 config BUSYBOX_CONFIG_FEATURE_VI_OPTIMIZE_CURSOR
-	bool "  Optimize cursor movement"
+	bool "Optimize cursor movement"
 	default y
 	depends on BUSYBOX_CONFIG_VI
 	help
diff --git a/openwrt/package/busybox/config/findutils/Config.in b/openwrt/package/busybox/config/findutils/Config.in
index 9667bfba8110317f369d35e9779a039d5cda507f..e708259888d009357603e337c976da53512ed1f6 100644
--- a/openwrt/package/busybox/config/findutils/Config.in
+++ b/openwrt/package/busybox/config/findutils/Config.in
@@ -11,8 +11,18 @@ config BUSYBOX_CONFIG_FIND
 	help
 	  find is used to search your system to find specified files.
 
+config BUSYBOX_CONFIG_FEATURE_FIND_PRINT0
+	bool "Enable -print0 option"
+	default y
+	depends on BUSYBOX_CONFIG_FIND
+	help
+	  Causes output names to be separated by a null 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 modified time matching (-mtime) option"
 	default n
 	depends on BUSYBOX_CONFIG_FIND
 	help
@@ -20,7 +30,7 @@ config BUSYBOX_CONFIG_FEATURE_FIND_MTIME
 	  files, in days.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_MMIN
-	bool "  Enable modified time matching (-min) option"
+	bool "Enable modified time matching (-min) option"
 	default n
 	depends on BUSYBOX_CONFIG_FIND
 	help
@@ -28,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 permissions matching (-perm) option"
 	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 filetype matching (-type) option"
 	default y
 	depends on BUSYBOX_CONFIG_FIND
 	help
@@ -43,7 +53,7 @@ config BUSYBOX_CONFIG_FEATURE_FIND_TYPE
 	  directory, socket, device, etc.).
 
 config BUSYBOX_CONFIG_FEATURE_FIND_XDEV
-	bool "  Enable stay in filesystem (-xdev) option"
+	bool "Enable stay in filesystem (-xdev) option"
 	default y
 	depends on BUSYBOX_CONFIG_FIND
 	help
@@ -51,7 +61,7 @@ config BUSYBOX_CONFIG_FEATURE_FIND_XDEV
 	  filesystem.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_NEWER
-	bool "  Enable -newer option for comparing file mtimes"
+	bool "Enable -newer option for comparing file mtimes"
 	default n
 	depends on BUSYBOX_CONFIG_FIND
 	help
@@ -59,14 +69,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 inode number matching (-inum) option"
 	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) option allowing execution of commands"
 	default y
 	depends on BUSYBOX_CONFIG_FIND
 	help
@@ -80,7 +90,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 "Support extended regular expressions (egrep & grep -E)"
 	default y
 	depends on BUSYBOX_CONFIG_GREP
 	help
@@ -89,7 +99,7 @@ config BUSYBOX_CONFIG_FEATURE_GREP_EGREP_ALIAS
 	  and various repetition operators.
 
 config BUSYBOX_CONFIG_FEATURE_GREP_FGREP_ALIAS
-	bool "  Alias fgrep to grep -F"
+	bool "Alias fgrep to grep -F"
 	default y
 	depends on BUSYBOX_CONFIG_GREP
 	help
@@ -98,7 +108,7 @@ config BUSYBOX_CONFIG_FEATURE_GREP_FGREP_ALIAS
 	  grep -F is always builtin, this just creates the fgrep alias.
 
 config BUSYBOX_CONFIG_FEATURE_GREP_CONTEXT
-	bool "  Enable before and after context flags (-A, -B and -C)"
+	bool "Enable before and after context flags (-A, -B and -C)"
 	default y
 	depends on BUSYBOX_CONFIG_GREP
 	help
@@ -114,7 +124,7 @@ config BUSYBOX_CONFIG_XARGS
 	  every item from standard input.
 
 config BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION
-	bool "  Enable prompt and confirmation option -p"
+	bool "Enable prompt and confirmation option -p"
 	default y
 	depends on BUSYBOX_CONFIG_XARGS
 	help
@@ -122,7 +132,7 @@ config BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION
 	  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 support single and double quotes and backslash"
 	default y
 	depends on BUSYBOX_CONFIG_XARGS
 	help
@@ -130,7 +140,7 @@ config BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_QUOTES
 	  and backslash for can use aruments with spaces.
 
 config BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT
-	bool "  Enable support options -x"
+	bool "Enable support options -x"
 	default y
 	depends on BUSYBOX_CONFIG_XARGS
 	help
@@ -138,7 +148,7 @@ config BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT
 	  is exceeded.
 
 config BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM
-	bool "  Enable options -0"
+	bool "Enable options -0"
 	default y
 	depends on BUSYBOX_CONFIG_XARGS
 	help
diff --git a/openwrt/package/busybox/config/init/Config.in b/openwrt/package/busybox/config/init/Config.in
index 88dcaca2d343eab3a3537c80234ed7e245550456..3696f7017ff9b5cdd952f50dd8dc2930d27358d5 100644
--- a/openwrt/package/busybox/config/init/Config.in
+++ b/openwrt/package/busybox/config/init/Config.in
@@ -11,15 +11,23 @@ config BUSYBOX_CONFIG_INIT
 	help
 	  init is the first program run when the system boots.
 
+config BUSYBOX_CONFIG_DEBUG_INIT
+	bool "debugging aid"
+	default n
+	depends on BUSYBOX_CONFIG_INIT
+	help
+	  Turn this on to disable all the dangerous
+	  rebooting stuff when debugging.
+
 config BUSYBOX_CONFIG_FEATURE_USE_INITTAB
-	bool "  Support reading an inittab file"
+	bool "Support reading an inittab file"
 	default y
 	depends on BUSYBOX_CONFIG_INIT
 	help
 	  Allow init to read an inittab file when the system boot.
 
 config BUSYBOX_CONFIG_FEATURE_INIT_SCTTY
-	bool "  Support running commands with a controlling-tty"
+	bool "Support running commands with a controlling-tty"
 	default n
 	depends on BUSYBOX_CONFIG_INIT
 	help
@@ -30,14 +38,14 @@ config BUSYBOX_CONFIG_FEATURE_INIT_SCTTY
 	  the console is only accessed during development or for maintenance.
 
 config BUSYBOX_CONFIG_FEATURE_EXTRA_QUIET
-	bool "  Be _extra_ quiet on boot"
+	bool "Be _extra_ quiet on boot"
 	default n
 	depends on BUSYBOX_CONFIG_INIT
 	help
 	  Prevent init from logging some messages to the console during boot.
 
 config BUSYBOX_CONFIG_FEATURE_INIT_COREDUMPS
-	bool "  Support dumping core for child processes (debugging only)"
+	bool "Support dumping core for child processes (debugging only)"
 	default n
 	depends on BUSYBOX_CONFIG_INIT
 	help
@@ -49,7 +57,7 @@ config BUSYBOX_CONFIG_FEATURE_INIT_COREDUMPS
 
 
 config BUSYBOX_CONFIG_FEATURE_INITRD
-	bool "  Support running init from within an initrd (not initramfs)"
+	bool "Support running init from within an initrd (not initramfs)"
 	default n
 	depends on BUSYBOX_CONFIG_INIT
 	help
@@ -72,9 +80,4 @@ config BUSYBOX_CONFIG_MESG
 	  Mesg controls access to your terminal by others.  It is typically
 	  used to allow or disallow other users to write to your terminal
 
-	default y
-	help
-	  Stop all processes and (try to) power off the system.
-
 endmenu
-
diff --git a/openwrt/package/busybox/config/loginutils/Config.in b/openwrt/package/busybox/config/loginutils/Config.in
index 621d57643f2a5fc99e58563fffc3ab7b4ef8c142..33a764e35ce083485b0a20b9ebc69150ebc61bcf 100644
--- a/openwrt/package/busybox/config/loginutils/Config.in
+++ b/openwrt/package/busybox/config/loginutils/Config.in
@@ -84,14 +84,14 @@ config BUSYBOX_CONFIG_GETTY
 	  getty lets you log in on a tty, it is normally invoked by init.
 
 config BUSYBOX_CONFIG_FEATURE_UTMP
-	bool "  Support utmp file"
+	bool "Support utmp file"
 	depends on BUSYBOX_CONFIG_GETTY || BUSYBOX_CONFIG_LOGIN || BUSYBOX_CONFIG_SU || BUSYBOX_CONFIG_WHO
 	default n
 	help
 	  The file /var/run/utmp is used to track who is currently logged in.
 
 config BUSYBOX_CONFIG_FEATURE_WTMP
-	bool "  Support wtmp file"
+	bool "Support wtmp file"
 	depends on BUSYBOX_CONFIG_GETTY || BUSYBOX_CONFIG_LOGIN || BUSYBOX_CONFIG_SU || BUSYBOX_CONFIG_LAST
 	default n
 	select BUSYBOX_CONFIG_FEATURE_UTMP
@@ -110,7 +110,7 @@ config BUSYBOX_CONFIG_LOGIN
 	  work properly.
 
 config BUSYBOX_CONFIG_FEATURE_SECURETTY
-	bool "  Support for /etc/securetty"
+	bool "Support for /etc/securetty"
 	default n
 	depends on BUSYBOX_CONFIG_LOGIN
 	help
diff --git a/openwrt/package/busybox/config/miscutils/Config.in b/openwrt/package/busybox/config/miscutils/Config.in
index 404170188eeb41078af61d5fc5b68342e85ff804..f13d8ba0bc85624fd38cab8bdb267fc40bef1659 100644
--- a/openwrt/package/busybox/config/miscutils/Config.in
+++ b/openwrt/package/busybox/config/miscutils/Config.in
@@ -34,8 +34,15 @@ config BUSYBOX_CONFIG_CROND
 	  Note that Busybox binary must be setuid root for this applet to
 	  work properly.
 
+config BUSYBOX_CONFIG_DEBUG_CROND_OPTION
+	bool "Support debug option -d"
+	depends on BUSYBOX_CONFIG_CROND
+	default n
+	help
+	  Support option -d to enter debug mode.
+
 config BUSYBOX_CONFIG_FEATURE_CROND_CALL_SENDMAIL
-	bool "  Using /usr/sbin/sendmail?"
+	bool "Using /usr/sbin/sendmail?"
 	default n
 	depends on BUSYBOX_CONFIG_CROND
 	help
@@ -57,9 +64,11 @@ config BUSYBOX_CONFIG_DC
 	  precision arithmetic.
 
 config BUSYBOX_CONFIG_DEVFSD
-	bool "devfsd"
+	bool "devfsd (obsolete)"
 	default n
 	help
+	  This is deprecated, and will be going away in a future release.
+
 	  Provides compatibility with old device names on a devfs systems.
 	  You should set it to true if you have devfs enabled.
 	  The following keywords in devsfd.conf are supported:
@@ -74,7 +83,8 @@ config BUSYBOX_CONFIG_DEVFSD_MODLOAD
 	default n
 	depends on BUSYBOX_CONFIG_DEVFSD
 	help
-	  This actually doesn't work with busybox  modutils but needs the real modutils.
+	  This actually doesn't work with busybox modutils but needs
+	  the external modutils.
 
 config BUSYBOX_CONFIG_DEVFSD_FG_NP
 	bool "Enables the -fg and -np options"
@@ -91,6 +101,17 @@ config BUSYBOX_CONFIG_DEVFSD_VERBOSE
 	help
 	  Increases logging to stderr or syslog.
 
+config BUSYBOX_CONFIG_FEATURE_DEVFS
+	bool "  Use devfs names for all devices (obsolete)"
+	default y
+	help
+	  This tells busybox to look for names like /dev/loop/0 instead of
+	  /dev/loop0.  If your /dev directory has normal names instead of
+	  devfs names, you don't want this.
+
+	  This is obsolete and will be going away someday.  Consider it
+	  deprecated.
+
 config BUSYBOX_CONFIG_EJECT
 	bool "eject"
 	default n
@@ -112,7 +133,7 @@ config BUSYBOX_CONFIG_LESS
 	  a wide array of features, and is an improvement over 'more'.
 
 config BUSYBOX_CONFIG_FEATURE_LESS_BRACKETS
-	bool "  Enable bracket searching"
+	bool "Enable bracket searching"
 	default n
 	depends on BUSYBOX_CONFIG_LESS
 	help
@@ -120,7 +141,7 @@ config BUSYBOX_CONFIG_FEATURE_LESS_BRACKETS
 	  brackets, facilitating programming.
 
 config BUSYBOX_CONFIG_FEATURE_LESS_FLAGS
-	bool "  Enable extra flags"
+	bool "Enable extra flags"
 	default n
 	depends on BUSYBOX_CONFIG_LESS
 	help
@@ -130,7 +151,7 @@ config BUSYBOX_CONFIG_FEATURE_LESS_FLAGS
 	  The -m flag enables a simpler status line with a percentage.
 
 config BUSYBOX_CONFIG_FEATURE_LESS_FLAGCS
-	bool "  Enable flag changes"
+	bool "Enable flag changes"
 	default n
 	depends on BUSYBOX_CONFIG_LESS
 	help
@@ -138,14 +159,14 @@ config BUSYBOX_CONFIG_FEATURE_LESS_FLAGCS
 	  less itself.
 
 config BUSYBOX_CONFIG_FEATURE_LESS_MARKS
-	bool "  Enable marks"
+	bool "Enable marks"
 	default n
 	depends on BUSYBOX_CONFIG_LESS
 	help
 	  Marks enable positions in a file to be stored for easy reference.
 
 config BUSYBOX_CONFIG_FEATURE_LESS_REGEXP
-	bool "  Enable regular expressions"
+	bool "Enable regular expressions"
 	default n
 	depends on BUSYBOX_CONFIG_LESS
 	help
@@ -160,16 +181,17 @@ config BUSYBOX_CONFIG_HDPARM
 	  BUSYBOX_CONFIG_FEATURE_HDPARM_GET_IDENTITY option)....
 
 config BUSYBOX_CONFIG_FEATURE_HDPARM_GET_IDENTITY
-	bool "  Support obtaining detailed information directly from drives"
+	bool "Support obtaining detailed information directly from drives"
 	default n
 	depends on BUSYBOX_CONFIG_HDPARM
 	help
-	  Enables the -I and -Istdin options to obtain detailed information
+	  Enables the -I and -i options to obtain detailed information
 	  directly from drives about their capabilities and supported ATA
-	  feature set.  Enabling this option will add about 16k...
+	  feature set. If no device name is specified, hdparm will read
+	  identify data from stdin. Enabling this option will add about 16k...
 
 config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF
-	bool "  Register an IDE interface (DANGEROUS)"
+	bool "Register an IDE interface (DANGEROUS)"
 	default n
 	depends on BUSYBOX_CONFIG_HDPARM
 	help
@@ -177,7 +199,7 @@ config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF
 	  This is dangerous stuff, so you should probably say N.
 
 config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF
-	bool "  Un-register an IDE interface (DANGEROUS)"
+	bool "Un-register an IDE interface (DANGEROUS)"
 	default n
 	depends on BUSYBOX_CONFIG_HDPARM
 	help
@@ -185,7 +207,7 @@ config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF
 	  This is dangerous stuff, so you should probably say N.
 
 config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET
-	bool "  perform device reset (DANGEROUS)"
+	bool "perform device reset (DANGEROUS)"
 	default n
 	depends on BUSYBOX_CONFIG_HDPARM
 	help
@@ -193,7 +215,7 @@ config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET
 	  This is dangerous stuff, so you should probably say N.
 
 config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF
-	bool "  tristate device for hotswap (DANGEROUS)"
+	bool "tristate device for hotswap (DANGEROUS)"
 	default n
 	depends on BUSYBOX_CONFIG_HDPARM
 	help
@@ -202,7 +224,7 @@ config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF
 	  stuff, so you should probably say N.
 
 config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA
-	bool "  get/set using_dma flag (DANGEROUS)"
+	bool "get/set using_dma flag (DANGEROUS)"
 	default n
 	depends on BUSYBOX_CONFIG_HDPARM
 	help
@@ -231,7 +253,7 @@ config BUSYBOX_CONFIG_MAKEDEVS
           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 makde with one command.
+	  a batch of unrelated devices to be made with one command.
           User/group names are allowed as an alternative to uid/gid.
 
 choice
@@ -289,6 +311,18 @@ config BUSYBOX_CONFIG_SETSID
 	help
 	  setsid runs a program in a new session
 
+config BUSYBOX_CONFIG_TASKSET
+	bool "taskset"
+	default n
+	help
+	  Retrieve or set a processes's CPU affinity
+
+config BUSYBOX_CONFIG_TASKSET
+	bool "taskset"
+	default n
+	help
+	  Retrieve or set a processes's CPU affinity (on linux)
+
 config BUSYBOX_CONFIG_TIME
 	bool "time"
 	default y
diff --git a/openwrt/package/busybox/config/modutils/Config.in b/openwrt/package/busybox/config/modutils/Config.in
index 7c9f50f16d3f0b9a2cb3b7a9abcd4abecef46e4a..8151914100fd9a1454b7548b2a4de15c4d7f2630 100644
--- a/openwrt/package/busybox/config/modutils/Config.in
+++ b/openwrt/package/busybox/config/modutils/Config.in
@@ -84,7 +84,7 @@ config BUSYBOX_CONFIG_MODPROBE
 	bool "modprobe"
 	default n
 	help
-	  Handle the loading of modules, and their dependancies on a high
+	  Handle the loading of modules, and their dependencies on a high
 	  level.
 
 	  Note that in the state, modprobe does not understand multiple
@@ -111,7 +111,7 @@ comment "Options common to multiple modutils"
 
 config BUSYBOX_CONFIG_FEATURE_CHECK_TAINTED_MODULE
 	# Simulate indentation
-	bool "  Support tainted module checking with new kernels"
+	bool "Support tainted module checking with new kernels"
 	default n
 	depends on BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_LSMOD
 	help
@@ -122,7 +122,7 @@ config BUSYBOX_CONFIG_FEATURE_CHECK_TAINTED_MODULE
 
 config BUSYBOX_CONFIG_FEATURE_2_4_MODULES
 	# Simulate indentation
-	bool "  Support version 2.2.x to 2.4.x Linux kernels"
+	bool "Support version 2.2.x to 2.4.x Linux kernels"
 	default y
 	depends on BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_RMMOD
 	help
@@ -130,7 +130,7 @@ config BUSYBOX_CONFIG_FEATURE_2_4_MODULES
 
 config BUSYBOX_CONFIG_FEATURE_2_6_MODULES
 	# Simulate indentation
-	bool "  Support version 2.6.x Linux kernels"
+	bool "Support version 2.6.x Linux kernels"
 	default y
 	depends on BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_RMMOD || BUSYBOX_CONFIG_MODPROBE
 	help
diff --git a/openwrt/package/busybox/config/networking/Config.in b/openwrt/package/busybox/config/networking/Config.in
index 7e280b76e2aca060b38f7b3ef5b52a44ea0dbe17..3e0cbc95d42177aecd890ec8669d4afb292a652f 100644
--- a/openwrt/package/busybox/config/networking/Config.in
+++ b/openwrt/package/busybox/config/networking/Config.in
@@ -9,8 +9,8 @@ config BUSYBOX_CONFIG_FEATURE_IPV6
 	bool "Enable IPv6 support"
 	default y
 	help
-	  Enable IPv6 support to busybox. This makes applets that talk IP
-	  able to work with IPv6.
+	  Enable IPv6 support in busybox.
+	  This adds IPv6 support in the networking applets.
 
 config BUSYBOX_CONFIG_ARPING
 	bool "arping"
@@ -22,7 +22,7 @@ config BUSYBOX_CONFIG_DNSD
 	bool "dnsd"
 	default n
 	help
-	  Small and static DNS server deamon. 
+	  Small and static DNS server daemon. 
 
 config BUSYBOX_CONFIG_ETHER_WAKE
 	bool "ether-wake"
@@ -34,8 +34,8 @@ config BUSYBOX_CONFIG_FAKEIDENTD
 	bool "fakeidentd"
 	default n
 	help
-	  fakeidentd listens to the ident port and returns a set fake
-	  value whatever it gets.
+	  fakeidentd listens on the ident port and returns a predefined
+	  fake value on any query.
 
 config BUSYBOX_CONFIG_FTPGET
 	bool "ftpget"
@@ -49,6 +49,13 @@ config BUSYBOX_CONFIG_FTPPUT
 	help
 	  Store a remote file via FTP.
 
+config BUSYBOX_CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS
+	bool "Enable long options in ftpget/ftpput"
+	default n
+	depends on BUSYBOX_CONFIG_GETOPT_LONG && (CONFIG_FTPGET || BUSYBOX_CONFIG_FTPPUT)
+	help
+	  Support long options for the ftpget/ftpput applet.
+
 config BUSYBOX_CONFIG_HOSTNAME
 	bool "hostname"
 	default n
@@ -61,52 +68,50 @@ config BUSYBOX_CONFIG_HTTPD
 	help
 	  Serve web pages via an HTTP server.
 
-config BUSYBOX_CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY
-	bool "  Support using httpd only from inetd"
-	default n
-	depends on BUSYBOX_CONFIG_HTTPD
-	help
-	  This option disables uid and port options for the httpd applet
-	  but requires inetd server daemon.
-
-config BUSYBOX_CONFIG_FEATURE_HTTPD_BASIC_AUTH
-	bool "  Enable Basic http Authentication"
+config BUSYBOX_CONFIG_FEATURE_HTTPD_WITHOUT_INETD
+	bool "Support using httpd as a daemon (not from inetd)"
 	default y
 	depends on BUSYBOX_CONFIG_HTTPD
 	help
-	  Utilizes password settings from /etc/httpd.conf for basic
-	  authentication on a per url basis.
+	  This option enables uid and port options for the httpd applet,
+	  and eliminates the need to be called from the inetd server daemon.
 
-config BUSYBOX_CONFIG_FEATURE_HTTPD_AUTH_MD5
-	bool "  Support MD5 crypted passwords for http Authentication"
-	default y
-	depends on BUSYBOX_CONFIG_FEATURE_HTTPD_BASIC_AUTH
-	help
-	  Enables basic per url authentication from /etc/httpd.conf
-	  using md5 passwords.
-
-if !CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY
 config BUSYBOX_CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP
-	bool "  Support reloading the global config file using hup signal"
-	default y
-	depends on BUSYBOX_CONFIG_HTTPD
+	bool "Support reloading the global config file using hup signal"
+	default n
+	depends on BUSYBOX_CONFIG_HTTPD && BUSYBOX_CONFIG_FEATURE_HTTPD_WITHOUT_INETD
 	help
 	  This option enables processing of SIGHUP to reload cached
 	  configuration settings.
 
 config BUSYBOX_CONFIG_FEATURE_HTTPD_SETUID
-	bool "  Enable support -u <user> option"
+	bool "Enable support -u <user> option"
 	default n
-	depends on BUSYBOX_CONFIG_HTTPD
+	depends on BUSYBOX_CONFIG_HTTPD && BUSYBOX_CONFIG_FEATURE_HTTPD_WITHOUT_INETD
 	help
 	  This option allows the server to run as a specific user
 	  rather than defaulting to the user that starts the server.
 	  Use of this option requires special privileges to change to a
 	  different user.
-endif
+
+config BUSYBOX_CONFIG_FEATURE_HTTPD_BASIC_AUTH
+	bool "Enable Basic http Authentication"
+	default y
+	depends on BUSYBOX_CONFIG_HTTPD
+	help
+	  Utilizes password settings from /etc/httpd.conf for basic
+	  authentication on a per url basis.
+
+config BUSYBOX_CONFIG_FEATURE_HTTPD_AUTH_MD5
+	bool "Support MD5 crypted passwords for http Authentication"
+	default y
+	depends on BUSYBOX_CONFIG_FEATURE_HTTPD_BASIC_AUTH
+	help
+	  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"
+	bool "Support loading additional MIME types at run-time"
 	default y
 	depends on BUSYBOX_CONFIG_HTTPD
 	help
@@ -114,26 +119,26 @@ config BUSYBOX_CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES
 	  run-time to be specified in the configuration file.
 
 config BUSYBOX_CONFIG_FEATURE_HTTPD_CGI
-	bool "  Support Common Gateway Interface (CGI)"
+	bool "Support Common Gateway Interface (CGI)"
 	default y
 	depends on BUSYBOX_CONFIG_HTTPD
 	help
 	  This option allows scripts and executables to be invoked
-	  when specific urls are requested.
+	  when specific URLs are requested.
 
 config BUSYBOX_CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR
-	bool "  Enable support for running scripts through an interpreter"
+	bool "Enable support for running scripts through an interpreter"
 	default n
 	depends on BUSYBOX_CONFIG_FEATURE_HTTPD_CGI
 	help
 	  This option enables support for running scripts through an 
-	  interpreter. Turn this on, if you want PHP scripts to work 
+	  interpreter. Turn this on if you want PHP scripts to work 
 	  properly. You need to supply an addition line in your httpd 
 	  config file:
 	  *.php:/path/to/your/php
 
 config BUSYBOX_CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV
-	bool "  Support the REMOTE_PORT environment variable for CGI"
+	bool "Support the REMOTE_PORT environment variable for CGI"
 	default y
 	depends on BUSYBOX_CONFIG_FEATURE_HTTPD_CGI
 	help
@@ -141,11 +146,11 @@ config BUSYBOX_CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV
 	  references that contain a unique port number.
 
 config BUSYBOX_CONFIG_FEATURE_HTTPD_ENCODE_URL_STR
-	bool "  Enable the -e option for shell script CGI simplification."
+	bool "Enable the -e option for shell script CGI simplification."
 	default y
 	depends on BUSYBOX_CONFIG_HTTPD
 	help
-	  After set, this option allows html encoding arbitrary
+	  This option allows html encoding arbitrary
 	  strings for display of the browser.  Output goes to stdout.
 	  For example, httpd -e "<Hello World>" as
 	  "&#60Hello&#32World&#62".
@@ -157,7 +162,7 @@ config BUSYBOX_CONFIG_IFCONFIG
 	  Ifconfig is used to configure the kernel-resident network interfaces.
 
 config BUSYBOX_CONFIG_FEATURE_IFCONFIG_STATUS
-	bool "  Enable status reporting output (+7k)"
+	bool "Enable status reporting output (+7k)"
 	default y
 	depends on BUSYBOX_CONFIG_IFCONFIG
 	help
@@ -165,7 +170,7 @@ config BUSYBOX_CONFIG_FEATURE_IFCONFIG_STATUS
 	  of the currently active interfaces.
 
 config BUSYBOX_CONFIG_FEATURE_IFCONFIG_SLIP
-	bool "  Enable slip-specific options \"keepalive\" and \"outfill\""
+	bool "Enable slip-specific options \"keepalive\" and \"outfill\""
 	default n
 	depends on BUSYBOX_CONFIG_IFCONFIG
 	help
@@ -173,7 +178,7 @@ config BUSYBOX_CONFIG_FEATURE_IFCONFIG_SLIP
 	  planning on using serial lines, leave this unchecked.
 
 config BUSYBOX_CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ
-	bool "  Enable options \"mem_start\", \"io_addr\", and \"irq\""
+	bool "Enable options \"mem_start\", \"io_addr\", and \"irq\""
 	default n
 	depends on BUSYBOX_CONFIG_IFCONFIG
 	help
@@ -181,7 +186,7 @@ config BUSYBOX_CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ
 	  and/or the interrupt line used by the specified device.
 
 config BUSYBOX_CONFIG_FEATURE_IFCONFIG_HW
-	bool "  Enable option \"hw\" (ether only)"
+	bool "Enable option \"hw\" (ether only)"
 	default y
 	depends on BUSYBOX_CONFIG_IFCONFIG
 	help
@@ -190,7 +195,7 @@ config BUSYBOX_CONFIG_FEATURE_IFCONFIG_HW
 	  class.
 
 config BUSYBOX_CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS
-	bool "  Set the broadcast automatically"
+	bool "Set the broadcast automatically"
 	default y
 	depends on BUSYBOX_CONFIG_IFCONFIG
 	help
@@ -215,7 +220,7 @@ config BUSYBOX_CONFIG_IFUPDOWN
 	  standalone utilities.
 
 config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IP
-	bool "  Use ip applet"
+	bool "Use ip applet"
 	default n
 	depends on BUSYBOX_CONFIG_IFUPDOWN
 	help
@@ -223,7 +228,7 @@ config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IP
 	  than the default of using the older 'ifconfig' and 'route' utilities.
 
 config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN
-	bool "  Use busybox ip applet"
+	bool "Use busybox ip applet"
 	default n
 	depends on BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IP
 	select BUSYBOX_CONFIG_IP
@@ -237,7 +242,7 @@ config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN
 	  utility or the  "ifup" and "ifdown" applets will not work.
 
 config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN
-	bool "  Use busybox ifconfig and route applets"
+	bool "Use busybox ifconfig and route applets"
 	default n
 	depends on BUSYBOX_CONFIG_IFUPDOWN && !CONFIG_FEATURE_IFUPDOWN_IP
 	select BUSYBOX_CONFIG_IFCONFIG
@@ -251,21 +256,21 @@ config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN
 	  work.
 
 config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IPV4
-	bool "  Enable support for IPv4"
+	bool "Enable support for IPv4"
 	default n
 	depends on BUSYBOX_CONFIG_IFUPDOWN
 	help
 	  If you want busybox to talk IPv4, leave this on.
 
 config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IPV6
-	bool "  Enable support for IPv6"
+	bool "Enable support for IPv6"
 	default n
-	depends on BUSYBOX_CONFIG_IFUPDOWN
+	depends on BUSYBOX_CONFIG_IFUPDOWN && BUSYBOX_CONFIG_FEATURE_IPV6
 	help
 	  If you need support for IPv6, turn this option on.
 
 config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IPX
-	bool "  Enable support for IPX"
+	bool "Enable support for IPX"
 	default n
 	depends on BUSYBOX_CONFIG_IFUPDOWN
 	help
@@ -273,7 +278,7 @@ config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IPX
 	  networks.
 
 config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_MAPPING
-	bool "  Enable mapping support"
+	bool "Enable mapping support"
 	default n
 	depends on BUSYBOX_CONFIG_IFUPDOWN
 	help
@@ -286,43 +291,43 @@ config BUSYBOX_CONFIG_INETD
 	help
 	  Internet superserver daemon
 
-config BUSYBOX_CONFIG_FEATURE_INETD_SUPPORT_BILTIN_ECHO
-	bool "  Support echo service"
+config BUSYBOX_CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO
+	bool "Support echo service"
 	default n
 	depends on BUSYBOX_CONFIG_INETD
 	help
 	  Echo received data internal inetd service
 
-config BUSYBOX_CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DISCARD
-	bool "  Support discard service"
+config BUSYBOX_CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD
+	bool "Support discard service"
 	default n
 	depends on BUSYBOX_CONFIG_INETD
 	help
 	  Internet /dev/null internal inetd service
 
-config BUSYBOX_CONFIG_FEATURE_INETD_SUPPORT_BILTIN_TIME
-	bool "  Support time service"
+config BUSYBOX_CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME
+	bool "Support time service"
 	default n
 	depends on BUSYBOX_CONFIG_INETD
 	help
 	  Return 32 bit time since 1900 internal inetd service
 
-config BUSYBOX_CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DAYTIME
-	bool "  Support daytime service"
+config BUSYBOX_CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME
+	bool "Support daytime service"
 	default n
 	depends on BUSYBOX_CONFIG_INETD
 	help
 	  Return human-readable time internal inetd service
 
-config BUSYBOX_CONFIG_FEATURE_INETD_SUPPORT_BILTIN_CHARGEN
-	bool "  Support chargen service"
+config BUSYBOX_CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN
+	bool "Support chargen service"
 	default n
 	depends on BUSYBOX_CONFIG_INETD
 	help
 	  Familiar character generator internal inetd service
 
 config BUSYBOX_CONFIG_FEATURE_INETD_RPC
-	bool "  Support RPC services"
+	bool "Support RPC services"
 	default n
 	depends on BUSYBOX_CONFIG_INETD
 	help
@@ -337,99 +342,88 @@ config BUSYBOX_CONFIG_IP
 	  utility.  You generally don't need "ip" to use busybox with
 	  TCP/IP.
 
-if BUSYBOX_CONFIG_IP && BUSYBOX_CONFIG_IPADDR
-	config BUSYBOX_CONFIG_FEATURE_IP_ADDRESS
-		default n
-	comment "  address (forced enabled for ipaddr)"
-endif
-if ! (CONFIG_IP && BUSYBOX_CONFIG_IPADDR)
-	config BUSYBOX_CONFIG_FEATURE_IP_ADDRESS
-		bool "  address"
-		default n
-		depends on BUSYBOX_CONFIG_IP
-		help
-		  Address manipulation support for the "ip" applet.
-endif
-
-if BUSYBOX_CONFIG_IP && BUSYBOX_CONFIG_IPLINK
-	config BUSYBOX_CONFIG_FEATURE_IP_LINK
-		default n
-	comment "  link (forced enabled for iplink)"
-endif
-if !(CONFIG_IP && BUSYBOX_CONFIG_IPLINK)
-	config BUSYBOX_CONFIG_FEATURE_IP_LINK
-		bool "  link"
-		default n
-		depends on BUSYBOX_CONFIG_IP
-		help
-		  Configure network devices with "ip".
-endif
-
-if BUSYBOX_CONFIG_IP && BUSYBOX_CONFIG_IPROUTE
-	config BUSYBOX_CONFIG_FEATURE_IP_ROUTE
-		default n
-	comment "  route (forced enabled for iproute)"
-endif
-if !(CONFIG_IP && BUSYBOX_CONFIG_IPROUTE)
-	config BUSYBOX_CONFIG_FEATURE_IP_ROUTE
-		bool "  route"
-		default n
-		depends on BUSYBOX_CONFIG_IP
-		help
-		  Add support for routing table management to "ip".
-endif
-
-if BUSYBOX_CONFIG_IP && BUSYBOX_CONFIG_IPTUNNEL
-	config BUSYBOX_CONFIG_FEATURE_IP_TUNNEL
-		default n
-	comment "  tunnel (forced enabled for iptunnel)"
-endif
-if !(CONFIG_IP && BUSYBOX_CONFIG_IPTUNNEL)
-	config BUSYBOX_CONFIG_FEATURE_IP_TUNNEL
-		bool "  tunnel"
-		default n
-		depends on BUSYBOX_CONFIG_IP
-		help
-		  Add support for tunneling commands to "ip".
-endif
+config BUSYBOX_CONFIG_FEATURE_IP_ADDRESS
+	bool "ip address"
+	default n
+	depends on BUSYBOX_CONFIG_IP
+	help
+	  Address manipulation support for the "ip" applet.
 
-config BUSYBOX_CONFIG_IPCALC
-	bool "ipcalc"
+config BUSYBOX_CONFIG_FEATURE_IP_LINK
+	bool "ip link"
 	default n
+	depends on BUSYBOX_CONFIG_IP
 	help
-	  ipcalc takes an IP address and netmask and calculates the
-	  resulting broadcast, network, and host range.
+	  Configure network devices with "ip".
 
-config BUSYBOX_CONFIG_FEATURE_IPCALC_FANCY
-	bool "  Fancy IPCALC, more options, adds 1 kbyte"
+config BUSYBOX_CONFIG_FEATURE_IP_ROUTE
+	bool "ip route"
 	default n
-	depends on BUSYBOX_CONFIG_IPCALC
+	depends on BUSYBOX_CONFIG_IP
 	help
-	  Adds the options hostname, prefix and silent to the output of "ipcalc".
+	  Add support for routing table management to "ip".
 
-config BUSYBOX_CONFIG_IPADDR
-	bool "ipaddr"
+config BUSYBOX_CONFIG_FEATURE_IP_TUNNEL
+	bool "ip tunnel"
 	default n
+	depends on BUSYBOX_CONFIG_IP
 	help
-	  Equivalent to selecting address support to "ip", above.
+	  Add support for tunneling commands to "ip".
 
-config BUSYBOX_CONFIG_IPLINK
-	bool "iplink"
+config BUSYBOX_CONFIG_FEATURE_IP_SHORT_FORMS
+	bool "Support short forms of ip commands."
 	default n
+	depends on BUSYBOX_CONFIG_IP
 	help
-	  Equivalent to selecting link support to "ip", above.
+	  Also support short-form of ip <OBJECT> commands:
+	  ip addr   -> ipaddr
+	  ip link   -> iplink
+	  ip route  -> iproute
+	  ip tunnel -> iptunnel
+
+	  Say N unless you desparately need the short form of the ip
+	  object commands.
+
+config BUSYBOX_CONFIG_IPADDR
+	bool
+	default n
+	depends on BUSYBOX_CONFIG_FEATURE_IP_SHORT_FORMS && BUSYBOX_CONFIG_FEATURE_IP_ADDRESS
+
+config BUSYBOX_CONFIG_IPLINK
+	bool
+	default n
+	depends on BUSYBOX_CONFIG_FEATURE_IP_SHORT_FORMS && BUSYBOX_CONFIG_FEATURE_IP_LINK
 
 config BUSYBOX_CONFIG_IPROUTE
-	bool "iproute"
+	bool
 	default n
-	help
-	  Equivalent to selecting route support to "ip", above.
+	depends on BUSYBOX_CONFIG_FEATURE_IP_SHORT_FORMS && BUSYBOX_CONFIG_FEATURE_IP_ROUTE
 
 config BUSYBOX_CONFIG_IPTUNNEL
-	bool "iptunnel"
+	bool
 	default n
+	depends on BUSYBOX_CONFIG_FEATURE_IP_SHORT_FORMS && BUSYBOX_CONFIG_FEATURE_IP_TUNNEL
+
+config BUSYBOX_CONFIG_IPCALC
+	bool "ipcalc"
+	default n
+	help
+	  ipcalc takes an IP address and netmask and calculates the
+	  resulting broadcast, network, and host range.
+
+config BUSYBOX_CONFIG_FEATURE_IPCALC_FANCY
+	bool "Fancy IPCALC, more options, adds 1 kbyte"
+	default n
+	depends on BUSYBOX_CONFIG_IPCALC
+	help
+	  Adds the options hostname, prefix and silent to the output of "ipcalc".
+
+config BUSYBOX_CONFIG_FEATURE_IPCALC_LONG_OPTIONS
+	bool "Enable long options"
+	default n
+	depends on BUSYBOX_CONFIG_IPCALC && BUSYBOX_CONFIG_GETOPT_LONG
 	help
-	  Equivalent to selecting tunnel support to "ip", above.
+	  Support long options for the ipcalc applet.
 
 config BUSYBOX_CONFIG_NAMEIF
 	bool "nameif"
@@ -486,7 +480,7 @@ config BUSYBOX_CONFIG_PING
 	  elicit an ICMP ECHO_RESPONSE from a host or gateway.
 
 config BUSYBOX_CONFIG_FEATURE_FANCY_PING
-	bool "  Enable fancy ping output"
+	bool "Enable fancy ping output"
 	default y
 	depends on BUSYBOX_CONFIG_PING
 	help
@@ -501,7 +495,7 @@ config BUSYBOX_CONFIG_PING6
 	  This will give you a ping that can talk IPv6.
 
 config BUSYBOX_CONFIG_FEATURE_FANCY_PING6
-	bool "  Enable fancy ping6 output"
+	bool "Enable fancy ping6 output"
 	default y
 	depends on BUSYBOX_CONFIG_PING6
 	help
@@ -522,7 +516,7 @@ config BUSYBOX_CONFIG_TELNET
 	  used to test other simple protocols.
 
 config BUSYBOX_CONFIG_FEATURE_TELNET_TTYPE
-	bool "  Pass TERM type to remote host"
+	bool "Pass TERM type to remote host"
 	default y
 	depends on BUSYBOX_CONFIG_TELNET
 	help
@@ -531,7 +525,7 @@ config BUSYBOX_CONFIG_FEATURE_TELNET_TTYPE
 	  things like ANSI colors and other control sequences behave.
 
 config BUSYBOX_CONFIG_FEATURE_TELNET_AUTOLOGIN
-	bool "  Pass USER type to remote host"
+	bool "Pass USER type to remote host"
 	default n
 	depends on BUSYBOX_CONFIG_TELNET
 	help
@@ -583,7 +577,7 @@ config BUSYBOX_CONFIG_TELNETD
 
 
 config BUSYBOX_CONFIG_FEATURE_TELNETD_INETD
-	bool "  Support call from inetd only"
+	bool "Support call from inetd only"
 	default n
 	depends on BUSYBOX_CONFIG_TELNETD
 	help
@@ -599,7 +593,7 @@ config BUSYBOX_CONFIG_TFTP
 	  for a network-enabled bootloader.
 
 config BUSYBOX_CONFIG_FEATURE_TFTP_GET
-	bool "  Enable \"get\" command"
+	bool "Enable \"get\" command"
 	default n
 	depends on BUSYBOX_CONFIG_TFTP
 	help
@@ -607,7 +601,7 @@ config BUSYBOX_CONFIG_FEATURE_TFTP_GET
 	  a client to retrieve a file from a TFTP server.
 
 config BUSYBOX_CONFIG_FEATURE_TFTP_PUT
-	bool "  Enable \"put\" command"
+	bool "Enable \"put\" command"
 	default n
 	depends on BUSYBOX_CONFIG_TFTP
 	help
@@ -615,14 +609,14 @@ config BUSYBOX_CONFIG_FEATURE_TFTP_PUT
 	  a client to transfer a file to a TFTP server.
 
 config BUSYBOX_CONFIG_FEATURE_TFTP_BLOCKSIZE
-	bool "  Enable \"blocksize\" command"
+	bool "Enable \"blocksize\" command"
 	default n
 	depends on BUSYBOX_CONFIG_TFTP
 	help
 	  Allow the client to specify the desired block size for transfers.
 
-config BUSYBOX_CONFIG_FEATURE_TFTP_DEBUG
-	bool "  Enable debug"
+config BUSYBOX_CONFIG_DEBUG_TFTP
+	bool "Enable debug"
 	default n
 	depends on BUSYBOX_CONFIG_TFTP
 	help
@@ -637,7 +631,7 @@ config BUSYBOX_CONFIG_TRACEROUTE
 	  Utility to trace the route of IP packets
 
 config BUSYBOX_CONFIG_FEATURE_TRACEROUTE_VERBOSE
-	bool "  Enable verbose output"
+	bool "Enable verbose output"
 	default y
 	depends on BUSYBOX_CONFIG_TRACEROUTE
 	help
@@ -645,7 +639,7 @@ config BUSYBOX_CONFIG_FEATURE_TRACEROUTE_VERBOSE
 	  hostnames and ICMP response types.
 
 config BUSYBOX_CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE
-	bool "  Enable loose source route"
+	bool "Enable loose source route"
 	default n
 	depends on BUSYBOX_CONFIG_TRACEROUTE
 	help
@@ -653,12 +647,13 @@ config BUSYBOX_CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE
 	  (8 maximum).
 
 config BUSYBOX_CONFIG_FEATURE_TRACEROUTE_USE_ICMP
-	bool "  Use ICMP instead of UDP"
+	bool "Use ICMP instead of UDP"
 	default n
 	depends on BUSYBOX_CONFIG_TRACEROUTE
 	help
 	  Add feature to allow for ICMP ECHO instead of UDP datagrams.
 
+source package/busybox/config/networking/udhcp/Config.in
 
 config BUSYBOX_CONFIG_VCONFIG
 	bool "vconfig"
@@ -674,27 +669,32 @@ config BUSYBOX_CONFIG_WGET
 	  HTTPS, and FTP servers.
 
 config BUSYBOX_CONFIG_FEATURE_WGET_STATUSBAR
-	bool "  Enable a nifty process meter (+2k)"
+	bool "Enable a nifty process meter (+2k)"
 	default y
 	depends on BUSYBOX_CONFIG_WGET
 	help
 	  Enable the transfer progress bar for wget transfers.
 
 config BUSYBOX_CONFIG_FEATURE_WGET_AUTHENTICATION
-	bool "  Enable HTTP authentication"
+	bool "Enable HTTP authentication"
 	default y
 	depends on BUSYBOX_CONFIG_WGET
 	help
 	  Support authenticated HTTP transfers.
 
 config BUSYBOX_CONFIG_FEATURE_WGET_IP6_LITERAL
-	bool "  Enable IPv6 literal addresses"
+	bool "Enable IPv6 literal addresses"
 	default y
-	depends on BUSYBOX_CONFIG_WGET
+	depends on BUSYBOX_CONFIG_WGET && BUSYBOX_CONFIG_FEATURE_IPV6
 	help
 	  Support IPv6 address literal notation in URLs.
 
-source package/busybox/config/networking/udhcp/Config.in
+config BUSYBOX_CONFIG_FEATURE_WGET_LONG_OPTIONS
+	bool "Enable long options"
+	default y
+	depends on BUSYBOX_CONFIG_WGET && BUSYBOX_CONFIG_GETOPT_LONG
+	help
+	  Support long options for the wget applet.
 
 config BUSYBOX_CONFIG_ZCIP
 	bool "zcip"
@@ -708,4 +708,3 @@ config BUSYBOX_CONFIG_ZCIP
 	  in the busybox examples.
 
 endmenu
-
diff --git a/openwrt/package/busybox/config/networking/udhcp/Config.in b/openwrt/package/busybox/config/networking/udhcp/Config.in
index d15128ce3f6e355338cbb4bdbeadaa4b9a565040..741afa327934b181b1d1eb4f5cecdc01c68c09d7 100644
--- a/openwrt/package/busybox/config/networking/udhcp/Config.in
+++ b/openwrt/package/busybox/config/networking/udhcp/Config.in
@@ -5,7 +5,7 @@
 
 menu "udhcp Server/Client"
 
-config BUSYBOX_CONFIG_UDHCPD
+config BUSYBOX_CONFIG_APP_UDHCPD
 	bool "udhcp Server (udhcpd)"
 	default n
 	help
@@ -14,7 +14,7 @@ config BUSYBOX_CONFIG_UDHCPD
 
 	  See http://udhcp.busybox.net for further details.
 
-config BUSYBOX_CONFIG_UDHCPC
+config BUSYBOX_CONFIG_APP_UDHCPC
 	bool "udhcp Client (udhcpc)"
 	default y
 	help
@@ -26,10 +26,10 @@ config BUSYBOX_CONFIG_UDHCPC
 
 	  See http://udhcp.busybox.net for further details.
 
-config BUSYBOX_CONFIG_DUMPLEASES
+config BUSYBOX_CONFIG_APP_DUMPLEASES
 	bool "Lease display utility (dumpleases)"
 	default n
-	depends on BUSYBOX_CONFIG_UDHCPD
+	depends on BUSYBOX_CONFIG_APP_UDHCPD
 	help
 	  dumpleases displays the leases written out by the udhcpd server.
 	  Lease times are stored in the file by time remaining in lease, or
@@ -40,7 +40,7 @@ config BUSYBOX_CONFIG_DUMPLEASES
 config BUSYBOX_CONFIG_FEATURE_UDHCP_SYSLOG
 	bool "  Log udhcp messages to syslog (instead of stdout)"
 	default n
-	depends on BUSYBOX_CONFIG_UDHCPD || BUSYBOX_CONFIG_UDHCPC
+	depends on BUSYBOX_CONFIG_APP_UDHCPD || BUSYBOX_CONFIG_APP_UDHCPC
 	help
 	  If selected, udhcpd will log all its messages to syslog, otherwise,
 	  it will attempt to log them to stdout.
@@ -50,7 +50,7 @@ config BUSYBOX_CONFIG_FEATURE_UDHCP_SYSLOG
 config BUSYBOX_CONFIG_FEATURE_UDHCP_DEBUG
 	bool "  Compile udhcp with noisy debugging messages"
 	default n
-	depends on BUSYBOX_CONFIG_UDHCPD || BUSYBOX_CONFIG_UDHCPC
+	depends on BUSYBOX_CONFIG_APP_UDHCPD || BUSYBOX_CONFIG_APP_UDHCPC
 	help
 	  If selected, udhcpd will output extra debugging output.  If using
 	  this option, compile uDHCP with "-g", and do not fork the daemon to
diff --git a/openwrt/package/busybox/config/procps/Config.in b/openwrt/package/busybox/config/procps/Config.in
index b94632b467d832e67f369584b811f97e7b5e3f11..34d1ace0873234ea9a66913e67bb8386ba5bc1e1 100644
--- a/openwrt/package/busybox/config/procps/Config.in
+++ b/openwrt/package/busybox/config/procps/Config.in
@@ -51,14 +51,14 @@ config BUSYBOX_CONFIG_PIDOF
 	  those id's on the standard output.
 
 config BUSYBOX_CONFIG_FEATURE_PIDOF_SINGLE
-	bool "  Enable argument for single shot (-s)"
+	bool "Enable argument for single shot (-s)"
 	default n
 	depends on BUSYBOX_CONFIG_PIDOF
 	help
 	  Support argument '-s' for returning only the first pid found.
 
 config BUSYBOX_CONFIG_FEATURE_PIDOF_OMIT
-	bool "  Enable argument for omitting pids (-o)"
+	bool "Enable argument for omitting pids (-o)"
 	default n
 	depends on BUSYBOX_CONFIG_PIDOF
 	help
@@ -73,7 +73,7 @@ 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 argument for wide output (-w)"
 	default n
 	depends on BUSYBOX_CONFIG_PS
 	help
@@ -102,7 +102,7 @@ config BUSYBOX_CONFIG_TOP
 	  system.
 
 config BUSYBOX_CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE
-	bool "  Support showing CPU usage percentage (add 2k bytes)"
+	bool "Support showing CPU usage percentage (add 2k bytes)"
 	default y
 	depends on BUSYBOX_CONFIG_TOP
 	help
diff --git a/openwrt/package/busybox/config/shell/Config.in b/openwrt/package/busybox/config/shell/Config.in
index b9a1b4d7a3b6420447029acedaed66e70c20447d..373c7461a41c004f1beea3c49fff72326929e2b3 100644
--- a/openwrt/package/busybox/config/shell/Config.in
+++ b/openwrt/package/busybox/config/shell/Config.in
@@ -48,14 +48,14 @@ comment "Ash Shell Options"
 	depends on BUSYBOX_CONFIG_ASH
 
 config BUSYBOX_CONFIG_ASH_JOB_CONTROL
-	bool "  Enable Job control"
+	bool "Job control"
 	default y
 	depends on BUSYBOX_CONFIG_ASH
 	help
 	  Enable job control in the ash shell.
 
 config BUSYBOX_CONFIG_ASH_READ_NCHARS
-	bool "  Enable 'read -n N' and 'read -s' support"
+	bool "'read -n N' and 'read -s' support"
 	default n
 	depends on BUSYBOX_CONFIG_ASH
 	help
@@ -63,7 +63,7 @@ config BUSYBOX_CONFIG_ASH_READ_NCHARS
 	  'read -s' will read without echoing the user's input.
 
 config BUSYBOX_CONFIG_ASH_READ_TIMEOUT
-	bool "  Enable 'read -t S' support."
+	bool "'read -t S' support."
 	default y
 	depends on BUSYBOX_CONFIG_ASH
 	help
@@ -72,21 +72,21 @@ config BUSYBOX_CONFIG_ASH_READ_TIMEOUT
 	  as a decimal fraction, e.g. 'read -t 2.5 foo'.
 
 config BUSYBOX_CONFIG_ASH_ALIAS
-	bool "  Enable alias support"
+	bool "alias support"
 	default y
 	depends on BUSYBOX_CONFIG_ASH
 	help
 	  Enable alias support in the ash shell.
 
 config BUSYBOX_CONFIG_ASH_MATH_SUPPORT
-	bool "  Enable Posix math support"
+	bool "Posix math support"
 	default y
 	depends on BUSYBOX_CONFIG_ASH
 	help
 	  Enable math support in the ash shell.
 
 config BUSYBOX_CONFIG_ASH_MATH_SUPPORT_64
-	bool "    Extend Posix math support to 64 bit"
+	bool "Extend Posix math support to 64 bit"
 	default n
 	depends on BUSYBOX_CONFIG_ASH_MATH_SUPPORT
 	help
@@ -95,52 +95,53 @@ config BUSYBOX_CONFIG_ASH_MATH_SUPPORT_64
 	  large numbers.
 
 config BUSYBOX_CONFIG_ASH_GETOPTS
-	bool "  Enable getopts builtin to parse positional parameters"
+	bool "Builtin getopt to parse positional parameters"
 	default y
 	depends on BUSYBOX_CONFIG_ASH
 	help
 	  Enable getopts builtin in the ash shell.
 
-config BUSYBOX_CONFIG_ASH_CMDCMD
-	bool "  Enable cmdcmd to override shell builtins"
+config BUSYBOX_CONFIG_ASH_BUILTIN_ECHO
+	bool "Builtin version of 'echo'"
 	default y
+	select BUSYBOX_CONFIG_ECHO
 	depends on BUSYBOX_CONFIG_ASH
 	help
-	  Enable support for the ash 'command' builtin, which allows
-	  you to run the specified command with the specified arguments,
-	  even when there is an ash builtin command with the same name.
+	  Enable support for echo, built in to ash.
 
-config BUSYBOX_CONFIG_ASH_BUILTIN_ECHO
-	bool "  Enable builtin version of 'echo'"
+config BUSYBOX_CONFIG_ASH_BUILTIN_TEST
+	bool "Builtin version of 'test'"
 	default y
+	select BUSYBOX_CONFIG_TEST
 	depends on BUSYBOX_CONFIG_ASH
 	help
-	  Enable support for echo, built in to ash.
+	  Enable support for test, built in to ash.
 
-# this entry also appears in coreutils/Config.in, next to the echo applet
-config BUSYBOX_CONFIG_FEATURE_FANCY_ECHO
-	bool "  Enable echo options (-n and -e)"
+config BUSYBOX_CONFIG_ASH_CMDCMD
+	bool "'command' command to override shell builtins"
 	default y
-	depends on BUSYBOX_CONFIG_ASH_BUILTIN_ECHO
+	depends on BUSYBOX_CONFIG_ASH
 	help
-	  This adds options (-n and -e) to echo.
+	  Enable support for the ash 'command' builtin, which allows
+	  you to run the specified command with the specified arguments,
+	  even when there is an ash builtin command with the same name.
 
 config BUSYBOX_CONFIG_ASH_MAIL
-	bool "  Check for new mail on interactive shells"
+	bool "Check for new mail on interactive shells"
 	default n
 	depends on BUSYBOX_CONFIG_ASH
 	help
 	  Enable "check for new mail" in the ash shell.
 
 config BUSYBOX_CONFIG_ASH_OPTIMIZE_FOR_SIZE
-	bool "  Optimize for size instead of speed"
+	bool "Optimize for size instead of speed"
 	default y
 	depends on BUSYBOX_CONFIG_ASH
 	help
 	  Compile ash for reduced size at the price of speed.
 
 config BUSYBOX_CONFIG_ASH_RANDOM_SUPPORT
-	bool "  Enable pseudorandom generator and variable $RANDOM"
+	bool "Pseudorandom generator and variable $RANDOM"
 	default n
 	depends on BUSYBOX_CONFIG_ASH
 	help
@@ -151,7 +152,7 @@ config BUSYBOX_CONFIG_ASH_RANDOM_SUPPORT
 	  variable will no longer have special treatment.
 
 config BUSYBOX_CONFIG_ASH_EXPAND_PRMT
-	bool "  Expand prompt string"
+	bool "Expand prompt string"
 	default n
 	depends on BUSYBOX_CONFIG_ASH
 	help
@@ -229,13 +230,18 @@ config BUSYBOX_CONFIG_FEATURE_SH_STANDALONE_SHELL
 	  is generally used when creating a statically linked version of busybox
 	  for use as a rescue shell, in the event that you screw up your system.
 
+	  Note that this will *also* cause applets to take precedence
+	  over shell builtins of the same name.  So turning this on will
+	  eliminate any performance gained by turning on the builtin "echo"
+	  and "test" commands in ash.
+
 	  Note that when using this option, the shell will attempt to directly
 	  run '/bin/busybox'.  If you do not have the busybox binary sitting in
 	  that exact location with that exact name, this option will not work at
 	  all.
 
 config BUSYBOX_CONFIG_FEATURE_COMMAND_EDITING
-	bool "command line editing"
+	bool "Command line editing"
 	default y
 	depends on BUSYBOX_CONFIG_MSH || BUSYBOX_CONFIG_LASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH
 	help
@@ -250,28 +256,28 @@ config BUSYBOX_CONFIG_FEATURE_COMMAND_EDITING_VI
 	  turned on and off with "set -o vi" and "set +o vi".
 
 config BUSYBOX_CONFIG_FEATURE_COMMAND_HISTORY
-	int "history size"
+	int "History size"
 	default 15
 	depends on BUSYBOX_CONFIG_FEATURE_COMMAND_EDITING
 	help
 	  Specify command history size in shell.
 
 config BUSYBOX_CONFIG_FEATURE_COMMAND_SAVEHISTORY
-	bool "history saving"
+	bool "History saving"
 	default n
 	depends on BUSYBOX_CONFIG_ASH && BUSYBOX_CONFIG_FEATURE_COMMAND_EDITING
 	help
 	  Enable history saving in ash shell.
 
 config BUSYBOX_CONFIG_FEATURE_COMMAND_TAB_COMPLETION
-	bool "tab completion"
+	bool "Tab completion"
 	default y
 	depends on BUSYBOX_CONFIG_FEATURE_COMMAND_EDITING
 	help
 	  Enable tab completion in shell.
 
 config BUSYBOX_CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION
-	bool "username completion"
+	bool "Username completion"
 	default n
 	depends on BUSYBOX_CONFIG_FEATURE_COMMAND_TAB_COMPLETION
 	help
diff --git a/openwrt/package/busybox/config/sysklogd/Config.in b/openwrt/package/busybox/config/sysklogd/Config.in
index 209bdff053ae5f067d2b3a427a11f02ac334bec3..f12069566480b0c67647e18abb9e989598e939a7 100644
--- a/openwrt/package/busybox/config/sysklogd/Config.in
+++ b/openwrt/package/busybox/config/sysklogd/Config.in
@@ -21,7 +21,7 @@ config BUSYBOX_CONFIG_SYSLOGD
 	  you wait long enough....
 
 config BUSYBOX_CONFIG_FEATURE_ROTATE_LOGFILE
-	bool "  Rotate message files"
+	bool "Rotate message files"
 	default y
 	depends on BUSYBOX_CONFIG_SYSLOGD
 	help
@@ -29,7 +29,7 @@ config BUSYBOX_CONFIG_FEATURE_ROTATE_LOGFILE
 	  on his own. No need to use an external rotatescript.
 
 config BUSYBOX_CONFIG_FEATURE_REMOTE_LOG
-	bool "  Remote Log support"
+	bool "Remote Log support"
 	default y
 	depends on BUSYBOX_CONFIG_SYSLOGD
 	help
@@ -43,7 +43,7 @@ config BUSYBOX_CONFIG_FEATURE_REMOTE_LOG
 	  by an intruder.
 
 config BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG
-	bool "  Circular Buffer support"
+	bool "Circular Buffer support"
 	default y
 	depends on BUSYBOX_CONFIG_SYSLOGD
 	help
@@ -65,7 +65,7 @@ config BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE
 	  used to record system log messages.
 
 config BUSYBOX_CONFIG_LOGREAD
-	bool "  logread"
+	bool "logread"
 	default y
 	depends on BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG
 	help
@@ -75,7 +75,7 @@ config BUSYBOX_CONFIG_LOGREAD
 	  stored in the syslogd circular buffer.
 
 config BUSYBOX_CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING
-	bool "    logread double buffering"
+	bool "logread double buffering"
 	default n
 	depends on BUSYBOX_CONFIG_LOGREAD
 	help
diff --git a/openwrt/package/busybox/config/util-linux/Config.in b/openwrt/package/busybox/config/util-linux/Config.in
index 474ef02f0d64b34e44fc230cc762338c5bc915fb..9081555ef4e7a8412f11fb0fc784b94c95856330 100644
--- a/openwrt/package/busybox/config/util-linux/Config.in
+++ b/openwrt/package/busybox/config/util-linux/Config.in
@@ -27,7 +27,7 @@ config BUSYBOX_CONFIG_FBSET
 	  if you wish to enable the 'fbset' utility.
 
 config BUSYBOX_CONFIG_FEATURE_FBSET_FANCY
-	bool "  Turn on extra fbset options"
+	bool "Turn on extra fbset options"
 	default n
 	depends on BUSYBOX_CONFIG_FBSET
 	help
@@ -37,7 +37,7 @@ config BUSYBOX_CONFIG_FEATURE_FBSET_FANCY
 	  options.
 
 config BUSYBOX_CONFIG_FEATURE_FBSET_READMODE
-	bool "  Turn on fbset readmode support"
+	bool "Turn on fbset readmode support"
 	default n
 	depends on BUSYBOX_CONFIG_FBSET
 	help
@@ -80,7 +80,7 @@ config BUSYBOX_FDISK_SUPPORT_LARGE_DISKS
 	  Enable this option to support large disks > 4GB.
 
 config BUSYBOX_CONFIG_FEATURE_FDISK_WRITABLE
-	bool "  Write support"
+	bool "Write support"
 	default n
 	depends on BUSYBOX_CONFIG_FDISK
 	help
@@ -89,7 +89,7 @@ config BUSYBOX_CONFIG_FEATURE_FDISK_WRITABLE
 	  disabled, you will only be able to view the partition table.
 
 config BUSYBOX_CONFIG_FEATURE_AIX_LABEL
-	bool "  Support AIX disklabels"
+	bool "Support AIX disklabels"
 	default n
 	depends on BUSYBOX_CONFIG_FDISK && BUSYBOX_CONFIG_FEATURE_FDISK_WRITABLE
 	help
@@ -97,7 +97,7 @@ config BUSYBOX_CONFIG_FEATURE_AIX_LABEL
 	  Most people can safely leave this option disabled.
 
 config BUSYBOX_CONFIG_FEATURE_SGI_LABEL
-	bool "  Support SGI disklabels"
+	bool "Support SGI disklabels"
 	default n
 	depends on BUSYBOX_CONFIG_FDISK && BUSYBOX_CONFIG_FEATURE_FDISK_WRITABLE
 	help
@@ -105,7 +105,7 @@ config BUSYBOX_CONFIG_FEATURE_SGI_LABEL
 	  Most people can safely leave this option disabled.
 
 config BUSYBOX_CONFIG_FEATURE_SUN_LABEL
-	bool "  Support SUN disklabels"
+	bool "Support SUN disklabels"
 	default n
  	depends on BUSYBOX_CONFIG_FDISK && BUSYBOX_CONFIG_FEATURE_FDISK_WRITABLE
 	help
@@ -113,7 +113,7 @@ config BUSYBOX_CONFIG_FEATURE_SUN_LABEL
 	  Most people can safely leave this option disabled.
 
 config BUSYBOX_CONFIG_FEATURE_OSF_LABEL
-	bool "  Support BSD disklabels"
+	bool "Support BSD disklabels"
 	default n
 	depends on BUSYBOX_CONFIG_FDISK && BUSYBOX_CONFIG_FEATURE_FDISK_WRITABLE
 	help
@@ -121,7 +121,7 @@ config BUSYBOX_CONFIG_FEATURE_OSF_LABEL
 	  and define and edit BSD disk slices.
 
 config BUSYBOX_CONFIG_FEATURE_FDISK_ADVANCED
-	bool "  Support expert mode"
+	bool "Support expert mode"
 	default n
 	depends on BUSYBOX_CONFIG_FDISK && BUSYBOX_CONFIG_FEATURE_FDISK_WRITABLE
 	help
@@ -164,7 +164,7 @@ comment "Minix filesystem support"
     depends on BUSYBOX_CONFIG_FSCK_MINIX || BUSYBOX_CONFIG_MKFS_MINIX
 
 config BUSYBOX_CONFIG_FEATURE_MINIX2
-	bool "  Support Minix fs v2 (fsck_minix/mkfs_minix)"
+	bool "Support Minix fs v2 (fsck_minix/mkfs_minix)"
 	default n
 	depends on BUSYBOX_CONFIG_FSCK_MINIX || BUSYBOX_CONFIG_MKFS_MINIX
 	help
@@ -199,17 +199,17 @@ config BUSYBOX_CONFIG_HWCLOCK
 	  shutdown in the hardware clock, so the hardware will keep the
 	  correct time when Linux is _not_ running.
 
-config BUSYBOX_CONFIG_FEATURE_HWCLOCK_LONGOPTIONS
-	bool "  Support long options (--hctosys,...)"
+config BUSYBOX_CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS
+	bool "Support long options (--hctosys,...)"
 	default n
-	depends on BUSYBOX_CONFIG_HWCLOCK
+	depends on BUSYBOX_CONFIG_HWCLOCK && BUSYBOX_CONFIG_GETOPT_LONG
 	help
 	  By default, the hwclock utility only uses short options.  If you
 	  are overly fond of its long options, such as --hctosys, --utc, etc)
 	  then enable this option.
 
 config BUSYBOX_CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS
-	bool "  Use FHS /var/lib/hwclock/adjtime"
+	bool "Use FHS /var/lib/hwclock/adjtime"
 	default n
 	depends on BUSYBOX_CONFIG_HWCLOCK
 	help
@@ -255,7 +255,7 @@ config BUSYBOX_CONFIG_MDEV
 	  from sysfs.
 
 config BUSYBOX_CONFIG_FEATURE_MDEV_CONF
-	bool "  Support /etc/mdev.conf"
+	bool "Support /etc/mdev.conf"
 	default n
 	depends on BUSYBOX_CONFIG_MDEV
 	help
@@ -265,16 +265,31 @@ config BUSYBOX_CONFIG_FEATURE_MDEV_CONF
 
 	  That's device name (with regex match), uid:gid, and permissions.
 
-	  Optionally, that can be followed (on the same line) by an asterisk
-	  and a command line to run after creating the corresponding device(s),
-	  ala:
-
-	    hdc root:cdrom 660  *ln -s hdc cdrom
-
 	  Config file parsing stops on the first matching line.  If no config
 	  entry is matched, devices are created with default 0:0 660.  (Make
 	  the last line match .* to override this.)
 
+config BUSYBOX_CONFIG_FEATURE_MDEV_EXEC
+	bool "Support command execution at device addition/removal"
+	default n
+	depends on BUSYBOX_CONFIG_FEATURE_MDEV_CONF
+	help
+	  This adds support for an optional field to /etc/mdev.conf, consisting
+	  of a special character and a command line to run after creating the
+	  corresponding device(s) and before removing, ala:
+
+	    hdc root:cdrom 660  *ln -s $MDEV cdrom
+
+	  The $MDEV environment variable is set to the name of the device.
+
+	  The special characters and their meanings are:
+	    @ Run after creating the device.
+	    $ Run before removing the device.
+	    * Run both after creating and before removing the device.
+
+	  Commands are executed via system() so you need /bin/sh, meaning you
+	  probably want to select a default shell in the Shells menu.
+
 config BUSYBOX_CONFIG_MKSWAP
 	bool "mkswap"
 	default n
@@ -288,6 +303,16 @@ 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"
+	default n
+	depends on BUSYBOX_CONFIG_MKSWAP
+#	depends on BUSYBOX_CONFIG_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.
+
 config BUSYBOX_CONFIG_MORE
 	bool "more"
 	default y
@@ -299,7 +324,7 @@ config BUSYBOX_CONFIG_MORE
 	  any need to reading text files, you can leave this disabled.
 
 config BUSYBOX_CONFIG_FEATURE_USE_TERMIOS
-	bool "  Use termios to manipulate the screen"
+	bool "Use termios to manipulate the screen"
 	default y
 	depends on BUSYBOX_CONFIG_MORE
 	help
@@ -321,7 +346,7 @@ config BUSYBOX_CONFIG_MOUNT
 	  the 'mount' utility.
 
 config BUSYBOX_CONFIG_FEATURE_MOUNT_NFS
-	bool "  Support mounting NFS file systems"
+	bool "Support mounting NFS file systems"
 	default y
 	depends on BUSYBOX_CONFIG_MOUNT
 	help
@@ -403,7 +428,7 @@ config BUSYBOX_CONFIG_UMOUNT
 	  also want to enable 'umount'.
 
 config BUSYBOX_CONFIG_FEATURE_UMOUNT_ALL
-	bool "  umount -a option"
+	bool "umount -a option"
 	default y
 	depends on BUSYBOX_CONFIG_UMOUNT
 	help
@@ -413,7 +438,7 @@ comment "Common options for mount/umount"
 	depends on BUSYBOX_CONFIG_MOUNT || BUSYBOX_CONFIG_UMOUNT
 
 config BUSYBOX_CONFIG_FEATURE_MOUNT_LOOP
-	bool "  Support loopback mounts"
+	bool "Support loopback mounts"
 	default y
 	depends on BUSYBOX_CONFIG_MOUNT || BUSYBOX_CONFIG_UMOUNT
 	help
@@ -429,7 +454,7 @@ config BUSYBOX_CONFIG_FEATURE_MOUNT_LOOP
 	  (If you don't want umount to free the loop device, use "umount -D".)
 
 config BUSYBOX_CONFIG_FEATURE_MTAB_SUPPORT
-	bool "  Support for the old /etc/mtab file"
+	bool "Support for the old /etc/mtab file"
 	default n
 	depends on BUSYBOX_CONFIG_MOUNT || BUSYBOX_CONFIG_UMOUNT
 	help
@@ -445,7 +470,11 @@ config BUSYBOX_CONFIG_FEATURE_MTAB_SUPPORT
 	  example a mount under chroot won't update it), can't handle modern
 	  features like separate per-process filesystem namespaces, requires
 	  that your /etc directory be writeable, tends to get easily confused
-	  by --bind or --move mounts, and so on.  (In brief: avoid.)
+	  by --bind or --move mounts, won't update if you rename a directory
+	  that contains a mount point, and so on.  (In brief: avoid.)
+
+	  About the only reason to use this is if you've removed /proc from
+	  your kernel.
 
 endmenu
 
diff --git a/openwrt/package/busybox/patches/100-killall5.patch b/openwrt/package/busybox/patches/100-killall5.patch
index 6f1585d0d4f67888ebff250de80eca184f26f0e8..9828224800941e4d5e5733fbcff5ab0e74d68928 100644
--- a/openwrt/package/busybox/patches/100-killall5.patch
+++ b/openwrt/package/busybox/patches/100-killall5.patch
@@ -1,18 +1,18 @@
-diff -Nur busybox-1.1.1/include/applets.h busybox-1.1.1-owrt/include/applets.h
---- busybox-1.1.1/include/applets.h	2006-03-22 22:16:24.000000000 +0100
-+++ busybox-1.1.1-owrt/include/applets.h	2006-04-01 18:23:43.000000000 +0200
-@@ -154,6 +154,7 @@
- USE_IPTUNNEL(APPLET(iptunnel, iptunnel_main, _BB_DIR_BIN, _BB_SUID_NEVER))
- USE_KILL(APPLET(kill, kill_main, _BB_DIR_BIN, _BB_SUID_NEVER))
- USE_KILLALL(APPLET(killall, kill_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
-+USE_KILLALL5(APPLET(killall5, kill_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
- USE_KLOGD(APPLET(klogd, klogd_main, _BB_DIR_SBIN, _BB_SUID_NEVER))
- USE_LASH(APPLET(lash, lash_main, _BB_DIR_BIN, _BB_SUID_NEVER))
- USE_LAST(APPLET(last, last_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
-diff -Nur busybox-1.1.1/include/usage.h busybox-1.1.1-owrt/include/usage.h
---- busybox-1.1.1/include/usage.h	2006-03-22 22:16:24.000000000 +0100
-+++ busybox-1.1.1-owrt/include/usage.h	2006-04-01 18:22:53.000000000 +0200
-@@ -1598,6 +1598,13 @@
+diff -ruN busybox-1.2.0-old/include/applets.h busybox-1.2.0-new/include/applets.h
+--- busybox-1.2.0-old/include/applets.h	2006-07-01 00:42:10.000000000 +0200
++++ busybox-1.2.0-new/include/applets.h	2006-07-31 00:29:34.000000000 +0200
+@@ -157,6 +157,7 @@
+ USE_IPTUNNEL(APPLET(iptunnel, _BB_DIR_BIN, _BB_SUID_NEVER))
+ USE_KILL(APPLET(kill, _BB_DIR_BIN, _BB_SUID_NEVER))
+ USE_KILLALL(APPLET_ODDNAME(killall, kill, _BB_DIR_USR_BIN, _BB_SUID_NEVER, killall))
++USE_KILLALL5(APPLET_ODDNAME(killall5, kill, _BB_DIR_USR_BIN, _BB_SUID_NEVER, killall5))
+ USE_KLOGD(APPLET(klogd, _BB_DIR_SBIN, _BB_SUID_NEVER))
+ USE_LASH(APPLET(lash, _BB_DIR_BIN, _BB_SUID_NEVER))
+ USE_LAST(APPLET(last, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
+diff -ruN busybox-1.2.0-old/include/usage.h busybox-1.2.0-new/include/usage.h
+--- busybox-1.2.0-old/include/usage.h	2006-07-01 00:42:10.000000000 +0200
++++ busybox-1.2.0-new/include/usage.h	2006-07-31 00:25:57.000000000 +0200
+@@ -1503,6 +1503,13 @@
  #define killall_example_usage \
  	"$ killall apache\n"
  
@@ -26,9 +26,9 @@ diff -Nur busybox-1.1.1/include/usage.h busybox-1.1.1-owrt/include/usage.h
  #define klogd_trivial_usage \
  	"[-c n] [-n]"
  #define klogd_full_usage \
-diff -Nur busybox-1.1.1/procps/Config.in busybox-1.1.1-owrt/procps/Config.in
---- busybox-1.1.1/procps/Config.in	2006-03-22 22:16:25.000000000 +0100
-+++ busybox-1.1.1-owrt/procps/Config.in	2006-04-01 18:22:53.000000000 +0200
+diff -ruN busybox-1.2.0-old/procps/Config.in busybox-1.2.0-new/procps/Config.in
+--- busybox-1.2.0-old/procps/Config.in	2006-07-01 00:42:12.000000000 +0200
++++ busybox-1.2.0-new/procps/Config.in	2006-07-31 00:25:57.000000000 +0200
 @@ -38,6 +38,11 @@
  	  specified commands.  If no signal name is specified, SIGTERM is
  	  sent.
@@ -41,10 +41,10 @@ diff -Nur busybox-1.1.1/procps/Config.in busybox-1.1.1-owrt/procps/Config.in
  config CONFIG_PIDOF
  	bool "pidof"
  	default n
-diff -Nur busybox-1.1.1/procps/kill.c busybox-1.1.1-owrt/procps/kill.c
---- busybox-1.1.1/procps/kill.c	2006-03-22 22:16:25.000000000 +0100
-+++ busybox-1.1.1-owrt/procps/kill.c	2006-04-01 18:22:53.000000000 +0200
-@@ -34,6 +34,7 @@
+diff -ruN busybox-1.2.0-old/procps/kill.c busybox-1.2.0-new/procps/kill.c
+--- busybox-1.2.0-old/procps/kill.c	2006-07-01 00:42:12.000000000 +0200
++++ busybox-1.2.0-new/procps/kill.c	2006-07-31 00:25:57.000000000 +0200
+@@ -20,6 +20,7 @@
  
  #define KILL 0
  #define KILLALL 1
@@ -52,7 +52,7 @@ diff -Nur busybox-1.1.1/procps/kill.c busybox-1.1.1-owrt/procps/kill.c
  
  int kill_main(int argc, char **argv)
  {
-@@ -48,6 +49,9 @@
+@@ -34,6 +35,9 @@
  #else
  	whichApp = KILL;
  #endif
@@ -62,7 +62,7 @@ diff -Nur busybox-1.1.1/procps/kill.c busybox-1.1.1-owrt/procps/kill.c
  
  	/* Parse any options */
  	if (argc < 2)
-@@ -126,6 +130,20 @@
+@@ -112,6 +116,20 @@
  		}
  
  	}
diff --git a/openwrt/package/busybox/patches/110-telnetd.patch b/openwrt/package/busybox/patches/110-telnetd.patch
index f14143aa62c1df7afb8cd8b7cfbf61b35b3747d3..8ebb6de64542fe4545de30a4b51c9767954ab69c 100644
--- a/openwrt/package/busybox/patches/110-telnetd.patch
+++ b/openwrt/package/busybox/patches/110-telnetd.patch
@@ -1,7 +1,7 @@
-diff -ur busybox-1.1.0/networking/telnetd.c busybox-1.1.0-owrt/networking/telnetd.c
---- busybox-1.1.0/networking/telnetd.c	2006-01-11 06:43:51.000000000 +0100
-+++ busybox-1.1.0-owrt/networking/telnetd.c	2006-01-14 17:41:20.000000000 +0100
-@@ -45,6 +45,7 @@
+diff -ruN busybox-1.2.0-old/networking/telnetd.c busybox-1.2.0-new/networking/telnetd.c
+--- busybox-1.2.0-old/networking/telnetd.c	2006-07-01 00:42:02.000000000 +0200
++++ busybox-1.2.0-new/networking/telnetd.c	2006-07-31 10:52:30.000000000 +0200
+@@ -44,6 +44,7 @@
  #include <arpa/telnet.h>
  #include <ctype.h>
  #include <sys/syslog.h>
@@ -9,7 +9,7 @@ diff -ur busybox-1.1.0/networking/telnetd.c busybox-1.1.0-owrt/networking/telnet
  
  #include "busybox.h"
  
-@@ -394,11 +395,13 @@
+@@ -391,11 +392,13 @@
  	struct in_addr bind_addr = { .s_addr = 0x0 };
  #endif /* CONFIG_FEATURE_TELNETD_INETD */
  	int c;
@@ -25,7 +25,7 @@ diff -ur busybox-1.1.0/networking/telnetd.c busybox-1.1.0-owrt/networking/telnet
  #endif /* CONFIG_FEATURE_TELNETD_INETD */
  	int maxlen, w, r;
  
-@@ -413,6 +416,9 @@
+@@ -410,6 +413,9 @@
  			case 'f':
  				issuefile = optarg;
  				break;
@@ -35,17 +35,17 @@ diff -ur busybox-1.1.0/networking/telnetd.c busybox-1.1.0-owrt/networking/telnet
  			case 'l':
  				loginpath = optarg;
  				break;
-@@ -465,6 +471,13 @@
+@@ -459,6 +465,13 @@
  	sa.sin_addr = bind_addr;
  #endif
  
-+	/* Set it to listen on the specified interface */
-+	if (interface_name) {
-+		strncpy(interface.ifr_ifrn.ifrn_name, interface_name, IFNAMSIZ);
-+		(void)setsockopt(master_fd, SOL_SOCKET,
-+				SO_BINDTODEVICE, &interface, sizeof(interface));
-+	}
-+
- 	if (bind(master_fd, (struct sockaddr *) &sa, sizeof(sa)) < 0) {
- 		bb_perror_msg_and_die("bind");
- 	}
++ 	/* Set it to listen on the specified interface */
++ 	if (interface_name) {
++ 		strncpy(interface.ifr_ifrn.ifrn_name, interface_name, IFNAMSIZ);
++ 		(void)setsockopt(master_fd, SOL_SOCKET,
++ 				SO_BINDTODEVICE, &interface, sizeof(interface));
++ 	}
++ 
+ 	bb_xbind(master_fd, (struct sockaddr *) &sa, sizeof(sa));
+ 	bb_xlisten(master_fd, 1);
+ 	bb_xdaemon(0, 0);
diff --git a/openwrt/package/busybox/patches/150-udhcp-release.patch b/openwrt/package/busybox/patches/150-udhcp-release.patch
index 6420ae6a6a2adf9a879d41ea1ddfb027230a6ddd..1e1c00ef29d6f5ab681a1a2c854d1637d89ec076 100644
--- a/openwrt/package/busybox/patches/150-udhcp-release.patch
+++ b/openwrt/package/busybox/patches/150-udhcp-release.patch
@@ -1,7 +1,7 @@
-diff -Nur busybox-1.1.1/include/usage.h busybox-1.1.1-owrt/include/usage.h
---- busybox-1.1.1/include/usage.h	2006-04-01 18:26:21.000000000 +0200
-+++ busybox-1.1.1-owrt/include/usage.h	2006-04-01 18:27:45.000000000 +0200
-@@ -3268,6 +3268,7 @@
+diff -ruN busybox-1.2.0-old/include/usage.h busybox-1.2.0-new/include/usage.h
+--- busybox-1.2.0-old/include/usage.h	2006-07-31 10:47:56.000000000 +0200
++++ busybox-1.2.0-new/include/usage.h	2006-07-31 11:08:49.000000000 +0200
+@@ -3190,6 +3190,7 @@
  	"\t-n,\t--now\tExit with failure if lease cannot be immediately negotiated\n" \
  	"\t-p,\t--pidfile=file\tStore process ID of daemon in file\n" \
  	"\t-q,\t--quit\tQuit after obtaining lease\n" \
@@ -9,10 +9,10 @@ diff -Nur busybox-1.1.1/include/usage.h busybox-1.1.1-owrt/include/usage.h
  	"\t-r,\t--request=IP\tIP address to request (default: none)\n" \
  	"\t-s,\t--script=file\tRun file at dhcp events (default: /usr/share/udhcpc/default.script)\n" \
  	"\t-t,\t--retries=NUM\tSend up to NUM request packets\n"\
-diff -Nur busybox-1.1.1/networking/udhcp/dhcpc.c busybox-1.1.1-owrt/networking/udhcp/dhcpc.c
---- busybox-1.1.1/networking/udhcp/dhcpc.c	2006-03-22 22:16:19.000000000 +0100
-+++ busybox-1.1.1-owrt/networking/udhcp/dhcpc.c	2006-04-01 18:28:19.000000000 +0200
-@@ -49,6 +49,7 @@
+diff -ruN busybox-1.2.0-old/networking/udhcp/dhcpc.c busybox-1.2.0-new/networking/udhcp/dhcpc.c
+--- busybox-1.2.0-old/networking/udhcp/dhcpc.c	2006-07-01 00:42:02.000000000 +0200
++++ busybox-1.2.0-new/networking/udhcp/dhcpc.c	2006-07-31 11:08:49.000000000 +0200
+@@ -47,6 +47,7 @@
  	.abort_if_no_lease = 0,
  	.foreground = 0,
  	.quit_after_lease = 0,
@@ -20,15 +20,7 @@ diff -Nur busybox-1.1.1/networking/udhcp/dhcpc.c busybox-1.1.1-owrt/networking/u
  	.background_if_no_lease = 0,
  	.interface = "eth0",
  	.pidfile = NULL,
-@@ -82,6 +83,7 @@
- "                                  immediately negotiated.\n"
- "  -p, --pidfile=file              Store process ID of daemon in file\n"
- "  -q, --quit                      Quit after obtaining lease\n"
-+"  -R, --release                   Release IP on quit\n"
- "  -r, --request=IP                IP address to request (default: none)\n"
- "  -s, --script=file               Run file at dhcp events (default:\n"
- "                                  " DEFAULT_SCRIPT ")\n"
-@@ -203,6 +205,7 @@
+@@ -163,6 +164,7 @@
  		{"now",		no_argument,		0, 'n'},
  		{"pidfile",	required_argument,	0, 'p'},
  		{"quit",	no_argument,		0, 'q'},
@@ -36,7 +28,7 @@ diff -Nur busybox-1.1.1/networking/udhcp/dhcpc.c busybox-1.1.1-owrt/networking/u
  		{"request",	required_argument,	0, 'r'},
  		{"script",	required_argument,	0, 's'},
  		{"timeout",	required_argument,	0, 'T'},
-@@ -214,7 +217,7 @@
+@@ -174,7 +176,7 @@
  	/* get options */
  	while (1) {
  		int option_index = 0;
@@ -45,7 +37,7 @@ diff -Nur busybox-1.1.1/networking/udhcp/dhcpc.c busybox-1.1.1-owrt/networking/u
  		if (c == -1) break;
  
  		switch (c) {
-@@ -284,6 +287,9 @@
+@@ -244,6 +246,9 @@
  		case 'q':
  			client_config.quit_after_lease = 1;
  			break;
@@ -55,7 +47,7 @@ diff -Nur busybox-1.1.1/networking/udhcp/dhcpc.c busybox-1.1.1-owrt/networking/u
  		case 'r':
  			requested_ip = inet_addr(optarg);
  			break;
-@@ -527,8 +533,11 @@
+@@ -488,8 +493,11 @@
  
  					state = BOUND;
  					change_mode(LISTEN_NONE);
@@ -68,7 +60,7 @@ diff -Nur busybox-1.1.1/networking/udhcp/dhcpc.c busybox-1.1.1-owrt/networking/u
  					if (!client_config.foreground)
  						client_background();
  
-@@ -553,12 +562,13 @@
+@@ -514,12 +522,13 @@
  			case SIGUSR1:
  				perform_renew();
  				break;
@@ -85,10 +77,10 @@ diff -Nur busybox-1.1.1/networking/udhcp/dhcpc.c busybox-1.1.1-owrt/networking/u
  			}
  		} else if (retval == -1 && errno == EINTR) {
  			/* a signal was caught */
-diff -Nur busybox-1.1.1/networking/udhcp/dhcpc.h busybox-1.1.1-owrt/networking/udhcp/dhcpc.h
---- busybox-1.1.1/networking/udhcp/dhcpc.h	2006-03-22 22:16:19.000000000 +0100
-+++ busybox-1.1.1-owrt/networking/udhcp/dhcpc.h	2006-04-01 18:27:45.000000000 +0200
-@@ -19,6 +19,7 @@
+diff -ruN busybox-1.2.0-old/networking/udhcp/dhcpc.h busybox-1.2.0-new/networking/udhcp/dhcpc.h
+--- busybox-1.2.0-old/networking/udhcp/dhcpc.h	2006-07-01 00:42:02.000000000 +0200
++++ busybox-1.2.0-new/networking/udhcp/dhcpc.h	2006-07-31 11:08:49.000000000 +0200
+@@ -18,6 +18,7 @@
  struct client_config_t {
  	char foreground;		/* Do not fork */
  	char quit_after_lease;		/* Quit after obtaining lease */
diff --git a/openwrt/package/busybox/patches/300-netmsg.patch b/openwrt/package/busybox/patches/300-netmsg.patch
index ad4fcd04d06603ebcceb5d41b23a01ec8884e6d7..428e321390d3a0279ad2a317038c9a8d1fe3995e 100644
--- a/openwrt/package/busybox/patches/300-netmsg.patch
+++ b/openwrt/package/busybox/patches/300-netmsg.patch
@@ -1,21 +1,23 @@
-
-	Copyright (C) 2006 OpenWrt.org
-
-diff -Nur busybox-1.1.1/include/applets.h busybox-1.1.1-owrt/include/applets.h
---- busybox-1.1.1/include/applets.h	2006-04-01 18:26:21.000000000 +0200
-+++ busybox-1.1.1-owrt/include/applets.h	2006-04-01 18:36:28.000000000 +0200
-@@ -197,6 +197,7 @@
- USE_MV(APPLET(mv, mv_main, _BB_DIR_BIN, _BB_SUID_NEVER))
- USE_NAMEIF(APPLET(nameif, nameif_main, _BB_DIR_SBIN, _BB_SUID_NEVER))
- USE_NC(APPLET(nc, nc_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
-+USE_NETMSG(APPLET_NOUSAGE(netmsg, netmsg_main, _BB_DIR_BIN, _BB_SUID_ALWAYS))
- USE_NETSTAT(APPLET(netstat, netstat_main, _BB_DIR_BIN, _BB_SUID_NEVER))
- USE_NICE(APPLET(nice, nice_main, _BB_DIR_BIN, _BB_SUID_NEVER))
- USE_NOHUP(APPLET(nohup, nohup_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
-diff -Nur busybox-1.1.1/networking/Config.in busybox-1.1.1-owrt/networking/Config.in
---- busybox-1.1.1/networking/Config.in	2006-03-22 22:16:19.000000000 +0100
-+++ busybox-1.1.1-owrt/networking/Config.in	2006-04-01 18:35:32.000000000 +0200
-@@ -451,6 +451,12 @@
+# Copyright (C) 2006 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+diff -ruN busybox-1.2.0-old/include/applets.h busybox-1.2.0-new/include/applets.h
+--- busybox-1.2.0-old/include/applets.h	2006-07-31 10:47:56.000000000 +0200
++++ busybox-1.2.0-new/include/applets.h	2006-07-31 11:21:00.000000000 +0200
+@@ -200,6 +200,7 @@
+ 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_NOUSAGE(netmsg, 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_NOHUP(APPLET(nohup, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
+diff -ruN busybox-1.2.0-old/networking/Config.in busybox-1.2.0-new/networking/Config.in
+--- busybox-1.2.0-old/networking/Config.in	2006-07-01 00:42:02.000000000 +0200
++++ busybox-1.2.0-new/networking/Config.in	2006-07-31 11:18:01.000000000 +0200
+@@ -445,6 +445,12 @@
  	help
  	  A simple Unix utility which reads and writes data across network
  	  connections.
@@ -28,9 +30,9 @@ diff -Nur busybox-1.1.1/networking/Config.in busybox-1.1.1-owrt/networking/Confi
  
  config CONFIG_NC_GAPING_SECURITY_HOLE
  	bool "gaping security hole"
-diff -Nur busybox-1.1.1/networking/Makefile.in busybox-1.1.1-owrt/networking/Makefile.in
---- busybox-1.1.1/networking/Makefile.in	2006-03-22 22:16:19.000000000 +0100
-+++ busybox-1.1.1-owrt/networking/Makefile.in	2006-04-01 18:35:32.000000000 +0200
+diff -ruN busybox-1.2.0-old/networking/Makefile.in busybox-1.2.0-new/networking/Makefile.in
+--- busybox-1.2.0-old/networking/Makefile.in	2006-07-01 00:42:02.000000000 +0200
++++ busybox-1.2.0-new/networking/Makefile.in	2006-07-31 11:18:01.000000000 +0200
 @@ -30,6 +30,7 @@
  NETWORKING-$(CONFIG_IPTUNNEL)     += iptunnel.o
  NETWORKING-$(CONFIG_NAMEIF)       += nameif.o
@@ -39,9 +41,9 @@ diff -Nur busybox-1.1.1/networking/Makefile.in busybox-1.1.1-owrt/networking/Mak
  NETWORKING-$(CONFIG_NETSTAT)      += netstat.o
  NETWORKING-$(CONFIG_NSLOOKUP)     += nslookup.o
  NETWORKING-$(CONFIG_PING)         += ping.o
-diff -Nur busybox-1.1.1/networking/netmsg.c busybox-1.1.1-owrt/networking/netmsg.c
---- busybox-1.1.1/networking/netmsg.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.1-owrt/networking/netmsg.c	2006-04-01 18:35:32.000000000 +0200
+diff -ruN busybox-1.2.0-old/networking/netmsg.c busybox-1.2.0-new/networking/netmsg.c
+--- busybox-1.2.0-old/networking/netmsg.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0-new/networking/netmsg.c	2006-07-31 11:18:01.000000000 +0200
 @@ -0,0 +1,63 @@
 +/*
 + * Copyright (C) 2006 Felix Fietkau <nbd@openwrt.org>
diff --git a/openwrt/package/busybox/patches/320-httpd_address_binding.patch b/openwrt/package/busybox/patches/320-httpd_address_binding.patch
index b9503aa02a2c0ba946c893624b7f2a8bf55cae80..68487b88c7aff32c0ad6f1bfcee97282eba5dd40 100644
--- a/openwrt/package/busybox/patches/320-httpd_address_binding.patch
+++ b/openwrt/package/busybox/patches/320-httpd_address_binding.patch
@@ -1,28 +1,20 @@
-
-	Copyright (C) 2006 OpenWrt.org
-
---- busybox-1.1.1/networking/httpd.c	2006-03-22 22:16:19.000000000 +0100
-+++ busybox-1.1.1.new/networking/httpd.c	2006-04-01 19:41:42.150744624 +0200
-@@ -110,6 +110,7 @@
+# Copyright (C) 2006 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+diff -ruN busybox-1.2.0-old/networking/httpd.c busybox-1.2.0-new/networking/httpd.c
+--- busybox-1.2.0-old/networking/httpd.c	2006-07-01 00:42:02.000000000 +0200
++++ busybox-1.2.0-new/networking/httpd.c	2006-08-01 10:06:58.000000000 +0200
+@@ -99,6 +99,7 @@
  #include <sys/types.h>
  #include <sys/socket.h>    /* for connect and socket*/
  #include <netinet/in.h>    /* for sockaddr_in       */
 +#include <arpa/inet.h>
- #include <sys/time.h>
  #include <sys/stat.h>
  #include <sys/wait.h>
-@@ -204,8 +205,8 @@
- 
- void bb_show_usage(void)
- {
--  fprintf(stderr, "Usage: %s [-p <port>] [-c configFile] [-d/-e <string>] "
--		  "[-r realm] [-u user] [-h homedir]\n", bb_applet_name);
-+  fprintf(stderr, "Usage: %s [-p <port>] [-l <IP address>] [-c configFile]"
-+		  "[-d/-e <string>] [-r realm] [-u user] [-h homedir]\n", bb_applet_name);
-   exit(1);
- }
- #endif
-@@ -255,6 +256,7 @@
+ #include <fcntl.h>         /* for open modes        */
+@@ -165,6 +166,7 @@
  #endif
    unsigned port;           /* server initial port and for
  			      set env REMOTE_PORT */
@@ -30,7 +22,7 @@
    union HTTPD_FOUND {
  	const char *found_mime_type;
  	const char *found_moved_temporarily;
-@@ -958,7 +960,10 @@
+@@ -868,7 +870,10 @@
    /* inet_addr() returns a value that is already in network order */
    memset(&lsocket, 0, sizeof(lsocket));
    lsocket.sin_family = AF_INET;
@@ -39,61 +31,61 @@
 +	  if (config->address != NULL) lsocket.sin_addr.s_addr = ((struct in_addr *) ((gethostbyname(config->address))->h_addr))->s_addr;
 +	  else lsocket.sin_addr.s_addr = htons(INADDR_ANY);
 +  }
-   lsocket.sin_port = htons(config->port) ;
-   fd = socket(AF_INET, SOCK_STREAM, 0);
-   if (fd >= 0) {
-@@ -1996,6 +2001,7 @@
+   lsocket.sin_port = htons(config->port);
+   fd = bb_xsocket(AF_INET, SOCK_STREAM, 0);
+   /* tell the OS it's OK to reuse a previous address even though */
+@@ -1899,6 +1904,7 @@
  	USE_FEATURE_HTTPD_AUTH_MD5(m_opt_md5,)
  	USE_FEATURE_HTTPD_SETUID(u_opt_setuid,)
- 	SKIP_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY(p_opt_port,)
-+	SKIP_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY(l_opt_addr,)
+ 	USE_FEATURE_HTTPD_WITHOUT_INETD(p_opt_port,)
++	USE_FEATURE_HTTPD_WITHOUT_INETD(l_opt_addr,)
  };
  
  static const char httpd_opts[]="c:d:h:"
-@@ -2003,7 +2009,7 @@
+@@ -1906,7 +1912,7 @@
  	USE_FEATURE_HTTPD_BASIC_AUTH("r:")
  	USE_FEATURE_HTTPD_AUTH_MD5("m:")
  	USE_FEATURE_HTTPD_SETUID("u:")
--	SKIP_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY("p:");
-+	SKIP_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY("p:l:");
+-	USE_FEATURE_HTTPD_WITHOUT_INETD("p:");
++	USE_FEATURE_HTTPD_WITHOUT_INETD("p:l:");
  
  #define OPT_CONFIG_FILE (1<<c_opt_config_file)
  #define OPT_DECODE_URL  (1<<d_opt_decode_url)
-@@ -2024,6 +2030,8 @@
- #define OPT_PORT        SKIP_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY((1<<p_opt_port)) \
- 			USE_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY(0)
+@@ -1927,6 +1933,8 @@
+ #define OPT_PORT        USE_FEATURE_HTTPD_WITHOUT_INETD((1<<p_opt_port)) \
+ 			SKIP_FEATURE_HTTPD_WITHOUT_INETD(0)
  
-+#define OPT_ADDRESS     SKIP_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY((1<<l_opt_addr)) \
-+			USE_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY(0)
++#define OPT_ADDRESS     USE_FEATURE_HTTPD_WITHOUT_INETD((1<<l_opt_addr)) \
++			SKIP_FEATURE_HTTPD_WITHOUT_INETD(0)
  
- #ifdef HTTPD_STANDALONE
- int main(int argc, char *argv[])
-@@ -2036,6 +2044,7 @@
+ int httpd_main(int argc, char *argv[])
+ {
+@@ -1935,6 +1943,7 @@
    char *url_for_decode;
    USE_FEATURE_HTTPD_ENCODE_URL_STR(const char *url_for_encode;)
-   SKIP_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY(const char *s_port;)
-+  SKIP_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY(const char *s_addr;)
-   SKIP_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY(int server;)
+   USE_FEATURE_HTTPD_WITHOUT_INETD(const char *s_port;)
++  USE_FEATURE_HTTPD_WITHOUT_INETD(const char *s_addr;)
+   USE_FEATURE_HTTPD_WITHOUT_INETD(int server;)
  
    USE_FEATURE_HTTPD_SETUID(const char *s_uid;)
-@@ -2050,6 +2059,7 @@
+@@ -1949,6 +1958,7 @@
  
- #ifndef CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY
+ #ifdef CONFIG_FEATURE_HTTPD_WITHOUT_INETD
    config->port = 80;
 +  config->address = "";
  #endif
  
    config->ContentLength = -1;
-@@ -2061,6 +2071,7 @@
+@@ -1960,6 +1970,7 @@
  			USE_FEATURE_HTTPD_AUTH_MD5(, &pass)
  			USE_FEATURE_HTTPD_SETUID(, &s_uid)
- 			SKIP_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY(, &s_port)
-+			SKIP_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY(, &s_addr)
+ 			USE_FEATURE_HTTPD_WITHOUT_INETD(, &s_port)
++			USE_FEATURE_HTTPD_WITHOUT_INETD(, &s_addr)
  	);
  
    if(opt & OPT_DECODE_URL) {
-@@ -2082,6 +2093,8 @@
- #ifndef CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY
+@@ -1981,6 +1992,8 @@
+ #ifdef CONFIG_FEATURE_HTTPD_WITHOUT_INETD
      if(opt & OPT_PORT)
  	config->port = bb_xgetlarg(s_port, 10, 1, 0xffff);
 +    if (opt & OPT_ADDRESS)
diff --git a/openwrt/package/busybox/patches/340-lock_util.patch b/openwrt/package/busybox/patches/340-lock_util.patch
index ad594e68db5f7ec23064193de5b6be99f10f15a3..a86948d597d52f75ae14047d32600b4f1b6cb731 100644
--- a/openwrt/package/busybox/patches/340-lock_util.patch
+++ b/openwrt/package/busybox/patches/340-lock_util.patch
@@ -1,21 +1,23 @@
-
-	Copyright (C) 2006 OpenWrt.org
-
-diff -urN busybox.old/include/applets.h busybox.dev/include/applets.h
---- busybox.old/include/applets.h	2006-04-05 01:06:29.000000000 +0200
-+++ busybox.dev/include/applets.h	2006-04-05 01:19:09.000000000 +0200
-@@ -167,6 +167,7 @@
- USE_LN(APPLET(ln, ln_main, _BB_DIR_BIN, _BB_SUID_NEVER))
- USE_LOADFONT(APPLET(loadfont, loadfont_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
- USE_LOADKMAP(APPLET(loadkmap, loadkmap_main, _BB_DIR_SBIN, _BB_SUID_NEVER))
-+USE_LOCK(APPLET_NOUSAGE(lock, lock_main, _BB_DIR_BIN, _BB_SUID_NEVER))
- USE_LOGGER(APPLET(logger, logger_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
- USE_LOGIN(APPLET(login, login_main, _BB_DIR_BIN, _BB_SUID_ALWAYS))
- USE_LOGNAME(APPLET(logname, logname_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
-diff -urN busybox.old/miscutils/Config.in busybox.dev/miscutils/Config.in
---- busybox.old/miscutils/Config.in	2006-03-22 22:16:24.000000000 +0100
-+++ busybox.dev/miscutils/Config.in	2006-04-05 01:07:12.000000000 +0200
-@@ -209,6 +209,12 @@
+# Copyright (C) 2006 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+diff -ruN busybox-1.2.0-old/include/applets.h busybox-1.2.0-new/include/applets.h
+--- busybox-1.2.0-old/include/applets.h	2006-07-31 11:21:00.000000000 +0200
++++ busybox-1.2.0-new/include/applets.h	2006-08-01 10:21:15.000000000 +0200
+@@ -169,6 +169,7 @@
+ USE_LN(APPLET(ln, _BB_DIR_BIN, _BB_SUID_NEVER))
+ USE_LOADFONT(APPLET(loadfont, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
+ USE_LOADKMAP(APPLET(loadkmap, _BB_DIR_SBIN, _BB_SUID_NEVER))
++USE_LOCK(APPLET_NOUSAGE(lock, 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(logname, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
+diff -ruN busybox-1.2.0-old/miscutils/Config.in busybox-1.2.0-new/miscutils/Config.in
+--- busybox-1.2.0-old/miscutils/Config.in	2006-07-01 00:42:09.000000000 +0200
++++ busybox-1.2.0-new/miscutils/Config.in	2006-08-01 10:21:15.000000000 +0200
+@@ -231,6 +231,12 @@
  	  Enables the 'hdparm -d' option to get/set using_dma flag.
  	  This is dangerous stuff, so you should probably say N.
  
@@ -28,20 +30,9 @@ diff -urN busybox.old/miscutils/Config.in busybox.dev/miscutils/Config.in
  config CONFIG_MAKEDEVS
  	bool "makedevs"
  	default n
-diff -urN busybox.old/miscutils/Makefile.in busybox.dev/miscutils/Makefile.in
---- busybox.old/miscutils/Makefile.in	2006-03-22 22:16:24.000000000 +0100
-+++ busybox.dev/miscutils/Makefile.in	2006-04-05 01:10:50.000000000 +0200
-@@ -20,6 +20,7 @@
- MISCUTILS-$(CONFIG_EJECT)       += eject.o
- MISCUTILS-$(CONFIG_HDPARM)      += hdparm.o
- MISCUTILS-$(CONFIG_LAST)        += last.o
-+MISCUTILS-$(CONFIG_LOCK)        += lock.o
- MISCUTILS-${CONFIG_LESS}        += less.o
- MISCUTILS-$(CONFIG_MAKEDEVS)    += makedevs.o
- MISCUTILS-$(CONFIG_MOUNTPOINT)  += mountpoint.o
-diff -urN busybox.old/miscutils/lock.c busybox.dev/miscutils/lock.c
---- busybox.old/miscutils/lock.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox.dev/miscutils/lock.c	2006-04-05 01:07:12.000000000 +0200
+diff -ruN busybox-1.2.0-old/miscutils/lock.c busybox-1.2.0-new/miscutils/lock.c
+--- busybox-1.2.0-old/miscutils/lock.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0-new/miscutils/lock.c	2006-08-01 10:21:15.000000000 +0200
 @@ -0,0 +1,133 @@
 +/*
 + * Copyright (C) 2006 Felix Fietkau <nbd@openwrt.org>
@@ -176,3 +167,14 @@ diff -urN busybox.old/miscutils/lock.c busybox.dev/miscutils/lock.c
 +	else
 +		return do_lock();
 +}
+diff -ruN busybox-1.2.0-old/miscutils/Makefile.in busybox-1.2.0-new/miscutils/Makefile.in
+--- busybox-1.2.0-old/miscutils/Makefile.in	2006-07-01 00:42:09.000000000 +0200
++++ busybox-1.2.0-new/miscutils/Makefile.in	2006-08-01 10:21:15.000000000 +0200
+@@ -20,6 +20,7 @@
+ MISCUTILS-$(CONFIG_EJECT)       += eject.o
+ MISCUTILS-$(CONFIG_HDPARM)      += hdparm.o
+ MISCUTILS-$(CONFIG_LAST)        += last.o
++MISCUTILS-$(CONFIG_LOCK)        += lock.o
+ MISCUTILS-${CONFIG_LESS}        += less.o
+ MISCUTILS-$(CONFIG_MAKEDEVS)    += makedevs.o
+ MISCUTILS-$(CONFIG_MOUNTPOINT)  += mountpoint.o
diff --git a/openwrt/package/busybox/patches/911-ipkg.patch b/openwrt/package/busybox/patches/911-ipkg.patch
index 1d7a4e357461242e8cc1f6e9ce368fb67b15c903..1824e03c426a55a042a4ff4ea9615becb5e792ed 100644
--- a/openwrt/package/busybox/patches/911-ipkg.patch
+++ b/openwrt/package/busybox/patches/911-ipkg.patch
@@ -1,21 +1,13 @@
+# Copyright (C) 2006 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
 #
 # add ipkg support to busybox
 #
-diff -ruN busybox-1.1.2-orig/Makefile busybox-1.1.2+ipkg-0.99.162/Makefile
---- busybox-1.1.2-orig/Makefile	2006-04-10 21:45:46.000000000 +0200
-+++ busybox-1.1.2+ipkg-0.99.162/Makefile	2006-05-09 02:06:48.000000000 +0200
-@@ -25,7 +25,7 @@
- export srctree=$(top_srcdir)
- vpath %/Config.in $(srctree)
- 
--DIRS:=applets archival archival/libunarchive coreutils console-tools \
-+DIRS:=applets archival archival/libipkg archival/libunarchive coreutils console-tools \
- 	debianutils editors findutils init miscutils modutils networking \
- 	networking/libiproute networking/udhcp procps loginutils shell \
- 	sysklogd util-linux e2fsprogs libpwdgrp coreutils/libcoreutils libbb
-diff -ruN busybox-1.1.2-orig/archival/Config.in busybox-1.1.2+ipkg-0.99.162/archival/Config.in
---- busybox-1.1.2-orig/archival/Config.in	2006-03-22 22:16:20.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/Config.in	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/Config.in busybox-1.2.0+ipkg-0.99.162/archival/Config.in
+--- busybox-1.2.0-orig/archival/Config.in	2006-07-01 00:42:04.000000000 +0200
++++ busybox-1.2.0+ipkg-0.99.162/archival/Config.in	2006-07-22 16:31:25.000000000 +0200
 @@ -121,6 +121,14 @@
  	  gzip is used to compress files.
  	  It's probably the most widely used UNIX compression program.
@@ -31,21 +23,10 @@ diff -ruN busybox-1.1.2-orig/archival/Config.in busybox-1.1.2+ipkg-0.99.162/arch
  config CONFIG_RPM2CPIO
  	bool "rpm2cpio"
  	default n
-diff -ruN busybox-1.1.2-orig/archival/Makefile.in busybox-1.1.2+ipkg-0.99.162/archival/Makefile.in
---- busybox-1.1.2-orig/archival/Makefile.in	2006-03-22 22:16:20.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/Makefile.in	2006-05-09 02:06:48.000000000 +0200
-@@ -20,6 +20,7 @@
- ARCHIVAL-$(CONFIG_DPKG_DEB)	+= dpkg_deb.o
- ARCHIVAL-$(CONFIG_GUNZIP)	+= gunzip.o
- ARCHIVAL-$(CONFIG_GZIP)		+= gzip.o
-+ARCHIVAL-$(CONFIG_IPKG)		+= ipkg.o
- ARCHIVAL-$(CONFIG_RPM2CPIO)	+= rpm2cpio.o
- ARCHIVAL-$(CONFIG_RPM)		+= rpm.o
- ARCHIVAL-$(CONFIG_TAR)		+= tar.o
-diff -ruN busybox-1.1.2-orig/archival/dpkg.c busybox-1.1.2+ipkg-0.99.162/archival/dpkg.c
---- busybox-1.1.2-orig/archival/dpkg.c	2006-03-22 22:16:20.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/dpkg.c	2006-05-09 02:06:48.000000000 +0200
-@@ -1530,6 +1530,10 @@
+diff -ruN busybox-1.2.0-orig/archival/dpkg.c busybox-1.2.0+ipkg-0.99.162/archival/dpkg.c
+--- busybox-1.2.0-orig/archival/dpkg.c	2006-07-01 00:42:04.000000000 +0200
++++ busybox-1.2.0+ipkg-0.99.162/archival/dpkg.c	2006-07-22 16:31:25.000000000 +0200
+@@ -1430,6 +1430,10 @@
  	return(ar_handle->sub_archive->buffer);
  }
  
@@ -56,7 +37,7 @@ diff -ruN busybox-1.1.2-orig/archival/dpkg.c busybox-1.1.2+ipkg-0.99.162/archiva
  static void data_extract_all_prefix(archive_handle_t *archive_handle)
  {
  	char *name_ptr = archive_handle->file_header->name;
-@@ -1544,6 +1548,8 @@
+@@ -1442,6 +1446,8 @@
  	return;
  }
  
@@ -65,9 +46,9 @@ diff -ruN busybox-1.1.2-orig/archival/dpkg.c busybox-1.1.2+ipkg-0.99.162/archiva
  static void unpack_package(deb_file_t *deb_file)
  {
  	const char *package_name = name_hashtable[package_hashtable[deb_file->package]->name];
-diff -ruN busybox-1.1.2-orig/archival/ipkg.c busybox-1.1.2+ipkg-0.99.162/archival/ipkg.c
---- busybox-1.1.2-orig/archival/ipkg.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/ipkg.c	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/ipkg.c busybox-1.2.0+ipkg-0.99.162/archival/ipkg.c
+--- busybox-1.2.0-orig/archival/ipkg.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/ipkg.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,26 @@
 +/* ipkg.c - the itsy package management system
 +
@@ -95,134 +76,9 @@ diff -ruN busybox-1.1.2-orig/archival/ipkg.c busybox-1.1.2+ipkg-0.99.162/archiva
 +{
 +	return ipkg_op(argc, argv);
 +}
-diff -ruN busybox-1.1.2-orig/archival/libipkg/Makefile busybox-1.1.2+ipkg-0.99.162/archival/libipkg/Makefile
---- busybox-1.1.2-orig/archival/libipkg/Makefile	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/Makefile	2006-05-09 02:06:48.000000000 +0200
-@@ -0,0 +1,32 @@
-+# Makefile for busybox
-+#
-+# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
-+#
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+# General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+#
-+
-+top_srcdir=../..
-+top_builddir=../..
-+srcdir=$(top_srcdir)/archival/libipkg
-+LIBIPKG_DIR:=./
-+include $(top_builddir)/Rules.mak
-+include $(top_builddir)/.config
-+include $(srcdir)/Makefile.in
-+all: $(libraries-y)
-+-include $(top_builddir)/.depend
-+
-+clean:
-+	rm -f *.o *.a $(AR_TARGET)
-+
-diff -ruN busybox-1.1.2-orig/archival/libipkg/Makefile.in busybox-1.1.2+ipkg-0.99.162/archival/libipkg/Makefile.in
---- busybox-1.1.2-orig/archival/libipkg/Makefile.in	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/Makefile.in	2006-05-09 02:06:48.000000000 +0200
-@@ -0,0 +1,85 @@
-+# Makefile for busybox
-+#
-+# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
-+#
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+# General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+#
-+
-+LIBIPKG_AR:=libipkg.a
-+ifndef $(LIBIPKG_DIR)
-+LIBIPKG_DIR:=$(top_builddir)/archival/libipkg/
-+endif
-+srcdir=$(top_srcdir)/archival/libipkg
-+
-+LIBIPKG_CORE_SOURCES:= \
-+	args.c \
-+	libipkg.c \
-+	user.c \
-+
-+LIBIPKG_CMD_SOURCES:= \
-+	ipkg_cmd.c \
-+	ipkg_configure.c \
-+	ipkg_download.c \
-+	ipkg_install.c \
-+	ipkg_remove.c \
-+	ipkg_upgrade.c \
-+
-+LIBIPKG_DB_SOURCES:= \
-+	hash_table.c \
-+	ipkg_conf.c \
-+	ipkg_utils.c \
-+	pkg.c \
-+	pkg_depends.c \
-+	pkg_extract.c \
-+	pkg_hash.c \
-+	pkg_parse.c \
-+	pkg_vec.c \
-+
-+LIBIPKG_LIST_SOURCES:= \
-+	conffile.c \
-+	conffile_list.c \
-+	nv_pair.c \
-+	nv_pair_list.c \
-+	pkg_dest.c \
-+	pkg_dest_list.c \
-+	pkg_src.c \
-+	pkg_src_list.c \
-+	str_list.c \
-+	void_list.c \
-+
-+LIBIPKG_UTIL_SOURCES:= \
-+	file_util.c \
-+	ipkg_message.c \
-+	md5.c \
-+	str_util.c \
-+	xsystem.c \
-+
-+LIBIPKG-$(CONFIG_IPKG) += $(LIBIPKG_CORE_SOURCES)
-+LIBIPKG-$(CONFIG_IPKG) += $(LIBIPKG_CMD_SOURCES)
-+LIBIPKG-$(CONFIG_IPKG) += $(LIBIPKG_DB_SOURCES)
-+LIBIPKG-$(CONFIG_IPKG) += $(LIBIPKG_LIST_SOURCES)
-+LIBIPKG-$(CONFIG_IPKG) += $(LIBIPKG_UTIL_SOURCES)
-+LIBIPKG_OBJS=$(patsubst %.c,$(LIBIPKG_DIR)%.o, $(LIBIPKG-y))
-+
-+CFLAGS += -DIPKG_LIB -DIPKGLIBDIR="\"/usr/lib\"" -DHOST_CPU_STR="\"$(TARGET_ARCH)\""
-+
-+libraries-$(CONFIG_IPKG) += $(LIBIPKG_DIR)$(LIBIPKG_AR)
-+
-+$(LIBIPKG_DIR)$(LIBIPKG_AR): $(LIBIPKG_OBJS)
-+	$(do_ar)
-+
-+$(LIBIPKG_OBJS): $(LIBIPKG_DIR)%.o : $(srcdir)/%.c
-+	$(compile.c)
-+
-diff -ruN busybox-1.1.2-orig/archival/libipkg/args.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/args.c
---- busybox-1.1.2-orig/archival/libipkg/args.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/args.c	2006-05-09 02:12:03.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/args.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/args.c
+--- busybox-1.2.0-orig/archival/libipkg/args.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/args.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,242 @@
 +/* args.c - parse command-line args
 + 
@@ -466,9 +322,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/args.c busybox-1.1.2+ipkg-0.99.162
 +{
 +	bb_error_msg("version %s\n", IPKG_VERSION);
 +}
-diff -ruN busybox-1.1.2-orig/archival/libipkg/args.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/args.h
---- busybox-1.1.2-orig/archival/libipkg/args.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/args.h	2006-05-09 02:12:03.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/args.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/args.h
+--- busybox-1.2.0-orig/archival/libipkg/args.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/args.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,72 @@
 +/* args.h - parse command-line args
 +
@@ -542,9 +398,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/args.h busybox-1.1.2+ipkg-0.99.162
 +void args_usage(char *complaint);
 +
 +#endif
-diff -ruN busybox-1.1.2-orig/archival/libipkg/conffile.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/conffile.c
---- busybox-1.1.2-orig/archival/libipkg/conffile.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/conffile.c	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/conffile.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/conffile.c
+--- busybox-1.2.0-orig/archival/libipkg/conffile.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/conffile.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,64 @@
 +/* conffile.c - the itsy package management system
 +
@@ -610,9 +466,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/conffile.c busybox-1.1.2+ipkg-0.99
 +
 +    return ret;
 +}
-diff -ruN busybox-1.1.2-orig/archival/libipkg/conffile.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/conffile.h
---- busybox-1.1.2-orig/archival/libipkg/conffile.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/conffile.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/conffile.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/conffile.h
+--- busybox-1.2.0-orig/archival/libipkg/conffile.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/conffile.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,30 @@
 +/* conffile.h - the itsy package management system
 +
@@ -644,9 +500,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/conffile.h busybox-1.1.2+ipkg-0.99
 +
 +#endif
 +
-diff -ruN busybox-1.1.2-orig/archival/libipkg/conffile_list.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/conffile_list.c
---- busybox-1.1.2-orig/archival/libipkg/conffile_list.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/conffile_list.c	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/conffile_list.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/conffile_list.c
+--- busybox-1.2.0-orig/archival/libipkg/conffile_list.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/conffile_list.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,47 @@
 +/* conffile_list.c - the itsy package management system
 +
@@ -695,9 +551,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/conffile_list.c busybox-1.1.2+ipkg
 +    return nv_pair_list_pop(list);
 +}
 +
-diff -ruN busybox-1.1.2-orig/archival/libipkg/conffile_list.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/conffile_list.h
---- busybox-1.1.2-orig/archival/libipkg/conffile_list.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/conffile_list.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/conffile_list.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/conffile_list.h
+--- busybox-1.2.0-orig/archival/libipkg/conffile_list.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/conffile_list.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,36 @@
 +/* conffile_list.h - the itsy package management system
 +
@@ -735,9 +591,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/conffile_list.h busybox-1.1.2+ipkg
 +
 +#endif
 +
-diff -ruN busybox-1.1.2-orig/archival/libipkg/file_util.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/file_util.c
---- busybox-1.1.2-orig/archival/libipkg/file_util.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/file_util.c	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/file_util.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/file_util.c
+--- busybox-1.2.0-orig/archival/libipkg/file_util.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/file_util.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,177 @@
 +/* file_util.c - convenience routines for common stat operations
 +
@@ -916,9 +772,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/file_util.c busybox-1.1.2+ipkg-0.9
 +    return md5sum_hex;
 +}
 +
-diff -ruN busybox-1.1.2-orig/archival/libipkg/file_util.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/file_util.h
---- busybox-1.1.2-orig/archival/libipkg/file_util.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/file_util.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/file_util.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/file_util.h
+--- busybox-1.2.0-orig/archival/libipkg/file_util.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/file_util.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,29 @@
 +/* file_util.h - convenience routines for common file operations
 +
@@ -949,9 +805,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/file_util.h busybox-1.1.2+ipkg-0.9
 +char *file_md5sum_alloc(const char *file_name);
 +
 +#endif
-diff -ruN busybox-1.1.2-orig/archival/libipkg/hash_table.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/hash_table.c
---- busybox-1.1.2-orig/archival/libipkg/hash_table.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/hash_table.c	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/hash_table.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/hash_table.c
+--- busybox-1.2.0-orig/archival/libipkg/hash_table.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/hash_table.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,155 @@
 +/* hash.c - hash tables for ipkg
 +
@@ -1108,9 +964,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/hash_table.c busybox-1.1.2+ipkg-0.
 +    }
 +}
 +
-diff -ruN busybox-1.1.2-orig/archival/libipkg/hash_table.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/hash_table.h
---- busybox-1.1.2-orig/archival/libipkg/hash_table.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/hash_table.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/hash_table.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/hash_table.h
+--- busybox-1.2.0-orig/archival/libipkg/hash_table.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/hash_table.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,44 @@
 +/* hash.h - hash tables for ipkg
 +
@@ -1156,87 +1012,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/hash_table.h busybox-1.1.2+ipkg-0.
 +void hash_table_foreach(hash_table_t *hash, void (*f)(const char *key, void *entry, void *data), void *data);
 +
 +#endif /* _HASH_TABLE_H_ */
-diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg.h
---- busybox-1.1.2-orig/archival/libipkg/ipkg.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg.h	2006-05-09 02:06:48.000000000 +0200
-@@ -0,0 +1,74 @@
-+/* ipkg.h - the itsy package management system
-+
-+   Carl D. Worth
-+
-+   Copyright (C) 2001 University of Southern California
-+
-+   This program is free software; you can redistribute it and/or
-+   modify it under the terms of the GNU General Public License as
-+   published by the Free Software Foundation; either version 2, or (at
-+   your option) any later version.
-+
-+   This program is distributed in the hope that it will be useful, but
-+   WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+   General Public License for more details.
-+*/
-+
-+#ifndef IPKG_H
-+#define IPKG_H
-+
-+/*
-+#ifdef HAVE_CONFIG_H
-+#include "config.h"
-+#endif
-+*/
-+
-+#if 0
-+#define IPKG_DEBUG_NO_TMP_CLEANUP
-+#endif
-+
-+#include "ipkg_includes.h"
-+#include "ipkg_conf.h"
-+#include "ipkg_message.h"
-+
-+#define IPKG_PKG_EXTENSION ".ipk"
-+#define DPKG_PKG_EXTENSION ".deb"
-+
-+#define IPKG_LEGAL_PKG_NAME_CHARS "abcdefghijklmnopqrstuvwxyz0123456789.+-"
-+#define IPKG_PKG_VERSION_SEP_CHAR '_'
-+
-+#define IPKG_STATE_DIR_PREFIX IPKGLIBDIR"/ipkg"
-+#define IPKG_LISTS_DIR_SUFFIX "lists"
-+#define IPKG_INFO_DIR_SUFFIX "info"
-+#define IPKG_STATUS_FILE_SUFFIX "status"
-+
-+#define IPKG_BACKUP_SUFFIX "-ipkg.backup"
-+
-+#define IPKG_LIST_DESCRIPTION_LENGTH 128
-+
-+#define IPKG_VERSION "0.99.162"
-+
-+
-+enum ipkg_error {
-+    IPKG_SUCCESS = 0,
-+    IPKG_PKG_DEPS_UNSATISFIED,
-+    IPKG_PKG_IS_ESSENTIAL,
-+    IPKG_PKG_HAS_DEPENDENTS,
-+    IPKG_PKG_HAS_NO_CANDIDATE
-+};
-+typedef enum ipkg_error ipkg_error_t;
-+
-+extern int ipkg_state_changed;
-+
-+
-+struct errlist {
-+    char * errmsg;
-+    struct errlist * next;
-+} ;
-+
-+extern struct errlist* error_list;
-+
-+extern ipkg_conf_t *global_conf;
-+
-+#endif
-diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_cmd.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_cmd.c
---- busybox-1.1.2-orig/archival/libipkg/ipkg_cmd.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_cmd.c	2006-05-09 02:23:37.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/ipkg_cmd.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_cmd.c
+--- busybox-1.2.0-orig/archival/libipkg/ipkg_cmd.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_cmd.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,1431 @@
 +/* ipkg_cmd.c - the itsy package management system
 +
@@ -2669,9 +2447,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_cmd.c busybox-1.1.2+ipkg-0.99
 +}
 +
 +
-diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_cmd.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_cmd.h
---- busybox-1.1.2-orig/archival/libipkg/ipkg_cmd.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_cmd.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/ipkg_cmd.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_cmd.h
+--- busybox-1.2.0-orig/archival/libipkg/ipkg_cmd.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_cmd.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,46 @@
 +/* ipkg_cmd.h - the itsy package management system
 +
@@ -2719,9 +2497,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_cmd.h busybox-1.1.2+ipkg-0.99
 +int pkg_mark_provides(pkg_t *pkg);
 +
 +#endif
-diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_conf.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_conf.c
---- busybox-1.1.2-orig/archival/libipkg/ipkg_conf.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_conf.c	2006-05-09 02:12:04.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/ipkg_conf.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_conf.c
+--- busybox-1.2.0-orig/archival/libipkg/ipkg_conf.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_conf.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,711 @@
 +/* ipkg_conf.c - the itsy package management system
 +
@@ -3434,9 +3212,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_conf.c busybox-1.1.2+ipkg-0.9
 +     sprintf_alloc(&root_filename, "%s%s", (conf->offline_root ? conf->offline_root : ""), filename);
 +     return root_filename;
 +}
-diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_conf.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_conf.h
---- busybox-1.1.2-orig/archival/libipkg/ipkg_conf.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_conf.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/ipkg_conf.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_conf.h
+--- busybox-1.2.0-orig/archival/libipkg/ipkg_conf.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_conf.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,107 @@
 +/* ipkg_conf.h - the itsy package management system
 +
@@ -3545,9 +3323,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_conf.h busybox-1.1.2+ipkg-0.9
 +char *root_filename_alloc(ipkg_conf_t *conf, char *filename);
 +
 +#endif
-diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_configure.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_configure.c
---- busybox-1.1.2-orig/archival/libipkg/ipkg_configure.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_configure.c	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/ipkg_configure.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_configure.c
+--- busybox-1.2.0-orig/archival/libipkg/ipkg_configure.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_configure.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,40 @@
 +/* ipkg_configure.c - the itsy package management system
 +
@@ -3589,9 +3367,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_configure.c busybox-1.1.2+ipk
 +    return 0;
 +}
 +
-diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_configure.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_configure.h
---- busybox-1.1.2-orig/archival/libipkg/ipkg_configure.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_configure.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/ipkg_configure.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_configure.h
+--- busybox-1.2.0-orig/archival/libipkg/ipkg_configure.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_configure.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,25 @@
 +/* ipkg_configure.h - the itsy package management system
 +
@@ -3618,9 +3396,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_configure.h busybox-1.1.2+ipk
 +int ipkg_configure(ipkg_conf_t *ipkg_conf, pkg_t *pkg);
 +
 +#endif
-diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_download.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_download.c
---- busybox-1.1.2-orig/archival/libipkg/ipkg_download.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_download.c	2006-05-09 02:12:04.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/ipkg_download.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_download.c
+--- busybox-1.2.0-orig/archival/libipkg/ipkg_download.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_download.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,195 @@
 +/* ipkg_download.c - the itsy package management system
 +
@@ -3817,9 +3595,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_download.c busybox-1.1.2+ipkg
 +     }
 +     return 0;
 +}
-diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_download.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_download.h
---- busybox-1.1.2-orig/archival/libipkg/ipkg_download.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_download.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/ipkg_download.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_download.h
+--- busybox-1.2.0-orig/archival/libipkg/ipkg_download.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_download.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,30 @@
 +/* ipkg_download.h - the itsy package management system
 +
@@ -3851,36 +3629,114 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_download.h busybox-1.1.2+ipkg
 +int ipkg_prepare_url_for_install(ipkg_conf_t *conf, const char *url, char **namep);
 +
 +#endif
-diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_includes.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_includes.h
---- busybox-1.1.2-orig/archival/libipkg/ipkg_includes.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_includes.h	2006-05-09 02:06:48.000000000 +0200
-@@ -0,0 +1,79 @@
-+#ifndef IPKG_INCLUDES_H
-+#define IPKG_INCLUDES_H
+diff -ruN busybox-1.2.0-orig/archival/libipkg/ipkg.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg.h
+--- busybox-1.2.0-orig/archival/libipkg/ipkg.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg.h	2006-07-22 16:31:25.000000000 +0200
+@@ -0,0 +1,74 @@
++/* ipkg.h - the itsy package management system
 +
-+/* Define to 1 if you have the <memory.h> header file. */
-+#define HAVE_MEMORY_H 1
++   Carl D. Worth
 +
-+/* Define to 1 if you have the <regex.h> header file. */
-+#define HAVE_REGEX_H 1
++   Copyright (C) 2001 University of Southern California
 +
-+/* Define to 1 if you have the <stdlib.h> header file. */
-+#define HAVE_STDLIB_H 1
++   This program is free software; you can redistribute it and/or
++   modify it under the terms of the GNU General Public License as
++   published by the Free Software Foundation; either version 2, or (at
++   your option) any later version.
 +
-+/* Define to 1 if you have the <strings.h> header file. */
-+#define HAVE_STRINGS_H 1
++   This program is distributed in the hope that it will be useful, but
++   WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   General Public License for more details.
++*/
 +
-+/* Define to 1 if you have the <string.h> header file. */
-+#define HAVE_STRING_H 1
++#ifndef IPKG_H
++#define IPKG_H
 +
-+/* Define to 1 if you have the <sys/stat.h> header file. */
-+#define HAVE_SYS_STAT_H 1
++/*
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++*/
 +
-+/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
-+#define HAVE_SYS_WAIT_H 1
++#if 0
++#define IPKG_DEBUG_NO_TMP_CLEANUP
++#endif
 +
-+/* Define to 1 if you have the <unistd.h> header file. */
-+#define HAVE_UNISTD_H 1
++#include "ipkg_includes.h"
++#include "ipkg_conf.h"
++#include "ipkg_message.h"
++
++#define IPKG_PKG_EXTENSION ".ipk"
++#define DPKG_PKG_EXTENSION ".deb"
++
++#define IPKG_LEGAL_PKG_NAME_CHARS "abcdefghijklmnopqrstuvwxyz0123456789.+-"
++#define IPKG_PKG_VERSION_SEP_CHAR '_'
++
++#define IPKG_STATE_DIR_PREFIX IPKGLIBDIR"/ipkg"
++#define IPKG_LISTS_DIR_SUFFIX "lists"
++#define IPKG_INFO_DIR_SUFFIX "info"
++#define IPKG_STATUS_FILE_SUFFIX "status"
++
++#define IPKG_BACKUP_SUFFIX "-ipkg.backup"
++
++#define IPKG_LIST_DESCRIPTION_LENGTH 128
++
++#define IPKG_VERSION "0.99.162"
++
++
++enum ipkg_error {
++    IPKG_SUCCESS = 0,
++    IPKG_PKG_DEPS_UNSATISFIED,
++    IPKG_PKG_IS_ESSENTIAL,
++    IPKG_PKG_HAS_DEPENDENTS,
++    IPKG_PKG_HAS_NO_CANDIDATE
++};
++typedef enum ipkg_error ipkg_error_t;
++
++extern int ipkg_state_changed;
++
++
++struct errlist {
++    char * errmsg;
++    struct errlist * next;
++} ;
++
++extern struct errlist* error_list;
++
++extern ipkg_conf_t *global_conf;
++
++#endif
+diff -ruN busybox-1.2.0-orig/archival/libipkg/ipkg_includes.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_includes.h
+--- busybox-1.2.0-orig/archival/libipkg/ipkg_includes.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_includes.h	2006-07-22 16:31:25.000000000 +0200
+@@ -0,0 +1,79 @@
++#ifndef IPKG_INCLUDES_H
++#define IPKG_INCLUDES_H
++
++/* Define to 1 if you have the <memory.h> header file. */
++#define HAVE_MEMORY_H 1
++
++/* Define to 1 if you have the <regex.h> header file. */
++#define HAVE_REGEX_H 1
++
++/* Define to 1 if you have the <stdlib.h> header file. */
++#define HAVE_STDLIB_H 1
++
++/* Define to 1 if you have the <strings.h> header file. */
++#define HAVE_STRINGS_H 1
++
++/* Define to 1 if you have the <string.h> header file. */
++#define HAVE_STRING_H 1
++
++/* Define to 1 if you have the <sys/stat.h> header file. */
++#define HAVE_SYS_STAT_H 1
++
++/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
++#define HAVE_SYS_WAIT_H 1
++
++/* Define to 1 if you have the <unistd.h> header file. */
++#define HAVE_UNISTD_H 1
 +
 +/* Define to 1 if you have the ANSI C header files. */
 +#define STDC_HEADERS 1
@@ -3934,9 +3790,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_includes.h busybox-1.1.2+ipkg
 +#endif
 +
 +#endif /* IPKG_INCLUDES_H */
-diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_install.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_install.c
---- busybox-1.1.2-orig/archival/libipkg/ipkg_install.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_install.c	2006-05-09 02:12:04.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/ipkg_install.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_install.c
+--- busybox-1.2.0-orig/archival/libipkg/ipkg_install.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_install.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,1942 @@
 +/* ipkg_install.c - the itsy package management system
 +
@@ -5880,9 +5736,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_install.c busybox-1.1.2+ipkg-
 +}
 +
 +#endif
-diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_install.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_install.h
---- busybox-1.1.2-orig/archival/libipkg/ipkg_install.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_install.h	2006-05-09 02:12:04.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/ipkg_install.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_install.h
+--- busybox-1.2.0-orig/archival/libipkg/ipkg_install.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_install.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,35 @@
 +/* ipkg_install.h - the itsy package management system
 +
@@ -5919,9 +5775,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_install.h busybox-1.1.2+ipkg-
 +int name_mark_dependencies_for_installation(ipkg_conf_t *conf, const char *pkg_name, pkg_vec_t *pkgs_needed);
 +
 +#endif
-diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_message.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_message.c
---- busybox-1.1.2-orig/archival/libipkg/ipkg_message.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_message.c	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/ipkg_message.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_message.c
+--- busybox-1.2.0-orig/archival/libipkg/ipkg_message.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_message.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,61 @@
 +/* ipkg_message.c - the itsy package management system
 +
@@ -5984,9 +5840,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_message.c busybox-1.1.2+ipkg-
 +	}
 +}
 +#endif
-diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_message.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_message.h
---- busybox-1.1.2-orig/archival/libipkg/ipkg_message.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_message.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/ipkg_message.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_message.h
+--- busybox-1.2.0-orig/archival/libipkg/ipkg_message.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_message.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,32 @@
 +/* ipkg_message.h - the itsy package management system
 +
@@ -6020,9 +5876,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_message.h busybox-1.1.2+ipkg-
 +extern void ipkg_message(ipkg_conf_t *conf, message_level_t level, char *fmt, ...);
 +
 +#endif /* _IPKG_MESSAGE_H_ */
-diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_remove.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_remove.c
---- busybox-1.1.2-orig/archival/libipkg/ipkg_remove.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_remove.c	2006-05-09 02:12:04.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/ipkg_remove.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_remove.c
+--- busybox-1.2.0-orig/archival/libipkg/ipkg_remove.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_remove.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,383 @@
 +/* ipkg_remove.c - the itsy package management system
 +
@@ -6407,9 +6263,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_remove.c busybox-1.1.2+ipkg-0
 +
 +    return 0;
 +}
-diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_remove.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_remove.h
---- busybox-1.1.2-orig/archival/libipkg/ipkg_remove.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_remove.h	2006-05-09 02:12:04.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/ipkg_remove.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_remove.h
+--- busybox-1.2.0-orig/archival/libipkg/ipkg_remove.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_remove.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,33 @@
 +/* ipkg_remove.h - the itsy package management system
 +
@@ -6444,9 +6300,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_remove.h busybox-1.1.2+ipkg-0
 +
 +
 +#endif
-diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_upgrade.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_upgrade.c
---- busybox-1.1.2-orig/archival/libipkg/ipkg_upgrade.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_upgrade.c	2006-05-09 02:12:04.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/ipkg_upgrade.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_upgrade.c
+--- busybox-1.2.0-orig/archival/libipkg/ipkg_upgrade.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_upgrade.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,77 @@
 +/* ipkg_upgrade.c - the itsy package management system
 +
@@ -6525,9 +6381,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_upgrade.c busybox-1.1.2+ipkg-
 +     new->state_flag |= SF_USER;
 +     return ipkg_install_pkg(conf, new,1);
 +}
-diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_upgrade.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_upgrade.h
---- busybox-1.1.2-orig/archival/libipkg/ipkg_upgrade.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_upgrade.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/ipkg_upgrade.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_upgrade.h
+--- busybox-1.2.0-orig/archival/libipkg/ipkg_upgrade.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_upgrade.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,18 @@
 +/* ipkg_upgrade.c - the itsy package management system
 +
@@ -6547,9 +6403,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_upgrade.h busybox-1.1.2+ipkg-
 +#include "ipkg.h"
 +
 +int ipkg_upgrade_pkg(ipkg_conf_t *conf, pkg_t *old);
-diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_utils.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_utils.c
---- busybox-1.1.2-orig/archival/libipkg/ipkg_utils.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_utils.c	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/ipkg_utils.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_utils.c
+--- busybox-1.2.0-orig/archival/libipkg/ipkg_utils.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_utils.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,181 @@
 +/* ipkg_utils.c - the itsy package management system
 +
@@ -6732,9 +6588,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_utils.c busybox-1.1.2+ipkg-0.
 +}
 +
 +       
-diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_utils.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_utils.h
---- busybox-1.1.2-orig/archival/libipkg/ipkg_utils.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/ipkg_utils.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/ipkg_utils.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_utils.h
+--- busybox-1.2.0-orig/archival/libipkg/ipkg_utils.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/ipkg_utils.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,29 @@
 +/* ipkg_utils.h - the itsy package management system
 +
@@ -6765,9 +6621,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/ipkg_utils.h busybox-1.1.2+ipkg-0.
 +int line_is_blank(const char *line);
 +
 +#endif
-diff -ruN busybox-1.1.2-orig/archival/libipkg/libipkg.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/libipkg.c
---- busybox-1.1.2-orig/archival/libipkg/libipkg.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/libipkg.c	2006-05-09 02:12:05.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/libipkg.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/libipkg.c
+--- busybox-1.2.0-orig/archival/libipkg/libipkg.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/libipkg.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,527 @@
 +/* ipkglib.c - the itsy package management system
 +
@@ -7296,9 +7152,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/libipkg.c busybox-1.1.2+ipkg-0.99.
 +}
 +
 +#endif /* IPKG_LIB */
-diff -ruN busybox-1.1.2-orig/archival/libipkg/libipkg.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/libipkg.h
---- busybox-1.1.2-orig/archival/libipkg/libipkg.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/libipkg.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/libipkg.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/libipkg.h
+--- busybox-1.2.0-orig/archival/libipkg/libipkg.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/libipkg.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,87 @@
 +/* ipkglib.h - the itsy package management system
 +
@@ -7387,9 +7243,134 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/libipkg.h busybox-1.1.2+ipkg-0.99.
 +
 +
 +#endif
-diff -ruN busybox-1.1.2-orig/archival/libipkg/md5.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/md5.c
---- busybox-1.1.2-orig/archival/libipkg/md5.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/md5.c	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/Makefile busybox-1.2.0+ipkg-0.99.162/archival/libipkg/Makefile
+--- busybox-1.2.0-orig/archival/libipkg/Makefile	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/Makefile	2006-07-22 16:31:25.000000000 +0200
+@@ -0,0 +1,32 @@
++# Makefile for busybox
++#
++# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
++#
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++# General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++#
++
++top_srcdir=../..
++top_builddir=../..
++srcdir=$(top_srcdir)/archival/libipkg
++LIBIPKG_DIR:=./
++include $(top_builddir)/Rules.mak
++include $(top_builddir)/.config
++include $(srcdir)/Makefile.in
++all: $(libraries-y)
++-include $(top_builddir)/.depend
++
++clean:
++	rm -f *.o *.a $(AR_TARGET)
++
+diff -ruN busybox-1.2.0-orig/archival/libipkg/Makefile.in busybox-1.2.0+ipkg-0.99.162/archival/libipkg/Makefile.in
+--- busybox-1.2.0-orig/archival/libipkg/Makefile.in	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/Makefile.in	2006-07-22 16:31:25.000000000 +0200
+@@ -0,0 +1,85 @@
++# Makefile for busybox
++#
++# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
++#
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++# General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++#
++
++LIBIPKG_AR:=libipkg.a
++ifndef $(LIBIPKG_DIR)
++LIBIPKG_DIR:=$(top_builddir)/archival/libipkg/
++endif
++srcdir=$(top_srcdir)/archival/libipkg
++
++LIBIPKG_CORE_SOURCES:= \
++	args.c \
++	libipkg.c \
++	user.c \
++
++LIBIPKG_CMD_SOURCES:= \
++	ipkg_cmd.c \
++	ipkg_configure.c \
++	ipkg_download.c \
++	ipkg_install.c \
++	ipkg_remove.c \
++	ipkg_upgrade.c \
++
++LIBIPKG_DB_SOURCES:= \
++	hash_table.c \
++	ipkg_conf.c \
++	ipkg_utils.c \
++	pkg.c \
++	pkg_depends.c \
++	pkg_extract.c \
++	pkg_hash.c \
++	pkg_parse.c \
++	pkg_vec.c \
++
++LIBIPKG_LIST_SOURCES:= \
++	conffile.c \
++	conffile_list.c \
++	nv_pair.c \
++	nv_pair_list.c \
++	pkg_dest.c \
++	pkg_dest_list.c \
++	pkg_src.c \
++	pkg_src_list.c \
++	str_list.c \
++	void_list.c \
++
++LIBIPKG_UTIL_SOURCES:= \
++	file_util.c \
++	ipkg_message.c \
++	md5.c \
++	str_util.c \
++	xsystem.c \
++
++LIBIPKG-$(CONFIG_IPKG) += $(LIBIPKG_CORE_SOURCES)
++LIBIPKG-$(CONFIG_IPKG) += $(LIBIPKG_CMD_SOURCES)
++LIBIPKG-$(CONFIG_IPKG) += $(LIBIPKG_DB_SOURCES)
++LIBIPKG-$(CONFIG_IPKG) += $(LIBIPKG_LIST_SOURCES)
++LIBIPKG-$(CONFIG_IPKG) += $(LIBIPKG_UTIL_SOURCES)
++LIBIPKG_OBJS=$(patsubst %.c,$(LIBIPKG_DIR)%.o, $(LIBIPKG-y))
++
++CFLAGS += -DIPKG_LIB -DIPKGLIBDIR="\"/usr/lib\"" -DHOST_CPU_STR="\"$(TARGET_ARCH)\""
++
++libraries-$(CONFIG_IPKG) += $(LIBIPKG_DIR)$(LIBIPKG_AR)
++
++$(LIBIPKG_DIR)$(LIBIPKG_AR): $(LIBIPKG_OBJS)
++	$(do_ar)
++
++$(LIBIPKG_OBJS): $(LIBIPKG_DIR)%.o : $(srcdir)/%.c
++	$(compile.c)
++
+diff -ruN busybox-1.2.0-orig/archival/libipkg/md5.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/md5.c
+--- busybox-1.2.0-orig/archival/libipkg/md5.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/md5.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,48 @@
 +/* md5.c - wrappers to busybox md5 functions
 + *
@@ -7439,9 +7420,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/md5.c busybox-1.1.2+ipkg-0.99.162/
 +	return md5_end(resblock, &md5_cx);
 +}
 +
-diff -ruN busybox-1.1.2-orig/archival/libipkg/md5.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/md5.h
---- busybox-1.1.2-orig/archival/libipkg/md5.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/md5.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/md5.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/md5.h
+--- busybox-1.2.0-orig/archival/libipkg/md5.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/md5.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,35 @@
 +/* md5.h - Compute MD5 checksum of files or strings according to the
 + *         definition of MD5 in RFC 1321 from April 1992.
@@ -7478,9 +7459,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/md5.h busybox-1.1.2+ipkg-0.99.162/
 +
 +#endif
 +
-diff -ruN busybox-1.1.2-orig/archival/libipkg/nv_pair.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/nv_pair.c
---- busybox-1.1.2-orig/archival/libipkg/nv_pair.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/nv_pair.c	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/nv_pair.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/nv_pair.c
+--- busybox-1.2.0-orig/archival/libipkg/nv_pair.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/nv_pair.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,40 @@
 +/* nv_pair.c - the itsy package management system
 +
@@ -7522,9 +7503,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/nv_pair.c busybox-1.1.2+ipkg-0.99.
 +}
 +
 +
-diff -ruN busybox-1.1.2-orig/archival/libipkg/nv_pair.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/nv_pair.h
---- busybox-1.1.2-orig/archival/libipkg/nv_pair.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/nv_pair.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/nv_pair.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/nv_pair.h
+--- busybox-1.2.0-orig/archival/libipkg/nv_pair.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/nv_pair.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,32 @@
 +/* nv_pair.h - the itsy package management system
 +
@@ -7558,9 +7539,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/nv_pair.h busybox-1.1.2+ipkg-0.99.
 +
 +#endif
 +
-diff -ruN busybox-1.1.2-orig/archival/libipkg/nv_pair_list.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/nv_pair_list.c
---- busybox-1.1.2-orig/archival/libipkg/nv_pair_list.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/nv_pair_list.c	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/nv_pair_list.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/nv_pair_list.c
+--- busybox-1.2.0-orig/archival/libipkg/nv_pair_list.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/nv_pair_list.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,98 @@
 +/* nv_pair_list.c - the itsy package management system
 +
@@ -7660,9 +7641,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/nv_pair_list.c busybox-1.1.2+ipkg-
 +     }    
 +     return NULL;
 +}
-diff -ruN busybox-1.1.2-orig/archival/libipkg/nv_pair_list.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/nv_pair_list.h
---- busybox-1.1.2-orig/archival/libipkg/nv_pair_list.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/nv_pair_list.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/nv_pair_list.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/nv_pair_list.h
+--- busybox-1.2.0-orig/archival/libipkg/nv_pair_list.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/nv_pair_list.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,60 @@
 +/* nv_pair_list.h - the itsy package management system
 +
@@ -7724,9 +7705,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/nv_pair_list.h busybox-1.1.2+ipkg-
 +
 +#endif
 +
-diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg.c
---- busybox-1.1.2-orig/archival/libipkg/pkg.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg.c	2006-05-09 02:12:05.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/pkg.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg.c
+--- busybox-1.2.0-orig/archival/libipkg/pkg.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,1754 @@
 +/* pkg.c - the itsy package management system
 +
@@ -9482,15 +9463,15 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg.c busybox-1.1.2+ipkg-0.99.162/
 +     }
 +     return 0;
 +}
-diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg.h
---- busybox-1.1.2-orig/archival/libipkg/pkg.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg.h	2006-05-09 02:12:05.000000000 +0200
-@@ -0,0 +1,232 @@
-+/* pkg.h - the itsy package management system
-+
-+   Carl D. Worth
+diff -ruN busybox-1.2.0-orig/archival/libipkg/pkg_depends.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_depends.c
+--- busybox-1.2.0-orig/archival/libipkg/pkg_depends.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_depends.c	2006-07-22 16:31:25.000000000 +0200
+@@ -0,0 +1,1033 @@
++/* pkg_depends.c - the itsy package management system
 +
-+   Copyright (C) 2001 University of Southern California
++   Steven M. Ayer
++   
++   Copyright (C) 2002 Compaq Computer Corporation
 +
 +   This program is free software; you can redistribute it and/or
 +   modify it under the terms of the GNU General Public License as
@@ -9503,270 +9484,34 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg.h busybox-1.1.2+ipkg-0.99.162/
 +   General Public License for more details.
 +*/
 +
-+#ifndef PKG_H
-+#define PKG_H
-+
-+#include <sys/types.h>
-+#include <sys/stat.h>
-+#include <unistd.h>
-+
-+#include "pkg_vec.h"
-+#include "str_list.h"
-+#include "pkg_src.h"
-+#include "pkg_dest.h"
-+#include "ipkg_conf.h"
-+#include "conffile_list.h"
-+
-+struct ipkg_conf;
-+
-+
-+#define ARRAY_SIZE(array) sizeof(array) / sizeof((array)[0])
++#include "ipkg.h"
++#include <errno.h>
++#include <ctype.h>
++   
++#include "pkg.h"
++#include "ipkg_utils.h"
++#include "pkg_hash.h"
++#include "ipkg_message.h"
++#include "pkg_parse.h"
++#include "hash_table.h"
 +
-+/* I think "Size" is currently the shortest field name */
-+#define PKG_MINIMUM_FIELD_NAME_LEN 4
++static int parseDepends(compound_depend_t *compound_depend, hash_table_t * hash, char * depend_str);
++static depend_t * depend_init(void);
++static void depend_deinit(depend_t *d);
++static char ** add_unresolved_dep(pkg_t * pkg, char ** the_lost, int ref_ndx);
++static char ** merge_unresolved(char ** oldstuff, char ** newstuff);
++static int is_pkg_in_pkg_vec(pkg_vec_t * vec, pkg_t * pkg);
 +
-+enum pkg_state_want
++static int pkg_installed_and_constraint_satisfied(pkg_t *pkg, void *cdata)
 +{
-+    SW_UNKNOWN = 1,
-+    SW_INSTALL,
-+    SW_DEINSTALL,
-+    SW_PURGE,
-+    SW_LAST_STATE_WANT
-+};
-+typedef enum pkg_state_want pkg_state_want_t;
++     depend_t *depend = (depend_t *)cdata;
++     if ((pkg->state_status == SS_INSTALLED || pkg->state_status == SS_UNPACKED) && version_constraints_satisfied(depend, pkg))
++	  return 1;
++     else
++	  return 0;
++}
 +
-+enum pkg_state_flag
-+{
-+    SF_OK        = 0,
-+    SF_REINSTREQ = 1,
-+    SF_HOLD      = 2,  /* do not upgrade version */
-+    SF_REPLACE   = 4,  /* replace this package */
-+    SF_NOPRUNE   = 8,  /* do not remove obsolete files */
-+    SF_PREFER    = 16, /* prefer this version */
-+    SF_OBSOLETE  = 32, /* old package in upgrade pair */
-+    SF_MARKED    = 64, /* temporary mark */
-+    SF_FILELIST_CHANGED = 128, /* needs filelist written */
-+    SF_USER      = 256,
-+    SF_LAST_STATE_FLAG
-+};
-+typedef enum pkg_state_flag pkg_state_flag_t;
-+#define SF_NONVOLATILE_FLAGS (SF_HOLD|SF_NOPRUNE|SF_PREFER|SF_OBSOLETE|SF_USER)
-+
-+enum pkg_state_status
-+{
-+    SS_NOT_INSTALLED = 1,
-+    SS_UNPACKED,
-+    SS_HALF_CONFIGURED,
-+    SS_INSTALLED,
-+    SS_HALF_INSTALLED,
-+    SS_CONFIG_FILES,
-+    SS_POST_INST_FAILED,
-+    SS_REMOVAL_FAILED,
-+    SS_LAST_STATE_STATUS
-+};
-+typedef enum pkg_state_status pkg_state_status_t;
-+
-+struct abstract_pkg{
-+    char * name;
-+    int dependencies_checked;
-+    pkg_vec_t * pkgs;
-+    pkg_state_status_t state_status;
-+    pkg_state_flag_t state_flag;
-+    struct abstract_pkg ** depended_upon_by; /* @@@@ this should be abstract_pkg_vec_t -Jamey */
-+    abstract_pkg_vec_t * provided_by;
-+    abstract_pkg_vec_t * replaced_by;
-+};
-+
-+#include "pkg_depends.h"
-+
-+/* XXX: CLEANUP: I'd like to clean up pkg_t in several ways:
-+
-+   The 3 version fields should go into a single version struct. (This
-+   is especially important since, currently, pkg->version can easily
-+   be mistaken for pkg_verson_str_alloc(pkg) although they are very
-+   distinct. This has been the source of multiple bugs.
-+
-+   The 3 state fields could possibly also go into their own struct.
-+
-+   All fields which deal with lists of packages, (Depends,
-+   Pre-Depends, Provides, Suggests, Recommends, Enhances), should each
-+   be handled by a single struct in pkg_t
-+
-+   All string fields for which there is a small set of possible
-+   values, (section, maintainer, architecture, maybe version?), that
-+   are reused among different packages -- for all such packages we
-+   should move from "char *"s to some atom datatype to share data
-+   storage and use less memory. We might even do reference counting,
-+   but probably not since most often we only create new pkg_t structs,
-+   we don't often free them.  */
-+struct pkg
-+{
-+     char *name;
-+     unsigned long epoch;
-+     char *version;
-+     char *revision;
-+     char *familiar_revision;
-+     pkg_src_t *src;
-+     pkg_dest_t *dest;
-+     char *architecture;
-+     char *section;
-+     char *maintainer;
-+     char *description;
-+     pkg_state_want_t state_want;
-+     pkg_state_flag_t state_flag;
-+     pkg_state_status_t state_status;
-+     char **depends_str;
-+     int depends_count;
-+     char **pre_depends_str;
-+     int pre_depends_count;
-+     char **recommends_str;
-+     int recommends_count;
-+     char **suggests_str;
-+     int suggests_count;
-+     compound_depend_t * depends;
-+
-+     /* Abhaya: new conflicts */
-+     char **conflicts_str;
-+     compound_depend_t * conflicts;
-+     int conflicts_count;
-+	
-+     char **replaces_str;
-+     int replaces_count;
-+     abstract_pkg_t ** replaces;
-+
-+     char **provides_str;
-+     int provides_count;
-+     abstract_pkg_t ** provides;
-+
-+     abstract_pkg_t *parent;
-+
-+     pkg_t *old_pkg; /* during upgrade, points from installee to previously installed */
-+
-+     char *filename;
-+     char *local_filename;
-+     char *url;
-+     char *tmp_unpack_dir;
-+     char *md5sum;
-+     char *size;
-+     char *installed_size;
-+     char *priority;
-+     char *source;
-+     conffile_list_t conffiles;
-+     time_t installed_time;
-+     /* As pointer for lazy evaluation */
-+     str_list_t *installed_files;
-+     /* XXX: CLEANUP: I'd like to perhaps come up with a better
-+	mechanism to avoid the problem here, (which is that the
-+	installed_files list was being freed from an inner loop while
-+	still being used within an outer loop. */
-+     int installed_files_ref_cnt;
-+     int essential;
-+     int arch_priority;
-+/* Adding this flag, to "force" ipkg to choose a "provided_by_hand" package, if there are multiple choice */
-+     int provided_by_hand;
-+};
-+
-+pkg_t *pkg_new(void);
-+int pkg_init(pkg_t *pkg);
-+void pkg_deinit(pkg_t *pkg);
-+int pkg_init_from_file(pkg_t *pkg, const char *filename);
-+abstract_pkg_t *abstract_pkg_new(void);
-+int abstract_pkg_init(abstract_pkg_t *ab_pkg);
-+
-+/* 
-+ * merges fields from newpkg into oldpkg.
-+ * Forcibly sets oldpkg state_status, state_want and state_flags if set_status is nonzero 
-+ */
-+int pkg_merge(pkg_t *oldpkg, pkg_t *newpkg, int set_status);
-+
-+char *pkg_version_str_alloc(pkg_t *pkg);
-+
-+int pkg_compare_versions(const pkg_t *pkg, const pkg_t *ref_pkg);
-+int pkg_name_version_and_architecture_compare(void *a, void *b);
-+int abstract_pkg_name_compare(void *a, void *b);
-+
-+char * pkg_formatted_info(pkg_t *pkg );
-+char * pkg_formatted_field(pkg_t *pkg, const char *field );
-+
-+void set_flags_from_control(ipkg_conf_t *conf, pkg_t *pkg);
-+
-+void pkg_print_info(pkg_t *pkg, FILE *file);
-+void pkg_print_status(pkg_t * pkg, FILE * file);
-+void pkg_print_field(pkg_t *pkg, FILE *file, const char *field);
-+str_list_t *pkg_get_installed_files(pkg_t *pkg);
-+int pkg_free_installed_files(pkg_t *pkg);
-+int pkg_remove_installed_files_list(ipkg_conf_t *conf, pkg_t *pkg);
-+conffile_t *pkg_get_conffile(pkg_t *pkg, const char *file_name);
-+int pkg_run_script(struct ipkg_conf *conf, pkg_t *pkg,
-+		   const char *script, const char *args);
-+
-+/* enum mappings */
-+char *pkg_state_want_to_str(pkg_state_want_t sw);
-+pkg_state_want_t pkg_state_want_from_str(char *str);
-+char *pkg_state_flag_to_str(pkg_state_flag_t sf);
-+pkg_state_flag_t pkg_state_flag_from_str(char *str);
-+char *pkg_state_status_to_str(pkg_state_status_t ss);
-+pkg_state_status_t pkg_state_status_from_str(char *str);
-+
-+int pkg_version_satisfied(pkg_t *it, pkg_t *ref, const char *op);
-+
-+int pkg_arch_supported(ipkg_conf_t *conf, pkg_t *pkg);
-+int pkg_info_preinstall_check(ipkg_conf_t *conf);
-+int pkg_free_installed_files(pkg_t *pkg);
-+
-+int pkg_write_filelist(ipkg_conf_t *conf, pkg_t *pkg);
-+int pkg_write_changed_filelists(ipkg_conf_t *conf);
-+
-+#endif
-diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_depends.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_depends.c
---- busybox-1.1.2-orig/archival/libipkg/pkg_depends.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_depends.c	2006-05-09 02:12:05.000000000 +0200
-@@ -0,0 +1,1033 @@
-+/* pkg_depends.c - the itsy package management system
-+
-+   Steven M. Ayer
-+   
-+   Copyright (C) 2002 Compaq Computer Corporation
-+
-+   This program is free software; you can redistribute it and/or
-+   modify it under the terms of the GNU General Public License as
-+   published by the Free Software Foundation; either version 2, or (at
-+   your option) any later version.
-+
-+   This program is distributed in the hope that it will be useful, but
-+   WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+   General Public License for more details.
-+*/
-+
-+#include "ipkg.h"
-+#include <errno.h>
-+#include <ctype.h>
-+   
-+#include "pkg.h"
-+#include "ipkg_utils.h"
-+#include "pkg_hash.h"
-+#include "ipkg_message.h"
-+#include "pkg_parse.h"
-+#include "hash_table.h"
-+
-+static int parseDepends(compound_depend_t *compound_depend, hash_table_t * hash, char * depend_str);
-+static depend_t * depend_init(void);
-+static void depend_deinit(depend_t *d);
-+static char ** add_unresolved_dep(pkg_t * pkg, char ** the_lost, int ref_ndx);
-+static char ** merge_unresolved(char ** oldstuff, char ** newstuff);
-+static int is_pkg_in_pkg_vec(pkg_vec_t * vec, pkg_t * pkg);
-+
-+static int pkg_installed_and_constraint_satisfied(pkg_t *pkg, void *cdata)
-+{
-+     depend_t *depend = (depend_t *)cdata;
-+     if ((pkg->state_status == SS_INSTALLED || pkg->state_status == SS_UNPACKED) && version_constraints_satisfied(depend, pkg))
-+	  return 1;
-+     else
-+	  return 0;
-+}
-+
-+static int pkg_constraint_satisfied(pkg_t *pkg, void *cdata)
++static int pkg_constraint_satisfied(pkg_t *pkg, void *cdata)
 +{
 +     depend_t *depend = (depend_t *)cdata;
 +#if 0
@@ -10755,9 +10500,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_depends.c busybox-1.1.2+ipkg-0
 +
 +     return 0;
 +}
-diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_depends.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_depends.h
---- busybox-1.1.2-orig/archival/libipkg/pkg_depends.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_depends.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/pkg_depends.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_depends.h
+--- busybox-1.2.0-orig/archival/libipkg/pkg_depends.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_depends.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,105 @@
 +/* pkg_depends.h - the itsy package management system
 +
@@ -10864,9 +10609,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_depends.h busybox-1.1.2+ipkg-0
 +int pkg_dependence_satisfied(ipkg_conf_t *conf, depend_t *depend);
 +
 +#endif
-diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_dest.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_dest.c
---- busybox-1.1.2-orig/archival/libipkg/pkg_dest.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_dest.c	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/pkg_dest.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_dest.c
+--- busybox-1.2.0-orig/archival/libipkg/pkg_dest.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_dest.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,92 @@
 +/* pkg_dest.c - the itsy package management system
 +
@@ -10960,9 +10705,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_dest.c busybox-1.1.2+ipkg-0.99
 +
 +    dest->root_dir = NULL;
 +}
-diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_dest.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_dest.h
---- busybox-1.1.2-orig/archival/libipkg/pkg_dest.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_dest.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/pkg_dest.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_dest.h
+--- busybox-1.2.0-orig/archival/libipkg/pkg_dest.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_dest.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,38 @@
 +/* pkg_dest.h - the itsy package management system
 +
@@ -11002,9 +10747,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_dest.h busybox-1.1.2+ipkg-0.99
 +
 +#endif
 +
-diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_dest_list.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_dest_list.c
---- busybox-1.1.2-orig/archival/libipkg/pkg_dest_list.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_dest_list.c	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/pkg_dest_list.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_dest_list.c
+--- busybox-1.2.0-orig/archival/libipkg/pkg_dest_list.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_dest_list.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,85 @@
 +/* pkg_dest_list.c - the itsy package management system
 +
@@ -11091,9 +10836,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_dest_list.c busybox-1.1.2+ipkg
 +{
 +    return (pkg_dest_list_elt_t *) void_list_pop((void_list_t *) list);
 +}
-diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_dest_list.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_dest_list.h
---- busybox-1.1.2-orig/archival/libipkg/pkg_dest_list.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_dest_list.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/pkg_dest_list.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_dest_list.h
+--- busybox-1.2.0-orig/archival/libipkg/pkg_dest_list.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_dest_list.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,50 @@
 +/* pkg_dest_list.h - the itsy package management system
 +
@@ -11145,9 +10890,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_dest_list.h busybox-1.1.2+ipkg
 +
 +#endif
 +
-diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_extract.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_extract.c
---- busybox-1.1.2-orig/archival/libipkg/pkg_extract.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_extract.c	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/pkg_extract.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_extract.c
+--- busybox-1.2.0-orig/archival/libipkg/pkg_extract.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_extract.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,224 @@
 +/* pkg_extract.c - the itsy package management system
 +
@@ -11191,7 +10936,7 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_extract.c busybox-1.1.2+ipkg-0
 +	archive = init_handle();
 +	archive->src_fd = bb_xopen(pkg->local_filename, O_RDONLY);
 +	archive->filter = filter_accept_list;
-+	archive->accept = llist_add_to(NULL, (char *)filename);
++	llist_add_to(&(archive->accept), (char *)filename);
 +	archive->buffer = path;
 +	archive->action_data = data_extract_all_prefix;
 +	archive->flags |= ARCHIVE_EXTRACT_UNCONDITIONAL;
@@ -11228,7 +10973,7 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_extract.c busybox-1.1.2+ipkg-0
 +	archive = init_handle();
 +	archive->src_fd = bb_xopen(name, O_RDONLY);
 +	archive->filter = filter_accept_list;
-+	archive->accept = llist_add_to(NULL, "./" IPKG_CONTROL_FILE);
++	llist_add_to(&(archive->accept), "./" IPKG_CONTROL_FILE);
 +	archive->action_data = data_extract_to_buffer;
 +	while( get_header_tar_gz(archive) == EXIT_SUCCESS );
 +	close(archive->src_fd);
@@ -11373,9 +11118,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_extract.c busybox-1.1.2+ipkg-0
 +	
 +	return 0;
 +}
-diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_extract.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_extract.h
---- busybox-1.1.2-orig/archival/libipkg/pkg_extract.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_extract.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/pkg_extract.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_extract.h
+--- busybox-1.2.0-orig/archival/libipkg/pkg_extract.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_extract.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,32 @@
 +/* pkg_extract.c - the itsy package management system
 +
@@ -11409,9 +11154,245 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_extract.h busybox-1.1.2+ipkg-0
 +int pkg_extract_data_file_names_to_stream(pkg_t *pkg, FILE *file);
 +
 +#endif
-diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_hash.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_hash.c
---- busybox-1.1.2-orig/archival/libipkg/pkg_hash.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_hash.c	2006-05-09 02:12:05.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/pkg.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg.h
+--- busybox-1.2.0-orig/archival/libipkg/pkg.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg.h	2006-07-22 16:31:25.000000000 +0200
+@@ -0,0 +1,232 @@
++/* pkg.h - the itsy package management system
++
++   Carl D. Worth
++
++   Copyright (C) 2001 University of Southern California
++
++   This program is free software; you can redistribute it and/or
++   modify it under the terms of the GNU General Public License as
++   published by the Free Software Foundation; either version 2, or (at
++   your option) any later version.
++
++   This program is distributed in the hope that it will be useful, but
++   WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   General Public License for more details.
++*/
++
++#ifndef PKG_H
++#define PKG_H
++
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <unistd.h>
++
++#include "pkg_vec.h"
++#include "str_list.h"
++#include "pkg_src.h"
++#include "pkg_dest.h"
++#include "ipkg_conf.h"
++#include "conffile_list.h"
++
++struct ipkg_conf;
++
++
++#define ARRAY_SIZE(array) sizeof(array) / sizeof((array)[0])
++
++/* I think "Size" is currently the shortest field name */
++#define PKG_MINIMUM_FIELD_NAME_LEN 4
++
++enum pkg_state_want
++{
++    SW_UNKNOWN = 1,
++    SW_INSTALL,
++    SW_DEINSTALL,
++    SW_PURGE,
++    SW_LAST_STATE_WANT
++};
++typedef enum pkg_state_want pkg_state_want_t;
++
++enum pkg_state_flag
++{
++    SF_OK        = 0,
++    SF_REINSTREQ = 1,
++    SF_HOLD      = 2,  /* do not upgrade version */
++    SF_REPLACE   = 4,  /* replace this package */
++    SF_NOPRUNE   = 8,  /* do not remove obsolete files */
++    SF_PREFER    = 16, /* prefer this version */
++    SF_OBSOLETE  = 32, /* old package in upgrade pair */
++    SF_MARKED    = 64, /* temporary mark */
++    SF_FILELIST_CHANGED = 128, /* needs filelist written */
++    SF_USER      = 256,
++    SF_LAST_STATE_FLAG
++};
++typedef enum pkg_state_flag pkg_state_flag_t;
++#define SF_NONVOLATILE_FLAGS (SF_HOLD|SF_NOPRUNE|SF_PREFER|SF_OBSOLETE|SF_USER)
++
++enum pkg_state_status
++{
++    SS_NOT_INSTALLED = 1,
++    SS_UNPACKED,
++    SS_HALF_CONFIGURED,
++    SS_INSTALLED,
++    SS_HALF_INSTALLED,
++    SS_CONFIG_FILES,
++    SS_POST_INST_FAILED,
++    SS_REMOVAL_FAILED,
++    SS_LAST_STATE_STATUS
++};
++typedef enum pkg_state_status pkg_state_status_t;
++
++struct abstract_pkg{
++    char * name;
++    int dependencies_checked;
++    pkg_vec_t * pkgs;
++    pkg_state_status_t state_status;
++    pkg_state_flag_t state_flag;
++    struct abstract_pkg ** depended_upon_by; /* @@@@ this should be abstract_pkg_vec_t -Jamey */
++    abstract_pkg_vec_t * provided_by;
++    abstract_pkg_vec_t * replaced_by;
++};
++
++#include "pkg_depends.h"
++
++/* XXX: CLEANUP: I'd like to clean up pkg_t in several ways:
++
++   The 3 version fields should go into a single version struct. (This
++   is especially important since, currently, pkg->version can easily
++   be mistaken for pkg_verson_str_alloc(pkg) although they are very
++   distinct. This has been the source of multiple bugs.
++
++   The 3 state fields could possibly also go into their own struct.
++
++   All fields which deal with lists of packages, (Depends,
++   Pre-Depends, Provides, Suggests, Recommends, Enhances), should each
++   be handled by a single struct in pkg_t
++
++   All string fields for which there is a small set of possible
++   values, (section, maintainer, architecture, maybe version?), that
++   are reused among different packages -- for all such packages we
++   should move from "char *"s to some atom datatype to share data
++   storage and use less memory. We might even do reference counting,
++   but probably not since most often we only create new pkg_t structs,
++   we don't often free them.  */
++struct pkg
++{
++     char *name;
++     unsigned long epoch;
++     char *version;
++     char *revision;
++     char *familiar_revision;
++     pkg_src_t *src;
++     pkg_dest_t *dest;
++     char *architecture;
++     char *section;
++     char *maintainer;
++     char *description;
++     pkg_state_want_t state_want;
++     pkg_state_flag_t state_flag;
++     pkg_state_status_t state_status;
++     char **depends_str;
++     int depends_count;
++     char **pre_depends_str;
++     int pre_depends_count;
++     char **recommends_str;
++     int recommends_count;
++     char **suggests_str;
++     int suggests_count;
++     compound_depend_t * depends;
++
++     /* Abhaya: new conflicts */
++     char **conflicts_str;
++     compound_depend_t * conflicts;
++     int conflicts_count;
++	
++     char **replaces_str;
++     int replaces_count;
++     abstract_pkg_t ** replaces;
++
++     char **provides_str;
++     int provides_count;
++     abstract_pkg_t ** provides;
++
++     abstract_pkg_t *parent;
++
++     pkg_t *old_pkg; /* during upgrade, points from installee to previously installed */
++
++     char *filename;
++     char *local_filename;
++     char *url;
++     char *tmp_unpack_dir;
++     char *md5sum;
++     char *size;
++     char *installed_size;
++     char *priority;
++     char *source;
++     conffile_list_t conffiles;
++     time_t installed_time;
++     /* As pointer for lazy evaluation */
++     str_list_t *installed_files;
++     /* XXX: CLEANUP: I'd like to perhaps come up with a better
++	mechanism to avoid the problem here, (which is that the
++	installed_files list was being freed from an inner loop while
++	still being used within an outer loop. */
++     int installed_files_ref_cnt;
++     int essential;
++     int arch_priority;
++/* Adding this flag, to "force" ipkg to choose a "provided_by_hand" package, if there are multiple choice */
++     int provided_by_hand;
++};
++
++pkg_t *pkg_new(void);
++int pkg_init(pkg_t *pkg);
++void pkg_deinit(pkg_t *pkg);
++int pkg_init_from_file(pkg_t *pkg, const char *filename);
++abstract_pkg_t *abstract_pkg_new(void);
++int abstract_pkg_init(abstract_pkg_t *ab_pkg);
++
++/* 
++ * merges fields from newpkg into oldpkg.
++ * Forcibly sets oldpkg state_status, state_want and state_flags if set_status is nonzero 
++ */
++int pkg_merge(pkg_t *oldpkg, pkg_t *newpkg, int set_status);
++
++char *pkg_version_str_alloc(pkg_t *pkg);
++
++int pkg_compare_versions(const pkg_t *pkg, const pkg_t *ref_pkg);
++int pkg_name_version_and_architecture_compare(void *a, void *b);
++int abstract_pkg_name_compare(void *a, void *b);
++
++char * pkg_formatted_info(pkg_t *pkg );
++char * pkg_formatted_field(pkg_t *pkg, const char *field );
++
++void set_flags_from_control(ipkg_conf_t *conf, pkg_t *pkg);
++
++void pkg_print_info(pkg_t *pkg, FILE *file);
++void pkg_print_status(pkg_t * pkg, FILE * file);
++void pkg_print_field(pkg_t *pkg, FILE *file, const char *field);
++str_list_t *pkg_get_installed_files(pkg_t *pkg);
++int pkg_free_installed_files(pkg_t *pkg);
++int pkg_remove_installed_files_list(ipkg_conf_t *conf, pkg_t *pkg);
++conffile_t *pkg_get_conffile(pkg_t *pkg, const char *file_name);
++int pkg_run_script(struct ipkg_conf *conf, pkg_t *pkg,
++		   const char *script, const char *args);
++
++/* enum mappings */
++char *pkg_state_want_to_str(pkg_state_want_t sw);
++pkg_state_want_t pkg_state_want_from_str(char *str);
++char *pkg_state_flag_to_str(pkg_state_flag_t sf);
++pkg_state_flag_t pkg_state_flag_from_str(char *str);
++char *pkg_state_status_to_str(pkg_state_status_t ss);
++pkg_state_status_t pkg_state_status_from_str(char *str);
++
++int pkg_version_satisfied(pkg_t *it, pkg_t *ref, const char *op);
++
++int pkg_arch_supported(ipkg_conf_t *conf, pkg_t *pkg);
++int pkg_info_preinstall_check(ipkg_conf_t *conf);
++int pkg_free_installed_files(pkg_t *pkg);
++
++int pkg_write_filelist(ipkg_conf_t *conf, pkg_t *pkg);
++int pkg_write_changed_filelists(ipkg_conf_t *conf);
++
++#endif
+diff -ruN busybox-1.2.0-orig/archival/libipkg/pkg_hash.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_hash.c
+--- busybox-1.2.0-orig/archival/libipkg/pkg_hash.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_hash.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,617 @@
 +/* ipkg_hash.c - the itsy package management system
 +
@@ -12030,9 +12011,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_hash.c busybox-1.1.2+ipkg-0.99
 +}
 +
 +
-diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_hash.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_hash.h
---- busybox-1.1.2-orig/archival/libipkg/pkg_hash.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_hash.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/pkg_hash.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_hash.h
+--- busybox-1.2.0-orig/archival/libipkg/pkg_hash.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_hash.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,61 @@
 +/* pkg_hash.h - the itsy package management system
 +
@@ -12095,9 +12076,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_hash.h busybox-1.1.2+ipkg-0.99
 +
 +#endif
 +
-diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_parse.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_parse.c
---- busybox-1.1.2-orig/archival/libipkg/pkg_parse.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_parse.c	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/pkg_parse.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_parse.c
+--- busybox-1.2.0-orig/archival/libipkg/pkg_parse.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_parse.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,366 @@
 +/* pkg_parse.c - the itsy package management system
 +
@@ -12465,9 +12446,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_parse.c busybox-1.1.2+ipkg-0.9
 +
 +    return 0;
 +}
-diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_parse.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_parse.h
---- busybox-1.1.2-orig/archival/libipkg/pkg_parse.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_parse.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/pkg_parse.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_parse.h
+--- busybox-1.2.0-orig/archival/libipkg/pkg_parse.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_parse.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,31 @@
 +/* pkg_parse.h - the itsy package management system
 +
@@ -12500,9 +12481,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_parse.h busybox-1.1.2+ipkg-0.9
 +int pkg_valorize_other_field(pkg_t *pkg, char ***raw);
 +
 +#endif
-diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_src.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_src.c
---- busybox-1.1.2-orig/archival/libipkg/pkg_src.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_src.c	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/pkg_src.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_src.c
+--- busybox-1.2.0-orig/archival/libipkg/pkg_src.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_src.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,43 @@
 +/* pkg_src.c - the itsy package management system
 +
@@ -12547,9 +12528,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_src.c busybox-1.1.2+ipkg-0.99.
 +}
 +
 +
-diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_src.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_src.h
---- busybox-1.1.2-orig/archival/libipkg/pkg_src.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_src.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/pkg_src.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_src.h
+--- busybox-1.2.0-orig/archival/libipkg/pkg_src.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_src.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,34 @@
 +/* pkg_src.h - the itsy package management system
 +
@@ -12585,9 +12566,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_src.h busybox-1.1.2+ipkg-0.99.
 +void pkg_src_deinit(pkg_src_t *src);
 +
 +#endif
-diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_src_list.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_src_list.c
---- busybox-1.1.2-orig/archival/libipkg/pkg_src_list.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_src_list.c	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/pkg_src_list.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_src_list.c
+--- busybox-1.2.0-orig/archival/libipkg/pkg_src_list.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_src_list.c	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,75 @@
 +/* pkg_src_list.c - the itsy package management system
 +
@@ -12664,9 +12645,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_src_list.c busybox-1.1.2+ipkg-
 +{
 +    return (pkg_src_list_elt_t *) void_list_pop((void_list_t *) list);
 +}
-diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_src_list.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_src_list.h
---- busybox-1.1.2-orig/archival/libipkg/pkg_src_list.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_src_list.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/pkg_src_list.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_src_list.h
+--- busybox-1.2.0-orig/archival/libipkg/pkg_src_list.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_src_list.h	2006-07-22 16:31:25.000000000 +0200
 @@ -0,0 +1,57 @@
 +/* pkg_src_list.h - the itsy package management system
 +
@@ -12725,9 +12706,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_src_list.h busybox-1.1.2+ipkg-
 +
 +#endif
 +
-diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_vec.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_vec.c
---- busybox-1.1.2-orig/archival/libipkg/pkg_vec.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_vec.c	2006-05-09 02:12:05.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/pkg_vec.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_vec.c
+--- busybox-1.2.0-orig/archival/libipkg/pkg_vec.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_vec.c	2006-07-22 16:31:26.000000000 +0200
 @@ -0,0 +1,230 @@
 +/* pkg_vec.c - the itsy package management system
 +
@@ -12959,9 +12940,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_vec.c busybox-1.1.2+ipkg-0.99.
 +     qsort(vec->pkgs, vec->len, sizeof(pkg_t *), (compare_fcn_t)compar);
 +}
 +
-diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_vec.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_vec.h
---- busybox-1.1.2-orig/archival/libipkg/pkg_vec.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/pkg_vec.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/pkg_vec.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_vec.h
+--- busybox-1.2.0-orig/archival/libipkg/pkg_vec.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/pkg_vec.h	2006-07-22 16:31:26.000000000 +0200
 @@ -0,0 +1,62 @@
 +/* pkg_vec.h - the itsy package management system
 +
@@ -13025,9 +13006,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/pkg_vec.h busybox-1.1.2+ipkg-0.99.
 +void abstract_pkg_vec_sort(pkg_vec_t *vec, int (*compar)(abstract_pkg_t *, abstract_pkg_t *));
 +#endif
 +
-diff -ruN busybox-1.1.2-orig/archival/libipkg/sprintf_alloc.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/sprintf_alloc.h
---- busybox-1.1.2-orig/archival/libipkg/sprintf_alloc.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/sprintf_alloc.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/sprintf_alloc.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/sprintf_alloc.h
+--- busybox-1.2.0-orig/archival/libipkg/sprintf_alloc.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/sprintf_alloc.h	2006-07-22 16:31:26.000000000 +0200
 @@ -0,0 +1,25 @@
 +/* sprintf_alloca.c -- like sprintf with memory allocation
 +
@@ -13054,9 +13035,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/sprintf_alloc.h busybox-1.1.2+ipkg
 +#define sprintf_alloc(str, fmt, args...)  *str = bb_xasprintf(fmt, ## args)
 +
 +#endif
-diff -ruN busybox-1.1.2-orig/archival/libipkg/str_list.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/str_list.c
---- busybox-1.1.2-orig/archival/libipkg/str_list.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/str_list.c	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/str_list.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/str_list.c
+--- busybox-1.2.0-orig/archival/libipkg/str_list.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/str_list.c	2006-07-22 16:31:26.000000000 +0200
 @@ -0,0 +1,76 @@
 +/* str_list.c - the itsy package management system
 +
@@ -13134,9 +13115,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/str_list.c busybox-1.1.2+ipkg-0.99
 +					 (void *)target_str,
 +					 (void_list_cmp_t)strcmp);
 +}
-diff -ruN busybox-1.1.2-orig/archival/libipkg/str_list.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/str_list.h
---- busybox-1.1.2-orig/archival/libipkg/str_list.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/str_list.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/str_list.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/str_list.h
+--- busybox-1.2.0-orig/archival/libipkg/str_list.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/str_list.h	2006-07-22 16:31:26.000000000 +0200
 @@ -0,0 +1,51 @@
 +/* str_list.h - the itsy package management system
 +
@@ -13189,9 +13170,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/str_list.h busybox-1.1.2+ipkg-0.99
 +char *str_list_remove_elt(str_list_t *list, const char *target_str);
 +
 +#endif
-diff -ruN busybox-1.1.2-orig/archival/libipkg/str_util.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/str_util.c
---- busybox-1.1.2-orig/archival/libipkg/str_util.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/str_util.c	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/str_util.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/str_util.c
+--- busybox-1.2.0-orig/archival/libipkg/str_util.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/str_util.c	2006-07-22 16:31:26.000000000 +0200
 @@ -0,0 +1,73 @@
 +/* str_utils.c - the itsy package management system
 +
@@ -13266,9 +13247,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/str_util.c busybox-1.1.2+ipkg-0.99
 +    return str ? strdup(str) : NULL;
 +}
 +
-diff -ruN busybox-1.1.2-orig/archival/libipkg/str_util.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/str_util.h
---- busybox-1.1.2-orig/archival/libipkg/str_util.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/str_util.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/str_util.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/str_util.h
+--- busybox-1.2.0-orig/archival/libipkg/str_util.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/str_util.h	2006-07-22 16:31:26.000000000 +0200
 @@ -0,0 +1,28 @@
 +/* str_utils.h - the itsy package management system
 +
@@ -13298,9 +13279,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/str_util.h busybox-1.1.2+ipkg-0.99
 +char *str_dup_safe(const char *str);
 +
 +#endif
-diff -ruN busybox-1.1.2-orig/archival/libipkg/user.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/user.c
---- busybox-1.1.2-orig/archival/libipkg/user.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/user.c	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/user.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/user.c
+--- busybox-1.2.0-orig/archival/libipkg/user.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/user.c	2006-07-22 16:31:26.000000000 +0200
 @@ -0,0 +1,58 @@
 +/* user.c - the itsy package management system
 +
@@ -13360,9 +13341,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/user.c busybox-1.1.2+ipkg-0.99.162
 +
 +     return response;
 +}
-diff -ruN busybox-1.1.2-orig/archival/libipkg/user.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/user.h
---- busybox-1.1.2-orig/archival/libipkg/user.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/user.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/user.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/user.h
+--- busybox-1.2.0-orig/archival/libipkg/user.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/user.h	2006-07-22 16:31:26.000000000 +0200
 @@ -0,0 +1,23 @@
 +/* user.c - the itsy package management system
 +
@@ -13387,9 +13368,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/user.h busybox-1.1.2+ipkg-0.99.162
 +
 +char *get_user_response(const char *format, ...);
 +
-diff -ruN busybox-1.1.2-orig/archival/libipkg/void_list.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/void_list.c
---- busybox-1.1.2-orig/archival/libipkg/void_list.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/void_list.c	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/void_list.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/void_list.c
+--- busybox-1.2.0-orig/archival/libipkg/void_list.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/void_list.c	2006-07-22 16:31:26.000000000 +0200
 @@ -0,0 +1,194 @@
 +/* void_list.c - the itsy package management system
 +
@@ -13585,9 +13566,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/void_list.c busybox-1.1.2+ipkg-0.9
 +     else
 +	  return NULL;
 +}
-diff -ruN busybox-1.1.2-orig/archival/libipkg/void_list.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/void_list.h
---- busybox-1.1.2-orig/archival/libipkg/void_list.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/void_list.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/void_list.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/void_list.h
+--- busybox-1.2.0-orig/archival/libipkg/void_list.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/void_list.h	2006-07-22 16:31:26.000000000 +0200
 @@ -0,0 +1,59 @@
 +/* void_list.h - the itsy package management system
 +
@@ -13648,9 +13629,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/void_list.h busybox-1.1.2+ipkg-0.9
 +void *void_list_remove_elt(void_list_t *list, const void *target_data, void_list_cmp_t cmp);
 +
 +#endif
-diff -ruN busybox-1.1.2-orig/archival/libipkg/xsystem.c busybox-1.1.2+ipkg-0.99.162/archival/libipkg/xsystem.c
---- busybox-1.1.2-orig/archival/libipkg/xsystem.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/xsystem.c	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/xsystem.c busybox-1.2.0+ipkg-0.99.162/archival/libipkg/xsystem.c
+--- busybox-1.2.0-orig/archival/libipkg/xsystem.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/xsystem.c	2006-07-22 16:31:26.000000000 +0200
 @@ -0,0 +1,64 @@
 +/* xsystem.c - system(3) with error messages
 +
@@ -13716,9 +13697,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/xsystem.c busybox-1.1.2+ipkg-0.99.
 +    return -1;
 +}
 +	 
-diff -ruN busybox-1.1.2-orig/archival/libipkg/xsystem.h busybox-1.1.2+ipkg-0.99.162/archival/libipkg/xsystem.h
---- busybox-1.1.2-orig/archival/libipkg/xsystem.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libipkg/xsystem.h	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libipkg/xsystem.h busybox-1.2.0+ipkg-0.99.162/archival/libipkg/xsystem.h
+--- busybox-1.2.0-orig/archival/libipkg/xsystem.h	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0+ipkg-0.99.162/archival/libipkg/xsystem.h	2006-07-22 16:31:26.000000000 +0200
 @@ -0,0 +1,34 @@
 +/* xsystem.h - system(3) with error messages
 +
@@ -13754,20 +13735,9 @@ diff -ruN busybox-1.1.2-orig/archival/libipkg/xsystem.h busybox-1.1.2+ipkg-0.99.
 +
 +#endif
 +	 
-diff -ruN busybox-1.1.2-orig/archival/libunarchive/Makefile.in busybox-1.1.2+ipkg-0.99.162/archival/libunarchive/Makefile.in
---- busybox-1.1.2-orig/archival/libunarchive/Makefile.in	2006-03-22 22:16:20.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libunarchive/Makefile.in	2006-05-09 02:06:48.000000000 +0200
-@@ -58,6 +58,7 @@
- LIBUNARCHIVE-$(CONFIG_FEATURE_DEB_TAR_LZMA) += decompress_unlzma.o get_header_tar_lzma.o
- LIBUNARCHIVE-$(CONFIG_GUNZIP) += $(GUNZIP_FILES)
- LIBUNARCHIVE-$(CONFIG_FEATURE_GUNZIP_UNCOMPRESS) += decompress_uncompress.o
-+LIBUNARCHIVE-$(CONFIG_IPKG) += $(GUNZIP_FILES) get_header_tar.o get_header_tar_gz.o
- LIBUNARCHIVE-$(CONFIG_RPM2CPIO) += $(GUNZIP_FILES) get_header_cpio.o
- LIBUNARCHIVE-$(CONFIG_RPM) += $(GUNZIP_FILES) get_header_cpio.o
- LIBUNARCHIVE-$(CONFIG_TAR) += get_header_tar.o
-diff -ruN busybox-1.1.2-orig/archival/libunarchive/data_extract_all.c busybox-1.1.2+ipkg-0.99.162/archival/libunarchive/data_extract_all.c
---- busybox-1.1.2-orig/archival/libunarchive/data_extract_all.c	2006-03-22 22:16:20.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/archival/libunarchive/data_extract_all.c	2006-05-09 02:06:48.000000000 +0200
+diff -ruN busybox-1.2.0-orig/archival/libunarchive/data_extract_all.c busybox-1.2.0+ipkg-0.99.162/archival/libunarchive/data_extract_all.c
+--- busybox-1.2.0-orig/archival/libunarchive/data_extract_all.c	2006-07-01 00:42:04.000000000 +0200
++++ busybox-1.2.0+ipkg-0.99.162/archival/libunarchive/data_extract_all.c	2006-07-22 16:31:26.000000000 +0200
 @@ -126,3 +126,17 @@
  		utime(file_header->name, &t);
  	}
@@ -13786,21 +13756,43 @@ diff -ruN busybox-1.1.2-orig/archival/libunarchive/data_extract_all.c busybox-1.
 +	}
 +}
 +
-diff -ruN busybox-1.1.2-orig/include/applets.h busybox-1.1.2+ipkg-0.99.162/include/applets.h
---- busybox-1.1.2-orig/include/applets.h	2006-03-22 22:16:24.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/include/applets.h	2006-05-09 02:06:48.000000000 +0200
-@@ -149,6 +149,7 @@
- USE_IPCALC(APPLET(ipcalc, ipcalc_main, _BB_DIR_BIN, _BB_SUID_NEVER))
- USE_IPCRM(APPLET(ipcrm, ipcrm_main, _BB_DIR_USR_BIN, _BB_SUID_ALWAYS))
- USE_IPCS(APPLET(ipcs, ipcs_main, _BB_DIR_USR_BIN, _BB_SUID_ALWAYS))
-+USE_IPKG(APPLET(ipkg, ipkg_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
- USE_IPLINK(APPLET(iplink, iplink_main, _BB_DIR_BIN, _BB_SUID_NEVER))
- USE_IPROUTE(APPLET(iproute, iproute_main, _BB_DIR_BIN, _BB_SUID_NEVER))
- USE_IPTUNNEL(APPLET(iptunnel, iptunnel_main, _BB_DIR_BIN, _BB_SUID_NEVER))
-diff -ruN busybox-1.1.2-orig/include/unarchive.h busybox-1.1.2+ipkg-0.99.162/include/unarchive.h
---- busybox-1.1.2-orig/include/unarchive.h	2006-03-22 22:16:24.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/include/unarchive.h	2006-05-09 02:06:48.000000000 +0200
-@@ -74,6 +74,7 @@
+diff -ruN busybox-1.2.0-orig/archival/libunarchive/Makefile.in busybox-1.2.0+ipkg-0.99.162/archival/libunarchive/Makefile.in
+--- busybox-1.2.0-orig/archival/libunarchive/Makefile.in	2006-07-01 00:42:03.000000000 +0200
++++ busybox-1.2.0+ipkg-0.99.162/archival/libunarchive/Makefile.in	2006-07-22 16:31:26.000000000 +0200
+@@ -58,6 +58,7 @@
+ LIBUNARCHIVE-$(CONFIG_FEATURE_DEB_TAR_LZMA) += decompress_unlzma.o get_header_tar_lzma.o
+ LIBUNARCHIVE-$(CONFIG_GUNZIP) += $(GUNZIP_FILES)
+ LIBUNARCHIVE-$(CONFIG_FEATURE_GUNZIP_UNCOMPRESS) += decompress_uncompress.o
++LIBUNARCHIVE-$(CONFIG_IPKG) += $(GUNZIP_FILES) get_header_tar.o get_header_tar_gz.o
+ LIBUNARCHIVE-$(CONFIG_RPM2CPIO) += $(GUNZIP_FILES) get_header_cpio.o
+ LIBUNARCHIVE-$(CONFIG_RPM) += $(GUNZIP_FILES) get_header_cpio.o
+ LIBUNARCHIVE-$(CONFIG_TAR) += get_header_tar.o
+diff -ruN busybox-1.2.0-orig/archival/Makefile.in busybox-1.2.0+ipkg-0.99.162/archival/Makefile.in
+--- busybox-1.2.0-orig/archival/Makefile.in	2006-07-01 00:42:04.000000000 +0200
++++ busybox-1.2.0+ipkg-0.99.162/archival/Makefile.in	2006-07-22 16:31:25.000000000 +0200
+@@ -20,6 +20,7 @@
+ ARCHIVAL-$(CONFIG_DPKG_DEB)	+= dpkg_deb.o
+ ARCHIVAL-$(CONFIG_GUNZIP)	+= gunzip.o
+ ARCHIVAL-$(CONFIG_GZIP)		+= gzip.o
++ARCHIVAL-$(CONFIG_IPKG)		+= ipkg.o
+ ARCHIVAL-$(CONFIG_RPM2CPIO)	+= rpm2cpio.o
+ ARCHIVAL-$(CONFIG_RPM)		+= rpm.o
+ ARCHIVAL-$(CONFIG_TAR)		+= tar.o
+diff -ruN busybox-1.2.0-orig/include/applets.h busybox-1.2.0+ipkg-0.99.162/include/applets.h
+--- busybox-1.2.0-orig/include/applets.h	2006-07-01 00:42:10.000000000 +0200
++++ busybox-1.2.0+ipkg-0.99.162/include/applets.h	2006-07-22 16:35:35.000000000 +0200
+@@ -152,6 +152,7 @@
+ USE_IPCALC(APPLET(ipcalc, _BB_DIR_BIN, _BB_SUID_NEVER))
+ USE_IPCRM(APPLET(ipcrm, _BB_DIR_USR_BIN, _BB_SUID_ALWAYS))
+ USE_IPCS(APPLET(ipcs, _BB_DIR_USR_BIN, _BB_SUID_ALWAYS))
++USE_IPKG(APPLET(ipkg, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
+ USE_IPLINK(APPLET(iplink, _BB_DIR_BIN, _BB_SUID_NEVER))
+ USE_IPROUTE(APPLET(iproute, _BB_DIR_BIN, _BB_SUID_NEVER))
+ USE_IPTUNNEL(APPLET(iptunnel, _BB_DIR_BIN, _BB_SUID_NEVER))
+diff -ruN busybox-1.2.0-orig/include/unarchive.h busybox-1.2.0+ipkg-0.99.162/include/unarchive.h
+--- busybox-1.2.0-orig/include/unarchive.h	2006-07-01 00:42:10.000000000 +0200
++++ busybox-1.2.0+ipkg-0.99.162/include/unarchive.h	2006-07-22 16:31:26.000000000 +0200
+@@ -77,6 +77,7 @@
  
  extern void data_skip(archive_handle_t *archive_handle);
  extern void data_extract_all(archive_handle_t *archive_handle);
@@ -13808,10 +13800,10 @@ diff -ruN busybox-1.1.2-orig/include/unarchive.h busybox-1.1.2+ipkg-0.99.162/inc
  extern void data_extract_to_stdout(archive_handle_t *archive_handle);
  extern void data_extract_to_buffer(archive_handle_t *archive_handle);
  
-diff -ruN busybox-1.1.2-orig/include/usage.h busybox-1.1.2+ipkg-0.99.162/include/usage.h
---- busybox-1.1.2-orig/include/usage.h	2006-03-22 22:16:24.000000000 +0100
-+++ busybox-1.1.2+ipkg-0.99.162/include/usage.h	2006-05-09 02:06:48.000000000 +0200
-@@ -1013,6 +1013,82 @@
+diff -ruN busybox-1.2.0-orig/include/usage.h busybox-1.2.0+ipkg-0.99.162/include/usage.h
+--- busybox-1.2.0-orig/include/usage.h	2006-07-01 00:42:10.000000000 +0200
++++ busybox-1.2.0+ipkg-0.99.162/include/usage.h	2006-07-22 16:31:26.000000000 +0200
+@@ -982,6 +982,82 @@
  	"$ ls -la /tmp/busybox*\n" \
  	"-rw-rw-r--    1 andersen andersen   554058 Apr 14 17:49 /tmp/busybox.tar.gz\n"
  
@@ -13894,3 +13886,15 @@ diff -ruN busybox-1.1.2-orig/include/usage.h busybox-1.1.2+ipkg-0.99.162/include
  #define halt_trivial_usage \
  	"[-d<delay>] [-n<nosync>] [-f<force>]"
  #define halt_full_usage \
+diff -ruN busybox-1.2.0-orig/Makefile busybox-1.2.0+ipkg-0.99.162/Makefile
+--- busybox-1.2.0-orig/Makefile	2006-07-01 00:42:13.000000000 +0200
++++ busybox-1.2.0+ipkg-0.99.162/Makefile	2006-07-22 16:31:25.000000000 +0200
+@@ -31,7 +31,7 @@
+ export srctree=$(top_srcdir)
+ vpath %/Config.in $(srctree)
+ 
+-DIRS:=applets archival archival/libunarchive coreutils console-tools \
++DIRS:=applets archival archival/libipkg archival/libunarchive coreutils console-tools \
+ 	debianutils editors findutils init miscutils modutils networking \
+ 	networking/libiproute networking/udhcp procps loginutils shell \
+ 	sysklogd util-linux e2fsprogs libpwdgrp coreutils/libcoreutils libbb
diff --git a/openwrt/package/busybox/patches/912-ipkg-no_warnings.patch b/openwrt/package/busybox/patches/912-ipkg-no_warnings.patch
index 74133b07690972a2534da1e34c8f1bd1c5403eab..b5ba7705fb2e8afb692983c7fe43d68df9e2c810 100644
--- a/openwrt/package/busybox/patches/912-ipkg-no_warnings.patch
+++ b/openwrt/package/busybox/patches/912-ipkg-no_warnings.patch
@@ -1,3 +1,7 @@
+# Copyright (C) 2006 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
 #
 # remove (numerous) compile warnings
 #
diff --git a/openwrt/package/busybox/patches/913-libbb_hash.patch b/openwrt/package/busybox/patches/913-libbb_hash.patch
index 3a6a2ba1d1f91e34b9ec507ea7ebda99e6d7bcef..a7c2291caa28f03e1396a37bdbd2f37293d4c128 100644
--- a/openwrt/package/busybox/patches/913-libbb_hash.patch
+++ b/openwrt/package/busybox/patches/913-libbb_hash.patch
@@ -1,10 +1,14 @@
+# Copyright (C) 2006 OpenWrt.org
 #
-# expose (again) an hash_fd function (used 911-ipkg.patch)
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
 #
-diff -ruN busybox-1.1.1-old/coreutils/md5_sha1_sum.c busybox-1.1.1-new/coreutils/md5_sha1_sum.c
---- busybox-1.1.1-old/coreutils/md5_sha1_sum.c	2006-03-30 00:14:50.000000000 +0200
-+++ busybox-1.1.1-new/coreutils/md5_sha1_sum.c	2006-03-29 23:46:51.000000000 +0200
-@@ -15,80 +15,10 @@
+# expose (again) an hash_fd function (used in 911-ipkg.patch)
+#
+diff -ruN busybox-1.2.0-orig/coreutils/md5_sha1_sum.c busybox-1.2.0-libbb_hash/coreutils/md5_sha1_sum.c
+--- busybox-1.2.0-orig/coreutils/md5_sha1_sum.c	2006-07-01 00:42:07.000000000 +0200
++++ busybox-1.2.0-libbb_hash/coreutils/md5_sha1_sum.c	2006-07-22 17:08:02.000000000 +0200
+@@ -16,79 +16,10 @@
  
  #include "busybox.h"
  
@@ -40,81 +44,76 @@ diff -ruN busybox-1.1.1-old/coreutils/md5_sha1_sum.c busybox-1.1.1-new/coreutils
 -	RESERVE_CONFIG_UBUFFER(in_buf, 4096);
 -	void (*update)(const void*, size_t, void*);
 -	void (*final)(void*, void*);
--	
--	if(strcmp(filename, "-") == 0) {
+-
+-	if (strcmp(filename, "-") == 0) {
 -		src_fd = STDIN_FILENO;
 -	} else if(0 > (src_fd = open(filename, O_RDONLY))) {
 -		bb_perror_msg("%s", filename);
 -		return NULL;
 -	}
 -
--	// figure specific hash algorithims
--	if(ENABLE_MD5SUM && hash_algo==HASH_MD5) {
+-	/* figure specific hash algorithims */
+-	if (ENABLE_MD5SUM && hash_algo==HASH_MD5) {
 -		md5_begin(&context.md5);
 -		update = (void (*)(const void*, size_t, void*))md5_hash;
 -		final = (void (*)(void*, void*))md5_end;
 -		hash_len = 16;
--	} else if(ENABLE_SHA1SUM && hash_algo==HASH_SHA1) {
+-	} else if (ENABLE_SHA1SUM && hash_algo==HASH_SHA1) {
 -		sha1_begin(&context.sha1);
 -		update = (void (*)(const void*, size_t, void*))sha1_hash;
 -		final = (void (*)(void*, void*))sha1_end;
 -		hash_len = 20;
 -	} else {
--		bb_error_msg_and_die("algotithm not supported");
+-		bb_error_msg_and_die("algorithm not supported");
 -	}
--	
 -
--	while(0 < (count = read(src_fd, in_buf, sizeof in_buf))) {
+-	while (0 < (count = read(src_fd, in_buf, 4096))) {
 -		update(in_buf, count, &context);
 -	}
 -
--	if(count == 0) {
+-	if (count == 0) {
 -		final(in_buf, &context);
 -		hash_value = hash_bin_to_hex(in_buf, hash_len);
 -	}
--	
+-
 -	RELEASE_CONFIG_BUFFER(in_buf);
--	
--	if(src_fd != STDIN_FILENO) {
+-
+-	if (src_fd != STDIN_FILENO) {
 -		close(src_fd);
 -	}
--	
+-
 -	return hash_value;
 -}
 -
  /* This could become a common function for md5 as well, by using md5_stream */
  static int hash_files(int argc, char **argv, hash_algo_t hash_algo)
  {
-diff -ruN busybox-1.1.1-old/include/libbb.h busybox-1.1.1-new/include/libbb.h
---- busybox-1.1.1-old/include/libbb.h	2006-03-30 00:14:50.000000000 +0200
-+++ busybox-1.1.1-new/include/libbb.h	2006-03-30 00:31:48.000000000 +0200
-@@ -490,6 +490,12 @@
- void md5_hash(const void *data, size_t length, md5_ctx_t *ctx);
- void *md5_end(void *resbuf, md5_ctx_t *ctx);
+diff -ruN busybox-1.2.0-orig/include/libbb.h busybox-1.2.0-libbb_hash/include/libbb.h
+--- busybox-1.2.0-orig/include/libbb.h	2006-07-01 00:42:10.000000000 +0200
++++ busybox-1.2.0-libbb_hash/include/libbb.h	2006-07-22 17:01:06.000000000 +0200
+@@ -518,6 +518,8 @@
+ extern int get_terminal_width_height(int fd, int *width, int *height);
+ extern unsigned long get_ug_id(const char *s, long (*__bb_getxxnam)(const char *));
  
 +typedef enum { HASH_SHA1, HASH_MD5 } hash_algo_t;
 +
+ typedef struct _sha1_ctx_t_ {
+ 	uint32_t count[2];
+ 	uint32_t hash[5];
+@@ -542,6 +544,10 @@
+ void md5_hash(const void *data, size_t length, md5_ctx_t *ctx);
+ void *md5_end(void *resbuf, md5_ctx_t *ctx);
+ 
 +unsigned char *hash_bin_to_hex(unsigned char *hash_value, unsigned char hash_length);
 +int hash_fd(int fd, hash_algo_t hash_algo, uint8_t *hash_value);
 +uint8_t *hash_file(const char *filename, hash_algo_t hash_algo);
 +
- /* busybox.h will include dmalloc later for us, else include it here.  */
- #if !defined _BB_INTERNAL_H_ && defined DMALLOC
- #include <dmalloc.h>
-diff -ruN busybox-1.1.1-old/libbb/Makefile.in busybox-1.1.1-new/libbb/Makefile.in
---- busybox-1.1.1-old/libbb/Makefile.in	2006-03-30 00:14:50.000000000 +0200
-+++ busybox-1.1.1-new/libbb/Makefile.in	2006-03-29 23:46:51.000000000 +0200
-@@ -11,6 +11,7 @@
+ extern uint32_t *bb_crc32_filltable (int endian);
  
- LIBBB-n:=
- LIBBB-y:= \
-+	hash.c \
- 	bb_asprintf.c ask_confirmation.c change_identity.c chomp.c \
- 	compare_string_array.c concat_path_file.c copy_file.c copyfd.c \
- 	create_icmp_socket.c create_icmp6_socket.c \
-diff -ruN busybox-1.1.1-old/libbb/hash.c busybox-1.1.1-new/libbb/hash.c
---- busybox-1.1.1-old/libbb/hash.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.1.1-new/libbb/hash.c	2006-03-30 00:35:54.000000000 +0200
+ #ifndef RB_POWER_OFF
+diff -ruN busybox-1.2.0-orig/libbb/hash.c busybox-1.2.0-libbb_hash/libbb/hash.c
+--- busybox-1.2.0-orig/libbb/hash.c	1970-01-01 01:00:00.000000000 +0100
++++ busybox-1.2.0-libbb_hash/libbb/hash.c	2006-07-22 17:07:34.000000000 +0200
 @@ -0,0 +1,100 @@
 +/*
 + *  Copyright (C) 2003 Glenn L. McGrath
@@ -158,23 +157,23 @@ diff -ruN busybox-1.1.1-old/libbb/hash.c busybox-1.1.1-new/libbb/hash.c
 +	void (*final)(void*, void*) = NULL;
 +	
 +	// figure specific hash algorithims
-+	if(hash_algo==HASH_MD5) {
++	if (hash_algo==HASH_MD5) {
 +		md5_begin(&context.md5);
 +		update = (void (*)(const void*, size_t, void*))md5_hash;
 +		final = (void (*)(void*, void*))md5_end;
-+	} else if(hash_algo==HASH_SHA1) {
++	} else if (hash_algo==HASH_SHA1) {
 +		sha1_begin(&context.sha1);
 +		update = (void (*)(const void*, size_t, void*))sha1_hash;
 +		final = (void (*)(void*, void*))sha1_end;
 +	}
 +
 +
-+	while(0 < (count = read(fd, in_buf, sizeof in_buf))) {
++	while (0 < (count = read(fd, in_buf, sizeof in_buf))) {
 +		update(in_buf, count, &context);
 +		result += count;
 +	}
 +
-+	if(count == 0) {
++	if (count == 0) {
 +		final(hash_value, &context);
 +	}
 +	
@@ -189,26 +188,26 @@ diff -ruN busybox-1.1.1-old/libbb/hash.c busybox-1.1.1-new/libbb/hash.c
 +	RESERVE_CONFIG_UBUFFER(hash_buf, 20);
 +	uint8_t *hash_value = NULL;
 +	
-+	if(ENABLE_MD5SUM && hash_algo==HASH_MD5) {
++	if (ENABLE_MD5SUM && hash_algo==HASH_MD5) {
 +		hash_len = 16;
-+	} else if(ENABLE_SHA1SUM && hash_algo==HASH_SHA1) {
++	} else if (ENABLE_SHA1SUM && hash_algo==HASH_SHA1) {
 +		hash_len = 20;
 +	} else {
 +		bb_error_msg_and_die("algotithm not supported");
 +	}
 +
-+	if(strcmp(filename, "-") == 0) {
++	if (strcmp(filename, "-") == 0) {
 +		src_fd = STDIN_FILENO;
-+	} else if(0 > (src_fd = open(filename, O_RDONLY))) {
++	} else if (0 > (src_fd = open(filename, O_RDONLY))) {
 +		bb_perror_msg("%s", filename);
 +		return NULL;
 +	}
 +
-+	if(hash_fd(src_fd, hash_algo, hash_buf) > 0) {
++	if (hash_fd(src_fd, hash_algo, hash_buf) > 0) {
 +		hash_value = hash_bin_to_hex(hash_buf, hash_len);
 +	}
 +	
-+	if(src_fd != STDIN_FILENO) {
++	if (src_fd != STDIN_FILENO) {
 +		close(src_fd);
 +	}
 +	
@@ -216,3 +215,14 @@ diff -ruN busybox-1.1.1-old/libbb/hash.c busybox-1.1.1-new/libbb/hash.c
 +
 +	return hash_value;
 +}
+diff -ruN busybox-1.2.0-orig/libbb/Makefile.in busybox-1.2.0-libbb_hash/libbb/Makefile.in
+--- busybox-1.2.0-orig/libbb/Makefile.in	2006-07-01 00:42:08.000000000 +0200
++++ busybox-1.2.0-libbb_hash/libbb/Makefile.in	2006-07-22 16:51:47.000000000 +0200
+@@ -11,6 +11,7 @@
+ 
+ LIBBB-n:=
+ LIBBB-y:= \
++	hash.c \
+ 	bb_asprintf.c ask_confirmation.c change_identity.c chomp.c \
+ 	compare_string_array.c concat_path_file.c copy_file.c copyfd.c \
+ 	crc32.c create_icmp_socket.c create_icmp6_socket.c \
diff --git a/openwrt/package/busybox/patches/914-ipkg-fixes.patch b/openwrt/package/busybox/patches/914-ipkg-fixes.patch
index 55cd9040c6f9933cc40fa659d92d74ebb98567d5..72375bc5b7e866e5ae4bf0f54430fbd7fe79ceb1 100644
--- a/openwrt/package/busybox/patches/914-ipkg-fixes.patch
+++ b/openwrt/package/busybox/patches/914-ipkg-fixes.patch
@@ -1,3 +1,7 @@
+# Copyright (C) 2006 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
 #
 # fix ipkg bugs
 #