summaryrefslogtreecommitdiff
path: root/package
diff options
context:
space:
mode:
Diffstat (limited to 'package')
-rw-r--r--package/busybox/Makefile4
-rw-r--r--package/busybox/config/Config.in90
-rw-r--r--package/busybox/config/archival/Config.in78
-rw-r--r--package/busybox/config/console-tools/Config.in2
-rw-r--r--package/busybox/config/coreutils/Config.in27
-rw-r--r--package/busybox/config/e2fsprogs/Config.in59
-rw-r--r--package/busybox/config/editors/Config.in17
-rw-r--r--package/busybox/config/findutils/Config.in24
-rw-r--r--package/busybox/config/init/Config.in37
-rw-r--r--package/busybox/config/libbb/Config.in42
-rw-r--r--package/busybox/config/loginutils/Config.in108
-rw-r--r--package/busybox/config/miscutils/Config.in153
-rw-r--r--package/busybox/config/modutils/Config.in72
-rw-r--r--package/busybox/config/networking/Config.in154
-rw-r--r--package/busybox/config/networking/udhcp/Config.in82
-rw-r--r--package/busybox/config/printutils/Config.in21
-rw-r--r--package/busybox/config/procps/Config.in15
-rw-r--r--package/busybox/config/selinux/Config.in7
-rw-r--r--package/busybox/config/shell/Config.in58
-rw-r--r--package/busybox/config/sysklogd/Config.in12
-rw-r--r--package/busybox/config/util-linux/Config.in318
-rw-r--r--package/busybox/patches/000-autoconf.patch25
-rw-r--r--package/busybox/patches/001-init_avoid_loop_opening_tty.patch20
-rw-r--r--package/busybox/patches/110-wget_getopt_fix.patch10
-rw-r--r--package/busybox/patches/140-trylink_bash.patch6
-rw-r--r--package/busybox/patches/200-etc_crontabs.patch20
-rw-r--r--package/busybox/patches/240-udhcpc_retries.patch26
-rw-r--r--package/busybox/patches/241-udhcpc-oversized_packets.patch94
-rw-r--r--package/busybox/patches/242-udhcpc_msgs.patch20
-rw-r--r--package/busybox/patches/243-udhcpc_changed_ifindex.patch12
-rw-r--r--package/busybox/patches/250-ash_export-n.patch17
-rw-r--r--package/busybox/patches/300-netmsg.patch50
-rw-r--r--package/busybox/patches/310-passwd_access.patch45
-rw-r--r--package/busybox/patches/340-lock_util.patch50
-rw-r--r--package/busybox/patches/350-httpd_redir.patch58
-rw-r--r--package/busybox/patches/360-awk_multi_f.patch72
-rw-r--r--package/busybox/patches/401-darwin_includes.patch39
-rw-r--r--package/busybox/patches/410-httpd_cgi_headers.patch10
-rw-r--r--package/busybox/patches/430-uniq_memleak.patch12
-rw-r--r--package/busybox/patches/440-httpd_chdir.patch12
-rw-r--r--package/busybox/patches/450-usage_compressed_fix.patch12
-rw-r--r--package/busybox/patches/460-truncated_ping_results.patch10
-rw-r--r--package/busybox/patches/470-insmod_search.patch320
-rw-r--r--package/busybox/patches/480-disable_braindead_optimization.patch40
-rw-r--r--package/busybox/patches/500-ipkg.patch486
-rw-r--r--package/busybox/patches/501-libbb_hash.patch88
-rw-r--r--package/busybox/patches/510-awx.patch103
-rw-r--r--package/busybox/patches/520-ipkg_secure.patch18
-rw-r--r--package/busybox/patches/521-ipkg_upgrade_env.patch6
-rw-r--r--package/busybox/patches/523-conffiles_fix.patch31
-rw-r--r--package/busybox/patches/524-memory_usage.patch28
-rw-r--r--package/busybox/patches/524-udhcpc_renew.patch10
-rw-r--r--package/busybox/patches/525-clean_temp.patch5
-rw-r--r--package/busybox/patches/526-ipkg_fix_pkg_comparison.patch43
-rw-r--r--package/busybox/patches/901-basename.patch9
-rw-r--r--package/busybox/patches/902-tar.patch55
-rw-r--r--package/busybox/patches/903-ash.patch155
-rw-r--r--package/busybox/patches/904-build.patch28
58 files changed, 2194 insertions, 1231 deletions
diff --git a/package/busybox/Makefile b/package/busybox/Makefile
index ab5e241..3b8984a 100644
--- a/package/busybox/Makefile
+++ b/package/busybox/Makefile
@@ -9,13 +9,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=busybox
-PKG_VERSION:=1.8.2
+PKG_VERSION:=1.11.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://www.busybox.net/downloads \
http://distfiles.gentoo.org/distfiles/
-PKG_MD5SUM:=5794c6187c7cc8176c52b96af9bf2478
+PKG_MD5SUM:=c64bbb5c0c3e19f12892941a0ae86c48
include $(INCLUDE_DIR)/package.mk
diff --git a/package/busybox/config/Config.in b/package/busybox/config/Config.in
index abeb472..62b80d6 100644
--- a/package/busybox/config/Config.in
+++ b/package/busybox/config/Config.in
@@ -12,22 +12,6 @@ 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.
-
config BUSYBOX_CONFIG_DESKTOP
bool "Enable options for full-blown desktop systems"
default n
@@ -36,10 +20,21 @@ config BUSYBOX_CONFIG_DESKTOP
Select this only if you plan to use busybox on full-blown
desktop machine with common Linux distro, not on an embedded box.
+config BUSYBOX_CONFIG_FEATURE_ASSUME_UNICODE
+ bool "Assume that 1:1 char/glyph correspondence is not true"
+ default n
+ help
+ This makes various applets aware that one byte is not
+ one character on screen.
+
+ Busybox aims to eventually work correctly with Unicode displays.
+ Any older encodings are not guaranteed to work.
+ Probably by the time when busybox will be fully Unicode-clean,
+ other encodings will be mainly of historic interest.
+
choice
prompt "Buffer allocation policy"
default BUSYBOX_CONFIG_FEATURE_BUFFERS_GO_ON_STACK
- 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.
@@ -110,7 +105,7 @@ config BUSYBOX_CONFIG_LOCALE_SUPPORT
busybox to support locale settings.
config BUSYBOX_CONFIG_GETOPT_LONG
- bool "Enable support for --long-options"
+ bool "Support for --long-options"
default y
help
Enable this if you want busybox applets to use the gnu --long-option
@@ -129,7 +124,6 @@ config BUSYBOX_CONFIG_FEATURE_DEVPTS
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
@@ -279,10 +273,31 @@ config BUSYBOX_CONFIG_STATIC
Most people will leave this set to 'N'.
+config BUSYBOX_CONFIG_PIE
+ bool "Build BusyBox as a position independent executable"
+ default n
+ depends on !BUSYBOX_CONFIG_STATIC
+ help
+ (TODO: what is it and why/when is it useful?)
+ Most people will leave this set to 'N'.
+
+config BUSYBOX_CONFIG_NOMMU
+ bool "Force NOMMU build"
+ default n
+ help
+ Busybox tries to detect whether architecture it is being
+ built against supports MMU or not. If this detection fails,
+ or if you want to build NOMMU version of busybox for testing,
+ you may force NOMMU build here.
+
+ Most people will leave this set to 'N'.
+
+# PIE can be made to work with BUILD_LIBBUSYBOX, but currently
+# build system does not support that
config BUSYBOX_CONFIG_BUILD_LIBBUSYBOX
bool "Build shared libbusybox"
default n
- depends on !BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS
+ depends on !BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS && !BUSYBOX_CONFIG_PIE && !BUSYBOX_CONFIG_STATIC
help
Build a shared library libbusybox.so.N.N.N which contains all
busybox code.
@@ -369,6 +384,16 @@ config BUSYBOX_CONFIG_LFS
cp, mount, tar, and many others. If you want to access files larger
than 2 Gigabytes, enable this option. Otherwise, leave it set to 'N'.
+config BUSYBOX_CONFIG_CROSS_COMPILER_PREFIX
+ string "Cross Compiler prefix"
+ default ""
+ help
+ If you want to build BusyBox with a cross compiler, then you
+ will need to set this to the cross-compiler prefix, for example,
+ "i386-uclibc-". Note that CROSS_COMPILE environment variable
+ or "make CROSS_COMPILE=xxx ..." will override this selection.
+ For native build leave it empty.
+
endmenu
menu 'Debugging Options'
@@ -384,6 +409,17 @@ config BUSYBOX_CONFIG_DEBUG
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.
+
config BUSYBOX_CONFIG_WERROR
bool "Abort compilation on any warning"
default n
@@ -392,18 +428,6 @@ config BUSYBOX_CONFIG_WERROR
Most people should answer N.
-# Seems to be unused
-#config DEBUG_PESSIMIZE
-# bool "Disable compiler optimizations."
-# default n
-# depends on 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
@@ -554,4 +578,4 @@ source package/busybox/config/shell/Config.in
source package/busybox/config/sysklogd/Config.in
source package/busybox/config/runit/Config.in
source package/busybox/config/selinux/Config.in
-source package/busybox/config/ipsvd/Config.in
+source package/busybox/config/printutils/Config.in
diff --git a/package/busybox/config/archival/Config.in b/package/busybox/config/archival/Config.in
index 0cfbbcc..14b082f 100644
--- a/package/busybox/config/archival/Config.in
+++ b/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 "Support for long filenames (not need for debs)"
default n
depends on BUSYBOX_CONFIG_AR
help
@@ -78,6 +78,14 @@ config BUSYBOX_CONFIG_CPIO
Unless you have a specific application which requires cpio, you should
probably say N here.
+config BUSYBOX_CONFIG_FEATURE_CPIO_O
+ bool "Support for archive creation"
+ default n
+ depends on BUSYBOX_CONFIG_CPIO
+ help
+ This implementation of cpio can create cpio archives in the "newc"
+ format only.
+
config BUSYBOX_CONFIG_DPKG
bool "dpkg"
default n
@@ -99,7 +107,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
@@ -137,8 +145,6 @@ config BUSYBOX_CONFIG_IPKG
select BUSYBOX_CONFIG_MD5SUM
select BUSYBOX_CONFIG_WGET
select BUSYBOX_CONFIG_DIFF
- select BUSYBOX_CONFIG_TAR
- select BUSYBOX_CONFIG_GUNZIP
help
ipkg is the itsy package management system.
@@ -177,6 +183,14 @@ config BUSYBOX_CONFIG_FEATURE_TAR_CREATE
If you enable this option you'll be able to create
tar archives using the `-c' option.
+config BUSYBOX_CONFIG_FEATURE_TAR_GZIP
+ bool "Enable -z option"
+ default y
+ depends on BUSYBOX_CONFIG_TAR
+ help
+ If you enable this option tar will be able to call gzip,
+ when creating or extracting tar gziped archives.
+
config BUSYBOX_CONFIG_FEATURE_TAR_BZIP2
bool "Enable -j option to handle .tar.bz2 files"
default y
@@ -193,22 +207,6 @@ config BUSYBOX_CONFIG_FEATURE_TAR_LZMA
If you enable this option you'll be able to extract
archives compressed with lzma.
-config BUSYBOX_CONFIG_FEATURE_TAR_FROM
- bool "Enable -X (exclude from) and -T (include from) options)"
- default y
- depends on BUSYBOX_CONFIG_TAR
- help
- If you enable this option you'll be able to specify
- a list of files to include or exclude from an archive.
-
-config BUSYBOX_CONFIG_FEATURE_TAR_GZIP
- bool "Enable -z option"
- default y
- depends on BUSYBOX_CONFIG_TAR
- help
- If you enable this option tar will be able to call gzip,
- when creating or extracting tar gziped archives.
-
config BUSYBOX_CONFIG_FEATURE_TAR_COMPRESS
bool "Enable -Z option"
default n
@@ -217,8 +215,24 @@ config BUSYBOX_CONFIG_FEATURE_TAR_COMPRESS
If you enable this option tar will be able to call uncompress,
when extracting .tar.Z archives.
+config BUSYBOX_CONFIG_FEATURE_TAR_AUTODETECT
+ bool "Let tar autodetect gz/bz2 compresses tarballs"
+ default n
+ depends on BUSYBOX_CONFIG_FEATURE_TAR_GZIP || BUSYBOX_CONFIG_FEATURE_TAR_BZIP2
+ help
+ With this option tar can automatically detect gzip/bzip2 compressed
+ tarballs. Currently it works only on seekable streams.
+
+config BUSYBOX_CONFIG_FEATURE_TAR_FROM
+ bool "Enable -X (exclude from) and -T (include from) options)"
+ default y
+ depends on BUSYBOX_CONFIG_TAR
+ help
+ If you enable this option you'll be able to specify
+ a list of files to include or exclude from an archive.
+
config BUSYBOX_CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY
- bool "Enable support for old tar header format"
+ bool "Support for old tar header format"
default n
depends on BUSYBOX_CONFIG_TAR
help
@@ -236,7 +250,7 @@ config BUSYBOX_CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY
It is said to be fixed in newer Sun tar, but "old" tarballs still exist.
config BUSYBOX_CONFIG_FEATURE_TAR_GNU_EXTENSIONS
- bool "Enable support for some GNU tar extensions"
+ bool "Support for GNU tar extensions (long filenames)"
default y
depends on BUSYBOX_CONFIG_TAR
help
@@ -248,7 +262,16 @@ config BUSYBOX_CONFIG_FEATURE_TAR_LONG_OPTIONS
default n
depends on BUSYBOX_CONFIG_TAR && BUSYBOX_CONFIG_GETOPT_LONG
help
- Enable use of long options, increases size by about 400 Bytes
+ Enable use of long options, increases size by about 400 Bytes
+
+config BUSYBOX_CONFIG_FEATURE_TAR_UNAME_GNAME
+ bool "Enable use of user and group names"
+ default n
+ depends on BUSYBOX_CONFIG_TAR
+ help
+ Enables use of user and group names in tar. This affects contents
+ listings (-t) and preserving permissions when unpacking (-p).
+ +200 bytes.
config BUSYBOX_CONFIG_UNCOMPRESS
bool "uncompress"
@@ -273,7 +296,7 @@ config BUSYBOX_CONFIG_UNLZMA
should probably say N here.
config BUSYBOX_CONFIG_FEATURE_LZMA_FAST
- bool "Optimze unlzma for speed"
+ bool "Optimize unlzma for speed"
default n
depends on BUSYBOX_CONFIG_UNLZMA
help
@@ -293,13 +316,6 @@ config BUSYBOX_CONFIG_UNZIP
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"
- default n
- depends on BUSYBOX_CONFIG_CPIO || BUSYBOX_CONFIG_TAR
- help
- I don't think this is needed anymore.
-
comment "Common options for dpkg and dpkg_deb"
depends on BUSYBOX_CONFIG_DPKG || BUSYBOX_CONFIG_DPKG_DEB
diff --git a/package/busybox/config/console-tools/Config.in b/package/busybox/config/console-tools/Config.in
index 957b1d3..7f0764f 100644
--- a/package/busybox/config/console-tools/Config.in
+++ b/package/busybox/config/console-tools/Config.in
@@ -72,7 +72,7 @@ config BUSYBOX_CONFIG_RESIZE
terminal.
config BUSYBOX_CONFIG_FEATURE_RESIZE_PRINT
- bool "print environment variables"
+ bool "Print environment variables"
default n
depends on BUSYBOX_CONFIG_RESIZE
help
diff --git a/package/busybox/config/coreutils/Config.in b/package/busybox/config/coreutils/Config.in
index 2c4d8a3..53fb74a 100644
--- a/package/busybox/config/coreutils/Config.in
+++ b/package/busybox/config/coreutils/Config.in
@@ -135,6 +135,13 @@ config BUSYBOX_CONFIG_DF
df reports the amount of disk space used and available
on filesystems.
+config BUSYBOX_CONFIG_FEATURE_DF_INODE
+ bool "Enable -i (inode information)"
+ default n
+ depends on BUSYBOX_CONFIG_DF
+ help
+ This option enables support for df -i.
+
config BUSYBOX_CONFIG_DIRNAME
bool "dirname"
default y
@@ -481,6 +488,14 @@ config BUSYBOX_CONFIG_RMDIR
help
rmdir is used to remove empty directories.
+config BUSYBOX_CONFIG_FEATURE_RMDIR_LONG_OPTIONS
+ bool "Enable long options"
+ default n
+ depends on BUSYBOX_CONFIG_RMDIR && BUSYBOX_CONFIG_GETOPT_LONG
+ help
+ Support long options for the rmdir applet, including
+ --ignore-fail-on-non-empty for compatibility with GNU rmdir.
+
config BUSYBOX_CONFIG_SEQ
bool "seq"
default y
@@ -513,7 +528,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
@@ -531,7 +546,7 @@ config BUSYBOX_CONFIG_SPLIT
split a file into pieces.
config BUSYBOX_CONFIG_FEATURE_SPLIT_FANCY
- bool "fancy extensions"
+ bool "Fancy extensions"
default n
depends on BUSYBOX_CONFIG_SPLIT
help
@@ -572,6 +587,12 @@ config BUSYBOX_CONFIG_SYNC
help
sync is used to flush filesystem buffers.
+config BUSYBOX_CONFIG_TAC
+ bool "tac"
+ default n
+ help
+ tac is used to concatenate and print files in reverse.
+
config BUSYBOX_CONFIG_TAIL
bool "tail"
default y
@@ -595,7 +616,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
diff --git a/package/busybox/config/e2fsprogs/Config.in b/package/busybox/config/e2fsprogs/Config.in
index 1b83665..50a073e 100644
--- a/package/busybox/config/e2fsprogs/Config.in
+++ b/package/busybox/config/e2fsprogs/Config.in
@@ -12,13 +12,13 @@ config BUSYBOX_CONFIG_CHATTR
chattr changes the file attributes on a second extended file system.
### config E2FSCK
-### bool "e2fsck"
-### default n
-### help
-### e2fsck is used to check Linux second extended file systems (ext2fs).
-### e2fsck also supports ext2 filesystems countaining a journal (ext3).
-### The normal compat symlinks 'fsck.ext2' and 'fsck.ext3' are also
-### provided.
+### bool "e2fsck"
+### default n
+### help
+### e2fsck is used to check Linux second extended file systems (ext2fs).
+### e2fsck also supports ext2 filesystems countaining a journal (ext3).
+### The normal compat symlinks 'fsck.ext2' and 'fsck.ext3' are also
+### provided.
config BUSYBOX_CONFIG_FSCK
bool "fsck"
@@ -35,33 +35,34 @@ config BUSYBOX_CONFIG_LSATTR
lsattr lists the file attributes on a second extended file system.
### config MKE2FS
-### bool "mke2fs"
-### default n
-### help
-### mke2fs is used to create an ext2/ext3 filesystem. The normal compat
-### symlinks 'mkfs.ext2' and 'mkfs.ext3' are also provided.
+### bool "mke2fs"
+### default n
+### help
+### mke2fs is used to create an ext2/ext3 filesystem. The normal compat
+### symlinks 'mkfs.ext2' and 'mkfs.ext3' are also provided.
### config TUNE2FS
-### bool "tune2fs"
-### default n
-### help
-### tune2fs allows the system administrator to adjust various tunable
-### filesystem parameters on Linux ext2/ext3 filesystems.
+### bool "tune2fs"
+### default n
+### help
+### tune2fs allows the system administrator to adjust various tunable
+### filesystem parameters on Linux ext2/ext3 filesystems.
### config E2LABEL
-### bool "e2label"
-### default n
-### depends on TUNE2FS
-### help
-### e2label will display or change the filesystem label on the ext2
-### filesystem located on device.
+### bool "e2label"
+### default n
+### depends on TUNE2FS
+### help
+### e2label will display or change the filesystem label on the ext2
+### filesystem located on device.
+### NB: this one is now provided by util-linux/volume_id/*
### config FINDFS
-### bool "findfs"
-### default n
-### depends on TUNE2FS
-### help
-### findfs will search the disks in the system looking for a filesystem
-### which has a label matching label or a UUID equal to uuid.
+### bool "findfs"
+### default n
+### depends on TUNE2FS
+### help
+### findfs will search the disks in the system looking for a filesystem
+### which has a label matching label or a UUID equal to uuid.
endmenu
diff --git a/package/busybox/config/editors/Config.in b/package/busybox/config/editors/Config.in
index 6d1f6f2..0f0a18c 100644
--- a/package/busybox/config/editors/Config.in
+++ b/package/busybox/config/editors/Config.in
@@ -97,14 +97,23 @@ config BUSYBOX_CONFIG_VI
you may wish to use something else.
config BUSYBOX_CONFIG_FEATURE_VI_MAX_LEN
- int "Maximum line length in vi"
+ int "Maximum screen width in vi"
range 256 16384
default 1024
depends on BUSYBOX_CONFIG_VI
help
- vi uses on-stack buffers for intermediate line buffers.
- You may want to decrease this parameter if your target machine
- benefits from smaller stack usage.
+ Contrary to what you may think, this is not eating much.
+ Make it smaller than 4k only if you are very limited on memory.
+
+config BUSYBOX_CONFIG_FEATURE_VI_8BIT
+ bool "Allow vi to display 8-bit chars (otherwise shows dots)"
+ default n
+ depends on BUSYBOX_CONFIG_VI
+ help
+ If your terminal can display characters with high bit set,
+ you may want to enable this. Note: vi is not Unicode-capable.
+ If your terminal combines several 8-bit bytes into one character
+ (as in Unicode mode), this will not work properly.
config BUSYBOX_CONFIG_FEATURE_VI_COLON
bool "Enable \":\" colon commands (no \"ex\" mode)"
diff --git a/package/busybox/config/findutils/Config.in b/package/busybox/config/findutils/Config.in
index 3f89c33..0477555 100644
--- a/package/busybox/config/findutils/Config.in
+++ b/package/busybox/config/findutils/Config.in
@@ -22,7 +22,7 @@ config BUSYBOX_CONFIG_FEATURE_FIND_PRINT0
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
@@ -30,7 +30,7 @@ config BUSYBOX_CONFIG_FEATURE_FIND_MTIME
files, in days.
config BUSYBOX_CONFIG_FEATURE_FIND_MMIN
- bool "Enable modified time matching (-mmin) option"
+ bool "Enable modified time matching (-mmin option)"
default n
depends on BUSYBOX_CONFIG_FIND
help
@@ -38,14 +38,14 @@ config BUSYBOX_CONFIG_FEATURE_FIND_MMIN
files, in minutes.
config BUSYBOX_CONFIG_FEATURE_FIND_PERM
- bool "Enable permissions matching (-perm) option"
+ bool "Enable 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
@@ -53,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' option (-xdev)"
default y
depends on BUSYBOX_CONFIG_FIND
help
@@ -75,14 +75,14 @@ config BUSYBOX_CONFIG_FEATURE_FIND_NEWER
a modified time that is more recent than the specified FILE.
config BUSYBOX_CONFIG_FEATURE_FIND_INUM
- bool "Enable inode number matching (-inum) option"
+ bool "Enable 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
@@ -90,14 +90,14 @@ config BUSYBOX_CONFIG_FEATURE_FIND_EXEC
the files matched.
config BUSYBOX_CONFIG_FEATURE_FIND_USER
- bool "Enable username/uid matching (-user) option"
+ bool "Enable username/uid matching (-user option)"
default y
depends on BUSYBOX_CONFIG_FIND
help
Support the 'find -user' option for searching by username or uid.
config BUSYBOX_CONFIG_FEATURE_FIND_GROUP
- bool "Enable group/gid matching (-group) option"
+ bool "Enable group/gid matching (-group option)"
default y
depends on BUSYBOX_CONFIG_FIND
help
@@ -127,14 +127,14 @@ config BUSYBOX_CONFIG_FEATURE_FIND_PAREN
Enable usage of parens '(' to specify logical order of arguments.
config BUSYBOX_CONFIG_FEATURE_FIND_SIZE
- bool "Enable (-size) option allowing matching for file size"
+ bool "Enable -size option allowing matching for file size"
default y
depends on BUSYBOX_CONFIG_FIND
help
Support the 'find -size' option for searching by file size.
config BUSYBOX_CONFIG_FEATURE_FIND_PRUNE
- bool "Enable (-prune) option allowing to exclude subdirectories"
+ bool "Enable -prune option allowing to exclude subdirectories"
default y
depends on BUSYBOX_CONFIG_FIND
help
@@ -165,7 +165,7 @@ config BUSYBOX_CONFIG_FEATURE_FIND_REGEX
The -regex option matches whole pathname against regular expression.
config BUSYBOX_CONFIG_FEATURE_FIND_CONTEXT
- bool "Enable (-context) option for matching security context"
+ bool "Enable -context option for matching security context"
default n
depends on BUSYBOX_CONFIG_FIND && BUSYBOX_CONFIG_SELINUX
help
diff --git a/package/busybox/config/init/Config.in b/package/busybox/config/init/Config.in
index 104af26..6e3bf9d 100644
--- a/package/busybox/config/init/Config.in
+++ b/package/busybox/config/init/Config.in
@@ -13,7 +13,7 @@ config BUSYBOX_CONFIG_INIT
init is the first program run when the system boots.
config BUSYBOX_CONFIG_DEBUG_INIT
- bool "debugging aid"
+ bool "Debugging aid"
default n
depends on BUSYBOX_CONFIG_INIT
help
@@ -27,16 +27,39 @@ config BUSYBOX_CONFIG_FEATURE_USE_INITTAB
help
Allow init to read an inittab file when the system boot.
+config BUSYBOX_CONFIG_FEATURE_KILL_REMOVED
+ bool "Support killing processes that have been removed from inittab"
+ default n
+ depends on BUSYBOX_CONFIG_FEATURE_USE_INITTAB
+ help
+ When respawn entries are removed from inittab and a SIGHUP is
+ sent to init, this feature will kill the processes that have
+ been removed.
+
+config BUSYBOX_CONFIG_FEATURE_KILL_DELAY
+ int "How long to wait between TERM and KILL (0 - send TERM only)" if FEATURE_KILL_REMOVED
+ range 0 1024
+ default 0
+ help
+ With nonzero setting, init sends TERM, forks, child waits N
+ seconds, sends KILL and exits. Setting it too high is unwise
+ (child will hang around for too long and can actually kill
+ wrong process!)
+
config BUSYBOX_CONFIG_FEATURE_INIT_SCTTY
- bool "Support running commands with a controlling-tty"
+ bool "Run commands with leading dash with controlling tty"
default n
depends on BUSYBOX_CONFIG_INIT
help
- If this option is enabled a command starting with hyphen (-)
- is run in its own session (setsid(2)) and possibly with a
- controlling tty (TIOCSCTTY). This is not the traditional init
- behavour, but is often what you want in an embedded system where
- the console is only accessed during development or for maintenance.
+ If this option is enabled, init will try to give a controlling
+ tty to any command which has leading hyphen (often it's "-/bin/sh").
+ More precisely, init will do "ioctl(STDIN_FILENO, TIOCSCTTY, 0)".
+ If device attached to STDIN_FILENO can be a ctty but is not yet
+ a ctty for other session, it will become this process' ctty.
+ This is not the traditional init behavour, but is often what you want
+ in an embedded system where the console is only accessed during
+ development or for maintenance.
+ NB: using cttyhack applet may work better.
config BUSYBOX_CONFIG_FEATURE_INIT_SYSLOG
bool "Enable init to write to syslog"
diff --git a/package/busybox/config/libbb/Config.in b/package/busybox/config/libbb/Config.in
index 4e23b8a..879abf0 100644
--- a/package/busybox/config/libbb/Config.in
+++ b/package/busybox/config/libbb/Config.in
@@ -13,7 +13,7 @@ config BUSYBOX_CONFIG_PASSWORD_MINLEN
Minimum allowable password length.
config BUSYBOX_CONFIG_MD5_SIZE_VS_SPEED
- int " MD5: Trade Bytes for Speed"
+ int "MD5: Trade Bytes for Speed"
default 2
range 0 3
help
@@ -57,14 +57,6 @@ config BUSYBOX_CONFIG_FEATURE_EDITING_MAX_LEN
You may want to decrease this parameter if your target machine
benefits from smaller stack usage.
-config BUSYBOX_CONFIG_FEATURE_EDITING_FANCY_KEYS
- bool "Additional editing keys"
- default y
- depends on BUSYBOX_CONFIG_FEATURE_EDITING
- help
- Enable additonal editing keys (Ctrl-E, Ctrl-U etc).
- Arrow keys, Home/End/Delete and Ctrl-W work even without this option.
-
config BUSYBOX_CONFIG_FEATURE_EDITING_VI
bool "vi-style line editing commands"
default n
@@ -110,6 +102,31 @@ config BUSYBOX_CONFIG_FEATURE_EDITING_FANCY_PROMPT
Setting this option allows for prompts to use things like \w and
\$ and escape codes.
+config BUSYBOX_CONFIG_FEATURE_VERBOSE_CP_MESSAGE
+ bool "Give more precise messages when copy fails (cp, mv etc)"
+ default n
+ help
+ Error messages with this feature enabled:
+ $ cp file /does_not_exist/file
+ cp: cannot create '/does_not_exist/file': Path does not exist
+ $ cp file /vmlinuz/file
+ cp: cannot stat '/vmlinuz/file': Path has non-directory component
+ If this feature is not enabled, they will be, respectively:
+ cp: cannot remove '/does_not_exist/file': No such file or directory
+ cp: cannot stat '/vmlinuz/file': Not a directory
+ respectively.
+ This will cost you ~60 bytes.
+
+config BUSYBOX_CONFIG_FEATURE_COPYBUF_KB
+ int "Copy buffer size, in kilobytes"
+ range 1 1024
+ default 4
+ help
+ Size of buffer used by cp, mv, install etc.
+ Buffers which are 4 kb or less will be allocated on stack.
+ Bigger buffers will be allocated with mmap, with fallback to 4 kb
+ stack buffer if mmap fails.
+
config BUSYBOX_CONFIG_MONOTONIC_SYSCALL
bool "Use clock_gettime(CLOCK_MONOTONIC) syscall"
default n
@@ -127,4 +144,11 @@ config BUSYBOX_CONFIG_IOCTL_HEX2STR_ERROR
Use ioctl names rather than hex values in error messages
(e.g. VT_DISALLOCATE rather than 0x5608). If disabled this
saves about 1400 bytes.
+
+config BUSYBOX_CONFIG_FEATURE_HWIB
+ bool "Support infiniband HW"
+ default n
+ help
+ Support for printing infiniband addresses in
+ network applets.
endmenu
diff --git a/package/busybox/config/loginutils/Config.in b/package/busybox/config/loginutils/Config.in
index 15019c1..a0f1ca9 100644
--- a/package/busybox/config/loginutils/Config.in
+++ b/package/busybox/config/loginutils/Config.in
@@ -13,45 +13,71 @@ config BUSYBOX_CONFIG_FEATURE_SHADOWPASSWDS
readable by root and thus the encrypted passwords are no longer
publicly readable.
+config BUSYBOX_CONFIG_USE_BB_PWD_GRP
+ bool "Use internal password and group functions rather than system functions"
+ default n
+ help
+ If you leave this disabled, busybox will use the system's password
+ and group functions. And if you are using the GNU C library
+ (glibc), you will then need to install the /etc/nsswitch.conf
+ configuration file and the required /lib/libnss_* libraries in
+ order for the password and group functions to work. This generally
+ makes your embedded system quite a bit larger.
+
+ Enabling this option will cause busybox to directly access the
+ system's /etc/password, /etc/group files (and your system will be
+ smaller, and I will get fewer emails asking about how glibc NSS
+ works). When this option is enabled, you will not be able to use
+ PAM to access remote LDAP password servers and whatnot. And if you
+ want hostname resolution to work with glibc, you still need the
+ /lib/libnss_* libraries.
+
+ If you need to use glibc's nsswitch.conf mechanism
+ (e.g. if user/group database is NOT stored in /etc/passwd etc),
+ you must NOT use this option.
+
+ If you enable this option, it will add about 1.5k.
+
config BUSYBOX_CONFIG_USE_BB_SHADOW
- bool " Use busybox shadow password functions"
+ bool "Use internal shadow password functions"
default n
depends on BUSYBOX_CONFIG_USE_BB_PWD_GRP && BUSYBOX_CONFIG_FEATURE_SHADOWPASSWDS
help
- If you leave this disabled, busybox will use the system's shadow
- password handling functions. And if you are using the GNU C library
- (glibc), you will then need to install the /etc/nsswitch.conf
- configuration file and the required /lib/libnss_* libraries in
- order for the shadow password functions to work. This generally
- makes your embedded system quite a bit larger.
-
- Enabling this option will cause busybox to directly access the
- system's /etc/shadow file when handling shadow passwords. This
- makes your system smaller and I will get fewer emails asking about
- how glibc NSS works). When this option is enabled, you will not be
- able to use PAM to access shadow passwords from remote LDAP
- password servers and whatnot.
-
-config BUSYBOX_CONFIG_USE_BB_PWD_GRP
- bool "Use internal password and group functions rather than system functions"
+ If you leave this disabled, busybox will use the system's shadow
+ password handling functions. And if you are using the GNU C library
+ (glibc), you will then need to install the /etc/nsswitch.conf
+ configuration file and the required /lib/libnss_* libraries in
+ order for the shadow password functions to work. This generally
+ makes your embedded system quite a bit larger.
+
+ Enabling this option will cause busybox to directly access the
+ system's /etc/shadow file when handling shadow passwords. This
+ makes your system smaller (and I will get fewer emails asking about
+ how glibc NSS works). When this option is enabled, you will not be
+ able to use PAM to access shadow passwords from remote LDAP
+ password servers and whatnot.
+
+config BUSYBOX_CONFIG_USE_BB_CRYPT
+ bool "Use internal DES and MD5 crypt functions"
default n
help
- If you leave this disabled, busybox will use the system's password
- and group functions. And if you are using the GNU C library
- (glibc), you will then need to install the /etc/nsswitch.conf
- configuration file and the required /lib/libnss_* libraries in
- order for the password and group functions to work. This generally
- makes your embedded system quite a bit larger.
+ Busybox has internal DES and MD5 crypt functions.
+ They produce results which are identical to corresponding
+ standard C library functions.
- Enabling this option will cause busybox to directly access the
- system's /etc/password, /etc/group files (and your system will be
- smaller, and I will get fewer emails asking about how glibc NSS
- works). When this option is enabled, you will not be able to use
- PAM to access remote LDAP password servers and whatnot. And if you
- want hostname resolution to work with glibc, you still need the
- /lib/libnss_* libraries.
+ If you leave this disabled, busybox will use the system's
+ crypt functions. Most C libraries use large (~70k)
+ static buffers there, and also combine them with more general
+ DES encryption/decryption.
- If you enable this option, it will add about 1.5k to busybox.
+ For busybox, having large static buffers is undesirable,
+ especially on NOMMU machines. Busybox also doesn't need
+ DES encryption/decryption and can do with smaller code.
+
+ If you enable this option, it will add about 4.8k of code
+ if you are building dynamically linked executable.
+ In static build, it makes code _smaller_ by about 1.2k,
+ and likely many kilobytes less of bss.
config BUSYBOX_CONFIG_ADDGROUP
bool "addgroup"
@@ -82,12 +108,31 @@ config BUSYBOX_CONFIG_FEATURE_DEL_USER_FROM_GROUP
If called with two non-option arguments, deluser
or delgroup will remove an user from a specified group.
+config BUSYBOX_CONFIG_FEATURE_CHECK_NAMES
+ bool "Enable sanity check on user/group names in adduser and addgroup"
+ default n
+ depends on BUSYBOX_CONFIG_ADDUSER || BUSYBOX_CONFIG_ADDGROUP
+ help
+ Enable sanity check on user and group names in adduser and addgroup.
+ To avoid problems, the user or group name should consist only of
+ letters, digits, underscores, periods, at signs and dashes,
+ and not start with a dash (as defined by IEEE Std 1003.1-2001).
+ For compatibility with Samba machine accounts "$" is also supported
+ at the end of the user or group name.
+
config BUSYBOX_CONFIG_ADDUSER
bool "adduser"
default n
help
Utility for creating a new user account.
+config BUSYBOX_CONFIG_FEATURE_ADDUSER_LONG_OPTIONS
+ bool "Enable long options"
+ default n
+ depends on BUSYBOX_CONFIG_ADDUSER && BUSYBOX_CONFIG_GETOPT_LONG
+ help
+ Support long options for the adduser applet.
+
config BUSYBOX_CONFIG_DELUSER
bool "deluser"
default n
@@ -236,4 +281,3 @@ config BUSYBOX_CONFIG_VLOCK
work properly.
endmenu
-
diff --git a/package/busybox/config/miscutils/Config.in b/package/busybox/config/miscutils/Config.in
index d038f11..236d5d6 100644
--- a/package/busybox/config/miscutils/Config.in
+++ b/package/busybox/config/miscutils/Config.in
@@ -19,6 +19,73 @@ config BUSYBOX_CONFIG_BBCONFIG
The bbconfig applet will print the config file with which
busybox was built.
+config BUSYBOX_CONFIG_CHAT
+ bool "chat"
+ default n
+ help
+ Simple chat utility.
+
+config BUSYBOX_CONFIG_FEATURE_CHAT_NOFAIL
+ bool "Enable NOFAIL expect strings"
+ depends on BUSYBOX_CONFIG_CHAT
+ default n
+ help
+ When enabled expect strings which are started with a dash trigger
+ no-fail mode. That is when expectation is not met within timeout
+ the script is not terminated but sends next SEND string and waits
+ for next EXPECT string. This allows to compose far more flexible
+ scripts.
+
+config BUSYBOX_CONFIG_FEATURE_CHAT_TTY_HIFI
+ bool "Force STDIN to be a TTY"
+ depends on BUSYBOX_CONFIG_CHAT
+ default n
+ help
+ Original chat always treats STDIN as a TTY device and sets for it
+ so-called raw mode. This option turns on such behaviour.
+
+config BUSYBOX_CONFIG_FEATURE_CHAT_IMPLICIT_CR
+ bool "Enable implicit Carriage Return"
+ depends on BUSYBOX_CONFIG_CHAT
+ default n
+ help
+ When enabled make chat to terminate all SEND strings with a "\r"
+ unless "\c" is met anywhere in the string.
+
+config BUSYBOX_CONFIG_FEATURE_CHAT_SWALLOW_OPTS
+ bool "Swallow options"
+ depends on BUSYBOX_CONFIG_CHAT
+ default n
+ help
+ Busybox chat require no options. To make it not fail when used
+ in place of original chat (which has a bunch of options) turn
+ this on.
+
+config BUSYBOX_CONFIG_FEATURE_CHAT_SEND_ESCAPES
+ bool "Support weird SEND escapes"
+ depends on BUSYBOX_CONFIG_CHAT
+ default n
+ help
+ Original chat uses some escape sequences in SEND arguments which
+ are not sent to device but rather performs special actions.
+ E.g. "\K" means to send a break sequence to device.
+ "\d" delays execution for a second, "\p" -- for a 1/100 of second.
+ Before turning this option on think twice: do you really need them?
+
+config BUSYBOX_CONFIG_FEATURE_CHAT_VAR_ABORT_LEN
+ bool "Support variable-length ABORT conditions"
+ depends on BUSYBOX_CONFIG_CHAT
+ default n
+ help
+ Original chat uses fixed 50-bytes length ABORT conditions. Say N here.
+
+config BUSYBOX_CONFIG_FEATURE_CHAT_CLR_ABORT
+ bool "Support revoking of ABORT conditions"
+ depends on BUSYBOX_CONFIG_CHAT
+ default n
+ help
+ Support CLR_ABORT directive.
+
config BUSYBOX_CONFIG_CHRT
bool "chrt"
default n
@@ -39,15 +106,13 @@ config BUSYBOX_CONFIG_CROND
$ cat /var/spool/cron/crontabs/root
# Run daily cron jobs at 4:40 every day:
40 4 * * * /etc/cron/daily > /dev/null 2>&1
- 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"
+ bool "Support option -d to redirect output to stderr"
depends on BUSYBOX_CONFIG_CROND
default n
help
- Support option -d to enter debug mode.
+ -d sets loglevel to 0 (most verbose) and directs all output to stderr.
config BUSYBOX_CONFIG_FEATURE_CROND_CALL_SENDMAIL
bool "Using /usr/sbin/sendmail?"
@@ -63,6 +128,8 @@ config BUSYBOX_CONFIG_CRONTAB
help
Crontab manipulates the crontab for a particular user. Only
the superuser may specify a different user and/or crontab directory.
+ Note that Busybox binary must be setuid root for this applet to
+ work properly.
config BUSYBOX_CONFIG_DC
bool "dc"
@@ -111,7 +178,7 @@ config BUSYBOX_CONFIG_DEVFSD_VERBOSE
Increases logging to stderr or syslog.
config BUSYBOX_CONFIG_FEATURE_DEVFS
- bool " Use devfs names for all devices (obsolete)"
+ bool "Use devfs names for all devices (obsolete)"
default n
help
This is obsolete and will be going away at the end of 2008..
@@ -126,6 +193,41 @@ config BUSYBOX_CONFIG_EJECT
help
Used to eject cdroms. (defaults to /dev/cdrom)
+config BUSYBOX_CONFIG_FEATURE_EJECT_SCSI
+ bool "SCSI support"
+ default n
+ depends on BUSYBOX_CONFIG_EJECT
+ help
+ Add the -s option to eject, this allows to eject SCSI-Devices and
+ usb-storage devices.
+
+config BUSYBOX_CONFIG_FBSPLASH
+ bool "fbsplash"
+ default n
+ help
+ Shows splash image and progress bar on framebuffer device.
+ Can be used during boot phase of an embedded device. ~2kb.
+ Usage:
+ - use kernel option 'vga=xxx' or otherwise enable fb device.
+ - put somewhere fbsplash.cfg file and an image in .ppm format.
+ - $ setsid fbsplash [params] &
+ -c: hide cursor
+ -d /dev/fbN: framebuffer device (if not /dev/fb0)
+ -s path_to_image_file (can be "-" for stdin)
+ -i path_to_cfg_file (can be "-" for stdin)
+ -f path_to_fifo (can be "-" for stdin)
+ - if you want to run it only in presence of kernel parameter:
+ grep -q "fbsplash=on" </proc/cmdline && setsid fbsplash [params] &
+ - commands for fifo:
+ "NN" (ASCII decimal number) - percentage to show on progress bar
+ "exit" - well you guessed it
+
+config BUSYBOX_CONFIG_INOTIFYD
+ bool "inotifyd"
+ default n
+ help
+ Simple inotify daemon. Reports filesystem changes. Requires kernel >= 2.6.13
+
config BUSYBOX_CONFIG_LAST
bool "last"
default n
@@ -133,6 +235,24 @@ config BUSYBOX_CONFIG_LAST
help
'last' displays a list of the last users that logged into the system.
+choice
+ prompt "Choose last implementation"
+ depends on BUSYBOX_CONFIG_LAST
+ default BUSYBOX_CONFIG_FEATURE_LAST_SMALL
+
+config BUSYBOX_CONFIG_FEATURE_LAST_SMALL
+ bool "small"
+ help
+ This is a small version of last with just the basic set of
+ features.
+
+config BUSYBOX_CONFIG_FEATURE_LAST_FANCY
+ bool "huge"
+ help
+ 'last' displays detailed information about the last users that
+ logged into the system (mimics sysvinit last). +900 bytes.
+endchoice
+
config BUSYBOX_CONFIG_LESS
bool "less"
default y
@@ -282,6 +402,12 @@ config BUSYBOX_CONFIG_FEATURE_MAKEDEVS_TABLE
endchoice
+config BUSYBOX_CONFIG_MAN
+ bool "man"
+ default n
+ help
+ Format and display manual pages.
+
config BUSYBOX_CONFIG_MICROCOM
bool "microcom"
default n
@@ -320,7 +446,7 @@ config BUSYBOX_CONFIG_READAHEAD
This applet just calls the readahead(2) system call on each file.
It is mainly useful in system startup scripts to preload files
or executables before they are used. When used at the right time
- (in particular when a CPU boundprocess is running) it can
+ (in particular when a CPU bound process is running) it can
significantly speed up system startup.
As readahead(2) blocks until each file has been read, it is best to
@@ -341,6 +467,12 @@ config BUSYBOX_CONFIG_RX
help
Receive files using the Xmodem protocol.
+config BUSYBOX_CONFIG_SETSID
+ bool "setsid"
+ default n
+ help
+ setsid runs a program in a new session
+
config BUSYBOX_CONFIG_STRINGS
bool "strings"
default y
@@ -348,12 +480,6 @@ config BUSYBOX_CONFIG_STRINGS
strings prints the printable character sequences for each file
specified.
-config BUSYBOX_CONFIG_SETSID
- bool "setsid"
- default n
- help
- setsid runs a program in a new session
-
config BUSYBOX_CONFIG_TASKSET
bool "taskset"
default n
@@ -362,7 +488,7 @@ config BUSYBOX_CONFIG_TASKSET
This requires sched_{g,s}etaffinity support in your libc.
config BUSYBOX_CONFIG_FEATURE_TASKSET_FANCY
- bool "fancy output"
+ bool "Fancy output"
default n
depends on BUSYBOX_CONFIG_TASKSET
help
@@ -398,4 +524,3 @@ config BUSYBOX_CONFIG_WATCHDOG
hung, and will cause the hardware to reboot.
endmenu
-
diff --git a/package/busybox/config/modutils/Config.in b/package/busybox/config/modutils/Config.in
index 7ffca93..63a3f71 100644
--- a/package/busybox/config/modutils/Config.in
+++ b/package/busybox/config/modutils/Config.in
@@ -5,6 +5,36 @@
menu "Linux Module Utilities"
+config BUSYBOX_CONFIG_DEPMOD
+ bool "depmod"
+ default n
+ help
+ depmod generates modules.dep (FIXME: elaborate)
+
+config BUSYBOX_CONFIG_FEATURE_DEPMOD_PRUNE_FANCY
+ bool "fancy dependency pruning"
+ default n
+ depends on BUSYBOX_CONFIG_DEPMOD
+ help
+ By default modules.dep contains all dependencies as listed by
+ the modules.
+ If you enable this option then we remove implied modules from
+ the dependencies.
+ This makes depmod somewhat bigger but generates a smaller
+ modules.dep file.
+
+ If unsure, say N.
+
+config BUSYBOX_CONFIG_FEATURE_DEPMOD_ALIAS
+ bool "alias support"
+ default n
+ depends on BUSYBOX_CONFIG_DEPMOD
+ help
+ By default modules.dep does not contain alias information.
+ Enable this to emit aliases of the form:
+
+ alias pcmcia:m*c*f03fn*pfn*pa*pb*pc*pd* parport_cs
+
config BUSYBOX_CONFIG_INSMOD
bool "insmod"
default y
@@ -73,7 +103,7 @@ config BUSYBOX_CONFIG_LSMOD
lsmod is used to display a list of loaded modules.
config BUSYBOX_CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT
- bool "lsmod pretty output for 2.6.x Linux kernels "
+ bool "Pretty output for 2.6.x Linux kernels"
default y
depends on BUSYBOX_CONFIG_LSMOD
help
@@ -92,7 +122,7 @@ config BUSYBOX_CONFIG_MODPROBE
config BUSYBOX_CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS
bool
- prompt "Multiple options parsing" if BUSYBOX_CONFIG_NITPICK
+ prompt "Multiple options parsing"
default n
depends on BUSYBOX_CONFIG_MODPROBE
help
@@ -109,7 +139,7 @@ config BUSYBOX_CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS
config BUSYBOX_CONFIG_FEATURE_MODPROBE_FANCY_ALIAS
bool
- prompt "Fancy alias parsing" if BUSYBOX_CONFIG_NITPICK
+ prompt "Fancy alias parsing"
default n
depends on BUSYBOX_CONFIG_MODPROBE && BUSYBOX_CONFIG_FEATURE_2_6_MODULES
help
@@ -117,8 +147,20 @@ config BUSYBOX_CONFIG_FEATURE_MODPROBE_FANCY_ALIAS
mismatch between module name and file name, along with bus-specific
aliases (such as pci:... or usb:... aliases).
+config BUSYBOX_CONFIG_FEATURE_MODPROBE_BLACKLIST
+ bool
+ prompt "Blacklist support"
+ default n
+ depends on BUSYBOX_CONFIG_MODPROBE && BUSYBOX_CONFIG_FEATURE_2_6_MODULES
+ help
+ Say 'y' here to enable support for the 'blacklist' command in
+ modprobe.conf. This prevents the alias resolver to resolve
+ blacklisted modules. This is useful if you want to prevent your
+ hardware autodetection scripts to load modules like evdev, frame
+ buffer drivers etc.
+
comment "Options common to multiple modutils"
- depends on BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_RMMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_LSMOD
+ depends on BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_RMMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_LSMOD || BUSYBOX_CONFIG_DEPMOD
config BUSYBOX_CONFIG_FEATURE_CHECK_TAINTED_MODULE
# Simulate indentation
@@ -139,6 +181,9 @@ config BUSYBOX_CONFIG_FEATURE_2_4_MODULES
help
Support module loading for 2.2.x and 2.4.x Linux kernels.
+ Note:
+ This is automatically enabled if 2.6 modules are not enabled.
+
config BUSYBOX_CONFIG_FEATURE_2_6_MODULES
# Simulate indentation
bool "Support version 2.6.x Linux kernels"
@@ -147,12 +192,27 @@ config BUSYBOX_CONFIG_FEATURE_2_6_MODULES
help
Support module loading for newer 2.6.x Linux kernels.
+config BUSYBOX_CONFIG_DEFAULT_MODULES_DIR
+ # Simulate indentation
+ string "Default directory containing modules"
+ default "/lib/modules"
+ depends on BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_RMMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_DEPMOD
+ help
+ Directory that contains kernel modules.
+ Defaults to "/lib/modules"
+
+config BUSYBOX_CONFIG_DEFAULT_DEPMOD_FILE
+ # Simulate indentation
+ string "Default name of modules.dep"
+ default "modules.dep"
+ depends on BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_RMMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_DEPMOD
+ help
+ Filename that contains kernel modules dependencies.
+ Defaults to "modules.dep"
config BUSYBOX_CONFIG_FEATURE_QUERY_MODULE_INTERFACE
bool
default n
depends on BUSYBOX_CONFIG_FEATURE_2_4_MODULES && !BUSYBOX_CONFIG_FEATURE_2_6_MODULES
-
endmenu
-
diff --git a/package/busybox/config/networking/Config.in b/package/busybox/config/networking/Config.in
index 0dbe42d..3da608d 100644
--- a/package/busybox/config/networking/Config.in
+++ b/package/busybox/config/networking/Config.in
@@ -12,6 +12,21 @@ config BUSYBOX_CONFIG_FEATURE_IPV6
Enable IPv6 support in busybox.
This adds IPv6 support in the networking applets.
+config BUSYBOX_CONFIG_FEATURE_PREFER_IPV4_ADDRESS
+ bool "Preferentially use IPv4 addresses from DNS queries"
+ default y
+ depends on BUSYBOX_CONFIG_FEATURE_IPV6
+ help
+ Use IPv4 address of network host if it has one.
+
+ If this option is off, the first returned address will be used.
+ This may cause problems when your DNS server is IPv6-capable and
+ is returning IPv6 host addresses too. If IPv6 address
+ precedes IPv4 one in DNS reply, busybox network applets
+ (e.g. wget) will use IPv6 address. On an IPv6-incapable host
+ or network applets will fail to connect to the host
+ using IPv6 address.
+
config BUSYBOX_CONFIG_VERBOSE_RESOLUTION_ERRORS
bool "Verbose resolution errors"
default y
@@ -32,6 +47,32 @@ config BUSYBOX_CONFIG_ARPING
help
Ping hosts by ARP packets.
+config BUSYBOX_CONFIG_BRCTL
+ bool "brctl"
+ default n
+ help
+ Manage ethernet bridges.
+ Supports addbr/delbr and addif/delif.
+
+config BUSYBOX_CONFIG_FEATURE_BRCTL_FANCY
+ bool "Fancy options"
+ default n
+ depends on BUSYBOX_CONFIG_BRCTL
+ help
+ Add support for extended option like:
+ setageing, setfd, sethello, setmaxage,
+ setpathcost, setportprio, setbridgeprio,
+ stp
+ This adds about 600 bytes.
+
+config BUSYBOX_CONFIG_FEATURE_BRCTL_SHOW
+ bool "Support show, showmac and showstp"
+ default n
+ depends on BUSYBOX_CONFIG_BRCTL && BUSYBOX_CONFIG_FEATURE_BRCTL_FANCY
+ help
+ Add support for option which prints the current config:
+ showmacs, showstp, show
+
config BUSYBOX_CONFIG_DNSD
bool "dnsd"
default n
@@ -101,7 +142,7 @@ config BUSYBOX_CONFIG_FEATURE_HTTPD_USE_SENDFILE
instead of read/write loop.
config BUSYBOX_CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP
- bool "Support reloading the global config file using hup signal"
+ bool "Support reloading of global config file on HUP signal"
default y
depends on BUSYBOX_CONFIG_HTTPD
help
@@ -151,7 +192,7 @@ config BUSYBOX_CONFIG_FEATURE_HTTPD_CGI
when specific URLs are requested.
config BUSYBOX_CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR
- bool "Enable support for running scripts through an interpreter"
+ bool "Support for running scripts through an interpreter"
default y
depends on BUSYBOX_CONFIG_FEATURE_HTTPD_CGI
help
@@ -162,7 +203,7 @@ config BUSYBOX_CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR
*.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 "Set REMOTE_PORT environment variable for CGI"
default y
depends on BUSYBOX_CONFIG_FEATURE_HTTPD_CGI
help
@@ -170,17 +211,17 @@ 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 -e option (useful for CGIs written as shell scripts)"
default y
depends on BUSYBOX_CONFIG_HTTPD
help
- This option allows html encoding arbitrary
- strings for display of the browser. Output goes to stdout.
- For example, httpd -e "<Hello World>" as
+ This option allows html encoding of arbitrary strings for display
+ by the browser. Output goes to stdout.
+ For example, httpd -e "<Hello World>" produces
"&#60Hello&#32World&#62".
config BUSYBOX_CONFIG_FEATURE_HTTPD_ERROR_PAGES
- bool "Enable support for custom error pages"
+ bool "Support for custom error pages"
default y
depends on BUSYBOX_CONFIG_HTTPD
help
@@ -193,7 +234,7 @@ config BUSYBOX_CONFIG_FEATURE_HTTPD_ERROR_PAGES
message.
config BUSYBOX_CONFIG_FEATURE_HTTPD_PROXY
- bool "Enable support for reverse proxy"
+ bool "Support for reverse proxy"
default n
depends on BUSYBOX_CONFIG_HTTPD
help
@@ -251,6 +292,13 @@ config BUSYBOX_CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS
Setting this will make ifconfig attempt to find the broadcast
automatically if the value '+' is used.
+config BUSYBOX_CONFIG_IFENSLAVE
+ bool "ifenslave"
+ default n
+ help
+ Userspace application to bind several interfaces
+ to a logical interface (use with kernel bonding driver).
+
config BUSYBOX_CONFIG_IFUPDOWN
bool "ifupdown"
default n
@@ -315,14 +363,14 @@ config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN
work.
config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IPV4
- bool "Enable support for IPv4"
+ bool "Support for IPv4"
default n
depends on BUSYBOX_CONFIG_IFUPDOWN
help
If you want ifup/ifdown to talk IPv4, leave this on.
config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IPV6
- bool "Enable support for IPv6"
+ bool "Support for IPv6"
default n
depends on BUSYBOX_CONFIG_IFUPDOWN && BUSYBOX_CONFIG_FEATURE_IPV6
help
@@ -330,7 +378,7 @@ config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IPV6
### UNUSED
###config FEATURE_IFUPDOWN_IPX
-### bool "Enable support for IPX"
+### bool "Support for IPX"
### default n
### depends on IFUPDOWN
### help
@@ -346,7 +394,7 @@ config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_MAPPING
a weird network setup you don't need it.
config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP
- bool "Enable support for external dhcp clients"
+ bool "Support for external dhcp clients"
default n
depends on BUSYBOX_CONFIG_IFUPDOWN
help
@@ -449,7 +497,7 @@ config BUSYBOX_CONFIG_FEATURE_IP_RULE
Add support for rule commands to "ip".
config BUSYBOX_CONFIG_FEATURE_IP_SHORT_FORMS
- bool "Support short forms of ip commands."
+ bool "Support short forms of ip commands"
default n
depends on BUSYBOX_CONFIG_IP
help
@@ -528,19 +576,32 @@ config BUSYBOX_CONFIG_NAMEIF
Renamed interfaces MUST be in the down state.
It is possible to use a file (default: /etc/mactab)
with list of new interface names and MACs.
- Maximum interface name length: IF_NAMESIZE = 16
+ Maximum interface name length: IFNAMSIZ = 16
File fields are separated by space or tab.
File format:
# Comment
new_interface_name XX:XX:XX:XX:XX:XX
+config BUSYBOX_CONFIG_FEATURE_NAMEIF_EXTENDED
+ bool "Extended nameif"
+ default n
+ depends on BUSYBOX_CONFIG_NAMEIF
+ help
+ This extends the nameif syntax to support the bus_info and driver
+ checks. The syntax is compatible to the normal nameif.
+ File format:
+ new_interface_name driver=asix bus=usb-0000:00:08.2-3
+ new_interface_name bus=usb-0000:00:08.2-3 00:80:C8:38:91:B5
+ new_interface_name mac=00:80:C8:38:91:B5
+ new_interface_name 00:80:C8:38:91:B5
+
config BUSYBOX_CONFIG_NC
bool "nc"
default y
help
A simple Unix utility which reads and writes data across network
connections.
-
+
config BUSYBOX_CONFIG_NETMSG
bool "netmsg"
default y
@@ -570,7 +631,7 @@ config BUSYBOX_CONFIG_NETSTAT
netstat prints information about the Linux networking subsystem.
config BUSYBOX_CONFIG_FEATURE_NETSTAT_WIDE
- bool " Enable wide netstat output"
+ bool "Enable wide netstat output"
default y
depends on BUSYBOX_CONFIG_NETSTAT
help
@@ -597,12 +658,6 @@ config BUSYBOX_CONFIG_PING6
help
This will give you a ping that can talk IPv6.
-config BUSYBOX_CONFIG_PSCAN
- bool "pscan"
- default n
- help
- Simple network port scanner.
-
config BUSYBOX_CONFIG_FEATURE_FANCY_PING
bool "Enable fancy ping output"
default y
@@ -611,12 +666,30 @@ config BUSYBOX_CONFIG_FEATURE_FANCY_PING
Make the output from the ping applet include statistics, and at the
same time provide full support for ICMP packets.
+config BUSYBOX_CONFIG_PSCAN
+ bool "pscan"
+ default n
+ help
+ Simple network port scanner.
+
config BUSYBOX_CONFIG_ROUTE
bool "route"
default y
help
Route displays or manipulates the kernel's IP routing tables.
+config BUSYBOX_CONFIG_SENDMAIL
+ bool "sendmail"
+ default n
+ help
+ Barebones sendmail.
+
+config BUSYBOX_CONFIG_FETCHMAIL
+ bool "fetchmail"
+ default n
+ help
+ Barebones fetchmail.
+
config BUSYBOX_CONFIG_SLATTACH
bool "slattach"
default n
@@ -707,28 +780,41 @@ config BUSYBOX_CONFIG_TFTP
is usually used for simple, small transfers such as a root image
for a network-enabled bootloader.
+config BUSYBOX_CONFIG_TFTPD
+ bool "tftpd"
+ default n
+ help
+ This enables the Trivial File Transfer Protocol server program.
+ It expects that stdin is a datagram socket and a packet
+ is already pending on it. It will exit after one transfer.
+ In other words: it should be run from inetd in nowait mode,
+ or from udpsvd. Example: "udpsvd -E 0 69 tftpd DIR"
+
config BUSYBOX_CONFIG_FEATURE_TFTP_GET
bool "Enable \"get\" command"
default n
- depends on BUSYBOX_CONFIG_TFTP
+ depends on BUSYBOX_CONFIG_TFTP || BUSYBOX_CONFIG_TFTPD
help
Add support for the GET command within the TFTP client. This allows
a client to retrieve a file from a TFTP server.
+ Also enable upload support in tftpd, if tftpd is selected.
config BUSYBOX_CONFIG_FEATURE_TFTP_PUT
bool "Enable \"put\" command"
default n
- depends on BUSYBOX_CONFIG_TFTP
+ depends on BUSYBOX_CONFIG_TFTP || BUSYBOX_CONFIG_TFTPD
help
Add support for the PUT command within the TFTP client. This allows
a client to transfer a file to a TFTP server.
+ Also enable download support in tftpd, if tftpd is selected.
config BUSYBOX_CONFIG_FEATURE_TFTP_BLOCKSIZE
- bool "Enable \"blocksize\" command"
+ bool "Enable \"blksize\" protocol option"
default n
- depends on BUSYBOX_CONFIG_TFTP
+ depends on BUSYBOX_CONFIG_TFTP || BUSYBOX_CONFIG_TFTPD
help
- Allow the client to specify the desired block size for transfers.
+ Allow tftp to specify block size, and tftpd to understand
+ "blksize" option.
config BUSYBOX_CONFIG_DEBUG_TFTP
bool "Enable debug"
@@ -816,4 +902,16 @@ config BUSYBOX_CONFIG_ZCIP
See http://www.zeroconf.org for further details, and "zcip.script"
in the busybox examples.
+config BUSYBOX_CONFIG_TCPSVD
+ bool "tcpsvd"
+ default n
+ help
+ tcpsvd listens on a TCP port and runs a program for each new connection
+
+config BUSYBOX_CONFIG_UDPSVD
+ bool "udpsvd"
+ default n
+ help
+ udpsvd listens on an UDP port and runs a program for each new connection
+
endmenu
diff --git a/package/busybox/config/networking/udhcp/Config.in b/package/busybox/config/networking/udhcp/Config.in
index 65462ef..891dcf8 100644
--- a/package/busybox/config/networking/udhcp/Config.in
+++ b/package/busybox/config/networking/udhcp/Config.in
@@ -4,14 +4,12 @@
#
config BUSYBOX_CONFIG_APP_UDHCPD
- bool "udhcp Server (udhcpd)"
+ bool "udhcp server (udhcpd)"
default n
help
- uDHCPd is a DHCP server geared primarily toward embedded systems,
+ udhcpd is a DHCP server geared primarily toward embedded systems,
while striving to be fully functional and RFC compliant.
- See http://udhcp.busybox.net for further details.
-
config BUSYBOX_CONFIG_APP_DHCPRELAY
bool "dhcprelay"
default n
@@ -30,40 +28,58 @@ config BUSYBOX_CONFIG_APP_DUMPLEASES
Lease times are stored in the file by time remaining in lease, or
by the absolute time that it expires in seconds from epoch.
- See http://udhcp.busybox.net for further details.
-
config BUSYBOX_CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY
bool "Rewrite the lease file at every new acknowledge"
default n
depends on BUSYBOX_CONFIG_APP_UDHCPD
help
If selected, udhcpd will write a new file with leases every
- time a new lease has been accepted, thus eleminating the need
- to send SIGUSR1 for the initial writing, or updating. Any timed
+ time a new lease has been accepted, thus eliminating the need
+ to send SIGUSR1 for the initial writing or updating. Any timed
rewriting remains undisturbed
+config BUSYBOX_CONFIG_DHCPD_LEASES_FILE
+ string "Absolute path to lease file"
+ default "/var/run/udhcpd.leases"
+ depends on BUSYBOX_CONFIG_APP_UDHCPD
+ help
+ udhcpd stores addresses in a lease file. This is the absolute path
+ of the file. Normally it is safe to leave it untouched.
+
config BUSYBOX_CONFIG_APP_UDHCPC
- bool "udhcp Client (udhcpc)"
+ bool "udhcp client (udhcpc)"
default y
help
- uDHCPc is a DHCP client geared primarily toward embedded systems,
+ udhcpc is a DHCP client geared primarily toward embedded systems,
while striving to be fully functional and RFC compliant.
The udhcp client negotiates a lease with the DHCP server and
- notifies a set of scripts when a lease is obtained or lost.
+ runs a script when a lease is obtained or lost.
- See http://udhcp.busybox.net for further details.
+config BUSYBOX_CONFIG_FEATURE_UDHCPC_ARPING
+ bool "Verify that the offered address is free, using ARP ping"
+ default n
+ depends on BUSYBOX_CONFIG_APP_UDHCPC
+ help
+ If selected, udhcpc will send ARP probes and make sure
+ the offered address is really not in use by anyone. The client
+ will DHCPDECLINE the offer if the address is in use,
+ and restart the discover process.
+
+config BUSYBOX_CONFIG_FEATURE_UDHCP_PORT
+ bool "Enable '-P port' option for udhcpd and udhcpc"
+ default n
+ depends on BUSYBOX_CONFIG_APP_UDHCPD || BUSYBOX_CONFIG_APP_UDHCPC
+ help
+ At the cost of ~300 bytes, enables -P port option.
+ This feature is typically not needed.
config BUSYBOX_CONFIG_FEATURE_UDHCP_DEBUG
bool "Compile udhcp with noisy debugging messages"
default n
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
- the background.
-
- See http://udhcp.busybox.net for further details.
+ If selected, udhcpd will output extra debugging output.
config BUSYBOX_CONFIG_FEATURE_RFC3397
bool "Support for RFC3397 domain search (experimental)"
@@ -72,3 +88,35 @@ config BUSYBOX_CONFIG_FEATURE_RFC3397
help
If selected, both client and server will support passing of domain
search lists via option 119, specified in RFC3397.
+
+config BUSYBOX_CONFIG_DHCPC_DEFAULT_SCRIPT
+ string "Absolute path to config script"
+ default "/usr/share/udhcpc/default.script"
+ depends on BUSYBOX_CONFIG_APP_UDHCPC
+ help
+ This script is called after udhcpc receives an answer. See
+ examples/udhcp for a working example. Normally it is safe
+ to leave this untouched.
+
+config BUSYBOX_CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS
+ int "DHCP options slack buffer size"
+ default 80
+ range 0 924
+ depends on BUSYBOX_CONFIG_APP_UDHCPD || BUSYBOX_CONFIG_APP_UDHCPC
+ help
+ Some buggy DHCP servers send DHCP offer packets with option
+ field larger than we expect (which might also be considered a
+ buffer overflow attempt). These packets are normally discarded.
+ If circumstances beyond your control force you to support such
+ servers, this may help. The upper limit (924) makes dhcpc accept
+ even 1500 byte packets (maximum-sized ethernet packets).
+
+ This option does not make dhcp[cd] emit non-standard
+ sized packets.
+
+ Known buggy DHCP servers:
+ 3Com OfficeConnect Remote 812 ADSL Router:
+ seems to confuse maximum allowed UDP packet size with
+ maximum size of entire IP packet, and sends packets which are
+ 28 bytes too large.
+ Seednet (ISP) VDSL: sends packets 2 bytes too large.
diff --git a/package/busybox/config/printutils/Config.in b/package/busybox/config/printutils/Config.in
new file mode 100644
index 0000000..62fb448
--- /dev/null
+++ b/package/busybox/config/printutils/Config.in
@@ -0,0 +1,21 @@
+menu "Print Utilities"
+
+config BUSYBOX_CONFIG_LPD
+ bool "lpd"
+ default n
+ help
+ lpd is a print spooling daemon.
+
+config BUSYBOX_CONFIG_LPR
+ bool "lpr"
+ default n
+ help
+ lpr sends files (or standard input) to a print spooling daemon.
+
+config BUSYBOX_CONFIG_LPQ
+ bool "lpq"
+ default n
+ help
+ lpq is a print spool queue examination and manipulation program.
+
+endmenu
diff --git a/package/busybox/config/procps/Config.in b/package/busybox/config/procps/Config.in
index 59018cb..f650f52 100644
--- a/package/busybox/config/procps/Config.in
+++ b/package/busybox/config/procps/Config.in
@@ -99,6 +99,21 @@ config BUSYBOX_CONFIG_FEATURE_PS_WIDE
If given once, 132 chars are printed and given more than
one, the length is unlimited.
+config BUSYBOX_CONFIG_FEATURE_PS_TIME
+ bool "Enable time and elapsed time output"
+ default n
+ depends on BUSYBOX_CONFIG_PS && BUSYBOX_CONFIG_DESKTOP
+ help
+ Support -o time and -o etime output specifiers.
+
+config BUSYBOX_CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS
+ bool "Support Linux prior to 2.4.0 and non-ELF systems"
+ default n
+ depends on BUSYBOX_CONFIG_FEATURE_PS_TIME
+ help
+ Include support for measuring HZ on old kernels and non-ELF systems
+ (if you are on Linux 2.4.0+ and use ELF, you don't need this)
+
config BUSYBOX_CONFIG_RENICE
bool "renice"
default n
diff --git a/package/busybox/config/selinux/Config.in b/package/busybox/config/selinux/Config.in
index d3a8acf..cc8966c 100644
--- a/package/busybox/config/selinux/Config.in
+++ b/package/busybox/config/selinux/Config.in
@@ -112,5 +112,12 @@ config BUSYBOX_CONFIG_SETSEBOOL
Enable support for change boolean.
semanage and -P option is not supported yet.
+config BUSYBOX_CONFIG_SESTATUS
+ bool "sestatus"
+ default n
+ depends on BUSYBOX_CONFIG_SELINUX
+ help
+ Displays the status of SELinux.
+
endmenu
diff --git a/package/busybox/config/shell/Config.in b/package/busybox/config/shell/Config.in
index d2b1056..141a1d3 100644
--- a/package/busybox/config/shell/Config.in
+++ b/package/busybox/config/shell/Config.in
@@ -20,9 +20,9 @@ config BUSYBOX_CONFIG_FEATURE_SH_IS_HUSH
select BUSYBOX_CONFIG_HUSH
bool "hush"
-config BUSYBOX_CONFIG_FEATURE_SH_IS_LASH
- select BUSYBOX_CONFIG_LASH
- bool "lash"
+####config FEATURE_SH_IS_LASH
+#### select LASH
+#### bool "lash"
config BUSYBOX_CONFIG_FEATURE_SH_IS_MSH
select BUSYBOX_CONFIG_MSH
@@ -36,7 +36,6 @@ endchoice
config BUSYBOX_CONFIG_ASH
bool "ash"
default y
- select BUSYBOX_CONFIG_TEST
help
Tha 'ash' shell adds about 60k in the default configuration and is
the most complete and most pedantically correct shell included with
@@ -47,6 +46,13 @@ config BUSYBOX_CONFIG_ASH
comment "Ash Shell Options"
depends on BUSYBOX_CONFIG_ASH
+config BUSYBOX_CONFIG_ASH_BASH_COMPAT
+ bool "bash-compatible extensions"
+ default y
+ depends on BUSYBOX_CONFIG_ASH
+ help
+ Enable bash-conpatible extensions.
+
config BUSYBOX_CONFIG_ASH_JOB_CONTROL
bool "Job control"
default y
@@ -104,15 +110,20 @@ config BUSYBOX_CONFIG_ASH_GETOPTS
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 echo, builtin to ash.
+config BUSYBOX_CONFIG_ASH_BUILTIN_PRINTF
+ bool "Builtin version of 'printf'"
+ default y
+ depends on BUSYBOX_CONFIG_ASH
+ help
+ Enable support for printf, builtin to ash.
+
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 test, builtin to ash.
@@ -163,9 +174,6 @@ config BUSYBOX_CONFIG_ASH_EXPAND_PRMT
config BUSYBOX_CONFIG_HUSH
bool "hush"
default n
- select BUSYBOX_CONFIG_TRUE
- select BUSYBOX_CONFIG_FALSE
- select BUSYBOX_CONFIG_TEST
help
hush is a very small shell (just 18k) and it has fairly complete
Bourne shell grammar. It even handles all the normal flow control
@@ -228,24 +236,13 @@ config BUSYBOX_CONFIG_HUSH_LOOPS
config BUSYBOX_CONFIG_LASH
bool "lash"
default n
- select BUSYBOX_CONFIG_TRUE
- select BUSYBOX_CONFIG_FALSE
- select BUSYBOX_CONFIG_TEST
+ select BUSYBOX_CONFIG_HUSH
help
- lash is the very smallest shell (adds just 10k) and it is quite
- usable as a command prompt, but it is not suitable for any but the
- most trivial scripting (such as an initrd that calls insmod a few
- times) since it does not understand any Bourne shell grammar. It
- does handle pipes, redirects, and job control though. Adding in
- command editing makes it a very nice lightweight command prompt.
-
+ lash is deprecated and will be removed, please migrate to hush.
config BUSYBOX_CONFIG_MSH
bool "msh"
default n
- select BUSYBOX_CONFIG_TRUE
- select BUSYBOX_CONFIG_FALSE
- select BUSYBOX_CONFIG_TEST
help
The minix shell (adds just 30k) is quite complete and handles things
like for/do/done, case/esac and all the things you expect a Bourne
@@ -297,6 +294,23 @@ config BUSYBOX_CONFIG_FEATURE_SH_STANDALONE
# that exact location with that exact name, this option will not work at
# all.
+config BUSYBOX_CONFIG_FEATURE_SH_NOFORK
+ bool "Run 'nofork' applets directly"
+ default n
+ depends on (BUSYBOX_CONFIG_MSH || BUSYBOX_CONFIG_LASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH) && BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS
+ help
+ This option causes busybox shells [currently only ash]
+ to not execute typical fork/exec/wait sequence, but call <applet>_main
+ directly, if possible. (Sometimes it is not possible: for example,
+ this is not possible in pipes).
+
+ This will be done only for some applets (those which are marked
+ NOFORK in include/applets.h).
+
+ This may significantly speed up some shell scripts.
+
+ This feature is relatively new. Use with care.
+
config BUSYBOX_CONFIG_CTTYHACK
bool "cttyhack"
default n
diff --git a/package/busybox/config/sysklogd/Config.in b/package/busybox/config/sysklogd/Config.in
index 9eebd77..c4ce8e6 100644
--- a/package/busybox/config/sysklogd/Config.in
+++ b/package/busybox/config/sysklogd/Config.in
@@ -42,6 +42,14 @@ config BUSYBOX_CONFIG_FEATURE_REMOTE_LOG
measure to prevent system logs from being tampered with
by an intruder.
+config BUSYBOX_CONFIG_FEATURE_SYSLOGD_DUP
+ bool "Support -D (drop dups) option"
+ default n
+ depends on BUSYBOX_CONFIG_SYSLOGD
+ help
+ Option -D instructs syslogd to drop consecutive messages
+ which are totally the same.
+
config BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG
bool "Circular Buffer support"
default y
@@ -57,7 +65,7 @@ config BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG
break badly.
config BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE
- int " Circular buffer size in Kbytes (minimum 4KB)"
+ int "Circular buffer size in Kbytes (minimum 4KB)"
default 16
range 4 2147483647
depends on BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG
@@ -76,7 +84,7 @@ config BUSYBOX_CONFIG_LOGREAD
stored in the syslogd circular buffer.
config BUSYBOX_CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING
- bool "logread double buffering"
+ bool "Double buffering"
default n
depends on BUSYBOX_CONFIG_LOGREAD
help
diff --git a/package/busybox/config/util-linux/Config.in b/package/busybox/config/util-linux/Config.in
index a7e4467..5c5af20 100644
--- a/package/busybox/config/util-linux/Config.in
+++ b/package/busybox/config/util-linux/Config.in
@@ -18,7 +18,7 @@ config BUSYBOX_CONFIG_DMESG
wish to enable the 'dmesg' utility.
config BUSYBOX_CONFIG_FEATURE_DMESG_PRETTY
- bool "pretty dmesg output"
+ bool "Pretty dmesg output"
default y
depends on BUSYBOX_CONFIG_DMESG
help
@@ -93,7 +93,7 @@ config BUSYBOX_CONFIG_FDISK
'disk slices' that are defined on a hard drive.
config BUSYBOX_CONFIG_FDISK_SUPPORT_LARGE_DISKS
- bool "support over 4GB disks"
+ bool "Support over 4GB disks"
default y
depends on BUSYBOX_CONFIG_FDISK
help
@@ -150,6 +150,17 @@ config BUSYBOX_CONFIG_FEATURE_FDISK_ADVANCED
partition, and similarly evil things. Unless you have a very good
reason you would be wise to leave this disabled.
+config BUSYBOX_CONFIG_FINDFS
+ bool "findfs"
+ default n
+ select BUSYBOX_CONFIG_VOLUMEID
+ help
+ This is similar to the findfs program that is part of the e2fsprogs
+ package. However, the e2fsprogs version only support ext2/3. This
+ version supports those in addition to FAT, swap, and ReiserFS.
+ WARNING:
+ With all submodules selected, it will add ~8k to busybox.
+
config BUSYBOX_CONFIG_FREERAMDISK
bool "freeramdisk"
default n
@@ -210,6 +221,23 @@ config BUSYBOX_CONFIG_HEXDUMP
The hexdump utility is used to display binary data in a readable
way that is comparable to the output from most hex editors.
+config BUSYBOX_CONFIG_FEATURE_HEXDUMP_REVERSE
+ bool "Support -R, reverse of 'hexdump -Cv'"
+ default n
+ depends on BUSYBOX_CONFIG_HEXDUMP
+ help
+ The hexdump utility is used to display binary data in an ascii
+ readable way. This option creates binary data from an ascii input.
+ NB: this option is non-standard. It's unwise to use it in scripts
+ aimed to be portable.
+
+config BUSYBOX_CONFIG_HD
+ bool "hd"
+ default n
+ select BUSYBOX_CONFIG_HEXDUMP
+ help
+ hd is an alias to hexdump -C.
+
config BUSYBOX_CONFIG_HWCLOCK
bool "hwclock"
default y
@@ -284,6 +312,22 @@ config BUSYBOX_CONFIG_FEATURE_MDEV_CONF
For more information, please see docs/mdev.txt
+config BUSYBOX_CONFIG_FEATURE_MDEV_RENAME
+ bool "Support subdirs/symlinks"
+ default n
+ depends on BUSYBOX_CONFIG_FEATURE_MDEV_CONF
+ help
+ Add support for renaming devices and creating symlinks.
+
+ For more information, please see docs/mdev.txt
+
+config BUSYBOX_CONFIG_FEATURE_MDEV_RENAME_REGEXP
+ bool "Support regular expressions substitutions when renaming device"
+ default n
+ depends on BUSYBOX_CONFIG_FEATURE_MDEV_RENAME
+ help
+ Add support for regular expressions substitutions when renaming device.
+
config BUSYBOX_CONFIG_FEATURE_MDEV_EXEC
bool "Support command execution at device addition/removal"
default n
@@ -319,7 +363,7 @@ config BUSYBOX_CONFIG_MKSWAP
the swap space using the 'swapon' utility.
config BUSYBOX_CONFIG_FEATURE_MKSWAP_V0
- bool "version 0 support"
+ bool "Version 0 support"
default n
depends on BUSYBOX_CONFIG_MKSWAP
# depends on MKSWAP && BUSYBOX_CONFIG_DEPRECATED
@@ -341,7 +385,7 @@ config BUSYBOX_CONFIG_MORE
config BUSYBOX_CONFIG_FEATURE_USE_TERMIOS
bool "Use termios to manipulate the screen"
default n
- depends on BUSYBOX_CONFIG_MORE
+ depends on BUSYBOX_CONFIG_MORE || BUSYBOX_CONFIG_TOP
help
This option allows utilities such as 'more' and 'top' to determine
the size of the screen. If you leave this disabled, your utilities
@@ -349,6 +393,216 @@ config BUSYBOX_CONFIG_FEATURE_USE_TERMIOS
will be unable to determine the current screen size, and will be
unable to move the cursor.
+config BUSYBOX_CONFIG_VOLUMEID
+ bool "Routines for detecting label and uuid on common filesystems"
+ default n
+ help
+ TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_EXT
+ bool "Ext filesystem"
+ default n
+ depends on BUSYBOX_CONFIG_VOLUMEID
+ help
+ TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_REISERFS
+ bool "Reiser filesystem"
+ default n
+ depends on BUSYBOX_CONFIG_VOLUMEID
+ help
+ TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_FAT
+ bool "fat filesystem"
+ default n
+ depends on BUSYBOX_CONFIG_VOLUMEID
+ help
+ TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_HFS
+ bool "hfs filesystem"
+ default n
+ depends on BUSYBOX_CONFIG_VOLUMEID
+ help
+ TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_JFS
+ bool "jfs filesystem"
+ default n
+ depends on BUSYBOX_CONFIG_VOLUMEID
+ help
+ TODO
+
+### config FEATURE_VOLUMEID_UFS
+### bool "ufs filesystem"
+### default n
+### depends on VOLUMEID
+### help
+### TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_XFS
+ bool "xfs filesystem"
+ default n
+ depends on BUSYBOX_CONFIG_VOLUMEID
+ help
+ TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_NTFS
+ bool "ntfs filesystem"
+ default n
+ depends on BUSYBOX_CONFIG_VOLUMEID
+ help
+ TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_ISO9660
+ bool "iso9660 filesystem"
+ default n
+ depends on BUSYBOX_CONFIG_VOLUMEID
+ help
+ TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_UDF
+ bool "udf filesystem"
+ default n
+ depends on BUSYBOX_CONFIG_VOLUMEID
+ help
+ TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LUKS
+ bool "luks filesystem"
+ default n
+ depends on BUSYBOX_CONFIG_VOLUMEID
+ help
+ TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LINUXSWAP
+ bool "linux swap filesystem"
+ default n
+ depends on BUSYBOX_CONFIG_VOLUMEID
+ help
+ TODO
+
+### config FEATURE_VOLUMEID_LVM
+### bool "lvm"
+### default n
+### depends on VOLUMEID
+### help
+### TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_CRAMFS
+ bool "cramfs filesystem"
+ default n
+ depends on BUSYBOX_CONFIG_VOLUMEID
+ help
+ TODO
+
+### config FEATURE_VOLUMEID_HPFS
+### bool "hpfs filesystem"
+### default n
+### depends on VOLUMEID
+### help
+### TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_ROMFS
+ bool "romfs filesystem"
+ default n
+ depends on BUSYBOX_CONFIG_VOLUMEID
+ help
+ TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_SYSV
+ bool "sysv filesystem"
+ default n
+ depends on BUSYBOX_CONFIG_VOLUMEID
+ help
+ TODO
+
+### config FEATURE_VOLUMEID_MINIX
+### bool "minix filesystem"
+### default n
+### depends on VOLUMEID
+### help
+### TODO
+
+### These only detect partition tables - not used (yet?)
+### config FEATURE_VOLUMEID_MAC
+### bool "mac filesystem"
+### default n
+### depends on VOLUMEID
+### help
+### TODO
+###
+### config FEATURE_VOLUMEID_MSDOS
+### bool "msdos filesystem"
+### default n
+### depends on VOLUMEID
+### help
+### TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_OCFS2
+ bool "ocfs2 filesystem"
+ default n
+ depends on BUSYBOX_CONFIG_VOLUMEID
+ help
+ TODO
+
+### config FEATURE_VOLUMEID_HIGHPOINTRAID
+### bool "highpoint raid"
+### default n
+### depends on VOLUMEID
+### help
+### TODO
+
+### config FEATURE_VOLUMEID_ISWRAID
+### bool "intel raid"
+### default n
+### depends on VOLUMEID
+### help
+### TODO
+
+### config FEATURE_VOLUMEID_LSIRAID
+### bool "lsi raid"
+### default n
+### depends on VOLUMEID
+### help
+### TODO
+
+### config FEATURE_VOLUMEID_VIARAID
+### bool "via raid"
+### default n
+### depends on VOLUMEID
+### help
+### TODO
+
+### config FEATURE_VOLUMEID_SILICONRAID
+### bool "silicon raid"
+### default n
+### depends on VOLUMEID
+### help
+### TODO
+
+### config FEATURE_VOLUMEID_NVIDIARAID
+### bool "nvidia raid"
+### default n
+### depends on VOLUMEID
+### help
+### TODO
+
+### config FEATURE_VOLUMEID_PROMISERAID
+### bool "promise raid"
+### default n
+### depends on VOLUMEID
+### help
+### TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LINUXRAID
+ bool "linuxraid"
+ default n
+ depends on BUSYBOX_CONFIG_VOLUMEID
+ help
+ TODO
+
config BUSYBOX_CONFIG_MOUNT
bool "mount"
default y
@@ -360,15 +614,42 @@ config BUSYBOX_CONFIG_MOUNT
NFS filesystems. Most people using BusyBox will also want to enable
the 'mount' utility.
+config BUSYBOX_CONFIG_FEATURE_MOUNT_FAKE
+ bool "Support option -f"
+ default n
+ depends on BUSYBOX_CONFIG_MOUNT
+ help
+ Enable support for faking a file system mount.
+
+config BUSYBOX_CONFIG_FEATURE_MOUNT_VERBOSE
+ bool "Support option -v"
+ default n
+ depends on BUSYBOX_CONFIG_MOUNT
+ help
+ Enable multi-level -v[vv...] verbose messages. Useful if you
+ debug mount problems and want to see what is exactly passed
+ to the kernel.
+
config BUSYBOX_CONFIG_FEATURE_MOUNT_HELPERS
bool "Support mount helpers"
default n
depends on BUSYBOX_CONFIG_MOUNT
help
Enable mounting of virtual file systems via external helpers.
- E.g. mount obexfs#-b00.11.22.33.44.55 /mnt will in effect call
- obexfs -b00.11.22.33.44.55 /mnt
- The idea is to use such virtual filesystems in /etc/fstab
+ E.g. "mount obexfs#-b00.11.22.33.44.55 /mnt" will in effect call
+ "obexfs -b00.11.22.33.44.55 /mnt"
+ Also "mount -t sometype [-o opts] fs /mnt" will try
+ "sometype [-o opts] fs /mnt" if simple mount syscall fails.
+ The idea is to use such virtual filesystems in /etc/fstab.
+
+config BUSYBOX_CONFIG_FEATURE_MOUNT_LABEL
+ bool "Support specifiying devices by label or UUID"
+ default n
+ depends on BUSYBOX_CONFIG_MOUNT
+ select BUSYBOX_CONFIG_VOLUMEID
+ help
+ This allows for specifying a device by label or uuid, rather than by
+ name. This feature utilizes the same functionality as findfs.
config BUSYBOX_CONFIG_FEATURE_MOUNT_NFS
bool "Support mounting NFS file systems"
@@ -430,6 +711,18 @@ config BUSYBOX_CONFIG_READPROFILE
help
This allows you to parse /proc/profile for basic profiling.
+config BUSYBOX_CONFIG_RTCWAKE
+ bool "rtcwake"
+ default n
+ help
+ Enter a system sleep state until specified wakeup time.
+
+config BUSYBOX_CONFIG_SCRIPT
+ bool "script"
+ default n
+ help
+ The script makes typescript of terminal session.
+
config BUSYBOX_CONFIG_SETARCH
bool "setarch"
default n
@@ -450,6 +743,13 @@ config BUSYBOX_CONFIG_SWAPONOFF
space. If you are not using any swap space, you can leave this
option disabled.
+config BUSYBOX_CONFIG_FEATURE_SWAPON_PRI
+ bool "Support priority option -p"
+ default n
+ depends on BUSYBOX_CONFIG_SWAPONOFF
+ help
+ Enable support for setting swap device priority in swapon.
+
config BUSYBOX_CONFIG_SWITCH_ROOT
bool "switch_root"
default y
@@ -479,7 +779,7 @@ config BUSYBOX_CONFIG_UMOUNT
also want to enable 'umount'.
config BUSYBOX_CONFIG_FEATURE_UMOUNT_ALL
- bool "umount -a option"
+ bool "Support option -a"
default y
depends on BUSYBOX_CONFIG_UMOUNT
help
@@ -508,6 +808,7 @@ config BUSYBOX_CONFIG_FEATURE_MTAB_SUPPORT
bool "Support for the old /etc/mtab file"
default n
depends on BUSYBOX_CONFIG_MOUNT || BUSYBOX_CONFIG_UMOUNT
+ select BUSYBOX_CONFIG_FEATURE_MOUNT_FAKE
help
Historically, Unix systems kept track of the currently mounted
partitions in the file "/etc/mtab". These days, the kernel exports
@@ -528,4 +829,3 @@ config BUSYBOX_CONFIG_FEATURE_MTAB_SUPPORT
your kernel.
endmenu
-
diff --git a/package/busybox/patches/000-autoconf.patch b/package/busybox/patches/000-autoconf.patch
index e798b82..14f0b40 100644
--- a/package/busybox/patches/000-autoconf.patch
+++ b/package/busybox/patches/000-autoconf.patch
@@ -1,13 +1,18 @@
-Index: busybox-1.7.2/applets/Kbuild
-===================================================================
---- busybox-1.7.2.orig/applets/Kbuild 2007-10-30 15:35:00.000000000 -0500
-+++ busybox-1.7.2/applets/Kbuild 2007-10-30 15:35:00.000000000 -0500
-@@ -20,6 +20,6 @@
- HOSTCFLAGS_usage.o = -I$(srctree)/include
-
- applets/applets.o: include/usage_compressed.h
--applets/usage: .config $(srctree)/applets/usage_compressed
+--- a/applets/Kbuild
++++ b/applets/Kbuild
+@@ -18,13 +18,13 @@
+
+ applets/applets.o: include/usage_compressed.h include/applet_tables.h
+
+-applets/usage: .config $(srctree)/applets/usage_compressed
++applets/usage: .config $(srctree)/applets/usage_compressed include/autoconf.h
+ applets/applet_tables: .config
+
+ quiet_cmd_gen_usage_compressed = GEN include/usage_compressed.h
+ cmd_gen_usage_compressed = $(srctree)/applets/usage_compressed include/usage_compressed.h applets
+
-include/usage_compressed.h: applets/usage $(srctree)/applets/usage_compressed
-+applets/usage: .config $(srctree)/applets/usage_compressed include/autoconf.h
+include/usage_compressed.h: applets/usage $(srctree)/applets/usage_compressed include/autoconf.h
$(call cmd,gen_usage_compressed)
+
+ quiet_cmd_gen_applet_tables = GEN include/applet_tables.h
diff --git a/package/busybox/patches/001-init_avoid_loop_opening_tty.patch b/package/busybox/patches/001-init_avoid_loop_opening_tty.patch
new file mode 100644
index 0000000..7027230
--- /dev/null
+++ b/package/busybox/patches/001-init_avoid_loop_opening_tty.patch
@@ -0,0 +1,20 @@
+--- a/init/init.c
++++ b/init/init.c
+@@ -505,12 +505,11 @@
+ for (a = init_action_list; a; a = tmp) {
+ tmp = a->next;
+ if (a->action_type & action_type) {
+- // Pointless: run() will error out if open of device fails.
+- ///* a->terminal of "" means "init's console" */
+- //if (a->terminal[0] && access(a->terminal, R_OK | W_OK)) {
+- // //message(L_LOG | L_CONSOLE, "Device %s cannot be opened in RW mode", a->terminal /*, strerror(errno)*/);
+- // delete_init_action(a);
+- //} else
++ /* a->terminal of "" means "init's console" */
++ if (a->terminal[0] && access(a->terminal, R_OK | W_OK)) {
++ //message(L_LOG | L_CONSOLE, "Device %s cannot be opened in RW mode", a->terminal /*, strerror(errno)*/);
++ delete_init_action(a);
++ } else
+ if (a->action_type & (SYSINIT | WAIT | CTRLALTDEL | SHUTDOWN | RESTART)) {
+ waitfor(run(a));
+ delete_init_action(a);
diff --git a/package/busybox/patches/110-wget_getopt_fix.patch b/package/busybox/patches/110-wget_getopt_fix.patch
index 6fb7c12..f188269 100644
--- a/package/busybox/patches/110-wget_getopt_fix.patch
+++ b/package/busybox/patches/110-wget_getopt_fix.patch
@@ -1,8 +1,6 @@
-Index: busybox-1.7.2/networking/wget.c
-===================================================================
---- busybox-1.7.2.orig/networking/wget.c 2007-10-30 15:35:00.000000000 -0500
-+++ busybox-1.7.2/networking/wget.c 2007-10-30 15:35:00.000000000 -0500
-@@ -140,7 +140,7 @@
+--- a/networking/wget.c
++++ b/networking/wget.c
+@@ -437,7 +437,7 @@
"directory-prefix\0" Required_argument "P"
"proxy\0" Required_argument "Y"
"user-agent\0" Required_argument "U"
@@ -10,4 +8,4 @@ Index: busybox-1.7.2/networking/wget.c
+ "passive-ftp\0" No_argument "\xfd"
"header\0" Required_argument "\xfe"
;
- applet_long_options = wget_longopts;
+ #endif
diff --git a/package/busybox/patches/140-trylink_bash.patch b/package/busybox/patches/140-trylink_bash.patch
index 167f14c..f9571fc 100644
--- a/package/busybox/patches/140-trylink_bash.patch
+++ b/package/busybox/patches/140-trylink_bash.patch
@@ -1,7 +1,5 @@
-Index: busybox-1.7.2/scripts/trylink
-===================================================================
---- busybox-1.7.2.orig/scripts/trylink 2007-10-30 15:35:00.000000000 -0500
-+++ busybox-1.7.2/scripts/trylink 2007-10-30 15:35:00.000000000 -0500
+--- a/scripts/trylink
++++ b/scripts/trylink
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/usr/bin/env bash
diff --git a/package/busybox/patches/200-etc_crontabs.patch b/package/busybox/patches/200-etc_crontabs.patch
index e9609bd..bc3010e 100644
--- a/package/busybox/patches/200-etc_crontabs.patch
+++ b/package/busybox/patches/200-etc_crontabs.patch
@@ -1,9 +1,7 @@
-Index: busybox-1.7.2/miscutils/crond.c
-===================================================================
---- busybox-1.7.2.orig/miscutils/crond.c 2007-10-30 15:35:00.000000000 -0500
-+++ busybox-1.7.2/miscutils/crond.c 2007-10-30 15:35:00.000000000 -0500
-@@ -15,7 +15,7 @@
- #include "libbb.h"
+--- a/miscutils/crond.c
++++ b/miscutils/crond.c
+@@ -24,7 +24,7 @@
+
#ifndef CRONTABS
-#define CRONTABS "/var/spool/cron/crontabs"
@@ -11,10 +9,8 @@ Index: busybox-1.7.2/miscutils/crond.c
#endif
#ifndef TMPDIR
#define TMPDIR "/var/spool/cron"
-Index: busybox-1.7.2/miscutils/crontab.c
-===================================================================
---- busybox-1.7.2.orig/miscutils/crontab.c 2007-10-30 15:35:00.000000000 -0500
-+++ busybox-1.7.2/miscutils/crontab.c 2007-10-30 15:35:00.000000000 -0500
+--- a/miscutils/crontab.c
++++ b/miscutils/crontab.c
@@ -13,7 +13,7 @@
#include "libbb.h"
@@ -22,5 +18,5 @@ Index: busybox-1.7.2/miscutils/crontab.c
-#define CRONTABS "/var/spool/cron/crontabs"
+#define CRONTABS "/etc/crontabs"
#endif
- #ifndef TMPDIR
- #define TMPDIR "/var/spool/cron"
+ #ifndef CRONUPDATE
+ #define CRONUPDATE "cron.update"
diff --git a/package/busybox/patches/240-udhcpc_retries.patch b/package/busybox/patches/240-udhcpc_retries.patch
index 7a65537..2e0ef11 100644
--- a/package/busybox/patches/240-udhcpc_retries.patch
+++ b/package/busybox/patches/240-udhcpc_retries.patch
@@ -1,22 +1,20 @@
-Index: busybox-1.7.2/networking/udhcp/dhcpc.c
-===================================================================
---- busybox-1.7.2.orig/networking/udhcp/dhcpc.c 2007-10-30 15:35:00.000000000 -0500
-+++ busybox-1.7.2/networking/udhcp/dhcpc.c 2007-10-30 15:35:01.000000000 -0500
-@@ -334,7 +334,7 @@
- /* timeout dropped to zero */
+--- a/networking/udhcp/dhcpc.c
++++ b/networking/udhcp/dhcpc.c
+@@ -352,7 +352,7 @@
+
switch (state) {
case INIT_SELECTING:
-- if (packet_num < client_config.retries) {
-+ if (!client_config.retries || (packet_num < client_config.retries)) {
+- if (packet_num < discover_retries) {
++ if (!discover_retries || packet_num < discover_retries) {
if (packet_num == 0)
xid = random_xid();
-@@ -360,7 +360,7 @@
- break;
+@@ -382,7 +382,7 @@
+ continue;
case RENEW_REQUESTED:
case REQUESTING:
-- if (packet_num < client_config.retries) {
-+ if (!client_config.retries || (packet_num < client_config.retries)) {
+- if (packet_num < discover_retries) {
++ if (!discover_retries || packet_num < discover_retries) {
/* send request packet */
- if (state == RENEW_REQUESTED)
- send_renew(xid, server_addr, requested_ip); /* unicast */
+ if (state == RENEW_REQUESTED) /* unicast */
+ send_renew(xid, server_addr, requested_ip);
diff --git a/package/busybox/patches/241-udhcpc-oversized_packets.patch b/package/busybox/patches/241-udhcpc-oversized_packets.patch
index 9379491..6d5ec36 100644
--- a/package/busybox/patches/241-udhcpc-oversized_packets.patch
+++ b/package/busybox/patches/241-udhcpc-oversized_packets.patch
@@ -1,89 +1,75 @@
-Index: busybox-1.7.2/networking/udhcp/packet.c
-===================================================================
---- busybox-1.7.2.orig/networking/udhcp/packet.c 2007-10-30 15:35:00.000000000 -0500
-+++ busybox-1.7.2/networking/udhcp/packet.c 2007-10-30 15:35:01.000000000 -0500
-@@ -121,6 +121,10 @@
+--- a/networking/udhcp/packet.c
++++ b/networking/udhcp/packet.c
+@@ -114,6 +114,10 @@
return ~sum;
}
+int udhcp_get_payload_len(struct dhcpMessage *payload)
+{
-+ return sizeof(struct dhcpMessage) - MAX_OPTIONS_LEN + end_option(payload->options) + sizeof(payload->options[0]);
++ return sizeof(struct dhcpMessage) - DHCP_OPTIONS_BUFSIZE + end_option(payload->options) + sizeof(payload->options[0]);
+}
- /* Construct a ip/udp header for a packet, and specify the source and dest hardware address */
- void BUG_sizeof_struct_udp_dhcp_packet_must_be_576(void);
-@@ -132,6 +136,7 @@
- int result;
- struct sockaddr_ll dest;
- struct udp_dhcp_packet packet;
+ /* Construct a ip/udp header for a packet, send packet */
+ int udhcp_send_raw_packet(struct dhcpMessage *payload,
+@@ -125,11 +129,7 @@
+ int fd;
+ int result = -1;
+ const char *msg;
+-
+- enum {
+- IP_UPD_DHCP_SIZE = sizeof(struct udp_dhcp_packet) - CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS,
+- UPD_DHCP_SIZE = IP_UPD_DHCP_SIZE - offsetof(struct udp_dhcp_packet, udp),
+- };
+ int p_len = udhcp_get_payload_len(payload);
fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP));
if (fd < 0) {
-@@ -141,6 +146,7 @@
+@@ -139,7 +139,7 @@
memset(&dest, 0, sizeof(dest));
memset(&packet, 0, sizeof(packet));
+- packet.data = *payload; /* struct copy */
+ memcpy(&(packet.data), payload, p_len);
dest.sll_family = AF_PACKET;
dest.sll_protocol = htons(ETH_P_IP);
-@@ -158,12 +164,13 @@
+@@ -156,23 +156,18 @@
packet.ip.daddr = dest_ip;
packet.udp.source = htons(source_port);
packet.udp.dest = htons(dest_port);
-- packet.udp.len = htons(sizeof(packet.udp) + sizeof(struct dhcpMessage)); /* cheat on the psuedo-header */
+- /* size, excluding IP header: */
+- packet.udp.len = htons(UPD_DHCP_SIZE);
+- /* for UDP checksumming, ip.len is set to UDP packet len */
+ p_len += sizeof(packet.udp);
+ packet.udp.len = htons(p_len);
packet.ip.tot_len = packet.udp.len;
-- memcpy(&(packet.data), payload, sizeof(struct dhcpMessage));
-- packet.udp.check = udhcp_checksum(&packet, sizeof(struct udp_dhcp_packet));
+- packet.udp.check = udhcp_checksum(&packet, IP_UPD_DHCP_SIZE);
+- /* but for sending, it is set to IP packet len */
+- packet.ip.tot_len = htons(IP_UPD_DHCP_SIZE);
+ p_len += sizeof(packet.ip);
+ packet.udp.check = udhcp_checksum(&packet, p_len);
-
-- packet.ip.tot_len = htons(sizeof(struct udp_dhcp_packet));
+ packet.ip.tot_len = htons(p_len);
packet.ip.ihl = sizeof(packet.ip) >> 2;
packet.ip.version = IPVERSION;
packet.ip.ttl = IPDEFTTL;
-@@ -172,7 +179,7 @@
- if (sizeof(struct udp_dhcp_packet) != 576)
- BUG_sizeof_struct_udp_dhcp_packet_must_be_576();
+ packet.ip.check = udhcp_checksum(&packet.ip, sizeof(packet.ip));
-- result = sendto(fd, &packet, sizeof(struct udp_dhcp_packet), 0,
+- /* Currently we send full-sized DHCP packets (zero padded).
+- * If you need to change this: last byte of the packet is
+- * packet.data.options[end_option(packet.data.options)]
+- */
+- result = sendto(fd, &packet, IP_UPD_DHCP_SIZE, 0,
+ result = sendto(fd, &packet, p_len, 0,
- (struct sockaddr *) &dest, sizeof(dest));
- if (result <= 0) {
- bb_perror_msg("sendto");
-@@ -216,7 +223,7 @@
- return -1;
+ (struct sockaddr *) &dest, sizeof(dest));
+ msg = "sendto";
+ ret_close:
+@@ -224,8 +219,7 @@
+ goto ret_close;
}
-- result = write(fd, payload, sizeof(struct dhcpMessage));
-+ result = write(fd, payload, udhcp_get_payload_len(payload));
+- /* Currently we send full-sized DHCP packets (see above) */
+- result = safe_write(fd, payload, DHCP_SIZE);
++ result = safe_write(fd, payload, udhcp_get_payload_len(payload));
+ msg = "write";
+ ret_close:
close(fd);
- return result;
- }
-Index: busybox-1.7.2/networking/udhcp/common.h
-===================================================================
---- busybox-1.7.2.orig/networking/udhcp/common.h 2007-10-30 15:35:00.000000000 -0500
-+++ busybox-1.7.2/networking/udhcp/common.h 2007-10-30 15:35:01.000000000 -0500
-@@ -21,6 +21,8 @@
- #include <netinet/udp.h>
- #include <netinet/ip.h>
-
-+#define MAX_OPTIONS_LEN 308
-+
- struct dhcpMessage {
- uint8_t op;
- uint8_t htype;
-@@ -37,7 +39,7 @@
- uint8_t sname[64];
- uint8_t file[128];
- uint32_t cookie;
-- uint8_t options[308]; /* 312 - cookie */
-+ uint8_t options[MAX_OPTIONS_LEN]; /* 312 - cookie */
- };
-
- struct udp_dhcp_packet {
diff --git a/package/busybox/patches/242-udhcpc_msgs.patch b/package/busybox/patches/242-udhcpc_msgs.patch
index a201620..efe8e9a 100644
--- a/package/busybox/patches/242-udhcpc_msgs.patch
+++ b/package/busybox/patches/242-udhcpc_msgs.patch
@@ -1,8 +1,6 @@
-Index: busybox-1.7.2/networking/udhcp/clientpacket.c
-===================================================================
---- busybox-1.7.2.orig/networking/udhcp/clientpacket.c 2007-10-30 15:35:00.000000000 -0500
-+++ busybox-1.7.2/networking/udhcp/clientpacket.c 2007-10-30 15:35:02.000000000 -0500
-@@ -74,6 +74,7 @@
+--- a/networking/udhcp/clientpacket.c
++++ b/networking/udhcp/clientpacket.c
+@@ -101,6 +101,7 @@
int send_discover(uint32_t xid, uint32_t requested)
{
struct dhcpMessage packet;
@@ -10,13 +8,11 @@ Index: busybox-1.7.2/networking/udhcp/clientpacket.c
init_packet(&packet, DHCPDISCOVER);
packet.xid = xid;
-@@ -81,7 +82,8 @@
- add_simple_option(packet.options, DHCP_REQUESTED_IP, requested);
+@@ -113,6 +114,7 @@
+
+ add_param_req_option(&packet);
- add_requests(&packet);
-- bb_info_msg("Sending discover...");
+ if (msgs++ < 3)
-+ bb_info_msg("Sending discover...");
- return udhcp_raw_packet(&packet, INADDR_ANY, CLIENT_PORT, INADDR_BROADCAST,
+ bb_info_msg("Sending discover...");
+ return udhcp_send_raw_packet(&packet, INADDR_ANY, CLIENT_PORT, INADDR_BROADCAST,
SERVER_PORT, MAC_BCAST_ADDR, client_config.ifindex);
- }
diff --git a/package/busybox/patches/243-udhcpc_changed_ifindex.patch b/package/busybox/patches/243-udhcpc_changed_ifindex.patch
index 91e8ac4..b48789a 100644
--- a/package/busybox/patches/243-udhcpc_changed_ifindex.patch
+++ b/package/busybox/patches/243-udhcpc_changed_ifindex.patch
@@ -1,10 +1,8 @@
-Index: busybox-1.7.2/networking/udhcp/dhcpc.c
-===================================================================
---- busybox-1.7.2.orig/networking/udhcp/dhcpc.c 2007-10-30 15:35:01.000000000 -0500
-+++ busybox-1.7.2/networking/udhcp/dhcpc.c 2007-10-30 15:35:02.000000000 -0500
-@@ -309,6 +309,12 @@
- jump_in:
- tv.tv_usec = 0;
+--- a/networking/udhcp/dhcpc.c
++++ b/networking/udhcp/dhcpc.c
+@@ -319,6 +319,12 @@
+ for (;;) {
+ unsigned timestamp_before_wait;
+ /* When running on a bridge, the ifindex may have changed (e.g. if
+ * member interfaces were added/removed or if the status of the
diff --git a/package/busybox/patches/250-ash_export-n.patch b/package/busybox/patches/250-ash_export-n.patch
index 99f4672..8243a50 100644
--- a/package/busybox/patches/250-ash_export-n.patch
+++ b/package/busybox/patches/250-ash_export-n.patch
@@ -1,15 +1,11 @@
-Index: busybox-1.7.2/shell/ash.c
-===================================================================
---- busybox-1.7.2.orig/shell/ash.c 2007-10-30 15:34:59.000000000 -0500
-+++ busybox-1.7.2/shell/ash.c 2007-10-30 15:35:02.000000000 -0500
-@@ -11310,8 +11310,18 @@
+--- a/shell/ash.c
++++ b/shell/ash.c
+@@ -11875,8 +11875,17 @@
const char *p;
char **aptr;
int flag = argv[0][0] == 'r'? VREADONLY : VEXPORT;
+ int mask = ~0;
+ int nopt;
-
-- if (nextopt("p") != 'p') {
+ while ((nopt = nextopt("np"))) {
+ if (nopt == 'n') {
+ mask = ~flag;
@@ -17,12 +13,13 @@ Index: busybox-1.7.2/shell/ash.c
+ break;
+ }
+ }
-+
+
+- if (nextopt("p") != 'p') {
+ if (nopt != 'p') {
aptr = argptr;
name = *aptr;
if (name) {
-@@ -11323,10 +11333,11 @@
+@@ -11888,10 +11897,12 @@
vp = *findvar(hashvar(name), name);
if (vp) {
vp->flags |= flag;
@@ -30,7 +27,7 @@ Index: busybox-1.7.2/shell/ash.c
continue;
}
}
-- setvar(name, p, flag);
+ setvar(name, p, flag);
+ setvar(name, p, flag & mask);
} while ((name = *++aptr) != NULL);
return 0;
diff --git a/package/busybox/patches/300-netmsg.patch b/package/busybox/patches/300-netmsg.patch
index b4afa05..d2372d0 100644
--- a/package/busybox/patches/300-netmsg.patch
+++ b/package/busybox/patches/300-netmsg.patch
@@ -1,37 +1,43 @@
-Index: busybox-1.7.2/include/applets.h
-===================================================================
---- busybox-1.7.2.orig/include/applets.h 2007-10-30 15:34:59.000000000 -0500
-+++ busybox-1.7.2/include/applets.h 2007-10-30 15:35:03.000000000 -0500
-@@ -241,6 +241,7 @@
+--- a/include/applets.h
++++ b/include/applets.h
+@@ -257,6 +257,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_NETMSG(APPLET(netmsg, _BB_DIR_BIN, _BB_SUID_ALWAYS))
USE_NETSTAT(APPLET(netstat, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_NICE(APPLET(nice, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_NMETER(APPLET(nmeter, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
-Index: busybox-1.7.2/networking/Config.in
-===================================================================
---- busybox-1.7.2.orig/networking/Config.in 2007-10-30 15:34:59.000000000 -0500
-+++ busybox-1.7.2/networking/Config.in 2007-10-30 15:35:03.000000000 -0500
-@@ -508,6 +508,12 @@
- help
+--- a/include/usage.h
++++ b/include/usage.h
+@@ -2815,6 +2815,9 @@
+
+ #endif
+
++#define netmsg_trivial_usage NOUSAGE_STR
++#define netmsg_full_usage ""
++
+ #define netstat_trivial_usage \
+ "[-laentuwxr"USE_FEATURE_NETSTAT_WIDE("W")"]"
+ #define netstat_full_usage "\n\n" \
+--- a/networking/Config.in
++++ b/networking/Config.in
+@@ -602,6 +602,12 @@
A simple Unix utility which reads and writes data across network
connections.
-+
+
+config NETMSG
+ bool "netmsg"
+ default n
+ help
+ simple program for sending udp broadcast messages
-
++
config NC_SERVER
bool "Netcat server options (-l)"
-Index: busybox-1.7.2/networking/Kbuild
-===================================================================
---- busybox-1.7.2.orig/networking/Kbuild 2007-10-30 15:34:59.000000000 -0500
-+++ busybox-1.7.2/networking/Kbuild 2007-10-30 15:35:03.000000000 -0500
-@@ -21,6 +21,7 @@
+ default n
+--- a/networking/Kbuild
++++ b/networking/Kbuild
+@@ -24,6 +24,7 @@
lib-$(CONFIG_IPCALC) += ipcalc.o
lib-$(CONFIG_NAMEIF) += nameif.o
lib-$(CONFIG_NC) += nc.o
@@ -39,10 +45,8 @@ Index: busybox-1.7.2/networking/Kbuild
lib-$(CONFIG_NETSTAT) += netstat.o
lib-$(CONFIG_NSLOOKUP) += nslookup.o
lib-$(CONFIG_PING) += ping.o
-Index: busybox-1.7.2/networking/netmsg.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.7.2/networking/netmsg.c 2007-10-30 15:35:03.000000000 -0500
+--- /dev/null
++++ b/networking/netmsg.c
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2006 Felix Fietkau <nbd@openwrt.org>
diff --git a/package/busybox/patches/310-passwd_access.patch b/package/busybox/patches/310-passwd_access.patch
index bd0db8f..e69de29 100644
--- a/package/busybox/patches/310-passwd_access.patch
+++ b/package/busybox/patches/310-passwd_access.patch
@@ -1,45 +0,0 @@
-
- Copyright (C) 2006 OpenWrt.org
-
-Index: busybox-1.7.2/networking/httpd.c
-===================================================================
---- busybox-1.7.2.orig/networking/httpd.c 2007-10-30 15:34:59.000000000 -0500
-+++ busybox-1.7.2/networking/httpd.c 2007-10-30 15:35:03.000000000 -0500
-@@ -1527,12 +1527,26 @@
- if (ENABLE_FEATURE_HTTPD_AUTH_MD5) {
- char *cipher;
- char *pp;
-+ char *ppnew = NULL;
-+ struct passwd *pwd = NULL;
-
- if (strncmp(p, request, u - request) != 0) {
- /* user doesn't match */
- continue;
- }
- pp = strchr(p, ':');
-+ if(pp && pp[1] == '$' && pp[2] == 'p' &&
-+ pp[3] == '$' && pp[4] &&
-+ (pwd = getpwnam(&pp[4])) != NULL) {
-+ if(pwd->pw_passwd && pwd->pw_passwd[0] == '!') {
-+ prev = NULL;
-+ continue;
-+ }
-+ ppnew = xrealloc(ppnew, 5 + strlen(pwd->pw_passwd));
-+ ppnew[0] = ':';
-+ strcpy(ppnew + 1, pwd->pw_passwd);
-+ pp = ppnew;
-+ }
- if (pp && pp[1] == '$' && pp[2] == '1'
- && pp[3] == '$' && pp[4]
- ) {
-@@ -1543,6 +1557,10 @@
- /* unauthorized */
- continue;
- }
-+ if (ppnew) {
-+ free(ppnew);
-+ ppnew = NULL;
-+ }
- }
-
- if (strcmp(p, request) == 0) {
diff --git a/package/busybox/patches/340-lock_util.patch b/package/busybox/patches/340-lock_util.patch
index 1d781f2..d946f32 100644
--- a/package/busybox/patches/340-lock_util.patch
+++ b/package/busybox/patches/340-lock_util.patch
@@ -1,20 +1,28 @@
-Index: busybox-1.8.1/include/applets.h
-===================================================================
---- busybox-1.8.1.orig/include/applets.h 2007-11-10 16:54:28.318054115 +0100
-+++ busybox-1.8.1/include/applets.h 2007-11-10 17:39:21.487529096 +0100
-@@ -218,6 +218,7 @@
+--- a/include/applets.h
++++ b/include/applets.h
+@@ -220,6 +220,7 @@
USE_LOAD_POLICY(APPLET(load_policy, _BB_DIR_USR_SBIN, _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_LOCK(APPLET(lock, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_LOGGER(APPLET(logger, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
USE_LOGIN(APPLET(login, _BB_DIR_BIN, _BB_SUID_ALWAYS))
USE_LOGNAME(APPLET_NOFORK(logname, logname, _BB_DIR_USR_BIN, _BB_SUID_NEVER, logname))
-Index: busybox-1.8.1/miscutils/Config.in
-===================================================================
---- busybox-1.8.1.orig/miscutils/Config.in 2007-11-10 16:54:16.477379354 +0100
-+++ busybox-1.8.1/miscutils/Config.in 2007-11-10 16:54:28.366056851 +0100
-@@ -244,6 +244,12 @@
+--- a/include/usage.h
++++ b/include/usage.h
+@@ -2138,6 +2138,9 @@
+ #define loadkmap_example_usage \
+ "$ loadkmap < /etc/i18n/lang-keymap\n"
+
++#define lock_trivial_usage NOUSAGE_STR
++#define lock_full_usage ""
++
+ #define logger_trivial_usage \
+ "[OPTION]... [MESSAGE]"
+ #define logger_full_usage "\n\n" \
+--- a/miscutils/Config.in
++++ b/miscutils/Config.in
+@@ -364,6 +364,12 @@
Enables the 'hdparm -d' option to get/set using_dma flag.
This is dangerous stuff, so you should probably say N.
@@ -27,22 +35,18 @@ Index: busybox-1.8.1/miscutils/Config.in
config MAKEDEVS
bool "makedevs"
default n
-Index: busybox-1.8.1/miscutils/Kbuild
-===================================================================
---- busybox-1.8.1.orig/miscutils/Kbuild 2007-11-10 16:54:16.481379580 +0100
-+++ busybox-1.8.1/miscutils/Kbuild 2007-11-10 16:54:28.370057076 +0100
-@@ -16,6 +16,7 @@
- lib-$(CONFIG_HDPARM) += hdparm.o
- lib-$(CONFIG_LAST) += last.o
+--- a/miscutils/Kbuild
++++ b/miscutils/Kbuild
+@@ -20,6 +20,7 @@
+ lib-$(CONFIG_FEATURE_LAST_SMALL)+= last.o
+ lib-$(CONFIG_FEATURE_LAST_FANCY)+= last_fancy.o
lib-$(CONFIG_LESS) += less.o
+lib-$(CONFIG_LOCK) += lock.o
lib-$(CONFIG_MAKEDEVS) += makedevs.o
+ lib-$(CONFIG_MAN) += man.o
lib-$(CONFIG_MICROCOM) += microcom.o
- lib-$(CONFIG_MOUNTPOINT) += mountpoint.o
-Index: busybox-1.8.1/miscutils/lock.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/miscutils/lock.c 2007-11-10 17:40:37.203843924 +0100
+--- /dev/null
++++ b/miscutils/lock.c
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2006 Felix Fietkau <nbd@openwrt.org>
diff --git a/package/busybox/patches/350-httpd_redir.patch b/package/busybox/patches/350-httpd_redir.patch
index 57d3b0b..aec068e 100644
--- a/package/busybox/patches/350-httpd_redir.patch
+++ b/package/busybox/patches/350-httpd_redir.patch
@@ -1,31 +1,27 @@
-Index: busybox-1.8.1/include/usage.h
-===================================================================
---- busybox-1.8.1.orig/include/usage.h 2007-11-10 16:54:16.433376848 +0100
-+++ busybox-1.8.1/include/usage.h 2007-11-10 16:54:29.970148260 +0100
-@@ -1418,7 +1418,8 @@
+--- a/include/usage.h
++++ b/include/usage.h
+@@ -1558,7 +1558,8 @@
USE_FEATURE_HTTPD_BASIC_AUTH(" [-r realm]") \
USE_FEATURE_HTTPD_AUTH_MD5(" [-m pass]") \
" [-h home]" \
- " [-d/-e string]"
+ " [-d/-e string]" \
+ " [-R <path> [-H <host>]]"
- #define httpd_full_usage \
- "Listen for incoming HTTP requests" \
- "\n\nOptions:" \
-@@ -1436,6 +1437,8 @@
- "\n -h HOME Home directory (default .)" \
- "\n -e STRING HTML encode STRING" \
- "\n -d STRING URL decode STRING" \
-+ "\n -R PATH Redirect target path" \
-+ "\n -H HOST Redirect target host" \
+ #define httpd_full_usage "\n\n" \
+ "Listen for incoming HTTP requests\n" \
+ "\nOptions:" \
+@@ -1576,6 +1577,8 @@
+ "\n -h HOME Home directory (default .)" \
+ "\n -e STRING HTML encode STRING" \
+ "\n -d STRING URL decode STRING" \
++ "\n -R PATH Redirect target path" \
++ "\n -H HOST Redirect target host" \
#define hwclock_trivial_usage \
USE_GETOPT_LONG( \
-Index: busybox-1.8.1/networking/httpd.c
-===================================================================
---- busybox-1.8.1.orig/networking/httpd.c 2007-11-10 16:54:28.346055711 +0100
-+++ busybox-1.8.1/networking/httpd.c 2007-11-10 16:54:56.639668071 +0100
-@@ -253,6 +253,8 @@
+--- a/networking/httpd.c
++++ b/networking/httpd.c
+@@ -247,6 +247,8 @@
const char *found_mime_type;
const char *found_moved_temporarily;
@@ -34,8 +30,8 @@ Index: busybox-1.8.1/networking/httpd.c
Htaccess_IP *ip_a_d; /* config allow/deny lines */
USE_FEATURE_HTTPD_BASIC_AUTH(const char *g_realm;)
-@@ -297,6 +299,8 @@
- #define home_httpd (G.home_httpd )
+@@ -292,6 +294,8 @@
+ #define index_page (G.index_page )
#define found_mime_type (G.found_mime_type )
#define found_moved_temporarily (G.found_moved_temporarily)
+#define redirect_path (G.redirect_path )
@@ -43,7 +39,7 @@ Index: busybox-1.8.1/networking/httpd.c
#define last_mod (G.last_mod )
#define ip_a_d (G.ip_a_d )
#define g_realm (G.g_realm )
-@@ -988,8 +992,11 @@
+@@ -991,8 +995,11 @@
}
#endif
if (responseNum == HTTP_MOVED_TEMPORARILY) {
@@ -56,21 +52,21 @@ Index: busybox-1.8.1/networking/httpd.c
(g_query ? "?" : ""),
(g_query ? g_query : ""));
}
-@@ -1907,8 +1914,12 @@
- *++urlp = '\0'; /* so keep last character */
- tptr = urlp; /* end ptr */
+@@ -1912,8 +1919,12 @@
+ } while (*++tptr);
+ *++urlp = '\0'; /* terminate after last character */
+ /* redirect active */
+ if (redirect_path && (strncmp(urlcopy, redirect_path, strlen(redirect_path)) != 0))
+ found_moved_temporarily = redirect_path;
+
/* If URL is a directory, add '/' */
-- if (tptr[-1] != '/') {
-+ if (!redirect_path && (tptr[-1] != '/')) {
+- if (urlp[-1] != '/') {
++ if (!redirect_path && (urlp[-1] != '/')) {
if (is_directory(urlcopy + 1, 1, &sb)) {
found_moved_temporarily = urlcopy;
}
-@@ -2252,7 +2263,9 @@
+@@ -2263,7 +2274,9 @@
#endif
enum {
@@ -81,10 +77,10 @@ Index: busybox-1.8.1/networking/httpd.c
d_opt_decode_url,
h_opt_home_httpd,
USE_FEATURE_HTTPD_ENCODE_URL_STR(e_opt_encode_url,)
-@@ -2301,12 +2314,13 @@
+@@ -2312,12 +2325,13 @@
/* We do not "absolutize" path given by -h (home) opt.
- * If user gives relative path in -h, $SCRIPT_FILENAME can end up
- * relative too. */
+ * If user gives relative path in -h,
+ * $SCRIPT_FILENAME will not be set. */
- opt = getopt32(argv, "c:d:h:"
+ opt = getopt32(argv, "R:H:c:d:h:"
USE_FEATURE_HTTPD_ENCODE_URL_STR("e:")
diff --git a/package/busybox/patches/360-awk_multi_f.patch b/package/busybox/patches/360-awk_multi_f.patch
index ab753c1..e69de29 100644
--- a/package/busybox/patches/360-awk_multi_f.patch
+++ b/package/busybox/patches/360-awk_multi_f.patch
@@ -1,72 +0,0 @@
-Index: busybox-1.7.2/editors/awk.c
-===================================================================
---- busybox-1.7.2.orig/editors/awk.c 2007-10-30 15:34:59.000000000 -0500
-+++ busybox-1.7.2/editors/awk.c 2007-10-30 15:35:03.000000000 -0500
-@@ -2757,6 +2757,7 @@
- {
- unsigned opt;
- char *opt_F, *opt_W;
-+ llist_t *opt_f = NULL;
- llist_t *opt_v = NULL;
- int i, j, flen;
- var *v;
-@@ -2816,8 +2817,8 @@
- *s1 = '=';
- }
- }
-- opt_complementary = "v::";
-- opt = getopt32(argv, "F:v:f:W:", &opt_F, &opt_v, &g_progname, &opt_W);
-+ opt_complementary = "v::f::";
-+ opt = getopt32(argv, "F:v:f:W:", &opt_F, &opt_v, &opt_f, &opt_W);
- argv += optind;
- argc -= optind;
- if (opt & 0x1)
-@@ -2826,25 +2827,31 @@
- if (!is_assignment(llist_pop(&opt_v)))
- bb_show_usage();
- }
-- if (opt & 0x4) { // -f
-- char *s = s; /* die, gcc, die */
-- FILE *from_file = afopen(g_progname, "r");
-- /* one byte is reserved for some trick in next_token */
-- if (fseek(from_file, 0, SEEK_END) == 0) {
-- flen = ftell(from_file);
-- s = xmalloc(flen + 4);
-- fseek(from_file, 0, SEEK_SET);
-- i = 1 + fread(s + 1, 1, flen, from_file);
-- } else {
-- for (i = j = 1; j > 0; i += j) {
-- s = xrealloc(s, i + 4096);
-- j = fread(s + i, 1, 4094, from_file);
-+ if (opt_f != NULL) { // -f
-+ while (opt_f != NULL) {
-+ char *s = NULL;
-+ FILE *from_file;
-+
-+ g_progname = opt_f->data;
-+ from_file = afopen(g_progname, "r");
-+ /* one byte is reserved for some trick in next_token */
-+ if (fseek(from_file, 0, SEEK_END) == 0) {
-+ flen = ftell(from_file);
-+ s = xmalloc(flen + 4);
-+ fseek(from_file, 0, SEEK_SET);
-+ i = 1 + fread(s + 1, 1, flen, from_file);
-+ } else {
-+ for (i = j = 1; j > 0; i += j) {
-+ s = xrealloc(s, i + 4096);
-+ j = fread(s + i, 1, 4094, from_file);
-+ }
- }
-+ s[i] = '\0';
-+ fclose(from_file);
-+ parse_program(s + 1);
-+ free(s);
-+ opt_f = opt_f->link;
- }
-- s[i] = '\0';
-- fclose(from_file);
-- parse_program(s + 1);
-- free(s);
- } else { // no -f: take program from 1st parameter
- if (!argc)
- bb_show_usage();
diff --git a/package/busybox/patches/401-darwin_includes.patch b/package/busybox/patches/401-darwin_includes.patch
index 1ee7ea7..e69de29 100644
--- a/package/busybox/patches/401-darwin_includes.patch
+++ b/package/busybox/patches/401-darwin_includes.patch
@@ -1,39 +0,0 @@
-Index: busybox-1.7.2/include/platform.h
-===================================================================
---- busybox-1.7.2.orig/include/platform.h 2007-10-30 15:34:59.000000000 -0500
-+++ busybox-1.7.2/include/platform.h 2007-10-30 15:35:04.000000000 -0500
-@@ -137,9 +137,11 @@
- # include <netinet/in.h>
- #endif
-
-+#ifndef __APPLE__
- #ifndef __socklen_t_defined
- typedef int socklen_t;
- #endif
-+#endif
-
- /* ---- Compiler dependent settings ------------------------- */
- #if (defined __digital__ && defined __unix__)
-@@ -179,7 +181,7 @@
- #define HAVE_STDINT_H
- #else
- /* Largest integral types. */
--#if __BIG_ENDIAN__
-+#if __BIG_ENDIAN__ && !__APPLE__
- typedef long intmax_t;
- typedef unsigned long uintmax_t;
- #else
-Index: busybox-1.7.2/include/libbb.h
-===================================================================
---- busybox-1.7.2.orig/include/libbb.h 2007-10-30 15:34:59.000000000 -0500
-+++ busybox-1.7.2/include/libbb.h 2007-10-30 15:35:04.000000000 -0500
-@@ -31,7 +31,9 @@
- #include <sys/mman.h>
- #include <sys/socket.h>
- #include <sys/stat.h>
-+#ifndef __APPLE__
- #include <sys/statfs.h>
-+#endif
- #include <sys/time.h>
- #include <sys/types.h>
- #include <sys/wait.h>
diff --git a/package/busybox/patches/410-httpd_cgi_headers.patch b/package/busybox/patches/410-httpd_cgi_headers.patch
index 97f2a3c..7398d97 100644
--- a/package/busybox/patches/410-httpd_cgi_headers.patch
+++ b/package/busybox/patches/410-httpd_cgi_headers.patch
@@ -1,9 +1,7 @@
-Index: busybox-1.7.2/networking/httpd.c
-===================================================================
---- busybox-1.7.2.orig/networking/httpd.c 2007-10-30 15:35:03.000000000 -0500
-+++ busybox-1.7.2/networking/httpd.c 2007-10-30 15:35:04.000000000 -0500
-@@ -1316,10 +1316,10 @@
- if (full_write(1, HTTP_200, sizeof(HTTP_200)-1) != sizeof(HTTP_200)-1)
+--- a/networking/httpd.c
++++ b/networking/httpd.c
+@@ -1247,10 +1247,10 @@
+ if (full_write(STDOUT_FILENO, HTTP_200, sizeof(HTTP_200)-1) != sizeof(HTTP_200)-1)
break;
}
- /* Commented out:
diff --git a/package/busybox/patches/430-uniq_memleak.patch b/package/busybox/patches/430-uniq_memleak.patch
index 15a7a35..df56bf8 100644
--- a/package/busybox/patches/430-uniq_memleak.patch
+++ b/package/busybox/patches/430-uniq_memleak.patch
@@ -1,13 +1,11 @@
-Index: busybox-1.7.2/coreutils/uniq.c
-===================================================================
---- busybox-1.7.2.orig/coreutils/uniq.c 2007-10-30 15:34:59.000000000 -0500
-+++ busybox-1.7.2/coreutils/uniq.c 2007-10-30 15:35:04.000000000 -0500
-@@ -83,6 +83,8 @@
+--- a/coreutils/uniq.c
++++ b/coreutils/uniq.c
+@@ -82,6 +82,8 @@
- if (!s0 || strcmp(e0, e1)) {
+ if (!s0 || strncmp(e0, e1, max_chars)) {
break;
+ } else {
+ free(s1);
}
- ++dups; /* Note: Testing for overflow seems excessive. */
+ ++dups; /* note: testing for overflow seems excessive. */
diff --git a/package/busybox/patches/440-httpd_chdir.patch b/package/busybox/patches/440-httpd_chdir.patch
index e7ae3bc..0cf2b42 100644
--- a/package/busybox/patches/440-httpd_chdir.patch
+++ b/package/busybox/patches/440-httpd_chdir.patch
@@ -1,10 +1,8 @@
-Index: busybox-1.7.2/networking/httpd.c
-===================================================================
---- busybox-1.7.2.orig/networking/httpd.c 2007-10-30 15:35:04.000000000 -0500
-+++ busybox-1.7.2/networking/httpd.c 2007-10-30 15:35:04.000000000 -0500
-@@ -1618,6 +1618,7 @@
- #if ENABLE_FEATURE_HTTPD_BASIC_AUTH
- int credentials = -1; /* if not required this is Ok */
+--- a/networking/httpd.c
++++ b/networking/httpd.c
+@@ -1797,6 +1797,7 @@
+ char *header_ptr = header_ptr;
+ Htaccess_Proxy *proxy_entry;
#endif
+ xchdir(home_httpd);
diff --git a/package/busybox/patches/450-usage_compressed_fix.patch b/package/busybox/patches/450-usage_compressed_fix.patch
index 8df14be..e69de29 100644
--- a/package/busybox/patches/450-usage_compressed_fix.patch
+++ b/package/busybox/patches/450-usage_compressed_fix.patch
@@ -1,12 +0,0 @@
-Index: busybox-1.7.2/applets/usage_compressed
-===================================================================
---- busybox-1.7.2.orig/applets/usage_compressed 2007-10-30 15:34:59.000000000 -0500
-+++ busybox-1.7.2/applets/usage_compressed 2007-10-30 15:35:04.000000000 -0500
-@@ -14,6 +14,6 @@
-
- echo 'static const char packed_usage[] ALIGN1 = '
- "$loc/usage" | bzip2 -1 | od -v -t x1 \
--| $SED -e 's/^[^ ]*//' -e 's/ *\(..\)/\\x\1/g' -e 's/^\(.*\)$/"\1"/'
-+| $SED -e 's/^[^ ]*//' -e 's/ *\([a-f0-9][a-f0-9]\)/\\x\1/g' -e 's/^\(.*\)$/"\1"/'
- echo ';'
- echo '#define SIZEOF_usage_messages' `expr 0 + $sz`
diff --git a/package/busybox/patches/460-truncated_ping_results.patch b/package/busybox/patches/460-truncated_ping_results.patch
index 5479886..dbb6e0b 100644
--- a/package/busybox/patches/460-truncated_ping_results.patch
+++ b/package/busybox/patches/460-truncated_ping_results.patch
@@ -1,7 +1,5 @@
-Index: busybox-1.7.2/networking/ping.c
-===================================================================
---- busybox-1.7.2.orig/networking/ping.c 2007-10-30 15:34:59.000000000 -0500
-+++ busybox-1.7.2/networking/ping.c 2007-10-30 15:35:05.000000000 -0500
+--- a/networking/ping.c
++++ b/networking/ping.c
@@ -91,7 +91,7 @@
struct sockaddr_in pingaddr;
struct icmp *pkt;
@@ -10,7 +8,7 @@ Index: busybox-1.7.2/networking/ping.c
+ char packet[datalen + ICMP_MINLEN + MAXIPLEN + MAXICMPLEN];
pingsock = create_icmp_socket();
- pingaddr = lsa->sin;
+ pingaddr = lsa->u.sin;
@@ -101,7 +101,7 @@
pkt->icmp_type = ICMP_ECHO;
pkt->icmp_cksum = in_cksum((unsigned short *) pkt, sizeof(packet));
@@ -28,7 +26,7 @@ Index: busybox-1.7.2/networking/ping.c
+ char packet[datalen + ICMP_MINLEN + MAXIPLEN + MAXICMPLEN];
pingsock = create_icmp6_socket();
- pingaddr = lsa->sin6;
+ pingaddr = lsa->u.sin6;
@@ -147,7 +147,7 @@
sockopt = offsetof(struct icmp6_hdr, icmp6_cksum);
setsockopt(pingsock, SOL_RAW, IPV6_CHECKSUM, &sockopt, sizeof(sockopt));
diff --git a/package/busybox/patches/470-insmod_search.patch b/package/busybox/patches/470-insmod_search.patch
index ef372ec..2a08fb7 100644
--- a/package/busybox/patches/470-insmod_search.patch
+++ b/package/busybox/patches/470-insmod_search.patch
@@ -1,7 +1,5 @@
-Index: busybox-1.8.1/modutils/insmod.c
-===================================================================
---- busybox-1.8.1.orig/modutils/insmod.c 2007-11-10 02:40:49.000000000 +0100
-+++ busybox-1.8.1/modutils/insmod.c 2007-11-10 17:28:44.391223047 +0100
+--- a/modutils/insmod.c
++++ b/modutils/insmod.c
@@ -61,21 +61,117 @@
#include "libbb.h"
#include <libgen.h>
@@ -27,9 +25,9 @@ Index: busybox-1.8.1/modutils/insmod.c
#if ENABLE_FEATURE_2_6_MODULES
-static int insmod_ng_main(int argc, char **argv);
+int insmod_main_26(int argc, char **argv);
-+#endif
+ #endif
+int insmod_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-+
+
+static char *g_filename = NULL;
+#define _PATH_MODULES "/lib/modules"
+
@@ -69,7 +67,7 @@ Index: busybox-1.8.1/modutils/insmod.c
+ if (k_version <= 4)
+ suffix = ".o";
+ else
- #endif
++#endif
+ suffix = ".ko";
+
+ len = strlen(filename);
@@ -111,7 +109,7 @@ Index: busybox-1.8.1/modutils/insmod.c
+ ret = 0;
+ else
+ free(g_filename);
-
++
+done:
+ free(filename);
+
@@ -125,23 +123,50 @@ Index: busybox-1.8.1/modutils/insmod.c
#if ENABLE_FEATURE_INSMOD_LOADINKMEM
#define LOADBITS 0
#else
-@@ -673,7 +769,6 @@
- #endif
+@@ -184,7 +280,6 @@
+ /* Microblaze */
+ #if defined(__microblaze__)
+ #define USE_SINGLE
+-#include <linux/elf-em.h>
+ #define MATCH_MACHINE(x) (x == EM_XILINX_MICROBLAZE)
+ #define SHT_RELM SHT_RELA
+ #define Elf32_RelM Elf32_Rela
+@@ -452,7 +547,7 @@
+ /* The system calls unchanged between 2.0 and 2.1. */
+
+ unsigned long create_module(const char *, size_t);
+-int delete_module(const char *module, unsigned int flags);
++int delete_module(const char *);
--#define _PATH_MODULES "/lib/modules"
+ #endif /* module.h */
+@@ -652,7 +747,7 @@
+
+ static enum obj_reloc arch_apply_relocation(struct obj_file *f,
+ struct obj_section *targsec,
+- /*struct obj_section *symsec,*/
++ struct obj_section *symsec,
+ struct obj_symbol *sym,
+ ElfW(RelM) *rel, ElfW(Addr) value);
+
+@@ -673,6 +768,7 @@
+ #define SPFX ""
+ #endif
+
++
enum { STRVERSIONLEN = 64 };
/*======================================================================*/
-@@ -789,27 +884,6 @@
+@@ -788,28 +884,6 @@
static char *m_fullName;
-/*======================================================================*/
-
-
--static int check_module_name_match(const char *filename, struct stat *statbuf,
-- void *userdata, int depth)
+-static int check_module_name_match(const char *filename,
+- struct stat *statbuf ATTRIBUTE_UNUSED,
+- void *userdata, int depth ATTRIBUTE_UNUSED)
-{
- char *fullname = (char *) userdata;
- char *tmp;
@@ -161,7 +186,170 @@ Index: busybox-1.8.1/modutils/insmod.c
/*======================================================================*/
-@@ -3897,145 +3971,57 @@
+@@ -835,27 +909,18 @@
+ static enum obj_reloc
+ arch_apply_relocation(struct obj_file *f,
+ struct obj_section *targsec,
+- /*struct obj_section *symsec,*/
++ struct obj_section *symsec,
+ struct obj_symbol *sym,
+ ElfW(RelM) *rel, ElfW(Addr) v)
+ {
+-#if defined(__arm__) || defined(__i386__) || defined(__mc68000__) \
+- || defined(__sh__) || defined(__s390__) || defined(__x86_64__)
+ struct arch_file *ifile = (struct arch_file *) f;
+-#endif
+ enum obj_reloc ret = obj_reloc_ok;
+ ElfW(Addr) *loc = (ElfW(Addr) *) (targsec->contents + rel->r_offset);
+-#if defined(__arm__) || defined(__H8300H__) || defined(__H8300S__) \
+- || defined(__i386__) || defined(__mc68000__) || defined(__microblaze__) \
+- || defined(__mips__) || defined(__nios2__) || defined(__powerpc__) \
+- || defined(__s390__) || defined(__sh__) || defined(__x86_64__)
+ ElfW(Addr) dot = targsec->header.sh_addr + rel->r_offset;
+-#endif
+ #if defined(USE_GOT_ENTRIES) || defined(USE_PLT_ENTRIES)
+ struct arch_symbol *isym = (struct arch_symbol *) sym;
+ #endif
+-#if defined(__arm__) || defined(__i386__) || defined(__mc68000__) \
+- || defined(__sh__) || defined(__s390__)
++#if defined(__arm__) || defined(__i386__) || defined(__mc68000__) || defined(__sh__) || defined(__s390__)
+ #if defined(USE_GOT_ENTRIES)
+ ElfW(Addr) got = ifile->got ? ifile->got->header.sh_addr : 0;
+ #endif
+@@ -953,7 +1018,6 @@
+
+ case R_386_PLT32:
+ case R_386_PC32:
+- case R_386_GOTOFF:
+ *loc += v - dot;
+ break;
+
+@@ -972,6 +1036,9 @@
+
+ case R_386_GOT32:
+ goto bb_use_got;
++
++ case R_386_GOTOFF:
++ *loc += v - got;
+ break;
+
+ #elif defined(__microblaze__)
+@@ -1758,7 +1825,7 @@
+
+ #if defined(USE_SINGLE)
+
+-static int arch_single_init(/*ElfW(RelM) *rel,*/ struct arch_single_entry *single,
++static int arch_single_init(ElfW(RelM) *rel, struct arch_single_entry *single,
+ int offset, int size)
+ {
+ if (single->allocated == 0) {
+@@ -1906,7 +1973,7 @@
+ #if defined(USE_GOT_ENTRIES)
+ if (got_allocate) {
+ got_offset += arch_single_init(
+- /*rel,*/ &intsym->gotent,
++ rel, &intsym->gotent,
+ got_offset, GOT_ENTRY_SIZE);
+
+ got_needed = 1;
+@@ -1920,7 +1987,7 @@
+ plt_offset, PLT_ENTRY_SIZE);
+ #else
+ plt_offset += arch_single_init(
+- /*rel,*/ &intsym->pltent,
++ rel, &intsym->pltent,
+ plt_offset, PLT_ENTRY_SIZE);
+ #endif
+ plt_needed = 1;
+@@ -1958,8 +2025,7 @@
+ while (n > 0) {
+ ch = *name++;
+ h = (h << 4) + ch;
+- g = (h & 0xf0000000);
+- if (g != 0) {
++ if ((g = (h & 0xf0000000)) != 0) {
+ h ^= g >> 24;
+ h &= ~g;
+ }
+@@ -2038,7 +2104,7 @@
+ int n_type = ELF_ST_TYPE(info);
+ int n_binding = ELF_ST_BIND(info);
+
+- for (sym = f->symtab[hash]; sym; sym = sym->next) {
++ for (sym = f->symtab[hash]; sym; sym = sym->next)
+ if (f->symbol_cmp(sym->name, name) == 0) {
+ int o_secidx = sym->secidx;
+ int o_info = sym->info;
+@@ -2097,14 +2163,14 @@
+ return sym;
+ }
+ }
+- }
+
+ /* Completely new symbol. */
+ sym = arch_new_symbol();
+ sym->next = f->symtab[hash];
+ f->symtab[hash] = sym;
+ sym->ksymidx = -1;
+- if (ELF_ST_BIND(info) == STB_LOCAL && symidx != (unsigned long)(-1)) {
++
++ if (ELF_ST_BIND(info) == STB_LOCAL && symidx != -1) {
+ if (symidx >= f->local_symtab_size)
+ bb_error_msg("local symbol %s with index %ld exceeds local_symtab_size %ld",
+ name, (long) symidx, (long) f->local_symtab_size);
+@@ -3227,7 +3293,7 @@
+
+ /* Do it! */
+ switch (arch_apply_relocation
+- (f, targsec, /*symsec,*/ intsym, rel, value)
++ (f, targsec, symsec, intsym, rel, value)
+ ) {
+ case obj_reloc_ok:
+ break;
+@@ -3306,11 +3372,11 @@
+
+ /*======================================================================*/
+
+-static struct obj_file *obj_load(FILE * fp, int loadprogbits ATTRIBUTE_UNUSED)
++static struct obj_file *obj_load(FILE * fp, int loadprogbits)
+ {
+ struct obj_file *f;
+ ElfW(Shdr) * section_headers;
+- size_t shnum, i;
++ int shnum, i;
+ char *shstrtab;
+
+ /* Read the file header. */
+@@ -3582,7 +3648,7 @@
+ while (ptr < endptr) {
+ value = strchr(ptr, '=');
+ if (value && strncmp(ptr, "license", value-ptr) == 0) {
+- unsigned i;
++ int i;
+ if (license)
+ *license = value+1;
+ for (i = 0; i < ARRAY_SIZE(gpl_licenses); ++i) {
+@@ -3686,9 +3752,6 @@
+ * start of some sections. this info is used by ksymoops to do better
+ * debugging.
+ */
+-#if !ENABLE_FEATURE_INSMOD_VERSION_CHECKING
+-#define get_module_version(f, str) get_module_version(str)
+-#endif
+ static int
+ get_module_version(struct obj_file *f, char str[STRVERSIONLEN])
+ {
+@@ -3721,8 +3784,7 @@
+ struct obj_symbol *sym;
+ char *name, *absolute_filename;
+ char str[STRVERSIONLEN];
+- unsigned i;
+- int l, lm_name, lfilename, use_ksymtab, version;
++ int i, l, lm_name, lfilename, use_ksymtab, version;
+ struct stat statbuf;
+
+ /* WARNING: was using realpath, but replaced by readlink to stop using
+@@ -3909,145 +3971,57 @@
void print_load_map(struct obj_file *f);
#endif
@@ -257,10 +445,8 @@ Index: busybox-1.8.1/modutils/insmod.c
- } else {
- free(tmp1);
- tmp1 = NULL; /* flag for free(m_name) before exit() */
-+ tmp = xstrdup(arg1);
-+ m_name = basename(tmp);
- }
-
+- }
+-
- /* Get a filedesc for the module. Check that we have a complete path */
- if (stat(arg1, &st) < 0 || !S_ISREG(st.st_mode)
- || (fp = fopen(arg1, "r")) == NULL
@@ -271,7 +457,7 @@ Index: busybox-1.8.1/modutils/insmod.c
- char *module_dir;
- char *tmdn;
-
-- tmdn = concat_path_file(_PATH_MODULES, myuname.release);
+- tmdn = concat_path_file(CONFIG_DEFAULT_MODULES_DIR, myuname.release);
- /* Jump through hoops in case /lib/modules/`uname -r`
- * is a symlink. We do not want recursive_action to
- * follow symlinks, but we do want to follow the
@@ -293,9 +479,9 @@ Index: busybox-1.8.1/modutils/insmod.c
-
- free(m_filename);
- m_filename = NULL;
-- module_dir = xmalloc_readlink(_PATH_MODULES);
+- module_dir = xmalloc_readlink(CONFIG_DEFAULT_MODULES_DIR);
- if (!module_dir)
-- module_dir = xstrdup(_PATH_MODULES);
+- module_dir = xstrdup(CONFIG_DEFAULT_MODULES_DIR);
- /* No module found under /lib/modules/`uname -r`, this
- * time cast the net a bit wider. Search /lib/modules/ */
- r = recursive_action(module_dir, ACTION_RECURSE,
@@ -308,10 +494,12 @@ Index: busybox-1.8.1/modutils/insmod.c
- ) {
- bb_error_msg_and_die("%s: module not found", m_fullName);
- }
-- }
++ tmp = xstrdup(arg1);
++ m_name = basename(tmp);
+ }
- } else
- m_filename = xstrdup(arg1);
--
+
- if (flag_verbose)
- printf("Using %s\n", m_filename);
-
@@ -329,7 +517,7 @@ Index: busybox-1.8.1/modutils/insmod.c
f = obj_load(fp, LOADBITS);
-@@ -4062,7 +4048,7 @@
+@@ -4074,7 +4048,7 @@
"\t%s was compiled for kernel version %s\n"
"\twhile this kernel is version %s",
flag_force_load ? "warning: " : "",
@@ -338,7 +526,7 @@ Index: busybox-1.8.1/modutils/insmod.c
if (!flag_force_load)
goto out;
}
-@@ -4104,7 +4090,7 @@
+@@ -4116,7 +4090,7 @@
hide_special_symbols(f);
#if ENABLE_FEATURE_INSMOD_KSYMOOPS_SYMBOLS
@@ -347,7 +535,37 @@ Index: busybox-1.8.1/modutils/insmod.c
#endif /* FEATURE_INSMOD_KSYMOOPS_SYMBOLS */
new_create_module_ksymtab(f);
-@@ -4147,18 +4133,19 @@
+@@ -4125,7 +4099,7 @@
+ m_size = obj_load_size(f);
+
+ m_addr = create_module(m_name, m_size);
+- if (m_addr == (ElfW(Addr))(-1)) switch (errno) {
++ if (m_addr == -1) switch (errno) {
+ case EEXIST:
+ bb_error_msg_and_die("a module named %s already exists", m_name);
+ case ENOMEM:
+@@ -4141,36 +4115,37 @@
+ * now we can load them directly into the kernel memory
+ */
+ if (!obj_load_progbits(fp, f, (char*)m_addr)) {
+- delete_module(m_name, 0);
++ delete_module(m_name);
+ goto out;
+ }
+ #endif
+
+ if (!obj_relocate(f, m_addr)) {
+- delete_module(m_name, 0);
++ delete_module(m_name);
+ goto out;
+ }
+
+ if (!new_init_module(m_name, f, m_size)) {
+- delete_module(m_name, 0);
++ delete_module(m_name);
+ goto out;
+ }
+
if (flag_print_load_map)
print_load_map(f);
@@ -372,19 +590,34 @@ Index: busybox-1.8.1/modutils/insmod.c
}
#endif /* ENABLE_FEATURE_2_4_MODULES */
-@@ -4190,23 +4177,32 @@
+@@ -4182,15 +4157,8 @@
+ #if ENABLE_FEATURE_2_6_MODULES
+
+ #include <sys/mman.h>
+-
+-#if defined __UCLIBC__ && !ENABLE_FEATURE_2_4_MODULES
+-/* big time suckage. The old prototype above renders our nice fwd-decl wrong */
+-extern int init_module(void *module, unsigned long len, const char *options);
+-#else
+ #include <asm/unistd.h>
+ #include <sys/syscall.h>
+-#define init_module(mod, len, opts) syscall(__NR_init_module, mod, len, opts)
+-#endif
+
+ /* We use error numbers in a loose translation... */
+ static const char *moderror(int err)
+@@ -4209,22 +4177,32 @@
}
}
-#if !ENABLE_FEATURE_2_4_MODULES
-int insmod_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
--int insmod_main(int argc, char **argv)
+-int insmod_main(int argc ATTRIBUTE_UNUSED, char **argv)
-#else
--static int insmod_ng_main(int argc, char **argv)
+-static int insmod_ng_main(int argc ATTRIBUTE_UNUSED, char **argv)
-#endif
+int insmod_main_26(int argc, char **argv)
{
-- long ret;
- size_t len;
+ char *filename, *options;
+ struct utsname myuname;
@@ -414,12 +647,20 @@ Index: busybox-1.8.1/modutils/insmod.c
/* Rest is options */
options = xzalloc(1);
optlen = 0;
-@@ -4216,36 +4212,47 @@
+@@ -4234,41 +4212,47 @@
optlen += sprintf(options + optlen, (strchr(*argv,' ') ? "\"%s\" " : "%s "), *argv);
}
-#if 0
-- /* Any special reason why mmap? It isn't performace critical... */
+- /* Any special reason why mmap? It isn't performance critical. -vda */
+- /* Yes, xmalloc'ing can use *alot* of RAM. Don't forget that there are
+- * modules out there that are half a megabyte! mmap()ing is way nicer
+- * for small mem boxes, i guess. */
+- /* But after load, these modules will take up that 0.5mb in kernel
+- * anyway. Using malloc here causes only a transient spike to 1mb,
+- * after module is loaded, we go back to normal 0.5mb usage
+- * (in kernel). Also, mmap isn't magic - when we touch mapped data,
+- * we use memory. -vda */
- int fd;
- struct stat st;
- unsigned long len;
@@ -440,18 +681,19 @@ Index: busybox-1.8.1/modutils/insmod.c
len = MAXINT(ssize_t);
- map = xmalloc_open_read_close(filename, &len);
-#endif
--
+ map = xmalloc_open_read_close(g_filename, &len);
- ret = syscall(__NR_init_module, map, len, options);
- if (ret != 0) {
- bb_perror_msg_and_die("cannot insert '%s': %s (%li)",
-- filename, moderror(errno), ret);
++ ret = syscall(__NR_init_module, map, len, options);
++ if (ret != 0) {
++ bb_perror_msg_and_die("cannot insert '%s': %s (%li)",
+ g_filename, moderror(errno), ret);
- }
++ }
+done:
+ if (g_filename && (g_filename != filename))
+ free(g_filename);
+- if (init_module(map, len, options) != 0)
+- bb_error_msg_and_die("cannot insert '%s': %s",
+- filename, moderror(errno));
- return 0;
+ return ret;
}
diff --git a/package/busybox/patches/480-disable_braindead_optimization.patch b/package/busybox/patches/480-disable_braindead_optimization.patch
index e5664e1..e69de29 100644
--- a/package/busybox/patches/480-disable_braindead_optimization.patch
+++ b/package/busybox/patches/480-disable_braindead_optimization.patch
@@ -1,40 +0,0 @@
-Index: busybox-1.8.1/editors/awk.c
-===================================================================
---- busybox-1.8.1.orig/editors/awk.c 2007-11-10 23:53:16.950053243 +0100
-+++ busybox-1.8.1/editors/awk.c 2007-11-10 23:53:23.422422084 +0100
-@@ -446,7 +446,7 @@
- tsplitter fsplitter, rsplitter;
- };
- #define G1 (ptr_to_globals[-1])
--#define G (*(struct globals2 *const)ptr_to_globals)
-+#define G (*(struct globals2 *)ptr_to_globals)
- /* For debug. nm --size-sort awk.o | grep -vi ' [tr] ' */
- /* char G1size[sizeof(G1)]; - 0x6c */
- /* char Gsize[sizeof(G)]; - 0x1cc */
-Index: busybox-1.8.1/include/libbb.h
-===================================================================
---- busybox-1.8.1.orig/include/libbb.h 2007-11-10 23:53:38.135260518 +0100
-+++ busybox-1.8.1/include/libbb.h 2007-11-10 23:54:15.773405393 +0100
-@@ -1111,8 +1111,10 @@
- struct globals;
- /* '*const' ptr makes gcc optimize code much better.
- * Magic prevents ptr_to_globals from going into rodata.
-- * If you want to assign a value, use PTR_TO_GLOBALS = xxx */
--extern struct globals *const ptr_to_globals;
-+ * If you want to assign a value, use PTR_TO_GLOBALS = xxx
-+ * unfortunately the above hack doesn't work properly :P
-+ */
-+extern struct globals *ptr_to_globals;
- #define PTR_TO_GLOBALS (*(struct globals**)&ptr_to_globals)
-
-
-Index: busybox-1.8.1/libbb/messages.c
-===================================================================
---- busybox-1.8.1.orig/libbb/messages.c 2007-11-10 23:52:47.116353117 +0100
-+++ busybox-1.8.1/libbb/messages.c 2007-11-10 23:52:57.752959269 +0100
-@@ -74,4 +74,4 @@
-
- struct globals;
- /* Make it reside in R/W memory: */
--struct globals *const ptr_to_globals __attribute__ ((section (".data")));
-+struct globals *ptr_to_globals __attribute__ ((section (".data")));
diff --git a/package/busybox/patches/500-ipkg.patch b/package/busybox/patches/500-ipkg.patch
index 7867634..d7e350e 100644
--- a/package/busybox/patches/500-ipkg.patch
+++ b/package/busybox/patches/500-ipkg.patch
@@ -1,8 +1,6 @@
-Index: busybox-1.8.1/archival/Config.in
-===================================================================
---- busybox-1.8.1.orig/archival/Config.in 2007-11-10 17:39:21.063504932 +0100
-+++ busybox-1.8.1/archival/Config.in 2007-11-10 17:40:53.320762376 +0100
-@@ -131,6 +131,15 @@
+--- a/archival/Config.in
++++ b/archival/Config.in
+@@ -139,6 +139,15 @@
gzip is used to compress files.
It's probably the most widely used UNIX compression program.
@@ -18,11 +16,9 @@ Index: busybox-1.8.1/archival/Config.in
config RPM2CPIO
bool "rpm2cpio"
default n
-Index: busybox-1.8.1/archival/dpkg.c
-===================================================================
---- busybox-1.8.1.orig/archival/dpkg.c 2007-11-10 17:39:21.071505389 +0100
-+++ busybox-1.8.1/archival/dpkg.c 2007-11-10 17:40:53.320762376 +0100
-@@ -1455,6 +1455,10 @@
+--- a/archival/dpkg.c
++++ b/archival/dpkg.c
+@@ -1482,6 +1482,10 @@
return ar_handle->sub_archive->buffer;
}
@@ -33,7 +29,7 @@ Index: busybox-1.8.1/archival/dpkg.c
static void data_extract_all_prefix(archive_handle_t *archive_handle)
{
char *name_ptr = archive_handle->file_header->name;
-@@ -1466,6 +1470,8 @@
+@@ -1493,6 +1497,8 @@
}
}
@@ -42,10 +38,8 @@ Index: busybox-1.8.1/archival/dpkg.c
static void unpack_package(deb_file_t *deb_file)
{
const char *package_name = name_hashtable[package_hashtable[deb_file->package]->name];
-Index: busybox-1.8.1/archival/ipkg.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/ipkg.c 2007-11-10 17:41:16.866104145 +0100
+--- /dev/null
++++ b/archival/ipkg.c
@@ -0,0 +1,27 @@
+/* ipkg.c - the itsy package management system
+
@@ -74,10 +68,8 @@ Index: busybox-1.8.1/archival/ipkg.c
+{
+ return ipkg_op(argc, argv);
+}
-Index: busybox-1.8.1/archival/Kbuild
-===================================================================
---- busybox-1.8.1.orig/archival/Kbuild 2007-11-10 17:39:21.083506071 +0100
-+++ busybox-1.8.1/archival/Kbuild 2007-11-10 17:40:53.332763058 +0100
+--- a/archival/Kbuild
++++ b/archival/Kbuild
@@ -16,6 +16,7 @@
lib-$(CONFIG_DPKG_DEB) += dpkg_deb.o
lib-$(CONFIG_GUNZIP) += bbunzip.o
@@ -86,10 +78,8 @@ Index: busybox-1.8.1/archival/Kbuild
lib-$(CONFIG_RPM2CPIO) += rpm2cpio.o
lib-$(CONFIG_RPM) += rpm.o
lib-$(CONFIG_TAR) += tar.o
-Index: busybox-1.8.1/archival/libipkg/args.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/args.c 2007-11-10 17:40:53.336763287 +0100
+--- /dev/null
++++ b/archival/libipkg/args.c
@@ -0,0 +1,242 @@
+/* args.c - parse command-line args
+
@@ -333,10 +323,8 @@ Index: busybox-1.8.1/archival/libipkg/args.c
+{
+ bb_error_msg("version %s\n", IPKG_VERSION);
+}
-Index: busybox-1.8.1/archival/libipkg/args.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/args.h 2007-11-10 17:40:53.340763516 +0100
+--- /dev/null
++++ b/archival/libipkg/args.h
@@ -0,0 +1,72 @@
+/* args.h - parse command-line args
+
@@ -410,10 +398,8 @@ Index: busybox-1.8.1/archival/libipkg/args.h
+void args_usage(char *complaint);
+
+#endif
-Index: busybox-1.8.1/archival/libipkg/conffile.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/conffile.c 2007-11-10 17:40:53.340763516 +0100
+--- /dev/null
++++ b/archival/libipkg/conffile.c
@@ -0,0 +1,64 @@
+/* conffile.c - the itsy package management system
+
@@ -479,10 +465,8 @@ Index: busybox-1.8.1/archival/libipkg/conffile.c
+
+ return ret;
+}
-Index: busybox-1.8.1/archival/libipkg/conffile.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/conffile.h 2007-11-10 17:40:53.340763516 +0100
+--- /dev/null
++++ b/archival/libipkg/conffile.h
@@ -0,0 +1,30 @@
+/* conffile.h - the itsy package management system
+
@@ -514,10 +498,8 @@ Index: busybox-1.8.1/archival/libipkg/conffile.h
+
+#endif
+
-Index: busybox-1.8.1/archival/libipkg/conffile_list.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/conffile_list.c 2007-11-10 17:40:53.340763516 +0100
+--- /dev/null
++++ b/archival/libipkg/conffile_list.c
@@ -0,0 +1,47 @@
+/* conffile_list.c - the itsy package management system
+
@@ -566,10 +548,8 @@ Index: busybox-1.8.1/archival/libipkg/conffile_list.c
+ return nv_pair_list_pop(list);
+}
+
-Index: busybox-1.8.1/archival/libipkg/conffile_list.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/conffile_list.h 2007-11-10 17:40:53.340763516 +0100
+--- /dev/null
++++ b/archival/libipkg/conffile_list.h
@@ -0,0 +1,36 @@
+/* conffile_list.h - the itsy package management system
+
@@ -607,10 +587,8 @@ Index: busybox-1.8.1/archival/libipkg/conffile_list.h
+
+#endif
+
-Index: busybox-1.8.1/archival/libipkg/file_util.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/file_util.c 2007-11-10 17:40:53.340763516 +0100
+--- /dev/null
++++ b/archival/libipkg/file_util.c
@@ -0,0 +1,132 @@
+/* file_util.c - convenience routines for common stat operations
+
@@ -744,10 +722,8 @@ Index: busybox-1.8.1/archival/libipkg/file_util.c
+ return hash_file(file_name, HASH_MD5);
+}
+
-Index: busybox-1.8.1/archival/libipkg/file_util.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/file_util.h 2007-11-10 17:40:53.344763742 +0100
+--- /dev/null
++++ b/archival/libipkg/file_util.h
@@ -0,0 +1,29 @@
+/* file_util.h - convenience routines for common file operations
+
@@ -778,10 +754,8 @@ Index: busybox-1.8.1/archival/libipkg/file_util.h
+char *file_md5sum_alloc(const char *file_name);
+
+#endif
-Index: busybox-1.8.1/archival/libipkg/hash_table.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/hash_table.c 2007-11-10 17:40:53.344763742 +0100
+--- /dev/null
++++ b/archival/libipkg/hash_table.c
@@ -0,0 +1,155 @@
+/* hash.c - hash tables for ipkg
+
@@ -938,10 +912,8 @@ Index: busybox-1.8.1/archival/libipkg/hash_table.c
+ }
+}
+
-Index: busybox-1.8.1/archival/libipkg/hash_table.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/hash_table.h 2007-11-10 17:40:53.344763742 +0100
+--- /dev/null
++++ b/archival/libipkg/hash_table.h
@@ -0,0 +1,44 @@
+/* hash.h - hash tables for ipkg
+
@@ -987,10 +959,8 @@ Index: busybox-1.8.1/archival/libipkg/hash_table.h
+void hash_table_foreach(hash_table_t *hash, void (*f)(const char *key, void *entry, void *data), void *data);
+
+#endif /* _HASH_TABLE_H_ */
-Index: busybox-1.8.1/archival/libipkg/ipkg_cmd.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/ipkg_cmd.c 2007-11-10 17:40:53.344763742 +0100
+--- /dev/null
++++ b/archival/libipkg/ipkg_cmd.c
@@ -0,0 +1,1431 @@
+/* ipkg_cmd.c - the itsy package management system
+
@@ -2423,10 +2393,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_cmd.c
+}
+
+
-Index: busybox-1.8.1/archival/libipkg/ipkg_cmd.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/ipkg_cmd.h 2007-11-10 17:40:53.348763971 +0100
+--- /dev/null
++++ b/archival/libipkg/ipkg_cmd.h
@@ -0,0 +1,46 @@
+/* ipkg_cmd.h - the itsy package management system
+
@@ -2474,10 +2442,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_cmd.h
+int pkg_mark_provides(pkg_t *pkg);
+
+#endif
-Index: busybox-1.8.1/archival/libipkg/ipkg_conf.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/ipkg_conf.c 2007-11-10 17:40:53.348763971 +0100
+--- /dev/null
++++ b/archival/libipkg/ipkg_conf.c
@@ -0,0 +1,711 @@
+/* ipkg_conf.c - the itsy package management system
+
@@ -3190,10 +3156,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_conf.c
+ sprintf_alloc(&root_filename, "%s%s", (conf->offline_root ? conf->offline_root : ""), filename);
+ return root_filename;
+}
-Index: busybox-1.8.1/archival/libipkg/ipkg_conf.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/ipkg_conf.h 2007-11-10 17:40:53.348763971 +0100
+--- /dev/null
++++ b/archival/libipkg/ipkg_conf.h
@@ -0,0 +1,107 @@
+/* ipkg_conf.h - the itsy package management system
+
@@ -3302,10 +3266,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_conf.h
+char *root_filename_alloc(ipkg_conf_t *conf, char *filename);
+
+#endif
-Index: busybox-1.8.1/archival/libipkg/ipkg_configure.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/ipkg_configure.c 2007-11-10 17:40:53.348763971 +0100
+--- /dev/null
++++ b/archival/libipkg/ipkg_configure.c
@@ -0,0 +1,40 @@
+/* ipkg_configure.c - the itsy package management system
+
@@ -3347,10 +3309,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_configure.c
+ return 0;
+}
+
-Index: busybox-1.8.1/archival/libipkg/ipkg_configure.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/ipkg_configure.h 2007-11-10 17:40:53.348763971 +0100
+--- /dev/null
++++ b/archival/libipkg/ipkg_configure.h
@@ -0,0 +1,25 @@
+/* ipkg_configure.h - the itsy package management system
+
@@ -3377,10 +3337,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_configure.h
+int ipkg_configure(ipkg_conf_t *ipkg_conf, pkg_t *pkg);
+
+#endif
-Index: busybox-1.8.1/archival/libipkg/ipkg_download.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/ipkg_download.c 2007-11-10 17:40:53.352764197 +0100
+--- /dev/null
++++ b/archival/libipkg/ipkg_download.c
@@ -0,0 +1,195 @@
+/* ipkg_download.c - the itsy package management system
+
@@ -3577,10 +3535,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_download.c
+ }
+ return 0;
+}
-Index: busybox-1.8.1/archival/libipkg/ipkg_download.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/ipkg_download.h 2007-11-10 17:40:53.352764197 +0100
+--- /dev/null
++++ b/archival/libipkg/ipkg_download.h
@@ -0,0 +1,30 @@
+/* ipkg_download.h - the itsy package management system
+
@@ -3612,10 +3568,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_download.h
+int ipkg_prepare_url_for_install(ipkg_conf_t *conf, const char *url, char **namep);
+
+#endif
-Index: busybox-1.8.1/archival/libipkg/ipkg.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/ipkg.h 2007-11-10 17:40:53.352764197 +0100
+--- /dev/null
++++ b/archival/libipkg/ipkg.h
@@ -0,0 +1,74 @@
+/* ipkg.h - the itsy package management system
+
@@ -3691,10 +3645,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg.h
+extern ipkg_conf_t *global_conf;
+
+#endif
-Index: busybox-1.8.1/archival/libipkg/ipkg_includes.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/ipkg_includes.h 2007-11-10 17:40:53.352764197 +0100
+--- /dev/null
++++ b/archival/libipkg/ipkg_includes.h
@@ -0,0 +1,79 @@
+#ifndef IPKG_INCLUDES_H
+#define IPKG_INCLUDES_H
@@ -3775,10 +3727,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_includes.h
+#endif
+
+#endif /* IPKG_INCLUDES_H */
-Index: busybox-1.8.1/archival/libipkg/ipkg_install.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/ipkg_install.c 2007-11-10 17:40:53.356764426 +0100
+--- /dev/null
++++ b/archival/libipkg/ipkg_install.c
@@ -0,0 +1,1942 @@
+/* ipkg_install.c - the itsy package management system
+
@@ -5722,10 +5672,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_install.c
+}
+
+#endif
-Index: busybox-1.8.1/archival/libipkg/ipkg_install.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/ipkg_install.h 2007-11-10 17:40:53.356764426 +0100
+--- /dev/null
++++ b/archival/libipkg/ipkg_install.h
@@ -0,0 +1,35 @@
+/* ipkg_install.h - the itsy package management system
+
@@ -5762,10 +5710,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_install.h
+int name_mark_dependencies_for_installation(ipkg_conf_t *conf, const char *pkg_name, pkg_vec_t *pkgs_needed);
+
+#endif
-Index: busybox-1.8.1/archival/libipkg/ipkg_message.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/ipkg_message.c 2007-11-10 17:40:53.356764426 +0100
+--- /dev/null
++++ b/archival/libipkg/ipkg_message.c
@@ -0,0 +1,61 @@
+/* ipkg_message.c - the itsy package management system
+
@@ -5828,10 +5774,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_message.c
+ }
+}
+#endif
-Index: busybox-1.8.1/archival/libipkg/ipkg_message.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/ipkg_message.h 2007-11-10 17:40:53.356764426 +0100
+--- /dev/null
++++ b/archival/libipkg/ipkg_message.h
@@ -0,0 +1,32 @@
+/* ipkg_message.h - the itsy package management system
+
@@ -5865,10 +5809,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_message.h
+extern void ipkg_message(ipkg_conf_t *conf, message_level_t level, const char *fmt, ...);
+
+#endif /* _IPKG_MESSAGE_H_ */
-Index: busybox-1.8.1/archival/libipkg/ipkg_remove.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/ipkg_remove.c 2007-11-10 17:40:53.360764656 +0100
+--- /dev/null
++++ b/archival/libipkg/ipkg_remove.c
@@ -0,0 +1,383 @@
+/* ipkg_remove.c - the itsy package management system
+
@@ -6253,10 +6195,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_remove.c
+
+ return 0;
+}
-Index: busybox-1.8.1/archival/libipkg/ipkg_remove.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/ipkg_remove.h 2007-11-10 17:40:53.360764656 +0100
+--- /dev/null
++++ b/archival/libipkg/ipkg_remove.h
@@ -0,0 +1,33 @@
+/* ipkg_remove.h - the itsy package management system
+
@@ -6291,10 +6231,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_remove.h
+
+
+#endif
-Index: busybox-1.8.1/archival/libipkg/ipkg_upgrade.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/ipkg_upgrade.c 2007-11-10 17:40:53.360764656 +0100
+--- /dev/null
++++ b/archival/libipkg/ipkg_upgrade.c
@@ -0,0 +1,77 @@
+/* ipkg_upgrade.c - the itsy package management system
+
@@ -6373,10 +6311,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_upgrade.c
+ new->state_flag |= SF_USER;
+ return ipkg_install_pkg(conf, new,1);
+}
-Index: busybox-1.8.1/archival/libipkg/ipkg_upgrade.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/ipkg_upgrade.h 2007-11-10 17:40:53.360764656 +0100
+--- /dev/null
++++ b/archival/libipkg/ipkg_upgrade.h
@@ -0,0 +1,18 @@
+/* ipkg_upgrade.c - the itsy package management system
+
@@ -6396,10 +6332,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_upgrade.h
+#include "ipkg.h"
+
+int ipkg_upgrade_pkg(ipkg_conf_t *conf, pkg_t *old);
-Index: busybox-1.8.1/archival/libipkg/ipkg_utils.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/ipkg_utils.c 2007-11-10 17:40:53.360764656 +0100
+--- /dev/null
++++ b/archival/libipkg/ipkg_utils.c
@@ -0,0 +1,181 @@
+/* ipkg_utils.c - the itsy package management system
+
@@ -6582,10 +6516,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_utils.c
+}
+
+
-Index: busybox-1.8.1/archival/libipkg/ipkg_utils.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/ipkg_utils.h 2007-11-10 17:40:53.360764656 +0100
+--- /dev/null
++++ b/archival/libipkg/ipkg_utils.h
@@ -0,0 +1,29 @@
+/* ipkg_utils.h - the itsy package management system
+
@@ -6616,10 +6548,8 @@ Index: busybox-1.8.1/archival/libipkg/ipkg_utils.h
+int line_is_blank(const char *line);
+
+#endif
-Index: busybox-1.8.1/archival/libipkg/Kbuild
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/Kbuild 2007-11-10 17:40:53.364764882 +0100
+--- /dev/null
++++ b/archival/libipkg/Kbuild
@@ -0,0 +1,60 @@
+# Makefile for busybox
+#
@@ -6681,10 +6611,8 @@ Index: busybox-1.8.1/archival/libipkg/Kbuild
+IPKG_ARCH:=$(TARGET_ARCH)
+endif
+CFLAGS += -DIPKG_LIB -DIPKGLIBDIR="\"/usr/lib\"" -DHOST_CPU_STR="\"$(IPKG_ARCH)\""
-Index: busybox-1.8.1/archival/libipkg/libipkg.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/libipkg.c 2007-11-10 17:40:53.364764882 +0100
+--- /dev/null
++++ b/archival/libipkg/libipkg.c
@@ -0,0 +1,527 @@
+/* ipkglib.c - the itsy package management system
+
@@ -7213,10 +7141,8 @@ Index: busybox-1.8.1/archival/libipkg/libipkg.c
+}
+
+#endif /* IPKG_LIB */
-Index: busybox-1.8.1/archival/libipkg/libipkg.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/libipkg.h 2007-11-10 17:40:53.364764882 +0100
+--- /dev/null
++++ b/archival/libipkg/libipkg.h
@@ -0,0 +1,88 @@
+/* ipkglib.h - the itsy package management system
+
@@ -7306,10 +7232,8 @@ Index: busybox-1.8.1/archival/libipkg/libipkg.h
+
+
+#endif
-Index: busybox-1.8.1/archival/libipkg/nv_pair.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/nv_pair.c 2007-11-10 17:40:53.364764882 +0100
+--- /dev/null
++++ b/archival/libipkg/nv_pair.c
@@ -0,0 +1,40 @@
+/* nv_pair.c - the itsy package management system
+
@@ -7351,10 +7275,8 @@ Index: busybox-1.8.1/archival/libipkg/nv_pair.c
+}
+
+
-Index: busybox-1.8.1/archival/libipkg/nv_pair.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/nv_pair.h 2007-11-10 17:40:53.372765337 +0100
+--- /dev/null
++++ b/archival/libipkg/nv_pair.h
@@ -0,0 +1,32 @@
+/* nv_pair.h - the itsy package management system
+
@@ -7388,10 +7310,8 @@ Index: busybox-1.8.1/archival/libipkg/nv_pair.h
+
+#endif
+
-Index: busybox-1.8.1/archival/libipkg/nv_pair_list.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/nv_pair_list.c 2007-11-10 17:40:53.372765337 +0100
+--- /dev/null
++++ b/archival/libipkg/nv_pair_list.c
@@ -0,0 +1,98 @@
+/* nv_pair_list.c - the itsy package management system
+
@@ -7491,10 +7411,8 @@ Index: busybox-1.8.1/archival/libipkg/nv_pair_list.c
+ }
+ return NULL;
+}
-Index: busybox-1.8.1/archival/libipkg/nv_pair_list.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/nv_pair_list.h 2007-11-10 17:40:53.372765337 +0100
+--- /dev/null
++++ b/archival/libipkg/nv_pair_list.h
@@ -0,0 +1,60 @@
+/* nv_pair_list.h - the itsy package management system
+
@@ -7556,10 +7474,8 @@ Index: busybox-1.8.1/archival/libipkg/nv_pair_list.h
+
+#endif
+
-Index: busybox-1.8.1/archival/libipkg/pkg.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/pkg.c 2007-11-10 17:40:53.376765566 +0100
+--- /dev/null
++++ b/archival/libipkg/pkg.c
@@ -0,0 +1,1747 @@
+/* pkg.c - the itsy package management system
+
@@ -9308,10 +9224,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg.c
+ }
+ return 0;
+}
-Index: busybox-1.8.1/archival/libipkg/pkg_depends.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/pkg_depends.c 2007-11-10 17:40:53.376765566 +0100
+--- /dev/null
++++ b/archival/libipkg/pkg_depends.c
@@ -0,0 +1,1031 @@
+/* pkg_depends.c - the itsy package management system
+
@@ -10344,10 +10258,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_depends.c
+
+ return 0;
+}
-Index: busybox-1.8.1/archival/libipkg/pkg_depends.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/pkg_depends.h 2007-11-10 17:40:53.376765566 +0100
+--- /dev/null
++++ b/archival/libipkg/pkg_depends.h
@@ -0,0 +1,105 @@
+/* pkg_depends.h - the itsy package management system
+
@@ -10454,10 +10366,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_depends.h
+int pkg_dependence_satisfied(ipkg_conf_t *conf, depend_t *depend);
+
+#endif
-Index: busybox-1.8.1/archival/libipkg/pkg_dest.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/pkg_dest.c 2007-11-10 17:40:53.376765566 +0100
+--- /dev/null
++++ b/archival/libipkg/pkg_dest.c
@@ -0,0 +1,92 @@
+/* pkg_dest.c - the itsy package management system
+
@@ -10551,10 +10461,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_dest.c
+
+ dest->root_dir = NULL;
+}
-Index: busybox-1.8.1/archival/libipkg/pkg_dest.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/pkg_dest.h 2007-11-10 17:40:53.380765796 +0100
+--- /dev/null
++++ b/archival/libipkg/pkg_dest.h
@@ -0,0 +1,38 @@
+/* pkg_dest.h - the itsy package management system
+
@@ -10594,10 +10502,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_dest.h
+
+#endif
+
-Index: busybox-1.8.1/archival/libipkg/pkg_dest_list.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/pkg_dest_list.c 2007-11-10 17:40:53.380765796 +0100
+--- /dev/null
++++ b/archival/libipkg/pkg_dest_list.c
@@ -0,0 +1,85 @@
+/* pkg_dest_list.c - the itsy package management system
+
@@ -10684,10 +10590,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_dest_list.c
+{
+ return (pkg_dest_list_elt_t *) void_list_pop((void_list_t *) list);
+}
-Index: busybox-1.8.1/archival/libipkg/pkg_dest_list.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/pkg_dest_list.h 2007-11-10 17:40:53.380765796 +0100
+--- /dev/null
++++ b/archival/libipkg/pkg_dest_list.h
@@ -0,0 +1,50 @@
+/* pkg_dest_list.h - the itsy package management system
+
@@ -10739,10 +10643,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_dest_list.h
+
+#endif
+
-Index: busybox-1.8.1/archival/libipkg/pkg_extract.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/pkg_extract.c 2007-11-10 17:40:53.380765796 +0100
+--- /dev/null
++++ b/archival/libipkg/pkg_extract.c
@@ -0,0 +1,224 @@
+/* pkg_extract.c - the itsy package management system
+
@@ -10968,10 +10870,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_extract.c
+
+ return 0;
+}
-Index: busybox-1.8.1/archival/libipkg/pkg_extract.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/pkg_extract.h 2007-11-10 17:40:53.380765796 +0100
+--- /dev/null
++++ b/archival/libipkg/pkg_extract.h
@@ -0,0 +1,32 @@
+/* pkg_extract.c - the itsy package management system
+
@@ -11005,10 +10905,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_extract.h
+int pkg_extract_data_file_names_to_stream(pkg_t *pkg, FILE *file);
+
+#endif
-Index: busybox-1.8.1/archival/libipkg/pkg.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/pkg.h 2007-11-10 17:40:53.384766022 +0100
+--- /dev/null
++++ b/archival/libipkg/pkg.h
@@ -0,0 +1,229 @@
+/* pkg.h - the itsy package management system
+
@@ -11239,10 +11137,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg.h
+int pkg_write_changed_filelists(ipkg_conf_t *conf);
+
+#endif
-Index: busybox-1.8.1/archival/libipkg/pkg_hash.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/pkg_hash.c 2007-11-10 17:40:53.388766251 +0100
+--- /dev/null
++++ b/archival/libipkg/pkg_hash.c
@@ -0,0 +1,616 @@
+/* ipkg_hash.c - the itsy package management system
+
@@ -11860,10 +11756,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_hash.c
+}
+
+
-Index: busybox-1.8.1/archival/libipkg/pkg_hash.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/pkg_hash.h 2007-11-10 17:40:53.388766251 +0100
+--- /dev/null
++++ b/archival/libipkg/pkg_hash.h
@@ -0,0 +1,61 @@
+/* pkg_hash.h - the itsy package management system
+
@@ -11926,10 +11820,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_hash.h
+
+#endif
+
-Index: busybox-1.8.1/archival/libipkg/pkg_parse.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/pkg_parse.c 2007-11-10 17:40:53.388766251 +0100
+--- /dev/null
++++ b/archival/libipkg/pkg_parse.c
@@ -0,0 +1,366 @@
+/* pkg_parse.c - the itsy package management system
+
@@ -12297,10 +12189,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_parse.c
+
+ return 0;
+}
-Index: busybox-1.8.1/archival/libipkg/pkg_parse.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/pkg_parse.h 2007-11-10 17:40:53.392766477 +0100
+--- /dev/null
++++ b/archival/libipkg/pkg_parse.h
@@ -0,0 +1,31 @@
+/* pkg_parse.h - the itsy package management system
+
@@ -12333,10 +12223,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_parse.h
+int pkg_valorize_other_field(pkg_t *pkg, char ***raw);
+
+#endif
-Index: busybox-1.8.1/archival/libipkg/pkg_src.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/pkg_src.c 2007-11-10 17:40:53.392766477 +0100
+--- /dev/null
++++ b/archival/libipkg/pkg_src.c
@@ -0,0 +1,43 @@
+/* pkg_src.c - the itsy package management system
+
@@ -12381,10 +12269,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_src.c
+}
+
+
-Index: busybox-1.8.1/archival/libipkg/pkg_src.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/pkg_src.h 2007-11-10 17:40:53.392766477 +0100
+--- /dev/null
++++ b/archival/libipkg/pkg_src.h
@@ -0,0 +1,34 @@
+/* pkg_src.h - the itsy package management system
+
@@ -12420,10 +12306,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_src.h
+void pkg_src_deinit(pkg_src_t *src);
+
+#endif
-Index: busybox-1.8.1/archival/libipkg/pkg_src_list.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/pkg_src_list.c 2007-11-10 17:40:53.392766477 +0100
+--- /dev/null
++++ b/archival/libipkg/pkg_src_list.c
@@ -0,0 +1,75 @@
+/* pkg_src_list.c - the itsy package management system
+
@@ -12500,10 +12384,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_src_list.c
+{
+ return (pkg_src_list_elt_t *) void_list_pop((void_list_t *) list);
+}
-Index: busybox-1.8.1/archival/libipkg/pkg_src_list.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/pkg_src_list.h 2007-11-10 17:40:53.396766706 +0100
+--- /dev/null
++++ b/archival/libipkg/pkg_src_list.h
@@ -0,0 +1,57 @@
+/* pkg_src_list.h - the itsy package management system
+
@@ -12562,10 +12444,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_src_list.h
+
+#endif
+
-Index: busybox-1.8.1/archival/libipkg/pkg_vec.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/pkg_vec.c 2007-11-10 17:40:53.396766706 +0100
+--- /dev/null
++++ b/archival/libipkg/pkg_vec.c
@@ -0,0 +1,230 @@
+/* pkg_vec.c - the itsy package management system
+
@@ -12797,10 +12677,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_vec.c
+ qsort(vec->pkgs, vec->len, sizeof(pkg_t *), (compare_fcn_t)compar);
+}
+
-Index: busybox-1.8.1/archival/libipkg/pkg_vec.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/pkg_vec.h 2007-11-10 17:40:53.396766706 +0100
+--- /dev/null
++++ b/archival/libipkg/pkg_vec.h
@@ -0,0 +1,64 @@
+/* pkg_vec.h - the itsy package management system
+
@@ -12866,10 +12744,8 @@ Index: busybox-1.8.1/archival/libipkg/pkg_vec.h
+void abstract_pkg_vec_sort(pkg_vec_t *vec, int (*compar)(abstract_pkg_t *, abstract_pkg_t *));
+#endif
+
-Index: busybox-1.8.1/archival/libipkg/sprintf_alloc.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/sprintf_alloc.h 2007-11-10 17:40:53.396766706 +0100
+--- /dev/null
++++ b/archival/libipkg/sprintf_alloc.h
@@ -0,0 +1,25 @@
+/* sprintf_alloca.c -- like sprintf with memory allocation
+
@@ -12896,10 +12772,8 @@ Index: busybox-1.8.1/archival/libipkg/sprintf_alloc.h
+#define sprintf_alloc(str, fmt, args...) *str = xasprintf(fmt, ## args)
+
+#endif
-Index: busybox-1.8.1/archival/libipkg/str_list.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/str_list.c 2007-11-10 17:40:53.396766706 +0100
+--- /dev/null
++++ b/archival/libipkg/str_list.c
@@ -0,0 +1,76 @@
+/* str_list.c - the itsy package management system
+
@@ -12977,10 +12851,8 @@ Index: busybox-1.8.1/archival/libipkg/str_list.c
+ (void *)target_str,
+ (void_list_cmp_t)strcmp);
+}
-Index: busybox-1.8.1/archival/libipkg/str_list.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/str_list.h 2007-11-10 17:40:53.400766935 +0100
+--- /dev/null
++++ b/archival/libipkg/str_list.h
@@ -0,0 +1,51 @@
+/* str_list.h - the itsy package management system
+
@@ -13033,10 +12905,8 @@ Index: busybox-1.8.1/archival/libipkg/str_list.h
+char *str_list_remove_elt(str_list_t *list, const char *target_str);
+
+#endif
-Index: busybox-1.8.1/archival/libipkg/str_util.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/str_util.c 2007-11-10 17:40:53.400766935 +0100
+--- /dev/null
++++ b/archival/libipkg/str_util.c
@@ -0,0 +1,63 @@
+/* str_utils.c - the itsy package management system
+
@@ -13101,10 +12971,8 @@ Index: busybox-1.8.1/archival/libipkg/str_util.c
+ return str ? strdup(str) : NULL;
+}
+
-Index: busybox-1.8.1/archival/libipkg/str_util.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/str_util.h 2007-11-10 17:40:53.400766935 +0100
+--- /dev/null
++++ b/archival/libipkg/str_util.h
@@ -0,0 +1,27 @@
+/* str_utils.h - the itsy package management system
+
@@ -13133,10 +13001,8 @@ Index: busybox-1.8.1/archival/libipkg/str_util.h
+char *str_dup_safe(const char *str);
+
+#endif
-Index: busybox-1.8.1/archival/libipkg/user.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/user.c 2007-11-10 17:40:53.400766935 +0100
+--- /dev/null
++++ b/archival/libipkg/user.c
@@ -0,0 +1,58 @@
+/* user.c - the itsy package management system
+
@@ -13196,10 +13062,8 @@ Index: busybox-1.8.1/archival/libipkg/user.c
+
+ return response;
+}
-Index: busybox-1.8.1/archival/libipkg/user.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/user.h 2007-11-10 17:40:53.400766935 +0100
+--- /dev/null
++++ b/archival/libipkg/user.h
@@ -0,0 +1,23 @@
+/* user.c - the itsy package management system
+
@@ -13224,10 +13088,8 @@ Index: busybox-1.8.1/archival/libipkg/user.h
+
+char *get_user_response(const char *format, ...);
+
-Index: busybox-1.8.1/archival/libipkg/void_list.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/void_list.c 2007-11-10 17:40:53.404767161 +0100
+--- /dev/null
++++ b/archival/libipkg/void_list.c
@@ -0,0 +1,194 @@
+/* void_list.c - the itsy package management system
+
@@ -13423,10 +13285,8 @@ Index: busybox-1.8.1/archival/libipkg/void_list.c
+ else
+ return NULL;
+}
-Index: busybox-1.8.1/archival/libipkg/void_list.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/void_list.h 2007-11-10 17:40:53.404767161 +0100
+--- /dev/null
++++ b/archival/libipkg/void_list.h
@@ -0,0 +1,59 @@
+/* void_list.h - the itsy package management system
+
@@ -13487,10 +13347,8 @@ Index: busybox-1.8.1/archival/libipkg/void_list.h
+void *void_list_remove_elt(void_list_t *list, const void *target_data, void_list_cmp_t cmp);
+
+#endif
-Index: busybox-1.8.1/archival/libipkg/xsystem.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/xsystem.c 2007-11-10 17:40:53.404767161 +0100
+--- /dev/null
++++ b/archival/libipkg/xsystem.c
@@ -0,0 +1,64 @@
+/* xsystem.c - system(3) with error messages
+
@@ -13556,10 +13414,8 @@ Index: busybox-1.8.1/archival/libipkg/xsystem.c
+ return -1;
+}
+
-Index: busybox-1.8.1/archival/libipkg/xsystem.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/archival/libipkg/xsystem.h 2007-11-10 17:40:53.404767161 +0100
+--- /dev/null
++++ b/archival/libipkg/xsystem.h
@@ -0,0 +1,34 @@
+/* xsystem.h - system(3) with error messages
+
@@ -13595,11 +13451,9 @@ Index: busybox-1.8.1/archival/libipkg/xsystem.h
+
+#endif
+
-Index: busybox-1.8.1/archival/libunarchive/data_extract_all.c
-===================================================================
---- busybox-1.8.1.orig/archival/libunarchive/data_extract_all.c 2007-11-10 17:39:21.471528185 +0100
-+++ busybox-1.8.1/archival/libunarchive/data_extract_all.c 2007-11-10 17:40:53.404767161 +0100
-@@ -129,3 +129,17 @@
+--- a/archival/libunarchive/data_extract_all.c
++++ b/archival/libunarchive/data_extract_all.c
+@@ -144,3 +144,17 @@
}
}
}
@@ -13617,10 +13471,8 @@ Index: busybox-1.8.1/archival/libunarchive/data_extract_all.c
+ }
+}
+
-Index: busybox-1.8.1/archival/libunarchive/Kbuild
-===================================================================
---- busybox-1.8.1.orig/archival/libunarchive/Kbuild 2007-11-10 17:39:21.479528641 +0100
-+++ busybox-1.8.1/archival/libunarchive/Kbuild 2007-11-10 17:40:53.408767391 +0100
+--- a/archival/libunarchive/Kbuild
++++ b/archival/libunarchive/Kbuild
@@ -54,6 +54,7 @@
lib-$(CONFIG_FEATURE_DEB_TAR_LZMA) += decompress_unlzma.o get_header_tar_lzma.o
lib-$(CONFIG_GUNZIP) += decompress_unzip.o
@@ -13629,11 +13481,9 @@ Index: busybox-1.8.1/archival/libunarchive/Kbuild
lib-$(CONFIG_RPM2CPIO) += decompress_unzip.o get_header_cpio.o
lib-$(CONFIG_RPM) += decompress_unzip.o get_header_cpio.o
lib-$(CONFIG_FEATURE_RPM_BZ2) += decompress_bunzip2.o
-Index: busybox-1.8.1/include/applets.h
-===================================================================
---- busybox-1.8.1.orig/include/applets.h 2007-11-10 17:39:21.487529096 +0100
-+++ busybox-1.8.1/include/applets.h 2007-11-10 17:40:53.408767391 +0100
-@@ -198,6 +198,7 @@
+--- a/include/applets.h
++++ b/include/applets.h
+@@ -200,6 +200,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))
@@ -13641,11 +13491,9 @@ Index: busybox-1.8.1/include/applets.h
USE_IPLINK(APPLET(iplink, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_IPROUTE(APPLET(iproute, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_IPRULE(APPLET(iprule, _BB_DIR_BIN, _BB_SUID_NEVER))
-Index: busybox-1.8.1/include/unarchive.h
-===================================================================
---- busybox-1.8.1.orig/include/unarchive.h 2007-11-10 17:39:21.495529554 +0100
-+++ busybox-1.8.1/include/unarchive.h 2007-11-10 17:40:53.408767391 +0100
-@@ -74,6 +74,7 @@
+--- a/include/unarchive.h
++++ b/include/unarchive.h
+@@ -82,6 +82,7 @@
extern void data_skip(archive_handle_t *archive_handle);
extern void data_extract_all(archive_handle_t *archive_handle);
@@ -13653,11 +13501,9 @@ Index: busybox-1.8.1/include/unarchive.h
extern void data_extract_to_stdout(archive_handle_t *archive_handle);
extern void data_extract_to_buffer(archive_handle_t *archive_handle);
-Index: busybox-1.8.1/include/usage.h
-===================================================================
---- busybox-1.8.1.orig/include/usage.h 2007-11-10 17:40:53.208755993 +0100
-+++ busybox-1.8.1/include/usage.h 2007-11-10 17:40:53.412767617 +0100
-@@ -1294,6 +1294,82 @@
+--- a/include/usage.h
++++ b/include/usage.h
+@@ -1425,6 +1425,82 @@
"$ ls -la /tmp/busybox*\n" \
"-rw-rw-r-- 1 andersen andersen 554058 Apr 14 17:49 /tmp/busybox.tar.gz\n"
@@ -13739,12 +13585,10 @@ Index: busybox-1.8.1/include/usage.h
+
#define halt_trivial_usage \
"[-d delay] [-n] [-f]"
- #define halt_full_usage \
-Index: busybox-1.8.1/Makefile
-===================================================================
---- busybox-1.8.1.orig/Makefile 2007-11-10 17:39:21.511530465 +0100
-+++ busybox-1.8.1/Makefile 2007-11-10 17:40:53.412767617 +0100
-@@ -428,6 +428,7 @@
+ #define halt_full_usage "\n\n" \
+--- a/Makefile
++++ b/Makefile
+@@ -444,6 +444,7 @@
libs-y := \
archival/ \
diff --git a/package/busybox/patches/501-libbb_hash.patch b/package/busybox/patches/501-libbb_hash.patch
index 9c8d082..89379e2 100644
--- a/package/busybox/patches/501-libbb_hash.patch
+++ b/package/busybox/patches/501-libbb_hash.patch
@@ -1,8 +1,25 @@
-Index: busybox-1.8.1/coreutils/md5_sha1_sum.c
-===================================================================
---- busybox-1.8.1.orig/coreutils/md5_sha1_sum.c 2007-11-10 02:40:51.000000000 +0100
-+++ busybox-1.8.1/coreutils/md5_sha1_sum.c 2007-11-10 17:05:59.957468399 +0100
-@@ -8,75 +8,10 @@
+--- a/include/libbb.h
++++ b/include/libbb.h
+@@ -1211,6 +1211,7 @@
+ extern const char bb_uuenc_tbl_std[];
+ void bb_uuencode(char *store, const void *s, int length, const char *tbl);
+
++typedef enum { HASH_SHA1, HASH_MD5 } hash_algo_t;
+ typedef struct sha1_ctx_t {
+ uint32_t count[2];
+ uint32_t hash[5];
+@@ -1232,6 +1233,8 @@
+ void md5_begin(md5_ctx_t *ctx);
+ 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 hash_length);
++uint8_t *hash_file(const char *filename, hash_algo_t hash_algo);
+
+ uint32_t *crc32_filltable(uint32_t *tbl256, int endian);
+
+--- a/coreutils/md5_sha1_sum.c
++++ b/coreutils/md5_sha1_sum.c
+@@ -8,72 +8,10 @@
#include "libbb.h"
@@ -19,7 +36,7 @@ Index: busybox-1.8.1/coreutils/md5_sha1_sum.c
- /* xzalloc zero-terminates */
- char *hex_value = xzalloc((hash_length * 2) + 1);
- bin2hex(hex_value, (char*)hash_value, hash_length);
-- return hex_value;
+- return (unsigned char *)hex_value;
-}
-
-static uint8_t *hash_file(const char *filename, hash_algo_t hash_algo)
@@ -34,12 +51,9 @@ Index: busybox-1.8.1/coreutils/md5_sha1_sum.c
- void (*update)(const void*, size_t, void*);
- void (*final)(void*, void*);
-
-- src_fd = STDIN_FILENO;
-- if (NOT_LONE_DASH(filename)) {
-- src_fd = open_or_warn(filename, O_RDONLY);
-- if (src_fd < 0) {
-- return NULL;
-- }
+- src_fd = open_or_warn_stdin(filename);
+- if (src_fd < 0) {
+- return NULL;
- }
-
- /* figure specific hash algorithims */
@@ -76,46 +90,21 @@ Index: busybox-1.8.1/coreutils/md5_sha1_sum.c
-}
-
int md5_sha1_sum_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
- int md5_sha1_sum_main(int argc, char **argv)
+ int md5_sha1_sum_main(int argc ATTRIBUTE_UNUSED, char **argv)
{
-Index: busybox-1.8.1/include/libbb.h
-===================================================================
---- busybox-1.8.1.orig/include/libbb.h 2007-11-10 16:55:07.048261223 +0100
-+++ busybox-1.8.1/include/libbb.h 2007-11-10 17:04:07.543062264 +0100
-@@ -1022,6 +1022,7 @@
- extern const char bb_uuenc_tbl_std[];
- void bb_uuencode(char *store, const void *s, int length, const char *tbl);
-
-+typedef enum { HASH_SHA1, HASH_MD5 } hash_algo_t;
- typedef struct sha1_ctx_t {
- uint32_t count[2];
- uint32_t hash[5];
-@@ -1043,6 +1044,8 @@
- void md5_begin(md5_ctx_t *ctx);
- 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 hash_length);
-+uint8_t *hash_file(const char *filename, hash_algo_t hash_algo);
-
- uint32_t *crc32_filltable(uint32_t *tbl256, int endian);
-
-Index: busybox-1.8.1/libbb/Kbuild
-===================================================================
---- busybox-1.8.1.orig/libbb/Kbuild 2007-11-10 02:40:52.000000000 +0100
-+++ busybox-1.8.1/libbb/Kbuild 2007-11-10 17:04:07.547062497 +0100
-@@ -39,6 +39,7 @@
+--- a/libbb/Kbuild
++++ b/libbb/Kbuild
+@@ -40,6 +40,7 @@
lib-y += get_last_path_component.o
lib-y += get_line_from_file.o
lib-y += getopt32.o
+lib-y += hash.o
+ lib-y += getpty.o
lib-y += herror_msg.o
lib-y += herror_msg_and_die.o
- lib-y += human_readable.o
-Index: busybox-1.8.1/libbb/hash.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/libbb/hash.c 2007-11-10 17:04:07.551062729 +0100
-@@ -0,0 +1,81 @@
+--- /dev/null
++++ b/libbb/hash.c
+@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2003 Glenn L. McGrath
+ * Copyright (C) 2003-2004 Erik Andersen
@@ -155,12 +144,9 @@ Index: busybox-1.8.1/libbb/hash.c
+ void (*update)(const void*, size_t, void*);
+ void (*final)(void*, void*);
+
-+ src_fd = STDIN_FILENO;
-+ if (NOT_LONE_DASH(filename)) {
-+ src_fd = open_or_warn(filename, O_RDONLY);
-+ if (src_fd < 0) {
-+ return NULL;
-+ }
++ src_fd = open_or_warn_stdin(filename);
++ if (src_fd < 0) {
++ return NULL;
+ }
+
+ /* figure specific hash algorithims */
diff --git a/package/busybox/patches/510-awx.patch b/package/busybox/patches/510-awx.patch
index 6ae1b9c..d0247f1 100644
--- a/package/busybox/patches/510-awx.patch
+++ b/package/busybox/patches/510-awx.patch
@@ -1,8 +1,6 @@
-Index: busybox-1.8.1/editors/awk.c
-===================================================================
---- busybox-1.8.1.orig/editors/awk.c 2007-11-10 16:55:07.032260312 +0100
-+++ busybox-1.8.1/editors/awk.c 2007-11-10 17:07:04.493146078 +0100
-@@ -33,6 +33,11 @@
+--- a/editors/awk.c
++++ b/editors/awk.c
+@@ -32,6 +32,11 @@
/* these flags are static, don't change them when value is changed */
#define VF_DONTTOUCH (VF_ARRAY | VF_SPECIAL | VF_WALK | VF_CHILD | VF_DIRTY)
@@ -14,23 +12,22 @@ Index: busybox-1.8.1/editors/awk.c
/* Variable */
typedef struct var_s {
unsigned type; /* flags */
-@@ -54,9 +59,14 @@
+@@ -53,9 +58,14 @@
} chain;
/* Function */
+typedef var *(*awk_cfunc)(var *res, var *args, int nargs);
typedef struct func_s {
unsigned nargs;
-- struct chain_s body;
+ enum { AWKFUNC, CFUNC } type;
+ union {
+ awk_cfunc cfunc;
-+ struct chain_s body;
+ struct chain_s body;
+ } x;
} func;
/* I/O stream */
-@@ -1400,7 +1410,8 @@
+@@ -1395,7 +1405,8 @@
next_token(TC_FUNCTION);
g_pos++;
f = newfunc(t_string);
@@ -40,7 +37,7 @@ Index: busybox-1.8.1/editors/awk.c
f->nargs = 0;
while (next_token(TC_VARIABLE | TC_SEQTERM) & TC_VARIABLE) {
v = findvar(ahash, t_string);
-@@ -1409,7 +1420,7 @@
+@@ -1404,7 +1415,7 @@
if (next_token(TC_COMMA | TC_SEQTERM) & TC_SEQTERM)
break;
}
@@ -49,7 +46,7 @@ Index: busybox-1.8.1/editors/awk.c
chain_group();
clear_array(ahash);
-@@ -2372,7 +2383,8 @@
+@@ -2367,7 +2378,8 @@
break;
case XC( OC_FUNC ):
@@ -59,7 +56,7 @@ Index: busybox-1.8.1/editors/awk.c
syntax_error(EMSG_UNDEF_FUNC);
X.v = R.v = nvalloc(op->r.f->nargs+1);
-@@ -2389,7 +2401,10 @@
+@@ -2384,7 +2396,10 @@
fnargs = X.v;
L.s = g_progname;
@@ -71,7 +68,7 @@ Index: busybox-1.8.1/editors/awk.c
g_progname = L.s;
nvfree(fnargs);
-@@ -2753,6 +2768,12 @@
+@@ -2748,6 +2763,12 @@
}
int awk_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
@@ -84,7 +81,7 @@ Index: busybox-1.8.1/editors/awk.c
int awk_main(int argc, char **argv)
{
unsigned opt;
-@@ -2817,6 +2838,11 @@
+@@ -2812,6 +2833,11 @@
*s1 = '=';
}
}
@@ -93,13 +90,11 @@ Index: busybox-1.8.1/editors/awk.c
+ do_awx(argc, argv);
+#endif
+
- opt_complementary = "v::f::";
- opt = getopt32(argv, "F:v:f:W:", &opt_F, &opt_v, &opt_f, &opt_W);
+ opt_complementary = "v::f::"; /* -v and -f can occur multiple times */
+ opt = getopt32(argv, "F:v:f:W:", &opt_F, &list_v, &list_f, &opt_W);
argv += optind;
-Index: busybox-1.8.1/editors/awx.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/editors/awx.c 2007-11-10 17:06:19.258568308 +0100
+--- /dev/null
++++ b/editors/awx.c
@@ -0,0 +1,636 @@
+/*
+ * awk web extension
@@ -737,10 +732,8 @@ Index: busybox-1.8.1/editors/awx.c
+ return awk_main(argc, argv);
+}
+
-Index: busybox-1.8.1/editors/awx_parser.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/editors/awx_parser.h 2007-11-10 17:06:19.266568760 +0100
+--- /dev/null
++++ b/editors/awx_parser.h
@@ -0,0 +1,38 @@
+#ifndef __TEMPLATE_PARSER_H
+#define __TEMPLATE_PARSER_H
@@ -780,10 +773,8 @@ Index: busybox-1.8.1/editors/awx_parser.h
+void free_template(struct template_cb *cb, struct template_element *e);
+
+#endif
-Index: busybox-1.8.1/editors/awx_parser.l
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/editors/awx_parser.l 2007-11-10 17:06:19.270568989 +0100
+--- /dev/null
++++ b/editors/awx_parser.l
@@ -0,0 +1,302 @@
+%{
+#include <stdio.h>
@@ -1087,10 +1078,8 @@ Index: busybox-1.8.1/editors/awx_parser.l
+ free(e);
+ return free_template(cb, next);
+}
-Index: busybox-1.8.1/editors/Config.in
-===================================================================
---- busybox-1.8.1.orig/editors/Config.in 2007-11-10 02:40:54.000000000 +0100
-+++ busybox-1.8.1/editors/Config.in 2007-11-10 17:06:19.274569218 +0100
+--- a/editors/Config.in
++++ b/editors/Config.in
@@ -12,6 +12,13 @@
Awk is used as a pattern scanning and processing language. This is
the BusyBox implementation of that programming language.
@@ -1105,10 +1094,8 @@ Index: busybox-1.8.1/editors/Config.in
config FEATURE_AWK_MATH
bool "Enable math functions (requires libm)"
default y
-Index: busybox-1.8.1/editors/Kbuild
-===================================================================
---- busybox-1.8.1.orig/editors/Kbuild 2007-11-10 02:40:54.000000000 +0100
-+++ busybox-1.8.1/editors/Kbuild 2007-11-10 17:06:19.278569448 +0100
+--- a/editors/Kbuild
++++ b/editors/Kbuild
@@ -12,3 +12,12 @@
lib-$(CONFIG_PATCH) += patch.o
lib-$(CONFIG_SED) += sed.o
@@ -1122,22 +1109,30 @@ Index: busybox-1.8.1/editors/Kbuild
+editors/awx_parser.o: editors/awx_parser.c FORCE
+ $(call cmd,force_checksrc)
+ $(call if_changed_rule,cc_o_c)
-Index: busybox-1.8.1/include/applets.h
-===================================================================
---- busybox-1.8.1.orig/include/applets.h 2007-11-10 17:03:38.957433264 +0100
-+++ busybox-1.8.1/include/applets.h 2007-11-10 17:06:19.282569674 +0100
-@@ -83,6 +83,7 @@
+--- a/include/applets.h
++++ b/include/applets.h
+@@ -77,6 +77,7 @@
USE_ARPING(APPLET(arping, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
- USE_ASH(APPLET_NOUSAGE(ash, ash, _BB_DIR_BIN, _BB_SUID_NEVER))
+ USE_ASH(APPLET(ash, _BB_DIR_BIN, _BB_SUID_NEVER))
USE_AWK(APPLET_NOEXEC(awk, awk, _BB_DIR_USR_BIN, _BB_SUID_NEVER, awk))
-+USE_AWX(APPLET_NOUSAGE(awx, awx, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
++USE_AWK(APPLET_ODDNAME(awx, awk, _BB_DIR_USR_BIN, _BB_SUID_NEVER, awx))
USE_BASENAME(APPLET_NOFORK(basename, basename, _BB_DIR_USR_BIN, _BB_SUID_NEVER, basename))
USE_BBCONFIG(APPLET(bbconfig, _BB_DIR_BIN, _BB_SUID_NEVER))
//USE_BBSH(APPLET(bbsh, _BB_DIR_BIN, _BB_SUID_NEVER))
-Index: busybox-1.8.1/include/cgi.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/include/cgi.h 2007-11-10 17:06:19.282569674 +0100
+--- a/include/usage.h
++++ b/include/usage.h
+@@ -114,6 +114,9 @@
+ "\n -F sep Use sep as field separator" \
+ "\n -f file Read program from file" \
+
++#define awx_trivial_usage NOUSAGE_STR
++#define awx_full_usage ""
++
+ #define basename_trivial_usage \
+ "FILE [SUFFIX]"
+ #define basename_full_usage "\n\n" \
+--- /dev/null
++++ b/include/cgi.h
@@ -0,0 +1,8 @@
+#ifndef CGI_H
+#define CGI_H
@@ -1147,10 +1142,8 @@ Index: busybox-1.8.1/include/cgi.h
+int cgi_init(var_handler);
+
+#endif
-Index: busybox-1.8.1/libbb/cgi.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ busybox-1.8.1/libbb/cgi.c 2007-11-10 17:06:19.282569674 +0100
+--- /dev/null
++++ b/libbb/cgi.c
@@ -0,0 +1,457 @@
+/* --------------------------------------------------------------------------
+ * functions for processing cgi form data
@@ -1609,11 +1602,9 @@ Index: busybox-1.8.1/libbb/cgi.c
+
+ return retval;
+}
-Index: busybox-1.8.1/libbb/Kbuild
-===================================================================
---- busybox-1.8.1.orig/libbb/Kbuild 2007-11-10 17:04:07.547062497 +0100
-+++ busybox-1.8.1/libbb/Kbuild 2007-11-10 17:06:19.282569674 +0100
-@@ -101,6 +101,7 @@
+--- a/libbb/Kbuild
++++ b/libbb/Kbuild
+@@ -112,6 +112,7 @@
lib-y += xreadlink.o
# conditionally compiled objects:
diff --git a/package/busybox/patches/520-ipkg_secure.patch b/package/busybox/patches/520-ipkg_secure.patch
index fec9c21..b0cccee 100644
--- a/package/busybox/patches/520-ipkg_secure.patch
+++ b/package/busybox/patches/520-ipkg_secure.patch
@@ -1,7 +1,5 @@
-Index: busybox-1.7.2/archival/libipkg/ipkg_conf.c
-===================================================================
---- busybox-1.7.2.orig/archival/libipkg/ipkg_conf.c 2007-10-30 15:38:45.000000000 -0500
-+++ busybox-1.7.2/archival/libipkg/ipkg_conf.c 2007-10-30 15:38:47.000000000 -0500
+--- a/archival/libipkg/ipkg_conf.c
++++ b/archival/libipkg/ipkg_conf.c
@@ -66,6 +66,8 @@
{ "offline_root_pre_script_cmd", IPKG_OPT_TYPE_STRING, &conf->offline_root_pre_script_cmd },
{ "proxy_passwd", IPKG_OPT_TYPE_STRING, &conf->proxy_passwd },
@@ -21,10 +19,8 @@ Index: busybox-1.7.2/archival/libipkg/ipkg_conf.c
pkg_hash_init("pkg-hash", &conf->pkg_hash, IPKG_CONF_DEFAULT_HASH_LEN);
hash_table_init("file-hash", &conf->file_hash, IPKG_CONF_DEFAULT_HASH_LEN);
hash_table_init("obs-file-hash", &conf->obs_file_hash, IPKG_CONF_DEFAULT_HASH_LEN);
-Index: busybox-1.7.2/archival/libipkg/ipkg_conf.h
-===================================================================
---- busybox-1.7.2.orig/archival/libipkg/ipkg_conf.h 2007-10-30 15:38:45.000000000 -0500
-+++ busybox-1.7.2/archival/libipkg/ipkg_conf.h 2007-10-30 15:38:47.000000000 -0500
+--- a/archival/libipkg/ipkg_conf.h
++++ b/archival/libipkg/ipkg_conf.h
@@ -79,6 +79,10 @@
char *proxy_user;
char *proxy_passwd;
@@ -36,10 +32,8 @@ Index: busybox-1.7.2/archival/libipkg/ipkg_conf.h
hash_table_t pkg_hash;
hash_table_t file_hash;
hash_table_t obs_file_hash;
-Index: busybox-1.7.2/archival/libipkg/ipkg_download.c
-===================================================================
---- busybox-1.7.2.orig/archival/libipkg/ipkg_download.c 2007-10-30 15:38:45.000000000 -0500
-+++ busybox-1.7.2/archival/libipkg/ipkg_download.c 2007-10-30 15:38:47.000000000 -0500
+--- a/archival/libipkg/ipkg_download.c
++++ b/archival/libipkg/ipkg_download.c
@@ -69,8 +69,12 @@
}
diff --git a/package/busybox/patches/521-ipkg_upgrade_env.patch b/package/busybox/patches/521-ipkg_upgrade_env.patch
index 0063fa0..593b8c4 100644
--- a/package/busybox/patches/521-ipkg_upgrade_env.patch
+++ b/package/busybox/patches/521-ipkg_upgrade_env.patch
@@ -1,7 +1,5 @@
-Index: busybox-1.7.2/archival/libipkg/ipkg_install.c
-===================================================================
---- busybox-1.7.2.orig/archival/libipkg/ipkg_install.c 2007-10-30 17:15:31.000000000 -0500
-+++ busybox-1.7.2/archival/libipkg/ipkg_install.c 2007-10-30 17:15:33.000000000 -0500
+--- a/archival/libipkg/ipkg_install.c
++++ b/archival/libipkg/ipkg_install.c
@@ -136,6 +136,7 @@
ipkg_error_t ipkg_install_by_name(ipkg_conf_t *conf, const char *pkg_name)
{
diff --git a/package/busybox/patches/523-conffiles_fix.patch b/package/busybox/patches/523-conffiles_fix.patch
index 15ac083..09c9359 100644
--- a/package/busybox/patches/523-conffiles_fix.patch
+++ b/package/busybox/patches/523-conffiles_fix.patch
@@ -1,7 +1,5 @@
-Index: busybox-1.8.2/archival/libipkg/pkg.c
-===================================================================
---- busybox-1.8.2.orig/archival/libipkg/pkg.c 2008-01-03 17:25:55.000000000 +0100
-+++ busybox-1.8.2/archival/libipkg/pkg.c 2008-01-03 17:33:57.000000000 +0100
+--- a/archival/libipkg/pkg.c
++++ b/archival/libipkg/pkg.c
@@ -575,25 +575,28 @@
return temp;
}
@@ -36,16 +34,10 @@ Index: busybox-1.8.2/archival/libipkg/pkg.c
} else if (strcasecmp(field, "Conflicts") == 0) {
int i;
-Index: busybox-1.8.2/archival/libipkg/pkg_parse.c
-===================================================================
---- busybox-1.8.2.orig/archival/libipkg/pkg_parse.c 2008-01-03 17:25:55.000000000 +0100
-+++ busybox-1.8.2/archival/libipkg/pkg_parse.c 2008-01-03 17:30:14.000000000 +0100
- -85,20 +85,17 @@
- {
- char file_name[1048], md5sum[1048]; /* please tell me there aren't any longer that 1k */
-
-- if(!strncmp(raw, "Conffiles:", 10))
-+ if(!strncmp(raw, "Conffiles:",10))
+--- a/archival/libipkg/pkg_parse.c
++++ b/archival/libipkg/pkg_parse.c
+@@ -88,17 +88,14 @@
+ if(!strncmp(raw, "Conffiles:", 10))
raw += strlen("Conffiles:");
+ while(*raw && isspace(*raw)) raw++;
@@ -55,14 +47,13 @@ Index: busybox-1.8.2/archival/libipkg/pkg_parse.c
- while (*raw && isspace(*raw)) {
- raw++;
- }
-- raw += strlen(file_name);
+ raw += strlen(file_name);
- while (*raw && isspace(*raw)) {
- raw++;
- }
-- raw += strlen(md5sum);
-+ raw += strlen(file_name);
+ while(*raw && isspace(*raw)) raw++;
-+ raw += strlen(md5sum);
-+ while(*raw && isspace(*raw)) raw++;
+ raw += strlen(md5sum);
++ while(*raw && isspace(*raw)) raw++;
}
- }
+ }
+
diff --git a/package/busybox/patches/524-memory_usage.patch b/package/busybox/patches/524-memory_usage.patch
index 8f009a5..5aaee76 100644
--- a/package/busybox/patches/524-memory_usage.patch
+++ b/package/busybox/patches/524-memory_usage.patch
@@ -1,7 +1,5 @@
-Index: busybox-1.8.2/archival/libipkg/pkg.c
-===================================================================
---- busybox-1.8.2.orig/archival/libipkg/pkg.c 2008-01-06 03:14:12.003658206 +0100
-+++ busybox-1.8.2/archival/libipkg/pkg.c 2008-01-06 03:24:18.187737063 +0100
+--- a/archival/libipkg/pkg.c
++++ b/archival/libipkg/pkg.c
@@ -224,8 +224,7 @@
if (err) { return err; }
@@ -12,10 +10,8 @@ Index: busybox-1.8.2/archival/libipkg/pkg.c
fclose(control_file);
-Index: busybox-1.8.2/archival/libipkg/pkg_hash.c
-===================================================================
---- busybox-1.8.2.orig/archival/libipkg/pkg_hash.c 2008-01-06 03:14:12.231671203 +0100
-+++ busybox-1.8.2/archival/libipkg/pkg_hash.c 2008-01-06 03:28:38.218555373 +0100
+--- a/archival/libipkg/pkg_hash.c
++++ b/archival/libipkg/pkg_hash.c
@@ -89,20 +89,20 @@
pkg_src_t *src, pkg_dest_t *dest, int is_status_file)
{
@@ -58,11 +54,9 @@ Index: busybox-1.8.2/archival/libipkg/pkg_hash.c
return 0;
}
-Index: busybox-1.8.2/archival/libipkg/pkg_parse.c
-===================================================================
---- busybox-1.8.2.orig/archival/libipkg/pkg_parse.c 2008-01-06 03:14:12.283674167 +0100
-+++ busybox-1.8.2/archival/libipkg/pkg_parse.c 2008-01-06 03:38:24.111943535 +0100
-@@ -227,6 +227,161 @@
+--- a/archival/libipkg/pkg_parse.c
++++ b/archival/libipkg/pkg_parse.c
+@@ -224,6 +224,161 @@
Enhances, perhaps we could generalize all of these and save some
code duplication.
*/
@@ -224,7 +218,7 @@ Index: busybox-1.8.2/archival/libipkg/pkg_parse.c
int pkg_parse_raw(pkg_t *pkg, char ***raw, pkg_src_t *src, pkg_dest_t *dest)
{
int reading_conffiles, reading_description;
-@@ -345,6 +500,7 @@
+@@ -342,6 +497,7 @@
return EINVAL;
}
}
@@ -232,10 +226,8 @@ Index: busybox-1.8.2/archival/libipkg/pkg_parse.c
int pkg_valorize_other_field(pkg_t *pkg, char ***raw)
{
-Index: busybox-1.8.2/archival/libipkg/pkg_parse.h
-===================================================================
---- busybox-1.8.2.orig/archival/libipkg/pkg_parse.h 2008-01-06 03:14:12.303675307 +0100
-+++ busybox-1.8.2/archival/libipkg/pkg_parse.h 2008-01-06 03:39:03.954214018 +0100
+--- a/archival/libipkg/pkg_parse.h
++++ b/archival/libipkg/pkg_parse.h
@@ -25,7 +25,10 @@
char ** parseDependsString(char * raw, int * depends_count);
int parseVersion(pkg_t *pkg, char *raw);
diff --git a/package/busybox/patches/524-udhcpc_renew.patch b/package/busybox/patches/524-udhcpc_renew.patch
index 07611a5..b663e32 100644
--- a/package/busybox/patches/524-udhcpc_renew.patch
+++ b/package/busybox/patches/524-udhcpc_renew.patch
@@ -1,12 +1,10 @@
-Index: busybox-1.8.2/networking/udhcp/dhcpc.c
-===================================================================
---- busybox-1.8.2.orig/networking/udhcp/dhcpc.c 2008-01-03 05:00:31.506419917 +0100
-+++ busybox-1.8.2/networking/udhcp/dhcpc.c 2008-01-03 05:00:44.311149618 +0100
-@@ -65,7 +65,6 @@
+--- a/networking/udhcp/dhcpc.c
++++ b/networking/udhcp/dhcpc.c
+@@ -63,7 +63,6 @@
state = RENEW_REQUESTED;
break;
case RENEW_REQUESTED: /* impatient are we? fine, square 1 */
- udhcp_run_script(NULL, "deconfig");
case REQUESTING:
case RELEASED:
- change_mode(LISTEN_RAW);
+ change_listen_mode(LISTEN_RAW);
diff --git a/package/busybox/patches/525-clean_temp.patch b/package/busybox/patches/525-clean_temp.patch
index 0c3be74..d9318a9 100644
--- a/package/busybox/patches/525-clean_temp.patch
+++ b/package/busybox/patches/525-clean_temp.patch
@@ -1,6 +1,5 @@
-diff -urN busybox-1.8.2.old/archival/libipkg/pkg_extract.c busybox-1.8.2.dev/archival/libipkg/pkg_extract.c
---- busybox-1.8.2.old/archival/libipkg/pkg_extract.c 2008-01-23 22:18:44.000000000 +0100
-+++ busybox-1.8.2.dev/archival/libipkg/pkg_extract.c 2008-01-23 22:20:31.000000000 +0100
+--- a/archival/libipkg/pkg_extract.c
++++ b/archival/libipkg/pkg_extract.c
@@ -85,6 +85,7 @@
free(archive->buffer);
free(archive->accept);
diff --git a/package/busybox/patches/526-ipkg_fix_pkg_comparison.patch b/package/busybox/patches/526-ipkg_fix_pkg_comparison.patch
new file mode 100644
index 0000000..f206f97
--- /dev/null
+++ b/package/busybox/patches/526-ipkg_fix_pkg_comparison.patch
@@ -0,0 +1,43 @@
+--- a/archival/libipkg/pkg.c
++++ b/archival/libipkg/pkg.c
+@@ -1139,8 +1139,12 @@
+ return 0;
+ }
+
+-int pkg_name_version_and_architecture_compare(pkg_t *a, pkg_t *b)
++int pkg_name_version_and_architecture_compare(const void *pkg_a, const void *pkg_b)
+ {
++ pkg_t * const *p1 = pkg_a;
++ pkg_t * const *p2 = pkg_b;
++ const pkg_t *a = *p1;
++ const pkg_t *b = *p2;
+ int namecmp;
+ int vercmp;
+ if (!a->name || !b->name) {
+@@ -1167,8 +1171,12 @@
+ return 0;
+ }
+
+-int abstract_pkg_name_compare(abstract_pkg_t *a, abstract_pkg_t *b)
++int abstract_pkg_name_compare(const void *apkg_a, const void *apkg_b)
+ {
++ abstract_pkg_t * const *ap1 = apkg_a;
++ abstract_pkg_t * const *ap2 = apkg_b;
++ const abstract_pkg_t *a = *ap1;
++ const abstract_pkg_t *b = *ap2;
+ if (!a->name || !b->name) {
+ fprintf(stderr, "abstract_pkg_name_compare: a=%p a->name=%p b=%p b->name=%p\n",
+ a, a->name, b, b->name);
+--- a/archival/libipkg/pkg.h
++++ b/archival/libipkg/pkg.h
+@@ -191,8 +191,8 @@
+ 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(pkg_t *a, pkg_t *b);
+-int abstract_pkg_name_compare(abstract_pkg_t *a, abstract_pkg_t *b);
++int pkg_name_version_and_architecture_compare(const void *pkg_a, const void *pkg_b);
++int abstract_pkg_name_compare(const void *apkg_a, const void *apkg_b);
+
+ char * pkg_formatted_info(pkg_t *pkg );
+ char * pkg_formatted_field(pkg_t *pkg, const char *field );
diff --git a/package/busybox/patches/901-basename.patch b/package/busybox/patches/901-basename.patch
new file mode 100644
index 0000000..180cf7b
--- /dev/null
+++ b/package/busybox/patches/901-basename.patch
@@ -0,0 +1,9 @@
+--- a/coreutils/basename.c
++++ b/coreutils/basename.c
+@@ -48,5 +48,5 @@
+
+ /* puts(s) will do, but we can do without stdio this way: */
+ s[m++] = '\n';
+- return full_write(STDOUT_FILENO, s, m) == (ssize_t)m;
++ return full_write(STDOUT_FILENO, s, m) != (ssize_t)m;
+ }
diff --git a/package/busybox/patches/902-tar.patch b/package/busybox/patches/902-tar.patch
new file mode 100644
index 0000000..d9bf7cd
--- /dev/null
+++ b/package/busybox/patches/902-tar.patch
@@ -0,0 +1,55 @@
+--- a/archival/libunarchive/get_header_tar.c
++++ b/archival/libunarchive/get_header_tar.c
+@@ -261,26 +261,33 @@
+ case '0':
+ #if ENABLE_FEATURE_TAR_OLDGNU_COMPATIBILITY
+ if (last_char_is(file_header->name, '/')) {
+- file_header->mode |= S_IFDIR;
+- } else
++ goto set_dir;
++ }
+ #endif
+ file_header->mode |= S_IFREG;
+ break;
+ case '2':
+ file_header->mode |= S_IFLNK;
++ /* have seen tarballs with size field containing
++ * the size of the link target's name */
++ size0:
++ file_header->size = 0;
+ break;
+ case '3':
+ file_header->mode |= S_IFCHR;
+- break;
++ goto size0; /* paranoia */
+ case '4':
+ file_header->mode |= S_IFBLK;
+- break;
++ goto size0;
+ case '5':
++#if ENABLE_FEATURE_TAR_OLDGNU_COMPATIBILITY
++ set_dir:
++#endif
+ file_header->mode |= S_IFDIR;
+- break;
++ goto size0;
+ case '6':
+ file_header->mode |= S_IFIFO;
+- break;
++ goto size0;
+ #if ENABLE_FEATURE_TAR_GNU_EXTENSIONS
+ case 'L':
+ /* free: paranoia: tar with several consecutive longnames */
+--- a/archival/libunarchive/seek_by_jump.c
++++ b/archival/libunarchive/seek_by_jump.c
+@@ -8,7 +8,9 @@
+
+ void seek_by_jump(const archive_handle_t *archive_handle, unsigned amount)
+ {
+- if (lseek(archive_handle->src_fd, (off_t) amount, SEEK_CUR) == (off_t) -1) {
++ if (amount
++ && lseek(archive_handle->src_fd, (off_t) amount, SEEK_CUR) == (off_t) -1
++ ) {
+ if (errno == ESPIPE)
+ seek_by_read(archive_handle, amount);
+ else
diff --git a/package/busybox/patches/903-ash.patch b/package/busybox/patches/903-ash.patch
new file mode 100644
index 0000000..efc1bc3
--- /dev/null
+++ b/package/busybox/patches/903-ash.patch
@@ -0,0 +1,155 @@
+--- a/shell/ash.c
++++ b/shell/ash.c
+@@ -1569,14 +1569,14 @@
+ static char *optptr; /* used by nextopt */
+
+ /*
+- * XXX - should get rid of. have all builtins use getopt(3). the
+- * library getopt must have the BSD extension static variable "optreset"
+- * otherwise it can't be used within the shell safely.
++ * XXX - should get rid of. Have all builtins use getopt(3).
++ * The library getopt must have the BSD extension static variable
++ * "optreset", otherwise it can't be used within the shell safely.
+ *
+- * Standard option processing (a la getopt) for builtin routines. The
+- * only argument that is passed to nextopt is the option string; the
+- * other arguments are unnecessary. It return the character, or '\0' on
+- * end of input.
++ * Standard option processing (a la getopt) for builtin routines.
++ * The only argument that is passed to nextopt is the option string;
++ * the other arguments are unnecessary. It returns the character,
++ * or '\0' on end of input.
+ */
+ static int
+ nextopt(const char *optstring)
+@@ -1587,13 +1587,20 @@
+
+ p = optptr;
+ if (p == NULL || *p == '\0') {
++ /* We ate entire "-param", take next one */
+ p = *argptr;
+- if (p == NULL || *p != '-' || *++p == '\0')
++ if (p == NULL)
++ return '\0';
++ if (*p != '-')
++ return '\0';
++ if (*++p == '\0') /* just "-" ? */
+ return '\0';
+ argptr++;
+- if (LONE_DASH(p)) /* check for "--" */
++ if (LONE_DASH(p)) /* "--" ? */
+ return '\0';
++ /* p => next "-param" */
+ }
++ /* p => some option char in the middle of a "-param" */
+ c = *p++;
+ for (q = optstring; *q != c;) {
+ if (*q == '\0')
+@@ -1602,8 +1609,11 @@
+ q++;
+ }
+ if (*++q == ':') {
+- if (*p == '\0' && (p = *argptr++) == NULL)
+- ash_msg_and_raise_error("no arg for -%c option", c);
++ if (*p == '\0') {
++ p = *argptr++;
++ if (p == NULL)
++ ash_msg_and_raise_error("no arg for -%c option", c);
++ }
+ optionarg = p;
+ p = NULL;
+ }
+@@ -7428,8 +7438,10 @@
+ else if (c != 'p')
+ abort();
+ #endif
+- if (verify)
++ /* Mimic bash: just "command -v" doesn't complain, it's a nop */
++ if (verify && (*argptr != NULL)) {
+ return describe_command(*argptr, verify - VERIFY_BRIEF);
++ }
+
+ return 0;
+ }
+@@ -7788,16 +7800,33 @@
+ static void
+ evaltree(union node *n, int flags)
+ {
++
++ struct jmploc *volatile savehandler = exception_handler;
++ struct jmploc jmploc;
+ int checkexit = 0;
+ void (*evalfn)(union node *, int);
+- unsigned isor;
+ int status;
++
+ if (n == NULL) {
+ TRACE(("evaltree(NULL) called\n"));
+- goto out;
++ goto out1;
+ }
+ TRACE(("pid %d, evaltree(%p: %d, %d) called\n",
+ getpid(), n, n->type, flags));
++
++ exception_handler = &jmploc;
++ {
++ int err = setjmp(jmploc.loc);
++ if (err) {
++ /* if it was a signal, check for trap handlers */
++ if (exception == EXSIG)
++ goto out;
++ /* continue on the way out */
++ exception_handler = savehandler;
++ longjmp(exception_handler->loc, err);
++ }
++ }
++
+ switch (n->type) {
+ default:
+ #if DEBUG
+@@ -7843,19 +7872,20 @@
+ goto calleval;
+ case NAND:
+ case NOR:
+- case NSEMI:
++ case NSEMI: {
++
+ #if NAND + 1 != NOR
+ #error NAND + 1 != NOR
+ #endif
+ #if NOR + 1 != NSEMI
+ #error NOR + 1 != NSEMI
+ #endif
+- isor = n->type - NAND;
++ unsigned is_or = n->type - NAND;
+ evaltree(
+ n->nbinary.ch1,
+- (flags | ((isor >> 1) - 1)) & EV_TESTED
++ (flags | ((is_or >> 1) - 1)) & EV_TESTED
+ );
+- if (!exitstatus == isor)
++ if (!exitstatus == is_or)
+ break;
+ if (!evalskip) {
+ n = n->nbinary.ch2;
+@@ -7866,6 +7896,7 @@
+ break;
+ }
+ break;
++ }
+ case NIF:
+ evaltree(n->nif.test, EV_TESTED);
+ if (evalskip)
+@@ -7886,8 +7917,11 @@
+ exitstatus = status;
+ break;
+ }
++
+ out:
+- if ((checkexit & exitstatus))
++ exception_handler = savehandler;
++ out1:
++ if (checkexit & exitstatus)
+ evalskip |= SKIPEVAL;
+ else if (pendingsig && dotrap())
+ goto exexit;
diff --git a/package/busybox/patches/904-build.patch b/package/busybox/patches/904-build.patch
new file mode 100644
index 0000000..d15570c
--- /dev/null
+++ b/package/busybox/patches/904-build.patch
@@ -0,0 +1,28 @@
+--- a/applets/usage_compressed
++++ b/applets/usage_compressed
+@@ -14,14 +14,21 @@
+
+ echo 'static const char packed_usage[] ALIGN1 = {'
+
+-# Extra effort to avoid using "od -t x1": -t is not available
+-# in non-CONFIG_DESKTOPed busybox od
++## Breaks on big-endian systems!
++## # Extra effort to avoid using "od -t x1": -t is not available
++## # in non-CONFIG_DESKTOPed busybox od
++##
++## "$loc/usage" | bzip2 -1 | od -v -x \
++## | $SED -e 's/^[^ ]*//' \
++## | $SED -e 's/ //g' \
++## | grep -v '^$' \
++## | $SED -e 's/\(..\)\(..\)/0x\2,0x\1,/g'
+
+-"$loc/usage" | bzip2 -1 | od -v -x \
++"$loc/usage" | bzip2 -1 | od -v -t x1 \
+ | $SED -e 's/^[^ ]*//' \
+ | $SED -e 's/ //g' \
+ | grep -v '^$' \
+-| $SED -e 's/\(..\)\(..\)/0x\2,0x\1,/g'
++| $SED -e 's/\(..\)/0x\1,/g'
+
+ echo '};'
+ echo '#define SIZEOF_usage_messages' `expr 0 + $sz`